移植原子哥的MPU6050代码,读取IIC地址正确,但读取加速度寄存器数值为0,求助!!!!!

2019-07-21 01:56发布

我读出的IIC地址为0x68,跟我的IIC地址一样,AD0接地!

但我读取MPU6050的加速度寄存器的数值却为0,移植都是0,请问我这个是什么情况???
或者说,我应该怎么调试?

能正确读取IIC地址,是不是说明我的IIC时序都没问题了?

请各位大神指教,万分感谢!
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
7条回答
口天土立口
2019-07-21 16:17
回复【3楼】login_FAE:
---------------------------------
原子哥的MPU6050初始化代码: 

//初始化MPU6050 
//返回值:0,成功 
//    其他,错误代码 
u8 MPU_Init(void) 
{  
u8 res; 

MPU_IIC_Init();//初始化IIC总线 
MPU_Write_Byte(MPU_PWR_MGMT1_REG,0X80); //复位MPU6050 
  Delay_US(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; 



res确实等于MPU_ADDR(0x68)

if里面的语句能顺利执行!

一周热门 更多>