Pulitzer 发表于 2025-10-17 07:19

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

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传输后反而没再卡。

zhuotuzi 发表于 2025-10-27 15:08

SDA、SCL上拉阻值太大也会拖慢释放

kmnqhaha 发表于 2025-10-27 23:28

多数 MCU 的 I2C 外设支持软件复位
页: [1]
查看完整版本: I2C通信明明接线对,但偶尔主机挂死在BUSY