MPU6050 DMP初始化失败求帮忙

2019-08-16 20:02发布

代码是原子哥的代码;mpu_dmp_init()   DMP初始化失败 我查代买发现是
res=dmp_load_motion_driver_firmware();                //加载固件库
                if(res)return 4;   实际返回4  说明加载失败 继续看发现
  if (memcmp(firmware+ii, cur, this_write))
            return -2;  是这个函数返回了-2  说以导致失败      这个函数 执行的是汇编 看不懂...


请问这是为什么?怎么解决呢?

首先可以确定的是我的小车原装代码是可以实现的  所以排除硬件问题  
MPU_Init();                                        //初始化MPU6050   这可以初始化   说明IIC通行也没问题
在初始化前我没开任何中断
               

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
16条回答
zhaoyuaiweide
2019-08-18 00:53
gexinyu1993 发表于 2017-1-5 16:18
我现在只读取MPU6050的原始数据都OK了!!
问题:
我移植的是原子哥的代码 都是STM32 按说我只需要改下 ...

没太听懂楼主什么意思  如果你要打印出来陀螺仪原始数据相应的忘记那个.c了  好像是mpu6050.c就有u8 MPU_Get_Gyroscope(short *gx,short *gy,short *gz)等函数  直接调用加上你想读取的参数就可以读出来原始数据   如果你要读DMP融合后的pitch roll yaw 的角度   就直接调用inv_mpu.c中的u8 mpu_dmp_get_data(float *pitch,float *roll,float *yaw)函数就可以读取    IIC如果要变一定要改全  不然肯定会失败

.h里面的
//IO方向设置
#define MPU_SDA_IN()  {GPIOB->CRH&=0XFFFF0FFF;GPIOB->CRH|=8<<12;}
#define MPU_SDA_OUT() {GPIOB->CRH&=0XFFFF0FFF;GPIOB->CRH|=3<<12;}

//IO操作函数         
#define MPU_IIC_SCL    PBout(10)                 //SCL
#define MPU_IIC_SDA    PBout(11)                 //SDA         
#define MPU_READ_SDA   PBin(11)                 //输入SDA

.c里面的这个:
//初始化IIC
void MPU_IIC_Init(void)
{                                             
        RCC->APB2ENR|=1<<3;                //先使能外设IO PORTB时钟                                                          
        GPIOB->CRH&=0XFFFF00FF;        //PB10/11 推挽输出
        GPIOB->CRH|=0X00003300;          
        GPIOB->ODR|=3<<10;             //PB10,11 输出高
}

一周热门 更多>