题库分类:硬件设计适合经验:1—5年难度:中高级题型:场景排查题 + 信号完整性题
面试题
I²C总线原本通信正常,增加了一个从设备后偶尔出现NACK或数据错误,你会怎样排查?
面试官真正想考什么
面试官想看你是不是只会“加大上拉电阻”或“降速”这种表面操作。I²C总线电容超限是一个系统级问题,涉及总线寄生电容、上拉电阻、走线长度、从设备输入电容和通信速率之间的匹配关系,需要量化分析而不是猜测。
回答思路
第1步:确认总线总电容是否超出器件规格
I²C规范要求标准模式(100kHz)总线电容不超过400pF,快速模式(400kHz)同样不超过400pF,但高速模式(3.4MHz)要求更严格。总线总电容包括走线寄生电容、从设备输入电容和上拉电阻的寄生电容。你需要查每个从设备的输入电容规格,加上走线估算(约1—2pF/cm),看是否接近或超过400pF。
第2步:测量总线波形判断边沿速度
用示波器观察SCL和SDA的上升沿和下降沿。如果上升沿变缓(例如从几百纳秒劣化到几微秒),说明RC时间常数增大,很可能电容超标。边沿速度直接决定建立时间和保持时间是否满足要求。注意探头本身的电容(约10—15pF)也会让测量结果偏慢,测量时用小电容探头或对比加探头前后的波形差异。
第3步:检查上拉电阻是否匹配
上拉电阻越小,上升沿越快但功耗越大;越大则功耗小但边沿越慢。I²C规范要求VOL不超过0.4V时IOL至少3mA,由此可以算出上拉电阻最小值。同时,根据总线电容和上升时间要求可以算出上拉电阻最大值。如果当前上拉电阻超出这个窗口,就需要调整。注意:不同速率和不同电源电压下,最优上拉值不同,不能套用固定值。
第4步:尝试分段或加缓冲器降低等效电容
如果确认电容超标且上拉电阻已经调到极限,可以考虑用I²C总线缓冲器(如PCA9600、LTC4311等)将总线分段,降低每段的等效电容。缓冲器还能改善信号完整性和允许更长的总线距离。选择缓冲器时要注意它的传播延迟、输入电容和是否支持时钟延展等特性。
第5步:验证修改后通信稳定性
修改后做长时间通信测试,覆盖不同温度和供电条件,确认NACK率回到可接受范围。必要时抓一段时间的错误日志做统计,不能只测几次通过就认为修好了。

可直接使用的参考回答
我会先计算总线总电容——查每个从设备的输入电容、估算走线寄生电容,看是否接近400pF上限。然后用示波器看SCL和SDA的上升沿,确认是否明显变缓。如果电容确实超标,我会根据速率和VOL要求重新计算上拉电阻窗口,必要时加总线缓冲器分段降低等效电容。最后做长时间通信测试,覆盖温度和供电变化,验证稳定性。
面试官可能继续追问
400pF这个限制是硬性要求还是推荐值?
I²C规范对标准模式和快速模式定义了400pF的最大总线电容,超出后通信时序无法保证。为什么加了探头后波形更差?
探头本身有10—15pF输入电容,会进一步增大总线负载,测量时要考虑这个影响。上拉电阻太大会有什么问题?
上升沿变缓,可能不满足建立时间要求,导致通信错误;太小则功耗增大且VOL可能超标。总线缓冲器和普通GPIO隔离有什么区别?
I²C缓冲器专门设计用于保持I²C协议特性(时钟延展、ACK响应),普通GPIO隔离会破坏协议时序。
容易失分的表达
“把上拉电阻换成4.7kΩ就行了。”——没有分析电容、速率和VOL的关系,盲目套经验值。
“降速到10kHz肯定能解决。”——虽然能改善边沿,但没有定位根因,还影响系统性能。
“I²C随便接,电容不是问题。”——总线电容是I²C可靠性的核心约束之一。
面试前准备动作
准备一个I²C总线等效电容模型图,标出走线电容、器件输入电容和上拉寄生电容。
整理上拉电阻计算方法:最小值由VOL和IOL决定,最大值由上升时间和总线电容决定。
找一个总线电容超标导致通信不稳定的实际排查案例。
参考资料
NXP: I²C-bus specification and user manual (UM10204)
TI: Tips for I²C Bus Design (SLBA006)
核心关键词:I²C总线电容、上拉电阻计算、总线缓冲器、信号完整性、NACK排查、硬件调试

扫码关注





























