先说下遇到的问题,自己焊接的MPU6050,烧录程序后初始化失败(程序没问题,在买来的MPU6050模块上测试过)。
检查PCB和Schematic没问题,电压表测试各个引脚电压,发现C2(2200pF)电容(CPOUT引脚)输出几乎为零。重新改程序,发现I2C读不出任何数据,故猜测大概率是芯片的问题(PS:我是用电烙铁焊接的,外表看上去没问题,实际不好说)。
几天后购入热风枪,拆掉芯片重新焊接,烧录程序后依旧初始化失败,测量各引脚电压均无误(CPOUT输出25V),尝试n多方法至深夜,突然采集到了数据,开心去睡觉。
第二天想着继续写程序,上电后发现又初始化失败。。又尝试几次,10次大概有2次成功。串口打印初始化失败位置,发现是自检没过,接着找源码,打印st_shift_var值,有时偏差高到30%(上电时芯片静止,正面或反面朝上),影响MPU6050准确性(后尝试购买的模块,偏差大概3%)。继续找上电时芯片朝向的位置,有几个位置时可以初始化成功,成功率大概20%,找到问题所在,芯片出了问题。仔细回忆下,焊接时用镊子夹芯片时没夹稳,用力一捏芯片飞了出去,资料说MPU6050芯片内部含有机械结构,大概率摔坏了。重新购买芯片。
几天后,小心焊接新的芯片,烧录上电,芯片任意朝向(需要保持静止),均可初始化成功,问题解决(浪费好几天时间)。
总结:
- 有条件或没手法的用热风枪或焊台焊接MPU6050。
- MPU6050不能磕碰。
- 买MPU6050的时候多买几片。