OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/FPGA开发资料,上千讲STM32视频教程,RT1052教程免费下载啦...
查看: 4582|回复: 13
打印 上一主题 下一主题

MUP6050实验加载DMP固件失败

[复制链接]

148

主题

482

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2794
金钱
2794
注册时间
2015-10-5
在线时间
399 小时
跳转到指定楼层
楼主
发表于 2016-8-27 17:17:09 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
10金钱
本帖最后由 飞过漠北的蓝天 于 2016-8-29 10:24 编辑

MUP6050实验加载DMP固件失败
移植的mini板的程序
u8 mpu_dmp_init(void)
{
        u8 res=0;
        MPU_IIC_Init();         
        if(mpu_init()==0)        
        {         
                res=mpu_set_sensors(INV_XYZ_GYRO|INV_XYZ_ACCEL);
                if(res)
                        return 1;
                res=mpu_configure_fifo(INV_XYZ_GYRO|INV_XYZ_ACCEL);
                if(res)
                        return 2;
                res=mpu_set_sample_rate(DEFAULT_MPU_HZ);        
                if(res)
                        return 3;
                res=dmp_load_motion_driver_firmware();               
                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_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);        
                if(res)return 7;   
                res=run_self_test();               
                if(res)return 8;   
                res=mpu_set_dmp_state(1);        
                if(res)return 9;     
        }else return 10;
        return 0;
}

当程序跑到res=dmp_load_motion_driver_firmware();时就出错了,加载固件失败,
MPU6050是没有问题的,完全移植的MINI板的MPU6050的程序,单片机也是一样的
编译器没有报错,程序死在了这里,有人遇到过吗??
哪位大神帮帮我?谢谢了
下图是MPU6050的电路图和与STM32F103RC的连接图

猎豹截图20160829102144.png (42.8 KB, 下载次数: 45)

猎豹截图20160829102144.png

猎豹截图20160829102253.png (22.85 KB, 下载次数: 47)

猎豹截图20160829102253.png

最佳答案

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

我也遇到过这问题,当初查的原因是在加载固件时被中断打断了,导致I2C通信失败,解决办法是把所有中断给禁了完事后再打开,完美解决。
认真做好笔记....
回复

使用道具 举报

6

主题

911

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2747
金钱
2747
注册时间
2014-12-2
在线时间
290 小时
2#
发表于 2016-8-27 17:17:10 | 只看该作者
我也遇到过这问题,当初查的原因是在加载固件时被中断打断了,导致I2C通信失败,解决办法是把所有中断给禁了完事后再打开,完美解决。
回复

使用道具 举报

148

主题

482

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2794
金钱
2794
注册时间
2015-10-5
在线时间
399 小时
3#
 楼主| 发表于 2016-8-27 17:19:43 | 只看该作者
我用的ST Link仿真,会有影响吗
认真做好笔记....
回复

使用道具 举报

148

主题

482

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2794
金钱
2794
注册时间
2015-10-5
在线时间
399 小时
4#
 楼主| 发表于 2016-8-29 09:37:49 | 只看该作者
xkwy 发表于 2016-8-27 17:17
我也遇到过这问题,当初查的原因是在加载固件时被中断打断了,导致I2C通信失败,解决办法是把所有中断给禁 ...

不是这个原因,没有用到中断,连串口我都没有用,在res=dmp_load_motion_driver_firmware();        ,在检查DMP固件的时候出的错,我用STLINK仿真时提示的是程序死在了int mpu_load_firmware(unsigned short length, const unsigned char *firmware,
    unsigned short start_addr, unsigned short sample_rate),,里的        if (memcmp(firmware+ii, cur, this_write))
            return -2;位置,这里是没有用到I2C的,所以也可以排除是因为I2C通信时的故障,
认真做好笔记....
回复

使用道具 举报

6

主题

911

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2747
金钱
2747
注册时间
2014-12-2
在线时间
290 小时
5#
发表于 2016-8-29 19:43:35 | 只看该作者
飞过漠北的蓝天 发表于 2016-8-29 09:37
不是这个原因,没有用到中断,连串口我都没有用,在res=dmp_load_motion_driver_firmware();        ,在检查DMP ...

怎么会死在这句话里。。。最多校验失败直接返回了吧

怀疑memcmp函数出问题的话,可以自己写一个,替换一下
坚持使用寄存器,拒绝重复造轮子。
回复

使用道具 举报

3

主题

47

帖子

0

精华

初级会员

Rank: 2

积分
180
金钱
180
注册时间
2015-2-28
在线时间
26 小时
6#
发表于 2016-10-26 19:12:23 | 只看该作者
本帖最后由 星空旅行者 于 2016-10-26 19:14 编辑

请问,解决了吗?我也遇到这种问题,
if (memcmp(firmware+ii, cur, this_write))
{
        printf("ii = 0x%x\n",ii);
        return -2;
}

串口助手打印如下图,希望大神帮忙解决一下。每次上电或复位时都这样。


QQ截图20161026191014.png (2.28 KB, 下载次数: 45)

QQ截图20161026191014.png
回复

使用道具 举报

148

主题

482

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2794
金钱
2794
注册时间
2015-10-5
在线时间
399 小时
7#
 楼主| 发表于 2016-10-27 17:56:21 | 只看该作者
星空旅行者 发表于 2016-10-26 19:12
请问,解决了吗?我也遇到这种问题,
if (memcmp(firmware+ii, cur, this_write))
{

还是没有解决,我解决了在告诉你吧
认真做好笔记....
回复

使用道具 举报

148

主题

482

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2794
金钱
2794
注册时间
2015-10-5
在线时间
399 小时
8#
 楼主| 发表于 2016-10-27 17:56:23 | 只看该作者
星空旅行者 发表于 2016-10-26 19:12
请问,解决了吗?我也遇到这种问题,
if (memcmp(firmware+ii, cur, this_write))
{

还是没有解决,我解决了在告诉你吧
认真做好笔记....
回复

使用道具 举报

2

主题

12

帖子

0

精华

新手上路

积分
41
金钱
41
注册时间
2016-11-4
在线时间
7 小时
9#
发表于 2017-3-19 18:21:09 | 只看该作者
飞过漠北的蓝天 发表于 2016-10-27 17:56
还是没有解决,我解决了在告诉你吧

解决了吗 兄弟
回复

使用道具 举报

39

主题

204

帖子

0

精华

高级会员

Rank: 4

积分
717
金钱
717
注册时间
2016-6-10
在线时间
191 小时
10#
发表于 2017-3-19 18:59:53 | 只看该作者
我也尝试移植过,出现莫名其妙的bug,搞了两天,无解,我换成数据融合的了
回复

使用道具 举报

148

主题

482

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2794
金钱
2794
注册时间
2015-10-5
在线时间
399 小时
11#
 楼主| 发表于 2017-3-20 10:09:45 | 只看该作者
周亚龙 发表于 2017-3-19 18:59
我也尝试移植过,出现莫名其妙的bug,搞了两天,无解,我换成数据融合的了

我的是电路没弄好的原因,你检测一下电路
认真做好笔记....
回复

使用道具 举报

148

主题

482

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2794
金钱
2794
注册时间
2015-10-5
在线时间
399 小时
12#
 楼主| 发表于 2017-3-20 10:10:07 | 只看该作者

我的是电路没弄好的原因,你检测一下电路
认真做好笔记....
回复

使用道具 举报

2

主题

12

帖子

0

精华

新手上路

积分
41
金钱
41
注册时间
2016-11-4
在线时间
7 小时
13#
发表于 2017-3-20 14:03:39 | 只看该作者
飞过漠北的蓝天 发表于 2017-3-20 10:10
我的是电路没弄好的原因,你检测一下电路

我完全不知道原因 ID读出来 0x73   
回复

使用道具 举报

1

主题

11

帖子

0

精华

新手上路

积分
34
金钱
34
注册时间
2019-4-2
在线时间
6 小时
14#
发表于 2019-6-8 11:55:31 | 只看该作者
我也卡在了相同的地方了
回复

使用道具 举报

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

本版积分规则



关闭

正点原子STM32/FPGA资料免费下载上一条 /1 下一条

正点原子公众号

QQ|手机版|官方淘宝店|微信公众平台|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2019-7-2 13:55

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表
三级片电影