OpenEdv-开源电子网

 找回密码
 立即注册

扫一扫,访问微社区

正点原子全套STM32开发资料,上千讲STM32视频教程,RT1052教程免费下载啦...
查看: 1612|回复: 12

求助 已经调了3个星期的MPU9250了 还是失败了

[复制链接]

  离线 

24

主题

96

帖子

0

精华

初级会员

Rank: 2

积分
132
金钱
132
注册时间
2018-4-21
在线时间
50 小时
发表于 2018-6-3 14:20:26 | 显示全部楼层 |阅读模式
10金钱
本帖最后由 c627933142 于 2018-6-3 15:37 编辑

问题出在移植的DMP库里面 在走mpu_dmp_get_data()的时候,里面有个mpu_read_fifo_stream()函数,里面有个if语句是这样的
if (fifo_count > (st.hw->max_fifo >> 1)) {
        /* FIFO is 50% full, better check overflow bit. */
        if (i2c_read(st.hw->addr, st.reg->int_status, 1, tmp))
            return -1;
        if (tmp[0] & BIT_FIFO_OVERFLOW) {
            mpu_reset_fifo();
            return -2;
        }
    }
问题出在里面第二个if,直接return2了,函数前有这么一段注释
Get one unparsed packet from the FIFO.
*  This function should be used if the packet is to be parsed elsewhere.
*  @param[in]  length  Length of one FIFO packet.
*  @param[in]  data    FIFO packet.
*  @param[in]  more    Number of remaining packets.
意思大概是获得一个不符合语法的FIFO包,但我不懂那段if的含义 也不知道怎么改,请大佬讲解
还想问一下 mpu_dmp_get_data()和mpu_mpl_get_data()有什么区别?

最佳答案

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

是I2C延时太多导致FIFO阻塞 解决了
回复

使用道具 举报

  离线 

24

主题

96

帖子

0

精华

初级会员

Rank: 2

积分
132
金钱
132
注册时间
2018-4-21
在线时间
50 小时
 楼主| 发表于 2018-6-3 14:20:27 | 显示全部楼层
是I2C延时太多导致FIFO阻塞 解决了
回复

使用道具 举报

  离线 

512

主题

9万

帖子

31

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
133885
金钱
133885
注册时间
2010-12-1
在线时间
1289 小时
发表于 2018-6-4 01:57:34 | 显示全部楼层
参考我们例程
回复

使用道具 举报

  离线 

6

主题

69

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
458
金钱
458
注册时间
2016-3-16
在线时间
153 小时
发表于 2018-6-4 08:52:50 | 显示全部楼层
是返回 -2 还是 2?
如果返回 -2 了,按照注释可以看出是 FIFO 溢出了,可以提高数据读取速度,或增加 FIFO 大小试试看
回复

使用道具 举报

  离线 

24

主题

96

帖子

0

精华

初级会员

Rank: 2

积分
132
金钱
132
注册时间
2018-4-21
在线时间
50 小时
 楼主| 发表于 2018-6-4 13:39:27 来自手机 | 显示全部楼层
旦丁中号 发表于 2018-6-4 08:52
是返回 -2 还是 2?
如果返回 -2 了,按照注释可以看出是 FIFO 溢出了,可以提高数据读取速度,或增加 FIF ...

怎么提高读取速度?现在已经读出姿态角了 地面站也显示了 但是数据传着传着突然卡住了 数据还在传 但是我改变传感器位置数据不变
回复

使用道具 举报

  离线 

6

主题

69

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
458
金钱
458
注册时间
2016-3-16
在线时间
153 小时
发表于 2018-6-4 15:24:36 | 显示全部楼层
c627933142 发表于 2018-6-4 13:39
怎么提高读取速度?现在已经读出姿态角了 地面站也显示了 但是数据传着传着突然卡住了 数据还在传 但是我 ...

试试提高你调用 mpu_dmp_get_data() 函数的频率,跟你在配置 DMP 时配置的 FIFO 匹配一下
回复

使用道具 举报

  离线 

24

主题

96

帖子

0

精华

初级会员

Rank: 2

积分
132
金钱
132
注册时间
2018-4-21
在线时间
50 小时
 楼主| 发表于 2018-6-4 17:21:23 来自手机 | 显示全部楼层
正点原子 发表于 2018-6-4 01:57
参考我们例程

就是参考你的的例程的 现在mpu数据无故卡死 重启还没有用 只能重新烧代码才能解决
回复

使用道具 举报

  离线 

24

主题

96

帖子

0

精华

初级会员

Rank: 2

积分
132
金钱
132
注册时间
2018-4-21
在线时间
50 小时
 楼主| 发表于 2018-6-4 17:22:45 来自手机 | 显示全部楼层
旦丁中号 发表于 2018-6-4 15:24
试试提高你调用 mpu_dmp_get_data() 函数的频率,跟你在配置 DMP 时配置的 FIFO 匹配一下

我都没有用中断了 我都直接在主函数里while(1)里面读数了 还是会卡死
回复

使用道具 举报

  离线 

6

主题

69

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
458
金钱
458
注册时间
2016-3-16
在线时间
153 小时
发表于 2018-6-5 08:37:05 | 显示全部楼层
c627933142 发表于 2018-6-4 17:22
我都没有用中断了 我都直接在主函数里while(1)里面读数了 还是会卡死

感觉这样读数据的话应该是有时返回 0 值表示读取正常,有时返回 非0 值表示读取失败,因为读取速度比数据生成的速度快了
回复

使用道具 举报

  离线 

24

主题

96

帖子

0

精华

初级会员

Rank: 2

积分
132
金钱
132
注册时间
2018-4-21
在线时间
50 小时
 楼主| 发表于 2018-6-6 07:55:12 来自手机 | 显示全部楼层
旦丁中号 发表于 2018-6-5 08:37
感觉这样读数据的话应该是有时返回 0 值表示读取正常,有时返回 非0 值表示读取失败,因为读取速度比数据 ...

不是越快越好吗?慢了FIFO会溢出
现在观察的结果是输出角度会卡在一定值上 不知道是不是fifo溢出了 地面站的3D模型一卡一卡的
回复

使用道具 举报

  离线 

3

主题

14

帖子

0

精华

初级会员

Rank: 2

积分
58
金钱
58
注册时间
2018-6-27
在线时间
13 小时
发表于 2018-6-27 11:40:04 | 显示全部楼层
请问楼主,地面站显示3D模型姿态变化需要修改例程么?为什么我用例程只能读取到原始数据,晃动板子3D模型没有变化
回复

使用道具 举报

  离线 

24

主题

96

帖子

0

精华

初级会员

Rank: 2

积分
132
金钱
132
注册时间
2018-4-21
在线时间
50 小时
 楼主| 发表于 2018-7-10 00:38:33 | 显示全部楼层
柠檬C 发表于 2018-6-27 11:40
请问楼主,地面站显示3D模型姿态变化需要修改例程么?为什么我用例程只能读取到原始数据,晃动板子3D模型没 ...

我现在用的是4.22的地面站 改改它自带的协议代码就读到了 3D模型的话只要传3个姿态角并解锁就行了 这么久没上不知道你搞定了没
回复

使用道具 举报

  离线 

3

主题

14

帖子

0

精华

初级会员

Rank: 2

积分
58
金钱
58
注册时间
2018-6-27
在线时间
13 小时
发表于 2018-7-19 16:15:30 | 显示全部楼层
c627933142 发表于 2018-7-10 00:38
我现在用的是4.22的地面站 改改它自带的协议代码就读到了 3D模型的话只要传3个姿态角并解锁就行了 这么久 ...

嗯嗯谢谢LZ,搞定啦
回复

使用道具 举报

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

本版积分规则




关闭

报名原子哥新品发布会&粉丝见面会上一条 /1 下一条

正点原子公众号

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

GMT+8, 2018-10-24 08:25

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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