UART 概述
通用异步收发器(UART)是一种全双工、串行、异步通信协议,常用于设备间数据传输。包含两根信号线:
- RXD(接收信号线)
- TXD(发送信号线)
通信方式
单工
- 通信方向固定,仅支持单向传输(如广播)。
- 单根信号线实现数据传输。
半双工(如I2C)
- 通信双方可切换发送/接收角色。
- 单根信号线双向传输,但同一时刻只能单向传输。
全双工(UART)
- 通信双方同时收发数据。
- 双信号线(RXD/TXD)实现双向实时传输。
数据传输规则
LSB优先
- 数据位传输从最低位(LSB)开始。
串行 vs 并行
特性 | 串行 | 并行 |
---|---|---|
速率 | 较慢(逐位传输) | 较快(多线同时传输) |
硬件成本 | 低 | 高 |
抗干扰性 | 强(适合远距离,如RS485) | 弱(30米内有效) |
串口通信时序
- 空闲状态:高电平。
- 起始位:高→低电平跳变,标志通信开始。
- 数据位:8位(LSB优先),可配置为5-9位。
- 校验位(可选):奇偶校验(见下文)。
- 停止位:高电平,标志帧结束(通常1-2位)。
奇偶校验
问题:无法检测偶数个位错误。
- 奇校验:数据位+校验位中“1”的总数为奇数。
- 偶校验:数据位+校验位中“1”的总数为偶数。
串口参数配置
常见参数组合:
9600,8,N,1
(波特率9600,8位数据,无校验,1位停止)2400,8,E,1
(偶校验)115200,8,O,1
(奇校验)
参数说明:
- 波特率:bps(如9600=9600bit/s)。
- 校验位:
N
(无)、E
(偶)、O
(奇)。
同步与异步通信
- 同步(如I2C/SPI):依赖共享时钟线(SCL/SCLK)同步数据。
- 异步(UART):无时钟线,通过预定义波特率同步。
寄存器配置(以8051为例)
SCON/PCON寄存器
- 工作模式:
SM0=0
,SM1=1
(8位UART)。 - 允许接收:
REN=1
。 - 中断标志:
TI
(发送完成)、RI
(接收完成),需软件清零。
定时器配置
- 模式:
TMOD=0x20
(定时器1,8位自动重载)。 - 波特率:写入
TH1/TL1
初值,TCON.TR1=1
启动。
中断配置
- 全局中断:
IE.EA=1
。 - 串口中断:
IE.ES=1
。
主从应答机制
- 主机:发起通信请求(如发送指令
01
控制LED)。 - 从机:解析指令并执行操作,返回应答信号。
补充要点
- 差分信号(如RS485):增强抗干扰能力,适合长距离通信。
- 硬件流控:通过
RTS/CTS
信号线控制数据流,避免缓冲区溢出。 - 现代应用:USB转UART芯片(如CH340)简化嵌入式调试。
常见问题
- 波特率误差:需保证收发双方误差<2%(如晶振精度影响)。
- 电平标准:UART通常为TTL电平(0-3.3V/5V),与RS232(±12V)需电平转换。
通过合理配置参数和寄存器,UART可实现稳定可靠的设备间通信。