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

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应用示例――收发数据




标签: