PAGE1
PAGE1
LPC11xx系列串行通信接口
1.串行通信接口概述
LPC11xx系列微控制器提供了多种串行通信接口,包括UART、SPI、I2C和USART。这些接口使得LPC11xx能够与外部设备进行高效的数据交换。本节将详细介绍这些串行通信接口的工作原理和使用方法。
1.1UART接口
UART(UniversalAsynchronousReceiver/Transmitter)是一种最常见的串行通信接口,用于在微控制器和外部设备之间进行异步数据传输。LPC11xx系列支持多个UART接口,每个接口都可以独立配置。
1.1.1UART工作原理
UART通过发送和接收数据线(TXD和RXD)进行通信。数据传输是异步的,意味着没有单独的时钟线。发送和接收数据时,UART使用起始位、数据位、奇偶校验位和停止位来确保数据的正确传输。
起始位:表示数据传输的开始,通常是一个低电平。
数据位:表示实际传输的数据,可以是5到8位。
奇偶校验位:用于检测传输过程中是否有错误,可以选择启用或禁用。
停止位:表示数据传输的结束,通常是一个高电平。
1.1.2UART配置
LPC11xx系列的UART接口配置主要通过UART控制寄存器(UARTx?LCR)和UART线路控制寄存器(UARTx?LCR)来完成。以下是一个配置UART接口的示例代码:
#includeLPC11xx.h
//配置UART
voidUART_Init(void){
//使能UART0时钟
LPC_SYSCON-SYSAHBCLKCTRL|=(112);//LPC_SYSCON_SYSAHBCLKCTRL_UART0
//配置UART0的波特率
LPC_UART0-LCR=0x83;//8位数据,无奇偶校验,1位停止位,使能DLAB
LPC_UART0-DLL=0x61;//设置波特率除数低字节
LPC_UART0-DLM=0x00;//设置波特率除数高字节
LPC_UART0-LCR=0x03;//8位数据,无奇偶校验,1位停止位,禁用DLAB
//配置FIFO
LPC_UART0-FCR=0x07;//使能FIFO,清空接收和发送FIFO,设置触发水平
//使能UART0的中断
LPC_UART0-IER=(11);//使能接收中断
LPC_UART0-IER|=(10);//使能发送中断
//使能UART0引脚
LPC_IOCON-PIO0_0=0x00;//TXD0
LPC_IOCON-PIO0_1=0x00;//RXD0
}
//发送一个字符
voidUART_SendChar(charch){
while(!(LPC_UART0-LSR(15)));//等待发送缓冲区为空
LPC_UART0-THR=ch;//发送字符
}
//发送一个字符串
voidUART_SendString(char*str){
while(*str){
UART_SendChar(*str++);
}
}
//接收一个字符
charUART_ReceiveChar(void){
while(!(LPC_UART0-LSR(10)));//等待接收缓冲区有数据
returnLPC_UART0-RBR;//返回接收到的字符
}
//主函数
intmain(void){
UART_Init();//初始化UART
UART_SendString(Hello,World!\r\n);//发送字符串
while(1){
charch=UART_ReceiveChar();//接收字符
UART_SendChar(ch);//回显字符
}
}
1.1.3UART中断处理
UART中断可以用于处理数据发送和接收事件。以下是一个简单的UART中断处理示例:
#includeLPC11xx.h
#includenvic.h
//UART中断处理函数
voidUART0_IRQHandler(void){
if