UART 介绍
串行接口 UART介绍
UART,即通用异步收发器(Universal Asynchronous Receiver/Transmitter),是最常用的设备间通信协议之一。 本文将UART用作硬件通信协议应遵循的标准步骤进行说明。
正确配置后,UART可以配合许多不同类型的涉及发送和接收串行数据的串行协议工作。 在串行通信中,数据通过单条线路或导线逐位传输。在双向通信中,我们使用两根导线来进行连续的串行数据传输。 根据应用和系统要求,串行通信需要的电路和导线较少,可降低实现成本。
本文将讨论使用UART的基本原则,重点是数据包传输、标准帧协议和定制帧协议; 定制帧协议将是安全合规性方面的增值特性,尤其是在代码开发期间。在产品开发过程中,本文档还旨在分享一些基本步骤,以检查数据表的实际使用。
内容:
引言
术语:
缩略语 | 描述 |
---|---|
UART | Universal Asynchronous Receiver/Transmitter |
RX | Receiver 端口 |
TX | Transmitter 端口 |
第1章介绍
UART是一种异步通信协议,没有时钟信号来进行数据的同步。因此只能以约定的速率进行数据传输。 UART也是一种单主机单从机的串口协议,如 图 1-1 所示,RX和TX直接连接。
第2章 数据传输
在进行数据传输之前,UART发送器将并行数据转换为串行格式然后再发送到UART接收器,UART接收器接收到串行数据再转换到并行格式。
对于UART和大多数串行通信,发送和接收都要将波特率设置为相同的值。常用的值为:
- 9600
- 19200
- 38400
- 57600
- 115200
允许的波特率差异最大值一般为10%,超过这个差异,数据的接收和发送就会错位,导致传输错误。
2.1 数据格式
在UART中,传输模式为数据包传输,如 表 2-1 所示,在一个数据包中,不仅包含要传输的数据,还包含了起始位、奇偶校验位、停止位。 要求如下:
- 起始位:空闲状态时,uart数据线保持高电平。若要开始传输,发送端uart将TX从高电平拉低到低电平一位时间表示传输的开始。 接收端接收到RX从高电平到低电平的变化,便开始以设置好的的波特率速度开始读取RX接下来的数据帧。
- 数据帧:数据帧包含要传输的数据,如果使用校验位,数据帧的长度可以是5-8位。 如果不使用校验位,数据帧的长度可以是5-9位。在大多数情况下,数据以LSB优先的方式发送。
- 校验位:通过校验位来判断传输期间是否有数据发生改变。电磁辐射、不一致的波特率或长距离的传输都有可能改变数据位。
可使用的校验方式:
- 奇校验:数据帧和校验位中高电平位总是奇数个。如果数据帧高电平位是奇数个,则校验位设置为0;如果数据帧高电平位是偶数个,则校验位设置为1。
- 偶校验:数据帧和校验位中高电平位总是偶数个。如果数据帧高电平位是偶数个,则校验位设置为0;如果数据帧高电平位是奇数个,则校验位设置为1。
- 停止位:为了表示数据包结束,发送UART将数据传输线从低电压驱动到高电压并保持1到2位时间。
表 2-1 UART数据包
起始位 | 数据帧 | 校验位 | 停止位 |
---|---|---|---|
1 bit(0) | 5-9 bits | 1 bit(1/0) | 1bit(1) |
2.2 传输步骤
- 发送UART从数据总线并行接收数据;
- 发送UART将起始位、奇偶校验位和停止位以及数据帧添加到数据包中;
- 从起始位到结束位,整个数据包以串行方式从发送UART送至接收UART。接收UART以预配置的波特率对数据线进行采样;
- 接收UART解析数据包,根据数据包的起始位和结束位确定数据包的长度,丢弃起始位和结束位;
- 接收UART将剩余的串行数据帧转换回并行数据,并将其传输到接收端的数据总线。