![](https://csdnimg.cn/release/download_crawler_static/10730621/bg1.jpg)
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 位。