UART 介绍

Posted by 程建军 on Tuesday, April 23, 2024

UART 介绍

串行接口 UART介绍

UART,即通用异步收发器(Universal Asynchronous Receiver/Transmitter),是最常用的设备间通信协议之一。 本文将UART用作硬件通信协议应遵循的标准步骤进行说明。

正确配置后,UART可以配合许多不同类型的涉及发送和接收串行数据的串行协议工作。 在串行通信中,数据通过单条线路或导线逐位传输。在双向通信中,我们使用两根导线来进行连续的串行数据传输。 根据应用和系统要求,串行通信需要的电路和导线较少,可降低实现成本。

本文将讨论使用UART的基本原则,重点是数据包传输、标准帧协议和定制帧协议; 定制帧协议将是安全合规性方面的增值特性,尤其是在代码开发期间。在产品开发过程中,本文档还旨在分享一些基本步骤,以检查数据表的实际使用。

内容:

引言

术语:

缩略语描述
UARTUniversal Asynchronous Receiver/Transmitter
RXReceiver 端口
TXTransmitter 端口

第1章介绍

UART是一种异步通信协议,没有时钟信号来进行数据的同步。因此只能以约定的速率进行数据传输。 UART也是一种单主机单从机的串口协议,如 图 1-1 所示,RX和TX直接连接。

图 1-1

第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 bits1 bit(1/0)1bit(1)

2.2 传输步骤

  1. 发送UART从数据总线并行接收数据;
  2. 发送UART将起始位、奇偶校验位和停止位以及数据帧添加到数据包中;
  3. 从起始位到结束位,整个数据包以串行方式从发送UART送至接收UART。接收UART以预配置的波特率对数据线进行采样;
  4. 接收UART解析数据包,根据数据包的起始位和结束位确定数据包的长度,丢弃起始位和结束位;
  5. 接收UART将剩余的串行数据帧转换回并行数据,并将其传输到接收端的数据总线。