• 正文
    • 1、事情的起因
    • 2、转机
    • 3、解决方案
  • 相关推荐
申请入驻 产业图谱

MPU6050芯片设备ID不匹配~是假货还是另有乾坤?

01/22 08:34
4341
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

1、事情的起因

这段时间一直在忙活自己的毕设,由于毕设里面要用到MPU6050当作姿态传感器,因此在淘宝上买了一批MPU6050自己来焊接。

但是当我写代码的时候,使用的时候出现了一个很大的问题。

设备的ID读取并没有问题,由于使用的是硬件I2C,这里发现读到的设备ID是0x98,然后因此并没有进入初始化阶段。

说实话这就遇到了非常头疼的问题就是能通讯,但是读出来的东西不对。如果通讯出了问题,那么功夫就要可以花在检查电路等硬件问题上。但是如果是读出来的内容有问题,那么就很头疼了。

后来查询资料过程中发现,这个问题在国内外技术论坛中出现过很多次,并且MPU6050的模块层次不齐,甚至有20个模块中将近一般出现设备ID是0x98的情况。

而大部分人认为,这是假的MPU6050(Fake chip)几乎所有的解决方法都是:换一个模块。

但是由于博主回家没带热风枪,并且说实话QFN的封装确实恶心,还是想着能不能找到解决办法。

2、转机

把这件事情定义为黑心商家用其他芯片来替代MPU6050的话,那么解决办法就是搞清楚这块芯片到底是哪块芯片。

要确定具体是哪块芯片的话,其实范围还比较小,首先是和MPU6050 是 pin to pin兼容的,并且连设备地址就是一样的,且设备ID是0x98的芯片。

然后看到了一块这个芯片,ICM-20689,它的器件地址和寄存器地址几乎和MPU6050一模一样,封装也完全相同,而且居然是MPU6050原厂设计的芯片。

并且原本MPU6050的设备识别码寄存器的地址是0x75,存放的值是0x68。

而ICM-20689的0x75寄存器也是设备识别码,但是存放的值是0x98.

这段话的描述和MPU6050几乎是一样的,甚至仔细查看芯片手册,ICM-20689的性能不输MPU6050甚至超过MPU6050,并且支持SPI传输,而不像MPU6050仅支持I2C, 像是MPU6000+MPU6050的融合版。

3、解决方案

由于寄存器地址和内容完全相同,因此实际上ICM-20689和MPU6050的用法完全相同。

这件事情可能就是一个较大的乌龙,甚至芯片商家可能都没有搞清楚ICM-20689和MPU6050的区别,将MPU6050和ICM-20689混为一谈(其实我认为也可以)。

而在我们使用的过程中也是因为代码中有检查设备识别码这个步骤,而如果去掉这个步骤,那么也不会发生这个问题。

互联网中搜到的关于这个问题,很多的解决办法都是换一个模块。

在ID检查中添加ICM20689的设备ID即可正常使用。因此,这是块假的MPU6050嘛?或许是,但是我认为更像是一场乌龙~

点赞
收藏
评论
分享
加入交流群
举报

相关推荐

登录即可解锁
  • 海量技术文章
  • 设计资源下载
  • 产业链客户资源
  • 写文章/发需求
立即登录