UART通讯协议,停止位、校验位

最详细的UART通讯协议分析在这里

UART是 "通用异步收发器" ( Universal Asynchronous Receiver/Transmitter ) 的缩写,通常简称为UART。是一种异步串行通信接口,用于将数据通过串列通信进行传输。

  • 波特率(Baud Rate):单位时间内传输的二进制位数,常见值为 9600、115200、38400。例如 9600bps 表示每秒传输 9600 位(含起始位、数据位、校验位、停止位),实际有效数据率需剔除控制位。
  • 数据位(Data Bits):每帧数据中包含的有效数据位数,通常为 8 位(对应一个字节),也有 7 位(适配 ASCII 码)。
  • 停止位(Stop Bits):每帧数据结束后的标识位,可设为 1 位、1.5 位或 2 位,用于接收方判断一帧数据是否结束。
  • 校验位(Parity Bit):用于校验数据传输是否出错,分为奇校验(数据位 + 校验位中 1 的个数为奇数)、偶校验(1 的个数为偶数)、无校验(最常用,依赖上层协议容错)。
  • 流控(Flow Control):可选参数,用于防止数据溢出(如 RTS/CTS 硬件流控、XON/XOFF 软件流控),多数简单场景(如传感器数据传输)无需启用。

发送方按参数封装数据帧(起始位 + 数据位 + 校验位 + 停止位),接收方按相同参数解析帧结构,若参数不匹配,接收数据会出现乱码(如波特率不匹配时常见"####"或乱码字符)。​

串口通信以"帧"为单位传输数据,标准帧结构如下(以 8 位数据位、1 位停止位、无校验为例):​

起始位(1 位):低电平(逻辑 0),表示一帧数据开始,打破之前的高电平空闲状态。​

数据位(8 位):从最低位(LSB)到最高位(MSB)传输,例如发送字节 0x5A(二进制 01011010),实际传输顺序为 0→1→0→1→1→0→1→0。​

停止位(1 位):高电平(逻辑 1),表示一帧数据结束,长度可配置为 1/1.5/2 位,确保接收方有足够时间准备接收下一帧。​

示例:发送字符"A"(ASCII 码 0x41,二进制 01000001),完整数据帧为:​

起始位(0)→ 数据位(1→0→0→0→0→0→1→0)→ 停止位(1)​

接收方通过检测"低电平起始位"触发接收,再按波特率同步采集后续 bits,最终重组为完整字节。​

停止位1,无校验的波形:

停止位2,无校验连续通信的波形:

相关推荐
BackCatK Chen1 天前
STM32保姆级入门教程|第7章:串口通信(USART)收发数据 + printf重定向打印调试(功能超详细+CubeIDE手把手)
stm32·串口通信·usart·stm32cubeide·printf重定向·嵌入式调试·中断接收
沈跃泉1 天前
C++串口类实现
c++·windows·串口通信·串口类
冷凝雨1 天前
复旦微FM33 MCU 底层开发指南——UART
stm32·单片机·串口·uart·fm33lc0·复旦微电子
liuluyang53011 天前
DW_apb_uart 16650 寄存器详解
单片机·嵌入式硬件·uart·基础外设
π同学18 天前
ESP-IDF+vscode开发ESP32第三讲——UART
vscode·esp32·uart·esp-idf
小贺儿开发19 天前
【Arduino与Unity交互探究】03 超声波测距模块
unity·arduino·串口通信·传感器·videoplayer·硬件交互
我在人间贩卖青春21 天前
U(S)ART 串口应用
单片机·串口·uart·usart
我在人间贩卖青春22 天前
U(S)ART 串口理论
串口·uart·usart
波特率11520024 天前
C++当中is-a(继承)与has-a(成员对象)的辨析与使用指南(包含实际工程当中的使用示例)
c++·ros·串口通信
嵌入小生00724 天前
硬件 --- 通信 --- uart/通信方式/电平标准/通信方向
uart·通信·串行通信·并行通信·电平标准·通信方向