
做硬件的人大概都有过这种体验方案评审的时候谁都不觉得电平转换是个事等到板子回来联调主控 3.3V 的 UART 死活读不到 1.8V 模组回的包或者 5V 的驱动板把 3.3V 的 MCU 引脚烧掉了才发现通信电平转换1.8V、2.8V、3.3V、5V 这几个电压域之间的互转根本没人在设计阶段认真算过裕量。它本身不难难的是它散落在每一根信号线上——I2C、SPI、UART、SDIO、PWM、中断脚、使能脚任何一根漏掉都可能变成偶发故障而且这类故障往往不是完全不通而是跑十分钟掉一次包排查成本极高。这篇内容我打算把这件事从头到尾捋一遍四个常用电压域的门限到底差多少、哪些组合可以偷懒直连、哪些必须上转换器件、双向总线和单向信号分别怎么处理、外围的 24V/12V 降压链路怎么和电平转换配合、5V 输出端要不要加 TVS 管、以及我在实测里踩过的坑。不管你是刚画第一块板子的学生还是做了几年消费电子想补一下基础的老工程师应该都能拿走点能用得上的东西。整篇内容偏向工程实操参数都给了计算过程你可以直接抄作业。1. 先把四个电压域的门限算清楚别凭感觉接1.1 1.8V、2.8V、3.3V、5V 的判决门限到底差在哪电平转换出问题九成以上是因为没人认真去看数据手册里的 VIH 和 VIL。大家脑子里只有一个模糊印象3.3V 不算高也不算低应该都能兼容吧。这个印象对 TTL 成立对 CMOS 不成立混着用就出事。先给一张常用电平标准的门限对照表。这里要说明的是不同厂商、不同系列LVCMOS、LVTTL、SSTL 等会略有差别下表是工业界最通用的典型值实际设计请以具体器件手册为准。电平类型供电 VDD输入高门限 VIH(min)输入低门限 VIL(max)输出高 VOH(min)输出低 VOL(max)1.8V LVCMOS1.8V1.17V0.65×VDD0.63V1.44V0.8×VDD0.36V2.8V LVCMOS2.8V1.82V0.98V2.24V0.56V3.3V LVCMOS3.3V2.0V0.8V2.4V负载下0.4V5V TTL5V2.0V0.8V2.4V0.4V5V CMOS5V3.5V0.7×VDD1.5V4.4V0.5V看这张表最重要的是看VOH(min) 减 VIH(min)这个差值它才是你真正的噪声裕量。举几个典型组合算一下3.3V 输出驱动 5V TTL 输入VOH 最低 2.4VVIH 是 2.0V裕量只有 0.4V。能通但如果你用的是长排线、又赶上旁边有个继电器在开关这 0.4V 很容易被吃掉。3.3V 输出驱动 5V CMOS 输入VOH 2.4V 对 VIH 3.5V直接差 1.1V根本不通。这是新手最常见的翻车点——不是说 3.3V 能直接驱 5V 吗能驱的是 TTL不是 CMOS。1.8V 输出驱动 3.3V 输入VOH 最高也就 1.8V空载对 3.3V LVCMOS 的 VIH 2.0V连门限都够不到必挂。2.8V 输出驱动 3.3V 输入VOH 2.24V 对 VIH 2.0V裕量 0.24V。理论上通实测经常玄学尤其是 SPI 时钟这类边沿陡的信号反射一叠加就开始丢位。注意SPI 的时钟线SCLK和片选CS对门限特别敏感因为时钟是连续翻转的任何一个周期被误判一次整帧数据就废了。做 SPI 跨电压域时门限裕量建议至少留到 0.5V 以上。1.2 两种可以偷懒直连的例外以及为什么不要滥用有两个场景确实可以不转换但我建议你在原理图上明确标注出来不要让别人以为你忘了。第一种是 3.3V 驱动 5V TTL 输入前提是对端芯片手册明确写了输入结构是 TTL 兼容VIH2.0V而且走线不长。这种情况下不加任何器件也能跑省一颗芯片、省一个布线通道。典型例子是很多 5V 的单片机、74HCT 系列逻辑门、老式 LCD1602 模块的控制脚。第二种是 5V 驱动带 5V 容忍5V tolerant输入的 3.3V 器件。像 STM32 的 FT 类型引脚、部分 NXP 的 I2C 引脚标注了输入可承受 5.5V这类描述。这时候你可以直接接过去器件内部是靠额外的钳位结构抗住的。有一个坑要特别注意5V 容忍通常只针对数字输入而且往往要求该引脚配置为输入或开漏输出模式。如果你把它配成推挽输出同时又从外部灌 5V 进来那这个容忍是不成立的会通过 ESD 二极管倒灌进 3.3V 电源轨把整条 3.3V 电源顶上去。我见过因为这种情况把整板 3.3V 器件全带走的事故。直连前必须做的两件事一是在原理图上用醒目的备注写清此处依赖 5V 容忍特性二是留一个 0 欧姆电阻或一个电阻焊盘的位置方便出问题时改成加转换器件。剩下所有组合——包括 1.8V 到 2.8V、2.8V 到 5V、5V 到 3.3V 的推挽双向——都老老实实上转换电路不要赌。2. 四类转换方案的横向选型从分压电阻到专用芯片2.1 分压、二极管、MOS 管、专用芯片的适用边界方案选型的核心判断维度只有四个信号是单向还是双向、速率有多高、驱动电流要多少、成本能接受多少。我把这四类方案的边界整理成一张表你在画原理图的时候直接对号入座。方案方向典型速率上限成本主要缺点电阻分压单向100kHz 以下极低输出阻抗高、驱动弱、反向不通二极管上拉单向100kHz 以下极低低电平被抬高 0.3~0.7VMOS 管双上拉双向1~2MHz低上拉电阻限制速率、占板面积专用电平转换芯片双向或方向控制24Mbps~420Mbps中成本、部分型号怕强上拉电阻分压只适合低速、单向、后级输入阻抗很高的场合比如某个 5V 的使能信号送给 3.3V 的 EN 脚。选值公式很直白Vout Vin × R2/(R1R2)。5V 转 3.3V 时R1:R2 大概是 1.7k:3.3k静态电流约 1mA。这个 1mA 在电池设备里是要算进功耗预算的所以别到处乱用。分压方案最大的陷阱是忽略了后级输入阻抗的并联效应。假设你算好 1.7k/3.3k结果后级输入阻抗只有 10k那实际分压比就被拉偏了输出只有 2.75V 左右。我的做法是让分压支路的等效阻抗至少比后级输入阻抗低一个数量级同时把静态电流控制在 0.5~1mA。如果后级输入是高阻1MΩ那分压值可以取得更大一些比如 17k/33k静态电流降到 100μA。二极管方案上拉到 3.3V二极管阳极接 3.3V 侧、阴极接 5V 侧现在基本可以淘汰了因为它把低电平抬高了 0.3~0.7V如果对端 VIL 只有 0.8V再叠加地弹和线阻很容易踩线。只有在极其低速、极其省钱的场合才考虑。真正的主力方案是后两种。MOS 管方案用在 I2C、1-Wire、SMBus 这类开漏总线上非常合适专用芯片用在 SPI、SDIO、并口这类高速推挽信号上。下面分开细讲。2.2 上拉电阻和速率的定量关系别拍脑袋选 10k很多人的习惯是上拉电阻一律 10k这个习惯在 I2C 上经常出事。上拉电阻的选择本质是在上升时间和灌电流之间做取舍。总线从 0.3×VDD 充到 0.7×VDD 的时间可以用 RC 充电公式推导t R × C × ln[(VDD - 0.3VDD) / (VDD - 0.7VDD)] R × C × ln(0.7/0.3) ≈ 0.847 × R × CI2C 标准模式要求上升时间 tr ≤ 1000ns快速模式 400kHz 要求 ≤ 300ns快速模式 1MHz 要求 ≤ 120ns。总线电容 Cb 包括走线、引脚、器件电容一般 PCB 上每 10cm 走线约 1~2pF加上每个器件的 5~10pF 引脚电容。一条挂 4 个器件的短总线算 100pF 很正常。代入快速模式R_max 300ns / (0.847 × 100pF) ≈ 3.5kΩ如果总线电容涨到 200pFR_max 就掉到 1.77kΩ。所以那些10k 上拉跑 400kHz的设计在总线短、器件少的时候确实能跑一旦多挂两个传感器或者排线拉长就开始随机丢包现象是有时应答有时不应答。用一个小脚本把这件事算清楚比翻手册快得多import math def max_pullup(tr_target_ns, c_bus_pf): k math.log(0.7 / 0.3) # 0.3VDD - 0.7VDD 的充电系数约 0.847 tr tr_target_ns * 1e-9 c c_bus_pf * 1e-12 return tr / (k * c) def min_pullup(vdd, i_sink_ma): # 开漏器件能灌的电流决定了上拉下限VOL 一般取 0.4V return 0.4 / (i_sink_ma * 1e-3) for c in (100, 200, 300): for tr in (1000, 300, 120): print(fCb{c}pF, tr{tr}ns - 上拉上限 {max_pullup(tr, c)/1000:.2f} kΩ) print(f3.3V 总线、灌电流 3mA 时上拉下限 {min_pullup(3.3, 3)/1000:.2f} kΩ)跑出来你会看到Cb200pF、tr≤300ns 时上限是 1.77kΩ如果器件只能灌 3mA下限是 133Ω可选区间是 133Ω~1.77kΩ取个中间值 1kΩ 就行。如果算出来的下限比上限还大说明这条总线根本跑不了这个速率得改成专用的 I2C 缓冲芯片或者降低速率。实操心得上拉电阻的功耗也要算。1kΩ 上拉到 3.3V总线常低时的静态电流是 3.3mA四个通道就是 13mA对电池设备来说不小。所以我一般先用脚本算出可用区间再取靠上限的那个值别一味求小。3. 双向总线和高速信号的转换电路怎么落地3.1 BSS138 双向方案原理、选料和布板要点先讲最经典的那一颗双 N 沟道 MOS 两侧各一个上拉电阻。这个电路的元件清单只有三个但它为什么能双向工作值得认真讲一遍因为理解了它你后面选专用芯片的时候就知道自己在买什么。以 1.8V 侧和 3.3V 侧互转为例MOS 的源极接 1.8V 侧信号线栅极接 1.8V 电源漏极接 3.3V 侧信号线两侧各挂一个 10kΩ 上拉到各自的电源。当 1.8V 侧被主控拉低时源极电压下降到接近 0此时栅源电压 Vgs 约为 1.8V高于 MOS 的开启阈值BSS138 典型 1.3VMOS 完全导通把漏极也拉到接近 03.3V 侧看到低电平。这是低侧拉低高侧的过程。当 3.3V 侧被拉低时MOS 的体二极管先导通体二极管阳极在源、阴极在漏把源极拉到约 0.7V此时 Vgs 1.8V - 0.7V 1.1V接近阈值MOS 开始导通并把源极进一步拉低形成正反馈最终两侧都被拉到低电平。这就是它双向工作的关键机制靠体二极管启动、靠栅源电压维持。BSS138 的关键参数Vgs(th) 0.8~1.5VVds 50VId 200mACiss 约 27pF。用它做 1.8V/3.3V 转换没问题。但有几个坑如果低压侧是 1.2VVgs 只有 1.2V减掉体二极管压降后只剩 0.5VMOS 基本不导通电路会失效。1.2V 及以下必须换低阈值器件Vgs(th) 0.4V 级别的如 FDV301N或者直接用专用芯片。上拉电阻同样受上升时间约束别默认 10k。按 2.2 节的方法算一下1MHz 以上的信号用 MOS 方案基本没戏。栅极接低压侧电源意味着低压侧掉电时 MOS 关断不会倒灌这个特性在做上下电顺序不确定的系统时反而是优点。布板上有两点要强调一是 MOS 尽量靠近连接器或芯片引脚别让两侧走线长度差太多二是两侧上拉电阻到电源的去耦电容要就近放100nF 起步否则总线翻转时电源上的抖动会耦合回信号。3.2 专用芯片怎么挑TXS、TXB、PCA9306 的区别一旦信号速率超过 2Mbps或者通道数多到懒得堆 MOS就该上专用芯片了。市面上主流的几类选型逻辑差别很大很容易买错。TXS 系列如 TXS0108E、TXS0102自动方向感应内部集成了 10kΩ 量级的上拉电阻和一次性加速电路。它最大的特点是能用于开漏总线I2C也能用于推挽信号。推挽模式下速率约 24Mbps开漏模式下约 2Mbps。VCCA 必须低于 VCCB。价格便宜、通道多是我做 I2C 跨电压时的首选。TXB 系列如 TXB0108、TXB0104也是自动方向但用的是推挽输出结构速率能跑到 100Mbps。它的致命限制是不能用于开漏总线。因为内部是推挽驱动如果总线另一头有别的器件也在驱动同一个电平两个推挽输出对顶就是标准的短路工况。我见过有人拿 TXB0104 接 I2C上电就发热就是这个原因。PCA9306I2C 专用双向转换本质是两个 MOS 通道加一个使能结构需要外部上拉1.0V~5.5V 覆盖支持 400kHz 标准速率是目前 I2C 场景里最稳妥的选择之一。它有一个 Vref2 引脚接高压侧电源、一个 Vref1 接低压侧通过内部参考结构自动建立偏置。用的时候注意别在两边都挂强上拉会干扰它的内部偏置。SN74LVC1T45 / 2T45 / 8T245 系列带 DIR 方向控制脚的单/双/八路转换器两侧供电范围 1.65V~5.5V 任意组合速率最高 420Mbps。它必须由你手动控制 DIR 引脚所以适合方向固定的推挽信号比如 SPI 的 MOSI 一路、MISO 另一路各用一颗。这个系列有一个很棒的特性它支持部分断电保护Ioff一侧掉电时输出呈高阻不会倒灌。选型口诀可以记成这样开漏总线I2C、SMBus、1-WireTXS 或 PCA9306别用 TXB。高速推挽SPI、SDIO、并口TXB 或 74LVC1T45。方向固定、通道少74LVC1T45便宜好焊。通道多、方向固定、信号是 3.3V 到 5V直接上 74HCT2455V 供电、TTL 输入门限3.3V 能直接驱进去输出是标准 5V 电平。74HCT245 这个方案特别值得单独提一句它是3.3V 输入、5V 输出最便宜的实现一颗芯片解决 8 路单向信号电源只用 5V 一路不需要额外的 3.3V 供电做简单的控制电路时非常省事。唯一要注意的是方向控制脚 OE 和 DIR 的电平要接对。3.3 3.3V 转 5V 的几种实现对比与接线示例3.3V 转 5V 是热词里出现最多的需求之一方向是从 3.3V 逻辑升到 5V 逻辑实现方式其实不止一种。第一种如果接收端是 5V TTLVIH2.0V前面说过直连就行成本为零。第二种如果接收端是 5V CMOSVIH3.5V必须转换用 74HCT245 是最优解它的输入阈值就是按 TTL 设计的3.3V 输入能保证被识别为高。第三种如果只有一两路信号用 TXB0101 或者 74LVC1T45高压侧供 5V。用 74LVC1T45 的典型接线是这样VCCA 接 3.3VVCCB 接 5VA 口接 3.3V 侧信号B 口接 5V 侧DIR 脚决定方向——DIR 接低时数据从 A 到 B接高时从 B 到 A。这里有一个参数必须看芯片的 VCCA 和 VCCB 分别在什么范围时可以工作以及上电时哪一侧先上电是安全的。74LVC1T45 支持任意一侧先上电这一点在系统里有多个电源域的时候很重要。对于3.3V 输入转 5V 输出的简易控制电路这种需求我一般推荐两种极简方案只做一路信号一颗 74LVC1T45SOT-23-6 封装外围只需要两个 100nF 去耦电容。做 4~8 路信号一颗 74HCT245 或 74AHCT245SOIC-20同样只需要一个去耦电容。不推荐用三极管做的所谓简易升压电路因为三极管反相、上升沿慢、静态功耗大用在正经的通信信号上问题很多。4. 电源域配合从 24V/12V 一路降到 3.3V 再谈转换4.1 前级降压链路的设计与芯片选型电平转换解决的是信号电平但在真实项目里你往往先在电源侧就要完成一次大跨度的降压比如 24V 电瓶、28V 电源模块降到 5V再降到 3.3V。电源做不干净电平转换的裕量再大也没用因为噪声会直接吃掉你的门限余量。先说 24V 转 5V 这一级。常见方案有几类芯片输入范围输出电流开关频率特点LM2596S-5.04.5~40V3A150kHz经典、耐压高、外围元件大TPS54305.5~36V3A500kHz效率高、外围小、需注意散热XL40158~36V5A180kHz大电流便宜效率一般MP1584EN4.5~28V3A1.5MHz体积小28V 输入是极限24V 输入的选型要点是耐压。24V 标称的系统满载波动加上线缆电感引起的尖峰实际可能冲到 30V 以上如果是 24V 铅酸电瓶充电时电压能到 27.6V锂电组甚至到 29.4V。所以输入耐压至少要有 1.5 倍裕量也就是选 40V 及以上耐压的芯片。MP1584EN 标称 28V用在 24V 系统上就很危险属于踩线设计。28V 转 5V 的电源模块同理模块选型时看一下输入范围是28V 最大还是28V 标称前者不能用在 28V 系统上。再说 5V 转 3.3V 这一级。这里最常见的坑是直接用 AMS1117-3.3 从 5V 掉到 3.3V压差 1.7V。看上去不大但功耗必须算def ldo_check(vin, vout, iout, theta_ja, tamb40): p (vin - vout) * iout tj tamb p * theta_ja return p, tj # AMS1117-3.3 SOT-223带 1 平方英寸铜箔时 θJA 约 61°C/W for i in (0.1, 0.3, 0.5, 0.8): p, tj ldo_check(5.0, 3.3, i, 61) print(fIout{i}A - 功耗 {p:.2f}W结温约 {tj:.0f}°C)输出 0.5A 时功耗 0.85W结温约 92°C已经很烫了0.8A 时结温超过 108°C会触发过温保护表现出来就是用一会儿就掉电凉了又能用。所以 5V 转 3.3V 只要电流超过 300mA就别用 LDO 了换成同步整流的 DC-DC比如 TPS62130、MP2145、SY8089 这类效率能到 90% 以上发热可以忽略。如果系统里已经有 5V 轨而 3.3V 只需要几十毫安那 LDO 是最省事的选择噪声低、不需要电感还能顺便把 5V 上的纹波滤掉一些。另一种常见做法是两级降压24V 先降到 5V再从 5V 降到 3.3V。为什么要分两级而不是一步到位因为单级 24V 转 3.3V 的占空比只有约 14%很多芯片在窄占空比下效率会掉最小导通时间也可能不满足容易出问题分两级之后每一级的压比都温和整体效率反而更高。代价是多一颗芯片和一个电感占板面积大一点。4.2 5V 输出端到底要不要加 TVS 管这个问题问的人特别多我的回答是看 5V 这一路的负载从哪里来、走多长的线。如果 5V 只是板内给几个芯片供电走线在 10cm 以内同板上的其他电路都很规矩那 TVS 的收益不大一个 100μF 电解加若干 100nF 陶瓷电容就够了。如果 5V 要出板、走线缆、接外设、或者接到继电器、电机这类感性负载附近那 TVS 强烈建议加。线缆越长耦合进来的浪涌能量越大尤其是插拔瞬间几安培的浪涌电流是常规操作。TVS 的作用是把这类瞬态能量钳到一个安全水平避免后级芯片被击穿。选型上要注意三个参数参数含义5V 系统取值建议反向工作电压 VRWM正常工作时不能导通的电压5V 或 5.5V击穿电压 VBR开始导通的电压6.4~7.0V如 SMAJ5.0A钳位电压 VC大电流下的最高电压低于后级器件绝对最大额定结电容 Cj影响高速信号电源线无所谓数据线要选低容型具体型号上SMAJ5.0A 是 5V 电源最常用的选择击穿 6.4~7.0V17A 时钳位 9.2VSMA 封装成本几毛钱。要注意它的结电容在几百皮法量级放在 DC 电源线上完全没问题但如果你把它放在 USB 数据线或者高速差分对上那点电容就足以破坏信号完整性了——数据线要用 SRV05-4 这类低容 ESD 阵列单通道电容只有几个皮法。还有一个位置细节TVS 要放在最靠近连接器或最靠近被保护器件的地方不要放在电源模块的输出端和器件之间随便找个地方。它的工作逻辑是在哪挨打就在哪泄放位置错了效果大打折扣。TVS 的接地走线要短而粗最好直接打孔到地平面别绕。注意TVS 是扛一次就少一次的器件经历大能量浪涌后参数会漂移。如果是长期暴露在户外的设备建议在 TVS 前面再加一级保险丝或 PTC让它在极端情况下先断开。4.3 5V 转 3.3V 的稳压芯片与语音芯片场景的特殊处理5V 转 3.3V 的稳压芯片按前面说的原则选小电流用 LDOAMS1117-3.3、TLV1117、RT9013大电流用 DC-DCSY8089、MP2145。这里补充两个实际项目里的细节。第一LDO 的输入输出电容不是随便放的。大多数 LDO 要求输入侧至少 1μF输出侧在 1~10μF 之间具体看手册的稳定性要求。有些老型号 LDO比如早期的一些 1117 变种对输出电容的 ESR 有范围要求用纯陶瓷电容反而会震荡输出上出现几百毫伏的周期性纹波示波器一看非常明显。如果你遇到 LDO 输出无缘无故抖动先换一个钽电容或者串一个 0.1~0.5Ω 的电阻试试。第二也是热词里提到的——语音芯片的 3.3V 输出。语音芯片的输出一般有两种形式PWM 输出和内置 DAC 的模拟输出。这两种都不能用前面讲的数字电平转换方案来处理。如果是 PWM 输出它本质是一串占空比随音频变化的方波频率通常在几十 kHz 到几百 kHz。你要做的不是电平转换而是滤波衰减先用 RC 低通把载波滤掉还原成模拟波形再看后级功放的输入范围决定分压比。指望用 MOS 管双向转换电路去处理 PWM会直接把波形整形成一堆畸变。如果是 DAC 模拟输出那就更简单用 AC 耦合电容加电阻分压把幅度降到功放能接受的范围即可。这里要算的是信号摆幅而不是逻辑门限两回事。我见过有人拿 TXS0108E 去接音频信号结果出来的声音全是噪声就是因为把数字转换器当模拟通道用了。还有一点语音芯片和功放共地的时候要注意 3.3V 数字电源和 5V 功放电源之间的地弹。功放大电流开关时地平面上的压差可能到几十毫伏如果语音芯片的模拟输出以这个地为参考就会串进咔咔声。解决办法是在功放电源旁加大容量电解电容同时让模拟地和数字地单点连接。5. 调试实录典型问题排查与踩坑经验5.1 常见故障速查表板子回来不通电、通信不稳先用这张表过一遍能省不少时间。现象可能原因排查方法高电平始终只有 1.8V高压侧上拉电阻没装或虚焊万用表测电阻两端电压低电平抬到 0.7V 左右用错了二极管方案或 MOS 体二极管压降看原理图确认方案上电后 I2C 一直拉低总线被某个器件死锁或 TXB 用在开漏总线上断开器件逐个恢复通信跑一阵就丢包上拉电阻偏大、总线电容偏大示波器看上升时间芯片发烫推挽输出对顶、或 TXB 接开漏总线断开总线测电流5V 器件把 3.3V 电源顶到 3.9V5V 信号灌进非容忍引脚经 ESD 二极管倒灌断电测 3.3V 对 5V 是否导通只有高频信号丢数据门限裕量不足、走线反射用示波器看眼图或过冲热词里提到的 BP1 5V PG voltage is outside of range 是主板上常见的电源就绪信号超范围告警。PGPower Good信号的检测原理是主板用比较器监控 5V 通过电阻分压后的电压判断电源是否稳定。这类告警的原因通常有三种一是 5V 实际电压确实偏出范围二是分压电阻或比较器参考电压出了问题三是 PG 信号的电平门限和主板的输入门限不匹配——这就绕回本文的主题了。如果你在设计 PG 信号时把 3.3V 器件的输出直接送给 5V CMOS 门限的检测电路那这个告警就会一直报。5.2 示波器和逻辑分析仪的实测手法排查电平问题光看万用表是不够的万用表读的是平均值完全看不出边沿质量。必须要上示波器。实测的步骤如下第一步把探头打到 10:1 档1:1 档的输入电容有 100pF 以上接上去本身就会把信号拖慢地线用弹簧地针不要用那根长的鳄鱼夹地线否则你测到的振铃一半是探头引入的。第二步把时基设到信号周期的 1/2 左右先看整体波形。第三步把时基放大到上升沿附近测 10%~90% 的上升时间和手册的最大值对比。第四步把触发电平设在 VIH 和 VOH 的中间观察是否有毛刺穿过门限。看波形的时候重点看四个东西上升时间是不是超了、过冲有没有到绝对最大额定以上、低电平有没有被抬高、高电平有没有塌陷。我遇到过一次 I2C 偶发不通示波器一看高电平只有 2.4V——按说 3.3V 上拉应该到 3.3V结果查出来是总线上一颗器件的 ESD 结构漏电把高电平拉下来了一截。这种问题用逻辑分析仪是看不出来的逻辑分析仪只告诉你 0 和 1不告诉你电平质量。逻辑分析仪的正确用法是抓协议比如 I2C 抓出 NAK 出现在哪一帧、SPI 抓出哪一位错位。两者配合着用效率最高。5.3 我踩过的几个坑第一个坑是上拉电阻拉到错误的电源。有一次做 1.8V 和 3.3V 互转低压侧的信号线我顺手拉到 3.3V 上结果 1.8V 的器件引脚长期承受 3.3V用了两周就挂了。原理图上两个网络标号离得近很容易看错我的做法是让低压网络和高压网络在原理图上用不同的颜色区分并且把上拉到哪个电源写在网络标号旁边。第二个坑是忽略了上电顺序。系统里有 3.3V 和 5V 两路电源5V 先上电、3.3V 后上电。如果 5V 器件的输出脚已经输出高电平而 3.3V 器件还没上电那这个 5V 就会通过 3.3V 器件的输入 ESD 二极管倒灌进去把 3.3V 电源轨抬起来严重的会锁死整个芯片。解决办法是选带部分断电保护Ioff的转换器件或者在上电顺序上做保证再或者串限流电阻。第三个坑是拿同一颗芯片做双向但方向控制脚接错了。74LVC1T45 的 DIR 脚决定方向我在 SPI 的 MISO 上接反了结果数据永远是 0。这个错误在原理图上很难看出来因为 DIR 脚就是一个网络标号。我的做法是在原理图上给每个 DIR 脚写一句注释说明这个方向是主到从还是从到主。第四个坑是忽略了容性负载。有一次在一个 I2C 总线上挂了 6 个器件走线又长用 4.7k 上拉怎么都跑不稳。后来按 2.2 节的公式一算总线电容接近 250pF4.7k 的上升时间要到 1μs 以上远远超了 400kHz 模式的 300ns 要求。换成 1.5k 上拉之后立刻稳定。代价是电流从 0.7mA 涨到 2.2mA但在那个市电供电的场合无所谓。还有一个教训是别迷信理论上够用。2.8V 驱 3.3V 那 0.24V 的裕量在实验室常温下确实能跑装到外壳里、夏天环境温度 50°C、旁边还有个 DC-DC 在开关就开始随机出错。所以我现在做设计凡是裕量小于 0.5V 的组合一律加转换器件不管预算多紧张。多花的那几毛钱比后面改板便宜太多了。最后分享一个我觉得很实用的习惯在原理图上专门开一页电平域检查表把所有跨电压域的信号按起点电平、终点电平、方向、速率列出来逐个标注处理方式。这张表在评审的时候能救命因为信号一多总有人会漏掉一两根——往往就是漏掉的那一根在量产阶段给你添了大麻烦。