基本信息
文件名称:Microchip 系列:PIC18F 系列_(10).PIC18F系列的USART模块.docx
文件大小:34.24 KB
总页数:50 页
更新时间:2025-06-19
总字数:约2.67万字
文档摘要

PAGE1

PAGE1

PIC18F系列的USART模块

引言

USART(UniversalSynchronousAsynchronousReceiverTransmitter)是一种通用的串行通信接口,可以在同步和异步模式下工作。PIC18F系列单片机的USART模块可以实现与其他设备的串行通信,支持多种波特率和数据格式。本节将详细介绍PIC18F系列单片机的USART模块的工作原理、配置方法和应用示例。

USART模块的工作原理

异步模式

在异步模式下,USART模块通过起始位、数据位、校验位和停止位来传输数据。每个数据帧通常包括1个起始位(低电平)、5到9个数据位、0或1个校验位(奇校验或偶校验)和1到2个停止位(高电平)。波特率是由系统时钟和分频器设置的,确保数据传输的同步。

同步模式

在同步模式下,USART模块通过一个同步时钟信号来传输数据。这种模式下,数据传输的同步由时钟信号控制,通常用于连接其他同步设备,如I2C或SPI。同步模式可以提高数据传输的可靠性,但需要额外的时钟线。

USART寄存器

PIC18F系列单片机的USART模块通过以下几个主要寄存器进行配置和控制:

RCSTA(ReceiveStatusandControlRegister):接收状态和控制寄存器

TXSTA(TransmitStatusandControlRegister):发送状态和控制寄存器

BAUDCON(BaudRateControlRegister):波特率控制寄存器

TXREG(TransmitBuffer):发送缓冲寄存器

RCREG(ReceiveBuffer):接收缓冲寄存器

SPBRG(BaudRateGenerator):波特率生成器寄存器

配置步骤

设置波特率:通过配置SPBRG寄存器和BAUDCON寄存器来设定波特率。

配置数据格式:通过TXSTA和RCSTA寄存器设置数据位数、校验位和停止位。

启用USART模块:通过TXSTA和RCSTA寄存器启用发送和接收功能。

中断配置:配置中断寄存器以处理发送和接收事件。

异步模式配置示例

设置波特率

波特率的设置是通过SPBRG寄存器来完成的。计算公式如下:

SPBRG

其中,Fosc是系统时钟频率,BaudRate是所需的波特率。

//设置波特率为9600,假设Fosc为4MHz

#defineFOSC4000000

#defineBAUD_RATE9600

voidconfigureUSART(){

SPBRG=(FOSC/(16*BAUD_RATE))-1;//计算SPBRG值

TXSTA=0//配置为异步模式,8位数据位,无校验位,1位停止位

RCSTA=0//启用接收器,选择异步模式

TRISB=0//设置RB0为输出(TX)和RB1为输入(RX)

TXSTAbits.TX9=0;//8位数据

TXSTAbits.TXEN=1;//启用发送

RCSTAbits.SPEN=1;//启用串行端口

RCSTAbits.CREN=1;//启用接收

}

发送数据

在异步模式下,数据通过TXREG寄存器发送。当TXREG寄存器为空时,可以写入新的数据。

voidsendUSARTChar(chardata){

while(!TXSTAbits.TRMT);//等待发送缓冲器为空

TXREG=data;//发送数据

}

接收数据

在异步模式下,数据通过RCREG寄存器接收。当RCREG寄存器中有数据时,可以读取。

charreceiveUSARTChar(){

while(!PIR1bits.RCIF);//等待接收缓冲器有数据

returnRCREG;//读取数据

}

中断配置

为了提高程序的效率,可以配置USART的中断。当数据发送完成或接收缓冲器中有数据时,中断会被触发。

voidconfigureUSARTInterrupt(){

PIE1bits.RCIE=1;//启用接收中断

PIE1bits.TXIE=1;//启用发送中断

PIR1bits.RCIF=0;//清除接收中断标志

PIR1bits.TXIF=0;//清除发送中断标志

INTCONbits.PEIE=1;//启用外设中断