PAGE1
PAGE1
LPC1768UART接口
引言
UART(UniversalAsynchronousReceiver-Transmitter)是一种常用的串行通信接口,广泛应用于嵌入式系统中。LPC1768单片机集成了多个UART接口,可以方便地实现与其他设备的串行通信。本节将详细介绍LPC1768的UART接口的原理和使用方法,并通过具体的代码示例来展示如何配置和使用UART接口。
UART接口的基本原理
UART是一种异步串行通信方式,不使用时钟信号进行同步,而是通过起始位和停止位来标识数据帧的开始和结束。UART通信的基本参数包括波特率、数据位、停止位和校验位。LPC1768的UART接口支持多种配置,可以灵活地适应不同的通信需求。
数据帧格式
UART的数据帧通常包括以下几个部分:
起始位:通常为低电平,用于标识数据帧的开始。
数据位:5到8位的数据,具体位数由配置决定。
校验位:可选,用于校验数据的正确性,可以是奇校验、偶校验或无校验。
停止位:通常为高电平,用于标识数据帧的结束,可以是1位、1.5位或2位。
波特率
波特率是UART通信的重要参数,表示每秒传输的位数。LPC1768的UART接口可以通过配置寄存器来设置波特率。常用波特率包括9600、115200等。
配置寄存器
LPC1768的UART接口主要通过以下寄存器进行配置:
LineControlRegister(LCR):配置数据位、停止位、校验位等。
DivisorLatchRegisters(DLLandDLM):设置波特率。
FIFOControlRegister(FCR):配置FIFO缓冲区。
LineStatusRegister(LSR):读取UART状态。
ModemControlRegister(MCR):配置调制解调器控制信号。
ModemStatusRegister(MSR):读取调制解调器状态。
LPC1768UART接口的初始化
在使用UART接口之前,需要进行初始化配置。以下是一个详细的初始化过程:
1.使能UART时钟
在LPC1768中,首先需要使能UART的时钟。这可以通过配置PCLKSEL0或PCLKSEL1寄存器来实现。
//使能UART0时钟
LPC_SC-PCLKSEL0=~(0x36);
LPC_SC-PCLKSEL0|=(0x26);
//使能UART1时钟
LPC_SC-PCLKSEL1=~(0x30);
LPC_SC-PCLKSEL1|=(0x20);
2.配置引脚功能
LPC1768的引脚可以通过PINSEL寄存器进行配置,以实现UART功能。
//配置UART0的TX和RX引脚
LPC_PINCON-PINSEL0=~(0xF4);//清除旧配置
LPC_PINCON-PINSEL0|=(0x54);//配置P0.2为UART0_TXD
LPC_PINCON-PINSEL0=~(0xF8);//清除旧配置
LPC_PINCON-PINSEL0|=(0x58);//配置P0.3为UART0_RXD
//配置UART1的TX和RX引脚
LPC_PINCON-PINSEL4=~(0xF0);//清除旧配置
LPC_PINCON-PINSEL4|=(0x50);//配置P2.0为UART1_TXD
LPC_PINCON-PINSEL4=~(0xF4);//清除旧配置
LPC_PINCON-PINSEL4|=(0x54);//配置P2.1为UART1_RXD
3.配置波特率
通过设置DLL和DLM寄存器来配置波特率。波特率的计算公式为:
波特率
voidUART_ConfigBaudRate(uint32_tbaudRate){
uint32_tpclk=SystemCoreClock;//假设PCLK等于系统时钟
uint32_tdivisor=pclk/(16*baudRate);
LPC_UART0-DLL=(uint8_t)(divisor0xFF);
LPC_UART0-DLM=(uint8_t)((divisor8)0xFF);
}
4.配置数据位、停止位和校验位
通过LCR寄存器来配置数据位、停止位和校验位。
voidUART_ConfigLineControl(uint8_tdataBits,uint8_tstopBits,uint