OpenEdv-开源电子网

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

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

[复制链接]

22

主题

63

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
278
金钱
278
注册时间
2013-10-26
在线时间
18 小时
发表于 2015-8-13 17:37:44 | 显示全部楼层 |阅读模式
5金钱
我读出的IIC地址为0x68,跟我的IIC地址一样,AD0接地!

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

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

请各位大神指教,万分感谢!

最佳答案

查看完整内容[请看2#楼]

回复【6楼】正点原子: --------------------------------- 确实是6050坏了,换新的就好了,多谢原子哥指点!
Love life, love the electrons!
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

22

主题

63

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
278
金钱
278
注册时间
2013-10-26
在线时间
18 小时
 楼主| 发表于 2015-8-13 17:37:45 | 显示全部楼层
回复【6楼】正点原子:
---------------------------------
确实是6050坏了,换新的就好了,多谢原子哥指点!
Love life, love the electrons!
回复

使用道具 举报

58

主题

6293

帖子

1

精华

资深版主

Rank: 8Rank: 8

积分
11473
金钱
11473
注册时间
2014-4-1
在线时间
1297 小时
发表于 2015-8-13 17:45:46 | 显示全部楼层
器件地址也能读出来?头次听说。。。
回复

使用道具 举报

21

主题

2205

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
5136
金钱
5136
注册时间
2014-8-26
在线时间
1316 小时
发表于 2015-8-13 18:03:43 | 显示全部楼层
地址跟你的6050模块硬件设置有关
你是测的IIC的时序吧??
回复

使用道具 举报

22

主题

63

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
278
金钱
278
注册时间
2013-10-26
在线时间
18 小时
 楼主| 发表于 2015-8-13 18:34:27 | 显示全部楼层
回复【2楼】xuande:
---------------------------------
原子哥的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)
Love life, love the electrons!
回复

使用道具 举报

22

主题

63

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
278
金钱
278
注册时间
2013-10-26
在线时间
18 小时
 楼主| 发表于 2015-8-13 18:35:28 | 显示全部楼层
回复【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里面的语句能顺利执行!
Love life, love the electrons!
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165371
金钱
165371
注册时间
2010-12-1
在线时间
2110 小时
发表于 2015-8-13 20:06:17 | 显示全部楼层
模块是不是好的?
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

22

主题

63

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
278
金钱
278
注册时间
2013-10-26
在线时间
18 小时
 楼主| 发表于 2015-8-17 09:11:56 | 显示全部楼层
回复【6楼】正点原子:
---------------------------------

现在有个问题,值是读出来了,但值总感觉不对劲,放着不动,总有一个轴的值是-1.9G,我的量程是±2G,而且固定一个角度,会有两个轴都是-1.9G,请问这个是什么情况?
Love life, love the electrons!
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-2-25 03:37

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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