classroom 发表于 2025-6-21 19:30

复位I2C外设后能不能恢复?

复位I2C外设后能不能恢复?

公羊子丹 发表于 2025-6-23 07:23

我试过,可以恢复,但要重新初始化一下I2C,不然寄存器是空的。

周半梅 发表于 2025-6-23 07:24

RCC复位后得加上 HAL_I2C_DeInit() 再 HAL_I2C_Init(),否则状态乱了。

帛灿灿 发表于 2025-6-23 07:25

可以恢复,但有时候需要延时一小段时间才行,不然总线卡死。

童雨竹 发表于 2025-6-23 07:26

看你是软复位还是硬件强制复位,软复位一般都能稳妥恢复。

万图 发表于 2025-6-23 07:27

要注意复位前要关中断,否则可能出现中断进来了状态乱掉。

Wordsworth 发表于 2025-6-23 07:28

STM的I2C外设有点“娇气”,有时候还得拉高SCL恢复总线。

Bblythe 发表于 2025-6-23 07:28

我在I2C异常处理中也会用RCC复位的方式,能救回来。

Pulitzer 发表于 2025-6-23 07:29

建议复位后检测一下 I2C_FLAG_BUSY,确认总线空闲再初始化。

Uriah 发表于 2025-6-23 07:30

你可以看 __HAL_RCC_I2C1_FORCE_RESET() 和 RELEASE_RESET() 的用法,官方库支持。

Clyde011 发表于 2025-6-23 07:31

实在不行就手动模拟I2C释放总线,我以前调试EEPROM时这么搞的。
页: [1]
查看完整版本: 复位I2C外设后能不能恢复?