[STM32G0] 程序长时间运行后I2C通信卡死,复位才能恢复

[复制链接]
85|10
童雨竹 发表于 2025-11-3 07:39 | 显示全部楼层 |阅读模式
连续运行几个小时后,I2C通信突然卡住,SCL保持低电平。外设不响应,只有复位才能恢复。试过加超时重启I2C,但还是有概率挂。怀疑状态机死锁或时序漂。
Clyde011 发表于 2025-11-3 07:43 | 显示全部楼层
试试在卡死前打印状态寄存器,也许能定位。
公羊子丹 发表于 2025-11-3 07:45 | 显示全部楼层
I2C这毛病挺常见,可能是从设备没释放SCL。
周半梅 发表于 2025-11-3 07:45 | 显示全部楼层
加个总线复位逻辑吧,我之前在初始化阶段就处理这个问题了。
帛灿灿 发表于 2025-11-3 07:46 | 显示全部楼层
G0系列I2C控制器有个BUG,某些版本要打补丁。
 楼主| 童雨竹 发表于 2025-11-3 07:48 | 显示全部楼层
可以在检测到BUSY太久时,手动切GPIO释放线。
万图 发表于 2025-11-3 07:49 | 显示全部楼层
你看下是不是在DMA模式下发生的,我的情况就是这样。
Wordsworth 发表于 2025-11-3 07:49 | 显示全部楼层
这多半不是主机问题,从设备时序跑偏了。
Bblythe 发表于 2025-11-3 07:51 | 显示全部楼层
建议开开SCL捕获,看波形是否真被拉低不放。
Pulitzer 发表于 2025-11-3 07:52 | 显示全部楼层
我有台设备就是因为拉电容太大导致的。
Uriah 发表于 2025-11-3 07:53 | 显示全部楼层
也有可能是低功耗切换过程中丢时序。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

194

主题

6510

帖子

2

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