丁丁

ADXL345的初始化

0
阅读(5953)

ADXL345的寄存器不是很多,一共58个. 初始化程序如下,我没有采用中断的方式,因为除了ADXL345,我还采用了其他的传感器,在做姿态融合的时候,以一定的频率读取陀螺的数值,所以没有采用中断的方式.这种方式采用了FIFO的bypass模式,可以保证数据是实时的。

 

//ADXL345初始化

void ADXL345_Init(void )

{

 

  write_adxl345_reg(0x31,0x2B);  //数据通信格式;设置为自检功能禁用,4线制SPI接口,低电平中断输出,13位全分辨率,输出数据右对齐,16g量程

  write_adxl345_reg(0x1E,0x00);  //X轴误差补偿; (15.6mg/LSB)

  write_adxl345_reg(0x1F,0x00);  //Y轴误差补偿; (15.6mg/LSB)

  write_adxl345_reg(0x20,0x00);  //Z轴误差补偿; (15.6mg/LSB)

  write_adxl345_reg(0x21,0x00);  //敲击延时0:禁用; (1.25ms/LSB)

  write_adxl345_reg(0x22,0x00);  //检测第一次敲击后的延时0:禁用; (1.25ms/LSB)

  write_adxl345_reg(0x23,0x00);  //敲击窗口0:禁用; (1.25ms/LSB)

  write_adxl345_reg(0x24,0x01);  //保存检测活动阀值; (62.5mg/LSB)

  write_adxl345_reg(0x25,0x01);  //保存检测静止阀值; (62.5mg/LSB)

  write_adxl345_reg(0x26,0x2B);  //检测活动时间阀值; (1s/LSB)

  write_adxl345_reg(0x27,0x00);  //

  write_adxl345_reg(0x28,0x09);  //自由落体检测推荐阀值; (62.5mg/LSB)

  write_adxl345_reg(0x29,0xFF);  //自由落体检测时间阀值,设置为最大时间; (5ms/LSB)

  write_adxl345_reg(0x2A,0x80);  //禁止敲击检测

  write_adxl345_reg(0x2C,0x0B);  //  200hz 输出     0A是100hz输出

  write_adxl345_reg(0x2D,0x28);  //开启Link,测量功能;关闭自动休眠,休眠,唤醒功能

  write_adxl345_reg(0x2E,0x00);  //所有均关闭

  write_adxl345_reg(0x2F,0x00);  //中断功能设定,不使用中断

  write_adxl345_reg(0x38,0x9F);  //FIFO模式设定,bypass模式,,31级样本缓冲

}