OpenEdv-开源电子网

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

MPU6050dmp_load_motion_driver_firmware加载固件失败

[复制链接]

3

主题

9

帖子

0

精华

新手上路

积分
42
金钱
42
注册时间
2017-11-26
在线时间
10 小时
发表于 2018-8-16 16:52:30 | 显示全部楼层 |阅读模式
1金钱
file:///C:/Users/unit/AppData/Local/Temp/msohtmlclip1/01/clip_image002.jpg

file:///C:/Users/unit/AppData/Local/Temp/msohtmlclip1/01/clip_image004.jpg

file:///C:/Users/unit/AppData/Local/Temp/msohtmlclip1/01/clip_image006.jpg

1.jpg
AD0接GND,电路正常,没有虚焊。
2.png
调试时,在此处报错。
进去查看,发现此处报错,
查看函数如下

3.png
4.png file:///C:/Users/unit/AppData/Local/Temp/msohtmlclip1/01/clip_image008.jpg
*比较由S1指向的对象的第n个字符和由S2指向的对象的第N个字符。            
*返回:大于、等于或小于零的整数,根据S1指向的对象大于、等于或小于S2指向的对象。
也不知道这里为啥会比较失败,返回1,然后return  -2. Dmp就加载失败了。。。


电路图

电路图

最佳答案

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

问题已找到,是IIC的通讯问题。 我用的是IIC1,例程里面的是IIC2,除了更改GPIO外,此处还需要给改为红框标注的形式。 更改后,把板子放平,程序直接跑过。 但是把板子立起来,就在自检过不去了。 有没有办法把板子立起来也能过自检了?!
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

3

主题

9

帖子

0

精华

新手上路

积分
42
金钱
42
注册时间
2017-11-26
在线时间
10 小时
 楼主| 发表于 2018-8-16 16:52:31 | 显示全部楼层
问题已找到,是IIC的通讯问题。
我用的是IIC1,例程里面的是IIC2,除了更改GPIO外,此处还需要给改为红框标注的形式。
0823.jpg

更改后,把板子放平,程序直接跑过。
但是把板子立起来,就在自检过不去了。
有没有办法把板子立起来也能过自检了?!
08041.png



回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165309
金钱
165309
注册时间
2010-12-1
在线时间
2108 小时
发表于 2018-8-17 02:09:42 | 显示全部楼层
什么单片机?
回复

使用道具 举报

3

主题

9

帖子

0

精华

新手上路

积分
42
金钱
42
注册时间
2017-11-26
在线时间
10 小时
 楼主| 发表于 2018-8-18 14:06:56 | 显示全部楼层

STM32F103RCTb
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165309
金钱
165309
注册时间
2010-12-1
在线时间
2108 小时
发表于 2018-8-19 00:27:17 | 显示全部楼层

可以参考我们战舰或者精英板的例程。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

3

主题

9

帖子

0

精华

新手上路

积分
42
金钱
42
注册时间
2017-11-26
在线时间
10 小时
 楼主| 发表于 2018-8-20 11:05:35 | 显示全部楼层
正点原子 发表于 2018-8-19 00:27
可以参考我们战舰或者精英板的例程。

参考的正是STM32F103 精英板基础例程(HAL库版)V1.0
回复

使用道具 举报

3

主题

9

帖子

0

精华

新手上路

积分
42
金钱
42
注册时间
2017-11-26
在线时间
10 小时
 楼主| 发表于 2018-8-20 16:51:15 | 显示全部楼层
456789.PNG
在debug时,发现先把dmp_memory的数组前16位传给DMP,再读出来放到cur的数组,最后再比较数组是否相同。
但是读写返回值都是OK的,读取数据却没有。所以比较时会出错。
猜测可能的问题:1.mp6050供电不足,读不出来数据;
                           2.mpu_write_mem,mpu_read_mem这里是不是有问题。
123456.PNG
明天用单独模块供电试试,然后再看看这段程序是否真的返回OK.


回复

使用道具 举报

0

主题

1

帖子

0

精华

初级会员

Rank: 2

积分
73
金钱
73
注册时间
2015-7-3
在线时间
9 小时
发表于 2018-8-28 15:41:38 | 显示全部楼层
本帖最后由 陈再 于 2018-8-28 15:44 编辑

你使用的是硬件I2C还是用GPIO模拟的I2C,实现的通信啊?我现在使用的硬件I2C,也是卡在这里了

出现问题的函数

出现问题的函数
回复

使用道具 举报

0

主题

1

帖子

0

精华

新手入门

积分
2
金钱
2
注册时间
2018-9-28
在线时间
0 小时
发表于 2018-9-28 22:17:30 | 显示全部楼层
顶顶顶顶
回复

使用道具 举报

48

主题

157

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
240
金钱
240
注册时间
2018-4-21
在线时间
105 小时
发表于 2018-10-15 16:44:22 | 显示全部楼层
哎 我用的TM4C单片机 也卡在这边了 用的是硬件I2C
回复

使用道具 举报

48

主题

157

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
240
金钱
240
注册时间
2018-4-21
在线时间
105 小时
发表于 2018-10-15 16:58:40 | 显示全部楼层
陈再 发表于 2018-8-28 15:41
你使用的是硬件I2C还是用GPIO模拟的I2C,实现的通信啊?我现在使用的硬件I2C,也是卡在这里了

大哥 你这个问题解决了吗 我也卡在这里了
回复

使用道具 举报

0

主题

3

帖子

0

精华

新手上路

积分
32
金钱
32
注册时间
2018-3-19
在线时间
6 小时
发表于 2018-11-8 19:37:43 | 显示全部楼层
陈再 发表于 2018-8-28 15:41
你使用的是硬件I2C还是用GPIO模拟的I2C,实现的通信啊?我现在使用的硬件I2C,也是卡在这里了

解决了吗,我这边也遇到了同样的问题,我也是用硬件IIC、固件加载不进
回复

使用道具 举报

13

主题

102

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
351
金钱
351
注册时间
2018-11-2
在线时间
78 小时
发表于 2018-11-9 19:20:16 | 显示全部楼层
IIC我只用软件模拟,用DMP的时候发现把DMP读取FIFO的频率设置为200HZ飞机就飞不起来设置超过200HZMPU6050直接初始化不过,只能用100HZ。今天移植了MINIFLY的数据读取、滤波以及姿态解算部分的代码使用我自己写的PID函数飞地比DMP好多了。之前用DMP的时候不动方向摇杆四轴老是乱飘,现在飘的很小了。
回复

使用道具 举报

1

主题

11

帖子

0

精华

新手上路

积分
46
金钱
46
注册时间
2019-4-2
在线时间
10 小时
发表于 2019-6-8 12:12:55 | 显示全部楼层
我也卡在这了 求大佬指教啊
回复

使用道具 举报

1

主题

6

帖子

0

精华

初级会员

Rank: 2

积分
65
金钱
65
注册时间
2017-12-4
在线时间
18 小时
发表于 2019-7-19 10:12:23 | 显示全部楼层
bowen0 发表于 2019-6-8 12:12
我也卡在这了 求大佬指教啊

dmp这个地方过不去多半是I2C的问题,不行就移植别人的
回复

使用道具 举报

0

主题

3

帖子

0

精华

新手入门

积分
12
金钱
12
注册时间
2020-3-15
在线时间
3 小时
发表于 2020-3-16 00:31:29 | 显示全部楼层
硬件I2C卡于此处,大佬,帮忙解决一下
回复

使用道具 举报

0

主题

4

帖子

0

精华

新手上路

积分
27
金钱
27
注册时间
2018-1-16
在线时间
7 小时
发表于 2020-6-21 16:49:30 | 显示全部楼层
我也是使用的正点原子6050的例程,也遇到了同样的问题,dubug发现是memcmp()函数报错了,进一步对比发现memcmp()对比的两个数组确实总会存在随机的某个数不一样。
最后调查发现,我这里使用了STM30F0外部引脚中断而且没有使能6050的中断模式,导致单片机会进入中断,影响了软件IIC时序。
最后我把外部中断关了,6050的DMP固件就正常加载了,设备也正常工作了。
回复

使用道具 举报

5

主题

19

帖子

0

精华

初级会员

Rank: 2

积分
57
金钱
57
注册时间
2020-2-24
在线时间
21 小时
发表于 2020-7-18 08:17:38 | 显示全部楼层
感谢楼主,在这卡了好久终于调好了,但是怎么发现是IIC的问题的呢
回复

使用道具 举报

0

主题

1

帖子

0

精华

新手入门

积分
4
金钱
4
注册时间
2023-3-1
在线时间
1 小时
发表于 2024-8-29 16:00:30 | 显示全部楼层
haogong 发表于 2020-3-16 00:31
硬件I2C卡于此处,大佬,帮忙解决一下

首先说明一下,硬件i2c与软件I2C都应该可以。(差点让我重新移植软件I2c,这不止又要浪费多少时间?想想也是,硬件i2c比软件更高效,没有理由不行。至于是不是STM32硬件i2C有bug,那是另一话题了。不要让这个观点误导大家了。坚信,硬的也可以。哈哈
问题一、MUP6050 读accel_offs失败。
我也是硬件i2C,MCU是盛芯微SYD8810,刚开始读MPU6050 的ID是正确的,在mpu_init 时,读出accel_offs的值总是为3,导致初始化失败。
if (i2c_read(st.hw->addr, st.reg->accel_offs, 6, data))
        return -1;
                        else
                          //LCD_printf(0, 80, "acc=0x%2X",data[0]);
                       
    rev = ((data[5] & 0x01) << 2) | ((data[3] & 0x01) << 1) |
        (data[1] & 0x01);

后来用逻辑分析仪抓波形,分析到i2C 多字节读是有问题的,移植的时候,有一个参数是常数,我搞错了用了变量,导致多字节读写失败。

修改后,上面的初始化没问题了。

问题二  mpu6050 DMP 固件加载失败
解决了上面问题,可是又卡在了DMP 固件装载又失败了。我又网上查了,但都没能解决我的问题。

花费了好几个小时,没找到问题,后来干脆休息一下。转机就出现在放空的刹那。我想了想多字节读我发现了问题,多字节写是不是也同样问题?

果然,多字节写的问题同读一样,移植时,搞错了参数使用。修改后,初始化ok。

总结:不要怀疑硬件I2C,硬件更硬才对,用软件I2C搞定的,用硬件一定可以。不要被不能用硬件I2C的观念误导了。
回复

使用道具 举报

0

主题

7

帖子

0

精华

新手入门

积分
17
金钱
17
注册时间
2021-11-10
在线时间
5 小时
发表于 2024-9-26 10:02:52 | 显示全部楼层
lgh0302 发表于 2024-8-29 16:00
首先说明一下,硬件i2c与软件I2C都应该可以。(差点让我重新移植软件I2c,这不止又要浪费多少时间?想想也 ...

大佬 能看一下你的硬件IIC 的多字节读写代码吗  跪求
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2024-11-22 11:49

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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