|
首先说说明下: 1:adxl345使用的是SPI数据读取 2:adxl初始化 WritetoADXL345_SPI(0x2c,0x0a); //选择普通模式 ,带宽为400hz,速率为100hz WritetoADXL345_SPI(0x2d,0x00); //选择普通模式,备用模式,普通工作模式 WritetoADXL345_SPI(0x2e,0x80); //使能data_ready中断映射 WritetoADXL345_SPI(0x2f,0x00); //映射到INT1 WritetoADXL345_SPI(0x31,0x08); //选择spi4线模式。4mg/lsb,数据右对齐模式,+-2g ReadfromADXL345_SPI(0x30); //清除中断 3:采集数据是直接读取寄存器 Xdata_L=ReadfromADXL345_SPI(0x32); Xdata_H=ReadfromADXL345_SPI(0x33); Ydata_L=ReadfromADXL345_SPI(0x34); Ydata_H=ReadfromADXL345_SPI(0x35); Zdata_L=ReadfromADXL345_SPI(0x36); Zdata_H=ReadfromADXL345_SPI(0x37); 问题一: DATA_READY是数据更新时为1,对应也就产生高电平,但发现每次ReadfromADXL345_SPI(0x30); 都清除不了标志位,INT1对应的引脚始终为高电平,因为引脚中断采用的是下降沿触发。所以进中断只能在INT1那里不断的进行设置为高然后为低。 不知道有无更好的办法。 问题二: adxl345的偏移设置不是很懂,所以没有进行设置。当芯片正放时,得到 X=70;Y=5;Z=988;(都已经成过4mg);以上数据也不是很稳定。 当把芯片反放时,X,Y值基本不变但Z的值却变化很大,本应该是Z=-1G 但得不到得到的值是Z=-200mg。 不知道是不是要设置偏移量还是怎么的。 希望大侠出现,帮忙分析下问题所在,不胜感激! |
|