MPU6050利用DMP读取fifo数据时出错

2019-07-20 12:42发布

    根据F4“MPU6050 六轴传感器实验“部分稍微修改了一下(核心代码基本没改),初始化啥的没有什么问题,但是在mpu_dmp_get_data(&pitch,&roll,&yaw)时候失败了,调试时候发现在执行时对应  mpu_dmp_get_data()-->dmp_read_fifo()-->mpu_read_fifo_stream()这一函数下执行了:
[mw_shl_code=c,true]if (tmp[0] & BIT_FIFO_OVERFLOW) { mpu_reset_fifo(); return -2; }[/mw_shl_code] 也就是说FIFO溢出了??网上说可能是I2C驱动的读写驱动有问题但是我MPU6050的原始数据是可以正确读出来的(下图),不知道有谁遇到过这个问题指点一下!

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
25条回答
漫步
1楼-- · 2019-07-22 15:11
绝缘体 发表于 2016-3-8 20:19
你好,我也遇到了同样的问题,请问你读不到reset fifo后再读一遍的语句具体是怎么写的?

没在家里,
if(readFifo()==ERROR)
{
if(readFifo()==ERROR)
{
return ERROE
}
}

手机回复不容易啊
小悟空
2楼-- · 2019-07-22 15:55
 精彩回答 2  元偷偷看……
残梦重生2016
3楼-- · 2019-07-22 20:11
不断进行循环读fiffo就可以得到正常数据。
形如这样
                while(mpu_dmp_get_data(&pitch,&roll,&yaw)!=0)
                {
                        printf("pitch=%f roll=%f yaw=%f ",pitch,roll,yaw);
                }
yinshiyouquan
4楼-- · 2019-07-23 00:52
我用硬件i2c,100和400的速度都试过可以用,溢出问题正如前面说的,是因为函数mpu_dmp_get_data(&pitch,&roll,&yaw)执行的过慢,1S调取一次,一定会出现失败,后来我在main的while函数循环执行这个函数,然后根据业务需要定时提取pitch,roll,yaw三个数据,不是要的时候再调用这个函数,另外正点原子里面的参考例程,这个函数也是一直在快速执行的
未来,我来
5楼-- · 2019-07-23 01:07
 精彩回答 2  元偷偷看……
单井老头
6楼-- · 2019-07-23 06:12
帖子有用呀

一周热门 更多>