1. 概述
UART(Universal Asynchronous Receiver/Transmitter)是一种异步串口IO端口(Asynchronous Serial I/O port),每个SOC上可支持多个独立的UART。每个独立的UART的特性如下:
(1)每个UART port可基于中断或者DMA来工作,也就是UART可生成中断或者DMA请求,在内存和UART间进行数据的传输;
(2)可编程的波特率、红外传送(接收)、1~2个停止位、5~8 bit数据位宽、校验位(奇、偶校验);
(3)主要组成部分是控制单元,接收器,发送器,波特率生成器,结构框图如下
数据发送:数据被写到传输的传输队列中(FIFO(First Input First Output))中,之后数据会被copy到移位器(transmit shifter)中,最终数据移位器通过Tx pin传出。
数据接收:数据通过Rx pin将数据移入接收移位器中,接收移位器中的数据被传输到接收队列。
2.详细描述
(1)数据帧:UART数据帧包括起始位,5~8bit数据位,可选的校验位,1~2bit停止位。数据帧是可编程的,可以通过控制寄存器来进行设置。
(2)数据传出:数据传输时,一个突发长度的数据传输完成后,传输器会产生一个信号,之后下一数据才开始继续传输。
(3)数据接收:接收器除了接收数据外,还会接收传输的错误码,包括复写错误,校验错误,帧错误,传输完成信号错误:
<1>复写错误:新接收的数据覆盖了已经存在的数据(此数据还没来得及读出去);
<2>校验错误:接收器检测到了校验异常;
<3>帧错误:接收的数据没有有效的停止位;
<4>传输完成信号错误:接收器等待接收数据的时间超过了一次数据帧传输所花的时间。