在淘宝上买了一个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]
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
一周热门 更多>