OpenEdv-开源电子网

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

为什么MPU6050的程序里,要是加入了一个比较长时间的延迟就会没数据呢?

[复制链接]

7

主题

19

帖子

0

精华

初级会员

Rank: 2

积分
58
金钱
58
注册时间
2016-1-27
在线时间
18 小时
发表于 2016-2-13 00:49:28 | 显示全部楼层 |阅读模式
2金钱

我发现只要在MPU6050里,只要加入一个delay函数,就会有获得不到DMP数据但是有6轴原始数据,这是怎么回事呢?只要把delay ms函数设定到327以上就有DMP没数据,这为什么呢?求大神看看~
*直接通过串口发送数据,波特率115200,MPU6050链接IIC2接口,A0脚悬空。


工程文件下载:http://pan.baidu.com/s/1IuLkU

main文件代码如下:
#include "delay.h"
#include "usart.h"
#include "mpu6050.h"
#include "inv_mpu.h"
#include "inv_mpu_dmp_motion_driver.h"
       
int main(void)
{         
        float pitch,roll,yaw;                 //欧拉角
        short aacx,aacy,aacz;                //加速度传感器原始数据
        short gyrox,gyroy,gyroz;        //陀螺仪原始数据
        int16_t p,y,r;

        uart_init(115200);                 //串口初始化为500000
        delay_init();        //延时初始化

        MPU_Init();                                        //初始化MPU6050
        mpu_dmp_init();                                //初始化DMP
         
        while(1)
        {

                mpu_dmp_get_data(&pitch,&roll,&yaw);      //得到DMP的姿态角                       
                MPU_Get_Accelerometer(&aacx,&aacy,&aacz);        //得到加速度传感器数据
                MPU_Get_Gyroscope(&gyrox,&gyroy,&gyroz);        //得到陀螺仪数据
               
                p=(int)(pitch*100);
                y=(int)(yaw*10);
                r=(int)(roll*100);
               
                printf("Pitch=%d\r\n",p);
                printf("Roll=%d\r\n",r);
                printf("Yaw=%d\r\n",y);
                printf("AX=%d\r\n",aacx);
                printf("AY=%d\r\n",aacy);
                printf("AZ=%d\r\n",aacz);
                printf("GX=%d\r\n",gyrox);
                printf("GY=%d\r\n",gyroy);
                printf("GZ=%d\r\n\r\n",gyroz);

        //        delay_ms(500);
       
        }        
}





最佳答案

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

FIFO溢出了。。。 所以,必须迅速读取数据
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165524
金钱
165524
注册时间
2010-12-1
在线时间
2116 小时
发表于 2016-2-13 00:49:29 | 显示全部楼层
FIFO溢出了。。。
所以,必须迅速读取数据
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

7

主题

19

帖子

0

精华

初级会员

Rank: 2

积分
58
金钱
58
注册时间
2016-1-27
在线时间
18 小时
 楼主| 发表于 2016-2-13 21:47:25 | 显示全部楼层
现在发现要是有一个较小的延时,就会有一定几率发生mpu_dmp_get_data()函数读取错误了。
回复

使用道具 举报

7

主题

19

帖子

0

精华

初级会员

Rank: 2

积分
58
金钱
58
注册时间
2016-1-27
在线时间
18 小时
 楼主| 发表于 2016-2-13 22:29:55 | 显示全部楼层
现在发现mpu_dmp_get_data()返回1,说明是dmp_read_fifo()函数有问题
回复

使用道具 举报

0

主题

1

帖子

0

精华

新手入门

积分
7
金钱
7
注册时间
2016-8-22
在线时间
0 小时
发表于 2016-8-22 12:17:53 | 显示全部楼层
我也是遇到这样的问题,请问楼主解决了吗?
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-8 14:34

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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