uart协议
时间:2025-11-19 来源:华清远见
UART(Universal Asynchronous Receiver/Transmitter,通用异步收发传输器)是一种异步串行通信协议,核心作用是实现设备间的低成本、近距离数据传输,广泛用于嵌入式系统、工业控制等场景。
它的核心特点是 “异步”—— 无需时钟信号同步,仅通过两根数据线(TX 发送、RX 接收)即可完成双向通信,硬件结构和协议逻辑都相对简单。
一、UART 核心工作原理
数据帧结构(协议核心)UART 数据以 “帧” 为单位传输,每帧包含固定格式的信号,确保接收方准确解析,标准帧结构如下(从左到右):
起始位:1 位低电平,标志数据帧开始(打破空闲时的高电平状态,触发接收方准备)。
数据位:5-9 位(最常用 8 位),实际传输的二进制数据(如 ASCII 码,8 位可覆盖 0-255 所有字符)。
校验位(可选):1 位,用于校验数据是否传输错误,支持两种模式:
奇校验:数据位 + 校验位中 “1” 的总数为奇数;
偶校验:数据位 + 校验位中 “1” 的总数为偶数;
无校验:省略校验位(适合传输可靠性要求不高的场景,如普通指令)。
停止位:1-2 位高电平,标志数据帧结束(接收方通过高电平判断一帧数据完成)。
波特率(通信速率)收发双方必须约定相同的 “波特率”(单位:bps,比特 / 秒),即每秒传输的二进制位数(含起始位、校验位、停止位),常见波特率有:9600、19200、38400、115200 bps(115200 为嵌入式开发常用速率)。
二、UART 硬件连接方式
UART 是 “点对点” 通信(不支持多设备共享总线),核心需 3 根线(全双工,即收发可同时进行):

三、UART 典型应用场景
嵌入式开发:单片机(如 STM32、51 单片机)与电脑之间的 “串口调试”(通过 USB 转 UART 模块,输出日志、发送指令)。
工业控制:传感器(如温湿度传感器、GPS 模块)向控制器(如 PLC)传输数据(速率要求低,对可靠性要求中等)。
外设通信D:打印机、调制解调器(Modem)、蓝牙模块(经典蓝牙的串口透传模式)与主机的低速数据交互。
消费电子:智能家居设备(如扫地机器人、智能插座)的本地调试或简单指令传输。
四:嵌入式虚拟仿真平台中的uart控制器
仿真系统中,UART控制器原理结构图如下:

基础串口数据收发:
1. 使能时钟

2. 配置串口通信协议
在协议配置中设置波特率为“115200”、数据位“8位”、奇偶校验“None”、停止位“1位”,并且不启用硬流控。

3. 串口控制
在串口控制中需要依次将“使能UART时钟”、“USART使能(UE)”、“使能发送器(TE)”、“使能接收器(RE)”勾选上,串口模式选择“Asynchronous”。

4. 点击左边寄存器映射下的“运行”按钮,开始仿真

在虚拟仿真系统中,模拟了一个虚拟透传串口,数据流向的基本过程为,UART控制器给虚拟透传串口发送数据,然后透传串口将接收到的数据,再发送给UART控制器,所以UART会接收到同样的数据。点击“写入”,将内存中的数据写入到发送数据寄存器(TDR)中,当数据从内存写入到发送数据寄存器(TDR)之后,TDR中的数据会自动并行传输到发送位移寄存器中,然后数据会通过发送位移寄存器,按照LSB的方式将数据一位一位的从Tx引脚移出
如仿真系统中的动画所示:发送位移寄存器,按照LSB的方式将数据一位一位的从Tx引脚发出。

可以发现,当内存数据被写入到发送数据寄存器(TDR)后,USART_SR寄存器中的TXE位被控制器清0,串口状态栏下的TXE位变成N,说明发送数据寄存器不为空,有待发送的数据
实际应用中,TXE位即可作为数据写到TDR寄存器时机标志位,当TXE被控制器置1时,则表明可以往TDR寄存器中写入下一次需要发送的数据。

