尧图网络科技YAOTU DIGITAL 获取报价
获取报价
首页 / 资讯中心 / 文章详情

I2C总线通信故障排查全攻略:从万用表到示波器的实战指南

发布时间:2026/9/25 4:18:37

资讯中心
01
ARTICLE

I2C总线通信故障排查全攻略:从万用表到示波器的实战指南

I2C总线通信故障排查全攻略:从万用表到示波器的实战指南
I2C 总线只有两根线SDA 和 SCL看起来简单得让人放松警惕。但真到了板子不通信、读不到数据的时候很多人第一反应是拿起万用表量一量电压看到 3.3V 就以为万事大吉结果折腾半天还是找不到问题。我见过太多这样的情况有人换了三块从机芯片有人把上拉电阻从 4.7k 换到 2.2k 又换回 10k还有人怀疑是固件问题重写了三遍驱动最后发现只是 SDA 和 SCL 接反了。I2C 的排查之所以让人头疼是因为它的故障表现往往很安静——没有明显的冒烟、没有报错弹窗只是数据读不出来或者偶尔读出来一次又断了。这篇文章想做的事情很直接把 I2C 信号测量和排查的完整流程讲清楚从最基础的万用表静态检查到示波器看波形细节再到 ACK 应答的逐位分析每一步该看什么、该判断什么、常见坑在哪里都给你说明白。不管你是刚接触嵌入式的初学者还是已经调过不少板子的老手这套排查思路都能直接拿去用。1. 先搞清楚 I2C 到底在测什么1.1 两根线的物理本质与电气特性I2C 的物理层说穿了就是两根开漏输出的线加上拉电阻。开漏意味着每个设备只能把线拉低不能主动拉高——高电平是靠上拉电阻把线拽上去的。这个设计的好处是天然支持多设备共享总线不会出现两个设备同时输出高和低导致短路的情况。但代价是上升沿的斜率完全取决于上拉电阻和总线电容的 RC 时间常数。标准模式 I2C 跑 100kHz快速模式 400kHz快速模式 1MHz高速模式 3.4MHz。频率越高对上升时间的要求越苛刻。100kHz 时上升时间要求不超过 1000ns400kHz 时不超过 300ns1MHz 时不超过 120ns。这些数字不是随便定的它们直接决定了你该选多大的上拉电阻。总线电容是另一个关键参数。I2C 规范规定总线电容不能超过 400pF。每挂一个设备每个走线过孔每段 PCB 走线都会贡献几 pF 到几十 pF 的电容。设备挂多了、走线长了电容就上去了上升沿就变缓了。上升沿太缓从机可能还没看到高电平主机就已经开始下一个时钟了通信自然失败。所以测 I2C 信号本质上是在测三件事静态电平对不对、动态波形好不好、协议时序合不合规。万用表能搞定第一件事示波器能搞定前两件逻辑分析仪或者带协议解码的示波器能搞定第三件。1.2 为什么万用表只能做初步判断万用表测 I2C能做的事情其实很有限但恰恰是这有限的几件事能帮你排除掉一大半的低级问题。空闲状态下SDA 和 SCL 都应该是高电平。如果你用万用表直流电压档量到某根线是 0V那基本可以确定要么上拉电阻没焊、要么焊错了阻值、要么线被某个设备死死拉低比如设备损坏或者引脚配置错误、要么根本就是断路。这一步花不了三十秒但能省掉后面几个小时的瞎折腾。万用表的局限在于它测的是平均值或者稳态值。I2C 通信时线上是高速变化的脉冲万用表根本跟不上。你量到 SCL 是 1.6V不代表它真的是 1.6V可能是在高电平和低电平之间快速切换万用表给你显示了个平均值。所以通信过程中的电压测量万用表基本没有参考价值。还有一个容易被忽略的点万用表的输入阻抗。好的万用表输入阻抗在 10MΩ 以上对 I2C 总线的影响可以忽略。但如果你用的是一块老式指针表输入阻抗可能只有几十 kΩ接到总线上会直接把高电平拉下来导致本来正常的通信也出问题。所以测 I2C 的时候尽量用数字万用表而且最好在设备断电或者空闲状态下测。1.3 示波器能看到但万用表看不到的东西示波器能告诉你的事情就多了。上升沿和下降沿的时间、时钟频率是否准确、占空比是否正常、有没有过冲和下冲、电平幅度是否达标、有没有毛刺和振铃、ACK 位到底有没有被拉低——这些都是万用表完全无能为力的。我个人的经验是I2C 排查里最值钱的一步就是用示波器抓一次完整的通信波形。哪怕你暂时看不懂协议光看波形质量就能判断出很多问题。比如上升沿明显是个圆弧而不是陡峭的斜坡那说明上拉电阻太大或者总线电容太大比如时钟线上有严重的振铃那可能是走线阻抗不匹配或者上拉电阻太小导致边沿太陡比如 SDA 在 ACK 位没有被拉低那说明从机根本没应答。2. 万用表静态检查三十秒排除低级错误2.1 断电测通断与短路拿到一块不通信的板子第一步永远是断电。断电之后用万用表的通断档蜂鸣档测几个关键点。先测 SDA 和 SCL 之间有没有短路。正常情况应该是不通的如果蜂鸣器响了那说明两根线在某处短接了——可能是焊接桥连可能是 PCB 设计问题也可能是排线压接不良。这个问题不解决后面所有测量都没有意义。然后测 SDA 到 GND、SCL 到 GND 有没有短路。正常情况也不应该通。如果通了说明线被某个地方拉死了可能是芯片损坏可能是焊接短路也可能是某个设备的引脚配置成了推挽输出并且输出低电平。再测 SDA 和 SCL 到 VCC 的通断。这一步测的是上拉电阻。如果上拉电阻是 4.7k那万用表应该显示 4.7k 左右的阻值。如果显示开路说明上拉电阻没焊或者虚焊。如果显示 0Ω说明上拉电阻短路了这种情况很少见但也不是没有。注意测通断一定要在断电状态下进行。带电测通断万用表输出的测试电压可能会干扰总线甚至损坏设备。2.2 上电测空闲电平断电检查没问题之后上电。先不运行任何通信程序让总线处于空闲状态。用万用表直流电压档测 SDA 和 SCL 对 GND 的电压。对于 3.3V 系统空闲时两根线都应该是 3.3V 左右。如果测到 0V说明线被拉低了。如果测到 1.5V 或者 2V 这种中间值说明可能有两个设备在打架——一个想拉高一个想拉低或者上拉电阻和某个下拉路径形成了分压。对于 5V 系统空闲时应该是 5V 左右。但要注意现在很多设备是 3.3V 甚至 1.8V 的如果 5V 总线上挂了 3.3V 的设备可能会通过 I/O 口的保护二极管形成漏电流路径导致空闲电平异常。这种情况下需要加电平转换电路不能直接混接。还有一种情况空闲电平正常但一通信就掉。这通常说明某个设备的驱动能力不足或者总线电容太大导致边沿太缓从机还没识别到高电平就被下一个低电平覆盖了。这种问题万用表测不出来必须上示波器。2.3 万用表排查的典型误判万用表排查有几个经典的误判场景我几乎每次带新人都会遇到。第一个误判用万用表测通信中的 SCL看到电压在 1.6V 左右就认为时钟信号正常。实际上这个 1.6V 是高速脉冲的平均值真实的波形可能上升沿严重不足从机根本识别不到高电平。万用表在通信状态下测 I2C基本等于白测。第二个误判测到空闲电平是 3.3V就认为上拉没问题。但如果上拉电阻是 100k空闲时确实能拉到 3.3V因为万用表输入阻抗很高几乎不取电流。但一旦通信开始100k 的上拉电阻根本来不及把线拉高波形会惨不忍睹。所以空闲电平正常不代表上拉电阻合适。第三个误判用万用表的二极管档去测 SDA 对 VCC 的压降想判断有没有保护二极管。这个操作在断电时做没问题但有些人带电做结果万用表输出的测试电流直接灌进芯片 I/O轻则读数不准重则损坏芯片。3. 示波器抓波形从边沿质量看总线健康度3.1 探头选择和接地点的重要性用示波器测 I2C第一个要解决的问题是探头。I2C 信号频率不算高但边沿很快尤其是快速模式和高速模式。普通的无源探头带宽至少要有 100MHz最好 200MHz 以上。如果探头带宽不够你看到的上升沿会比实际更缓可能会误判为上拉电阻太大。更关键的是接地。示波器探头的接地夹子要尽量短最好用弹簧地针直接戳在芯片 GND 引脚附近。如果用地线夹子绕一大圈接到远处的 GND地线电感会在快速边沿上产生振铃你看到的波形失真可能完全是测量引入的而不是总线本身的问题。我见过有人用示波器测 I2C看到 SCL 上有严重的振铃换了三个上拉电阻都没解决最后发现是探头地线太长导致的测量伪影。把地线换成弹簧地针振铃立刻消失。这个坑很隐蔽但踩过一次就记住了。3.2 上升沿和下降沿的判断标准抓到波形之后第一眼看边沿。上升沿是从 0.3VDD 到 0.7VDD 的时间。对于 3.3V 系统就是从 1V 到 2.3V 的时间。标准模式要求不超过 1000ns快速模式不超过 300ns。如果实测上升沿明显超过这个值说明上拉电阻太大或者总线电容太大。下降沿是从 0.7VDD 到 0.3VDD 的时间。因为开漏输出拉低是晶体管直接导通下降沿通常很快一般几十纳秒。如果下降沿也很慢那说明线路上有异常大的电容或者某个设备的拉低能力不足。上升沿太慢的典型表现是波形顶部是个圆弧而不是平坦的高电平。如果圆弧一直没到 VDD 就开始下降从机可能识别不到有效的高电平。下降沿太慢的典型表现是波形底部是个圆弧如果一直没到 GND 就开始上升从机可能识别不到有效的低电平。3.3 上拉电阻的计算与实测验证上拉电阻的选择是个权衡。阻值太小上升沿快但功耗大而且可能超过设备的灌电流能力。阻值太大功耗小但上升沿慢可能不满足时序要求。计算上拉电阻的最小值要考虑总线电压和设备的灌电流能力。比如 3.3V 总线设备最大灌电流 3mA那上拉电阻最小不能低于 3.3V / 3mA 1.1kΩ。实际选的时候要留余量一般不低于 1.5kΩ。计算上拉电阻的最大值要考虑上升时间要求。上升时间 t 0.847 × R × C其中 R 是上拉电阻C 是总线电容。假设总线电容 200pF要求上升时间不超过 300ns那 R 最大不能超过 300ns / (0.847 × 200pF) ≈ 1.77kΩ。这个计算说明如果总线电容比较大上拉电阻必须选小一些。但实际中很多人直接用 4.7k 或者 10k在短走线、少设备的情况下也能跑。我实测过总线电容 50pF 左右、3.3V 系统、4.7k 上拉上升时间大约 200ns跑 400kHz 没问题。但如果挂到 5 个设备、走线 20cm电容可能到 150pF上升时间就变成 600ns 了400kHz 下就会出问题。提示如果你不确定上拉电阻该选多大先用 2.2k 或者 3.3k 试这两个值在大多数场景下都能工作。如果波形上升沿还是太慢再减小到 1.5k。如果功耗有严格限制再考虑增大到 4.7k 并降低通信速率。4. ACK 应答排查通信失败的核心线索4.1 ACK 位的时序位置与含义I2C 每传输 8 个数据位之后第 9 个时钟周期是 ACK 位。主机发送完 8 位数据后释放 SDA从机如果收到数据就在第 9 个时钟的低电平期间把 SDA 拉低主机在时钟高电平期间读取 SDA如果读到低电平说明从机应答了。ACK 失败是 I2C 通信中最常见的故障。表现是主机发送完地址或者数据后在第 9 个时钟周期读到 SDA 仍然是高电平说明没有从机应答。可能的原因有很多从机地址不对、从机没上电、从机复位没完成、从机损坏、SDA 或 SCL 接反、从机被某个引脚配置成了错误的状态。用示波器抓 ACK 位要把时基放大到能看清第 9 个时钟周期。触发方式可以设成 SCL 下降沿触发然后单次抓取。看第 9 个时钟的低电平期间SDA 有没有被拉低。如果 SDA 一直是高那就是 NACK。4.2 地址不匹配导致的 NACK 排查地址不匹配是最常见的 NACK 原因。I2C 的 7 位地址有些芯片手册上写的是 8 位格式包含读写位有些写的是 7 位格式。如果你把 8 位地址直接当 7 位用地址就错了。比如某芯片手册写从机地址是 0x90这是 8 位格式包含读写位。实际 7 位地址是 0x48。如果你在代码里写 0x90左移一位变成 0x120超出 7 位范围通信肯定失败。正确的做法是写 0x48 1 0x90写操作或者 0x48 1 | 1 0x91读操作。还有一种情况是地址引脚配置不对。很多 I2C 芯片有 A0、A1、A2 地址引脚接 GND 和接 VCC 对应不同的地址。如果你板子上把 A0 接了 GND但代码里用的是 A0 接 VCC 的地址那就不匹配。这种问题用示波器抓一下地址字节和手册对比就能发现。4.3 从机拉低 SDA 但主机读不到的情况有时候示波器上能看到从机确实把 SDA 拉低了但主机读到的还是 NACK。这种情况通常是时序问题。一种可能是主机采样点太早或太晚。I2C 规范规定主机应该在 SCL 高电平期间采样 SDA但具体在哪个时刻采样不同芯片的实现不一样。如果主机采样太早从机还没来得及把 SDA 拉低如果采样太晚从机可能已经释放了 SDA。这种情况需要看主机的数据手册确认采样时刻或者调整时钟频率试试。另一种可能是 SDA 和 SCL 的走线延迟不一致。如果 SDA 比 SCL 长很多从机拉低 SDA 的信号到达主机的时间会晚于 SCL 的上升沿主机采样时可能还没看到低电平。这种情况在高速模式下更容易出现解决办法是让 SDA 和 SCL 走线尽量等长或者降低通信速率。还有一种可能是从机的拉低能力不足。有些从机的 I/O 口驱动能力很弱只能拉低到 0.4V 左右如果主机的低电平识别阈值是 0.3VDD3.3V 系统就是 1V那 0.4V 是能识别的。但如果从机只能拉低到 1.2V主机就识别不到了。这种情况用示波器看 ACK 位的低电平幅度就能发现。5. 逻辑分析仪与协议解码的实战用法5.1 逻辑分析仪和示波器的分工示波器看的是模拟波形能告诉你电平质量、边沿时间、噪声情况。逻辑分析仪看的是数字逻辑能告诉你协议层面的对错。两者配合使用排查效率最高。我的习惯是先用示波器确认物理层没问题——电平幅度够、边沿够快、没有明显噪声。然后接逻辑分析仪抓完整的通信过程看地址、数据、ACK 是否符合预期。如果逻辑分析仪显示协议层面没问题但设备就是不工作那再回到示波器看有没有间歇性的波形异常。逻辑分析仪的采样率要足够高。I2C 400kHz 的话采样率至少 4MHz 才能保证每个时钟周期采到 10 个点。如果要看高速模式 3.4MHz采样率至少 34MHz。很多便宜的逻辑分析仪标称 24MHz 采样率跑 400kHz I2C 勉强够用但边沿细节就看不清了。5.2 协议解码的配置要点逻辑分析仪的协议解码功能配置对了才能出正确结果。几个关键设置通道分配要正确。SDA 接哪个通道SCL 接哪个通道在软件里要对应上。接反了解码出来的全是乱码。阈值电压要设置正确。3.3V 系统设 1.65V5V 系统设 2.5V。如果阈值设错了解码结果会完全错误。时钟极性要选对。I2C 的 SCL 空闲是高电平第一个边沿是下降沿。如果软件里选成了空闲低电平解码就错了。解码深度要够。有些逻辑分析仪默认只解码前几百个字节如果通信数据量大后面的就丢了。要把解码深度设成最大。5.3 从解码结果反推硬件问题逻辑分析仪解码出来的结果能直接告诉你问题出在哪一层。如果解码结果显示地址字节后面没有 ACK那就是从机没应答。结合示波器看 ACK 位的电平能判断是从机没拉低还是主机没读到。如果解码结果显示数据字节和预期不符那可能是数据线有干扰或者从机内部寄存器地址不对。比如你写 EEPROM地址对了但写进去的数据读出来不对那可能是 EEPROM 的页写时序没处理好。如果解码结果显示通信过程中突然中断那可能是总线被某个设备拉死了。I2C 总线死锁是个经典问题主机在发送过程中复位SCL 被拉低从机在等待 SCL 上升沿双方僵持。解决办法是主机发送 9 个时钟脉冲让从机把剩余的数据位发完释放 SDA。6. 那些手册上不会写的排查经验6.1 上电时序和复位时间的影响很多 I2C 设备对上电时序有要求。比如某些传感器VDD 上电后需要 10ms 以上的稳定时间才能通信如果你上电后立刻发命令从机还没完成内部复位自然不会应答。还有一种情况是电源上升沿太慢。如果 VDD 从 0V 升到 3.3V 用了 100ms从机的上电复位电路可能工作不正常导致内部状态机卡死。这种情况用示波器看电源上升沿就能发现解决办法是加一个电源监控芯片或者等电源稳定后再延时一段时间再通信。复位引脚的处理也很关键。有些芯片的复位引脚是低电平复位如果你悬空没接引脚电平可能不稳定导致芯片随机复位。正确的做法是接一个上拉电阻到 VDD或者直接接到主机的 GPIO 由软件控制。6.2 总线电容超标的隐蔽表现总线电容超标的表现很隐蔽。短距离、少设备的时候一切正常一旦增加设备或者延长走线通信就开始间歇性失败。有时候能读出来有时候读不出来让人以为是固件问题。判断总线电容是否超标最直接的方法是用示波器看上升沿。如果上升沿明显变缓而且增加设备后变得更缓那基本就是电容问题。解决办法有几种减小上拉电阻、降低通信速率、增加 I2C 缓冲器或者多路复用器。I2C 缓冲器比如 PCA9515、TCA9517 这类芯片可以把总线分成两段每段各自的电容不累加。多路复用器比如 TCA9548A可以把总线分成 8 路每路挂不同的设备主机通过切换通道来访问。这两种方案都能有效解决电容超标问题但会增加成本和布线复杂度。6.3 电平转换电路引入的额外问题3.3V 主机和 5V 从机混接的时候需要电平转换。最简单的方案是用 MOS 管做双向电平转换但很多人不知道这个电路对上拉电阻有要求。MOS 管电平转换的原理是主机侧和从机侧各有上拉电阻MOS 管的栅极接 3.3V源极接主机侧 SDA漏极接从机侧 SDA。当主机拉低 SDA 时MOS 管体二极管导通把从机侧也拉低。当从机拉低 SDA 时MOS 管导通把主机侧也拉低。这个电路要求主机侧的上拉电阻接到 3.3V从机侧的上拉电阻接到 5V。如果两侧都接 3.3V从机侧的高电平就只有 3.3V可能不满足 5V 从机的高电平输入要求。如果两侧都接 5V主机侧的高电平就是 5V可能超过 3.3V 主机的耐压值。还有一种情况是电平转换芯片的使能引脚没接对。有些电平转换芯片有 OE 引脚需要拉高才能工作。如果悬空或者接低转换电路不工作通信自然失败。6.4 软件配置中的隐藏陷阱硬件没问题软件配置也可能导致 I2C 失败。几个常见的坑时钟频率配置错误。有些主机的 I2C 时钟是从系统时钟分频来的如果分频系数算错实际时钟频率可能远高于预期。比如你想跑 100kHz结果跑成了 1MHz从机跟不上通信失败。用示波器测一下 SCL 的实际频率就能发现。GPIO 复用配置错误。很多芯片的 I2C 引脚是和普通 GPIO 复用的需要配置成 I2C 功能才能工作。如果忘了配置引脚还是 GPIO 模式I2C 控制器根本控制不了这两根线。上拉电阻的软件配置。有些芯片内部有可配置的上拉电阻但阻值通常很大几十 kΩ只能用于低速短距离通信。如果依赖内部上拉跑 400kHz波形肯定不行。这种情况需要禁用内部上拉用外部上拉电阻。中断优先级配置错误。如果 I2C 中断被其他高优先级中断频繁打断可能导致 I2C 时序错乱。这种情况在实时性要求高的系统里比较常见解决办法是提高 I2C 中断优先级或者用 DMA 方式传输。7. 一套可复用的 I2C 排查流程7.1 从断电到通信的完整检查清单把前面的内容整理成一个可执行的流程下次遇到 I2C 问题可以直接照着走。第一步断电测通断。SDA 和 SCL 之间不能短路各自对 GND 和 VCC 也不能短路。上拉电阻阻值要正常。第二步上电测空闲电平。SDA 和 SCL 都应该是 VDD。如果不对检查上拉电阻和设备状态。第三步示波器看波形。抓一次通信波形看边沿时间、电平幅度、有没有振铃和毛刺。第四步逻辑分析仪解码。抓完整通信过程看地址、数据、ACK 是否符合预期。第五步对照手册查地址。确认 7 位地址和 8 位地址的换算确认地址引脚配置。第六步检查上电时序和复位。确认从机有足够的复位时间复位引脚电平正确。第七步检查软件配置。时钟频率、GPIO 复用、中断优先级都要确认。7.2 不同故障现象对应的排查方向故障现象最可能的原因排查手段空闲电平为 0V上拉电阻缺失或线被拉低万用表测通断检查上拉电阻空闲电平正常但通信失败地址错误或从机未复位逻辑分析仪看地址示波器看 ACKACK 位始终为高从机不应答检查地址、上电时序、从机状态通信间歇性失败总线电容超标或干扰示波器看上升沿检查走线波形有严重振铃探头地线太长或阻抗不匹配换弹簧地针检查端接高速通信失败但低速正常上升沿太慢减小上拉电阻降低速率7.3 预防性设计和布线建议与其等出了问题再排查不如在设计阶段就避免。上拉电阻选 2.2k 到 4.7k 之间根据总线电容和通信速率调整。走线尽量短SDA 和 SCL 尽量等长远离高频信号和电源开关节点。每个 I2C 设备旁边放 100nF 去耦电容电源引脚先过电容再进芯片。预留 I2C 缓冲器或者多路复用器的位置方便后期扩展。测试点要留出来SDA、SCL、GND 都要有方便的测试点最好能直接戳示波器探头。提示如果你做的板子要过认证I2C 的上升时间和下降时间要留足够的余量。认证测试通常比实验室环境更严苛温度、电压波动都会影响边沿时间。8. 几个真实案例的排查过程8.1 案例一地址引脚虚焊导致的随机 NACK一块传感器板批量生产后发现大约 5% 的板子 I2C 通信失败。故障板子表现是有时候能读到数据有时候读不到重启后又可能正常。先测空闲电平正常。示波器看波形边沿正常。逻辑分析仪解码发现 NACK 出现在地址字节之后而且地址有时候对有时候不对。地址不对说明从机识别的地址和主机发送的不一致。检查地址引脚发现 A0 引脚的焊盘有虚焊。虚焊导致引脚电平不稳定有时候被内部下拉拉到 GND有时候浮空被识别成高电平。地址就在两个值之间跳变主机用固定地址访问自然有时候成功有时候失败。重新焊接后问题解决。这个案例说明批量生产中的随机故障往往要往焊接质量上想。8.2 案例二长排线导致的上升沿超标一块控制板通过 30cm 排线连接显示模块I2C 跑 400kHz。短排线测试正常换上长排线后通信失败。示波器抓波形发现 SCL 上升沿从 200ns 变成了 800ns远超 400kHz 的 300ns 要求。排线的分布电容大约 50pF/m30cm 排线贡献 15pF加上模块本身的电容总电容超过了 200pF。原来的 4.7k 上拉电阻在 200pF 电容下上升时间约 800ns。把上拉电阻换成 1.5k上升时间降到 250ns通信恢复正常。但 1.5k 上拉在 3.3V 下的静态电流是 2.2mA功耗增加了不少。后来改成 2.2k上升时间约 370ns虽然略超 300ns 但实测能稳定工作。这个案例说明上拉电阻的选择要结合实际总线电容不能照搬典型值。8.3 案例三电源纹波导致的间歇性通信失败一块电机控制板I2C 连接电流传感器。电机不转时通信正常电机一转就间歇性失败。示波器看电源发现电机启动时 3.3V 电源上有 200mV 的纹波。I2C 传感器的供电电压波动导致内部参考电压不稳I2C 接口的逻辑电平阈值也跟着波动。当纹波谷值低于传感器的欠压复位阈值时传感器复位I2C 通信中断。解决办法是在传感器电源引脚旁边加 10uF 钽电容和 100nF 陶瓷电容把纹波降到 50mV 以下。同时把传感器的电源和电机的电源分开走线避免电机电流在地线上产生压降。这个案例说明I2C 通信问题不一定出在 I2C 本身电源质量往往是隐藏的元凶。9. 工具选型的实际建议9.1 万用表的选用测 I2C 静态参数数字万用表就够用。输入阻抗 10MΩ 以上直流电压精度 0.5% 以上通断档响应快。不需要买很贵的几百块的国产数字表完全能满足要求。但要注意有些便宜万用表的通断档响应很慢测短通断的时候蜂鸣器不响。这种表测 I2C 通断会漏判。选购的时候可以带一根短导线去试短接表笔看蜂鸣器响应速度。9.2 示波器的带宽和采样率要求测 I2C示波器带宽至少 100MHz采样率至少 1GSa/s。如果只看 100kHz 的标准模式50MHz 带宽也够用。但如果要看 400kHz 快速模式的边沿细节100MHz 是底线。通道数至少 2 个因为要同时看 SDA 和 SCL。如果有 4 个通道更好可以同时看电源和复位信号。触发功能要支持边沿触发和脉宽触发协议解码功能如果有就更方便。我个人的经验是如果预算有限优先保证带宽和采样率协议解码可以用逻辑分析仪代替。如果预算充足直接上带 I2C 协议解码的示波器排查效率会高很多。9.3 逻辑分析仪的采样深度和协议支持逻辑分析仪的采样率至少是 I2C 时钟频率的 10 倍。400kHz I2C 需要 4MHz 以上采样率3.4MHz 高速模式需要 34MHz 以上。采样深度要足够大能抓完整的通信过程。如果通信数据量大采样深度不够会丢数据。协议解码要支持 I2C最好还能支持 SPI、UART 等其他协议方便排查混合信号系统。软件界面要友好能方便地搜索、过滤、导出解码结果。便宜的 24MHz 8 通道逻辑分析仪跑 400kHz I2C 勉强够用但边沿细节看不清。如果经常调 I2C建议买采样率 100MHz 以上的型号。10. 写在最后的一些个人体会I2C 排查这件事说到底是个经验活。手册上的参数是死的实际板子上的问题千奇百怪。我调过的 I2C 问题里真正是协议理解错误的不到两成剩下八成都是硬件问题——虚焊、短路、上拉电阻不对、走线太长、电源不稳、地址引脚接错。所以我的建议是遇到 I2C 不通信先别急着怀疑固件。花三十秒用万用表测一下通断和空闲电平能排除掉一半的问题。然后花五分钟用示波器抓一次波形看看边沿和电平质量又能排除掉一大半。最后再用逻辑分析仪看协议确认地址和数据。这个顺序走下来大部分问题都能定位。还有一个心得是测试点一定要留。我见过太多板子I2C 出问题了想测波形结果 SDA 和 SCL 上没有任何测试点探头没地方戳只能飞到芯片引脚上一不小心就短路。设计阶段多留几个测试点调试阶段能省很多事。最后I2C 的故障往往是间歇性的抓波形的时候要有耐心。用单次触发模式设置好触发条件等故障复现。有时候等十分钟才抓到一次异常波形但就是这一次波形能告诉你所有答案。
02
RELATED NEWS

相关资讯

更多网站建设与数字化升级内容

03
WHY YAOTU

想打造同款高转化官网?

懂行业、懂生意,从建站到增长一站式陪跑

◈

场景化定制

不做模板站,围绕你的业务场景量身设计,小众不撞款。

◐

营销型架构

以转化目标组织内容与路径,让官网真正带来询盘。

▲

全周期服务

设计、开发、运营、运维一体,上线只是开始。

免费获取你的建站方案

留下需求,专属顾问 24 小时内为你输出方案建议。