UART通信协议的主要定义是什么?详解分析
它将要传输的资料在串行通信与并行通信之间加以转换。作为把并行输入信号转成串行输出信号的芯片,UART通常被集成于其他通讯接口的连结上。
UART(Universal Asynchronous Receiver/Transmitter,通用异步收发器)是一种广泛使用的硬件设备及其驱动协议,主要用于在点对点、全双工的异步串行通信中传输数据。它的核心特点是不依赖于共享时钟信号进行同步,而是依靠通信双方预先约定的帧结构和波特率来同步数据位。
以下是UART协议的主要定义和详解分析:
核心定义:
UART定义了一种异步串行数据传输方式:
- 异步: 发送方和接收方不共享同一个时钟源。数据帧的同步完全依靠起始位和停止位建立的时序,以及双方精确配置的相同波特率。
- 串行: 数据以单个比特流的方式,在一条线(TX)上顺序发送,在另一条线(RX)上顺序接收。
- 点对点: 通常在两台设备之间直接连接(一对一通信),没有总线概念。
- 全双工: 具有独立的发送线(TX)和接收线(RX),允许数据同时双向传输。
详解UART的关键组成部分
-
基本硬件连接:
- 需要两根信号线:
- TX(Transmit - 发送线): 发送方在此线上输出数据(逻辑1 = 高电平,逻辑0 = 低电平)。
- RX(Receive - 接收线): 接收方从此线上读取数据。
- 此外,通常还会有两根用于硬件流控的信号线(非必需):
- RTS (Request To Send): 发送方准备好接收数据时输出低电平,请求接收方开始传输。
- CTS (Clear To Send): 接收方准备好接收数据时输出低电平,告知发送方可以开始传输。
- 注意: TX/RX是交叉连接的!发送方A的TX连接接收方B的RX,发送方B的TX连接接收方A的RX。连接双方的GND必须相连以确保相同的参考电平点。
- 需要两根信号线:
-
波特率 (Baud Rate):
- 定义: 每秒传输的符号数量,即每秒传输的位数(bps - bits per second)。一个符号=一个比特位。
- 关键要求: 通信双方的波特率必须设置完全一致。常见的波特率包括 9600, 19200, 38400, 57600, 115200, 230400, 460800, 921600 bps等。
- 作用: 双方根据波特率计算出每一位信号持续的时间长度(位周期),以此同步采样每一个数据位。
- 精度要求: 波特率发生器的时钟精度需要足够高(通常偏差小于2%),否则在高波特率或长帧情况下容易导致采样偏移出错。
-
数据帧结构 (Data Frame): UART数据传输是以固定格式的“帧”为单位进行的。一个完整的数据帧通常包含以下部分(按传输顺序):
- 起始位 (Start Bit): 1位
- 电平: 逻辑低电平 (0)。
- 作用: 表示一个数据帧的开始,通知接收方准备接收后续数据位。核心同步触发点。
- 数据位 (Data Bits):5-9位(通常5、6、7或8位)
- 内容: 实际传输的有效数据字节(或其一部分)。
- 顺序: 最低有效位 (LSB - Least Significant Bit) 在前(最先发送),最高有效位 (MSB - Most Significant Bit) 在后(最后发送)。
- 校验位 (Parity Bit):0位或1位(可选)
- 作用: 提供简单的检错能力。通过计算数据位中“1”的数量是奇(Odd Parity) 还是偶(Even Parity),或者不使用(No Parity),来检测单个比特翻转错误。
- 类型:
- 偶校验 (Even): 置位校验位,使得“1”的总数(数据位 + 校验位)为偶数。
- 奇校验 (Odd): 置位校验位,使得“1”的总数(数据位 + 校验位)为奇数。
- 无校验 (None): 不发送校验位。
- 强制为1 (Mark): 校验位始终为1(逻辑高),不提供检错,可作为额外的停止位理解。
- 强制为0 (Space): 校验位始终为0(逻辑低)。
- 停止位 (Stop Bits): 1位、1.5位或2位
- 电平: 逻辑高电平 (1)。
- 作用:
- 表示一个数据帧的结束。
- 为接收方提供缓冲时间,使其有机会在接收下一帧起始位之前处理刚刚接收到的数据。
- 确保两帧之间线路恢复到空闲(高电平)状态,为下一帧的起始位(低电平)提供清晰明确的下降沿同步信号。
- 起始位 (Start Bit): 1位
UART通信关键特性分析
-
无时钟同步: 这是UART最核心的特性。通信双方无需连接独立的时钟线(如SPI中的SCK)。同步完全依靠:
- 起始位的明确下降沿触发接收方开始计时。
- 双方严格按照约定好的波特率运行各自的内部时钟(波特率发生器/定时器),计算每一位的中心采样点。
- 接收方会在每个位周期的中点附近采样RX线上的电平状态,以减少边沿噪声的影响,确保数据稳定。
-
简单性: UART协议本身相对简单(主要是帧结构定义),硬件实现(UART控制器)和软件驱动都较为成熟和容易。占用MCU管脚少(最少仅需两个:TX/RX)。
-
灵活性: 帧结构(数据位长度、停止位长度、校验方式)和波特率可以根据应用需求和信道质量进行灵活配置。
-
全双工: TX和RX分开,支持同时发送和接收数据,适合需要双向实时交互的应用。
-
点对点限制: UART通常只适合两个设备之间的通信。要实现多点通信(一主多从或多主多从),需要结合其他技术(如RS-485总线标准)或使用额外的控制协议。
-
无内置地址机制: UART本身不包含寻址功能。如果在多点系统中使用(通过RS-485等),需要额外的(应用层)协议来实现设备寻址(如Modbus RTU)。
-
流程控制 (Flow Control):
- 目的: 防止接收方处理速度跟不上发送方发送速度导致数据丢失(缓冲区溢出)。
- 硬件流控 (RTS/CTS): 使用额外的物理信号线(RTS、CTS)来控制数据流。当接收方准备好接收数据时,将CTS置为低电平(有效);发送方在发送下一个字节前检查CTS是否为低电平,如果是低电平则发送,否则等待。发送方在准备好接收来自对方的回复数据时,将RTS置为低电平(有效)。
- 软件流控 (XON/XOFF): 使用特殊的控制字符嵌入到数据流中。当接收方缓冲区快满时,发送XOFF字符 (ASCII DC3, 0x13) 告诉发送方暂停;当缓冲区有足够空间时,发送XON字符 (ASCII DC1, 0x11) 通知发送方恢复发送。此法不需要额外的信号线,但占用了数据带宽,且对二进制数据传输不太友好。
实际应用场景举例
- MCU与PC通信: 通过USB-TTL/RS-232转换器进行调试信息打印、参数配置、固件更新等。
- MCU与传感器/模块通信: 很多GPS模块、串口屏、蓝牙/Wifi/GSM模块、RFID读卡器等通过UART接口通信。
- 工业控制设备: 作为简单可靠的点对点通信接口,常常配合RS-232(短距离)或RS-422/RS-485(长距离/多点)物理层标准使用。
- 嵌入式系统内部调试: 打印Log信息到控制台。
- 简单的设备间数据交换: 如两个Arduino之间通信。
重要注意事项
- TTL电平与RS-232电平: UART协议本身定义的是帧格式和规则,物理层电平有不同标准。
- TTL UART: 逻辑高电平(1)通常代表+3.3V或+5V,逻辑低电平(0)代表0V。这是大多数微控制器、开发板上直接引出的串口电平。
- RS-232 UART: 逻辑高电平(1)代表 -3V to -25V(负电压),逻辑低电平(0)代表 +3V to +25V(正电压)。具有更长的通信距离(理论可达15米)和更好的抗干扰能力,但需要MAX232/SP3232等芯片进行电平转换。绝对不能用TTL电平直接连接RS-232接口设备,会烧坏芯片!
- 没有共享时钟: 确保波特率匹配是通信成功的基础。
- 起始位/停止位是开销: 每次传输一个字节(8位)需要至少2位的额外开销(1起始+1停止),实际有效数据传输率低于波特率。
总结
UART是一种简单、可靠、成熟、广泛应用的异步串行点对点全双工通信协议。它的精髓在于通过精确的波特率设置、清晰的起始/停止位定义来实现无时钟同步的通信。理解其帧结构(起始位、数据位顺序、可选校验位、停止位)、波特率的重要性、点对点全双工特性以及物理电平标准(TTL vs RS-232)的差异,是掌握和使用UART的关键。尽管它在多点通信和高带宽方面存在局限性,但在嵌入式系统、设备调试、模块通信等大量场景中,UART凭借其简单性、成本效益和成熟稳定性,仍然是不可或缺的基础通信接口之一。
简单认识UART通信协议
UART(Universal Asynchronous Receiver/Transmitter,通用异步收发传输器)通信协议是一种常见的串行通信协议
2024-07-25 18:07:32
简单认识UART串行通信协议
在电子通信领域,UART(Universal Asynchronous Receiver/Transmitter,通用异步收发传输器)是一种非常常见的串行通信
2024-05-27 16:09:53
UART串口通信协议是什么?
UART (Universal Asynchronous Receiver/Transmitter) 是一种通信接口协议,用于实现串口
2024-03-19 17:26:10
基于STM32之UART串口通信协议(一)详解
一、前言1、简介 写的这篇博客,是为了简单讲解一下UART通信协议,以及UART能够实现的一些功能,还有有关使用STM32CubeMX来配置芯
资料下载
李艳
2021-11-30 14:36:06
【世说知识】一文搞懂UART通信协议
UART,即通用异步接收器/发送器,是最常用的设备间通信协议之一,正确配置后,UART可以配合许多不同类型的涉及发送和接收串行数据的串行
2023-02-02 10:46:11
讨论使用UART通信协议的基本原则
UART,即通用异步接收器/发送器,是最常用的设备间通信协议之一,正确配置后,UART可以配合许多不同类型的涉及发送和接收串行数据的串行
2023-02-01 17:54:37
UART通信协议的相关资料推荐
一、前言1、简介 写的这篇博客,是为了简单讲解一下UART通信协议,以及UART能够实现的一些功能,还有有关使用STM32CubeMX来配置芯
UART串口通信协议的相关资料分享
#今天也是咸鱼的一天~UART是一个很基础的串口通信协议,有人打趣说只要有单片机的地方,就一定有uart。这话不假,不仅很多模块和单片机的
换一换
- 如何分清usb-c和type-c的区别
- 中国芯片现状怎样?芯片发展分析
- vga接口接线图及vga接口定义
- 华为harmonyos是什么意思,看懂鸿蒙OS系统!
- 芯片的工作原理是什么?
- ssd是什么意思
- 什么是蓝牙?它的主要作用是什么?
- 汽车电子包含哪些领域?
- TWS蓝牙耳机是什么意思?你真的了解吗
- 什么是单片机?有什么用?
- 升压电路图汇总解析
- plc的工作原理是什么?
- 再次免费公开一肖一吗
- 充电桩一般是如何收费的?有哪些收费标准?
- ADC是什么?高精度ADC是什么意思?
- EDA是什么?有什么作用?
- 中科院研发成功2nm光刻机
- 苹果手机哪几个支持无线充电的?
- dtmb信号覆盖城市查询
- 怎样挑选路由器?
- 华为芯片为什么受制于美国?
- 元宇宙概念股龙头一览
- type-c四根线接法图解
- 锂电池和铅酸电池哪个好?
- 什么是场效应管?它的作用是什么?
- 如何进行编码器的正确接线?接线方法介绍
- 虚短与虚断的概念介绍及区别
- 晶振的作用是什么?
- 大疆无人机的价格贵吗?大约在什么价位?
- 苹果nfc功能怎么复制门禁卡
- 单片机和嵌入式的区别是什么
- amoled屏幕和oled区别
- BLDC电机技术分析
- 复位电路的原理及作用
- dsp是什么意思?有什么作用?
- iphone13promax电池容量是多少毫安
- 苹果无线充电器怎么使用?
- 芯片的组成材料有什么
- 特斯拉充电桩充电是如何收费的?收费标准是什么?
- 直流电机驱动电路及原理图
- 自举电路图
- 通讯隔离作用
- 苹果笔记本macbookpro18款与19款区别
- 新斯的指纹芯片供哪些客户
- 传感器常见类型有哪些?
- 伺服电机是如何进行工作的?它的原理是什么?
- 无人机价钱多少?为什么说无人机烧钱?
- 以太网VPN技术概述
- 手机nfc功能打开好还是关闭好
- 十大公认音质好的无线蓝牙耳机