☰
3.3V与5V混合系统电平转换实战:串口IIC SPI全通吃
2026/10/7 5:51:17 网站建设 项目流程

3.3V与5V混合系统这个坑,我刚入行时踩得最深。一块STM32F103做主控,外设全是老款5V传感器模块,最初偷懒把所有信号线直连,结果烧了两片MCU的PA9串口引脚才长记性。后来老老实实做电平转换,从电阻分压、三极管方案一路试到专用芯片TXS0104E,才算是把这个看似简单的问题彻底解决掉。

这篇内容就围绕我实际用TXS0104E打通串口、IIC、SPI三种协议的经验展开,包括为什么放弃分立方案、芯片内部原理、接线配置、波形实测和排障过程。如果你也在做3.3V与5V器件混接的板子,这篇应该能帮你少走不少弯路。

1. 电平转换方案怎么选:先把需求账算清楚

1.1 为什么3.3V和5V系统不能直接互连

很多人刚接触嵌入式时都会遇到这个疑问:逻辑高电平不都是“1”吗,3.3V的“1”和5V的“1”有什么区别?实际上区别很大,而且可能导致两种典型的故障。

第一种故障是识别不了。5V器件如果是TTL电平标准,输入高电平阈值VIH最低是2.0V,3.3V输出在高电平状态下落到2.7V左右还能勉强识别;但如果5V器件是CMOS电平标准,VIH要求是0.7×VCC,也就是3.5V。3.3V输出在带负载以后往往只能稳定在2.7V到3.0V之间,驱动CMOS输入的5V器件时,高电平就被当成“不确定态”,设备表现就是时好时坏、偶尔误动作、通信丢字节。

第二种故障更严重——物理损坏。很多5V器件的IO引脚只做了TTL接收,没有做耐压保护,直接把3.3V引脚接上去问题不大(5V器件收3.3V信号)。但反向就危险了:5V器件的输出高电平是5V,直接送到3.3V MCU引脚上,如果MCU引脚没有做5V容忍(5V tolerant)设计,灌进去的5V电压可能击穿引脚内部的ESD保护二极管,轻则那一个引脚报废,重则整片MCU烧掉。

在选型平台上搜索“3.3V与5V转换”能找到大量方案,但每个方案的适用场景差异很大,关键要看你的信号方向是单向还是双向、协议是推挽还是开漏、速率要求是多少。这就是接下来要算的账。

1.2 主流电平转换方案横向对比

先说最便宜的电阻分压方案。两个电阻串联,从中间抽头取电压,比如3.3V信号要送给5V器件,用2.2k和3.3k分压,理论上能把3.3V分成2V左右,够TTL标准。但这个方案最大的问题是单向性——它只能把一个方向的高电压降下来,无法升压,也不能双向工作。而且分压网络的输出阻抗偏高,遇到输入阻抗低的负载,电平会被拉垮。所以电阻分压只适合非常低速、信号质量要求不高的单向信号,比如按键检测、指示灯控制。

然后是热词里经常提到的三极管电平转换电路和NMOS电平转换电路。三极管方案用NPN管做开关,输入高电平时三极管导通,输出被拉到GND;输入低电平时三极管截止,输出通过上拉电阻回到高电平。这个电路只能做单向转换,比如把3.3V的UART_TX转换成5V电平驱动5V器件。虽然成本只要几毛钱,但三极管导通时有0.6V到0.7V的饱和压降,而且需要根据信号极性、上拉阻值逐项计算。最麻烦的是它天然不支持双向协议,IIC这种开漏双向总线用三极管方案会搞得非常痛苦。

NMOS方案是很多老工程师的心头好,因为用一颗2N7002加上两个上拉电阻就能实现双向电平转换,成本极低,IIC这种开漏协议尤其适用。它的原理是:MOS管栅极接低压侧电源,源极接地,漏极接高压侧信号;当A侧(低压)拉低时,MOS管导通,B侧(高压)被拉低;当A侧释放时,MOS管截止,B侧靠上拉电阻恢复高电平。反过来,B侧拉低时MOS管的体二极管先导通,然后栅压通过源级建立,最终也把A侧拉低。这个方案在IIC上非常好用,但在推挽信号下有两个硬伤:一是自动方向判断对推挽高速信号不友好,MOS管导通和截止的切换时间有延迟,速率上限一般只有几百kHz到1MHz出头;二是信号边沿质量差,上升沿靠上拉电阻充电,容性负载稍大就变成一条斜线。

专用电平转换芯片就是为了解决上面这些痛点。热词里反复出现的TXS0104E就属于这类,它把MOS管方案做了两处关键改进:内置上拉电阻、增加one-shot加速电路。这片的优势我在后面章节详细说,先说结论:如果协议涉及IIC(开漏双向)和SPI(推挽高速)混合使用,专用芯片几乎是最省心的选择。

1.3 为什么最终选择了TXS0104E

我最终选定TXS0104E,主要是看中这几点:

通道数量刚好够用。TXS0104E是一片四通道电平转换芯片,A侧接低压(1.2V到3.6V),B侧接高压(1.65V到5.5V)。我用一片就能同时处理串口的TX/RX两路加上IIC的SCL/SDA两路;做SPI时CLK、MOSI、MISO、CS四路也刚好占满一片。

自动方向检测,免去方向控制引脚。很多电平转换芯片需要外部控制方向,比如TXB0104虽然有自动方向,但ST的某些双电源转换器要DIR引脚。TXS0104E完全自动判断信号流向,非常适合IIC这种数据方向随时变化的协议,也省了一个GPIO。

内置上拉电阻,板子外围元器件少。传统NMOS方案每一路都要外加上拉电阻,一片四通道就需要至少四颗电阻。TXS0104E内部已经集成了10kΩ上拉电阻(A侧和B侧都有),在常规应用里直接连信号线就能跑,PCB面积能省不少。

当然这颗芯片也不是没有缺点,最典型的就是开漏模式速率上限不高。数据手册标注推挽模式最高110Mbps左右、开漏模式最高1.2Mbps左右,实际使用中考虑到PCB寄生参数,开漏模式跑400kHz的IIC问题不大,但跑1Mbps就需要很注意布局了。后面我会用自己的实测数据说明这个边界在哪里。

2. TXS0104E核心特性与工作原理

2.1 引脚定义与关键电气参数

拿到芯片第一件事就是看引脚,TXS0104E的封装常见的是TSSOP-14和VQFN-14,引脚功能如下:

VCCA接低压侧电源,通常接3.3V;VCCB接高压侧电源,通常接5V。两脚之间必须加0.1μF到10μF的去耦电容,而且要尽量靠近芯片引脚放置,这个细节非常重要,我见过因为去耦电容放得太远导致高速信号边沿抖动加剧的案例。

OE是输出使能脚,低电平有效。OE为低时,所有通道处于高阻态,A端口和B端口完全隔离;OE为高时,通道正常工作。实际使用中如果不需要控制,可以直接把OE接到VCCA上,让芯片上电就工作。但要注意:数据手册要求必须先给VCCA和VCCB供电,再拉高OE,否则芯片可能进入未定义状态。所以如果你的电源时序不可控,最好用一个GPIO控制OE,上电稳定后再拉高。

A1到A4是低压侧信号端口,B1到B4是高压侧信号端口。通道是双向的,但方向有规定:A1对应B1,A2对应B2,A3对应B3,A4对应B4,不能交叉使用。信号的高电平范围必须低于对应电源电压,否则内部ESD保护二极管会导通,时间长了会出问题。

需要特别提醒一点:VCCA的电压不能高于VCCB。规格书规定VCCA的范围是1.2V到3.6V,VCCB的范围是1.65V到5.5V,但并没有要求VCCA必须小于VCCB。不过如果反着接,比如VCCA=5V、VCCB=3.3V,芯片内部结构会出问题,实测会出现发热和信号钳位异常。所以买芯片回来第一件事就是把电源引脚理清楚。

2.2 内部原理:One-Shot加速电路是怎么回事

TXS0104E的工作原理和分立NMOS方案本质上是一样的——每个通道内部都是一个N沟道MOSFET,作为双向模拟开关。但为什么它的速度能做到远高于分立MOS管?关键在于它增加了一个叫做one-shot的上升沿加速器。

先回顾一下分立NMOS方案的短板:A侧信号拉低时,MOS管导通,B侧被拉低,这个过程很快;但A侧信号释放时,MOS管截止,B侧只能靠上拉电阻对寄生电容充电,上升沿时间大约是R×C。上拉电阻10kΩ、总线电容100pF,上升沿就是1μs,换算成最高有效频率连1MHz都不到。这和IIC标准里400kHz模式下上升沿最大300ns的要求差距非常大。

TXS0104E的one-shot电路是一个边沿检测加速器:每当检测到某个通道的信号发生跳变时,它会在极短时间(约几十纳秒)内提供一个低阻路径,帮助信号快速充放电,把这个“缓坡”变成“陡坡”。你可以把one-shot理解成一个自动助力器——平时信号走10kΩ上拉的窄门,一看到有人要冲过去,就立刻打开一个高速宽门,等信号稳定后再关闭。

正是这个机制让TXS0104E在推挽模式下能跑100Mbps级别,在开漏模式下能跑1.2Mbps左右。但one-shot也不是万能的,它要求信号跳变必须足够快才能被检测到。如果你的总线电容特别大(比如长排线、多个设备并联),信号本身已经变成了缓坡,one-shot可能检测不到上升沿或来不及加速,就会出现输出波形变形甚至通信失败。这也是为什么在所有应用笔记里都强调:电平转换芯片要尽量靠近信号源,走线要短、要细(减小容性),而不是堆一大堆元件。

2.3 数据手册容易被忽略的几个硬性要求

我读TI的TXS0104E数据手册读了好几遍,有几个要求几乎不在最显眼的位置,但实际掉坑的人都栽在这里。

第一,A端口的输入信号不能超过VCCA。比如VCCA接3.3V,但A1口被外部拉到了5V,芯片内部的保护二极管会正向导通,电流灌进VCCA,导致VCCA被抬高、其他通道逻辑异常。所以检查原理图的时候一定要确认:凡是接到A侧的信号,都必须是3.3V域的信号;5V域的信号只能接B侧。

第二,未使用的通道不能悬空。数据手册建议将未使用通道的A端口和B端口直接接到GND,避免通道上的浮动电压导致内部振荡、增加静态功耗。如果你有一路通道暂时用不到,不要把引脚悬空,接个地最省事。

第三,上电时序问题。VCCA和VCCB必须至少有一个先上电,然后OE引脚才能被拉高。如果OE一直强制接高,而VCCB还没供上,芯片内部的ESD结构会通过OE引脚反向供电,导致VCCB上出现一个莫名其妙的电压。在电源设计里,如果你无法保证时序,可以把OE接到RC延时电路上,让OE比电源晚几十毫秒拉高。

3. 三种协议场景的接线设计与注意事项

3.1 串口(UART):双通道是最低配置

串口通信是典型的全双工双向协议,MCU的TX引脚和RX引脚是独立的,所以需要至少两个通道:一个通道把MCU的3.3V TX转换成5V信号给外设,另一个通道把外设的5V TX转换成3.3V信号给MCU。

以STM32F103和一款5V电平的GPS模块为例,接线如下:

A1接MCU_TX(3.3V),B1接GPS_RX(5V);A2接MCU_RX(3.3V),B2接GPS_TX(5V)。这样MCU发数据时,信号从A1流向B1完成升压;GPS发数据时,信号从B2流向A2完成降压。

实际使用中用9600波特率、115200波特率跑,TXS0104E都稳得很。我最高试过921600波特率,这个速率下5V侧波形的边沿依然干净,没有出现误码。串口是最不需要担心速率问题的场景,因为哪怕921600波特率,单bit时长也还有约1μs,而TXS0104E在推挽模式下的单bit时间远小于这个值。

接线时还要注意共地问题。GND是电平转换的基准,如果3.3V系统和5V系统不共地,B侧的高电平和A侧的低电平都不是绝对参考,通信时必然乱码。我见过有人把TXS0104E的GND悬空,结果从示波器看波形呈现巨大的共模噪声,串口就是不通。记住:VCCA、VCCB、GND必须和两侧系统共地。

另外提一个很多新手忽略的细节:如果5V外设的RX引脚内部已经有上拉电阻,TXS0104E的B1端口又有内部10kΩ上拉,两个上拉并联后等效约5kΩ,电平转换后的低电平会略高于理想GND。实测在5V电压下,B侧低电平大约0.12V左右,完全在TTL低电平阈值范围内,不影响使用。

3.2 IIC:开漏协议下的上拉电阻匹配是重点

IIC是最能体现TXS0104E价值的场景,因为在IIC总线上数据线是双向的,而且协议本身就是开漏结构。SCL时钟线和SDA数据线都需要带上拉电阻。用TXS0104E时,SCL和SDA各占一个通道,接线方式如下:

A1接MCU的SCL(3.3V域),B1接IIC从设备的SCL(5V域);A2接MCU的SDA(3.3V域),B2接IIC从设备的SDA(5V域)。A侧和B侧各有一个内部10kΩ上拉电阻到各自的VCC,所以从原理上TXS0104E自己就构成了完整的上拉路径。

但实际项目中,我强烈建议不要只依赖内部10kΩ上拉。原因有两个。一是总线上如果挂了多颗设备,总线电容会成倍增加,内部10kΩ恢复高电平的速度可能不够。我实测过:在3.3V侧只靠内部10kΩ上拉,连接一颗5V IIC传感器(板载4.7kΩ上拉)后,400kHz下SDA上升沿已经到200ns左右,勉强符合IIC标准;如果再并联第二颗设备,上升沿就超过300ns了。这时候在B侧外部并联一颗4.7kΩ或2.2kΩ上拉,上升沿能压回100ns左右。

第二个原因是IIC总线上可能在5V侧还有一颗上拉电阻,如果你选的阻值特别小(例如1kΩ),加上TXS0104E内部10kΩ、外部并联合计后等效上拉可能只有约800Ω。等效上拉越小,对芯片内部NMOS下拉能力的要求就越高。虽然TXS0104E的NMOS导通电阻只有约十几欧姆,但过小的上拉会增大功耗,在低压系统里白白浪费电流。我常用的经验值是B侧外部上拉选4.7kΩ起步,如果需要更快边沿再并联一颗4.7kΩ,不要直接上1kΩ。

还有一个IIC特有的问题:时钟拉伸(clock stretching)。有些从设备在内部处理数据时会把SCL拉低,让主机等待。TXS0104E对这种从B侧拉低、A侧检测到的操作完全兼容,因为通道是双向的,方向自动感应。但如果你的从设备时钟拉伸时间特别长,比如超过1ms,有些便宜的电平转换芯片会误判总线空闲,但TXS0104E没有这种问题,它的静态行为就是简单透传。

实际我在板子上跑过两路IIC设备同时挂在TXS0104E后面,一颗是5V温湿度传感器(SHT30的5V兼容版本),另一颗是5V OLED显示屏。外部4.7kΩ上拉,全程400kHz跑,逻辑分析仪抓波形没有任何问题。如果你遇到IIC偶尔失败,优先查SDA低电平是否足够低、上升沿是否太缓,而不是怀疑芯片。

3.3 SPI:推挽高速信号的速率边界与片选处理

SPI是另一种典型的电平转换场景,但它和IIC有本质区别:SPI是推挽输出,信号由MOS管主动驱动高和低,不依赖上拉电阻。所以SPI信号经过TXS0104E时的行为,其实更接近推挽模式下的单向传输,只是方向会不断切换。

一个标准的SPI主机需要四根线:CLK、MOSI、MISO、CS。如果MCU是3.3V系统、从机是5V系统,那么CLK、MOSI、CS是主机输出到从机,方向固定为A到B;MISO是从机输出到主机,方向固定为B到A。这四路信号刚好占满一片TXS0104E的四个通道:

A1接MCU_CLK,B1接从机_CLK A2接MCU_MOSI,B2接从机_MOSI A3接MCU_MISO,B3接从机_MISO A4接MCU_CS,B4接从机_CS

让我把TXS0104E在推挽模式下的速率边界说清楚。数据手册标称推挽模式最高约110Mbps,换算成SPI时钟大约是55MHz,听起来很高。但那是理想条件下的极限参数,实际板子上考虑到走线、过孔、连接器、负载电容等因素,我实测过的稳定上限大约是12MHz左右。我在一块普通双面板上跑STM32F103的硬件SPI,时钟设8MHz时波形完整、从机通信正常;改成16MHz后,MISO信号出现明显的上升沿缓坡,偶尔数据错误;改成20MHz基本就不可用了。

这背后的原因是TXS0104E的one-shot电路虽然能加速边沿,但它的加速宽度是有限的。高速推挽信号下,一个时钟周期只有几十纳秒,one-shot的检测和恢复时间跟不上,信号就会失真。所以如果你要做SPI,TXS0104E适合12MHz以下的场景,这是我在多块板子上反复验证过的结论。

片选信号还有一个细节:CS在空闲时是高电平,传输时拉低。TXS0104E对CS的拉低信号识别没有额外延迟,但CS拉低后我建议至少延时几十纳秒再启动SCLK,给电平转换通道一点“建立时间”。实际用STM32的硬件SPI时,SPI外设本身就有一个延时参数(CS to SCLK delay),我用的是约2个SPI时钟周期的延时,效果很好。如果CS切换频繁,或者从机在CS下降沿就开始采样,电平转换的延迟可能导致第一个字节读取错误,这个问题排查起来非常隐蔽。

4. 实操过程与关键环节实现

4.1 硬件连线速查表

下面是我在一款自研STM32F103主控板上实际使用的接线表,供你参考:

引脚连接对象说明
VCCA3.3V电源与GND之间并0.1μF和10μF去耦电容
VCCB5V电源与GND之间并0.1μF和10μF去耦电容
GND系统地所有GND连成同一个地平面
OEVCCA不控制时直接拉高,上电稳定后使能
A1MCU串口TX3.3V域信号
B15V外设串口RX5V域信号
A2MCU串口RX3.3V域信号
B25V外设串口TX5V域信号
A3MCU IIC SCL3.3V域信号
B35V外设 IIC SCL5V域信号
A4MCU IIC SDA3.3V域信号
B45V外设 IIC SDA5V域信号

如果同时用到串口和IIC,TXS0104E四个通道正好分配完。如果换成SPI方案,把A1到A4对应接CLK、MOSI、MISO、CS即可。这个表看着简单,但我在第一版原理图上犯过一个错误:把OE悬空了。结果芯片上电后静态电流比正常值大了将近3倍,因为OE引脚内部有上拉,悬空会导致内部逻辑犹豫不定、产生漏电。所以OE要么接VCCA,要么用GPIO控制,绝对不要悬空。

4.2 STM32侧代码配置要点

硬件连接搞定后,软件层面也要注意一些细节。我用的是STM32F103,虽然它自带硬件IIC外设,但社区里几乎公认硬件IIC存在不少坑,所以我做IIC通信时更推荐使用软件模拟IIC。软件模拟的好处是时序完全可控,换引脚不容易死锁,而且配合TXS0104E的extra delay也能灵活调整。

软件模拟IIC的核心就是两个引脚加延时函数。用GPIO开漏模式输出SCL和SDA,调用一个带延时参数的IIC_Start、IIC_Stop、IIC_SendByte、IIC_ReadByte函数组。注意在发送起始信号时,SDA拉低后要加至少5μs延时再拉低SCL,因为TXS0104E的低压侧和高压侧之间存在ns级延迟,信号经过转换后才在5V器件侧看到正确的时序。

SPI部分,我使用STM32的硬件SPI外设配合CubeMX配置,但有几个关键参数要特别设置:SPI时钟极性和相位(CPOL/CPHA)必须和从机匹配;SPI速率不要超过10MHz,我在8MHz下最稳定;CS片选用软件GPIO控制,不启用硬件NSS,这样切换速度快且可控;用DMA搬运数据,减少CPU占用。

CubeMX配置步骤大致如下:选择SPI1或SPI2,模式设为Full-Duplex Master,CPOL和CPHA根据从机的数据手册选择,波特率预分频设到SPI时钟8MHz左右,数据大小8Bit,MSB First。然后另外配置两个GPIO引脚作为CS片选,模式为普通推挽输出,初始电平拉高。在代码里,发送数据时先拉低CS,调用HAL_SPI_Transmit_DMA发送命令字节和地址字节,再调用HAL_SPI_Receive_DMA接收数据,接收完成后拉高CS。

如果你用SPI读取温湿度传感器、Flash芯片这类数据,DMA的配合十分关键。Cubemx生成的启动代码里,注意要先开启SPI接收中断或DMA传输完成中断,在中断回调函数里判断数据接收完成,再继续后续处理。不要在主循环里用阻塞方式等DMA完成标志,否则会让出大量CPU时间。

4.3 波形实测与信号完整性分析

为了验证电平转换效果,我用一台200MHz带宽的示波器抓了几个关键信号波形。

串口场景:115200波特率下,A1输入的3.3V串口波形和B1输出的5V波形对比,5V侧高电平约4.96V,低电平约0.08V,上升沿约8ns,下降沿约6ns,波形方正无明显回沟。这个品质完全可以直接驱动5V的USB转串口芯片。

IIC场景:加外部4.7kΩ上拉,400kHz时钟下,SDA从低到高的上升沿实测约95ns,SCL上升沿约80ns。如果没有外部上拉,仅靠内部10kΩ,SDA上升沿实测约210ns,SCL约170ns,虽然还能用,但余量不多。所以我建议IIC场景至少加一颗外部4.7kΩ上拉。

SPI场景:8MHz时钟下,CLK信号通过TXS0104E后,高电平约4.9V,低电平约0.1V,上升沿约14ns,下降沿约11ns,信号完整。当我把SPI改成16MHz时,上升沿变成约30ns,边沿明显变缓且出现了平台效应,这就是one-shot加速器跟不上节奏的表现。

从这些数据可以总结一个经验:3.3V与5V系统间用TXS0104E,串口随便用,IIC带负载别太野蛮,SPI控制在10MHz左右以内都是稳的。

5. 常见问题与排查技巧实录

5.1 问题现象速查表

我在使用TXS0104E的过程中遇到过下面这些问题,列成表供大家对照:

现象可能原因解决措施
输出波形边沿太缓、低电平压不下来外部上拉电阻过小导致下拉困难;总线容性负载过大;走线过长在B侧并联4.7kΩ~10kΩ上拉,减小上拉电流;缩短走线、减少过孔
IIC通信偶发失败、SDA卡在低电平主从机SCL/SDA接反;IIC速率过高且上拉不足;从机地址错误用逻辑分析仪抓时序,确认起始/停止条件;降到100kHz测试;检查从机地址
SPI只能低速、10MHz以上乱码TXS0104E推挽高速性能达到边界;CS/CLK时序余量不足;从机对时序要求严苛降速到8MHz;调整CS到CLK的延时;检查SPI极性和相位
串口乱码波特率过高;地线未共地;VCCB纹波大;OE悬空确认共地;在VCCB附近加去耦电容;OE接VCCA;降低波特率
芯片轻微发烫VCCA和VCCB接反;OE悬空;某个端口信号超过电源电压检查电源引脚;确认信号引脚电压不高于VCCA/VCCB

5.2 一次IIC“花屏”事故的完整排查过程

这里分享一个真实案例。我曾经用TXS0104E连接一块5V供电的IIC OLED屏,一开始通信不稳定,屏幕初始化经常失败,偶尔成功显示却出现花屏、字符错乱。

我先用逻辑分析仪抓了IIC总线波形,发现SCL和SDA的上升沿都严重超过IIC规范,400kHz模式下降沿只有30ns左右,上升沿却有450ns。于是我在B侧(5V侧)SCL、SDA分别外并了一个4.7kΩ上拉电阻到5V,上升沿从450ns降到了130ns,但花屏依然时有时无。

接着我怀疑软件时序,把IIC速率从400kHz降到100kHz试,花屏概率明显降低,但初始化偶尔还是失败。后来发现OLED模块板上已经有上拉电阻,再并联后等效上拉过小,导致低电平被拉高到0.4V以上,超过了从机的低电平阈值0.3×VCC=1.5V(5V × 0.3 = 1.5V,0.4V倒还够),但接近极限值。最终解决办法是把外部上拉电阻拆掉,只保留模块自带上拉电阻加上TXS0104E内部10kΩ,等效上拉约3kΩ,同时把IIC速率设在200kHz,自此屏幕稳定运行。

复盘这个案例,核心教训是:IIC总线上多重上拉叠加时,等效上拉未必越大越好,关键是找到“边沿够快”和“低电平足够低”的平衡点。遇到花屏先别急着加电阻,先算算总线上已经有几颗上拉电阻。

5.3 选型建议与替代方案参考

如果你看完这篇不想用TXS0104E,或者你的项目已经超出了它的适用边界,这里给几条选型参考。

如果你的系统里SPI时钟必须跑到20MHz以上,TXS0104E基本扛不住。这时候考虑TI的TXB0104,它也是四通道自动方向,但推挽模式下速度更高。不过TXB0104不支持纯开漏协议(比如IIC),所以如果你既要IIC又要高速SPI,最好在板子上同时留TXS0104E和TXB0104两类位置。

如果你只是处理串口这种单向低速信号,一颗几毛钱的2N7002 NMOS管加上两个上拉电阻组成分立电平转换电路完全够用。它效率高、成本低,唯一的门槛是需要根据电阻值和总线电容算好边沿时间。我一般用它处理UART或者单总线这类低速信号。

如果是1.8V转3.3V这种更低压差的应用,TXS0104E也支持,只要VCCA接1.8V、VCCB接3.3V即可。但要注意芯片内部10kΩ上拉在1.8V侧时,高电平驱动能力比3.3V时弱一些,IIC总线上挂的设备多时要适当减小上拉电阻。

最后还有一点:市面上存在TXS0104E的国产兼容型号,和TI原厂相比参数略有差异。如果项目对稳定性要求高、数据速率拉得比较满,优先选用TI原厂正品,别在关键信号链路上省几块钱。

关于电平转换的一点个人体会

用过一圈方案后,我觉得电平转换这件事最核心的不是选型,而是想清楚你的信号到底是什么方向、什么速率、什么协议类型。单纯做UART,电阻分压和MOS管都够;做IIC双向总线,NMOS或TXS0104E都行;做SPI要高速,就得认真评估芯片的推挽能力。TXS0104E在串口和IIC场景是“万能钥匙”,在SPI场景则是“够用但别拉满”。我自己的板子上,现在只要遇到3.3V和5V混接,第一版设计都会预留一片TXS0104E的位置,把A侧B侧信号都引到焊盘上,等调通了再根据实际情况决定要不要把芯片换成更便宜的方案。这种保守做法虽然占面积,但省下的排查时间远远超过一块芯片的成本。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询