OpenEdv-开源电子网

 找回密码
 立即注册

扫一扫,访问微社区

正点原子新作:阿波罗STM32F767&F429&探索者STM32F4开发板&赶快来下载资料哦。

查看: 624|回复: 8

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

[复制链接]

  离线 

9

主题

46

帖子

0

精华

初级会员

Rank: 2

积分
84
金钱
84
注册时间
2018-4-21
在线时间
19 小时
发表于 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()有什么区别?

回复

使用道具 举报

  离线 

497

主题

9万

帖子

31

精华

管理员

Rank: 12Rank: 12Rank: 12

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

使用道具 举报

  离线 

6

主题

66

帖子

0

精华

中级会员

Rank: 3Rank: 3

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

使用道具 举报

  离线 

9

主题

46

帖子

0

精华

初级会员

Rank: 2

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

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

使用道具 举报

  离线 

6

主题

66

帖子

0

精华

中级会员

Rank: 3Rank: 3

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

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

使用道具 举报

  离线 

9

主题

46

帖子

0

精华

初级会员

Rank: 2

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

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

使用道具 举报

  离线 

9

主题

46

帖子

0

精华

初级会员

Rank: 2

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

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

使用道具 举报

  离线 

6

主题

66

帖子

0

精华

中级会员

Rank: 3Rank: 3

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

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

使用道具 举报

  离线 

9

主题

46

帖子

0

精华

初级会员

Rank: 2

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

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

使用道具 举报

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

本版积分规则




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

GMT+8, 2018-6-23 00:58

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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