OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 5090|回复: 0

MPU6050读数据都为0

[复制链接]

12

主题

26

帖子

0

精华

初级会员

Rank: 2

积分
94
金钱
94
注册时间
2015-3-13
在线时间
0 小时
发表于 2015-6-1 23:15:24 | 显示全部楼层 |阅读模式
这几天改了原子哥的代码,选用了最简单的打印一个加速度值,但读取温度和加速度值都不行。
调了好几天都无果。意外的加了一行绿色的代码后。就成功了。
然后换成延时,红色处,就可以打印加速度值了
希望可以帮助其他人
(很有意思的是,延时5ms时,放在粉色行至红色行之间是不行的,延时50ms后,放在这段函数红色行至绿色行之间都可以)

//初始化MPU6050
//返回值:0,成功
//    其他,错误代码
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 
delay_ms(50);
    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);
//printf("%X\r\n",res);
 
    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;
}

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-21 18:37

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表