OpenEdv-开源电子网

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

mpu6050无法读取原始数据问题,急!急!

[复制链接]

2

主题

7

帖子

0

精华

新手上路

积分
29
金钱
29
注册时间
2021-10-26
在线时间
10 小时
发表于 2021-11-3 09:29:57 | 显示全部楼层 |阅读模式
1金钱
        最近在用STM32单片机+正点原子例程调试MPU6050,初始化过程正常(没启动DMP),能正常读取ID,也能读取各个配置过的寄存器,读出的数据是配置写入的数据(读电源管理寄存器1值为0X01),说明I2C时序应该没问题,但在读温度寄存器、加速度及角速度寄存器时,结果全为0,网上各种方法都试过了,包括上电复位延时、优化I2C时序、更换模块等都不好使,折腾好几天还是没进展,影响项目进度!
     有人遇到过这样的问题吗?谢谢!

//--------------------------------------MPU初始化-------------------------------------------//
u8 MPU_Init(void)
{        
        delay_ms(1000);                  //上电延时
        delay_ms(1000);
        MPU_IIC_Init();                 //I2C IO初始化
        MPU_Write_Byte(MPU_PWR_MGMT1_REG,0X80);        //复位
        delay_ms(100);
        MPU_Write_Byte(MPU_PWR_MGMT1_REG,0X00);        //唤醒
       delay_ms(100);
       MPU_Write_Byte(MPU_PWR_MGMT1_REG,0X00);        //再唤醒
       delay_ms(100);
       MPU_Set_Gyro_Fsr(3);                                        //
        MPU_Set_Accel_Fsr(0);                                        //
        MPU_Set_Rate(50);                                                //
        MPU_Write_Byte(MPU_INT_EN_REG,0X00);        //
        MPU_Write_Byte(MPU_USER_CTRL_REG,0X00);        //
        MPU_Write_Byte(MPU_FIFO_EN_REG,0X00);       
        MPU_Write_Byte(MPU_INTBP_CFG_REG,0X80);       
        res=MPU_Read_Byte(MPU_DEVICE_ID_REG);     //读ID
        if(res==MPU_ADDR)               //正确0X68
        {
                MPU_Write_Byte(MPU_PWR_MGMT1_REG,0X01);        //
                res=MPU_Read_Byte(MPU_PWR_MGMT1_REG);
                MPU_Write_Byte(MPU_PWR_MGMT2_REG,0X00);        //¼óËù¶èóëíóÂYòǶ¼1¤×÷
                 res=MPU_Read_Byte(MPU_PWR_MGMT2_REG);
                MPU_Set_Rate(50);                                                //éèÖÃ2éÑùÂêÎa50Hz
        }
       else return 1;
        return 0;
}


//--------------------------------------主函数------------------------------------------------------//
int main(void)
{
        float pitch,roll,yaw;                 //
        short aacx,aacy,aacz;                //
        short gyrox,gyroy,gyroz;        //
        short temp;
       u8 res1;   

        NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);         
        uart_init(115200);                 //
        MPU_Init();                                        //初始化MPU6050
        while(1)
        {
              delay_ms(20);
              temp=MPU_Get_Temperature();                                   //为0
              delay_ms(2);
              res1=MPU_Read_Byte(MPU_DEVICE_ID_REG);              //为0X68
               res1=MPU_Read_Byte(MPU_PWR_MGMT1_REG);       //为 0X01
             MPU_Get_Accelerometer(&aacx,&aacy,&aacz);                  //全为0
            MPU_Get_Gyroscope(&gyrox,&gyroy,&gyroz);                 //全为0

      }
}
//--------------------------------------读角速度原始数据------------------------------------------------------//
u8 MPU_Get_Gyroscope(short *gx,short *gy,short *gz)
{
    u8 buf[6],res;  

    buf[0] = MPU_Read_Byte(MPU_GYRO_XOUTH_REG);
    buf[1] = MPU_Read_Byte(MPU_GYRO_XOUTL_REG);
     buf[2] = MPU_Read_Byte(MPU_GYRO_YOUTH_REG);
    buf[3] = MPU_Read_Byte(MPU_GYRO_YOUTL_REG);
   buf[4] = MPU_Read_Byte(MPU_GYRO_ZOUTH_REG);
    buf[5] = MPU_Read_Byte(MPU_GYRO_ZOUTL_REG);

//        res=MPU_Read_Len(MPU_ADDR,MPU_GYRO_XOUTH_REG,6,buf);     
//        if(res==0)
        {
                *gx=((u16)buf[0]<<8)|buf[1];  
                *gy=((u16)buf[2]<<8)|buf[3];  
                *gz=((u16)buf[4]<<8)|buf[5];
        }        
    return res;;
}

//--------------------------------------读加速度原始数据------------------------------------------------------//
u8 MPU_Get_Accelerometer(short *ax,short *ay,short *az)
{
    u8 buf[6],res;  
        res=MPU_Read_Len(MPU_ADDR,MPU_ACCEL_XOUTH_REG,6,buf);
        if(res==0)
        {
                *ax=((u16)buf[0]<<8)|buf[1];  
                *ay=((u16)buf[2]<<8)|buf[3];  
                *az=((u16)buf[4]<<8)|buf[5];
        }        
    return res;;
}

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

使用道具 举报

2

主题

7

帖子

0

精华

新手上路

积分
29
金钱
29
注册时间
2021-10-26
在线时间
10 小时
 楼主| 发表于 2021-11-3 09:32:05 | 显示全部楼层
有哪位达人知道原因吗,在线急等!!!!
回复

使用道具 举报

10

主题

3089

帖子

1

精华

论坛元老

Rank: 8Rank: 8

积分
7786
金钱
7786
注册时间
2020-5-11
在线时间
3248 小时
发表于 2021-11-3 09:37:41 | 显示全部楼层
实在不行就换一片,我遇到过坏的,部分数据异常.
专治疑难杂症
回复

使用道具 举报

2

主题

7

帖子

0

精华

新手上路

积分
29
金钱
29
注册时间
2021-10-26
在线时间
10 小时
 楼主| 发表于 2021-11-3 10:29:23 | 显示全部楼层
换了几块都不行,没折了
回复

使用道具 举报

2

主题

594

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1458
金钱
1458
注册时间
2019-7-28
在线时间
137 小时
发表于 2021-11-3 10:45:31 | 显示全部楼层
  你是水平放置初始化的吗
回复

使用道具 举报

2

主题

7

帖子

0

精华

新手上路

积分
29
金钱
29
注册时间
2021-10-26
在线时间
10 小时
 楼主| 发表于 2021-11-3 11:15:15 | 显示全部楼层
lpwithv 发表于 2021-11-3 10:45
你是水平放置初始化的吗

读原始数据跟放置位置有关系吗?
回复

使用道具 举报

0

主题

668

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1917
金钱
1917
注册时间
2021-8-13
在线时间
261 小时
发表于 2021-11-3 11:33:13 | 显示全部楼层
13676235239 发表于 2021-11-3 11:15
读原始数据跟放置位置有关系吗?

有关系的,以你那个倾斜角度来作为标准的
回复

使用道具 举报

2

主题

7

帖子

0

精华

新手上路

积分
29
金钱
29
注册时间
2021-10-26
在线时间
10 小时
 楼主| 发表于 2021-11-3 13:44:20 | 显示全部楼层
Tlava 发表于 2021-11-3 11:33
有关系的,以你那个倾斜角度来作为标准的

水平放置也不行
回复

使用道具 举报

1

主题

2

帖子

0

精华

新手上路

积分
45
金钱
45
注册时间
2021-7-21
在线时间
14 小时
发表于 2021-11-18 17:23:52 | 显示全部楼层
改一下波特率为9600试试
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2024-5-29 15:30

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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