
串口是一类通信方式的泛称。UART、TTL、RS232、RS485,很多人混着叫"串口",方向没错但概念要厘清。它们底层走的都是同一套异步起停时序:起始位+数据位+校验位+停止位,区别只在电气层面:电压多高、抗不抗干扰、能传多远。
1.时序——大家都说同一种语言
每一帧数据的结构很固定:线路空闲时保持高电平,通信开始先发一个起始位(把线拉低一个比特周期),然后依次送5到8个数据位(低位在前),可选一个奇偶校验位,最后是一到两个停止位(恢复高电平)。工程上最常见配置是"8N1"——8个数据位、无校验、1个停止位。 接收端靠自己的采样时钟在每个比特周期中间取一次电平,时钟一偏数据就错。所以两边波特率必须一模一样,这是铁律。诀窍:时序大家都一样,电平决定谁跟谁对话。


2.电平——三种"方言",谁跟谁能对话
TTL电平:芯片之间用的。逻辑1是2.4V到5V,逻辑0是0V到0.5V。两片MCU之间,TXD和RXD交叉直连就能通信,距离不超过几十厘米。这是电路板级别的对话方式。
RS232电平:穿出机箱用的。注意,逻辑是反的:逻辑1(MARK)是-15V到-5V,逻辑0(SPACE)是+3V到+15V。负压代表1、正压代表0,跟TTL完全不一样。PC后面的DB9就是RS232,芯片出来的TTL信号必须经过MAX232之类的电平转换芯片才能连上去。TTL口和RS232口直连必烧。记住电平转换芯片不能省。

RS485电平:工业现场用的。差分传输,不靠绝对电压、靠两根线的压差说话。A对B压差+2V到+6V是逻辑1,-6V到-2V是逻辑0。接收器灵敏度只有200mV——信号衰减到很小,只要压差还分得出就能正确解码。共模噪声被差分对消掉,这在变电站、铁路沿线那种电磁环境里太重要了。
二、RS232 vs RS485 vs RS422——三兄弟各管一摊
三种标准各有各的战场,没人能通吃。

1.RS232——机房的短跑选手:全双工、一对一、15米以内、稳。 三根线(TxD、RxD、GND)就能双向通信,这是它方便的地方。标准规定最大距离15米,前提是电缆分布电容不超过2500pF。代价也很明显——单端传输,收发共地,噪声直接叠加在信号上,共模抑制基本为零。标准波特率定义到19200bps,现代UART可以推到115.2kbps,但线一长、环境一脏,误码就上来。RS232抗干扰靠的不是原理,是靠线短和屏蔽好。

2.RS485——现场的长跑主力:半双工、差分两线、1200米、多节点总线。 铁路沿线的RTU监控、动环采集、电力远动,大部分走的是485总线。差分传输是它的核心优势。A、B两根线,数据靠压差传送,共模噪声被对消掉。为什么能跑上千米?因为不靠信号幅值、靠差值。但半双工有个坑——同一时刻只能一端发,其余全收。多节点通信必须做总线仲裁,发完数据立刻切回接收态释放总线。施工最容易忽略的:终端电阻。总线两端各并一个120Ω电阻,匹配特性阻抗、防信号反射。忘了加,高速通信时信号边沿振铃,误码率暴增。依据TIA/EIA-485-A标准规定,总线两端需各并接120Ω终端电阻以匹配特性阻抗,这是标准层面的硬性要求。

图3:RS485总线拓扑示意图
1)RS485全双工通信连接方式:RS485支持全双工连接,因为RS485有仲裁机制,能保证每时每刻只能有一个设备发送消息。这种连接,每个时刻可以实现发送数据,也能同时接收数据。

2)RS485半双工通信连接方式:这种通信方式是最常见的,实际设计中我们基本上都是这样连接,使用一组差分线,实现半双工通信。相比于全双工,走线要简单很多,且能实现多点之间相互通信。但是每时每刻之间,只能是单方向的通信。

3.RS422——夹在中间的选项:跟485电路原理基本相同,也是差分,但用四根线——Y/Z发送、A/B接收——全双工。一个主设备最多带10个从设备(TIA/EIA-422-B标准规定),距离和速率跟485差不多(1219米/10Mbps);可以说是RS485的"全双工版",线多一倍,功能多一半。 现场布四根线成本和复杂度都上去了,用得比485少。偶尔没422芯片的时候,拿两片485收发器也能凑合——短接Y→A、Z→B。

RS422线路上最多有10个接收器设备,有一个发送驱动器设备,能实现1发10收。在总线上放置全部10个接收器时,发生最大负载条件。

如果一定要实现RS422场景下的点对点通信,则这个连接通路里面只能有两个节点设备,硬件连接上必须是交叉连接:设备A的发送线(TX+, TX-) 必须直接连接到设备B的接收线(RX+, RX-);设备B的发送线(TX+, TX-) 必须直接连接到设备A的接收线(RX+, RX-)。 

选型口诀:机房调测上RS232,现场采集上RS485,长距全双工才考虑RS422。线多费钱,接口多费人。
三、串口调试三板斧——从接线上找问题
这东西出故障,八成不在代码里,在线路上。


调试技巧:串口不通,先别改代码,拿万用表量电平:TTL口静态应该是高电平(3.3V/5V);RS232口TxD静态是负压(-5V到-12V);485的A/B之间静态压差接近零。电平不对就先查硬件,能省一半时间。
附:RS232和RS485核心对比

四、RS422和RS485设备怎么连接?

五、常见问题

TTL = 芯片直出,0/3.3V/5V,板级通信;
RS232 = 单端±12V,点对点,短距离(≤15m),全双工;
RS485 = 差分信号,一主多从,长距离(≤1200m),半双工。