帛灿灿 发表于 2025-10-5 07:15

I2C偶尔无法应答,SCL拉低时间变长

我在I2C总线上接了一个EEPROM和一个温湿度传感器,主机偶尔会发现设备不应答,逻辑分析仪看到SCL拉低时间变长。怀疑是I2C时序受干扰或者软件复位没及时释放。

Clyde011 发表于 2025-10-5 07:20

我试过加延时2ms再发下一帧,问题就消失了。

公羊子丹 发表于 2025-10-5 07:21

你是开了中断模式还是轮询?中断模式下优先级乱了容易堵总线。

周半梅 发表于 2025-10-5 07:22

SCL拉低太久可能是从设备在等待内部写周期结束。

帛灿灿 发表于 2025-10-5 07:23

你可以加个超时机制,如果I2C_BUSY太久就强制重启外设。

童雨竹 发表于 2025-10-5 07:24

我之前碰到是因为上拉电阻太大,波形恢复太慢。

万图 发表于 2025-10-5 07:25

EEPROM在写页数据时会锁总线几毫秒,这是正常现象。

Wordsworth 发表于 2025-10-5 07:26

试试在每次通信前检测BUSY标志再发起启动。

Bblythe 发表于 2025-10-5 07:27

我觉得也可能是GPIO口模式没切回开漏,导致释放不及时。

Pulitzer 发表于 2025-10-5 07:27

你抓波形时注意看ACK位,是哪一位开始不对的。

Uriah 发表于 2025-10-5 07:28

如果温湿度传感器是SHT系列,可能内部有延迟处理时间。
页: [1]
查看完整版本: I2C偶尔无法应答,SCL拉低时间变长