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

I2C主机卡在Busy位是什么原因导致的呢?

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,避免堵住主流程。
页: [1]
查看完整版本: I2C主机卡在Busy位是什么原因导致的呢?