OpenEdv-开源电子网

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

MPU6000 SPI 陀螺仪数据正常读 加速度计数据读出来的值不会变。

[复制链接]

2

主题

6

帖子

0

精华

新手上路

积分
34
金钱
34
注册时间
2015-9-28
在线时间
0 小时
发表于 2015-10-16 16:20:33 | 显示全部楼层 |阅读模式
5金钱

初始化:
void MPU6000_Init()

  uint8_t ctrl = 0x00;
 
  // 管脚初始化
  MPU6000_IO_Init();
 
 //MPU6000复位 往0x6B里面写0x80
 MPU6000_AccRebootCmd();
  HAL_Delay(20);
 
  //设置时钟源为陀螺仪的z轴
   ctrl = 0x03;
  MPU6000_IO_Write(&ctrl, MPU6000_RA_PWR_MGMT_1, 1);
  HAL_Delay(20); 
 
 //启用SPI总线
  ctrl = 0x10;
  MPU6000_IO_Write(&ctrl, MPU6000_RA_USER_CTRL, 1);
  HAL_Delay(20);
 
 //采样率分频,典型值:0x07(125Hz)
 ctrl = 0x07;
  MPU6000_IO_Write(&ctrl, MPU6000_RA_SMPRT_DIV, 1); 
  HAL_Delay(20);
 
 //低通滤波频率,典型值0x06(5Hz)
 ctrl = 0x06;
  MPU6000_IO_Write(&ctrl, MPU6000_RA_CONFIG, 1); 
  HAL_Delay(20);
 
  //陀螺仪量程+/-500
 ctrl = 0x08;
  MPU6000_IO_Write(&ctrl, MPU6000_RA_GYRO_CONFIG, 1);
  HAL_Delay(20);
 
 //加速度量程+/-4g
 ctrl = 0x08;
  MPU6000_IO_Write(&ctrl, MPU6000_RA_ACCEL_CONFIG, 1); 
  HAL_Delay(20);
 
  //配置中断模式,高电平有效。
 ctrl = 0x30;
  MPU6000_IO_Write(&ctrl, MPU6000_RA_INT_PIN_CFG, 1);
 HAL_Delay(20);
 
 //允许中断
 ctrl = 0x01;
  MPU6000_IO_Write(&ctrl, MPU6000_RA_INT_ENABLE, 1);  
  HAL_Delay(20);
}

读芯片的ID:  
  MPU6000_IO_Read(&tmp, MPU6000_WHO_AM_I_ADDR, 1); 返回tmp的值是0x68

进入中断后读取加速度测量值
  MPU6000_IO_Read(tmpbuffer,MPU6000_OUT_X_H_A,6);//读取加速度的原始值值0x3B到0x40,数据X,Y方向一直为零,z方向一直是0x0083

  for(i=0; i<3; i++)
    pnRawData=(int16_t)(((uint16_t)tmpbuffer[2*i] << 8) + tmpbuffer[2*i+1]);

printf("pnRawData[0]= 0x%04x pnRawData[1]= 0x%04x pnRawData[2]= 0x%04x \n\r",pnRawData[3],pnRawData[4],pnRawData[5]);

  MPU6000_IO_Read(tmpbuffer,MPU6000_OUT_X_H_M,6);//读取陀螺仪的原始值0x43到0x48,数据能随着板子变动而变动

  for(i=3; i<6; i++)
    pnRawData=(int16_t)(((uint16_t)tmpbuffer[2*i] << 8) + tmpbuffer[2*i+1]); 

printf("pnRawData[3]= 0x%04x pnRawData[4]= 0x%04x  pnRawData[5]= 0x%04x \n\r",pnRawData[3],pnRawData[4],pnRawData[5]);

最佳答案

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

回复【6楼】张晓斌: --------------------------------- 已经解决了,我的是SPI的时钟速度问题,MPU6000的SPI最大的速度是1Mhz。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

2

主题

6

帖子

0

精华

新手上路

积分
34
金钱
34
注册时间
2015-9-28
在线时间
0 小时
 楼主| 发表于 2015-10-16 16:20:34 | 显示全部楼层
回复【6楼】张晓斌:
---------------------------------
已经解决了,我的是SPI的时钟速度问题,MPU6000的SPI最大的速度是1Mhz。
回复

使用道具 举报

2

主题

6

帖子

0

精华

新手上路

积分
34
金钱
34
注册时间
2015-9-28
在线时间
0 小时
 楼主| 发表于 2015-10-16 16:42:45 | 显示全部楼层
有开发过类似芯片的(如MPU6050)的童鞋,还有各位大神。请帮忙看看呗。
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165371
金钱
165371
注册时间
2010-12-1
在线时间
2110 小时
发表于 2015-10-16 21:37:44 | 显示全部楼层
搞过6050,没搞过6000.不过我们都是用的IIC哦。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

2

主题

6

帖子

0

精华

新手上路

积分
34
金钱
34
注册时间
2015-9-28
在线时间
0 小时
 楼主| 发表于 2015-10-17 10:46:24 | 显示全部楼层
回复【3楼】正点原子:
---------------------------------
他们的初始化寄存器配置基本都一样吧。
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165371
金钱
165371
注册时间
2010-12-1
在线时间
2110 小时
发表于 2015-10-18 21:33:32 | 显示全部楼层
回复【4楼】huaxia0313:
---------------------------------
应该差不多
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

20

主题

120

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
230
金钱
230
注册时间
2015-6-4
在线时间
5 小时
发表于 2015-10-19 13:03:19 | 显示全部楼层
不知楼主的问题解决了吗?我也在弄MPU6000,一起交流啊!不知道6000的寄存器地址什么的和6050有区别吗?
回复

使用道具 举报

2

主题

6

帖子

0

精华

新手上路

积分
34
金钱
34
注册时间
2015-9-28
在线时间
0 小时
 楼主| 发表于 2015-10-31 15:39:47 | 显示全部楼层
回复【6楼】张晓斌:
---------------------------------
你用示波器抓抓时序吧,对比看时序。
回复

使用道具 举报

20

主题

120

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
230
金钱
230
注册时间
2015-6-4
在线时间
5 小时
发表于 2015-11-8 19:47:31 | 显示全部楼层
回复【8楼】huaxia0313:
---------------------------
我这边可以读ID 但是读出的六个轴的数据在静止时波动太大】
回复

使用道具 举报

9

主题

12

帖子

0

精华

初级会员

Rank: 2

积分
75
金钱
75
注册时间
2014-9-4
在线时间
7 小时
发表于 2016-7-15 11:52:43 | 显示全部楼层
张晓斌 发表于 2015-11-8 19:47
回复【8楼】huaxia0313:
---------------------------
我这边可以读ID&nbsp;但是读出的六个轴的数据在静止 ...

我读取mpu6000一直是FF。跪求源码752280300@qq.com
回复

使用道具 举报

1

主题

4

帖子

0

精华

初级会员

Rank: 2

积分
168
金钱
168
注册时间
2015-11-6
在线时间
32 小时
发表于 2016-8-26 15:27:57 | 显示全部楼层
楼主,您好!最近我在尝试MPU6500的SPI通讯,但是who am i不管怎样读出都是00,不知能不能向您索要一份您SPI调试MPU6500的源码?
回复

使用道具 举报

0

主题

5

帖子

0

精华

新手上路

积分
47
金钱
47
注册时间
2017-12-13
在线时间
11 小时
发表于 2023-2-9 19:28:11 | 显示全部楼层
huaxia0313 发表于 2015-10-16 16:20
回复【6楼】张晓斌:
---------------------------------
已经解决了,我的是SPI的时钟速度问题,MPU6000的SP ...

我按照您的代码,读取数据也是固定不变,spi时钟分频是128. 也不知道啥原因
回复

使用道具 举报

0

主题

5

帖子

0

精华

新手上路

积分
47
金钱
47
注册时间
2017-12-13
在线时间
11 小时
发表于 2023-2-10 17:09:58 | 显示全部楼层
张晓斌 发表于 2015-11-8 19:47
回复【8楼】huaxia0313:
---------------------------
我这边可以读ID&nbsp;但是读出的六个轴的数据在静止 ...

spi时钟分频128,spi读取的数据一直不变,不知道是啥原因?
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-2-24 20:35

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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