各位大哥,小弟用STM32读取ADXL345的三轴加速度,发现结果读数很不正确,求助大神帮忙看看问题何在?在此谢过!
原始数据——读取寄存器数据;解算数据——(float)原始数据*3.9/1000
附(数据):
依次为X/Y/Z方向
静止:
原始数据:13 14 230
解算数据:0.050700/0.054600/0.897000
原始数据:13 13 229
解算数据:0.050700/0.050700/0.893100
轻微运动:
原始数据:65459 65489 210
解算数据:255.290100/255.407104/0.819000
原始数据:65509 65535 86
解算数据:255.485107/255.586502/0.335400
附(代码):
void ADXL345_READ_XYZ(u16 *x,u16 *y,u16 *z) //读取三个方向的值
{
u8 buf[6];
buf[0]=ADXL345_RD_Reg(DATA_X0);
buf[1]=ADXL345_RD_Reg(DATA_X1);
buf[2]=ADXL345_RD_Reg(DATA_Y0);
buf[3]=ADXL345_RD_Reg(DATA_Y1);
buf[4]=ADXL345_RD_Reg(DATA_Z0);
buf[5]=ADXL345_RD_Reg(DATA_Z1);
*x=buf[1]<<8|buf[0];
*y=buf[3]<<8|buf[2];
*z=buf[5]<<8|buf[4];
printf(“原始数据:%d %d %d\r\n",*x,*y,*z);
}
void ADXL345_Init(void) //ADXL345初始化
{
IIC2_Init();
if(ADXL345_RD_Reg(DEVICE_ID)==0XE5)
{
ADXL345_WR_Reg(DATA_FORMAT,0X2B);
ADXL345_WR_Reg(BW_RATE,0x0A);
ADXL345_WR_Reg(POWER_CTL,0x28);
ADXL345_WR_Reg(INT_ENABLE,0x00);
ADXL345_WR_Reg(OFSX,0x00);
ADXL345_WR_Reg(OFSY,0x00);
ADXL345_WR_Reg(OFSZ,0x00);
}
} |