| 各位大哥,小弟用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);
 }
 }
 |