今天小编要和大家分享的是UART简介 UART功能,接下来我将从UART的简介,UART的功能,UART的基本结构及端口介绍,UART的信号时序,这几个方面来介绍。

UART简介 UART功能

UART即为Universal AsynchrONous Receiver/Transmitter,译为通用异步收发器。UART是设备间进行异步通信的关键模块,用于控制计算机与串行设备的芯片。它提供了RS-232C数据终端设备接口,这样计算机就可以和调制解调器或其它使用RS-232C接口的串行设备通信了。

UART简介,UART功能,信号时序等信息资料

UART的简介

计算机与外部设备的连接,基本上使用了两类接口:串行接口与并行接口。并行接口是指数据的各个位同时进行传送,其特点是传输速度块,但当传输距离远、位数又多时,通信线路变复杂且成本提高。串行通信是指数据一位位地顺序传送,其特点是适合于远距离通信,通信线路简单,只要一对传输线就可以实现双向通信,从而大大降低了成本。

串行通信又分为异步与同步两类。UART(UniversalAsynchronousReceiver/Transmitter,通用异步收发器)正是设备间进行异步通信的关键模块。它的重要作用如下所示:

处理数据总路线和串行口之间的串/并、并/串转换;

通信双方只要采用相同的帧格式和波特率,就能在未共享时钟信号的情况下,仅用两根信号线(Rx和Tx)就可以完成通信过程;

采用异步方式,数据收发完毕后,可通过中断或置位标志位的方式通知微控制器进行处理,大大提高微控制器的工作效率。

若加入一个合适的电平转换器,如Sp3232E、Sp3485,UART还能用于RS-232、RS-485通信,或与计算机的端口连接。UART应用非常广泛,手机、工业控制、pC等应用中都要用到UART。

UART的功能

1.发送/接收逻辑

发送逻辑对从发送FIFO读取的数据执行“并→串”转换。控制逻辑输出起始位在先的串行位流,并且根据控制寄存器中已编程的配置,会面紧跟着数据位(注意:最低位LSB先输出)、奇偶校验位和停止位。

在检测到一个有效的起始脉冲后,接收逻辑对接收到的位流执行“串→并”转换。此外还会对溢出错误、奇偶校验错误、帧错误和线中止(line-break)错误进行检测,并将检测到的状态附加到被写入接收FIFO的数据中。

2.波特率的产生

波特率除数(baud-ratedivisor)是一个22位数,它由16位整数和6位小数组成。波特率发生器使用这两个值组成的数字来决定位周期。通过带有小数波特率的除法器,在足够高的系统时钟速率下,UART可以产生所有标准的波特率,而误差很小。

3.数据收发

发送时,数据被写入发送FIFO。如果UART被使能,则会按照预先设置好的参数(波特率、数据位、停止位、校验位等)开始发送数据,一直到发送FIFO中没有数据。一旦向发送FIFO写数据(如果FIFO未空),UART的忙标志位BUSY就有效,并且在发送数据期间一直保持有效。BUSY位仅在发送FIFO为空,且已从移位寄存器发送最后一个字符,包括停止位时才变无效。即UART不再使能,它也可以指示忙状态。BUSY位的相关库函数是UARTBusy()

在UART接收器空闲时,如果数据输入变成“低电平”,即接收到了起始位,则接收计数器开始运行,并且数据在Baud16的第8个周期被采样。如果Rx在Baud16的第8周期仍然为低电平,则起始位有效,否则会被认为是错误的起始位并将其忽略。

如果起始位有效,则根据数据字符被编程的长度,在Baud16的每第16个周期对连续的数据位(即一个位周期之后)进行采样。如果奇偶校验模式使能,则还会检测奇偶校验位。

最后,如果Rx为高电平,则有效的停止位被确认,否则发生帧错误。当接收到一个完整的字符时,将数据存放在接收FIFO中。

4.中断控制

出现以下情况时,可使UART产生中断:

FIFO溢出错误

线中止错误(line-break,即Rx信号一直为0的状态,包括校验位和停止位在内)

奇偶校验错误

帧错误(停止位不为1)

接收超时(接收FIFO已有数据但未满,而后续数据长时间不来)

发送

接收

由于所有中断事件在发送到中断控制器之前会一起进行“或运算”操作,所以任意时刻UART只能向中断产生一个中断请求。通过查询中断状态函数UARTIntStatus(),软件可以在同一个中断服务函数里处理多个中断事件(多个并列的if语句)。

5.FIFO操作FIFO是“First-InFirst-Out”的缩写,意为“先进先出”,是一种常见的队列操作。Stellaris系列ARM的UART模块包含有2个16字节的FIFO:一个用于发送,另一个用于接收。可以将两个FIFO分别配置为以不同深度触发中断。可供选择的配置包括:1/8、1/4、1/2、3/4和7/8深度。例如,如果接收FIFO选择1/4,则在UART接收到4个数据时产生接收中断。

发送FIFO的基本工作过程:只要有数据填充到发送FIFO里,就会立即启动发送过程。由于发送本身是个相对缓慢的过程,因此在发送的同时其它需要发送的数据还可以继续填充到发送FIFO里。当发送FIFO被填满时就不能再继续填充了,否则会造成数据丢失,此时只能等待。这个等待并不会很久,以9600的波特率为例,等待出现一个空位的时间在1ms上下。发送FIFO会按照填入数据的先后顺序把数据一个个发送出去,直到发送FIFO全空时为止。已发送完毕的数据会被自动清除,在发送FIFO里同时会多出一个空位。

接收FIFO的基本工作过程:当硬件逻辑接收到数据时,就会往接收FIFO里填充接收到的数据。程序应当及时取走这些数据,数据被取走也是在接收FIFO里被自动删除的过程,因此在接收FIFO里同时会多出一个空位。如果在接收FIFO里的数据未被及时取走而造成接收FIFO已满,则以后再接收到数据时因无空位可以填充而造成数据丢失。

收发FIFO主要是为了解决UART收发中断过于频繁而导致CpU效率不高的问题而引入的。在进行UART通信时,中断方式比轮询方式要简便且效率高。但是,如果没有收发FIFO,则每收发一个数据都要中断处理一次,效率仍然不够高。如果有了收发FIFO,则可以在连续收发若干个数据(可多至14个)后才产生一次中断然后一并处理,这就大大提高了收发效率。

完全不必要担心FIFO机制可能带来的数据丢失或得不到及时处理的问题,因为它已经帮你想到了收发过程中存在的任何问题,只要在初始化配置UART后,就可以放心收发了,FIFO和中断例程会自动搞定一切。

6.回环操作

UART可以进入一个内部回环(Loopback)模式,用于诊断或调试。在回环模式下,从Tx上发送的数据将被Rx输入端接收。

7.串行红外协议

在某些Stellaris系列ARM芯片里,UART还包含一个IrDA串行红外(SIR)编码器/解码器模块。IrDASIR模块的功能是在异步UART数据流和半双工串行SIR接口之间进行转换。片上不会执行任何模拟处理操作。SIR模块的任务就是要给UART提供一个数字编码输出和一个解码输入。UART信号管脚可以与一个红外收发器连接以实现IrDASIR物理层连接。

如图所示,为UART的IrDASIR模块基本应用电路。D1为红外发射管,Q2为红外接收管。

UART的基本结构及端口介绍

⑴输出缓冲寄存器,它接收CpU从数据总线上送来的并行数据,并加以保存。

⑵输出移位寄存器,它接收从输出缓冲器送来的并行数据,以发送时钟的速率把数据逐位移出,即将并行数据转换为串行数据输出。

⑶输入移位寄存器,它以接收时钟的速率把出现在串行数据输入线上的数据逐位移入,当数据装满后,并行送往输入缓冲寄存器,即将串行数据转换成并行数据。

⑷输入缓冲寄存器,它从输入移位寄存器中接收并行数据,然后由CpU取走。

⑸控制寄存器,它接收CpU送来的控制字,由控制字的内容,决定通信时的传输方式以及数据格式等。例如采用异步方式还是同步方式,数据字符的位数,有无奇偶校验,是奇校验还是偶校验,停止位的位数等参数。

⑹状态寄存器。状态寄存器中存放着接口的各种状态信息,例如输出缓冲区是否空,输入字符是否准备好等。在通信过程中,当符合某种状态时,接口中的状态检测逻辑将状态寄存器的相应位置“1”,以便让CpU查询。

UART的信号时序

①起始位:先发出一个逻辑”0”信号,表示传输字符的开始。

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

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

④停止位:它是一个字符数据的结束标志。可以是1位、1.5位、2位的高电平。

⑤空闲位:处于逻辑“1”状态,表示当前线路上没有数据传送。

关于UART,电子元器件资料就介绍完了,您有什么想法可以联系小编。

  • UC3846控制芯片工作原理控制图 逆变焊机原理与用途
  • 数字万用表电阻档测试二极管正反向没有阻值(使用万用表测量二极管的正向电阻,为什么各档)
  • 学单片机需要学数电模电吗(学单片机要先学数电模电吗)
  • 电工怎么选择适合自己用的万用表(电工初学者买什么样的万用表好)
  • 单片机需要同时运行多个任务怎么办(单片机怎么同时执行多个任务)
  • 电机保护的方案取决于负载的机械特性
  • 绝缘电阻表正负搭接不复零位是怎么回事
  • 短路怎么用万用表查