欢迎来到金站网
行业资讯行业新闻

串口的原理介绍-RS232/RS422/RS485

来源: 发布时间:2025-12-15

要理解串口,首先要明白“串行通信”和“并行通信”的区别。

*   **并行通信**:好比一条8车道的高速公路,一次可以同时发送8位数据(比如一个字节)。速度快,但需要大量电线(每条数据位一根线),抗干扰差,距离短。早期的打印机接口(LPT)就是典型的并行通信。

*   **串行通信**:好比一条单车道公路,数据位像车队一样,一个接一个地按顺序通过。速度相对慢,但只需要很少的线(甚至两根),成本低,抗干扰能力强,适合长距离通信。


**串口(Serial Port)** 就是一种实现串行通信的硬件接口和协议。*常见的标准是 **RS-232**。


---


### 详细原理分解


我们可以从**硬件连接**、**数据帧格式**、**通信过程**和**关键参数**四个方面来深入理解。


#### 1. 硬件连接与信号线


传统的RS-232串口使用DB9或DB25连接器,但**信号线只需要3根:

*   **TXD (Transmit Data)**:数据发送线。A设备的TXD连接B设备的RXD。

*   **RXD (Receive Data)**:数据接收线。A设备的RXD连接B设备的TXD。

*   **GND (Ground)**:公共地线。为所有信号提供统一的电压参考点,至关重要。


这种**交叉互连**的方式称为“零调制解调器”连接。除了这三根线,还有DSR/DTR、RTS/CTS等用于硬件流控制的信号线,在现代简单应用中较少使用。


#### 2. 数据帧格式 - “如何打包一个字节”


串口不是简单地发送0/1数字信号,而是将每个字节(8位)的数据“打包”成一个标准的“帧”来发送。一帧数据包含以下部分:


```

[ 空闲状态 ] [ 起始位 ] [ 数据位 (5-8位) ] [ 校验位 (可选) ] [ 停止位 (1, 1.5, 2位) ] [ 空闲状态 ]

    高电平        0        LSB ... MSB          0/1/无          高电平              高电平

```


*   **空闲状态**:线路保持在高电平(逻辑1)。

*   **起始位**:一个始终为低电平(逻辑0)的位。它的作用是**同步时钟**,告诉接收方:“注意!一帧数据马上开始!” 这是异步通信的关键。

*   **数据位**:紧接着起始位之后,是要传输的实际数据,通常是8位(一个字节)。从****有效位(LSB)** 开始发送。

*   **校验位**:用于简单的错误检测。

    *   **偶校验**:保证数据位+校验位中“1”的个数为偶数。

    *   **奇校验**:保证“1”的个数为奇数。

    *   **无校验**:不添加此位。

*   **停止位**:固定为高电平(逻辑1),标志一帧数据的结束。可以是1位、1.5位或2位的时间长度。它确保在下一帧起始位(低电平)到来之前,有一个明确的“恢复”到高电平的间隙。

*   **下一帧**:停止位之后,线路恢复空闲高电平,等待下一个起始位。


**关键点**:串口通信是**异步**的,这意味着发送和接收双方**没有共享的时钟信号**来同步每一位。它们依靠预先约定好的**波特率**和**起始位/停止位的硬性规定**来实现自同步。


#### 3. 通信过程 - “发送与接收如何协同工作”


假设A设备向B设备发送字符‘A’(ASCII码为65,二进制01000001)。双方约定:波特率9600,8位数据,无校验,1位停止位。


**在A设备(发送端):**

1.  检测到线路空闲(高电平)。

2.  拉低线路电平**1个比特的时间**,发送**起始位**。

3.  从**位开始,依次将01000001的每一位,每一位持续1/9600秒,放到TXD线上。

4.  发送**停止位**(拉高电平,持续1个比特的时间)。

5.  完成一帧发送,线路保持高电平(空闲)。


**在B设备(接收端):**

1.  持续监测RXD线,等待从高电平到低电平的**下降沿**(起始位开始的标志)。

2.  一旦检测到下降沿,启动内部定时器,等待**1.5个比特时间**(目的是采样到数据位的中间点,避开边沿不稳定区域)。

3.  在1.5、2.5、3.5...个比特时间点上,对线路电平进行采样,依次读取8个数据位。

4.  采样停止位(应为高电平),如果为低,则可能发生“帧错误”。

5.  将采样到的8位数据组合成一个字节,存入接收缓冲区。

6.  线路恢复空闲,继续等待下一个起始位。


#### 4. 关键参数 - “双方对话的约定”


要使通信成功,收发双方必须**严格约定**以下参数:

*   **波特率**:每秒传输的**符号(比特)个数**。常见的有9600, 115200等。波特率决定了每个比特的持续时间 `T = 1 / 波特率`。**双方波特率必须一致**,误差一般不能超过5%,否则会导致采样错位,数据全部错误。

*   **数据位**:每帧中实际数据位的长度,通常为8位。

*   **校验位**:奇校验、偶校验或无校验。双方必须一致。

*   **停止位**:1、1.5或2位。双方必须一致。

*   **流控制**(可选):

    *   **硬件流控(RTS/CTS)**:通过额外的信号线告知对方“我是否可以接收数据”,用于防止接收缓冲区溢出。

    *   **软件流控(XON/XOFF)**:通过发送特殊字符(XON=0x11, XOFF=0x13)来控制数据流。


---


### **特点总结


*   **异步通信**:无需时钟线,依靠起始位同步。

*   **全双工**:可以同时进行发送和接收(因为TXD和RXD**)。

*   **点对点**:通常用于两个设备之间的直接通信。

*   **长距离与抗干扰**:RS-232标准理论上可达15米,通过转换器(如RS-485)可达千米。差分信号(如RS-485)抗共模干扰能力强。

*   **简单通用**:协议简单,几乎所有微控制器都内置硬件UART,软件编程容易。


### 现代应用与演变


*   **物理形态演变**:经典的DB9接口在PC上已基本被USB取代。现在更多以“TTL串口”(3.3V或5V电平)的形式存在于**单片机、嵌入式设备、开发板(如Arduino)、路由器、工业控制器**内部。

*   **USB转串口**:为了兼容传统串口设备,大量使用 **“USB转TTL串口”芯片**(如CH340、CP2102、FT232)。在PC上,它会虚拟出一个COM端口。

*   **逻辑**不变**:无论物理接口如何变化,其**异步串行通信的UART**协议**(数据帧格式、起始位、停止位、波特率)保持不变,是工程师调试设备、进行底层数据交换的“****”。


### 一个生动的比喻


把串口通信想象成两个人用**摩尔斯电码**在发电报:

*   **波特率** = 双方约定好的发报速度(每个“点/划”的时长)。

*   **起始位** = 每次发一个字符前,先说“喂,注意!”(一个固定的短脉冲)。

*   **数据位** = 字符本身的点划组合(8位二进制)。

*   **停止位** = 发完一个字符后,一个明显的停顿(表示这个字符结束了)。

*   **校验位** = 发完后问一句“我发的对吗?”(简单的确认)。

*   **交叉线** = 你的发报机连着我的收报机,我的发报机连着你的收报机。


正是这些简单而严谨的约定,使得串口技术历经数十年,仍然是电子设备间*基础、*可靠的通信方式之一。


标签: 除甲醛 除甲醛