UART 通信
UART: Universal Asynchronous Receiver/Transmitter,通用异步接收/
发送装置,UART 是一个并行输入成为串行输出的芯片,通常集成在主板上,
多数是 16550AFN 芯片。因为计算机内部采用并行数据数据,不能直接把数
据发到 Modem,必须经过 UART 整理才能进行异步传输,其过程为:CPU 先
把准备写入串行设备的数据放到 UART 的寄存器(临时内存块)中,再通过
FIFO(First Input First Output,先入先出队列)传送到串行设备,若是没
有 FIFO,信息将变得杂乱无章,不可能传送到 Modem。
UART (Universal Asynchronous Receiver/Transmitter) 通用异步收发器
UART 是用于控制计算机与串行设备的芯片。有一点要注意的是,它提供了
RS-232C 数据终端设备接口,这样计算机就可以和调制解调器或其它使用 RS-
232C 接口的串行设备通信了。作为接口的一部分,UART 还提供以下功能:
将由计算机内部传送过来的并行数据转换为输出的串行数据流。将计算机外部
来的串行数据转换为字节,供计算机内部使用并行数据的器件使用。在输出的
串行数据流中加入奇偶校验位,并对从外部接收的数据流进行奇偶校验。在输
出数据流中加入启停标记,并从接收数据流中删除启停标记。处理由键盘或鼠
标发出的中断信号(键盘和鼠标也是串行设备)。可以处理计算机与外部串行
设备的同步管理问题。有一些比较高档的 UART 还提供输入输出数据的缓冲
区,现在比较新的 UART 是 16550,它可以在计算机需要处理数据前在其缓
冲区内存储 16 字节数据,而通常的 UART 是 8250。现在如果您购买一个内
置的调制解调器,此调制解调器内部通常就会有 16550 UART。
1.UART 协议的工作特点
1.1 数据采样
UART 协议是实现设备之间低速数据通信的标准协议。因发送时不需同时发送
时钟,故此协议为异步。UART 链接典型为 38400,9600 波特 。
如图 1,UART 字符格式为 1 个起始位,5~8 个数据位,1 个地址位或奇偶位
(可选),1 个停止位。
由于接收器、发送器异步工作,无需联接接收和发送时钟。接收器采取对输入
数据流高度采样方式,通常采样为 16,并根据采样值确定位值。按惯例,使用
16 个采样值的中间三个值。
1.2 UART 帧区分
UART 一参数 MAX-IDL,用来设置空闲字符的多少。一旦一字符在线上被接
收,UART 控制器开始计数接收到的空闲字符。若下一数据字符接收前,一
MAX-IDL 多个空闲字符被接收,则产生空闲时间,缓冲区被关闭。顺次对
CPU32+核心发出一中断请求,要求从缓冲区接收数据。因此,MAX-IDL 给
UART 模式提供一区分帧的便利方法。
空闲字符按以下公式计算其位数:1(起始)+数据长度(5,6,7,8)+1(若奇偶
校验被使用)+停止位(1)。例如,1 个(起始),8 位数据,无校验,1 个停止
位,则空闲字符 MAX-IDL 为 10 位。
1.3 UART 地址识别
多站系统中,网络上可能会有两个以上的站,每个站有一特定的地址。图 2 为
此种结构的两个示例。由许多字符构成的帧可被广播,其第一字符做为目的地
址。为实现此功能,UART 帧被扩展一位,以区别地址字符和正常数据字符。