mpu9250的WHOI AM I读取出来不是0x71

2019-07-20 09:15发布

在淘宝上买了一个9250的模块,把原子的程序稍加改动,读出来的设备ID为什么是0x60而不是数据手册上的0x71。原子读取mpu6050的程序可以理解,读出来的ID也和手册一致,不知道mpu9250这个是什么情况。[mw_shl_code=applescript,true]初始化
u8 MPU_Init(void)
{
        u8 res;
        IIC_Init();//初始化IIC总线
        MPU_Write_Byte(MPU_PWR_MGMT1_REG,0X80);        //复位MPU6050
    delay_ms(100);
        MPU_Write_Byte(MPU_PWR_MGMT1_REG,0X00);        //唤醒MPU6050
        MPU_Set_Gyro_Fsr(3);                                        //陀螺仪传感器,±2000dps
        MPU_Set_Accel_Fsr(0);                                        //加速度传感器,±2g
        MPU_Set_Rate(50);                                                //设置采样率50Hz
        MPU_Write_Byte(MPU_INT_EN_REG,0X00);        //关闭所有中断
        MPU_Write_Byte(MPU_USER_CTRL_REG,0X00);        //I2C主模式关闭
        MPU_Write_Byte(MPU_FIFO_EN_REG,0X00);        //关闭FIFO
        MPU_Write_Byte(MPU_INTBP_CFG_REG,0X80);        //INT引脚低电平有效
        res=MPU_Read_Byte(MPU_DEVICE_ID_REG);
        if(res==MPU_ADDR)//器件ID正确
        {
                MPU_Write_Byte(MPU_PWR_MGMT1_REG,0X01);        //设置CLKSEL,PLL X轴为参考
                MPU_Write_Byte(MPU_PWR_MGMT2_REG,0X00);        //加速度与陀螺仪都工作
                MPU_Set_Rate(50);                                                //设置采样率为50Hz
        }
        else
                return 1;
        return 0;
}
主函数
int main(void)
{
        u8 t=0,report=1;                        //默认开启上报
        u8 red=0;
       
        delay_init(168);  //初始化延时函数
        uart_init(115200);                //初始化串口波特率为500000
       
        MPU_Init();                                        //初始化MPU6050
        red=MPU_Read_Byte(MPU_DEVICE_ID_REG);
        usart1_send_char(red);
        delay_ms(200);
}[/mw_shl_code]


友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。