STM32和MPU6050的I2C通信失效原因分析

2019-12-08 14:36发布

本帖最后由 JYJT 于 2019-12-6 18:13 编辑

想用硬件I2C实现数据读取。试了试AT24系列读写没有问题。MPU6050就有问题了。我看主要区别如下图:
mpu6050cut.png (6.44 KB, 下载次数: 0) 下载附件 前天 16:54 上传
主要是里面repeat start(RA) ,AT24系列eeprom不需要,但是mpu6050等一系列陀螺仪和磁力计,都需要这个repeat start。使用HAL库的人,我已经不知道从哪儿入手解决~

这里坛友ddplys指出RA是register address。确实如此。我用的QMC5883,和LSM6DS,比较偏门。但是时序差不多。MPU6050的手册我看得不够仔细。这里的repeat start是第二S。坛友阿豪博士指出焊接可能有问题。存在这种可能,芯片焊脚焊接后不可见。然后使用了焊锡膏和热风枪,首次焊接时间很长,没有掌握焊锡膏用量,可能虚焊,也可能器件受热时间长,导致损坏。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
8条回答
JYJT
1楼-- · 2019-12-09 11:00
HAL_I2C_Mem_Write/Read这两个函数操作AT24测试ok。重新焊了一遍六轴,HAL_I2C_Mem_Read还是不OK,但是HAL_I2C_IsDeviceReady有效,说明总线通了,焊接没问题。难道要LL库来操作,或者对HAL一顿魔改~
spcm
2楼-- · 2019-12-09 14:17
我最近遇到的问题是MPU6050超声波洗板洗坏了(5块坏了4块),能读到ID是正确的,就是加速度什么的都为0。同样超声波洗板的ICM20689就没事。用的LL库,GPIO模拟I2C。

一周热门 更多>