[STM32F0] I2C偶尔ACK异常,设备像在“装死”

[复制链接]
183|10
Bblythe 发表于 2025-10-8 07:20 | 显示全部楼层 |阅读模式
I2C通信时,偶尔设备不回应ACK,逻辑分析仪看SCL和SDA正常。发几次Start都不行,要复位总线。设备端是EEPROM,用的400kHz。感觉像是总线被某次传输挂死了。
Clyde011 发表于 2025-10-8 07:25 | 显示全部楼层
我最后换成LL库自己写协议才彻底解决。
公羊子丹 发表于 2025-10-8 07:26 | 显示全部楼层
我也遇过,后来在I2C复位前多发几个Clock才救回来。
周半梅 发表于 2025-10-8 07:28 | 显示全部楼层
这就是传说中的I2C Bus stuck。
帛灿灿 发表于 2025-10-8 07:29 | 显示全部楼层
有时候EEPROM忙写时不回应ACK,要加延时。
童雨竹 发表于 2025-10-8 07:30 | 显示全部楼层
我在初始化前强制拉低SCL八次才稳定。
万图 发表于 2025-10-8 07:31 | 显示全部楼层
可能是噪声导致SDA在高电平被误判。
Wordsworth 发表于 2025-10-8 07:32 | 显示全部楼层
400kHz对线容性要求挺高,短一点试试。
 楼主| Bblythe 发表于 2025-10-8 07:33 | 显示全部楼层
用示波器看下是不是SDA波形拉不干净。
Pulitzer 发表于 2025-10-8 07:34 | 显示全部楼层
我印象里Cube的I2C驱动在这种情况会卡死在Busy状态。
Uriah 发表于 2025-10-8 07:35 | 显示全部楼层
试试加个软复位函数,在HAL层能清掉。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

166

主题

6125

帖子

1

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