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 进行通信的时候,双方需要协商相关参数,否则无法进行信息解析,因此在通信之初,需要对所使用的工具设置上述的所有参数
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 串口一般为公头,设备的一般为母头
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 属于硬件握手的一种,最初是设计为电传打字机和调制解调器半双工协作通信的,每次它只能一方调制解调器发送数据。终端必须发送请求发送信号然后等到调制解调器回应清除发送信号。
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线模式