OpenEdv-开源电子网

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

mpu6050读取数据一直没有变化

[复制链接]

5

主题

28

帖子

0

精华

新手上路

积分
36
金钱
36
注册时间
2019-5-4
在线时间
15 小时
发表于 2019-5-4 19:10:17 | 显示全部楼层 |阅读模式
1金钱
学习的是精英STM32F103ZET6的mpu6050例程 想要移植到STM32F103C8上边 使用的是HAL库
iic的库是自己写的 可以保证正确性
正点原子的例程移植到HAL库的F103C8十分麻烦 于是打算自己用iic库函数读取数据
在CUBEMX生成文件并初始化mpu6050完成之后
我将对应的vcc gnd scl sda连接到stm32f103c8上边 AD0管脚没有接
最简单的我先读取了MPU6050陀螺仪储存数据的寄存器里面的值并用串口发送到电脑
电脑接受的x轴 y轴 z轴的数据一直都是18 18 02没有变化
在论坛里面找了很久试了很多办法都没有得到解决
希望用过这个模块的同学能帮我看看哪里出现了问题 感谢

int main(void)
{
  HAL_Init();
  SystemClock_Config();
  MX_GPIO_Init();
  MX_I2C1_Init();

  MX_USART1_UART_Init();
  uint8_t abc[3]={0,1,2};
MPU_Init();
  


float pitch,roll,yaw;  
short aacx,aacy,aacz;
short gyrox,gyroy,gyroz;
short temp;  
uint8_t gyro[3]={gyrox,gyroy,gyroz};
uint8_t accel[3]={aacx,aacy,aacz};
u8 temp0[1]={temp};
u8 buff[6];



  while (1)
  {
    i2c_read_buf(buff,1,0x43);
  i2c_read_buf(buff+1,1,0x44);
  i2c_read_buf(buff+2,1,0x45);
  i2c_read_buf(buff+3,1,0x46);
  i2c_read_buf(buff+4,1,0x47);
  i2c_read_buf(buff+5,1,0x48);
  gyrox=((uint16_t)buff[0]<<8)|buff[1];  
  gyroy=((uint16_t)buff[2]<<8)|buff[3];  
  gyroz=((uint16_t)buff[4]<<8)|buff[5];
    if(MPU_Init()==0)
  {HAL_UART_Transmit(&huart1,gyro,3,100);}
  HAL_Delay(200);


}
这里是主函数,MPU的库是正点原子的库,思考了好几天都没有找到解决办法,谢谢大家了


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

使用道具 举报

5

主题

28

帖子

0

精华

新手上路

积分
36
金钱
36
注册时间
2019-5-4
在线时间
15 小时
 楼主| 发表于 2019-5-4 19:10:55 | 显示全部楼层
自己帮自己顶一下 希望不要沉 这几天都在思考这个问题
回复

使用道具 举报

5

主题

28

帖子

0

精华

新手上路

积分
36
金钱
36
注册时间
2019-5-4
在线时间
15 小时
 楼主| 发表于 2019-5-4 23:03:50 | 显示全部楼层
看到的同学帮忙看一下下呗...
回复

使用道具 举报

4

主题

54

帖子

0

精华

初级会员

Rank: 2

积分
96
金钱
96
注册时间
2019-5-5
在线时间
13 小时
发表于 2019-5-5 01:01:35 | 显示全部楼层
先利用自带的软件试试6050是不是能正常工作,不能的话利用6050资料自带的软件将模块重置一下试试
回复

使用道具 举报

22

主题

271

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
405
金钱
405
注册时间
2019-3-21
在线时间
107 小时
发表于 2019-5-5 08:41:08 | 显示全部楼层
目前为止没用过,帮顶
回复

使用道具 举报

5

主题

28

帖子

0

精华

新手上路

积分
36
金钱
36
注册时间
2019-5-4
在线时间
15 小时
 楼主| 发表于 2019-5-5 13:12:19 | 显示全部楼层
MXA 发表于 2019-5-5 01:01
先利用自带的软件试试6050是不是能正常工作,不能的话利用6050资料自带的软件将模块重置一下试试

MPU接在我的精英上面可以正常工作,而且我在这次实验里面MPU-Init函数也可以正常返回0,但我用iic读器件地址输出的是FF...如果初始化没问题我现在找不到问题在哪了
回复

使用道具 举报

5

主题

28

帖子

0

精华

新手上路

积分
36
金钱
36
注册时间
2019-5-4
在线时间
15 小时
 楼主| 发表于 2019-5-5 13:30:41 | 显示全部楼层
现在情况就是读MPU的器件寄存器0x75都是返回FF 找了很多解决办法也没有解决 做过的同学可以提一下可能在哪里出现了问题呗?
回复

使用道具 举报

0

主题

1

帖子

0

精华

新手入门

积分
6
金钱
6
注册时间
2019-5-5
在线时间
2 小时
发表于 2019-5-5 13:40:01 | 显示全部楼层
确定一下时钟,IIC用的是硬件还是软件?我上一次通讯不成功就是在这里出错,不知道能否帮到你。
另外读取MPU6050仅是初始数据,转成角位数据楼主是怎么弄的?
回复

使用道具 举报

5

主题

28

帖子

0

精华

新手上路

积分
36
金钱
36
注册时间
2019-5-4
在线时间
15 小时
 楼主| 发表于 2019-5-5 17:36:17 | 显示全部楼层
养胖那只猪 发表于 2019-5-5 13:40
确定一下时钟,IIC用的是硬件还是软件?我上一次通讯不成功就是在这里出错,不知道能否帮到你。
另外读取M ...

IIC用的软件模拟 是自己写的库 我现在能从寄存器里面读到数据 是不是说明iic通信没错? 但我读器件信息读出来不是0x68而是FF 问题是出在mpu的初始化上面吗? 我打算先读出基本数据 再用DMP算出那三个角度
回复

使用道具 举报

5

主题

28

帖子

0

精华

新手上路

积分
36
金钱
36
注册时间
2019-5-4
在线时间
15 小时
 楼主| 发表于 2019-5-5 18:32:34 | 显示全部楼层
现在情况可以读出数据了,但是数据不会随着mpu的改变而改变,一直都是一个数值,谁遇到过这种情况又是怎么解决的呢??
回复

使用道具 举报

109

主题

5564

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
10569
金钱
10569
注册时间
2017-2-18
在线时间
1913 小时
发表于 2019-5-5 18:59:43 | 显示全部楼层
看这个能移植过去不

实验30 MPU6050六轴传感器实验.rar

860.41 KB, 下载次数: 88

回复

使用道具 举报

5

主题

28

帖子

0

精华

新手上路

积分
36
金钱
36
注册时间
2019-5-4
在线时间
15 小时
 楼主| 发表于 2019-5-5 19:05:43 | 显示全部楼层
peng1554 发表于 2019-5-5 18:59
看这个能移植过去不

您好,我就是基于正点原子的源码写的程序,现在问题是我可以读到正确的器件地址(0x68),现在问题就在于读到的陀螺仪数据不随mpu的改变而改变,您看看这可能是哪里出了问题??
回复

使用道具 举报

0

主题

14

帖子

0

精华

初级会员

Rank: 2

积分
105
金钱
105
注册时间
2019-7-28
在线时间
20 小时
发表于 2019-9-13 16:23:47 | 显示全部楼层
    帮顶
回复

使用道具 举报

10

主题

293

帖子

0

精华

高级会员

Rank: 4

积分
623
金钱
623
注册时间
2019-6-3
在线时间
107 小时
发表于 2019-9-13 16:49:11 | 显示全部楼层
帮顶
回复

使用道具 举报

12

主题

129

帖子

0

精华

高级会员

Rank: 4

积分
947
金钱
947
注册时间
2018-4-5
在线时间
71 小时
发表于 2019-9-15 00:08:11 | 显示全部楼层
帮顶
回复

使用道具 举报

4

主题

178

帖子

0

精华

高级会员

Rank: 4

积分
668
金钱
668
注册时间
2019-7-28
在线时间
60 小时
发表于 2020-3-22 13:08:05 | 显示全部楼层
我试了一周了:一直是可以读到地址68,其它数据为零不变,各种延迟试验、初始化修改都不行!!!
网上很多这样有共性的问题,我换了一个新的MPU6050,故障依旧。
回复

使用道具 举报

1

主题

6

帖子

0

精华

新手上路

积分
21
金钱
21
注册时间
2020-3-25
在线时间
4 小时
发表于 2020-3-25 21:44:22 | 显示全部楼层
我好像也是这样,官方代码用keil5仿真只有一个值,换了一个mpu6050值没有变,上位机也读不出来
回复

使用道具 举报

0

主题

2

帖子

0

精华

新手入门

积分
19
金钱
19
注册时间
2020-10-8
在线时间
6 小时
发表于 2021-4-24 20:48:24 | 显示全部楼层
82年的矿泉水 发表于 2019-5-5 13:30
现在情况就是读MPU的器件寄存器0x75都是返回FF 找了很多解决办法也没有解决 做过的同学可以提一下可能在哪 ...

应该是iic时序有问题
回复

使用道具 举报

0

主题

2

帖子

0

精华

新手入门

积分
19
金钱
19
注册时间
2020-10-8
在线时间
6 小时
发表于 2021-4-24 20:50:22 | 显示全部楼层
glenxu 发表于 2020-3-22 13:08
我试了一周了:一直是可以读到地址68,其它数据为零不变,各种延迟试验、初始化修改都不行!!!
网上很多 ...

我也是用dmp库里面的函数读取数据为0;但是直接用iic读取寄存器确是有数据·的,真不知要这个库干嘛
回复

使用道具 举报

13

主题

643

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2432
金钱
2432
注册时间
2019-12-28
在线时间
527 小时
发表于 2021-4-26 17:40:43 | 显示全部楼层
这种看起来更像是你iic读写有问题导致的,直接使用6050 的例程看看能不能用,然后移植例程里面的iic到你自己的程序里面看看
回复

使用道具 举报

4

主题

178

帖子

0

精华

高级会员

Rank: 4

积分
668
金钱
668
注册时间
2019-7-28
在线时间
60 小时
发表于 2021-4-30 09:12:03 | 显示全部楼层
glenxu 发表于 2020-3-22 13:08
我试了一周了:一直是可以读到地址68,其它数据为零不变,各种延迟试验、初始化修改都不行!!!
网上很多 ...

问题找到了:主要是IIC中的数据格式不对,STM32直接将其它指令旁路了,没执行。
修改对数据格式定义后一切正常。
回复

使用道具 举报

4

主题

178

帖子

0

精华

高级会员

Rank: 4

积分
668
金钱
668
注册时间
2019-7-28
在线时间
60 小时
发表于 2021-4-30 09:13:07 | 显示全部楼层
问题是,有的执行了,大部分没有执行,让人很难判断问题。
回复

使用道具 举报

0

主题

3

帖子

0

精华

新手入门

积分
8
金钱
8
注册时间
2021-4-27
在线时间
2 小时
发表于 2021-5-3 09:47:54 | 显示全部楼层
glenxu 发表于 2021-4-30 09:13
问题是,有的执行了,大部分没有执行,让人很难判断问题。

你好,能细说一下怎么解决的吗?
我用硬件IIC可以正常读出数据,
用IO模拟iic可以读到芯片地址,但是读不出每个轴的数据。
回复

使用道具 举报

4

主题

178

帖子

0

精华

高级会员

Rank: 4

积分
668
金钱
668
注册时间
2019-7-28
在线时间
60 小时
发表于 2021-5-6 11:50:11 | 显示全部楼层
主要是IIC中的数据格式不对,地址格式式对的,所以读出来了!
STM32直接将其它指令由于数据格式不对被旁路了,所以没执行。
单步执行就可以发现。
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-5-24 14:12

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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