特性 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中的所有字节被清零并复位指针逻辑。 |
停止位:控制每帧数据包含的停止位个数。 |
UART0应用示例——初始化代码 |
UART0应用示例——收发数据 |
电工学习网 ( )
GMT+8, 2021-12-6 20:44