基本信息
文件名称:NXP 系列:LPC15xx 系列 (基于 ARM Cortex-M3)_(11).LPC15xx系列UART通信.docx
文件大小:24.69 KB
总页数:18 页
更新时间:2025-06-23
总字数:约1.01万字
文档摘要

PAGE1

PAGE1

LPC15xx系列UART通信

1.UART通信概述

1.1UART通信的基本概念

UART(UniversalAsynchronousReceiver/Transmitter)是一种通用异步收发传输器,用于实现设备之间的串行通信。UART通信是一种半双工通信方式,即在同一时间内只能进行单向通信。然而,通过交替使用发送和接收功能,可以实现全双工通信。UART通信的特点是没有时钟信号同步,而是通过起始位、停止位和波特率来实现数据的同步传输。

1.2UART通信的物理层

UART通信使用两条信号线:Tx(传输线)和Rx(接收线)。在单片机之间,Tx线通常连接到另一个设备的Rx线,Rx线连接到另一个设备的Tx线。此外,UART通信还可以使用第三条线(RTS/CTS)来实现硬件流控制,以防止数据丢失。

1.3UART通信的数据格式

UART通信的数据格式通常包括以下几个部分:

起始位:表示数据传输开始的标志位,通常为低电平。

数据位:实际传输的数据,可以是5位、6位、7位或8位。

奇偶校验位:用于检测数据传输错误的位,可以是无校验、奇校验或偶校验。

停止位:表示数据传输结束的标志位,通常为高电平,可以是1位、1.5位或2位。

2.LPC15xx系列UART模块介绍

2.1UART模块的功能

LPC15xx系列单片机集成了多个UART模块,每个模块都支持以下功能:

异步通信:支持标准的UART异步通信。

可配置的数据格式:可以配置数据位、奇偶校验位和停止位。

可配置的波特率:支持多种波特率设置,以适应不同的通信需求。

硬件流控制:支持RTS/CTS硬件流控制。

中断和DMA支持:支持中断和DMA传输,以提高通信效率。

多模式支持:支持IrDA、SmartCard等多种通信模式。

2.2UART模块的寄存器

LPC15xx系列UART模块的主要寄存器包括:

LSR(LineStatusRegister):线路状态寄存器,用于检测接收缓冲区状态、发送缓冲区状态、错误状态等。

THR(TransmitHoldingRegister):发送保持寄存器,用于存储要发送的数据。

RBR(ReceiveBufferRegister):接收缓冲寄存器,用于存储接收到的数据。

IER(InterruptEnableRegister):中断使能寄存器,用于使能或禁止各种中断。

FCR(FIFOControlRegister):FIFO控制寄存器,用于配置FIFO的使能和模式。

LCR(LineControlRegister):线路控制寄存器,用于配置数据位、奇偶校验位和停止位。

DLL(DivisorLatchLowByte)和DLH(DivisorLatchHighByte):波特率除数寄存器,用于设置波特率。

3.配置UART模块

3.1初始化UART模块

在使用UART模块之前,需要进行初始化配置。以下是一个初始化UART模块的步骤:

配置系统时钟:设置UART模块的时钟源。

配置波特率:根据所需的通信速率计算波特率除数。

配置数据格式:设置数据位、奇偶校验位和停止位。

使能UART模块:启用UART模块。

配置中断:如果需要中断处理,配置中断使能寄存器。

配置FIFO:如果需要使用FIFO,配置FIFO控制寄存器。

3.2示例代码:初始化UART

以下是一个初始化UART模块的示例代码,假设使用LPC1517芯片,配置为8位数据、无奇偶校验、1位停止位,波特率为115200。

#includeLPC15xx.h

#defineUART_BAUD_RATE115200

#defineUART_CLOCK_RATE//假设系统时钟为48MHz

voidUART_Init(uint32_tbaud_rate){

//使能UART时钟

LPC_CCU1-CLK_U0_UART_CFG=1|(124);//使能UART0时钟

while(!(LPC_CCU1-CLK_U0_UART_STAT(10))){

//等待时钟稳定

}

//配置波特率

uint32_tdivisor=(UART_CLOCK_RATE/16)/baud_rate;

LPC_USART0-LCR=0x83;//设置8位数据、无奇偶校验、1位停止位,并允许访问除数寄存器

LPC_USART0-DLL=(uint8_t)divisor;//设置低字节

LPC_USA