ADXL345的初始化
0赞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级样本缓冲
}
