发布于: -/最后更新: -/30 分钟/

51单片机 UART 协议详解

摘要

本文讨论了电平标准、差分信号、流控制、同步异步通信、UART 等概念。电平标准包括TTL、RS232和RS485,差分信号具有提高抗干扰能力和精度的优点。流控制用于避免数据丢失,UART是一种异步串行通信协议。同步通信使用共用时钟,而异步通信使用起始位和停止位。文中还介绍了CH340的工作原理、波特率与比特率的关系、调制技术等。总的来说,本文涵盖了计算机通信中的基础概念和技术。

电平标准

  • TTL: +5V -> 1, 0V -> 0

  • RS232: -3 ~-15V -> 1, +3 ~ +15V -> 0

  • RS485: +2 ~ +6V -> 1, -2 ~ -6V -> 0 (差分信号)

差分信号

Pasted image 20260214134423.png
点击查看大图
Pasted image 20260214134423.png

A signal transmitted differentially. Notice the increased amplitude at the receiving end.

Pasted image 20260214134322.png
点击查看大图
Pasted image 20260214134322.png

好处

https://cloud.tencent.com/developer/article/2330085

- 差分信号的优点在于通过控制基准电压,可以更容易地识别小信号。与单端信号方案相比,测量信号的精确值依赖于 GND 的一致性,距离越远,电压差异的可能性越大,而差分信号的恢复值与 GND 的精确值关系不大。

- 它对外部电磁干扰(EMI)是高度免疫的。一个干扰源几乎相同程度地影响差分信号对的每一端。既然电压差异决定信号值,这样将忽视在两个导体上出现的任何同样干扰。除了对干扰不大灵敏外,差分信号比单端信号生成的 EMI 还要少。

## 流控制

流控的概念源于 RS232 这个标准,在 RS232 标准里面包含了串口、流控的定义。

RS232 中的“RS”是Recommend Standard 的缩写,即”推荐标准“之意,它并不像 IEEE-1284、IEEE-1394 等标准,是由“委员会定制”。因而,不同的厂商在做 RS232 时,多少会有不同,流控也都会存在差异。

数据在串口通讯中常常丢失,特别是当接收端缓冲区满时,发送的新数据可能无法处理而丢失。这种问题源于速度和处理能力的不匹配,例如单片机与 PC 的处理能力差异。

为了解决这个问题,硬件流控通过向发送端发送停止信号来控制数据流,以避免数据丢失。

DB89:

Pasted image 20260214135906.png
点击查看大图
Pasted image 20260214135906.png

STM32:

Pasted image 20260214135919.png
点击查看大图
Pasted image 20260214135919.png

以前用到的 TX 和 RX,也就是简单的三线串口的通讯方式,如果使能了硬件流控,在这个基础上需要增加两根控制线,一根叫 CTS(Clear To Send 为输入信号,一根叫 RTS(Require To Send 为输出信号)。其实从名字上也可以看到,一个是接收控制,一个是发送控制。

Communication Interface Comparison

Name

Pin Definition

Communication Mode

Characteristics

UART

TXD, RXD

Full-duplex, Asynchronous

Point-to-point communication

I²C

SCL, SDA

Half-duplex, Synchronous

Supports multiple devices

SPI

SCLK, MOSI, MISO, CS

Full-duplex, Synchronous

Supports multiple devices

1-Wire

DQ

Half-duplex, Asynchronous

Supports multiple devices

Additional interfaces: CAN, USB, etc.

Concise Explanation of Each Term

  • Full-duplex: Data can be transmitted and received simultaneously.

  • Half-duplex: Data transmission occurs in only one direction at a time. (Time Division Multiplexing, TDM)

  • Synchronous: Communication uses a shared clock signal.

  • Asynchronous: No shared clock; timing is agreed by predefined parameters (e.g., baud rate).

1. UART (Universal Asynchronous Receiver/Transmitter)

  • TXD (Transmit Data): Serial data output line from the transmitting device.

  • RXD (Receive Data): Serial data input line to the receiving device.

Typical use case: Debug console, serial communication between MCU and PC.

2. I²C (Inter-Integrated Circuit)

  • SCL (Serial Clock): Clock signal line used to synchronize data transmission.

  • SDA (Serial Data): Bidirectional data line carrying address and data.

Typical use case: Sensors, EEPROM, RTC, low-speed peripherals.

3. SPI (Serial Peripheral Interface)

  • SCLK (Serial Clock): Clock signal generated by the master to synchronize communication.

  • MOSI (Master Out Slave In): Data line transmitting from master to slave.

  • MISO (Master In Slave Out): Data line transmitting from slave to master.

  • CS (Chip Select): Control line used to select the active slave device.

Typical use case: High-speed ADC/DAC, Flash memory, displays.

4. 1-Wire

  • DQ (Data Line): Single bidirectional data line used for communication.

Typical use case: Temperature sensors (e.g., DS18B20), low-cost ID systems.

Brief Comparison Insight

Protocol

Speed

Hardware Complexity

Bus Scalability

Typical Application

UART

Medium

Very low

Poor

Debug, simple links

I²C

Low–Medium

Low

Good

Sensor networks

SPI

High

Moderate

Moderate

High-speed peripherals

1-Wire

Low

Very low

Good

Low-cost sensors

同步异步通信

https://blog.csdn.net/seashine_yan/article/details/71192283
https://www.cnblogs.com/frankuly/p/13785424.html

异步通信

异步方式特点简单的说就是:帧(字符)间异步,帧(字符)内部各位同步。

Pasted image 20260214144850.png
点击查看大图
Pasted image 20260214144850.png

在无数据传送时,通信线处于逻辑“1”状态。

发送字符时,首先发送逻辑“0”信号作为起始位,接收设备检测到后准备接收数据。

起始位后是数据位(可为5至8位),数据传送时低位在前。奇偶校验位用于数据检错,需双方约定,有时可省略。停止位紧跟在奇偶校验或数据位后,可以是一位、1.5位或2位,表示字符传送结束,准备接收下一字符。

停止位后若无数据,线路保持“1”,处于空闲状态,这为异步通信特性。

同步通信

同步通信是以数据块为单位的数据传送,字符和位之间都需同步。
同步通信时,通信双方共用一个时钟,这是同步通信区分于异步通信的最显著的特点。

在异步通信中,字符使用起始位和停止位,影响传输速度。为了提高效率,同步通信采用同步字符指示数据开始,无需间隙、起始位和停止位,使用时钟实现发送端和接收端的同步。

Pasted image 20260214145641.png
点击查看大图
Pasted image 20260214145641.png

用途

  • 同步串行:通信网中,有大批量数据需要传输

  • 异步串行:应用于在工业、实际应用中。适用于短距离、速率不高的情况下。

总结

不论是异步通信还是同步通信都需要进行同步,异步通信通过字符内的起始位自同步,而同步通信通过共用外部时钟外同步。

51 单片机的 UART

Pasted image 20260214150610.png
点击查看大图
Pasted image 20260214150610.png

CH340: USB <-> UART

Pasted image 20260214152126.png
点击查看大图
Pasted image 20260214152126.png

Fundamentally, the CH340 converts:

USB differential signaling (UD+/UD−) ⇄ UART serial signals (TXD/RXD)
In the CH340 (USB–UART bridge), UD+ and UD− are the two USB differential data lines.

However, the transformation is not merely electrical-level conversion — it spans multiple protocol layers.

The conversion involves three layers:

1️⃣ Physical Layer Conversion

  • UD+ / UD− → USB differential electrical signaling (12 Mbps full-speed)

  • TXD / RXD → CMOS/TTL-level asynchronous serial signals

This is a physical interface conversion:

  • Differential ↔ Single-ended

  • 12 Mbps USB ↔ configurable UART baud rate

2️⃣ Protocol Layer Translation

USB and UART are completely different protocols:

USB

UART

Packet-based

Byte stream

Host-controlled

Peer-to-peer

Clocked & framed

Asynchronous framed

CRC protected

Optional parity

The CH340 internally:

  • Receives USB bulk transfer packets

  • Buffers data

  • Extracts payload bytes

  • Outputs them as UART frames (start bit + data + stop bit)

In reverse:

  • Collects UART bytes

  • Packages them into USB bulk packets

  • Sends them to host

3️⃣ Control Signal Mapping

CH340 also maps:

  • USB control requests → UART configuration

    • Baud rate

    • Parity

    • Stop bits

  • USB driver commands → RTS / DTR toggling

Baud Rate vs. Bit Rate

https://blog.csdn.net/xiaoyue_/article/details/105494828

波特率 指电压(或电流)变化次数(变化量)
比特率 指传输数据量的多少

在无调制的情况下,比特率=波特率;采用调相技术时,比特率 不等于 波特率。

In standard UART communication, it is a non-modulated (baseband) transmission, therefore:

Bit rate = Baud rate

调制是什么

将低频信息信号(基带信号)加载到高频载波上,通过改变载波的某种物理参数(幅度、频率或相位)来实现远距离或高效传输的过程。

本质上,它是一种频谱搬移与信号映射技术。

数字调制举例

在数字通信中:

  • 1 个符号(symbol)可以表示多个比特

  • 每个符号通过“载波状态”表达

例如:

QPSK(Quadrature Phase Shift Keying)

  • 4 种相位

  • 每个符号表示 2 bit

16-QAM

  • 16 种幅度+相位组合

  • 每个符号表示 4 bit

这就是“比特率 ≠ 波特率”的根本原因。

与 UART 的对比

特性

UART

调制通信

是否有载波

❌ 无

✅ 有

是否搬移频谱

❌ 否

✅ 是

每符号比特数

1

≥1

典型应用

串口通信

无线、电信

UART 是:

基带、无调制、二进制电平传输

从系统角度理解

  • 基带通信:直接发送 0/1 电平(如 UART)

  • 调制通信:用高频载波“包装”0/1,再发送(如 WiFi、LTE)

串口模式

Pasted image 20260214154239.png
点击查看大图
Pasted image 20260214154239.png

Pasted image 20260214155153.png
点击查看大图
Pasted image 20260214155153.png

波特率 <-> 晶振 关系推导


image.png
点击查看大图
image.png

÷16 是什么

UART 接收端通常采用 16倍过采样(16x oversampling):

  • 每一位被采样 16 次

  • 在第 8 次附近取中心值

  • 提高抗抖动能力

因此:Timer1 overflow rate = 16 * Baud rate

反过来, ÷16 才得到真正的位时钟。

当 SMOD = 1 时, Baud rate = 1/16 * Timer1 overflow rate 得到位时钟,因为 Timer1 本身已经产生 16 倍频率,接收电路在 ÷16 之前就已经利用了这 16 倍时钟,下图有所展示:

Pasted image 20260216013618.png
点击查看大图
Pasted image 20260216013618.png
Pasted image 20260216020206.png
点击查看大图
Pasted image 20260216020206.png
mermaid-diagram-2026-02-17-025417.png
点击查看大图
mermaid-diagram-2026-02-17-025417.png

正文结束