TECHNICAL GUIDE
TTL与RS232与RS485的区别_ 串口扩展芯片电气接口选型指南 | 上海耀罡电子
串口芯片出问题,十次有八次是电气层选错了,而不是芯片坏了。本文把三种接口的物理层差异讲透,并给出可直接照抄的选型决策路径。
一张表看清三者差异
核心对照
| 对比项 | TTL UART | RS232 | RS485 |
|---|---|---|---|
| 信号形式 | 单端不平衡 | 单端不平衡 | 差分平衡 |
| 电平范围 | 0 ~ 3.3V / 5V | ±3V ~ ±15V | ±1.5V ~ ±6V |
| 逻辑极性 | 高电平 1 | 负电压为 1 | A−B > 200mV 为 0 |
| 线数 | TX + RX + GND | TX + RX + GND | A + B(可不共地) |
| 最大距离 | 1 ~ 3 米 | 约 15 米 | 约 1200 米 |
| 最高速率 | 约 1Mbps | 约 115kbps | 10Mbps(短距) |
| 组网能力 | 点对点 | 点对点 | 总线多节点,最多 32 挂载 |
| 双工模式 | 全双工 | 全双工 | 默认半双工(DE/RE 切换) |
| 抗干扰能力 | 弱 | 差 | 强(差分抵消共模干扰) |
| 典型应用 | 板内芯片间通信 | PC 调试口、旧式 POS | 工业总线、Modbus |
一句话记住
RS232 是 PC 时代的遗产,TTL UART 是芯片之间用的,RS485 才是现场的主力。三者的差别不在「协议」,而在「电气层」——UART 规定的是数据怎么打包成帧、起始位停止位怎么定义,而 RS232 / RS485 规定的是这串 0 和 1 用什么电压差送到线上。一个 UART 信号必须经过收发芯片才能变成合规的 RS232 或 RS485 电平。
电气层为什么不能混用
TTL UART:相对地线判决
TTL UART 的接收端判断的是引脚相对于 GND 的电压。高电平代表 1,低电平代表 0。这个判决方式有个致命弱点:它把地线当成了信号基准。
设想一下:设备旁边有一台电机启动,在地线上耦合进 1V 的噪声尖峰。原本 3.3V 的逻辑高被拉低到 2.3V,可能已经掉进不确定区;原本的低电平被顶高,也可能被误判为 1。这就是为什么 TTL UART 只适合同板内走线或一米以内的短跳线。
RS232:电平反相,且必须共地
RS232 用正负电压表示逻辑,而且逻辑 1 是负电压、逻辑 0 是正电压,与 TTL 正好相反。这个反相是历史遗留的 PC 串口电气设计,所以 RS232 绝不能直接接 MCU 的 TX/RX 引脚——既可能损坏引脚,数据也完全无法识别,必须经过 MAX3232 一类收发器转换。
RS232 同样是单端信号,共用一根地线。这根地线在长距离场景下会和信号线形成地环路,两端地电位不一致时通信直接失败。所以 RS232 的距离上限被限制在 15 米左右。
RS485:判决的是两根线的差值
RS485 把信号拆成 A、B 两根线传输,接收端判决的是 A 与 B 之间的电压差,而不是相对于地的电压。
这个设计带来两个直接好处:第一,干扰通常会同时耦合到两根线上(称为共模噪声),差值不变,数据就不会出错;第二,两端设备的地电位可以有差异,因为接收端根本不看地线,这为设备隔离和光耦隔离留出了空间。
正因如此,RS485 可以跑到 1200 米,也可以在一条总线上挂多个从设备——这是工业现场的标准配置。
距离与速率的真实边界
距离不是固定值,是距离与速率的权衡
「RS485 能传 1200 米」这句话本身是不完整的。更准确的表述是:在 9600bps 这个量级的低速下,传输距离可达约 1200 米。速率提上去,距离就要相应缩短——因为信号在线上传输时的衰减与反射,都需要留出足够的建立与保持时间。
工程上常见的经验对应关系大致是:低速档(9600bps 附近)可以跑到千米级;中等速率(115200bps)通常在几百米以内;而 10Mbps 这种高速档只在十几米的短距离内可靠,因为此时它必须跑在特性阻抗受控的双绞线上。
为什么速率和距离互相牵制
假设一根线上有分布电阻和分布电容,信号在上面传输时会逐渐衰减、同时向线路两端反射。速率越高,每个 bit 的持续时间越短,接收端越需要在波形还清晰时就完成判决。
所以实际设计中,速率由最长的那一段线决定。总线上有多个节点时,任何一个节点与主控之间的距离都要算进去。想提速又要长距离,唯一可靠的办法是降低负载阻抗、改善线缆质量、或者干脆加中继器分段。
组网:485 特有的三个电阻
为什么 485 需要额外的电阻
RS485 能挂多台设备,靠的是把总线做成手拉手的菊花链结构,而不是星型。这带来一个要求:线路阻抗必须匹配。
一根没有匹配的传输线,信号走到末端会反射回来,叠加在原信号上形成振铃。速率越高、线越长,反射越明显,轻则读数抖动,重则完全无法通信。解决办法是在总线的两个物理末端各接一个匹配电阻。
终端电阻:只在最远的两端各一颗
标准做法是在 A 与 B 之间并联一颗 120Ω 电阻,并且只装在总线物理上的第一端和最后一端。中间节点一个都不加。
这里最常见的错误是「每台设备都加一颗终端电阻」。三台设备各加一颗,节点间等效阻抗会被拉低,总线负载过重,反而把有效通信距离压短。记住一句话:终端电阻属于线路,不属于设备。
偏置电阻:解决空闲时的总线悬空
当所有节点都不发送时,总线处于空闲状态,A、B 两根线都悬空。这时如果空间中存在干扰,接收端可能把干扰误判成数据。
解决办法是加偏置电阻:主站端在 A 与 VCC 之间、A 与 B 之间各加一颗上拉电阻(常见 560Ω),让空闲时总线保持一个确定的已知状态。需要记住的是位置——偏置电阻只装在 主站端,从站不加,终端电阻只装在两端,两者的位置完全不同。
这就是「485 接线三件套」:主站端偏置电阻、总线两端终端电阻、以及双绞线。这三样少了任何一样,稳定性都会明显下降。
拓扑结构必须是菊花链
RS485 总线必须走手拉手的形式,主干线上引出很短的分支接各节点。星型接法(所有设备都从一个点放射出去)是错误用法,因为每条长支线都会成为一根阻抗不连续的天线,产生难以预测的反射。
如果现场条件限制必须做星型,就要考虑用中继器把星型拆成多段菊花链,或者改用带隔离的方案。
串口扩展芯片怎么选电气接口
三类典型场景的选型路径
| 场景 | 推荐电气接口 | 原因 |
|---|---|---|
| POS 机、税控设备接打印机/扫码枪 | TTL UART 或 RS232 | 板内或短距离,走线固定,无强干扰 |
| 工业网关、多路传感器采集 | RS485 | 现场干扰大,线缆长,需要多节点组网 |
| 电子秤接上位机做调试 | RS232 | PC 端 DB9 口兼容,直接连线 |
| 同一台设备既要接短距设备又要接远端 | 主控走 TTL,由扩展芯片主接口出 485 | 主控侧零负担,现场侧拿差分 |
为什么 WK2168 适合工业组网
WK2168-IQPG 的主接口支持 UART / SPI / I²C / 8 位并口,并且内置 RS485 自动收发控制。
这一点在工业场景里价值很直接:如果扩展芯片不带 485 自动收发,你就必须外挂独立的 485 收发芯片,还要占用主控的一个 GPIO 手动控制收发方向(DE/RE)。多挂几路 485 时,GPIO 不够用、方向切换时序也容易出错——常见故障就是「最后一个字节没发出去」或「回显把自己的数据当成从机应答」。
把 485 自动收发做进芯片里,这些问题从根上消失了。主控只管收发字节,不用管方向。
WK2124 的定位
WK2124-ISSG 走 SSOP20 封装,主接口支持 SPI / UART,不带 485 自动收发。
它的优势是体积与成本:SSOP20 在 POS 机、税控设备这类需要塞进紧凑机箱的产品里更从容,板级设计也更简单。如果你的四路子口都是接打印机、扫码枪、钱箱这类短距单端设备,选它完全够用,而且更省。
三个最容易踩的坑
坑一:把 MCU 的 TTL 引脚直接接 RS232 口
这是最常见也最致命的错误。RS232 输出的是 ±15V 电压,直接灌进 3.3V 的 MCU 引脚,轻则通信乱码,重则烧毁引脚甚至整颗 MCU。
必须经过 MAX3232 一类 RS232 收发器做电平转换和反相。
坑二:485 忘记控制收发方向
半双工 RS485 的收发共用同一对线,靠 DE/RE 引脚切换。最常见的坑是发送完成后立刻关断驱动器,此时最后一个停止位还没真正发出去就被切断了,从机收到的数据缺尾字节,表现为「偶尔丢最后一个字节」。
正确做法是等待移位寄存器真正空(TXE/TC 中断标志),而不是等发送缓冲区空。用带自动收发控制的扩展芯片可以彻底避开这个时序问题。
坑三:485 忽略共地与浪涌防护
「RS485 差分所以不用接地」是个误解。差分解决的是信号判决问题,但两端的地电位差过大依然会损坏收发器。
工业现场还要考虑浪涌和静电:继电器切换、雷击、ESD 都会在总线上产生瞬态过电压。规范做法是在 A/B 与地之间加 TVS 管,并且在长距离场景使用带隔离的收发器或加信号隔离模块。ADI、TI 的设计指南里对此都有明确建议。
常见问题
TTL、RS232、RS485 可以直接互连吗?
不能。UART 是数据帧格式的定义,RS232 和 RS485 是电气层的定义,两者之间必须通过收发芯片转换。常见组合是:MCU 的 TTL UART 接 MAX3485 转成 RS485,或接 MAX3232 转成 RS232。把 MCU 引脚直接接到 RS232 电脑口会损坏硬件。
RS485 总线上每个节点都要加 120Ω 终端电阻吗?
不需要,而且这样做是错的。终端电阻只加在总线物理上的最外侧两个端点,中间节点一颗都不装。终端电阻匹配的是线路阻抗,属于线路属性而非设备属性。如果每台都加,总线等效负载过重,反而缩短有效通信距离。
偏置电阻和终端电阻能共用一颗吗?
不能,两者作用完全不同。终端电阻是 A-B 之间的 120Ω 匹配电阻,装在总线两端;偏置电阻是上拉/下拉网络,用来在总线空闲时确定电平,装在主站端。有些工业收发器把这两种电阻集成在芯片内部(通过跳线选择),这时要按芯片手册的说明配置,位置仍然遵循总线两端与主站端的规则。
WK2168 和 WK2124 都支持几路扩展,怎么选?
两者都是四路扩展,差别在电气接口与封装。需要挂 485 设备、做多节点组网、或者现场线缆较长,选 WK2168-IQPG(LQFP48,主接口内置 485 自动收发与硬件流控);如果四路子口都是接打印机、扫码枪这类板内或短距单端设备,选 WK2124-ISSG(SSOP20),体积更小成本更低。详细参数对照可参考《WK2124与WK2168串口扩展芯片怎么选》一文。
串口扩展芯片的 FIFO 深度重要吗?
重要,尤其在高速或多路并发场景。WK2168 与 WK2124 每通道都配了独立的 256 级收发 FIFO,作用是让主控和扩展芯片之间解耦:主控可以把一帧数据丢进 FIFO 就去干别的事,不必阻塞等待每个字节发完。没有 FIFO 或 FIFO 太浅时,主控很容易被串口中断拖住,影响其他任务的实时性。