搜索
bottom↓
回复: 27

MPU6000和MPU6500驱动移植

[复制链接]

出0入4汤圆

发表于 2015-5-23 22:46:49 | 显示全部楼层 |阅读模式
本帖最后由 yangpeng012 于 2015-5-24 16:34 编辑

请问各位大神:

        有知道MPU6000和MPU6500之间的主要差别在哪吗?还有两个器件的寄存器映射有区别吗?
        能给些MPU6000 SPI驱动 移植到MPU6500的提示吗?

        在MPU6500的寄存器手册里,开篇就有这样一句话:即MPU6500是可以兼容MPU6050的,而MPU6050和MPU6000的寄存器映射完全相同,哪位高手能指点一下,如何使用这种模式,以及如何实现驱动移植!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

发表于 2015-5-24 06:49:55 来自手机 | 显示全部楼层
6050没有SPI借口,只有IIC接口

出0入0汤圆

发表于 2015-5-24 13:09:20 | 显示全部楼层
中级会员 ID不保

出0入4汤圆

 楼主| 发表于 2015-5-24 16:18:14 | 显示全部楼层
596142041 发表于 2015-5-24 06:49
6050没有SPI借口,只有IIC接口

我都是用的SPI接口,我是MPU6000 -----> MPU6500,两个器件都有SPI接口的,就是引脚不太一样,
  还请玩过这两款芯片的高人提示一下!!

出0入4汤圆

 楼主| 发表于 2015-5-24 16:18:54 | 显示全部楼层
Puppey 发表于 2015-5-24 13:09
中级会员 ID不保

好吓人,难道我做错什么了!!

出0入4汤圆

 楼主| 发表于 2015-5-25 09:10:42 | 显示全部楼层
自己顶一下,

出0入0汤圆

发表于 2015-6-3 22:28:47 | 显示全部楼层

#define MPU6500_I2C_ADDR            ((u8)0xD0)
#define MPU6500_Device_ID           ((u8)0x71)  // In MPU9250

#define MPU6500_SELF_TEST_XG        ((u8)0x00)
#define MPU6500_SELF_TEST_YG        ((u8)0x01)
#define MPU6500_SELF_TEST_ZG        ((u8)0x02)
#define MPU6500_SELF_TEST_XA        ((u8)0x0D)
#define MPU6500_SELF_TEST_YA        ((u8)0x0E)
#define MPU6500_SELF_TEST_ZA        ((u8)0x0F)
#define MPU6500_XG_OFFSET_H         ((u8)0x13)
#define MPU6500_XG_OFFSET_L         ((u8)0x14)
#define MPU6500_YG_OFFSET_H         ((u8)0x15)
#define MPU6500_YG_OFFSET_L         ((u8)0x16)
#define MPU6500_ZG_OFFSET_H         ((u8)0x17)
#define MPU6500_ZG_OFFSET_L         ((u8)0x18)
#define MPU6500_SMPLRT_DIV          ((u8)0x19)
#define MPU6500_CONFIG              ((u8)0x1A)
#define MPU6500_GYRO_CONFIG         ((u8)0x1B)
#define MPU6500_ACCEL_CONFIG        ((u8)0x1C)
#define MPU6500_ACCEL_CONFIG_2      ((u8)0x1D)
#define MPU6500_LP_ACCEL_ODR        ((u8)0x1E)
#define MPU6500_MOT_THR             ((u8)0x1F)
#define MPU6500_FIFO_EN             ((u8)0x23)
#define MPU6500_I2C_MST_CTRL        ((u8)0x24)
#define MPU6500_I2C_SLV0_ADDR       ((u8)0x25)
#define MPU6500_I2C_SLV0_REG        ((u8)0x26)
#define MPU6500_I2C_SLV0_CTRL       ((u8)0x27)
#define MPU6500_I2C_SLV1_ADDR       ((u8)0x28)
#define MPU6500_I2C_SLV1_REG        ((u8)0x29)
#define MPU6500_I2C_SLV1_CTRL       ((u8)0x2A)
#define MPU6500_I2C_SLV2_ADDR       ((u8)0x2B)
#define MPU6500_I2C_SLV2_REG        ((u8)0x2C)
#define MPU6500_I2C_SLV2_CTRL       ((u8)0x2D)
#define MPU6500_I2C_SLV3_ADDR       ((u8)0x2E)
#define MPU6500_I2C_SLV3_REG        ((u8)0x2F)
#define MPU6500_I2C_SLV3_CTRL       ((u8)0x30)
#define MPU6500_I2C_SLV4_ADDR       ((u8)0x31)
#define MPU6500_I2C_SLV4_REG        ((u8)0x32)
#define MPU6500_I2C_SLV4_DO         ((u8)0x33)
#define MPU6500_I2C_SLV4_CTRL       ((u8)0x34)
#define MPU6500_I2C_SLV4_DI         ((u8)0x35)
#define MPU6500_I2C_MST_STATUS      ((u8)0x36)
#define MPU6500_INT_PIN_CFG         ((u8)0x37)
#define MPU6500_INT_ENABLE          ((u8)0x38)
#define MPU6500_INT_STATUS          ((u8)0x3A)
#define MPU6500_ACCEL_XOUT_H        ((u8)0x3B)
#define MPU6500_ACCEL_XOUT_L        ((u8)0x3C)
#define MPU6500_ACCEL_YOUT_H        ((u8)0x3D)
#define MPU6500_ACCEL_YOUT_L        ((u8)0x3E)
#define MPU6500_ACCEL_ZOUT_H        ((u8)0x3F)
#define MPU6500_ACCEL_ZOUT_L        ((u8)0x40)
#define MPU6500_TEMP_OUT_H          ((u8)0x41)
#define MPU6500_TEMP_OUT_L          ((u8)0x42)
#define MPU6500_GYRO_XOUT_H         ((u8)0x43)
#define MPU6500_GYRO_XOUT_L         ((u8)0x44)
#define MPU6500_GYRO_YOUT_H         ((u8)0x45)
#define MPU6500_GYRO_YOUT_L         ((u8)0x46)
#define MPU6500_GYRO_ZOUT_H         ((u8)0x47)
#define MPU6500_GYRO_ZOUT_L         ((u8)0x48)
#define MPU6500_EXT_SENS_DATA_00    ((u8)0x49)
#define MPU6500_EXT_SENS_DATA_01    ((u8)0x4A)
#define MPU6500_EXT_SENS_DATA_02    ((u8)0x4B)
#define MPU6500_EXT_SENS_DATA_03    ((u8)0x4C)
#define MPU6500_EXT_SENS_DATA_04    ((u8)0x4D)
#define MPU6500_EXT_SENS_DATA_05    ((u8)0x4E)
#define MPU6500_EXT_SENS_DATA_06    ((u8)0x4F)
#define MPU6500_EXT_SENS_DATA_07    ((u8)0x50)
#define MPU6500_EXT_SENS_DATA_08    ((u8)0x51)
#define MPU6500_EXT_SENS_DATA_09    ((u8)0x52)
#define MPU6500_EXT_SENS_DATA_10    ((u8)0x53)
#define MPU6500_EXT_SENS_DATA_11    ((u8)0x54)
#define MPU6500_EXT_SENS_DATA_12    ((u8)0x55)
#define MPU6500_EXT_SENS_DATA_13    ((u8)0x56)
#define MPU6500_EXT_SENS_DATA_14    ((u8)0x57)
#define MPU6500_EXT_SENS_DATA_15    ((u8)0x58)
#define MPU6500_EXT_SENS_DATA_16    ((u8)0x59)
#define MPU6500_EXT_SENS_DATA_17    ((u8)0x5A)
#define MPU6500_EXT_SENS_DATA_18    ((u8)0x5B)
#define MPU6500_EXT_SENS_DATA_19    ((u8)0x5C)
#define MPU6500_EXT_SENS_DATA_20    ((u8)0x5D)
#define MPU6500_EXT_SENS_DATA_21    ((u8)0x5E)
#define MPU6500_EXT_SENS_DATA_22    ((u8)0x5F)
#define MPU6500_EXT_SENS_DATA_23    ((u8)0x60)
#define MPU6500_I2C_SLV0_DO         ((u8)0x63)
#define MPU6500_I2C_SLV1_DO         ((u8)0x64)
#define MPU6500_I2C_SLV2_DO         ((u8)0x65)
#define MPU6500_I2C_SLV3_DO         ((u8)0x66)
#define MPU6500_I2C_MST_DELAY_CTRL  ((u8)0x67)
#define MPU6500_SIGNAL_PATH_RESET   ((u8)0x68)
#define MPU6500_MOT_DETECT_CTRL     ((u8)0x69)
#define MPU6500_USER_CTRL           ((u8)0x6A)
#define MPU6500_PWR_MGMT_1          ((u8)0x6B)
#define MPU6500_PWR_MGMT_2          ((u8)0x6C)
#define MPU6500_FIFO_COUNTH         ((u8)0x72)
#define MPU6500_FIFO_COUNTL         ((u8)0x73)
#define MPU6500_FIFO_R_W            ((u8)0x74)
#define MPU6500_WHO_AM_I            ((u8)0x75)        // ID = 0x71 In MPU9250
#define MPU6500_XA_OFFSET_H         ((u8)0x77)
#define MPU6500_XA_OFFSET_L         ((u8)0x78)
#define MPU6500_YA_OFFSET_H         ((u8)0x7A)
#define MPU6500_YA_OFFSET_L         ((u8)0x7B)
#define MPU6500_ZA_OFFSET_H         ((u8)0x7D)
#define MPU6500_ZA_OFFSET_L         ((u8)0x7E)

/* ---- AK8963 Reg In MPU9250 ----------------------------------------------- */

#define AK8963_I2C_ADDR             ((u8)0x0c)//by Jing 0x18
#define AK8963_Device_ID            ((u8)0x48)

// Read-only Reg
#define AK8963_WIA                  ((u8)0x00)
#define AK8963_INFO                 ((u8)0x01)
#define AK8963_ST1                  ((u8)0x02)
#define AK8963_HXL                  ((u8)0x03)
#define AK8963_HXH                  ((u8)0x04)
#define AK8963_HYL                  ((u8)0x05)
#define AK8963_HYH                  ((u8)0x06)
#define AK8963_HZL                  ((u8)0x07)
#define AK8963_HZH                  ((u8)0x08)
#define AK8963_ST2                  ((u8)0x09)
// Write/Read Reg
#define AK8963_CNTL1                ((u8)0x0A)
#define AK8963_CNTL2                ((u8)0x0B)
#define AK8963_ASTC                 ((u8)0x0C)
#define AK8963_TS1                  ((u8)0x0D)
#define AK8963_TS2                  ((u8)0x0E)
#define AK8963_I2CDIS               ((u8)0x0F)
// Read-only Reg ( ROM )
#define AK8963_ASAX                 ((u8)0x10)
#define AK8963_ASAY                 ((u8)0x11)
#define AK8963_ASAZ                 ((u8)0x12)

你可以比较下?有没6050的定义,你看下对比,最好能弄成一样的格式

出0入4汤圆

 楼主| 发表于 2015-6-5 09:15:04 | 显示全部楼层
Timingtime 发表于 2015-6-3 22:28
#define MPU6500_I2C_ADDR            ((u8)0xD0)
#define MPU6500_Device_ID           ((u8)0x71)  // I ...

我是用SPI总线读写的!现在问题解决了,他的0x0C寄存器读回来就是0x00,不知道为什么!

出0入0汤圆

发表于 2015-8-24 21:07:33 | 显示全部楼层
yangpeng012 发表于 2015-5-24 16:18
我都是用的SPI接口,我是MPU6000 -----> MPU6500,两个器件都有SPI接口的,就是引脚不太一样,
  还请玩 ...

请问一下MPU6000和MPU6500之间的主要差别是?

出0入4汤圆

 楼主| 发表于 2015-8-24 21:12:27 | 显示全部楼层
怪侠封沉 发表于 2015-8-24 21:07
请问一下MPU6000和MPU6500之间的主要差别是?

基本一样,whoami内容不同

出0入0汤圆

发表于 2015-8-25 11:13:18 | 显示全部楼层
yangpeng012 发表于 2015-8-24 21:12
基本一样,whoami内容不同

这么说的话,以后应该是会优先选择6500的,因为要更廉价且封装更小。

出0入0汤圆

发表于 2015-9-14 12:58:47 | 显示全部楼层
yangpeng012 发表于 2015-8-24 21:12
基本一样,whoami内容不同

6500噪声略大

出0入0汤圆

发表于 2015-9-15 06:59:33 | 显示全部楼层
MPU6500,MPU9150都可以选的

出0入4汤圆

 楼主| 发表于 2015-9-15 21:19:04 | 显示全部楼层

实测得出来的吗?能把曲线分享一下不?

出0入0汤圆

发表于 2015-9-16 08:25:27 | 显示全部楼层
yangpeng012 发表于 2015-9-15 21:19
实测得出来的吗?能把曲线分享一下不?

手册上有写,对比下噪声那块就能够看到了,过几天板子到了测试看看。

出0入0汤圆

发表于 2015-10-31 09:56:23 来自手机 | 显示全部楼层
6050比6000便宜吧,不知道现在停产了吗

出0入0汤圆

发表于 2016-5-30 20:45:48 | 显示全部楼层
遇到相同问题,谢谢各位。

出0入0汤圆

发表于 2016-5-30 21:12:24 | 显示全部楼层
两个寄存器访问上是非常类似的。
除了 spi 的外设差别,主要区别是在工艺上,6050 用的是老一套的工艺,
个头大些噪音小些。6500 系列是用的比较新的工艺,我隐约记得是说
三个轴都用了统一的 mems 结构来测,所以使用的晶圆面积更小。
主要是减少了体积和成本,噪音要大些。

出0入0汤圆

发表于 2016-5-31 11:21:21 | 显示全部楼层
还有一些寄存器的不太一样,比如低通滤波?

出0入17汤圆

发表于 2017-2-16 17:43:14 | 显示全部楼层
请您发布下您的驱动程序吧,也打算用用这两款芯片,对比下。谢谢

出0入4汤圆

 楼主| 发表于 2017-2-21 19:58:09 | 显示全部楼层
HZKJ 发表于 2017-2-16 17:43
请您发布下您的驱动程序吧,也打算用用这两款芯片,对比下。谢谢

你去参考PX4的驱动库吧!里面都有的

出0入17汤圆

发表于 2017-2-22 09:33:55 | 显示全部楼层
谢谢                                                                                       

出0入0汤圆

发表于 2017-7-21 09:01:55 | 显示全部楼层
请问楼主,你的SPI通讯速率能达多少?

出0入4汤圆

 楼主| 发表于 2017-7-31 15:23:38 | 显示全部楼层
eva_yang 发表于 2017-7-21 09:01
请问楼主,你的SPI通讯速率能达多少?

配置成10Mhz  <====> 但实际只有5.25Mhz

出0入0汤圆

发表于 2017-7-31 23:02:07 | 显示全部楼层
噢,了解。谢谢。我的是物料错了,高速不行

出0入0汤圆

发表于 2018-4-16 15:50:20 | 显示全部楼层
最近也要搞6500了

出0入0汤圆

发表于 2018-5-23 10:30:22 | 显示全部楼层

6500都不推荐使用了,还用!

出0入0汤圆

发表于 2018-5-23 11:21:16 | 显示全部楼层
ljh407055315 发表于 2018-5-23 10:30
6500都不推荐使用了,还用!

6050的Gyro Rate Noise是6500的一半,但說實話實用上沒有差到那麼大。如果做純陀螺姿態估ˋ測,用經典Runge-Kutta積分結果是差不多的。
另外ICM-20608-G 、6000、6050、6500官方都不推薦使用了,不過也別緊張,我自己是用6500的,官方那邊就有推薦用ICM-20689直接取代。
而且市面上流通的MPU6500,問過元件商還非常充足,至少舊設計這3、5年沒有問題。新設計就用ICM-20689。

可以比較一下,可以pin 2 pin的,或是有強迫症的小修一下電路板。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-20 03:13

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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