MPU6050老是在mpu_dmp_init这个函数这里卡住应该如何解决?

2019-07-20 22:14发布

自己买了一块F103ZET6最小系统板,参考了原子精英版的6050实验程序写了一下6050的代码,但是每次都会在While(mpu_dmp_init())这个函数这里卡住,从而导致下面的代码无法运行,我单独用USB线给最小系统板供电,所以应该不是电压不稳的原因,请问大虾们这个是什么原因应该如何解决?

以下是这个函数的定义:
u8 mpu_dmp_init(void)
{
        u8 res=0;
        MPU_IIC_Init();         //初始化IIC总线
        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;
}

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
25条回答
刘瑶
1楼-- · 2019-07-22 17:31
正点原子 发表于 2017-4-19 20:45
仿真看看是哪一步返回结果错误?

[mw_shl_code=applescript,true]                res=dmp_load_motion_driver_firmware();                //¼óÔØdmp1ì¼t
                if(res)return 4; [/mw_shl_code]


固件库加载失败,里面的[mw_shl_code=applescript,true]        if (memcmp(firmware+ii, cur, this_write))返回-2
            return -2;[/mw_shl_code]
刘瑶
2楼-- · 2019-07-22 22:37
正点原子 发表于 2017-4-19 20:45
仿真看看是哪一步返回结果错误?

下面的两个图一个是我的mpu6050的原理图(里面的iic引脚我没有上拉),另外一个是我程序中对iic引脚的修改,这个程序的一直是不是只需要修改引脚就够了??
O哓U
3楼-- · 2019-07-23 04:02
 精彩回答 2  元偷偷看……
Jokyfjk
4楼-- · 2019-07-23 09:20
如果你用的是杜邦线连接,进行绞线,否则干扰会造成这个问题
淡漠
5楼-- · 2019-07-23 12:08
 精彩回答 2  元偷偷看……
LIGHTERS
6楼-- · 2019-07-23 12:08
东风不可逆 发表于 2017-2-22 14:27
这个问题回答的都没到点子上....mpu_dmp_init()正常返回的是0,初始化正常While(mpu_dmp_init())肯定是 ...

瞎说,返回0说明才正常,就跳出那个while循环了

一周热门 更多>