二十八、STM32的USART (介绍)
前言:在嵌入式开发的学习过程中,通信接口是一个无法绕开的核心知识点。无论是调试信息输出,还是传感器、模块与主控芯片之间的数据交互,通信接口都是系统中最基础、最关键的桥梁。
在众多通信方式中,USART(通用同步/异步收发器) 以其结构简单、使用灵活、应用广泛而成为 STM32 系列单片机中最常用的外设之一。它既能以异步方式实现经典的 UART 通信,也能在需要精确时序同步的场景中切换到同步模式。对于初学者而言,USART 不仅是学习 STM32 外设的入门接口,更是理解时序、采样、波特率与通信协议等底层概念的绝佳起点。本文将从接口原理出发,逐步解析 USART 的工作机制、硬件结构、电平标准、通信参数及时序特性,帮助你全面掌握 STM32C8T6 中的串口通信原理。
目录
一、通信接口概述
二、USART 与 UART 的区别
三、USART 硬件结构与引脚
四、电平标准
五、USART 通信参数
六、USART 异步通信时序结构
七、起始位侦测机制
八、数据采样与判定
九、波特率发生器
十、总结
一、通信接口概述
在嵌入式系统中,通信接口用于实现不同设备之间的数据交互。常见通信方式包括:
-
并行通信:一次传输多个比特,速度快但占用引脚多,布线复杂。
-
串行通信:一次传输一位数据,速度略慢但引脚占用少,应用最广泛。
STM32C8T6 微控制器提供多种串行通信接口,例如 USART、SPI、I²C、CAN 等。
其中,USART(Universal Synchronous Asynchronous Receiver Transmitter) 是最灵活、最常用的一种,既支持同步通信也支持异步通信,在嵌入式调试、外设通信中被广泛使用。
二、USART 与 UART 的区别
USART 是 UART 的增强版本。
-
UART(Universal Asynchronous Receiver Transmitter):只支持异步通信。
-
USART(Universal Synchronous/Asynchronous Receiver Transmitter):既可异步也可同步。
在大多数应用中,我们使用 USART 的异步模式,这时它的工作方式与 UART 完全一致。
但在需要更高数据同步精度的应用中(例如某些高速传感器或外设通信),可以启用 USART 的同步模式,利用时钟线(CK)协同工作。
三、USART 硬件结构与引脚
在 STM32C8T6 中,每个 USART 模块由发送器(TX)、接收器(RX)、波特率发生器和控制逻辑组成。
常用引脚如下:
-
TX(发送端):输出数据到外设的接收端。
-
RX(接收端):从外设的发送端接收数据。
-
GND(地线):两端电气参考一致。
-
CK(可选):在同步模式下提供时钟信号。
通常我们使用 TX、RX 和 GND 三根线即可完成异步通信。
四、电平标准
USART 通信使用电压信号传输逻辑数据。根据设备类型的不同,常见电平标准如下:
-
TTL 电平(MCU 通用)
-
逻辑 1:3.3V(或 5V)
-
逻辑 0:0V
-
-
RS-232 电平(电脑标准串口)
-
逻辑 1(标记位):-3V ~ -15V
-
逻辑 0(空闲位):+3V ~ +15V
-
由于电平不同,STM32 与电脑通信时必须通过电平转换芯片(如 MAX232、CH340、FT232 等)进行接口匹配。
五、USART 通信参数
为了保证通信双方正确理解彼此发送的数据,需要提前约定一组通信参数:

发送端与接收端的参数必须完全一致,否则会导致通信错误。
六、USART 异步通信时序结构
USART 异步通信的数据帧一般由以下部分组成:
空闲状态(高电平) → 起始位(低电平) → 数据位(D0~D7) → 校验位(可选) → 停止位(高电平)
-
空闲状态:总线为高电平,表示无数据传输。
-
起始位:低电平信号,通知接收端准备接收。
-
数据位:通常为 8 位,按从低位到高位发送。
-
校验位:可用于检测单比特错误。
-
停止位:高电平,表示数据帧结束。
七、起始位侦测机制
当总线处于空闲状态时,接收端持续检测 RX 引脚。
一旦检测到由高电平转为低电平的跳变,就认为起始位到达。
为了提高判定准确度,硬件会等待 1.5 个比特时间后进行第一次采样,确保采样点位于数据比特的中间。
八、数据采样与判定
USART 模块通常使用 16 倍过采样 机制:
-
在一个比特周期内采样 16 次;
-
通过统计中点附近的多个采样结果,判定该比特是逻辑 0 还是逻辑 1;
-
这种方式可以有效抵抗抖动与波特率误差。
九、波特率发生器
波特率(Baud Rate)是数据传输的时间基准,决定了每秒传输的比特数。
STM32 内部的 USART 波特率由系统时钟通过分频器生成,计算公式如下:

其中:
-
f_clk是外设时钟频率; -
USARTDIV是寄存器中的分频系数。
例如,当时钟频率为 72MHz,波特率设置为 115200bps 时:

当发送端与接收端波特率误差小于约 ±2% 时,通信即可稳定工作。
十、总结
USART 是 STM32C8T6 中最常用、最灵活的通信接口之一。
它具备以下特点:
-
可支持异步与同步两种模式;
-
通信结构简单,仅需两根线即可完成数据传输;
-
内部提供完善的采样与波特率控制机制,通信稳定可靠;
-
广泛应用于调试信息输出、传感器通信、模块连接(GPS、蓝牙、Wi-Fi)等场景。
理解 USART 的工作原理、时序结构以及波特率生成机制,是深入掌握 STM32 通信外设的基础。
