PAGE1
PAGE1
LPC1114UART通信
1.UART通信基础
1.1UART通信原理
UART(UniversalAsynchronousReceiver-Transmitter)是一种异步串行通信接口,广泛用于嵌入式系统中进行数据传输。UART通信的基本原理是通过发送和接收数据线在两个设备之间进行数据交换。这些设备可以是微控制器、传感器、计算机等。
UART通信的主要特点包括:
异步:通信双方不需要共享时钟信号,而是通过数据帧的起始位和停止位来同步数据传输。
全双工:可以在同一时间进行数据的发送和接收。
波特率:通信双方必须设置相同的波特率,以确保数据传输的正确性。
1.2数据帧格式
UART数据帧通常包含以下几个部分:
起始位:通常是一个低电平,表示数据帧的开始。
数据位:可以是5到9位,具体取决于配置。数据位传送的是实际的数据。
奇偶校验位:可选,用于检测数据传输错误。
停止位:通常是一个或两个高电平,表示数据帧的结束。
1.3波特率设置
波特率设置决定了数据传输的速率。常见的波特率包括9600、19200、38400、57600、115200等。波特率的计算公式如下:
波特率
在LPC1114中,波特率分频器值可以通过寄存器配置。
2.LPC1114UART硬件介绍
2.1UART模块概述
LPC1114集成了一个UART模块,支持全双工异步串行通信。该模块包括发送和接收FIFO(FirstInFirstOut)缓冲区,可以提高通信效率。
2.2UART寄存器
LPC1114的UART模块包含多个寄存器,用于配置和控制UART通信。主要寄存器包括:
LSR(LineStatusRegister):线路状态寄存器,用于检测发送和接收状态。
THR(TransmitHoldingRegister):发送保持寄存器,用于发送数据。
RBR(ReceiveBufferRegister):接收缓冲寄存器,用于接收数据。
IER(InterruptEnableRegister):中断使能寄存器,用于配置UART中断。
DLL(DivisorLatchLow)和DLH(DivisorLatchHigh):波特率分频器寄存器,用于设置波特率。
2.3UART引脚配置
LPC1114的UART模块通常连接到两个引脚:
TXD:发送数据引脚。
RXD:接收数据引脚。
这些引脚需要通过引脚复用寄存器进行配置。
3.初始化UART
3.1配置系统时钟
在初始化UART之前,需要配置系统时钟。LPC1114通常使用内部RC振荡器或外部晶振作为系统时钟源。
//配置系统时钟为12MHz
voidSystemClockConfig(void){
LPC_SYSCON-SYSAHBCLKCTRL|=(112);//使能UART时钟
LPC_SYSCON-UARTCLKDIV=1;//设置UART时钟分频器
}
3.2配置波特率
波特率的配置通过设置DLL和DLH寄存器来实现。假设系统时钟为12MHz,设置波特率为9600:
voidUartSetBaudRate(uint32_tbaudRate){
uint32_tdivisor=(SystemCoreClock/(16*baudRate));
LPC_UART-DLL=(uint8_t)divisor;
LPC_UART-DLH=(uint8_t)(divisor8);
}
3.3配置数据帧
数据帧的配置包括数据位数、停止位数和奇偶校验位。以下代码配置8位数据位、1位停止位和无奇偶校验:
voidUartConfigDataFrame(void){
LPC_UART-LCR=(10)|(11);//8位数据位,1位停止位,无奇偶校验
}
3.4使能UART
使能UART模块后,可以开始发送和接收数据:
voidUartEnable(void){
LPC_UART-FCR=0x07;//清除和使能FIFO
LPC_UART-LCR|=(17);//使能DLAB
UartSetBaudRate(9600);//设置波特率
LPC_UART-LCR=~(17);//禁用DLAB
LPC_UART-IER=0x01;//使能接收中断
}
4.UART数据发送
4.1发送单个字符
发送单个字符时,需要将字符写入THR寄存器。以下代码展示了如何发送一个字符: