保捱科技网
您的当前位置:首页UART总线

UART总线

来源:保捱科技网


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帧被扩展一位,以区别地址字符和正常数据字符。

UART可被设置为操作于一多站环境,此环境下,支持以下两种模式:

自动多站模式 当地址于两个预置值之一相匹配时,UART控制器自动检查到来地址字符,接收随后的数据。

非自动多站模式 UART控制器接收所有数据。一地址字符总被写入一新缓冲区。

综上所述,UART协议采取一种通过数据采样来确定位值的机理,具有简单准确的定帧模式,而且广泛用于多站系统中,具有自动多站和非自动多站两种模式,来区分地址和数据。

2.几种重要寄存器

在嵌入式开发中,对寄存器的理解和正确配置至关重要。对MPC860的UART协议,有几个重要寄存器,它们是:管足配置寄存器、波特率配置寄存器、通信处理命令寄存器、SCC通用模式寄存器、发送和接收缓冲区描述器、UART的特定参数、SCC协议专用模式寄存器、SCC协议事件寄存器、UART屏蔽寄存器。

管足配置寄存器一般是针对收、发两根管足,有开漏寄存器、数据寄存器、数据方向寄存器,它们可被设置为具有串行信道输出的能力和被设置为输入输出口。波特率配置寄存器负责把波特率指向所用的串口和配置波特率大小。通信处理命令寄存器主要用于判断命令的发出是否和阻止传送。SCC通用模式寄存器主要用于协议的选择和传输格式的配置。发送和接收缓冲区描述器主要用于收发数据和判断接收的是地址还是数据,数据的错误情况等。UART的特定参数用来部分初始化UART。SCC协议专用模式寄存器主要用于设置UART处于自动多站和非自动多站模式。事件寄存器主要用于判断是收中断还是发中断。屏蔽寄存器主要用于收、发使能。

因此,对UART协议来说,上面几种寄存器是很重要的,它们主要完成波特率配置,协议的选择,收发判断处理等。

UART & RS232 & COM

UART是通用异步收发器(异步串行通信口)的英文缩写,它包括了RS232、RS499、RS423、RS422和RS485等接口标准规范和总线标准规范,即UART是异步串行通信口的总称。

而RS232、RS499、RS423、RS422和RS485等,是对应各种异步串行通信口的接口标准和总线标准,它规定了通信口的电气特性、传输速

率、连接特性和接口的机械特性等内容。实际上是属于通信网络中的物理层(最底层)的概念,与通信协议没有直接关系。而通信协议,是属于通信网络中的数据链

路层(上一层)的概念。

COM口是PC(个人计算机)上,异步串行通信口的简写。由于历史原因,IBM的PC外部接口配置为RS232,成为实际上的PC界默认标准。所以,现在PC机的COM口均为RS232。

UART(Universal Asynchronous Receiver/Transmitter)即通用异步收发传输器,工作于数据链路层。包含了RS-232、RS-422、RS-485串口通信和红外(IrDA) 等等。UART协议作为一种低速通信协议,广泛应用于通信领域等各种场合。UART基本可分为并口通信及串口通信两种。

异步串口通信协议作为UART的一种,工作原理是将传输数据的每个字符一位接一位地传输。图一给出了其工作模式:

图 一

其中各位的意义如下:

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

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

奇偶校验位:资料位加上这一位后,使得“1”的位数应为偶数(偶校验)或奇数(奇校验),

以此来校验资料传送的正确性。

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

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

波特率:是衡量资料传送速率的指针。表示每秒钟传送的二进制位数。例如资料传送速率为120字符/秒,而每一个字符为10位,则其传送的波特率为10×120=1200字符/秒=1200波特。

在嵌入式系统或者计算机中,并非直接对串口直接进行,而是通过SCI (串行通讯接口)模块对其进行控制。(注:“SCI”首先由Motorola微串口微控制器而得名,SCI另一种说法是“UART控制器”)常用的许多芯片中都包含了SCI ,例如ARM的S3C2410X芯片内嵌了3个串行接口控制器,而Nios等软核芯片则可以用选用UART(RS232) 的IP对UART进行控制。PC机则常用 16650 UART,16750 UART等控制串口。

如果实现一个软件UART时,在UART检查端口管脚的串行活动时,需要占用大量时间,让应用程序停滞,这会使得软件UART没有意义。好在情况并

非如此,我们来看看标准的10位异步串行协议(包含一个起始位,一个停止位和8个数据位)收发一个字符时的情况(如图1所示)。

图1:标准的10位异步串行协议收发字符时的时序图。

在启动一次发送或接收操作之后,串行UART(不论是软件还是硬件形式的UART)并不需要连续监控I/O线。在发送一个字符时,每个位周期,

UART只需驱动一次发送信号线的状态,从起始位到8个数据位直到结束位依次设置每个位的电平。在接收一个字符时,UART在第一个下降沿开始工作,之后

只需在每个位时隙的对接收线上的信号状态进行一次采样。

我们可以用一对状态机来表征软件UART的行为,一个状态机用于发送字符,另一个用于接收字符。对一个全双工的UART而言,这两个状

态机是并行运行的,需要两个的定时器中断。这两个状态机都有主动和被动两种模式。发送状态机在收到一个需发送的字符时跳出空闲状态,在结束位发送之后

回到空闲状态。接收状态机在检测到接收线上的一个下降沿时跳出空闲状态。在检测到这个初始的低电平状态之后(该状态指示起始位已经开始),开始对位时隙进

行递减计数,同时按要求采样信号线上的每个信号位,包括停止位。

为了避免不必要地占用主应用过多的时间,UART状态机应该由一些周期性的基于定时器的中断来激活。接收线上初始下降沿的检测需要利用

一个边沿触发的外部中断单独处理。如果一个状态机的定时器被设置为每个比特周期发出一个中断请求,那么该状态机在每次中断被触发时能够执行任何需要的操作

(而且如果需要,还能进入到下一个状态)。用于实现状态机的代码应尽可能优化,因为只要软件UART处于活动状态,这些代码就会在后台连续运行。

摘 要:UART是广泛使用的串行数据通讯电路。本设计包含UART发送器、接收器和波特率发生器。设计应用EDA技术,基于FPGA/CPLD器件设计与实现UART。

关键词:FPGA/CPLD;UART;VHDL

---UART(即Universal Asynchronous Receiver Transmitter 通用异步收发器)是广泛使用的串行数据传输协议。UART允许在串行链路上进行全双工的通信。

---串行外设用到RS232-C异步串行接口,一般采用专用的集成电路即UART实现。如8250、8251、NS150等芯片都是常见的UART器件,这类芯片已经相当复杂,有的含有许多辅助的模块(如FIFO),有时我们不需要使用完整的UART的功能和这些辅助功能。或者设计上用到了FPGA/CPLD器件,那么我们就可以将所需要的UART功能集成到FPGA内部。使用VHDL将UART的核心功能集成,从而使整个设计更加紧凑、稳定且可靠。本文应用EDA技术,基于FPGA/CPLD器件设计与实现UART。

一 UART简介

1 UART结构

---UART主要有由数据总线接口、控制逻辑、波特率发生器、发送部分和接收部分等组成。

---功能包括微处理器接口,发送缓冲器(tbr)、发送移位寄存器(tsr)、帧产生、奇偶校验、并转串、数据接收缓冲器(rbr)、接收移位寄存器(rsr)、帧产生、奇偶校验、串转并。

---图1是UART的典型应用。

2 UART的帧格式

---UART的帧格式如图2所示。

---包括线路空闲状态(idle,高电平)、起始位(start bit,低电平)、5~8位数据位(data bits)、校验位(parity bit,可选)和停止位(stop bit,位数可为1、1.5、2位)。

---这种格式是由起始位和停止位来实现字符的同步。

---UART内部一般有配置寄存器,可以配置数据位数(5~8位)、是否有校验位和校验的类型、停止位的位数(1,1.5,2)等设置。

二 UART的设计与实现

1 UART发送器

---发送器每隔16个CLK16时钟周期输出1位,次序遵循1位起始位、8位数据位(假定数据位为8位)、1位校验位(可选)、1位停止位。

---CPU何时可以往发送缓冲器tbr写入数据,也就是说CPU要写数据到tbr时必须判断当前是否可写,如果不判这个条件,发送的数据会出错。

---数据的发送是由微处理器控制,微处理器给出wen信号,发送器根据此信号将并行数据din[7..0]锁存进发送缓冲器tbr[7..0],并通过发送移位寄存器tsr[7..0]发送串行数据至串行数据输出端dout。在数据发送过程中用输出信号tre作为标志信号,当一帧数据发送完毕时,tre信号为1,通知CPU在下个时钟装入新数据。

---发送器端口信号如图3所示。

---引入发送字符长度和发送次序计数器length_no,实现的部分VHDL程序如下。

---if std_logic_vector(length_no) = “0001” then

---tsr <= tbr ; --发送缓冲器tbr数据进入发送移位寄存器tsr

---tre <= '0' ; --发送移位寄存器空标志置“0”

---elsif std_logic_vector(length_no) = “0010” then

---dout <= '0' ; --发送起始位信号“0”

---elsif std_logic_vector(length_no) >= “0011” and std_logic_vector(length_no) <= “1010” then

---tsr <= '0' & tsr(7 downto 1); --从低位到高位进行移位输出至串行输出端dout

---dout <= tsr(0) ;

---parity <= parity xor tsr(0) ; --奇偶校验

---elsif std_logic_vector(length_no) = “1011” then

---dout <= parity ; 校验位输出

---elsif std_logic_vector(length_no) = “1100” then

---dout <= '1' ; --停止位输出

---tre <= '1' ; --发送完毕标志置“1”

---end if ;

---发送器仿真波形如图4所示。

2 UART接收器

---串行数据帧和接收时钟是异步的,发送来的数据由逻辑1变为逻辑0可以视为一个

数据帧的开始。接收器先要捕捉起始位,确定rxd输入由1到0,逻辑0要8个CLK16时钟周期,才是正常的起始位,然后在每隔16个CLK16时钟周期采样接收数据,移位输入接收移位寄存器rsr,最后输出数据dout。还要输出一个数据接收标志信号标志数据接收完。

---接收器的端口信号如图5所示。

---实现的部分VHDL程序如下。

---elsif clk1x'event and clk1x = '1' then

---if std_logic_vector(length_no) >= “0001” and std_logic_vector(length_no) <= “1001” then

-----数据帧数据由接收串行数据端移位入接收移位寄存器

---rsr(0) <= rxda ;

---rsr(7 downto 1) <= rsr(6 downto 0) ;

---parity <= parity xor rsr(7) ;

---elsif std_logic_vector(length_no) = “1010” then

---rbr <= rsr ; --接收移位寄存器数据进入接收缓冲器

---......

---end if ;

---接收器仿真波形如图6所示。

3 波特率发生器

---UART的接收和发送是按照相同的波特率进行收发的。波特率发生器产生的时钟频率不是波特率时钟频率,而是波特率时钟频率的16倍,目的是为在接收时进行精确地采样,以提出异步的串行数据。

---根据给定的晶振时钟和要求的波特率算出波特率分频数。

---波特率发生器仿真波形如图7所示。

三 小结

---通过波特率发生器、发送器和接收器模块的设计与仿真,能较容易地实现通用异步收发 器总模块,对于收发的数据帧和发生的波特率时钟频率能较灵活地改变,而且硬件实现不需要很多资源,尤其能较灵活地嵌入到FPGA/CPLD的开发中。在 EDA技术平台上进行设计、仿真与实现具有较好的优越性。

UART即通用异步接收器和发送器(Universal Asynchronous Receiver and Transmitter),是一种用于连接两个计算系统的简单、低成本的串行接口,对高速率串行通信具有更高的可靠性,需要的线缆数目要少于并行传输,同时支持远距离的串行通信。

图1显示了两个使用UART进行串行通信的系统。UART支持多系统间的串行通信,它的发送器功能是将并行数据发送至传送FIFO暂存,而后串行发出。因此UART可减轻处理器的工作负担,将并行数据传输无缝转换为串行方式,实现对每个通道的串行通信的管理并检查串行数据通信的错误。

图2显示了数据终端设备(DTE)和数据通信设备(DCE)之间的典型UART数据传输。其中发送数据(TxD)和接收数据(RxD)均为数据信号,其他信号(RTX、CTS、DTR、DSR)则用于握手和控制,以避免数据丢失。

飞利浦UART方案

综述

飞利浦的UART系列包括工业UART系列和16C UART系列。工业UART系列包括SCC26、SCC68、SC26C、SC28C、SC28L。其中SC28L201/202是两款高速、低功耗的单/双UART,具有实时数据错误检测、智能中断仲裁及256字节的FIFO;SC16CxxxB是先进的高速产品,电压范围更广,其波特率为5Mbps,具有高速总线周期。

飞利浦的UART产品可以提供的特性包括:产品线宽广,1~8通道器件适用于不同应用;工业级温度;低功耗,适用于使用电池的系统;扩展的中断系统和自动RS485功能,降低了软件和处理器开销;硬件和软件数据流控制,可以防止数据丢失,摩托罗拉或英特尔接口可选,兼容性好,设计周期短。 此外,的飞利浦UART还支持自动回传、用于在系统中调试的回传功能以及可用于无线点到点数据通信的IrDA接口。

飞利浦UART应用广泛,随处可见:基站、导航系统等电信或网络通信系统;电脑、

打印机等计算系统;MP3、自动售货机等消费类产品及汽车控制箱、煤气表等工业或汽车产品中都能看到它的身影。

飞利浦UART正在不断地进行优化,以满足各种新设计的要求。目前它可以为IrDA、蓝牙、GPRS和GPS等各种不同的无线设备提供通信能力,其解决方案包括支持额外的通道、深的FIFO、快速总线周期、高波特率、先进的中断系统与RS232和RS485通信。通过使用飞利浦UART,CPU可以更多地关注于其他任务。图3给出了典型的UART系统与RS485串行接口的通信示意。

下面将以单通道UART芯片SC28L201与双通道UART芯片SC28L202为例,详细阐释飞利浦UART产品的特性、优势及应用范围。

高性能单通道UART芯片SC28L201属于工业UART系列,而SC28L202则是双通道UART芯片。两种芯片都为全双工UART,拥有256字节的FIFO供接收器和发送器。

其特性包括:

13个可编程I/O端口,3V和5V工作电压,允许5V输入

为摩托罗拉或英特尔总线接口设计的引脚选择

波特率最高可达3.125Mbps,自动的RTS/CTS和Xon/Xoff数据流控制

掉电模式(< 10 A)与Xon/Xoff字符识别

16位可编程计数器/计时器

智能中断仲裁系统(I2A)

专为RS485应用提供的自动唤醒(9位)模式

线路中断检测和状态变化检测

接收器超时模式和接收器的看门狗定时器

实时传输错误校验

中断请求和确认引脚

工业级的温度范围和48针TSSOP封装

SC28L201/202的优势在于:

1)通过智能中断仲裁(I2A)特性可将与中断服务相关的CPU开销降至最低,从而提高了系统性能,使得处理器得到。其中,智能中断仲裁(I2A)是一种用于判断中断请求是否应当发往主机的过程,它的作用是仲裁多个中断请求,识别最高优先级的中断请求并将中断向量内容报告给主机。其优势在于能将CPU中断开销降至最低,使得处理器有更多的时间来处理其他功能,同时提供了通道数、中断源、以及FIFO充满程度。

2)实时数据错误校验特性,用于实时验证正确的数据是否抵达目的地,确保了数据的高度完整性。减轻处理器在按字节检验方面的负担,减少为处理器检验而发回数据块带来的延时。如图4所示。

图中蓝线显示的是数据在进行存储和发送,而后它与半位时间延迟接收到的数据相对比。红线显示的是远端UART传输的接收数据。其中,任何一个错误都将产生一个中断。

3)支持处理器在每个中断发送一个大的数据包,可在接收器FIFO时提供短信息告警,以确保数据的吞吐量,更可以预防数据丢失和避免数据的重新传输。

上述两器件的应用范围,包括:电信/网络(如:路由器、服务器、VoIP系统)、消费类电子设备和安全设备、工业控制设备和医疗设备、便携设备(如:移动电话、PDA、GPRS、游戏机)、多路工业远程终端(如:显示器、传感器、仪表)、POS系统(如:售货机屏幕、银行终端、加油站)及远程访问路由器(如:控制台、终端、诊断机、调制解调器)等。

桥接芯片

桥接芯片是管理不同总线接口之间通信的新一代接口解决方案,目的在于克服主机接口到外设之间的,它的优点包括使设计更加灵活、可保持原有的产品设计方案、缩短产品进入市场的时间并能将原有系统和新系统连接起来。

飞利浦的桥接芯片产品包括:SC16IS7xx、SC18IS60x和SC18IM70x。这些产品在设计时都考虑了低功耗、低电压、高数据吞吐量、高数据完整性等特性。其中,SC16IS7xx是以SPI或I2C为主连接到UART的产品,它拥有最小限度主机连接、支持RS485、包含IrDA支持无线连接;

SC18IS60x是以SPI为主连接到I2C总线的控制器,全双工高速SPI主接口带快速I2C设备接口,可编程GPIO且可用TSSOP封装;而SC18IM70x是以UART为主连接到I2C总线的控制器,支持RS232带快速I2C设备接口。

SPI总线和I2C总线

SPI总线是4线路全双工同步串行数据连接,连接到SPI总线的设备分为主设备及从设备,主设备发起数据传输,通过芯片选择(CS)针控制从设备,互连的设备间共享同一个VCC和GND。SPI总线适用于手持和其他移动平台系统为代表的数据流传输应用。

I2C总线是飞利浦在80年底开发的内部集成电路总线。它使用两线路(SCL为串行时钟,SDA为串行数据)进行简单的主-从通信,具有支持多主设备的总线带仲裁功能,其中的每个IC设备都通过其自身地址进行识别,它对于字节传输的数量没有严格,具体的开始条件为--当SCL处于“高电平”(HIGH)状态时, SDA线路上有从高(HIGH)到低(LOW)的电平跳变。

SPI和I2C总线的区别在于:SPI更快,最高可达15Mbps,采用全双工的工作方式,无需“等待确认”,但需要更多连线,扩展也要求有额外的芯片选择引脚;而I2C线路更少,更容易连接设备,成本更低,但属于半双工,速率更低(400kHz),在设备地址识别和等待确认方面的时间开销更大。

SC16IS7xx

下面将以SC16IS7xx为例,阐桥接解决方案的特性、优势及应用范围。SC16IS7xx是I2C或SPI主接口连接到UART(RS232/RS485)/IrDA/GPIO设备的桥接解决方案。

SC16IS7xx的主要特性包括:

全双工UART、可选I2C或SPI主总线接口;

连接到VDD的I2C/SPI针适用于I2C总线接口,连接到GND的适用于SPI总线接口;

2.5V或3.3V操作,允许5V输入;

低功耗:睡眠模式< 30 A,操作 < 6mA;

UART波特率最高5Mbps;

字节FIFO;

的使能/取消发送器和接收器;

自动硬件和软件数据流控制;

自动RS485支持,RS485自动检测;

硬件和软件复位,POR(上电复位,Power-On Reset);

IrDA SIR速率最高1.152Mbps,I2C速率最高400Kbps,SPI速率最高15Mbps;

8个可编程GPIO;

时钟频率在2.5V时最高为48MHz,3.3V时最高为80MHz;

工业级温度,可用HVQFN、TSSOP封装。

SC16IS7xx的优点包括:可以大大减少到主机的连线;兼容工业标准UART;支持I2C或SPI总线主机接口;自动UART数据流控制,可预防数据丢失;8个可编程I/O针,用于调制解调器控制、键盘和LED灯;可降低连接多个设备的成本及系统中的硬件和软件资源开销。

SC16IS7xx的应用领域包括:同步到异步的接口;SPI / I2C到RS232或RS485的通信;

IrDA无线通信;需要更多UART信道或要求更高性能UART的SPI / I2C系统。典型应用范例包括:移动电话、网络诊断终端;工业面板接口;移动访问服务器;蓝牙和GPRS接口;

无线IrDA数据端口及游戏机等。

因篇幅问题不能全部显示,请点此查看更多更全内容