[其他ST产品] I2C主机卡在Busy位是什么原因导致的呢?

[复制链接]
553|10
 楼主| classroom 发表于 2025-6-21 16:30 | 显示全部楼层 |阅读模式
I2C主机卡在Busy位是什么原因导致的呢?
公羊子丹 发表于 2025-6-23 07:23 | 显示全部楼层
很可能是上次通信没正常结束,SCL或SDA被拉低了。
周半梅 发表于 2025-6-23 07:24 | 显示全部楼层
我遇到过一次是从机掉电,SDA一直被拉住,主机就卡Busy了。
帛灿灿 发表于 2025-6-23 07:25 | 显示全部楼层
用逻辑分析仪看一下电平,看看是不是总线真的被占住了。
童雨竹 发表于 2025-6-23 07:26 | 显示全部楼层
有时候中断退出太快也会导致I2C状态没清干净,Busy不掉。
万图 发表于 2025-6-23 07:27 | 显示全部楼层
可以手动拉高SCL模拟几个时钟,强行释放总线试试看。
Wordsworth 发表于 2025-6-23 07:28 | 显示全部楼层
有没有调用 HAL_I2C_DeInit() 后再 Init()?不然硬件状态恢复不了。
Bblythe 发表于 2025-6-23 07:29 | 显示全部楼层
我之前加了一个超时处理,检测Busy太久就软复位I2C外设。
Pulitzer 发表于 2025-6-23 07:29 | 显示全部楼层
看下是不是双主机冲突?另外一个主机也可能占着总线。
Uriah 发表于 2025-6-23 07:30 | 显示全部楼层
如果是STM32,有些芯片I2C外设确实容易卡死,需要RCC复位才能恢复。
Clyde011 发表于 2025-6-23 07:31 | 显示全部楼层
建议你每次通信前都检查一下 I2C_FLAG_BUSY,避免堵住主流程。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

548

主题

3464

帖子

2

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