[STM32F3] I2C读写偶尔卡死在Busy状态,复位才能恢复

[复制链接]
143|10
Wordsworth 发表于 2025-11-7 07:20 | 显示全部楼层 |阅读模式
有时候I2C总线突然卡死,BUSY一直为1。软复位I2C外设没用,只能重启MCU。用逻辑分析仪看SDA一直被拉低,不知道是主机状态机乱了还是线被挂死。
Clyde011 发表于 2025-11-7 07:24 | 显示全部楼层
有空自己写个bit-bang I2C,能规避不少坑。
公羊子丹 发表于 2025-11-7 07:25 | 显示全部楼层
这个太经典了,多半是从机没释放SDA。
周半梅 发表于 2025-11-7 07:26 | 显示全部楼层
我每次都得在初始化前手动发9个时钟。
帛灿灿 发表于 2025-11-7 07:27 | 显示全部楼层
HAL库的I2C_Reset太温柔,干不掉这种情况。
童雨竹 发表于 2025-11-7 07:28 | 显示全部楼层
可以试试直接手动切GPIO清总线。
万图 发表于 2025-11-7 07:29 | 显示全部楼层
我也在F3踩过这个坑,尤其老旧传感器容易这样。
 楼主| Wordsworth 发表于 2025-11-7 07:30 | 显示全部楼层
有些设备掉电后会留低SDA,要延时再上电。
Bblythe 发表于 2025-11-7 07:31 | 显示全部楼层
建议加上watchdog防止死锁。
Pulitzer 发表于 2025-11-7 07:32 | 显示全部楼层
逻辑分析仪看ACK响应能否恢复?
Uriah 发表于 2025-11-7 07:33 | 显示全部楼层
换条短线看看,有时候是干扰。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

193

主题

6500

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部