技术热线: 4007-888-234
设计开发

专注差异化嵌入式产品解决方案 给智能产品定制注入灵魂给予生命

开发工具

提供开发工具、应用测试 完善的开发代码案例库分享

技术支持

从全面的产品导入到强大技术支援服务 全程贴心伴随服务,创造无限潜能!

新品推广

提供新的芯片及解决方案,提升客户产品竞争力

新闻中心

提供最新的单片机资讯,行业消息以及公司新闻动态

单片机I2C常见问题:无应答与总线死锁

更新时间: 2026-03-25
阅读量:18

在单片机开发中,I2C从机无应答(NACK)和总线死锁是两种常见也令人头疼的问题。它们通常指向硬件连接、时序、电源或逻辑流程上的缺陷。I2C从机无应答(NACK)和总线死锁是开发中的高频问题,多由硬件、时序、电源或逻辑异常导致。

单片机I2C常见的无应答与总线死锁问题


一、I2C 从机无应答(NACK)

主机发送地址/数据后,第 9 个时钟周期 SDA 未被从机拉低,读到高电平即为无应答。

(1)从机地址问题

地址配置错误,与手册不符;
多从机地址冲突。

(2)硬件与电源问题

SDA/SCL 虚焊、断路;
缺少 1.5k~10k 上拉电阻,总线无法拉高;
主机与从机电平不兼容;
从机未上电、供电不稳或处于复位状态。

(3)时序与速率问题

主机通信速率超出从机支持范围;
总线电容大、上拉偏大导致信号上升沿过缓;
主机不支持或超时设置过短,无法适配从机时钟拉伸。

(4)从机状态异常

从机忙(如 EEPROM 擦写)无法响应;
寄存器地址非法、上次通信未正常结束,状态机异常。

二、总线死锁

表现为 SDA 持续被拉低(或 SCL 被锁死),通信无法启动。

(1)从机异常复位

通信中途从机因看门狗、电源抖动复位,若复位时 SDA 正被拉低,引脚可能被配置为推挽低电平,导致总线卡死。

(2)主机异常

通信中主机复位 / 断电,引脚电平突变,与从机状态机不同步。

(3)软件逻辑问题

无超时保护,死循环等待响应导致程序卡死;
软件模拟 I2C 时序不规范,使从机状态机异常。

三、排查与修复

(1)硬件排查:用示波器观测 SCL/SDA 波形,检查高低电平、边沿陡峭度及从机供电稳定性。

(2)死锁解锁

软件恢复:主机将 SCL 设为 GPIO,手动输出 9~12 个时钟脉冲,释放 SDA;
硬件恢复:整机断电重启。

(3)软件优化:增加通信超时机制;异常时复位 I2C 外设、发送 STOP 或时钟脉冲复位总线;严格遵守 START/STOP 时序。

(4)电源优化:电源引脚加滤波电容,避免电压跌落导致从机复位。

以上就是英锐恩单片机开发工程师分享的I2C常见的无应答与总线死锁问题。英锐恩专注单片机应用方案设计与开发,提供8位单片机、32位单片机。