ADXL345获取的三轴加速度值与标准源在高输出速率下提供的加速度不一致

三轴加速度芯片配置如下:

regData[0] = 0; //off inter
xl345Write(XL345_INT_ENABLE, regData, 1);                     //中断清零

regData[0] = XL345_INACT_Z_ENABLE | XL345_INACT_Y_ENABLE
| XL345_INACT_X_ENABLE | XL345_INACT_DC
| XL345_ACT_Z_ENABLE | XL345_ACT_Y_ENABLE
| XL345_ACT_X_ENABLE | XL345_INACT_DC;
xl345Write(XL345_ACT_INACT_CTL, regData, 1);             //使能x、y或z轴参与检测活动或静止,并使能静止和活动直流耦合操作模式

regData[0] = act;
regData[1] = inAct;
regData[2] = inActTime;
xl345Write(XL345_THRESH_ACT, regData, 3);                  //设置活动阈值阈值 3,静止阈值2 静止等待时间为5

regData[0] = XL345_LOW_POWER|DEFAULT_SAMPLE_RATE;             //设置低功耗模式,输出速率为3200Hz。

regData[1] = XL345_ACT_INACT_SERIAL                        //将有使能活动和静止功能的链接位设置为1,延迟活动功能开始,直到检测到静止。检测到活动后,静止检测开始,活动检测停止。
| XL345_AUTO_SLEEP                                                         //自动休眠功能使能。
| XL345_MEASURE                                                               //设置为1,置于测量模式。
| XL345_WAKEUP_8HZ;                                                      //休眠位设置为0,将器件置于普通工作模式,休眠模式下的读取频率。

regData[2] = XL345_ACTIVITY | XL345_INACTIVITY;      //使能静止 活动中断
regData[3] = 0x18;//INT2: dataReady tap1 tap2 act inact freefall watermark overrun     //中断源为int2
xl345Write(XL345_BW_RATE, regData, 4);                     

regData[0] = XL345_SPI4WIRE | XL345_INT_LOW| XL345_FULL_RESOLUTION
| XL345_DATA_JUST_RIGHT | XL345_RANGE_16G;
xl345Write(XL345_DATA_FORMAT, regData, 1);              //禁用自测, spi4线 低电平有效  全分辨率  右对齐模式 16g范围

regData[0] = XL345_FIFO_RESET; //TRIGGER INT2
xl345Write(XL345_FIFO_CTL, regData, 1);                          // fifo设置成旁路模式

regData[0] = XL345_FIFO_MODE_TRIGGER|0x1F; // 1207

xl345Write(XL345_FIFO_CTL, regData, 1);                          //FIFO为触发器模式, 样板为0x1f
}

xl345Read(XL345_INT_SOURCE, regData, 1);                   //clear intrrupt flag 

测试结果如下:

芯片输出速率配置成3200hz, 标准源的输出速率低于250hz一下,获取的加速度值正确,标准源输出速率为3200hz时,数据不正确。

同时配置芯片输出速率为400hz,和800hz,在标准源输出速率为400hz和800hz时,获取加速度数据不正确。

请教如何让在标准源在高输出速率下提供的加速度能与芯片测得的一致。

Top Replies