1、进行如下初始化后,ADXL372输出的X,Y,Z三轴ADC值,随机跳变很大,比如X轴可以由5跳变到60,这是正常的吗?手册最大偏移可以到70。
2、如何消除这种跳变?
uint8_t ADXL372_Init(void)
{
uint8_t ADI_id=0,self_test=0;
uint8_t n=5;
ADI_id=ADXL372_ReadREG(XL372_DEVID_AD);
if(ADI_id!=ADI_ID)
{
sys_err = ADXL372_ID_READ_ERROR;
return 0;
}
while(n--)
{
ADXL372_WriteREG(XL372_MEASURE,0x89); //正常模式 低噪声 400Hz带宽,匹配输出速率
ADXL372_WriteREG(XL372_TIMING,0x20); //输出速率800Hz
ADXL372_WriteREG(XL372_POWER_CTL,0x0F);//全宽带测量模式
ADXL372_WriteREG(XL372_FIFO_CTL,0x00);
ADXL372_WriteREG(XL372_SELF_TEST,0x01);//启动自检
do
{
self_test=ADXL372_ReadREG(XL372_SELF_TEST);
}while((self_test&0x02)==0); //等待自检完成
self_test=ADXL372_ReadREG(XL372_SELF_TEST);
if(self_test&0x04==0)//自检不通过
{
sys_err = ADXL372_SELF_TEST_FAIL;
return 0;
}
}
return 1;
}