PAGE1
PAGE1
LPC1768通信协议
在上一节中,我们介绍了LPC1768的基本架构和外设功能。在这一节中,我们将深入探讨LPC1768的通信协议。LPC1768支持多种通信接口,包括UART、SPI、I2C、CAN和USB等。这些通信接口在复杂娱乐设备中发挥着至关重要的作用,例如实现设备之间的数据传输、控制信号的发送和接收等。
UART通信协议
UART(UniversalAsynchronousReceiver/Transmitter)是一种通用的异步串行通信协议,广泛应用于单片机与外部设备之间的数据传输。LPC1768集成了多个UART接口,可以方便地与各种外部设备进行通信。
UART基本原理
UART通信采用异步方式,即发送方和接收方的时钟不是同步的。数据传输通常采用以下步骤:
初始化:配置波特率、数据位、停止位和校验位等。
发送数据:将数据从发送缓冲区发送到接收设备。
接收数据:从接收缓冲区读取数据。
错误处理:检测并处理通信中的错误。
LPC1768UART配置
LPC1768的UART配置包括设置波特率、数据位、停止位和校验位等。以下是配置UART的基本步骤:
使能UART时钟:通过设置PCLKSELx寄存器来使能UART的时钟。
配置引脚:通过设置PINSELx寄存器来配置UART的引脚。
设置波特率:通过计算波特率生成器的分频值来设置波特率。
配置数据位、停止位和校验位:通过设置LCR(LineControlRegister)寄存器来配置这些参数。
使能UART:通过设置IER(InterruptEnableRegister)寄存器来使能UART中断。
示例代码:配置UART
以下是一个配置UART的示例代码,假设我们要配置UART0,波特率为115200,8位数据位,1位停止位,无校验位。
#includeLPC17xx.h
voidUART_Init(void){
//使能UART0时钟
LPC_SC-PCLKSEL0|=(118);//PCLKSEL0[19:18]=01,选择PCLK为系统时钟
LPC_SC-PCLKSEL0=~(119);
//配置UART0引脚
LPC_PINCON-PINSEL0=~(0xF4);//清除P0.2的当前配置
LPC_PINCON-PINSEL0|=(0x54);//P0.2配置为UART0_TXD
LPC_PINCON-PINSEL0=~(0xF8);//清除P0.3的当前配置
LPC_PINCON-PINSEL0|=(0x58);//P0.3配置为UART0_RXD
//设置波特率
LPC_UART0-LCR=0x83;//8位数据位,1位停止位,无校验位,DLAB=1
LPC_UART0-DLL=216;//波特率生成器的分频值(115200)
LPC_UART0-DLM=0;//波特率生成器的分频值(115200)
LPC_UART0-LCR=0x03;//8位数据位,1位停止位,无校验位,DLC=0
//使能UART0
LPC_UART0-IER|=(10);//使能接收中断
LPC_UART0-FCR=0x07;//使能FIFO,清空FIFO
}
voidUART_SendChar(charc){
while(!(LPC_UART0-LSR(15)));//等待发送缓冲区为空
LPC_UART0-THR=c;//发送字符
}
voidUART_SendString(char*str){
while(*str){
UART_SendChar(*str++);
}
}
charUART_ReceiveChar(void){
while(!(LPC_UART0-LSR(10)));//等待接收到数据
returnLPC_UART0-RBR;//读取接收到的字符
}
intmain(void){
UART_Init();//初始化UART0
//发送字符串
UART_SendString(Hello,World!\r\n);