本帖最后由 DChipNau 于 2016-4-3 14:39 编辑
最近用原子哥的MPU6050的程序,加速度计默认的量程是 2g,我想给他改成8g,我是这么改的:
在MPU_Init函数里把:
MPU_Set_Accel_Fsr(0);
改为了
MPU_Set_Accel_Fsr(2);
MPU6050的驱动中我只修改了这一处,我看了下MPU的数据手册,这么改应该没问题,但是采集到的数据依然是量程为2g的数据,难道是除了这一步还需要改变其他的吗?
补上MPU_Set_Accel_Fsr函数:
u8 MPU_Set_Accel_Fsr(u8 fsr)
{
return MPU_Write_Byte(MPU_ACCEL_CFG_REG,fsr<<3);
}
补上MPU_Init函数:
u8 MPU_Init(void)
{
u8 res;
int i;
IIC_Init();
MPU_Write_Byte(MPU_PWR_MGMT1_REG,0X80);
delay_ms(100);
MPU_Write_Byte(MPU_PWR_MGMT1_REG,0X00);
MPU_Set_Gyro_Fsr(3);
MPU_Set_Accel_Fsr(0);
MPU_Set_Rate(50);
MPU_Write_Byte(MPU_INT_EN_REG,0X00);
MPU_Write_Byte(MPU_USER_CTRL_REG,0X00);
MPU_Write_Byte(MPU_FIFO_EN_REG,0X00);
MPU_Write_Byte(MPU_INTBP_CFG_REG,0X80);
res=MPU_Read_Byte(MPU_DEVICE_ID_REG);
if(res==MPU_ADDR)//Æ÷¼tIDÕyè·
{
MPU_Write_Byte(MPU_PWR_MGMT1_REG,0X01);
MPU_Write_Byte(MPU_PWR_MGMT2_REG,0X00);
MPU_Set_Rate(50);
}else
{
return res;
}
return 0;
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
您好,我试了一下,当我对量程设置为0(2g)的时候,读出来确实为0,但是当我设置为1(4g),2(8g)的时候,读出来分别是0x08,0x10,之后我又试了3,4,5,6,发现寄存器读出来的数是我设置的数再左移三位??? 请问这种情况是MPU出问题了吗?
一周热门 更多>