OpenEdv-开源电子网

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

MPU6050老是在mpu_dmp_init这个函数这里卡住应该如何解决?

[复制链接]

9

主题

45

帖子

0

精华

初级会员

Rank: 2

积分
143
金钱
143
注册时间
2016-7-15
在线时间
23 小时
发表于 2016-7-24 10:55:12 | 显示全部楼层 |阅读模式
3金钱
自己买了一块F103ZET6最小系统板,参考了原子精英版的6050实验程序写了一下6050的代码,但是每次都会在While(mpu_dmp_init())这个函数这里卡住,从而导致下面的代码无法运行,我单独用USB线给最小系统板供电,所以应该不是电压不稳的原因,请问大虾们这个是什么原因应该如何解决?

以下是这个函数的定义:
u8 mpu_dmp_init(void)
{
        u8 res=0;
        MPU_IIC_Init();         //初始化IIC总线
        if(mpu_init()==0)        //初始化MPU6050
        {         
                res=mpu_set_sensors(INV_XYZ_GYRO|INV_XYZ_ACCEL);//设置所需要的传感器
                if(res)return 1;
                res=mpu_configure_fifo(INV_XYZ_GYRO|INV_XYZ_ACCEL);//设置FIFO
                if(res)return 2;
                res=mpu_set_sample_rate(DEFAULT_MPU_HZ);        //设置采样率
                if(res)return 3;
                res=dmp_load_motion_driver_firmware();                //加载dmp固件
                if(res)return 4;
                res=dmp_set_orientation(inv_orientation_matrix_to_scalar(gyro_orientation));//设置陀螺仪方向
                if(res)return 5;
                res=dmp_enable_feature(DMP_FEATURE_6X_LP_QUAT|DMP_FEATURE_TAP|        //设置dmp功能
                    DMP_FEATURE_ANDROID_ORIENT|DMP_FEATURE_SEND_RAW_ACCEL|DMP_FEATURE_SEND_CAL_GYRO|
                    DMP_FEATURE_GYRO_CAL);
                if(res)return 6;
                res=dmp_set_fifo_rate(DEFAULT_MPU_HZ);        //设置DMP输出速率(最大不超过200Hz)
                if(res)return 7;   
                res=run_self_test();                //自检
                if(res)return 8;   
                res=mpu_set_dmp_state(1);        //使能DMP
                if(res)return 9;     
        }else return 10;
        return 0;
}

最佳答案

查看完整内容[请看2#楼]

兄弟们 确实和供电问题有关 我起初也是这个问题return10 卡在while,但我把杜邦线都换成全新的就可以正常显示了
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

0

主题

1

帖子

0

精华

新手入门

积分
10
金钱
10
注册时间
2022-3-9
在线时间
1 小时
发表于 2016-7-24 10:55:13 | 显示全部楼层
兄弟们 确实和供电问题有关 我起初也是这个问题return10 卡在while,但我把杜邦线都换成全新的就可以正常显示了
回复

使用道具 举报

9

主题

45

帖子

0

精华

初级会员

Rank: 2

积分
143
金钱
143
注册时间
2016-7-15
在线时间
23 小时
 楼主| 发表于 2016-7-24 10:56:22 | 显示全部楼层
有的时候就不会卡住,只要电脑一重启,再去调试,肯定会卡住
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165377
金钱
165377
注册时间
2010-12-1
在线时间
2111 小时
发表于 2016-7-30 20:13:20 | 显示全部楼层
1,供电要稳定。2,模块要放平。
回复

使用道具 举报

9

主题

45

帖子

0

精华

初级会员

Rank: 2

积分
143
金钱
143
注册时间
2016-7-15
在线时间
23 小时
 楼主| 发表于 2016-7-30 20:33:53 | 显示全部楼层
正点原子 发表于 2016-7-30 20:13
1,供电要稳定。2,模块要放平。

奇怪的是把6050拔下来再插上就不会卡住了,可以继续向下运行,这个是怎么回事呢?该如何解决呢??
回复

使用道具 举报

2

主题

18

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
254
金钱
254
注册时间
2016-5-13
在线时间
45 小时
发表于 2016-7-30 21:26:07 | 显示全部楼层
请问你有木有用ST Link仿真,我仿真的时候也是卡在这里,但是全速运行时却可以得到结果!是不是很怪
回复

使用道具 举报

9

主题

45

帖子

0

精华

初级会员

Rank: 2

积分
143
金钱
143
注册时间
2016-7-15
在线时间
23 小时
 楼主| 发表于 2016-7-30 21:30:43 | 显示全部楼层
孤独奋进的狼888 发表于 2016-7-30 21:26
请问你有木有用ST Link仿真,我仿真的时候也是卡在这里,但是全速运行时却可以得到结果!是不是很怪

我是直接下载程序到芯片的,没有仿真
回复

使用道具 举报

2

主题

18

帖子

0

精华

初级会员

Rank: 2

积分
141
金钱
141
注册时间
2016-5-12
在线时间
49 小时
发表于 2016-8-25 08:22:06 | 显示全部楼层
兄弟,解决没,,,我也是同样的情况
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165377
金钱
165377
注册时间
2010-12-1
在线时间
2111 小时
发表于 2016-8-31 23:40:43 | 显示全部楼层
在初始化的时候,禁止中断,试试。初始化完成以后,再开中断。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

13

主题

126

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
399
金钱
399
注册时间
2016-5-25
在线时间
101 小时
发表于 2016-9-2 13:32:47 | 显示全部楼层
问题解决了吗?
回复

使用道具 举报

0

主题

19

帖子

0

精华

初级会员

Rank: 2

积分
131
金钱
131
注册时间
2016-7-13
在线时间
17 小时
发表于 2016-9-6 18:07:37 | 显示全部楼层
KevinBlake 发表于 2016-7-30 21:30
我是直接下载程序到芯片的,没有仿真

你试下仿真看卡在哪里呢?如果这个函数卡住会返回非0的值,监控一下是哪一步出问题了。
回复

使用道具 举报

0

主题

8

帖子

0

精华

新手上路

积分
45
金钱
45
注册时间
2015-10-27
在线时间
4 小时
发表于 2016-12-30 14:20:21 | 显示全部楼层
正点原子 发表于 2016-7-30 20:13
1,供电要稳定。2,模块要放平。

为什么模块必须的放平才能通过自检?
回复

使用道具 举报

东风不可逆 该用户已被删除
发表于 2017-2-22 14:27:05 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

32

主题

75

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
331
金钱
331
注册时间
2015-11-19
在线时间
38 小时
发表于 2017-4-19 11:03:31 | 显示全部楼层
正点原子 发表于 2016-7-30 20:13
1,供电要稳定。2,模块要放平。

原子哥,我的也出现这个问题,但是你说的那两点我的都没有问题,还是提示我dmp固件库加载失败
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165377
金钱
165377
注册时间
2010-12-1
在线时间
2111 小时
发表于 2017-4-19 20:45:42 | 显示全部楼层
刘瑶 发表于 2017-4-19 11:03
原子哥,我的也出现这个问题,但是你说的那两点我的都没有问题,还是提示我dmp固件库加载失败

仿真看看是哪一步返回结果错误?
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

32

主题

75

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
331
金钱
331
注册时间
2015-11-19
在线时间
38 小时
发表于 2017-4-20 09:47:07 | 显示全部楼层
正点原子 发表于 2017-4-19 20:45
仿真看看是哪一步返回结果错误?

[mw_shl_code=applescript,true]                res=dmp_load_motion_driver_firmware();                //¼óÔØdmp1ì¼t
                if(res)return 4; [/mw_shl_code]


固件库加载失败,里面的[mw_shl_code=applescript,true]        if (memcmp(firmware+ii, cur, this_write))返回-2
            return -2;[/mw_shl_code]
回复

使用道具 举报

32

主题

75

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
331
金钱
331
注册时间
2015-11-19
在线时间
38 小时
发表于 2017-4-20 10:01:11 | 显示全部楼层
正点原子 发表于 2017-4-19 20:45
仿真看看是哪一步返回结果错误?

下面的两个图一个是我的mpu6050的原理图(里面的iic引脚我没有上拉),另外一个是我程序中对iic引脚的修改,这个程序的一直是不是只需要修改引脚就够了??
捕获.JPG
捕获2.JPG
回复

使用道具 举报

1

主题

6

帖子

0

精华

新手上路

积分
30
金钱
30
注册时间
2017-5-21
在线时间
7 小时
发表于 2017-5-21 01:10:14 | 显示全部楼层
同问,在while(mpu_dmp_init()) {
                OLED_ShowString(0, 0, (u8*)"mpu err");
        }
卡住,而且进行调试时一直卡在下图这行汇编指令中,不管如何调试都无法执行得到在这之后的指令?请问各位如何解决?
捕获.PNG
回复

使用道具 举报

9

主题

96

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
257
金钱
257
注册时间
2015-12-14
在线时间
50 小时
发表于 2017-5-21 10:03:58 | 显示全部楼层
如果你用的是杜邦线连接,进行绞线,否则干扰会造成这个问题
Keep moving,to be NO.1!
回复

使用道具 举报

1

主题

12

帖子

0

精华

初级会员

Rank: 2

积分
69
金钱
69
注册时间
2016-4-13
在线时间
14 小时
发表于 2017-7-11 20:36:47 | 显示全部楼层
我也是同样的情况
回复

使用道具 举报

1

主题

4

帖子

0

精华

新手上路

积分
45
金钱
45
注册时间
2017-7-13
在线时间
9 小时
发表于 2017-7-23 22:38:45 | 显示全部楼层
东风不可逆 发表于 2017-2-22 14:27
这个问题回答的都没到点子上....mpu_dmp_init()正常返回的是0,初始化正常While(mpu_dmp_init())肯定是 ...

瞎说,返回0说明才正常,就跳出那个while循环了
回复

使用道具 举报

5

主题

33

帖子

0

精华

新手上路

积分
48
金钱
48
注册时间
2017-7-24
在线时间
8 小时
发表于 2017-7-27 19:14:52 | 显示全部楼层
回复

使用道具 举报

5

主题

33

帖子

0

精华

新手上路

积分
48
金钱
48
注册时间
2017-7-24
在线时间
8 小时
发表于 2017-7-27 19:15:17 | 显示全部楼层
我用的就是这个L298N驱动模块
回复

使用道具 举报

10

主题

70

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
272
金钱
272
注册时间
2016-7-13
在线时间
41 小时
发表于 2017-7-31 15:09:21 | 显示全部楼层
同问啊,我的是return 10
回复

使用道具 举报

10

主题

70

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
272
金钱
272
注册时间
2016-7-13
在线时间
41 小时
发表于 2017-7-31 18:51:57 | 显示全部楼层
正点原子 发表于 2016-8-31 23:40
在初始化的时候,禁止中断,试试。初始化完成以后,再开中断。

问下中断在MPU_Init();里吗?
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165377
金钱
165377
注册时间
2010-12-1
在线时间
2111 小时
发表于 2017-8-1 00:01:05 | 显示全部楼层
yjh 发表于 2017-7-31 18:51
问下中断在MPU_Init();里吗?

初始化之前禁止中断,初始化之后,再开中断
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

0

主题

1

帖子

0

精华

新手入门

积分
9
金钱
9
注册时间
2019-6-8
在线时间
1 小时
发表于 2019-6-10 21:01:07 | 显示全部楼层
yjh 发表于 2017-7-31 15:09
同问啊,我的是return 10

我的也return10,请问您的解决了吗?是程序原因还是MPU6050坏了?
回复

使用道具 举报

3

主题

17

帖子

0

精华

初级会员

Rank: 2

积分
124
金钱
124
注册时间
2019-5-30
在线时间
29 小时
发表于 2019-7-18 09:55:31 | 显示全部楼层
同问啊,我的是也在这里卡住了,有解决方案吗?????
回复

使用道具 举报

2

主题

14

帖子

0

精华

初级会员

Rank: 2

积分
144
金钱
144
注册时间
2019-3-21
在线时间
27 小时
发表于 2019-7-19 15:28:58 | 显示全部楼层
不知兄弟解决没有,能否指教一二
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-2-27 22:55

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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