/images课 · 串口入门:设备的"嘴"和"耳朵"
这是《串口通讯从入门到实战》系列的第一课。搞工业自动化的,绕不开设备之间的"说话"问题:PLC 和变频器怎么对话?传感器数据怎么传给电脑?答案都从一个最基础的东西开始——串口。
先说结论:串口,就是一种让两个设备互相说话的方式。
你可以把它理解成设备身上的一扇小门,数据从这扇门里一位一位地排队走出去,所以叫"串行接口"(Serial Port)。

和它对比的是并行传输:8 根线、8 位同时走,看着快,但线一多成本高、还容易互相干扰。串口只用 1 根线,一次只走 1 位,慢是慢点,但简单、便宜、传得远——这也是它在工业现场活到今天的原因。
要记住的关键点:串口是硬件,是看得见、摸得着的物理接口,设备上那排针脚或者端子就是它。只要两台设备拥有同一种串口,它们就具备了相互通讯的物理条件。
串口有很多种,常见的有三种:

| 类型 | 距离 | 电平 | 双工 | 典型场景 |
|---|---|---|---|---|
| RS232 | 短距离,一对一 | ±3 ~ ±15V | 全双工 | 老式设备、工控机 |
| RS485 | 远距离,多点总线 | 差分信号 | 半双工 | 工业现场主力 |
| TTL | 板级极短距离 | 0V / 3.3V 或 5V | — | 单片机、Arduino、STM32 |
三种里重点认识 RS485:
它不用电平高低表示 0 和 1,而是用两根线的差分信号(A 线和 B 线),抗干扰能力极强,所以传得远(最远一千多米);
一条总线可以挂很多设备(手拉手并联),靠地址区分;
代价是半双工:同一时刻只能一方说话,这也塑造了后面 Modbus"一问一答"的通讯规则。
就像两个人打电话,线路通了,还得说同一种语言——这就是协议。
协议,就是两个设备提前约定好的一套规则:先发什么、后发什么、每一位代表什么意思,都得说清楚。没有协议,你收到的只是一堆 0 和 1,谁也看不懂。
在说协议之前,先看看物理层上一帧数据长什么样:

一帧 UART 数据 = 起始位 + 数据位 D0-D7 + 校验位 + 停止位:
起始位:一个 0,告诉对方"我要开始说话了"
数据位:8 位,一个字节的真正内容(低位 D0 先发)
校验位:可选,简单检查数据有没有传错
停止位:一个或多个 1,表示这帧结束
两台设备的波特率、数据位、校验位、停止位必须配置一致,这和后面 Modbus 组网的要求一脉相承。
串口线上跑的是 0 和 1,但调试时人类得用看得懂的形式表示它们。常见两种:

ASCII 码:把字符翻译成数字。比如大写字母 A 的 ASCII 码是 65(十六进制 0x41)。收到的数据如果都是可打印字符,按 ASCII 看就是一段文字。
十六进制:更贴近硬件的写法。一个字节刚好写成两位十六进制,比如 0x41。原始二进制数据(比如重量值、CRC 校验)通常都用十六进制看。

0x41 = 65 = 二进制 0100 0001 = 字符 'A'
这两种表示方式是基本功:看协议文档、抓包调试、核对报文,全部建立在"认识十六进制字节"之上。从下一课开始,报文就是一串十六进制字节流。
| 概念 | 一句话 |
|---|---|
| 串口 | 设备间一位一位传数据的物理接口 |
| RS232 | 短距离、一对一、全双工 |
| RS485 | 远距离、差分信号、半双工、可挂多设备,工业主力 |
| TTL | 单片机板级串口,0V / 3.3V / 5V |
| UART 帧 | 起始位 + 8 数据位 + 校验位 + 停止位 |
| 协议 | 设备间约定好的规则,没有协议只有乱码 |
| ASCII / 十六进制 | 数据的两种人类可读表示 |
下一篇,我们用这些知识去拆解工业界最常用的串口协议——Modbus RTU。