MUP6050加载DMP固件失败

2019-07-21 08:53发布

MUP6050加载DMP固件失败
unsigned char mpu_dmp_init(void)
{
        u8 res=0;
        IIC_InitPort();
        if(mpu_init()==0)        //初始化MPU6050
        {         
                res=mpu_set_sensors(INV_XYZ_GYRO|INV_XYZ_ACCEL);//设置所需要的传感器
                if(res)return 1;
                res=mpu_configure_fifo(INV_XYZ_GYRO|INV_XYZ_ACCEL);//设置FIFO
                if(res)return 2;
                res=mpu_set_sample_rate(DEFAULT_MPU_HZ);        //设置采样率
                if(res)return 3;
                res=dmp_load_motion_driver_firmware();                //加载dmp固件
                if(res)return 4;
                res=dmp_set_orientation(inv_orientation_matrix_to_scalar(gyro_orientation));//设置陀螺仪方向
                if(res)return 5;
                res=dmp_enable_feature(DMP_FEATURE_6X_LP_QUAT|DMP_FEATURE_TAP|        //设置dmp功能
                    DMP_FEATURE_ANDROID_ORIENT|DMP_FEATURE_SEND_RAW_ACCEL|DMP_FEATURE_SEND_CAL_GYRO|
                    DMP_FEATURE_GYRO_CAL);
                if(res)return 6;
                res=dmp_set_fifo_rate(DEFAULT_MPU_HZ);        //设置DMP输出速率(最大不超过200Hz)
                if(res)return 7;   
                res=run_self_test();                //自检  
                if(res)return 8;   
                res=mpu_set_dmp_state(1);        //使能DMP
                if(res)return 9;     
        }else return 10;
        return 0;
}


当程序跑到res=dmp_load_motion_driver_firmware();时就出错了,加载固件失败,
    for (ii = 0; ii < length; ii += this_write) {
        this_write = min(LOAD_CHUNK, length - ii);
        if (mpu_write_mem(ii, this_write, (unsigned char*)&firmware[ii]))
            return -1;
        if (mpu_read_mem(ii, this_write, cur))
            return -1;
        if (memcmp(firmware+ii, cur, this_write))
                {
                        printf("ii = 0x%x ",ii);
                        return -2;
                }
    }


串口助手打印如下图,每次上电或复位时都这样。希望大神帮忙解决一下。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
20条回答
xueshawu
1楼-- · 2019-07-22 18:17
逍遥不记年 发表于 2017-3-19 18:12
你解决了吗 可否分享经验

我已经解决了,时间久远;
我当时遇到两个问题;
1、加载固件失败      方法:初始化的时候要把模块放水平
2、读FIFO失败         方法:读不到,说明读的太快(至少我是这样),等待读取就行
逍遥不记年
2楼-- · 2019-07-22 18:41
xueshawu 发表于 2017-3-20 09:33
我已经解决了,时间久远;
我当时遇到两个问题;
1、加载固件失败      方法:初始化的时候要把模块放 ...

是9250的FIFO?
xueshawu
3楼-- · 2019-07-22 23:07
逍遥不记年 发表于 2017-3-20 15:04
是9250的FIFO?

MPU6050
逍遥不记年
4楼-- · 2019-07-23 00:01
 精彩回答 2  元偷偷看……
刘瑶
5楼-- · 2019-07-23 05:19
艾蒂尔 发表于 2016-11-2 10:14
哈哈~~已经成功调出来三个角度了~~我再检验下准确度如何~~

你好,请问一下你是怎么解决dmp加载失败这个问题的?谢谢
刘瑶
6楼-- · 2019-07-23 06:38
艾蒂尔 发表于 2016-11-2 10:05
今早调通了~~加载DMP成功了已经~~后面主函数MPU6050_Pose(Pose,Gyro,Accel);还有问题~~
原因找到了~~就是I ...

你好,你说的i2c要先成功读写是什么意思??

一周热门 更多>