MPU6050改变量程的问题 求助

2019-07-20 10:27发布

本帖最后由 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)//&#198;÷&#188;tID&#213;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;
    }
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
9条回答
正点原子
1楼-- · 2019-07-21 03:55
DChipNau 发表于 2016-4-3 23:08
我查了一下手册,发现这个寄存器低三位是空着的,确实读出来应该是设置的值的左移三位,第四位和第五位是 ...

那就奇怪了,在慢慢调试下吧.
嘉之叹息
2楼-- · 2019-07-21 09:45
请问楼主,这问题解决了吗?
1448712699
3楼-- · 2019-07-21 15:34
 精彩回答 2  元偷偷看……

一周热门 更多>