MPU6500模块调试笔记——小心冒牌货

本人最近做项目需要用到MPU6500,在淘宝购买了一块MPU6500模块后开始调试,整了半天发现无论如何也读不出模块的数据,耐着性子一步一步调试后发现遇到了个冒牌的6500。。。

MPU6500模块调试笔记——小心冒牌货_第1张图片模块硬件如图:使用的是MPU6500,使用STM32F7对模块进行读取,读取程序使用的是原子哥的MPU9250例程(内部集成MPU6500六轴传感器和AK8963三轴磁力计,两个共用一个IIC接口)。该程序读取加速度计及陀螺仪数据后通过串口向上位机进行发送。

软硬件均准备完成后开始调试,发现串口始终无法收到数据,最后将程序错误定位到MPU9250初始化模块失败,改初始化函数下ID判断语句始终错误。

if(res==MPU6500_ID1||res==MPU6500_ID2) 				//判断ID是否正确

MPU6500的ID参照手册应该是0x68,如下图所示:MPU6500模块调试笔记——小心冒牌货_第2张图片

但是单步执行后发现返回的芯片ID始终是0x78,这就让人莫名其妙了,特定芯片的ID理论上是不会随意更改的。接来下就指向最后一种情况:芯片本身有问题。

抱着试试看的态度仔细看了下芯片,发现芯片的丝印上是M681字样,百度一下,发现MPU6880芯片ID是0X78

MPU6500模块调试笔记——小心冒牌货_第3张图片

将判断语句中MPU6500的ID改为0X78时,即可正常去取数据。具体型号差别带来的性能差异有待进一步研究及测试,不过查出来这个问题着实让人费了一会脑筋,采购时还是尽可能买正规正品的比较好,省去了很多不必要的麻烦。

你可能感兴趣的:(硬件调试笔记)