你的位置: 首页 > 通信技术 > 嵌入式系统

LPC2000系列ARM UART0

2016-10-24 13:09:34 | 人围观 | 评论:

     特性
     LPC2000系列微控制器具有两个功能强大的UART,其中UART0具有如下的特性:
     16字节接收FIFO和16字节发送FIFO;
     寄存器位置符合16C550工业标准;
     接收FIFO触发点可设置为1、4、8或14字节;
     内置波特率发生器。
     使用UART0通信
     使用UART0通信需要两个引脚,分别为:
     UART0内部结构示意图
     UART0相关寄存器描述
     ――接收缓存寄存器
     U0RSR移位寄存器从RxD0引脚接收的有效数据将被送到接收FIFO中。通过读取U0RBR寄存器可以将接收FIFO中最早接收到的字节读出,当FIFO中不再包含有效数据时,该寄存器反映接收到的最后一个有效字节数据。接收的数据不足8位时,高位用0填充。
     注意: U0RBR只读。访问该寄存器时,U0LCR的除数锁存访问位(DLAB)必须为0。
     UART0相关寄存器描述
     ――发送器保持寄存器
     写入该寄存器的值将是发送FIFO中的最高字节。访问该寄存器时,U0LCR的除数锁存访问位(DLAB)必须为0。
     注意: U0THR只写。它的地址与U0RBR相同,通过读/写操作予以区分。
     UART0相关寄存器描述
     ――除数锁存寄存器
     这两个寄存器决定波特率时钟的频率,而波特率时钟必须是波特率的16倍。波特率计算公式如下:
     BaudRate = FPCLK / ([U0DLM,U0DLL]×16)
     注意:由于U0DLL、U0DLM寄存器与其它寄存器的地址重叠,所以在访问它们时,U0LCR的除数锁存访问位(DLAB)必须为1。
     UART0相关寄存器描述
     ――中断使能寄存器
     U0IER可以控制UART0的4个中断源。其中RBR中断使能包括两个中断,一个是接收数据可用(RDA)中断,一个是接收超时中断(CTI)。稍后将对各中断源作详细介绍。
     UART0相关寄存器描述
     ――中断标识寄存器
     UART0相关寄存器描述
     ――中断源说明
     RLS中断:该中断为最高优先级。它在UART0产生了四个错误条件(溢出错误(OE)、奇偶错误(PE)、帧错误(FE)和间隔中断(BI))中的任意一个时置位。通过查看U0LSR[4:1]可以了解到产生该中断的错误条件。读取U0LSR时清除该中断;
     RDA中断:该中断与CTI中断并列为第二优先级。当接收的有效数据到达接收FIFO设置寄存器(U0FCR)中设置的触发点时,RDA被激活。当接收FIFO中的有效数据少于触发点时,RDA复位;
     CTI中断:该中断为第二优先级。当接收FIFO中的有效数据少于预定的触发点数量,但至少有一个字节时,如果超过接收3.5~4.5个字节所需要的时间仍没有接收到数据,那将触发该中断。对接收FIFO的任何操作都会清零该中断标志;
     THRE中断:该中断为第三优先级。当发送FIFO为空并且满足一定的条件时,该中断将被触发。这些条件是:
     3.如果在发送FIFO中有过两个字节以上的数据,但是现在发送FIFO为空时,将立即触发THRE中断。
     当THRE中断为当前有效的最高优先级中断时,往U0THR写数据,或者对U0IIR的读操作,将使THRE中断复位。
     UART0相关寄存器描述
     ――FIFO控制寄存器

     复位RxFIFO:接收FIFO复位。当该位置位时,UART0接收FIFO中的所有字节被清零并复位指针逻辑。
     注意:该位会自动清零。
     复位TxFIFO:发送FIFO复位。当该位置位时,UART0发送FIFO中的所有字节被清零并复位指针逻辑。
     注意:该位会自动清零。
     ―:这些位保留,用户程序不要向这些位写入1。
     Rx触发点设置:通过设置这两位可以调整接收FIFO中触发RDA中断的有效字节数量。
     00:触发点0(1字节); 01:触发点1(4字节);
     10:触发点2(8字节); 11:触发点3(14字节);
     UART0相关寄存器描述
     ――线状态控制寄存器

     停止位:控制每帧数据包含的停止位个数。
     0:1个停止位; 1:2个停止位;
     奇偶使能:控制是否进行奇偶校验。如果使能,发送时将添加一位校验位。
     0:禁止奇偶产生和校验; 1:使能奇偶产生和校验;
     奇偶选择:设置奇偶校验类型。
     00:奇数(数据位+校验位=奇数);
     01:偶数(数据位+校验位=偶数);
     10:校验位强制为1; 11:校验位强制为0;
     间隔:当该位为1时,输出引脚(TxD0)强制为逻辑0,可以引起通信对方(LPC2000)产生间隔中断。在某些通信方式中,使用间隔中断作为通信的起始信号(如:LIN Bus)。
     0:禁止间隔发送; 1:使能间隔发送;
     除数锁存:因为U0DLL和U0RBR/U0THR的地址重叠,通过设置该位可以指定其中某个寄存器操作。
     0:禁止访问除数锁存寄存器; 1:使能访问除数锁存寄存器;
     RDR:接收数据就绪。判断该位是否置一,决定能否从FIFO中读取数据。
     0:U0RBR为空;
     1:U0RBR中包含有效数据。从接收FIFO中读走所有数据后,恢复为0。
     OE:溢出错误标志。当U0RBR寄存器中已经有新的字符就绪,而接收FIFO已满时,该位置位。
     0:接收缓存区没有溢出;
     1:接收缓存区发生溢出错误。
     PE:奇偶校验错误。在使能奇偶校验位之后,对所有接收的数据都进行奇偶校验,如果与U0LCR中的设置不符,将引起奇偶校验错误。
     0:没有发生奇偶校验错误;
     1:发生奇偶校验错误。读操作使该位恢复为0。
     FE:帧错误标志。当接收字符的停止位为0时,产生帧错误。
     0:没有发生帧错误;
     1:发生帧错误。读取该位时恢复为0。
     BI:间隔中断标志。在发送数据时,如果RXD0引脚保持低电平,将产生间隔中断。发生间隔中断后,接收模块停止数据接收。
     0:没有发生间隔中断;
     1:发生间隔中断。
     THRE:反映U0THR是否为空,也可以认为发送FIFO是否为空。
     0:不为空;
     1:空。对U0THR进行写操作,使该位恢复为0。
     TEMT:当发送移位寄存器和U0THR均为空时,该位置位。
     0:不为空;
     1:空。对U0THR进行写操作,使该位恢复为0。
     RXFE:如果一个带有接收错误(如帧错误、奇偶错误或间隔中断)的字符装入U0RBR时,该位置位。
     0:U0RBR中没有接收错误,或U0FCR[0]为0;
     1:U0RBR中包含至少一个UART0 Rx错误。
     使用UART0注意要点
     U0RBR与U0THR在同一地址上,但实际上是两个独立的寄存器,读操作时选择U0RBR,写操作时选择U0THR;
     U0DLL与U0RBR/U0THR、U0DLM与U0IER在同一地址上,通过除数访问位DLAB选择。当该位为1时,选择U0DLL和U0DLM。为0时,选择U0RBR/U0THR和U0IER;
     无论在U0FCR中是否使能FIFO,接收FIFO不能被禁止。关闭FIFO后,接收FIFO只有一个字节缓冲;
     波特率计算公式:U0DLM、U0DLL = FPCLK/(16×baud);
     UART0应用示例――操作流程

     UART0应用示例――初始化代码
     UART0应用示例――收发数据




标签: