mpu6050 读取加速度值失败
初始化程序如下:void accInit(void)
{
HalI2CInit(0x68,i2cClock_267KHZ);
HalSensorWriteRegByte(PWR_MGMT_1, 0x00); //解除休眠状态
HalSensorWriteRegByte(SMPLRT_DIV, 0x07);
HalSensorWriteRegByte(CONFIG, 0x06);
HalSensorWriteRegByte(GYRO_CONFIG, 0x18);
HalSensorWriteRegByte(ACCEL_CONFIG, 0x01);
} // accInit
读加速度的程序如下:
uint16 accx,accy,accz,gyrox,gyroy,gyroz,ttemp;
void accReadAcc(int16 *paXVal, int16 *paYVal, int16 *paZVal,
int16 *pgXVal, int16 *pgYVal, int16 *pgZVal,
int16 *pTEMP)
{
HalI2CInit(0x68,i2cClock_533KHZ);
HalSensorReadReg(ACCEL_XOUT_H, (uint8 *)&accx,2 );
HalSensorReadReg(ACCEL_YOUT_H, (uint8 *)&accy,2 );
HalSensorReadReg(ACCEL_ZOUT_H, (uint8 *)&accz,2 );
HalSensorReadReg(GYRO_XOUT_H, (uint8 *)&gyrox,2 );
HalSensorReadReg(GYRO_YOUT_H, (uint8 *)&gyroy,2 );
HalSensorReadReg(GYRO_ZOUT_H, (uint8 *)&gyroz,2 );
HalSensorReadReg(TEMP_OUT_H, (uint8 *)&ttemp,2 );
*paXVal = accx;
*paYVal = accy;
*paZVal = accy;
*pgXVal = gyrox;
*pgYVal = gyroy;
*pgZVal = gyroz;
*pTEMP = ttemp; // 需转换计算出温度
// *pXVal = (int8)(gyrox/256);
// *pYVal = (int8)(gyroy/256);
// *pZVal = (int8)(gyroz/256);
} // accReadAcc
读到的加速度值了大于10000,也不知哪里出了问题 看datasheet,换算后才能用;加速度2G范围记得是要除16384,陀螺仪1000范围是除32.8 cshp138 发表于 2014-4-19 09:54
看datasheet,换算后才能用;加速度2G范围记得是要除16384,陀螺仪1000范围是除32.8 ...
我将读出来的值 除以了16384 ,可是经常 Y Z 轴的加速度都大于 1g ,且波动的厉害。是不是我初始化写的有问题,我不需要融合,只要能正确读出加速度值就可以了,麻烦了。
页:
[1]