OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4572|回复: 9

MPU6050改变量程的问题 求助

[复制链接]

2

主题

14

帖子

0

精华

新手入门

积分
14
金钱
14
注册时间
2014-10-22
在线时间
0 小时
发表于 2016-4-3 13:53:50 | 显示全部楼层 |阅读模式
30金钱
本帖最后由 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;
    }

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

2

主题

14

帖子

0

精华

新手入门

积分
14
金钱
14
注册时间
2014-10-22
在线时间
0 小时
 楼主| 发表于 2016-4-3 14:39:34 | 显示全部楼层
求各位大神帮忙呀  项目紧急需要
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165516
金钱
165516
注册时间
2010-12-1
在线时间
2116 小时
发表于 2016-4-3 20:44:55 | 显示全部楼层
数据一模一样???
回复

使用道具 举报

2

主题

14

帖子

0

精华

新手入门

积分
14
金钱
14
注册时间
2014-10-22
在线时间
0 小时
 楼主| 发表于 2016-4-3 22:05:55 | 显示全部楼层
对的,因为把原始数据转化为有效数据的时候需要除精度,如果精度不随着量程做调整(比如2g和8g都用16384)的话,数据是一样的。
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165516
金钱
165516
注册时间
2010-12-1
在线时间
2116 小时
发表于 2016-4-3 22:23:01 | 显示全部楼层
DChipNau 发表于 2016-4-3 22:05
对的,因为把原始数据转化为有效数据的时候需要除精度,如果精度不随着量程做调整(比如2g和8g都用16384) ...

配置完以后,读寄存器试试,看看是否真的配置OK了。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

2

主题

14

帖子

0

精华

新手入门

积分
14
金钱
14
注册时间
2014-10-22
在线时间
0 小时
 楼主| 发表于 2016-4-3 22:53:58 | 显示全部楼层
本帖最后由 DChipNau 于 2016-4-3 22:58 编辑
正点原子 发表于 2016-4-3 22:23
配置完以后,读寄存器试试,看看是否真的配置OK了。

您好,我试了一下,当我对量程设置为0(2g)的时候,读出来确实为0,但是当我设置为1(4g),2(8g)的时候,读出来分别是0x08,0x10,之后我又试了3,4,5,6,发现寄存器读出来的数是我设置的数再左移三位??? 请问这种情况是MPU出问题了吗?
回复

使用道具 举报

2

主题

14

帖子

0

精华

新手入门

积分
14
金钱
14
注册时间
2014-10-22
在线时间
0 小时
 楼主| 发表于 2016-4-3 23:08:24 | 显示全部楼层
正点原子 发表于 2016-4-3 22:23
配置完以后,读寄存器试试,看看是否真的配置OK了。

我查了一下手册,发现这个寄存器低三位是空着的,确实读出来应该是设置的值的左移三位,第四位和第五位是有效位,按理说应该没有错呀。
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165516
金钱
165516
注册时间
2010-12-1
在线时间
2116 小时
发表于 2016-4-6 23:07:22 | 显示全部楼层
DChipNau 发表于 2016-4-3 23:08
我查了一下手册,发现这个寄存器低三位是空着的,确实读出来应该是设置的值的左移三位,第四位和第五位是 ...

那就奇怪了,在慢慢调试下吧.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

6

主题

28

帖子

0

精华

初级会员

Rank: 2

积分
98
金钱
98
注册时间
2015-9-18
在线时间
29 小时
发表于 2016-10-15 14:48:23 | 显示全部楼层
请问楼主,这问题解决了吗?
回复

使用道具 举报

1

主题

21

帖子

0

精华

新手上路

积分
49
金钱
49
注册时间
2017-12-18
在线时间
8 小时
发表于 2017-12-18 16:24:12 | 显示全部楼层
能否请教个问题
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-5-19 14:14

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表