[STM32G0] I2C偶尔被卡死在BUSY状态,软复位也解不了

[复制链接]
120|10
童雨竹 发表于 2025-10-11 07:18 | 显示全部楼层 |阅读模式
调传感器时遇到I2C挂死BUSY问题,SDA一直被拉低。只有掉电才好。软复位、重新初始化都不行。怀疑某种异常停止状态,想知道大家一般怎么处理这种死锁?
Clyde011 发表于 2025-10-11 07:23 | 显示全部楼层
我遇到一次是线太长,加个buffer后好了。
公羊子丹 发表于 2025-10-11 07:24 | 显示全部楼层
这个老问题了,我一般手动发几个SCL脉冲放总线。
周半梅 发表于 2025-10-11 07:25 | 显示全部楼层
你是不是用了多个I2C设备?有的会抢线。
帛灿灿 发表于 2025-10-11 07:26 | 显示全部楼层
有时候是上拉电阻太大,信号拉不起来。
 楼主| 童雨竹 发表于 2025-10-11 07:27 | 显示全部楼层
Cube的HAL库有个恢复函数,可以参考。
万图 发表于 2025-10-11 07:29 | 显示全部楼层
我之前改过驱动,用GPIO模拟时序解锁。
Wordsworth 发表于 2025-10-11 07:30 | 显示全部楼层
BUSY状态一般是硬件检测没清干净。
Bblythe 发表于 2025-10-11 07:31 | 显示全部楼层
试试在初始化前先关时钟再开。
Pulitzer 发表于 2025-10-11 07:32 | 显示全部楼层
SDA卡低多半是从设备没释放。
Uriah 发表于 2025-10-11 07:33 | 显示全部楼层
你用逻辑分析仪看下哪个时刻出问题。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

178

主题

6294

帖子

2

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