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

[复制链接]
103|10
帛灿灿 发表于 2025-10-5 07:15 | 显示全部楼层 |阅读模式
我在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系列,可能内部有延迟处理时间。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

166

主题

6196

帖子

0

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