7.11.1. 模块介绍

7.11.1.1. 术语定义

术语

定义

注释说明

UART

Universal Asynchronous Receiver/Transmitter

通用异步收发传输器

TTL

Transistor-Transistor Logic

逻辑门电路

DCD

Data Carrier Detect

载波侦听

DTR

Data Terminal Ready

数据终端准备好

DSR

Data Set Ready

数据准备好

RTS

Request To Send

请求发送

CTS

Clear To Send

清除发送

RI

Ring Indicator

响铃指示

THR

Transmit Holding Register

发送保持寄存器

RBR

Receive Buffer Register

接收缓冲寄存器

ACPI

Advanced Configuration and Power Interface

高阶配置和电源接口

7.11.1.2. 模块简介

通用异步收发传输器(Universal Asynchronous Receiver/Transmitter),通常称作 UART,是一种通用串行数据总线。

串行通信是指利用一条传输线将数据一位位地顺序传送,通信线路非常简单。

UART 为双向通信,可以实现全双工传输和接收。在嵌入式设计中,UART 用于主机与辅助设备通信,如汽车音响与外接AP之间的通信,也用于 PC 机通信包括与监控调试器和其它器件,如 EEPROM 通信。

在 UART 上追加同步方式的序列信号变换电路的产品,被称为 USART(Universal Synchronous Asynchronous Receiver Transmitter)

7.11.1.3. 通信协议

UART 作为异步串行通信协议的一种,工作原理是将传输数据的每个字符一位接一位地传输。其协议中添加了一些特殊的表示位:

  • 起始位 Start bit

    先发出一个逻辑“0”的信号,表示传输字符的开始

  • 数据位 Data bits

    紧接着起始位之后。数据位的个数可以是4、5、6、7、8等,构成一个字符。通常采用 ASCII 码。从最低位开始传送,靠时钟定位。

  • 奇偶校验位 Parity

    数据位加上这一位后,使得“1”的位数应为偶数(偶校验)或奇数(奇校验),以此来校验数据传送的正确性。

  • 停止位 Stop bits

    它是一个字符数据的结束标志。可以是1位、1.5位、2位的高电平。 由于数据是在传输线上定时的,并且每一个设备有其自己的时钟,很可能在通信中两台设备间出现了小小的不同步。因此停止位不仅仅是表示传输的结束,并且提供计算机校正时钟同步的机会。停止位的位数越多,时钟同步的容忍程度越大,但是数据传输率会越慢

  • 流控 Flow contorl

    管理两个节点之间数据传输速率的过程,以防止出现接收端的数据缓冲区已满,而发送端依然继续发送数据,所导致数据丢失,我们会在一些上位机上看到 RTS /CTS、DTR /DSR和 XON /XOFF的选项,这是对流控制的选项

  • 空闲位

    处于逻辑“1”状态,表示当前线路上没有数据传送,该位为协议位,自动产生

  • 波特率 BaudRate

    是衡量数据传送速率的指标。表示每秒钟传送的bit数。比如波特率 115200,表示传输速率是 115200 bps

7.11.1.4. 参数信息

在 UART 进行通信的时候,双方需要协商相关参数,否则无法进行信息解析,因此在通信之初,需要对所使用的工具设置上述的所有参数

../../../_images/uart-param.jpg

7.11.1.5. 常用接口

  • 串口、COM 口是指的物理接口形式(硬件)。

  • TTL、RS-232、RS-485 是指的电平标准(电信号)。

7.11.1.5.1. TTL

  • TTL标准是低电平(0V)为0,高电平(+5V)为1。

  • TTL 接口需要对端接口也为 TTL,但诸如 PC 等设备无 TTL 接口的UART口,一般转 TTL 为 USB 等 PC 更通用的接口。

  • TTL 接口为全双工,连接设备的时候一般只接 GND/RX/TX。不会接Vcc或者 +3.3v 的电源线,避免与目标设备上的供电冲突,但 GND 可以保证源设备和目标设备供地,有助于信号稳定。

  • 信号线采用交叉的方式,即源端的 RX 连接目标设备的 TX,源端的 TX 连接目标设备的 RX。

7.11.1.5.2. RS232

  • RS232 标准是正电平(+3V~+15V)为0,负电平(-13V~-15V)为1。

  • RS232 接口在总线上只允许连接1个收发器,单站能力。

  • RS232 传输线采用屏蔽双绞线,最高传输距离一般为 15M,最大速率为 20Kbps。

  • RS232 接口为全双工,连接设备的时候一般只接 GND/RX/TX。

  • 信号线也采用交叉的方式,即源端的RX连接目标设备的 TX,源端的 TX 连接目标设备的 RX。

7.11.1.5.3. RS422

  • RS422 标准采用差分信号负逻辑,逻辑“1”以两线间的电压差为+(2—6)V表示;逻辑“0”以两线间的电压差为-(2—6)V表示。接口信号电平比 RS232 降低了,就不易损坏接口电路的芯片,且该电平与 TTL 电平兼容,可方便与TTL电路连接。

  • RS422 接口在总线上是允许连接多达128个收发器,多站能力。

  • RS422 的数据最高传输速率为 10Mbps,100米长双绞线的最大速度为 1Mb/s。

  • RS422 采用平衡发送和差分接收,因此具有抑制共模干扰的能力。RS422 接口的最大传输距离标准值为4000英尺(约1219米),实际上可达3000米。

  • RS422 是全双工,连接设备的时候一般接 RX+/RX-/TX+/TX-/GND。

  • 信号线也采用交叉的方式,即源端的 RX-/RX+ 连接目标设备的 TX-/TX+,源端的 TX-/TX+ 连接目标设备的 RX-/RX+。

7.11.1.5.4. RS485

  • RS485 的电气性能和 RS422 完全一样,主要区别是 RS485 是半双工。连接设备的时候一般接 A-/A+/GND,DB9 接口定义了两组,同时必须使用同一组的+/-。

  • 信号线也采用交叉的方式,即源端的 A- 连接目标设备的A-,源端的 A+ 连接目标设备的 A+。

7.11.1.6. 插头

7.11.1.6.1. 公母之分

  • 针形的为公头,孔形的为母头

  • PC 串口一般为公头,设备的一般为母头

../../../_images/port-male.jpg

7.11.1.6.2. DB-9接口

RS232DB9 的信号分分四组:

  • DCD/RI:电气 Ready 参数

  • DTR/DSR:模块 Ready 参数

  • RTS/CTS:流控参数

  • RXD/TXD:数据收发

针序

RS232

说明

RS422

说明

RS485

说明

1

DCD

数据载波检测

RXD-

接收

A-

组1

2

RXD

接收数据

3

TXD

发送数据

4

DTR

数据终端准备好

TXD+

发送

A+

组2

5

GND

信号地

GND

信号地

GND

信号地

6

DSR

数据准备好

RXD+

接收

A+

组1

7

RTS

请求发送

RTS

请求发送

RTS

请求发送

8

CTS

清除发送

CTS

清除发送

CTS

清除发送

9

RI

响铃指示

TXD-

发送

A-

组2

7.11.1.7. 流控

这里讲到的 “流”,指的是数据流;在数据通信中,流控制是管理两个节点之间数据传输速率的过程,以防止出现接收端的数据缓冲区已满,而发送端依然继续发送数据,所导致数据丢失。

当接收端的数据缓冲区已满,无法处理数据来时,就发出 “不再接收” 的信号,发送端则停止发送,直到发送端收到 “可以继续发送” 的信号再发送数据。

计算机中常用的两种流控制分别是硬件流控制(RTS /CTS、DTR /DSR等)和软件流控制(XON /XOFF)。

7.11.1.7.1. 硬件流控

RTS/CTS 属于硬件握手的一种,最初是设计为电传打字机和调制解调器半双工协作通信的,每次它只能一方调制解调器发送数据。终端必须发送请求发送信号然后等到调制解调器回应清除发送信号。

../../../_images/flowctrol.jpg

A 端的 DTR(数据设备就绪)发出信号, 当 B 端准备好后,B 端的 DTR(数据设备就绪)向 A端的 DSR(通讯设备就绪)发出信号。 接下来就可以通过 RTS(请求发送)和 DTR(允许发送)来控制通信。

7.11.1.7.2. 软件流控

软件流控制(Software flow control)是在计算机数据链路中的一种流控制方法,特别适用于 RS232 串口通信;它是采用特殊字符来传输带内信令,特殊编码字符称作 XOFF 与 XON(分别表示 “transmit off” 与 “transmit on”)。因此,也被称作 “XON /XOFF流控制”。

码的名字

含义

ASCII

十进制

十六进制

XOFF

暂停传输

DC3

19

13

XON

恢复传输

DC1

17

11

7.11.1.8. RAW模式

UART 作为tty设备工作的时候,有两种工作方式:

  • Canonical Input

    RX端接收到数据之后不会直接反馈给用户态的read函数,而是要一直等到一个回车,意即对一些特殊字符进行语意解析

  • Raw Input

    RX端接收到什么直接返回到用户空间的read函数里面

两种工作模式均为kernel层逻辑,和驱动/硬件无关,对于普通的uart应用,建议Canonical方式,对于RS485应用,建议使用Raw方式,二者通过termios的lflag参数的ICANON 位进行区分。

7.11.1.9. 模块特性

  • 兼容工业标准16550 UART

  • 256x8bit发送与接收FIFO

  • 传输速度可达3Mbps

  • 支持5-8数据位以及1/1 ½/2停止位

  • 支持奇校验,偶校验或者无奇偶校验

  • 支持DMA控制器接口

  • 支持软件/硬件流控

  • 支持IrDA 1.0 SIR

  • 支持RS-485/9bit 模式

  • RS-485支持硬件使能

  • Compact-IO 精简2线模式