[STM32F0] I2C通信明明接线对,但偶尔主机挂死在BUSY

[复制链接]
141|10
Pulitzer 发表于 2025-10-17 07:19 | 显示全部楼层 |阅读模式
I2C读EEPROM时,偶发BUSY一直为1,重启才能恢复。用示波器看SCL和SDA都正常回到高电平。感觉像内部状态机卡死。
Clyde011 发表于 2025-10-17 07:20 | 显示全部楼层
F0的I2C确实有点“脾气”,我也被折腾过。
公羊子丹 发表于 2025-10-17 07:21 | 显示全部楼层
F0系列I2C偶尔会锁总线,我加了超时检测来恢复。
周半梅 发表于 2025-10-17 07:22 | 显示全部楼层
可以试试软件复位I2C模块的那种方法。
帛灿灿 发表于 2025-10-17 07:23 | 显示全部楼层
我遇过是EEPROM没及时释放总线导致的。
童雨竹 发表于 2025-10-17 07:24 | 显示全部楼层
你用的HAL库还是LL?HAL有时候处理不彻底。
万图 发表于 2025-10-17 07:29 | 显示全部楼层
SDA、SCL上拉阻值多少?太大也会拖慢释放。
Wordsworth 发表于 2025-10-17 07:30 | 显示全部楼层
在BUSY卡死时,读I2C_ISR看看具体状态位。
Bblythe 发表于 2025-10-17 07:31 | 显示全部楼层
加一个总线恢复函数,每次初始化前拉几下线。
 楼主| Pulitzer 发表于 2025-10-17 07:32 | 显示全部楼层
有的EEPROM在写入时会拉低SDA好几ms。
Uriah 发表于 2025-10-17 07:33 | 显示全部楼层
我后来改成用DMA传输后反而没再卡。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

172

主题

6198

帖子

0

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