基本信息
文件名称:Microchip 系列:PIC18 系列_(9).USART通信.docx
文件大小:26.73 KB
总页数:25 页
更新时间:2025-06-23
总字数:约1.12万字
文档摘要

PAGE1

PAGE1

USART通信

USART(UniversalSynchronousAsynchronousReceiver-Transmitter)是PIC18单片机中一个非常重要的外设,用于实现串行通信。它支持异步和同步两种通信模式,可以灵活地与其他设备进行数据交换。本节将详细介绍USART的工作原理、配置方法以及实际应用中的代码示例。

1.USART概述

USART是一种通用的串行通信接口,可以实现全双工通信,即同时进行数据的发送和接收。它支持多种通信标准,如UART、LIN、IrDA等。在PIC18单片机中,USART模块通常包括以下主要功能:

异步模式:支持标准的UART通信,可以设置波特率、数据位、停止位和校验位。

同步模式:支持同步通信,通常用于连接其他单片机或外部设备。

中断支持:可以配置中断,实现数据的自动发送和接收。

环回测试:用于测试通信链路,确保通信正常。

2.异步模式配置

2.1异步模式原理

在异步模式下,USART通过一个时钟源(通常是系统时钟)生成波特率时钟,用于同步数据的发送和接收。异步通信的关键参数包括:

波特率:通信速度,单位为bps(bitspersecond)。

数据位:每个字符的数据位数,通常为8位。

停止位:每个字符结束后的空闲位,通常为1位。

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

2.2配置步骤

设置波特率:通过配置BRG16、BRGH和SPBRG寄存器来设置波特率。

配置数据位、停止位和校验位:通过TX9、RX9、SPEN、SYNC、CSRC和PDSEL寄存器来配置。

使能USART:通过TXEN和RCEN寄存器使能发送和接收。

配置中断:通过TXIE和RXIE寄存器使能发送和接收中断。

2.3代码示例

以下是一个配置USART在异步模式下工作的示例代码。假设我们使用的是PIC18F4550单片机,系统时钟为20MHz,波特率为9600bps。

#includexc.h

#includestdio.h

#includestdlib.h

//定义系统时钟频率

#defineFOSC

#defineBRGVAL((FOSC/(16*9600))-1)

voidUSART_Init(unsignedlongbaudrate){

TRISC6=1;//设置RC6作为输入(RX)

TRISC7=0;//设置RC7作为输出(TX)

//配置波特率

SPBRG=BRGVAL;

BRG16=0;//使用8位波特率发生器

BRGH=1;//高速波特率

//配置数据位、停止位和校验位

TX9=0;//8位数据

RX9=0;//8位数据

SPEN=1;//使能串行通信

SYNC=0;//异步模式

CSRC=1;//内部时钟源

PDSEL=0;//1个停止位,无校验

//使能发送和接收

TXEN=1;

RCEN=1;

//使能接收中断

RXIE=1;

GIE=1;//全局中断使能

PEIE=1;//外设中断使能

}

voidUSART_Write(chardata){

while(!TRMT);//等待发送完成

TXREG=data;//发送数据

}

charUSART_Read(void){

while(!RCIF);//等待接收完成

returnRCREG;//读取数据

}

void__interrupt()USART_Interrupt(void){

if(RCIF){//接收中断

chardata=RCREG;

//处理接收到的数据

USART_Write(data);//回显接收到的数据

}

//清除中断标志

RCIF=0;

}

voidmain(void){

//初始化USART

USART_Init(9600);

while(1){

//主程序可以在这里执行其他任务

}

}

2.4代码解释