ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

RS-232收发器VLVL可调低压接口:电平转换的工程实践

RS-232收发器VLVL可调低压接口:电平转换的工程实践 RS-232这个接口说它老吧新出厂的PLC、工业仪表、数控系统里还全是它的影子说它新吧很多年轻工程师只在课本里见过DB9的样子。最近我在做一台老式称重仪表和一块1.8V逻辑电平的FPGA之间的对接信号链路原本以为要串两三级电平转换直到我换了带VLVL可调低压接口的RS-232收发器一颗芯片就把逻辑侧电压问题解决了。这篇文章就把我对这类带可调低电压接口的RS-232收发器家族的了解和使用经验整理出来它们解决了什么问题、内部到底怎么实现、可调该怎么用、选型时盯哪些参数、原理图和PCB上有哪些坑、以及串口不通时我从哪里开始查。适合正在做工业数据采集、嵌入式调试口、老设备通信改造的硬件工程师和嵌入式开发者。1. RS-232为什么到今天还没退场先搞清楚我们到底离不开它什么1.1 一个老协议的生存逻辑RS-232从1960年代诞生到现在标准修订过好几轮速率上限在原始标准里只有20kbps线长常规认知也就15米左右。单看这两个数字它确实没什么技术先进性。但你要真去过工厂、进过机房、拆过医疗设备就明白RS-232仍然大量存在是有硬道理的。核心原因有三个。第一是点对点、全双工三根线就能通信不需要地址、不需要方向控制、不需要终端匹配电阻硬件上几乎是零负担。第二是协议简单到了极致一个起始位、几个数据位、一个停止位没有帧格式协商出问题非常好查。第三是抗干扰能力在线RS-232的电气特性是负逻辑差分电压空闲时为负电平携带信息时跳到正电平对外部噪声的免疫能力远强于裸的TTL电平串口。这三种特性叠加起来让RS-232在工业设备、商用仪表、老式检测仪器、以及几乎所有开发板的调试串口上始终占有一席之地。你去看现在市面上主流MCU开发板板载USB转串口芯片用的还是RS-232电平标准的变体或者TTL电平而工厂里的PLC、CNC、称重仪表、条码枪DB9接口的RS-232仍然是标配。1.2 RS-232电平与TTL/CMOS的天然冲突这里必须先说清楚一个基础问题RS-232的逻辑电平和MCU的UART引脚逻辑电平是完全不同的两套标准。RS-232标准规定驱动器输出端逻辑0SPACE对应5V到15V逻辑1MARK对应-5V到-15V接收端逻辑0判定阈值为3V以上逻辑1判定阈值为-3V以下±3V之间是无效过渡区。而大多数MCU、SoC、FPGA的UART口是3.3V或者1.8V CMOS电平逻辑高电平是VDD逻辑低电平是GND。这就产生了一个直接的矛盾如果把TTL电平的TXD直接接到RS-232设备的RXD上设备收到的是一堆无法正确判定的电平反过来RS-232设备输出的-10V到10V电压直接灌进MCU引脚轻则逻辑错误重则烧毁引脚。RS-232收发器要干的事情就是在这两套电平标准之间做双向转换发送方向把逻辑侧的TIN电平变成RS-232电平输出到TOUT接收方向把RS-232电平的RIN变成逻辑侧电平从ROUT输出。经典方案如MAX232用电荷泵把单电源升压成约±10V驱动能力足够带标准的RS-232负载。但MAX232那代产品有一个明显的局限逻辑侧电平是固定的5V兼容如果你用的是3.3V甚至1.8V主控直接接ROUT/TIN会有电平不匹配风险。这也就引出了带可调低压接口的新收发器家族。2. 可调低压接口到底调的是哪个电压VLVL机制拆解2.1 从固定电平到可调参考VLVL引脚出现的背景早期RS-232收发器面向的都是5V逻辑系统MCU、PC的UART几乎都是5V TTL所以逻辑侧接口直接兼容5V就够用了。但近几年低压MCU、1.8V FPGA、低功耗SoC大量出现逻辑电平降到1.8V甚至1.2V已经非常普遍这时候问题就来了一颗5V兼容的收发器ROUT输出高电平可能是3.5V以上接到1.8V供电的FPGA引脚上轻则触发引脚过压保护重则通过IO钳位二极管倒灌电流到FPGA内核电源造成逻辑混乱甚至永久损伤。带VLVL引脚有的芯片叫VL、VIO、VCCLOGIC的收发器就是为了解决这个逻辑侧电平适配问题。这类芯片内部把逻辑接口电路单独供电VLVL引脚外接的电压就是ROUT高电平的幅值同时也是TIN输入高电平的判定参考。换句话说你把VLVL接到1.8V芯片的ROUT输出高电平就是1.8V把VLVL接到3.3VROUT输出高电平就是3.3V。逻辑侧电平由这颗引脚或者说是这个逻辑电源域决定和VCC主电源、电荷泵产生的RS-232侧电平完全分开。2.2 为什么不是电阻分压驱动能力、边沿速率和噪声容限很多人第一次看到VLVL会想逻辑侧电压适配用几个电阻分压不也能实现吗答案是不能至少不能可靠地实现。原因有三层。第一层是驱动能力。ROUT要驱动后级MCU/FPGA引脚的输入电容和可能的PCB走线寄生电容同时还要保证高电平不低于VIH门槛、低电平不高于VIL门槛。纯电阻分压输出阻抗高遇到负载电容稍微大一点高电平就会被拉低噪声容限急剧下降。第二层是边沿速率。RS-232接收器输出的边沿必须足够陡峭否则高速位流会因为上升沿过缓产生码间干扰直接表现为高波特率下误码。VLVL域内部是专门设计的CMOS输出级推挽驱动能力几十毫安级别能做到纳秒级边沿这是电阻分压根本做不到的。第三层是噪声容限。VLVL域的逻辑电路内部有明确的输入阈值对输入信号做迟滞比较能保证在工业现场噪声环境下稳定判决。我打个比方电阻分压就像用一根细水管给花园浇水水压不够末端出水淅淅沥沥VLVL域的输出级则是一个水泵无论前面水位多低只要在额定范围内出水压力都能满足要求。所以可调低压接口的本质是把逻辑电平适配这件事从外部搬到芯片内部用真正的逻辑门电路去实现。2.3 接VLVL时的几个关键操作要点VLVL引脚看似简单实际接法上有五个细节容易被忽略VLVL的电压范围要查数据手册一般可以覆盖1.4V到5.5V具体型号有差异但绝对不允许超过VCC或超过绝对最大额定值否则内部逻辑电路会损坏。VLVL引脚必须接一个0.1µF陶瓷电容到地而且要尽量靠近引脚放置。这个电容不仅是电源去耦更重要的是为ROUT输出级的瞬态电流提供储能电容离太远会导致边沿变差。VLVL必须连接到实际主控IO域的电平而不是想当然地接一个固定值。比如主控是1.8V的FPGAVLVL就应该接1.8V的电源轨而不是3.3V。如果VLVL接的是独立电源轨要注意上电时序。有些芯片手册要求VLVL不能先于VCC上电否则内部ESD结构可能导通这个问题在低功耗设计里尤其容易踩。调试时可以用0欧电阻或者跳线把VLVL接到不同电平轨这样同一块板子既能测3.3V主控又能测1.8V主控相当于把可调变成产线上的实际选项。我实际用下来VLVL最省心的一点是它把逻辑电平适配从外围电路设计问题变成了引脚连接问题原理图简洁很多BOM也少了几颗电平转换芯片。3. 新收发器家族选型要盯紧的关键参数不是所有新都适合你3.1 速率、通道数与封装带VLVL的RS-232收发器家族市面上主要是MAX3223E、MAX3232E、TRS3232E、SP3232E这类型号通道数从单路到五路都有。选型第一步是明确你的实际需求需要几路收发通道常见的是单收发1T1R加流控信号RTS/CTS的三通道、双收发2T2R的完整串口以及带额外通道的版本。速率方面传统MAX232数据手册标称是120kbps左右而带VLVL的新家族普遍支持250kbps部分型号能做到1Mbps甚至更高。这个速率提升主要靠优化电荷泵和输出级的动态响应实现。实际项目中如果只跑9600到115200波特率250kbps完全够用但如果你要用来做固件升级或者高速数据采集速率就得认真看。注意一点数据手册给的速率上限通常是理想负载下的值实际线长、线缆电容、接收端负载都会影响极限速率设计时留20%以上余量比较稳妥。封装上主流是SOIC-16、TSSOP-16、QFN等还有超小封装用于空间受限的便携设备。如果只是把RS-232调试口做出来SOIC-16手工焊接最友好如果是量产产品追求面积QFN更合适。3.2 ESD保护等级连接器级防护的第一道防线RS-232接口通常暴露在机箱外部插拔瞬间、线缆摩擦都会产生静电放电。收发器自带ESD保护能力是选型时非常关键的参数。常见的ESD参数标注有HBM人体模型和IEC 61000-4-2两种。HBM是芯片级测试数值高不代表系统级防静电能力强IEC 61000-4-2才是更接近实际使用场景的测试。带E后缀的型号如MAX3232E一般在RS-232引脚上提供IEC 61000-4-2接触放电±8kV、空气放电±15kV的防护能力。有这个等级的ESD保护在小信号场合基本可以省掉外部TVS管但前提是PCB布局要配合——连接器到芯片的走线要短ESD泄放路径要通畅。我在实际产品里测试过带ESD保护的收发器在打±8kV接触放电时芯片本身能扛住但如果PCB地处理不好复位引脚、电源引脚还是可能受干扰导致系统重启。所以ESD等级是芯片的底线不是系统的全部。3.3 单电源供电范围与电荷泵电容带VLVL的新家族普遍支持3.0V到5.5V的单电源供电这意味着同一颗芯片既能用在3.3V系统也能用在5V系统对BOM整合很友好。电荷泵通过内部开关和外部四个小电容升压/反压产生RS-232侧需要的正负电压。传统MAX232需要的电荷泵电容是1µF新家族很多只需要0.1µF甚至0.047µF电容体积更小启动时间也更快。电荷泵电容的取值不能随便改数据手册上给的推荐值是基于芯片内部开关管导通电阻、电容耐压和带载能力的综合优化结果。电容容量太小电荷泵带载时电压跌落明显RS-232输出正负电压幅度不对称接收端就可能误码容量太大启动瞬间冲击电流变大反而可能引起电源跌落。我建议严格按手册推荐值来如果因为PCB空间原因想换小电容先看手册上有没有给出替代值的范围没有的话不要凭感觉换。3.4 新老家族参数对比用表格说话参数经典MAX232带VLVL新家族如MAX3232E/TRS3232E电源电压5V3.0V-5.5V逻辑侧电平5V固定VLVL可调1.4V-5.5V数据速率120kbps250kbps-1Mbps电荷泵电容1µF0.1µF/0.047µFESD等级无标注或较低常见±8kV/±15kV自动关断/唤醒无部分型号有典型封装SOIC-16SOIC-16/TSSOP-16/QFN从表格能看出来升级的核心并不只是速率和功耗而是逻辑侧接口从固定5V变成可调VLVL这一步的变化其实比速率提升更能解决实际问题。特别提醒一点有自动关断功能的型号如果MCU侧串口长时间无活动芯片会进入低功耗模式激活时需要几百微秒甚至几毫秒的唤醒时间这会导致通信的第一帧数据丢失。如果主控对响应时延敏感建议把自动关断功能关掉或者选不带该功能的型号。4. 从原理图到PCB让可调低压接口真正稳定工作的实战细节4.1 电源去耦与电荷泵电容布局原理图上看似简单PCB布局才是决定性能的关键。以我最近画的一块数据采集板为例整板用5V给收发器供电VLVL接3.3V。电源去耦采用了VCC引脚放100nF陶瓷电容靠近电源引脚加10µF钽电容稍远的组合VLVL引脚单独放了一颗100nF陶瓷电容紧贴引脚。电荷泵的四个电容放在芯片附近尽量让C1、C1-、C2、C2-、V、V-这几个引脚的走线短而粗电荷泵环路面积越小输出纹波越小辐射噪声也越小。有一个细节很多人会忽略电荷泵电容的地端。在双层板上如果电荷泵电容的地端不是就近回到芯片附近的地而是绕了很远才到主地平面电荷泵的高频开关电流就会在走线上产生压降导致V和V-电压不稳。正确的做法是所有电荷泵电容的地端和VCC去耦电容的地端集中汇合再单点连到主地平面。4.2 VLVL引脚与逻辑侧走线的处理VLVL引脚是芯片上的娇贵引脚它直接决定了逻辑侧的电平精度。走线时要注意VLVL的电容地必须和ROUT输出、TIN输入的地参考在同一区域避免地环路引入噪声。ROUT和TIN走线尽量短不要和电荷泵走线平行否则电荷泵开关噪声会耦合到逻辑信号上。如果VLVL接的是很弱的电源轨比如LDO输出端离得很远建议在VLVL脚附近再放一个10µF电容避免ROUT输出级的瞬态电流把VLVL电压拉出纹波这在高频连续发送数据时尤其重要。我碰到过一种情况VLVL接的电源轨走线过长阻抗偏大115200波特率连续发送时ROUT高电平只有1.55VVLVL是1.8V后级FPGA偶发采样错误加了一颗10µF电容后波形立刻恢复正常。4.3 连接器附近的防护与接口走线RS-232连接器通常是DB9是板子外部接口插拔、静电、线缆感应都是威胁。尽管芯片自带ESD保护如果系统要过严格的EMC测试我仍然建议在连接器侧预留TVS管位置。TVS管选型时工作电压要高于RS-232的最大正常电压通常是±15V钳位电压要在收发器绝对最大额定值以内同时TVS的地要直接回到机壳地或连接器外壳地不要把ESD电流引到逻辑地平面。RS-232的收发走线TOUT到DB9DB9到RIN尽量短并且和逻辑侧信号不要平行走线。如果你画的是多层板给RS-232信号安排一个完整的地参考层能明显降低辐射和耦合。还有一点DB9的外壳地脚通常编号是金属壳千万不要悬空最好通过1MΩ电阻并联1nF电容连接到逻辑地这样既能把机壳静电泄放走又不会形成地环路噪声。4.4 一个典型应用案例1.8V FPGA对接老式称重仪表项目背景是这样的一台老式称重仪表只提供DB9的RS-232输出2400波特率每秒输出一次重量数据主控是一块1.8V供电的FPGAIO不能承受3.3V。我选了一颗带VLVL的双通道RS-232收发器5V电源供电VLVL接到1.8V电源轨ROUT直接连FPGA的RXDFPGA的TXD接TINDB9的TXD/RXD接到仪表。硬件连接示意5V - VCCGND - GNDVLVL - 1.8V_FPGA_IOTOUT - DB9 RXD仪表发送到我们RIN - DB9 TXD我们发送到仪表TIN - FPGA TXDROUT - FPGA RXD电荷泵电容0.1µF x4VCC去耦100nF 10µFVLVL去耦100nF 10µF整板调试很顺利FPGA侧只用了单端1.8V信号就能和仪表的±8V RS-232电平稳定通信。换成以前的做法1.8V逻辑侧必须先经过一颗电平转换芯片转成3.3V再接MAX232原理图多一级还多一路电源现在一颗芯片全搞定。5. 串口不通时我从哪查起一套可复现的排查链路5.1 第一刀用万用表量静态电平串口不通先别急着改代码拿万用表从芯片静态电平开始量这一步能定位大多数硬件问题。把系统上电但不要让主控发送数据此时串口处于空闲状态MARK。RS-232收发器的TOUT引脚即发送数据输出在空闲时应为负电压正常范围大约在-5V到-10V之间具体取决于VCC电压和负载情况。如果量到0V或者正电压说明驱动器没有正常工作检查VCC、电荷泵电容、以及TIN脚的电平。TIN脚空闲时应该被拉高等于VLVL或者接近VLVL如果TIN被外部电路拉低TOUT就会出现正电平这在原理图评审时就要确认清楚。接收方向同理RIN引脚空闲时应该是负电压对端正常发送空闲时就是负电平ROUT引脚空闲时应输出高电平接近VLVL。如果RIN有负电压但ROUT是低电平说明接收器坏了或者VLVL没接对如果RIN就是0V那问题大概率在对端设备或者线缆上。万用表能解决70%的问题剩下的30%就要上示波器了。5.2 第二刀示波器看端到端波形示波器能直接显示RS-232的幅度和时序是排查高速误码、幅度不足、波形畸变的利器。用示波器同时测TIN和TOUT触发在TIN的下降沿起始位观察TOUT的波形幅度是否对称正电平应该接近V负电平应该接近V-。如果正压不足查V电容和VCC带载能力如果负压不足查V-电容。边沿是否陡峭正常情况下边沿应该在亚微秒级。如果边沿明显变缓可能是电荷泵电容太大/太小或者负载电容过大线缆过长。是否有振铃如果TOUT波形过冲大、有回铃说明PCB走线阻抗不连续或者串扰需要在布局上优化。接收方向也可以这样测从DB9的TXD脚注入一个已知数据流比如用USB转RS-232模块发0x55同时测RIN和ROUT确认接收器和电平转换正常。0x55这个数据是0b01010101在示波器上能看到清晰的方波边缘都能对得上比随意发字符串直观得多。5.3 第三刀自环测试与对端排除如果芯片静态电平正常、波形也OK但通信还是不通下一步做自环测试。把DB9的2脚和3脚短接TXD和RXD短接在电脑上用串口助手发数据看能否收到自己发的数据。自环通了说明本端收发器和线缆连接没问题问题出在对端设备或者协议配置上自环不通问题一定在本端。自环测试要注意一点如果只测试芯片本身可以在芯片的TIN和ROUT之间飞线短接但这样绕过了连接器和线缆测不出接口部分的问题。工程上我一般先测DB9端的2-3短接再测芯片引脚的自环两段分开定位能快速判断故障区间。5.4 我踩过的三个典型坑排查经验再多也不如自己踩坑来得深。这里分享三个我实际遇到过的坑供大家参考。第一个坑是VLVL引脚悬空。有一块板子芯片VLVL没接任何电源结果ROUT输出高电平不稳定在1.0V到1.4V之间飘FPGA偶发识别错误。查了半天才发现是VLVL悬空导致内部逻辑电路处于不确定状态。VLVL要么接实际电平轨要么至少接一个稳定的参考电压不要悬空设计。第二个坑是电荷泵电容极性装反。早期用钽电容做电荷泵储能结果贴片时方向搞反上电后电容发热、鼓包板子差点报废。后来统一换成陶瓷电容彻底杜绝了极性错误的问题。陶瓷电容没有极性容量和耐压足够的情况下电荷泵场景比电解电容可靠得多。第三个坑是流控信号没接导致死等。双通道收发器带RTS/CTS流控信号原理图上没接固件里又开了硬件流控结果发送端一直在等CTS变低实际通信完全卡死。排查到最后发现是固件配置问题但根源是硬件设计没把流控信号拉高。如果不需要流控芯片的CTS输入引脚一定要通过电阻拉到一个确定电平不能悬空。5.5 关于低功耗和自动关断的一点补充带自动关断功能的收发器在电池供电设备里很香但它有个隐藏行为当RIN或TOUT视具体型号而定线上长时间没有活动时芯片会自动关断内部驱动器此时再收到第一个字节需要一定的唤醒时间。如果主控发送前没有插入前导字符或者延时第一帧数据很容易丢掉。解决办法有两个一是在固件里发送前先延时几毫秒让芯片完成唤醒二是干脆禁止自动关断功能把对应引脚固定电平。对绝大多数工控场景我建议直接禁用自动关断通信可靠性优先功耗差的那几百微安对设备整体影响微乎其微。整套排查链路走下来串口不通的原因一般都能定位到芯片供电/电荷泵、VLVL接线、连接器线路、流控配置这几类。RS-232收发器虽然只是个电平翻译器但它的可靠工作依赖于原理图、PCB布局、固件配置三方面同时到位。如果你正在新设计里用这类带VLVL的收发器我的建议是原理图阶段就把VLVL的电源域、电荷泵电容的位置、连接器的防护都想清楚VLVL做成跳线或0欧可调调试时能省下大量来回改板的时间。老协议配上新玩法RS-232在嵌入式系统里还能再战很多年。
返回列表