综合技术
直播中

杨福林

7年用户 1483经验值
私信 关注
[问答]

MUP6050实验加载DMP固件不成功

MUP6050实验加载DMP固件失败
移植的mini板的程序
u8 mpu_dmp_init(void)
{
        u8 res=0;
        MPU_IIC_Init();         
        if(mpu_init()==0)        
        {         
                res=mpu_set_sensors(INV_XYZ_GYRO|INV_XYZ_ACCEL);
                if(res)
                        return 1;
                res=mpu_configure_fifo(INV_XYZ_GYRO|INV_XYZ_ACCEL);
                if(res)
                        return 2;
                res=mpu_set_sample_rate(DEFAULT_MPU_HZ);        
                if(res)
                        return 3;
                res=dmp_load_motion_driver_firmware();               
                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_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);        
                if(res)return 7;   
                res=run_self_test();               
                if(res)return 8;   
                res=mpu_set_dmp_state(1);        
                if(res)return 9;     
        }else return 10;
        return 0;
}
当程序跑到res=dmp_load_motion_driver_firmware();时就出错了,加载固件失败,
MPU6050是没有问题的,完全移植的MINI板的MPU6050的程序,单片机也是一样的
编译器没有报错,程序死在了这里,有人遇到过吗??
哪位大神帮帮我啊?谢谢了
下图是MPU6050的威廉希尔官方网站 图和与STM32F103RC的连接图

回帖(13)

张霞

2019-4-11 08:32:12
我也遇到过这问题,当初查的原因是在加载固件时被中断打断了,导致I2C通信失败,解决办法是把所有中断给禁了完事后再打开,完美解决。
举报

陈蓓

2019-4-11 08:50:37
我用的ST Link仿真,会有影响吗
举报

林立银

2019-4-11 08:55:42
不是这个原因,没有用到中断,连串口我都没有用,在res=dmp_load_motion_driver_firmware();        ,在检查DMP固件的时候出的错,我用STLINK仿真时提示的是程序死在了int mpu_load_firmware(unsigned short length, const unsigned char *firmware,
    unsigned short start_addr, unsigned short sample_rate),,里的        if (memcmp(firmware+ii, cur, this_write))
            return -2;位置,这里是没有用到I2C的,所以也可以排除是因为I2C通信时的故障,
举报

杨悟牛

2019-4-11 09:14:38
怎么会死在这句话里。。。最多校验失败直接返回了吧
怀疑memcmp函数出问题的话,可以自己写一个,替换一下
举报

更多回帖

发帖
×
20
完善资料,
赚取积分