NXP 系列:LPC1114 (适用于简单音频设备)_(8).LPC1114UART编程.docx
PAGE1
PAGE1
LPC1114UART编程
1.引言
UART(UniversalAsynchronousReceiver-Transmitter)是一种非常常见的串行通信接口,用于在单片机和其他设备之间传输数据。在NXP系列的LPC1114单片机中,UART接口被广泛应用于数据采集、调试信息输出、与其他设备通信等场景。本节将详细介绍LPC1114的UART编程方法,包括初始化、数据发送和接收、中断配置等内容。
2.UART基础
UART通信的基本原理是通过串行数据线在两个设备之间传输数据。UART通信不需要时钟线,因此是一种异步通信方式。LPC1114中的UART模块支持多种波特率、数据格式和中断配置,使得开发者可以根据具体需求进行灵活配置。
2.1UART寄存器
LPC1114的UART模块包括多个寄存器,用于控制和配置UART通信。以下是一些常用寄存器的介绍:
LSR(LineStatusRegister):线路状态寄存器,用于指示接收缓冲区的状态、发送缓冲区的状态等。
THR(TransmitHoldingRegister):发送保持寄存器,用于写入待发送的数据。
RBR(ReceiveBufferRegister):接收缓冲寄存器,用于读取接收到的数据。
IER(InterruptEnableRegister):中断使能寄存器,用于使能或禁止UART中断。
FDR(FractionalDividerRegister):分数除法寄存器,用于设置波特率的分数部分。
LCR(LineControlRegister):线路控制寄存器,用于设置数据位、停止位、奇偶校验位等。
DLL(DivisorLatchLowByte):除法器低位寄存器,用于设置波特率的低8位。
DLM(DivisorLatchHighByte):除法器高位寄存器,用于设置波特率的高8位。
IER(InterruptEnableRegister):中断使能寄存器,用于使能或禁止UART中断。
3.UART初始化
在使用UART进行通信之前,需要对UART模块进行初始化配置。初始化步骤包括设置波特率、数据格式、使能UART以及配置中断等。
3.1设置波特率
波特率决定了数据传输的速度。LPC1114的UART模块支持多种波特率设置,可以通过除法器寄存器DLL和DLM来实现。波特率的计算公式如下:
波特率
其中,PCLK是外设时钟频率。
3.1.1代码示例
以下是一个设置UART1波特率为9600的代码示例:
#includeLPC11xx.h
voidUART1_Init(void){
//使能UART1的时钟
LPC_SYSCON-SYSAHBCLKCTRL|=(112);//使能UART1时钟
//设置波特率
uint32_tPCLK=LPC_SYSCON-SYSPLLCLKUEN;//获取PCLK频率
uint32_tDLAB=0x80;//使能除法器寄存器访问
uint32_tDivisor=PCLK/(16*9600);//计算除法器值
LPC_UART1-LCR=(DLAB|0x03);//使能除法器寄存器访问,设置8位数据位
LPC_UART1-DLL=(Divisor0xFF);//设置除法器低位
LPC_UART1-DLM=(Divisor8);//设置除法器高位
LPC_UART1-LCR=0x03;//8位数据位,1位停止位,无奇偶校验
}
3.2设置数据格式
数据格式包括数据位、停止位和奇偶校验位的设置。LPC1114的UART模块支持8位、9位数据位,1位或2位停止位,以及奇偶校验位的配置。
3.2.1代码示例
以下是一个设置UART1为8位数据位、1位停止位、无奇偶校验的代码示例:
voidUART1_SetDataFormat(void){
LPC_UART1-LCR=0x03;//8位数据位,1位停止位,无奇偶校验
}
3.3使能UART
在配置完波特率和数据格式后,需要使能UART模块。使能UART可以通过设置LCR寄存器的DLAB位来实现。
3.3.1代码示例
以下是一个使能UART1的代码示例:
voidUART1_Enable(void){
LPC_UART1-LCR=~0x80;//清除DLAB位,使能UART
}
3.4配置中断