[其他ST产品] 复位I2C外设后能不能恢复?

[复制链接]
534|10
 楼主| classroom 发表于 2025-6-21 19:30 | 显示全部楼层 |阅读模式
[backcolor=rgba(255, 255, 255, 0.9)]复位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时这么搞的。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

548

主题

3464

帖子

2

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