1. 从一次串口通信失败说起:电平不匹配到底坏了什么事
很多人在调试串口、SPI、I2C 的时候都遇到过这种情况:代码逻辑明明没问题、线序也反复核对过,示波器一挂上去波形却糊成一团,接收端要么收到一堆乱码,要么干脆一个字节都收不到。折腾半天最后发现,问题根本不在协议层,而是两边的通信电平不一致——一边是 1.8V 的 MCU,另一边是 5V 的外设,直连之后高电平识别不出来,整个链路自然就废了。
通信电平转换,说的就是这么一件事:让工作在 1.8V、2.8V、3.3V、5V 这些不同电压域里的芯片或模块,能够相互听懂对方的信号。这事看着简单,实际做起来却处处是坑——方向是单向还是双向,速率是几十 kbps 还是几十 Mbps,是推挽输出还是开漏输出,要不要隔离,供电怎么处理,每换一个条件,方案就得跟着变。我见过太多项目栽在这上面:板子做回来了才发现两个芯片不能直连,只能飞线加个转换小板,可靠性直接打对折。
这篇内容我打算把 1.8V/2.8V/3.3V/5V 这几档常见电压域之间的信号转换,从头到尾捋一遍。会讲清楚每种方案的适用边界,给出可以直接抄的电路和参数,也会把 24V 转 3.3V、12V 转 5V 这类电源侧的转换顺带说清楚,因为很多人会把“信号电平转换”和“电源电压转换”混为一谈,这本身就是第一个大坑。不管你是刚画第一块板子的新手,还是已经做过几轮产品、想找个靠谱方案对照的老手,下面的内容应该都能直接用上。
2. 先把概念掰清楚:信号电平转换和电源转换根本不是一回事
2.1 一个高频混淆点:24V 转 3.3V 电路设计不是电平转换
搜索“24v转3.3v电路设计”的人里,我估计有一半其实是在找电源方案,另一半才真的需要信号转换。这两件事的差别,用一句话说就是:电源转换管的是能量,信号转换管的是信息。
电源转换要把 24V 的供电降压到 3.3V,给芯片供电,输出的是能持续提供几百毫安甚至几安培电流的“电”;信号转换是把一个逻辑高电平从 24V 域搬到 3.3V 域,输出的是几十微安到几毫安、代表 0 和 1 的“状态”。前者的核心指标是效率、纹波、负载调整率、散热;后者的核心指标是逻辑阈值、传播延迟、上升下降时间、方向控制。
为什么一定要分清?因为选型逻辑完全不同。你要是拿一个降压模块去转信号,输出端挂个电阻就等着烧吧;反过来拿电平转换芯片去给主控供电,更是直接冒烟。我整理了一张对照表,放在这里方便你快速对号入座:
| 对比维度 | 信号电平转换 | 电源电压转换 |
|---|---|---|
| 转换对象 | 逻辑高低电平 | 供电电压 |
| 典型电流 | μA 到 mA 级 | mA 到 A 级 |
| 核心器件 | MOS 管、电平转换芯片、光耦 | LDO、DC-DC 降压/升压芯片、模块 |
| 关键指标 | 阈值兼容、速率、延迟 | 效率、纹波、负载调整率 |
| 典型应用 | I2C/SPI/UART 跨压域通信 | 主控供电、模块供电 |
| 常见误区 | 直连导致识别失败 | 用地线走大电流、散热不足 |
提示:如果两个设备之间既需要供电又需要通信,那往往要“电源转换 + 信号转换”两套方案同时上,千万别指望一个器件全包了。
2.2 1.8V、2.8V、3.3V、5V 各自是什么来头
先说 5V。这是最老资格的一档,早期的 51 单片机、大量的工业传感器、继电器模块、USB 供电设备都跑在 5V 上。它的好处是抗干扰能力强、阈值宽、和很多现成的外设天然兼容,缺点是功耗偏高,在电池供电的设备里基本被淘汰了。
3.3V 是现在的绝对主力。STM32、ESP32、大量国产 MCU、Wi-Fi 和蓝牙模块、绝大多数传感器都工作在 3.3V。它算是功耗和抗干扰之间的一个平衡点,也是我平时做项目遇到最多的一档。
2.8V 相对小众一些,主要出现在早期的通信模块、部分射频芯片、某些特定接口的传感器上。它存在的意义往往是某个芯片的工艺决定的,而不是行业统一标准,所以你在做方案的时候要特别留意——2.8V 的器件通常不能直接和 3.3V 器件通信,虽然只差 0.5V,但很多芯片的高电平输入门限就是卡在这个位置。
1.8V 则是低功耗和高集成度路线下的产物。现在的先进制程芯片,IO 电压越做越低,1.8V 甚至 1.2V 是常态。好处是功耗低、速度快,坏处是和外部器件连的时候几乎都得转换,直连的机会很少。
把这几档放在一起看,实际项目里最常见的是三种组合:3.3V 对 5V、1.8V 对 3.3V、2.8V 对 3.3V。下面就围绕这三种组合展开,其他的电压组合基本可以类推。
2.3 判断能不能直连,只需看三个数
很多人问“这两个芯片能不能直接连”,其实答案就在数据手册里,翻到 DC Characteristics 那一节,找三个参数:
- VOH:输出高电平的最小值,也就是这个脚输出 1 的时候,电压最低能到多少。
- VIH:输入高电平的最小值,也就是接收端要认出这是 1,电压至少要到多少。
- VOL 和 VIL:对应的低电平参数,逻辑类似。
判断规则很直白:发送端的 VOH 必须大于接收端的 VIH,发送端的 VOL 必须小于接收端的 VIL,而且最好留出 0.2V 以上的余量。比如一个 3.3V 的 MCU 输出高电平 VOH 大约 3.0V,5V 器件的 VIH 通常是 0.7×VCC = 3.5V,3.0V 小于 3.5V,直连就不稳;反过来 5V 器件输出 4.5V 去接 3.3V 器件的输入,虽然 3.3V 器件的 VIH 只有 2.0V 左右能识别,但 4.5V 很可能超过它的绝对最大额定值,长期下来会损伤输入级。
注意:低电平方向的判断同样重要。有些芯片的输出低电平能到 0.4V,而接收端的 VIL 只允许 0.3V,这种也会出问题,尤其是长线缆、大电流场合。
3. 四类主流电平转换方案,什么场景用哪个
3.1 电阻分压:成本最低,但限制也最多
电阻分压是新手最容易想到的方案:5V 信号经过两个电阻分压到 3.3V,接到 3.3V 的输入脚。这个方案在特定条件下确实能用,但限制非常多,用之前一定要想清楚。
先说计算。如果是从 5V 转到 3.3V,用 R1 串在上面、R2 并在下面,分压比是 R2/(R1+R2) = 3.3/5 = 0.66。取 R1 = 1kΩ,那 R2 ≈ 1.94kΩ,实际用 2kΩ 得到 3.33V,基本合适。这里有个关键点:分压电阻的取值不能只考虑分压比,还要考虑信号速率和接收端的输入阻抗。
信号速率越高,RC 时间常数的影响越大。接收脚通常有 5~10pF 的输入电容,加上走线电容,假设总电容 15pF,那么 R1 和 R2 的并联值乘上这个电容就是时间常数。上面 1kΩ 和 2kΩ 并联约 667Ω,乘 15pF 约 10ns,对应带宽大概 16MHz,看着够用。但如果你把电阻放大到 10kΩ 级别去降功耗,时间常数立马变成 100ns 量级,几 MHz 的信号边沿就被拉圆了,通信很容易出错。
更要命的是,电阻分压只能单向,而且只能从高压往低压转。反过来 3.3V 转 5V 用分压是做不到的,因为电压不够。而且分压会持续消耗电流,5V 端一直有电流流过,对低功耗设计不友好。我现在基本只在“低速、单向、接收端输入阻抗很高”的场合才用它,比如检测一个 5V 的开关量信号,速率不超过几十 kHz,这种场景下加个 100nF 的滤波电容,稳定又便宜。
3.2 MOS 管双向电路:I2C 场景的经典解法
如果你搞过 I2C,一定见过那个只有两个 MOS 管加两个上拉电阻的电路。这是电平转换里最经典、也最值得吃透的一个方案,因为 I2C 是开漏总线,天生支持这种双向转换,而且几乎不花什么钱。
电路的核心是:源极接低压侧(比如 3.3V),栅极接低压侧电源(3.3V),漏极接高压侧(5V),两侧各自有上拉电阻拉到自己的电源。选一个 Vgs(th) 比较低、在 3.3V 下能充分导通的 N 沟道 MOS 管,比如常见的 2N7002、BSS138 这类小信号管子。
它的工作逻辑分三种情况:
第一种,两侧都是高电平。低压侧 3.3V 上拉,栅极也是 3.3V,Vgs = 0,管子关断。高压侧 5V 上拉,漏极被拉到 5V,而源极被低压侧上拉到 3.3V。此时漏极 5V 高于栅极 3.3V,体二极管方向是从源到漏,也就是从 3.3V 到 5V 是反向的,不导通,所以两侧各自保持 3.3V 和 5V。
第二种,低压侧拉低到 0。源极变 0,栅极还是 3.3V,Vgs = 3.3V,管子导通,漏极通过沟道被拉到 0,于是 5V 侧也变成低电平。这就完成了“低电平从低压侧传向高压侧”。
第三种,高压侧拉低到 0。漏极变 0,此时栅极 3.3V、源极 3.3V,Vgs 一开始是 0,但漏极降低后,体二极管会先导通,把源极电压往下带,源极一降,Vgs 就超过了阈值,管子彻底导通。于是低压侧也被拉到 0。这就是“低电平从高压侧传向低压侧”。
提示:这个电路的本质是“谁拉低谁说话”,高电平永远是各自电源上拉出来的,所以它只适合 I2C、SMBus 这类开漏总线,不适合推挽输出的 SPI、UART。你拿它去转 SPI,两个方向同时有驱动的时候会打架。
实测下来,这个电路在 400kHz 的标准 I2C 速率下非常稳,快速模式 1MHz 也基本能用,但上拉电阻要相应减小。我的经验是:3.3V 侧用 4.7kΩ,5V 侧用 10kΩ,这个组合在 400kHz 下边沿很干净。如果速率往上走,可以降到 2.2kΩ,但要留意功耗,低功耗场景得权衡。
3.3 专用电平转换芯片:速率高、方向多,但选型有讲究
当你的信号是推挽输出、速率又比较高的时候,MOS 管电路就不行了,这时候得用专用芯片。市面上的电平转换芯片大致分两类:自动方向识别的和带方向引脚的。
自动方向识别芯片的典型代表是 TXS 系列和 TXB 系列。TXS 是“自感应,边沿加速”,内部检测哪一侧先动就自动决定方向,用起来最省事,但它有输出阻抗,驱动能力弱,适合驱动纯 CMOS 输入。TXB 系列是“双电源、推挽”,速度快、驱动强,但要求两侧都有明确的推挽驱动,不能用在开漏总线上。这两个系列的选型规则我在下面这张表里做个对比,方便你对号入座。
| 对比项 | 自动方向(TXS 类) | 带方向引脚(TXB/SN74LVC 类) |
|---|---|---|
| 方向控制 | 自动识别 | 需要 OE 或 DIR 引脚 |
| 适用总线 | 开漏、推挽都能用 | 主要是推挽 |
| 驱动能力 | 较弱,适合高阻输入 | 较强,可驱动一定负载 |
| 典型速率 | 几十 Mbps | 上百 Mbps |
| 双向支持 | 支持 | 视型号 |
| 常见坑 | 驱动不足、边沿变慢 | 方向引脚接错导致全反 |
带方向引脚的芯片,比如 74LVC1T45 系列,用法上要特别注意两点:一是方向引脚必须在通信前就设置好,不能等到数据来了再切;二是未使用的一端不能悬空,否则会漏电甚至震荡。我一般会把 OE 脚通过一个 100kΩ 电阻拉到使能电平,同时留一个测试点,方便后面调试。
选芯片的时候,我最看重的是三件事:速率够不够、有没有片上使能、封装和供电范围。速率上要留至少 30% 的余量,比如你跑 10MHz 的 SPI,就选 20MHz 以上的芯片;供电范围要覆盖你的电压域,比如 1.8V 到 3.3V 的芯片,要确认它在 1.8V 端也能正常工作,有些芯片低压端的最低供电是 2.3V,那就用不了。封装上,小项目用 SOT-23-6 这类就够了,批量大的话可以考虑多路的,一颗芯片搞定整条总线,省钱又省板面积。
3.4 光耦和数字隔离器:有隔离要求时的正解
前面三种方案,本质上都是电气直连,两侧共地。如果你的两个系统地电位不同、或者一端有高压风险、又或者需要几百伏的隔离等级,那就得上光耦或数字隔离器。
光耦的原理很简单:输入侧驱动一个发光二极管,输出侧用光敏器件接收,光信号跨过绝缘层,实现电气隔离。它的优点是便宜、可靠、扛干扰,缺点是慢,普通光耦的速率也就几十 kHz 到几百 kHz,而且电流传输比会随着时间和温度漂移。更关键的是,光耦是单向的,双向通信你得用两个。典型的高速光耦,比如 6N137,能跑到 10Mbps,但价格和功耗都上去了。
数字隔离器是这几年的主流方案,用变压器或者电容耦合代替光耦,速率能到上百 Mbps,功耗低,寿命长,而且很多型号是双向的。缺点就是贵,而且是贵不少。所以我的选型原则是:普通板内通信,能用 MOS 管或专用芯片解决的,就别上隔离;只有当两侧真的不共地、或者有安全隔离要求时,才用光耦或数字隔离器,并且优先考虑数字隔离器,除非成本压得特别狠。
4. 实操:搭一条 3.3V 与 5V 之间的 I2C 转换链路
4.1 器件清单与参数计算
这一节我拿一个最典型的场景来演示:主控是 3.3V 的 MCU,挂一个 5V 的 OLED 屏,走 I2C。这个组合我在好几个项目里都用过,稳定性没问题,而且成本极低。
需要的器件很精简:一颗 N 沟道 MOS 管(我用的是 2N7002,SOT-23 封装,随手就能摸到)、四个电阻(两个上拉、一个栅极限流可选、一个可选的滤波电阻)、几个 0.1μF 的退耦电容。
先算上拉电阻。I2C 的上拉电阻不能随便取,它直接影响上升时间和功耗。总线电容 Cb 包括器件引脚电容、走线电容、连接器电容,我做小板子一般按 50pF 估,线长的时候可以到 100pF 甚至更多。上升时间常数 τ = Rp × Cb,标准模式要求上升时间不超过 1000ns,快速模式不超过 300ns。取 Cb = 50pF,快速模式下 τ 要小于 100ns,Rp 就得小于 2kΩ。所以我一般 3.3V 侧用 2.2kΩ,5V 侧用 4.7kΩ,实测边沿在 100ns 左右,留有余量。
注意:上拉电阻越小,上升越快,但静态功耗越大。I2C 空闲时高电平,电流会一直从上拉电阻流到地。2.2kΩ 在 3.3V 下静态电流约 1.5mA,如果设备是电池供电,这个数字要算进功耗预算里。
再算 MOS 管的选型。关键是 Vgs(th) 要低,最好在 1V 以下,这样 3.3V 栅压能保证充分导通。2N7002 的 Vgs(th) 最大 2.5V,典型 1.6V,3.3V 栅压下 Rds(on) 通常在几欧姆到十几欧姆,对于 I2C 这种小电流信号完全够用。如果你手头有 Vgs(th) 更低的管子,比如 BSS138 的 Vgs(th) 典型 1.3V,也完全可以用。
4.2 电路搭建与上电测试步骤
接线顺序很简单:MOS 管源极接 3.3V 侧的 SDA(或 SCL),漏极接 5V 侧的 SDA(或 SCL),栅极接 3.3V 电源。3.3V 侧的上拉电阻从 SDA 拉到 3.3V,5V 侧的上拉电阻从 SDA 拉到 5V。SDA 和 SCL 各来一套,总共两个管子、四个上拉电阻。
提示:栅极接的一定是低压侧电源(3.3V),千万不能接 5V,否则高电平时会一直导通,逻辑全乱。这个坑我在第一次做的时候踩过,折腾了一下午才反应过来。
上电测试我一般按这个顺序来,避免一上来就把问题搅在一起:
- 先不上电,用万用表量通断。确认源极只连到 3.3V 侧、漏极只连到 5V 侧,没有短路到相邻管脚,上拉电阻阻值正确。
- 只上 3.3V,不接 5V 器件。量 3.3V 侧 SDA 和 SCL 是不是被上拉到 3.3V,确认上拉有效。
- 再接 5V,量 5V 侧 SDA/SCL 是否被拉到 5V。此时 MOS 管应该是关断的,两侧互不影响。
- 用示波器同时看两侧波形。让 MCU 发几个字节,观察 3.3V 侧拉低时,5V 侧是不是跟着拉低;5V 侧拉低时,3.3V 侧是不是也跟着拉低。两边高电平应该分别是 3.3V 和 5V。
- 最后挂上真实器件,跑通信测试。读 OLED 的 ID 或者写几个字节,确认数据正确。
整个过程大概半小时能搞定。实测下来,只要管子和电阻选对,这个电路一次点亮的概率非常高。
4.3 速率和边沿实测记录
为了让你心里有个数,我把几次实测的数据整理了一下,测试条件都是 3.3V 侧 2.2kΩ 上拉、5V 侧 4.7kΩ 上拉、Cb 约 50pF:
| 速率 | 上升时间(3.3V 侧) | 上升时间(5V 侧) | 通信结果 |
|---|---|---|---|
| 100kHz | 约 90ns | 约 180ns | 稳定 |
| 400kHz | 约 95ns | 约 190ns | 稳定 |
| 1MHz | 约 130ns | 约 260ns | 基本稳定,偶有误码 |
| 1.7MHz | 约 200ns | 约 400ns | 边沿偏慢,不适合 |
从数据能看出来,5V 侧因为上拉电阻大,上升时间明显比 3.3V 侧慢。如果非要跑 1MHz 以上,那就把 5V 侧上拉降到 2.2kΩ,上升时间能压到 130ns 左右,但功耗会上去。我个人建议 I2C 就老老实实跑 400kHz,速度快不了多少,稳定性却好一大截,尤其是线缆长的时候。
5. 电源侧转换:24V、12V 到 5V、3.3V 的工程做法
5.1 稳压芯片怎么选,看这四个指标
既然很多人会顺带搜 12V 转 5V 稳压电路图和 5V 转 3.3V 稳压芯片,这里就一并说清楚。选稳压芯片我主要看四点:输入范围、输出电流、压差和效率。
输入范围要覆盖你的电源波动。比如 24V 电瓶,满电可能到 28V,那你选的芯片输入耐压至少要到 30V 以上。输出电流要按峰值算,不能只看平均电流,电机、继电器启动瞬间的电流可能是稳态的好几倍。压差决定了输入和输出至少要差多少,LDO 适合压差小、电流小的场合,压差大、电流大就得上 DC-DC。
从 24V 或 12V 直接降到 5V 或 3.3V,如果电流超过 200mA,我基本都推荐用 DC-DC 降压,效率能到 85% 以上,发热也小。LDO 在这个场景下发热非常可观,比如 12V 降到 5V、电流 300mA,LDO 上耗散的功率是 (12-5)×0.3 = 2.1W,没有好的散热片根本扛不住。而 DC-DC 的效率高,损耗可能只有零点几瓦。
提示:搜索“28v转5v电源模块”的时候要特别注意,模块标称的输入范围只是工作范围,瞬态耐压往往更高,做电瓶供电的项目一定要留出浪涌余量,输入端加 TVS 和足够的输入电容。
5.2 5V 输出端要不要加 TVS 管
这是个被问烂了的问题,我的答案很明确:看你的 5V 后面接什么、以及 5V 从哪来。
如果 5V 是给敏感芯片供电,尤其是从长线、外部接口、或者电瓶这类容易有浪涌的源头来的,那必须加。TVS 的作用是把瞬态高压钳位到一个安全值,防止它打穿后面的芯片。选 TVS 要看三个参数:反向截止电压 VRWM 要高于你正常工作电压,对于 5V 系统选 5.5V 或 6V 的;钳位电压 VC 要低于后面芯片的绝对最大耐压,最好留 20% 余量;峰值脉冲功率要够大,能吸收你预期的浪涌能量。
如果 5V 是从板载 DC-DC 出来、线很短、后面又是普通逻辑芯片,那加不加都行,加了更保险,不加也问题不大。我自己的习惯是:只要是外部接口引入的电源,一律加 TVS;板内生成的,看成本和空间决定。
5.3 语音芯片 3.3V 输出接 5V 主控的实例
语音芯片的 IO 大多是 3.3V 或者 2.8V 的推挽输出,用它去驱动 5V MCU 的输入时,很多人直接接上去发现识别不到高电平。原因是 3.3V 输出的高电平只有 3.3V 左右,而 5V MCU 的 VIH 可能要到 3.5V,差了一点点。
这种情况下的处理,要看方向。从 3.3V 输出到 5V 输入,可以用专用的升压型电平转换芯片,比如带 5V 侧供电的双电源芯片,低压侧接 3.3V,高压侧接 5V,数据方向设置为 3.3V 到 5V。也可以用 MOS 管加上拉的方式,让 5V 侧自己上拉到 5V,实现电平抬升。而从 5V 输出到 3.3V 输入,则要考虑分压或者专用降压方向芯片。
我做过一个项目,语音芯片是 2.8V 输出,MCU 是 3.3V 输入。这两个电压太接近,很多人以为可以直接连,实际测试发现高温或者批次差异时会偶发误码。最后我用了自动方向识别的双电源芯片,两侧分别供 2.8V 和 3.3V,问题彻底解决。所以我的建议是:电压差小于 0.5V 的跨压域通信,最好也老老实实加转换,不要图省事。
6. 常见问题与排查技巧实录
6.1 通信丢包、误码的排查路径
电平转换出问题,表现基本都是通信不稳。排查的时候我按这个顺序走,从简单到复杂,避免一上来就怀疑电路:
- 先量静态电平。不通数据的时候,两侧的高电平是不是分别等于各自电源,低电平是不是接近 0。如果静态就不对,问题在硬件。
- 再看动态波形。用示波器同时抓两侧信号,看拉低的时候另一侧有没有跟着拉低,边沿是不是太慢,有没有过冲或者振铃。
- 查上拉电阻和总线电容。边沿太慢,大概率是上拉太大或者线太长;振铃明显,多半是走线阻抗不匹配,可以串一个小电阻。
- 核对电压阈值。把发送端 VOH 和接收端 VIH 拿来对比,留的余量够不够。
- 最后查协议层。如果波形没问题还丢包,那就是时序、地址、时钟的问题,跟电平转换无关了。
6.2 常见故障速查表
| 现象 | 可能原因 | 排查/解决方法 |
|---|---|---|
| 高电平识别不到 | 发送端 VOH 低于接收端 VIH | 加电平转换,或确认能否调高供电 |
| 低电平识别不到 | VOL 偏高,超过接收端 VIL | 换低导通电阻器件,缩短走线 |
| 边沿太慢 | 上拉电阻过大、总线电容过大 | 减小上拉,缩短走线,减少节点 |
| 波形振铃 | 走线阻抗不匹配、无终端匹配 | 串小电阻,优化布线 |
| 偶发误码,温度相关 | 阈值余量不足、器件批次差异 | 加大余量,换方案 |
| 单向正常、反向不通 | MOS 管方向接反、方向引脚错 | 核对源漏、核对方向控制 |
| 发热严重 | 电源转换用了 LDO,压差大 | 换 DC-DC,加散热 |
| 上电瞬间异常 | 浪涌、上电时序问题 | 加 TVS、软启动、电源时序控制 |
6.3 几个踩过的坑,写出来让你少走弯路
第一个坑:把 MOS 管双向电路用在 SPI 上。SPI 是推挽输出,主从两边可能同时驱动同一根线,用 MOS 管电路会导致电平打架,通信时好时坏。后来老老实实换成带方向引脚的专用芯片,问题消失。记住那个电路只适合开漏总线。
第二个坑:上拉电阻两个都取 10kΩ。看似对称美观,实际 5V 侧边沿慢得像爬坡,400kHz 就误码。后来把 5V 侧降到 4.7kΩ、3.3V 侧降到 2.2kΩ,波形立刻干净。上拉电阻要按各自的电压和需要的上升时间来算,不能想当然对称。
第三个坑:忽视未使用通道的悬空。多路电平转换芯片,没用的通道我一开始就让它悬着,结果漏电流偏大,还偶尔震荡。后来每个未用通道的输入都拉到一个确定电平,输入接电源或地,输出留空,问题解决。
第四个坑:以为电压接近就能直连。前面说的 2.8V 和 3.3V 那个例子,就是活生生的教训。后来我给自己定了个规矩:只要两边供电不同,哪怕只差 0.3V,也先查阈值,拿不准就上转换,不赌运气。
7. 关于选型和成本的一点个人体会
做了这么多板子,我最大的体会是:电平转换这件事,方案本身不复杂,复杂的是判断什么时候用哪个方案。新手容易过度设计,一个几十 kHz 的开关量信号也上个数字隔离器;老手容易偷懒,觉得电压差不多就直接连,结果批产的时候出问题。
我的经验是,选型之前先把三个问题问清楚:方向是单向还是双向?速率是低速还是高速?两侧是否共地、有没有隔离要求?这三个问题的答案组合起来,方案基本就定了。低速单向共地,电阻分压或 MOS 管就够;高速双向共地,上专用芯片;需要隔离,上数字隔离器。成本上,MOS 管方案几分钱,专用芯片几毛到几块钱,隔离方案几块到几十块,按需选择,别浪费也别省过头。
还有就是,电源转换和信号转换一定要分开考虑。我见过有人拿一个电平转换芯片既想供电压又想转信号,最后两头不讨好。24V 转 3.3V 的电源,用一个靠谱的 DC-DC 模块解决;信号层面的跨压域通信,另算一套方案。分开想,思路就清楚多了。
最后说个我自己的检查习惯:每次画完原理图,我都会单独拉一张表,把板上所有不同电压域的器件列出来,标清楚哪些引脚要跨域通信,然后逐个核对是否加了转换、方向对不对、上拉够不够、阈值余量够不够。这张表帮我拦下过不少问题,尤其是板子复杂、器件多的时候,比事后拿示波器一处处量要省事得多。你也试试,养成这个习惯,跨电压域的设计会顺很多。