ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

I2C通信故障排查全攻略:万用表、示波器与逻辑分析仪实战

2026/9/25 2:04:11 拓冰建站 浏览量
I2C通信故障排查全攻略:万用表、示波器与逻辑分析仪实战 1. I2C 信号排查的整体思路与工具选型I2C 总线只有两根线SDA 和 SCL看起来简单得不行但真正在板子上调不通的时候很多人第一反应是“换一根线试试”或者“换个上拉电阻”结果折腾半天还是没波形。我做了十多年硬件调试踩过最多的坑就是没有分层排查直接上示波器看波形结果连基本供电和上拉都没确认。所以这一节先把整体思路理清楚再讲工具怎么选。1.1 为什么 I2C 排查必须分层进行I2C 通信失败的原因可以分成四层物理层、电气层、协议层、应用层。物理层就是线有没有接对、有没有虚焊、SDA/SCL 有没有接反电气层是上拉电阻是否合适、电源是否正常、电平是否匹配协议层是起始条件、地址、ACK、数据帧格式对不对应用层才是寄存器配置、时序参数、从机状态机的问题。如果你一上来就用示波器抓波形看到 SCL 有脉冲就以为没问题但实际上可能是上拉电阻太大导致上升沿太缓从机根本识别不到高电平。我见过一个案例某工程师用 10k 上拉在 400kHz 速率下跑示波器看波形“像那么回事”但从机就是不应答换成 2.2k 立刻通了。原因就是10k 上拉在 400kHz 下上升时间超过了 I2C 规范允许的最大值。所以分层排查的逻辑是先确认物理连接和供电再用万用表测静态电平然后用示波器看动态波形最后用逻辑分析仪解码协议。每一步都有明确的通过标准不通过就不要往下走。1.2 万用表、示波器、逻辑分析仪各自能解决什么问题很多人手里只有万用表觉得测不了 I2C。其实万用表在 I2C 排查里作用很大只是很多人不会用。万用表能测的是静态参数SDA 和 SCL 对地电压、上拉电阻阻值、线路通断、电源电压。这些看起来简单但 80% 的“I2C 不通”问题都出在这里。示波器解决的是动态波形问题上升沿时间、下降沿时间、时钟频率、占空比、毛刺、电平幅度。比如你怀疑从机把 SDA 拉低不放示波器一看就知道。但示波器不能直接告诉你“ACK 是第几个时钟”需要你自己数。逻辑分析仪解决的是协议解码问题起始条件、地址、读写位、ACK/NACK、数据字节。它能把 SDA 和 SCL 的波形直接翻译成十六进制数据省去手动解码的麻烦。但逻辑分析仪只能看逻辑电平看不到上升沿细节和毛刺所以不能替代示波器。我的建议是万用表是必备示波器是核心逻辑分析仪是加速器。如果你只有万用表也能排查大部分问题如果有示波器基本能定位到 90% 的故障逻辑分析仪是在协议层快速定位的利器。1.3 工具选型的几个关键参数选示波器的时候很多人只看带宽。对于 I2C 来说带宽不是最重要的采样率和存储深度才是。I2C 最高速率一般是 400kHz快速模式或 1MHz快速模式但上升沿可能只有几十纳秒。如果你要用示波器看上升沿细节带宽至少要是信号最高频率分量的 3 到 5 倍。I2C 的上升沿等效频率大概在 10MHz 到 30MHz 之间所以100MHz 带宽的示波器足够。采样率方面至少要是信号频率的 10 倍以上。对于 400kHz 的 I2C采样率 10MSa/s 就能看个大概但要精确测量上升时间建议 100MSa/s 以上。存储深度决定了你能抓多长时间的数据。I2C 一次传输可能几十个字节每个字节 9 个时钟加上起始和停止大概几百个时钟周期。如果时钟是 100kHz一次传输大概几毫秒。存储深度至少 1M 点才能抓到完整的传输过程。万用表方面普通手持万用表就够用但要注意输入阻抗。测 I2C 线路电压时万用表输入阻抗一般是 10MΩ对 I2C 线路影响很小。但如果你用万用表测上拉电阻一定要断电测否则并联的芯片引脚会影响读数。逻辑分析仪方面8 通道就够因为 I2C 只用两根线。采样率建议 24MSa/s 以上支持 I2C 解码就行。市面上几十块的和几千块的差别主要在软件易用性和协议支持数量上对于 I2C 排查便宜的也够用。注意不要用万用表的电流档去测 I2C 线路万用表电流档内阻很小相当于把线路短路可能烧毁芯片。2. 万用表静态排查从供电到上拉的完整检查清单万用表排查 I2C 的核心就一句话确认线路在静态时处于正确的高电平状态。I2C 总线空闲时SDA 和 SCL 都应该被上拉电阻拉到高电平。如果静态时不是高电平那动态波形肯定不对。这一节我把万用表排查的完整流程拆开讲每一步都有明确的判断标准。2.1 供电与地线检查最容易被忽略的第一步很多人拿到板子直接测 SDA 和 SCL结果发现电压不对折腾半天才发现是从机芯片没供电。I2C 从机芯片的电源引脚如果没接好SDA 和 SCL 可能通过内部 ESD 二极管被拉低导致总线一直处于低电平。用万用表测供电的步骤先把万用表打到直流电压档黑表笔接板子的地红表笔依次测从机芯片的 VCC 引脚、主控芯片的 I2C 电源引脚、上拉电阻的上端。正常情况应该是 3.3V 或 5V误差在 5% 以内。如果测到 0V检查电源芯片是否工作如果测到 1.5V 左右可能是电源芯片限流了或者有短路。地线检查同样重要。主控和从机必须共地如果两块板子分别供电但没有共地I2C 电平没有参考点通信肯定失败。用万用表通断档测主控的地和从机的地是否导通正常应该蜂鸣器响。我遇到过一个案例某工程师用两块开发板做 I2C 通信一块用 USB 供电一块用外部电源供电结果怎么都不通。后来发现两块板子的地没有连在一起USB 供电的地和外部电源的地之间有几十伏的压差I2C 芯片差点烧了。所以共地是 I2C 通信的绝对前提。2.2 上拉电阻测量阻值、位置、数量上拉电阻是 I2C 的灵魂。没有上拉电阻I2C 总线就是开漏输出永远拉不到高电平。上拉电阻太大上升沿太缓上拉电阻太小功耗太大甚至可能超过芯片的灌电流能力。用万用表测上拉电阻的方法断电把万用表打到电阻档红黑表笔分别接上拉电阻的两端。正常读数应该在标称值附近比如 4.7k 的电阻读数在 4.6k 到 4.8k 之间都算正常。如果读数是 0Ω说明电阻短路了如果读数是无穷大说明电阻开路或者虚焊。但要注意在线测电阻时电阻可能和其他元件并联。比如上拉电阻和芯片的引脚并联芯片内部可能有保护二极管会影响读数。所以最准确的方法是把电阻一端焊下来测或者至少确认并联路径的影响。上拉电阻的位置也很关键。上拉电阻应该接在总线的最远端而不是随便找个地方接。如果上拉电阻离从机太远线路上的分布电容和电阻会导致上升沿变缓。一般来说上拉电阻放在主控端或者总线中间都可以但不要放在分支的末端。上拉电阻的数量也要注意。整条总线上只需要一组上拉电阻不要每个从机都加一组。如果多个从机都加了上拉电阻并联后阻值变小可能导致灌电流过大。比如两个 4.7k 并联就是 2.35k在 3.3V 下灌电流约 1.4mA一般芯片能承受但如果是 1k 并联就是 500Ω灌电流 6.6mA很多芯片就受不了了。2.3 SDA 和 SCL 静态电平判断测完供电和上拉电阻接下来测 SDA 和 SCL 的静态电压。总线空闲时SDA 和 SCL 都应该是高电平电压值等于上拉电阻上端的电压。如果是 3.3V 系统SDA 和 SCL 都应该接近 3.3V如果是 5V 系统应该接近 5V。如果测到 SDA 或 SCL 是 0V说明有设备在拉低总线。可能的原因从机芯片没供电但 SDA 引脚有电流灌入导致内部二极管导通拉低总线或者某个芯片的 SDA 引脚损坏短路到地或者线路有短路。如果测到 SDA 或 SCL 是中间电平比如 1.8V说明上拉电阻和下拉路径形成了分压。可能的原因上拉电阻太大而芯片内部有弱下拉或者线路有漏电。如果测到 SDA 和 SCL 电压不一样比如 SCL 是 3.3VSDA 是 1.5V说明 SDA 线路有问题。I2C 空闲时 SDA 和 SCL 都应该是高电平电压应该基本一致。提示测静态电平时万用表黑表笔一定要接在从机芯片的地引脚上不要随便找个螺丝孔接地。如果地线有压降测出来的电压会不准。2.4 线路通断与短路排查线路通断排查用万用表的通断档。断电测主控的 SDA 引脚到从机的 SDA 引脚是否导通SCL 同理。正常应该蜂鸣器响电阻接近 0Ω。如果不响说明线路断了可能是 PCB 走线断了、连接器接触不良、或者焊点虚焊。短路排查同样重要。测 SDA 对地、SCL 对地、SDA 对 SCL 之间是否短路。正常应该不导通。如果短路可能是焊接时锡渣搭桥、PCB 内部短路、或者芯片损坏。我遇到过一个很隐蔽的案例某板子 I2C 时通时不通用万用表测通断发现 SDA 线路电阻在 0Ω 到几十欧姆之间跳变。后来发现是连接器的针脚氧化了接触电阻不稳定。所以测通断时不要只看蜂鸣器响不响最好看电阻读数如果读数超过 1Ω就要怀疑接触不良。3. 示波器动态波形分析上升沿、时钟频率与 ACK 定位万用表确认静态没问题后接下来用示波器看动态波形。示波器能看到万用表看不到的东西上升沿时间、时钟频率、占空比、毛刺、ACK 位。这一节我按“先看整体、再看细节、最后定位 ACK”的顺序讲。3.1 示波器探头连接与触发设置用示波器测 I2C至少需要两个通道一个接 SDA一个接 SCL。如果示波器通道多可以再接一个从机的电源或者中断引脚方便观察时序关系。探头连接要注意使用 10:1 探头不要用 1:1 探头。10:1 探头的输入电容小对 I2C 线路影响小。1:1 探头输入电容可能几十 pF会明显影响上升沿。探头的地线要尽量短不要用那种带长鳄鱼夹的地线长地线会引入振铃和噪声。最好用探头自带的弹簧地针直接接在芯片地引脚附近。触发设置是关键。触发源选 SCL触发方式选下降沿触发电平设在 1.5V 左右3.3V 系统。为什么选 SCL 下降沿因为 I2C 的数据在 SCL 高电平期间有效SCL 下降沿之后数据可以变化。用 SCL 下降沿触发能稳定抓到每个时钟周期的开始。触发模式选“正常”或“单次”。如果选“自动”没有信号时示波器也会刷新可能看到噪声。选“正常”模式只有满足触发条件时才刷新波形更干净。如果想抓一次完整的传输选“单次”模式然后让主控发起一次 I2C 传输。时基设置先设 100μs/div 看整体如果能看到起始条件和几个字节再放大到 10μs/div 看细节。如果 I2C 速率是 100kHz一个时钟周期是 10μs10μs/div 刚好一个格子一个周期。如果是 400kHz一个周期 2.5μs设 2μs/div 比较合适。3.2 上升沿时间测量与上拉电阻匹配上升沿时间是 I2C 排查里最容易被忽略的参数。I2C 规范对上升沿有明确要求标准模式100kHz最大上升时间 1000ns快速模式400kHz最大 300ns快速模式1MHz最大 120ns。如果上升沿超过这个值从机可能识别不到高电平。上升沿时间由上拉电阻和总线电容决定公式是t_r ≈ 0.847 × R_pullup × C_bus。其中 C_bus 是总线上的总电容包括 PCB 走线电容、芯片引脚电容、探头电容。一般 PCB 走线电容约 1pF/cm芯片引脚电容约 5pF 到 10pF探头电容 10:1 约 10pF 到 15pF。举个例子如果总线电容是 100pF上拉电阻是 4.7k上升时间约 0.847 × 4700 × 100e-12 ≈ 398ns。这个值在 400kHz 下刚好超标最大 300ns所以 4.7k 上拉在 400kHz 下可能不够。换成 2.2k上升时间约 186ns就满足了。用示波器测上升沿的方法把时基放大到 1μs/div 或更小用光标测量 SCL 从 0.3VDD 到 0.7VDD 的时间。I2C 规范定义的上升时间就是 0.3VDD 到 0.7VDD。如果是 3.3V 系统就是 1V 到 2.3V 之间。如果上升沿太缓解决办法减小上拉电阻。但要注意灌电流不能超过芯片能力。一般 I2C 芯片灌电流能力是 3mA3.3V 下上拉电阻最小约 1.1k。如果减小上拉电阻后上升沿还是太缓说明总线电容太大需要检查线路是否太长、分支是否太多、探头电容是否太大。3.3 时钟频率与占空比检查时钟频率是 I2C 通信的基础。主控发出的 SCL 频率必须和从机支持的频率匹配。如果从机只支持 100kHz主控发 400kHz从机可能不响应。用示波器测频率的方法用光标测两个相邻 SCL 下降沿之间的时间取倒数就是频率。或者用示波器的自动测量功能直接读频率值。占空比也很重要。I2C 规范要求 SCL 高电平时间和低电平时间都有最小值。标准模式下高电平最小 4.0μs低电平最小 4.7μs。快速模式下高电平最小 0.6μs低电平最小 1.3μs。如果占空比太偏比如高电平只有 0.1μs从机可能来不及采样。我遇到过一个案例某主控的 I2C 时钟占空比是 90%高电平 9μs低电平 1μs。从机在低电平期间准备数据的时间不够导致数据不稳定。后来调整了主控的 I2C 配置把占空比改成 50%问题解决。所以占空比不是随便设的要看从机手册的要求。3.4 用示波器定位 ACK 位ACK 是 I2C 通信里最关键的信号。主控发送完 8 位数据后第 9 个时钟周期从机应该把 SDA 拉低表示应答。如果从机没有拉低 SDA就是 NACK说明从机没收到或者地址不对。用示波器定位 ACK 的方法先找到起始条件。起始条件是 SCL 高电平期间SDA 从高变低。然后数 SCL 的下降沿第 1 到第 8 个下降沿对应 8 位数据第 9 个下降沿对应 ACK 位。在第 9 个 SCL 高电平期间看 SDA 是否被拉低。具体操作把时基设到能看清 9 个时钟周期比如 100kHz 下9 个周期是 90μs设 20μs/div 能看到 4.5 个周期设 50μs/div 能看到 9 个周期。然后用光标标记起始条件再数 SCL 脉冲。如果 SDA 在第 9 个时钟周期是高电平说明 NACK。可能的原因从机地址不对、从机没供电、从机忙、从机损坏。如果 SDA 在第 9 个时钟周期是低电平说明 ACK 正常问题在后面的数据或寄存器配置。注意示波器看 ACK 时要确保探头地线接好否则可能看到假波形。另外如果总线上有多个从机ACK 可能来自其他从机要结合地址判断。4. 逻辑分析仪协议解码与常见故障速查示波器看波形很直观但数时钟周期很累。逻辑分析仪能直接把 I2C 波形解码成地址、数据、ACK/NACK效率高很多。这一节讲逻辑分析仪的使用方法以及常见故障的速查表。4.1 逻辑分析仪连接与 I2C 解码设置逻辑分析仪的连接很简单通道 0 接 SCL通道 1 接 SDA地线接板子地。注意逻辑分析仪的输入电压范围一般是 0V 到 5V如果是 3.3V 系统没问题如果是 5V 系统要确认逻辑分析仪能承受 5V。采样率设置至少是 SCL 频率的 10 倍。100kHz 的 I2C采样率 1MSa/s 就够400kHz 的 I2C采样率 4MSa/s 以上。但为了看清毛刺建议设 24MSa/s 或更高。采样深度要足够抓一次完整传输一般 1M 点够用。解码设置在逻辑分析仪软件里选择 I2C 解码器指定 SCL 和 SDA 对应的通道设置正确的电平标准。有些软件还需要设置地址格式7 位或 10 位。设置好后软件会自动把波形翻译成类似这样的格式Start Address: 0x50 (Write) ACK Data: 0x00 ACK Data: 0xAB ACK Stop这样一眼就能看出地址对不对、ACK 有没有、数据是什么。4.2 常见故障速查表我把 I2C 排查中常见的故障整理成表格方便快速定位。现象可能原因排查方法解决方案SDA/SCL 静态低电平从机没供电、芯片损坏、线路短路万用表测供电和通断修复供电、更换芯片、排除短路SDA/SCL 静态中间电平上拉电阻太大、线路漏电万用表测上拉电阻和漏电减小上拉电阻、清洁板子上升沿太缓上拉电阻太大、总线电容太大示波器测上升时间减小上拉电阻、缩短走线时钟频率不对主控配置错误示波器测频率修改主控 I2C 配置地址 NACK从机地址错误、从机没就绪逻辑分析仪看地址核对从机手册、加延时数据 NACK从机忙、寄存器地址错误逻辑分析仪看数据检查从机状态、核对寄存器时通时不通接触不良、电源纹波大万用表测通断、示波器测电源重新焊接、加滤波电容多从机冲突地址重复、上拉电阻过多逻辑分析仪看地址修改地址、去掉多余上拉4.3 几个容易踩的坑与实操心得坑一忽略从机的时钟拉伸。有些从机在处理数据时会拉低 SCL强制主控等待这叫时钟拉伸。如果主控不支持时钟拉伸可能会出错。用示波器看 SCL 是否被从机拉低如果拉低时间很长说明从机在忙。坑二上拉电阻接到错误的电源。比如主控是 3.3V从机是 5V上拉电阻接到 5V主控的 SDA 引脚可能承受不了 5V。上拉电阻的电源应该和主控的 I2C 电源一致或者用电平转换芯片。坑三忽略总线的分布电容。如果 I2C 走线很长比如超过 30cm分布电容可能超过 100pF导致上升沿太缓。解决办法是减小上拉电阻或者用 I2C 缓冲器。坑四用万用表测波形。万用表只能测平均值测不了 I2C 的动态波形。有人用万用表测 SDA 电压看到 1.5V 以为正常其实是平均电压。测 I2C 必须用示波器或逻辑分析仪。坑五忘记共地。两块板子分别供电时一定要共地。我见过有人用电池给从机供电忘了共地结果 I2C 怎么都不通。4.4 从 ACK 失败到通信成功的完整案例最后分享一个我最近处理的案例。某项目用 GT911 触摸屏I2C 地址是 0x5D主控是 Linux 系统。现象是开机后触摸屏偶尔能用大部分时间不能用。用逻辑分析仪抓波形发现主控发送地址 0x5D 后从机没有 ACK。排查过程先用万用表测 GT911 的供电3.3V 正常测上拉电阻4.7k 正常测 SDA 和 SCL 静态电平都是 3.3V 正常。然后用示波器看波形发现 SCL 频率是 400kHz上升沿约 500ns超过快速模式的最大 300ns。问题定位上升沿太缓。解决方案把上拉电阻从 4.7k 换成 2.2k上升沿降到约 230ns通信立刻稳定。后来查 GT911 手册发现它支持快速模式但对上升沿要求比较严。所以不要以为上拉电阻随便选一个就行要根据速率和总线电容计算。这个案例的教训是万用表确认静态没问题后一定要用示波器看上升沿。如果只看逻辑分析仪的解码结果可能看到地址发出去了但没 ACK却不知道原因是上升沿太缓。提示换上拉电阻后要重新测上升沿和灌电流。灌电流 (VDD - VOL) / R_pullup一般 VOL 约 0.4V3.3V 下 2.2k 的灌电流约 1.3mA在芯片承受范围内。5. 不同速率下的参数计算与工具配置建议I2C 有标准模式、快速模式、快速模式、高速模式等不同速率等级每个等级对上升沿、上拉电阻、总线电容的要求都不一样。这一节我把参数计算和工具配置整理清楚方便你直接抄作业。5.1 标准模式 100kHz 的参数计算标准模式下SCL 频率最高 100kHz上升沿最大 1000ns总线电容最大 400pF。上拉电阻的计算公式R_pullup ≤ t_r / (0.847 × C_bus)。如果 C_bus 是 200pFt_r 最大 1000ns则 R_pullup ≤ 1000e-9 / (0.847 × 200e-12) ≈ 5.9k。所以标准模式下4.7k 或 5.1k 上拉都可以。灌电流计算I_sink (VDD - VOL) / R_pullup。3.3V 下4.7k 的灌电流约 0.62mA远小于 3mA 的限制。所以标准模式下上拉电阻选择很宽松。示波器配置时基 10μs/div触发 SCL 下降沿触发电平 1.5V。逻辑分析仪采样率 1MSa/s 以上。5.2 快速模式 400kHz 的参数计算快速模式下SCL 频率最高 400kHz上升沿最大 300ns总线电容最大 400pF。上拉电阻R_pullup ≤ 300e-9 / (0.847 × 200e-12) ≈ 1.77k。所以 4.7k 在 400kHz 下可能超标建议用 2.2k 或 1.8k。灌电流3.3V 下2.2k 的灌电流约 1.3mA1.8k 约 1.6mA都在 3mA 以内。但如果总线电容更大比如 300pF则 R_pullup ≤ 300e-9 / (0.847 × 300e-12) ≈ 1.18k灌电流约 2.5mA接近极限。示波器配置时基 2μs/div触发 SCL 下降沿触发电平 1.5V。逻辑分析仪采样率 4MSa/s 以上。5.3 快速模式 1MHz 的参数计算快速模式下SCL 频率最高 1MHz上升沿最大 120ns总线电容最大 550pF。上拉电阻R_pullup ≤ 120e-9 / (0.847 × 200e-12) ≈ 0.71k。所以需要 680Ω 或更小的上拉电阻。灌电流3.3V 下680Ω 的灌电流约 4.3mA超过一般芯片的 3mA 限制。所以快速模式通常需要专用的 I2C 缓冲器或电平转换芯片不能直接用普通上拉电阻。示波器配置时基 1μs/div触发 SCL 下降沿触发电平 1.5V。逻辑分析仪采样率 10MSa/s 以上。5.4 工具配置速查表速率等级频率最大上升沿推荐上拉示波器时基逻辑分析仪采样率标准模式100kHz1000ns4.7k10μs/div1MSa/s快速模式400kHz300ns2.2k2μs/div4MSa/s快速模式1MHz120ns680Ω1μs/div10MSa/s高速模式3.4MHz80ns专用缓冲500ns/div20MSa/s注意上表是典型值实际选择要根据总线电容调整。如果走线长、分支多总线电容大上拉电阻要相应减小。6. 从波形到代码I2C 排查后的验证与优化排查完硬件问题后还要从软件层面验证和优化。这一节讲怎么用代码确认 I2C 通信正常以及怎么优化 I2C 的稳定性。6.1 用 i2c-tools 快速验证Linux 系统下i2c-tools是最常用的 I2C 调试工具。先用i2cdetect -l列出所有 I2C 总线找到对应的总线编号。然后用i2cdetect -y 1扫描总线上的设备正常会显示从机地址。如果扫描不到设备说明硬件还有问题。如果扫描到了但读写失败用i2cget和i2cset读写寄存器。比如i2cget -y 1 0x50 0x00读地址 0x50 的 0x00 寄存器。i2c-tools的好处是快速验证但不能看波形。如果i2cdetect能扫到地址说明 ACK 正常硬件基本没问题。6.2 用示波器触发抓取偶发故障偶发故障最难排查。用示波器的单次触发模式设置触发条件为 NACK。有些高端示波器支持协议触发可以直接设“ACK 失败时触发”。如果没有协议触发可以用 SCL 下降沿触发然后让程序循环读写直到抓到 NACK。抓到 NACK 后看 NACK 发生前的波形是地址 NACK 还是数据 NACK地址 NACK 说明从机没响应数据 NACK 说明从机忙或寄存器错误。结合代码逻辑分析。6.3 优化 I2C 稳定性的几个技巧技巧一加延时。有些从机在上电后需要一段时间才能响应 I2C比如 GT911 需要 100ms。在主控初始化 I2C 后加 100ms 延时能解决很多“第一次通信失败”的问题。技巧二降低速率。如果 400kHz 不稳定先降到 100kHz 验证功能。功能正常后再逐步提高速率找到稳定工作的最高速率。技巧三加滤波电容。在 SDA 和 SCL 对地加 10pF 到 100pF 的电容能滤除高频噪声。但电容不能太大否则上升沿会变缓。技巧四用差分探头。如果板子上有强干扰用差分探头测 I2C 能看得更清楚。单端探头容易引入共模噪声。技巧五检查电源纹波。I2C 通信失败有时是电源纹波太大导致的。用示波器测从机电源的纹波如果超过 50mV加滤波电容或换 LDO。6.4 一个完整的排查流程总结最后我把整个排查流程串起来方便你按步骤操作万用表测供电和地确认从机 VCC 正常主控和从机共地。万用表测上拉电阻确认阻值正确位置合理数量不多余。万用表测静态电平SDA 和 SCL 空闲时都是高电平电压一致。万用表测通断和短路SDA 和 SCL 线路导通对地不短路。示波器看整体波形有起始条件、时钟脉冲、停止条件。示波器测上升沿上升时间在规范以内。示波器测时钟频率和占空比频率匹配占空比合理。示波器定位 ACK第 9 个时钟周期 SDA 被拉低。逻辑分析仪解码地址、数据、ACK 都正确。软件验证用 i2c-tools 读写寄存器确认功能正常。这个流程走下来90% 的 I2C 问题都能定位。剩下的 10% 可能是芯片本身的问题或者多主机冲突等复杂场景需要结合具体芯片手册和系统架构分析。我个人在实际操作中的体会是I2C 排查最怕跳步。很多人觉得万用表测静态太简单直接上示波器结果在波形上纠结半天最后发现是供电没接好。按流程一步步来看起来慢实际上最快。另外示波器和逻辑分析仪不是替代关系是互补关系。示波器看电气特性逻辑分析仪看协议内容两个都用上排查效率翻倍。