UART(Universal Asynchronous Receiver/Transmitter)串口通信协议的核心步骤可归纳为以下三个阶段,每个阶段包含关键子步骤及技术细节:
一、 UART通信的三个核心步骤
步骤1:数据帧封装与发送准备
发送端将原始数据转换为符合UART帧格式的串行信号,包含以下子过程:
数据加载:待传输的并行数据从数据总线加载至发送器的移位寄存器中。
帧结构封装:
起始位:添加逻辑低电平(0)信号,标志数据帧开始。
数据位:按约定长度(5-9位)插入数据,从最低位(LSB)开始排列。
奇偶校验位(可选) :计算数据位中“1”的数量,添加奇/偶校验位以检测传输错误。
停止位:添加1-2位逻辑高电平(1),标志帧结束并提供时钟同步缓冲。
波特率同步:通过波特率发生器(Baud Rate Generator)控制位传输速率,确保发送时序符合约定值(如9600 bps)。
步骤2:串行数据传输与采样
数据通过物理线路异步传输,接收端进行信号采样与解析:
信号传输:封装后的帧以串行比特流形式从发送端TX引脚传输至接收端RX引脚。
起始位检测:接收端持续监测RX线路,检测到下降沿(从1→0)即判定为起始位,启动接收流程。
数据采样:
按约定波特率生成16倍速的采样时钟(如9600 bps对应153.6 kHz),每个比特周期采样16次。
取第7-9次采样值的多数结果作为实际比特值,避免时钟漂移导致的误码。
校验与错误检测:
对比奇偶校验位与数据位计算结果,若不一致则标记传输错误。
步骤3:数据帧解析与处理
接收端还原有效数据并完成后续处理:
帧结构剥离:丢弃起始位、停止位及奇偶校验位,仅保留数据位。
串并转换:将串行比特流重组为并行数据,存入接收缓冲寄存器。
数据交付:将有效数据通过数据总线传输至接收端处理器或外设。
二、 关键技术深度解析
异步通信机制:
无需共享时钟信号,依赖精确的波特率匹配(双方需预设相同速率)和起始位同步。
误差容忍机制:16倍过采样设计可容忍±4%的时钟偏差。
帧结构设计原理:
组成部分 | 功能说明 | 技术影响 |
---|---|---|
起始位 | 强制线路从空闲态(高电平)跳变为低电平,触发接收端同步 | 避免空闲态误触发,确保帧起始唯一性 |
停止位 | 提供最小高电平持续时间(1-2比特) | 容纳时钟差异,为下一帧起始检测留出恢复时间 |
校验位 | 奇/偶校验可检测单比特错误 | 不适用于多比特错误或纠错,需高层协议补充 |
典型参数配置:
波特率:常用9600、115200 bps;高速率需缩短线路距离以降低噪声。
数据位长度:8位(兼容ASCII)为工业标准,5-7位用于特定场景(如旧式电传设备)。
停止位:1位适用于多数场景;2位增强抗干扰能力。
三、 常见问题与解决方案
问题现象 | 根源分析 | 解决策略 |
---|---|---|
数据错位/乱码 | 波特率不匹配或时钟漂移 | 校验双方波特率配置,增加停止位数量 |
间歇性通信失败 | 线路干扰导致起始位误判 | 启用奇偶校验,缩短传输距离,采用差分信号(如RS485) |
高波特率下误码率高 | 信号边沿畸变或采样点偏移 | 降低波特率,优化PCB布局(减少串扰),启用过采样机制 |
四、 扩展应用场景
嵌入式系统调试:通过UART输出日志。
传感器数据采集:连接温湿度传感器(如DHT11)时采用单总线UART变种。
工业控制:结合RS485物理层实现多节点通信(最长1200米)。