UART 基础知识

文章内容主要来自于 http://www.elecfans.com/emb/jiekou/20171206595886.html。

UART 串口

通用异步接收器和发送器(Universal Asynchronous Receiver and Transmitter) 简称为 UART,通常是嵌入式设备中默认都会配置的通信接口。这是因为,很多嵌入式设备没有显示屏,无法获得嵌入式设备实时数据信息,通过 UART 串口和超级终端相连,可以打印嵌入式设备输出的信息。在对嵌入式系统进行跟踪和调试时,UART 串口也是必要的通信手段。比如网络路由器、交换机等都要通过串口来进行配置。UART 串口还是许多硬件数据输出的主要接口,如 GPS 接收器就是通过 UART 串口输出 GPS 接收数据的。

UART 功能

计算机内部采用并行数据,不能直接把数据发到 Modem,必须经过 UART 整理才能进行异步传输。其过程为:CPU 先把准备写入串行设备的数据放到 UART 的寄存器(临时内存块)中,再通过 FIFO(First Input First Output,先入先出队列)传送到串行设备,若是没有 FIFO,信息将变得杂乱无章,不可能传送到 Modem。

UART 是用于控制计算机与串行设备的芯片。有一点要注意的是,它提供了 RS-232C 数据终端设备接口,这样计算机就可以和调制解调器或其它使用 RS-232C 接口的串行设备通信了。作为接口的一部分,UART 还提供以下功能:将由计算机内部传送过来的并行数据转换为输出的串行数据流。将计算机外部来的串行数据转换为字节,供计算机内部并行数据的器件使用。在输出的串行数据流中加入奇偶校验位,并对从外部接收的数据流进行奇偶校验。在输出数据流中加入启停标记,并从接收数据流中删除启停标记。处理由键盘或鼠标发出的中断信号(键盘和鼠标也是串行设备)。可以处理计算机与外部串行设备的同步管理问题。有一些比较高档的 UART 还提供输入输出数据的缓冲区,比较新的 UART 是 16550,它可以在计算机需要处理数据前在其缓冲区内存储 16 字节数据,而通常的 UART 是 8250。如果你购买一个内置的调制解调器,此调制解调器内部通常就会有 16550 UART。

UART 基本结构

  1. 输出缓冲寄存器,它接收 CPU 从数据总线上送来的并行数据,并加以保存;
  2. 输出移位寄存器,它接收从输出缓冲器送来的并行数据,以发送时钟的速率把数据逐位移出,即将并行数据转换为串行数据输出;
  3. 输入移位寄存器,它以接收时钟的速率把出现在串行数据输入线上的数据逐位移入,当数据装满后,并行送往输入缓冲寄存器,即将串行数据转换成并行数据;
  4. 输入缓冲寄存器,它从输入移位寄存器中接收并行数据,然后由 CPU 取走;
  5. 控制寄存器,它接收 CPU 送来的控制字,由控制字的内容,决定通信时的传输方式以及数据格式等。例如采用异步方式还是同步方式,数据字符的位数,有无奇偶校验,是奇校验还是偶校验,停止位的位数等参数;
  6. 状态寄存器。状态寄存器中存放着接口的各种状态信息,例如输出缓冲区是否空,输入字符是否准备好等。在通信过程中,当符合某种状态时,接口中的状态检测逻辑将状态寄存器的相应位置“1”,以便让 CPU 查询。

异步通信和同步通信

图 同步信号与异步信号

同步通信技术

在发送数据信号的时候,会同时送出一根同步时钟信号, 用来同步发送方和接收方的数据采样频率。如图2-56所示,同步通信时,信号线1是一根同步时钟信号线,以固定的频率进行电平的切换,其频率周期为t,在每个电平的上升沿之后进行对同步送出的数据信号线2进行采样(高电平代表1,低电平代表0),根据采样数据电平高低取得输出数据信息。如果双方没有同步时钟的话,那么接收方就不知道采样周期,也就不能正常的取得数据信息。

异步通信技术

在异步通信技术中,数据发送方和数据接收方没有同步时钟,只有数据信号线,只不过发送端和接收端会按照协商好的协议(固定频率)来进行数据采样。数据发送方以每秒钟57600bits的速度发送数据,接收方也以57600bits的速度去接收数据,这样就可以保证数据的有效和正确。通常异步通信中使用波特率(Baud-Rate)来规定双方传输速度,其单位为bps(bits per second每秒传输位数)。

数据的串行和并行通信方式

串行通信好比是一列纵队,每个数据元素依次纵向排列。如图2-57所示,传输时一个比特一个比特的串行传输,每个时钟周期传输一个比特,这种传输方式相对比较简单,速度较慢,但是使用总线数较少,通常一根接收线,一根发送线即可实现串行通信。它的缺点是要增加额外的数据来控制一个数据帧的开始和结束。

并行通信好比一排横队,齐头并进同时传输。这种通信方式每个时钟周期传输的数据量和其总线宽度成正比,但是实现较为复杂。UART通信采用的是串行方式进行通信的。

图 串行数据通信与并行数据通信

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注