基本信息
文件名称:Microchip 系列:PIC16F 系列_(9).通信接口(UART,I2C,SPI).docx
文件大小:27.16 KB
总页数:25 页
更新时间:2025-06-19
总字数:约1.34万字
文档摘要

PAGE1

PAGE1

通信接口(UART,I2C,SPI)

1.UART通信接口

1.1UART基本原理

UART(UniversalAsynchronousReceiver-Transmitter)是一种通用异步收发传输器,它允许单片机在不同设备之间进行串行通信。UART通信接口不需要外部时钟信号,因此通信双方只需要共用一个波特率即可。UART通信通常使用两个信号线:RX(接收)和TX(发送)。数据以起始位、数据位、校验位(可选)和停止位的形式进行传输。

1.2PIC16F系列中的UART模块

PIC16F系列单片机中的UART模块通常称为EUSART(EnhancedUniversalSynchronousAsynchronousReceiverTransmitter)。EUSART模块支持同步和异步通信模式,但在大多数应用中,异步模式更为常用。EUSART模块的主要寄存器包括:

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

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

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

TXREG(TransmitRegister):发送数据寄存器

RCREG(ReceiveRegister):接收数据寄存器

SPBRG(SerialPortBaudRateGenerator):波特率发生器寄存器

1.3UART初始化

为了使用EUSART模块,首先需要进行初始化设置。以下是一个典型的初始化过程:

配置波特率:设置SPBRG寄存器的值以匹配所需的波特率。

配置RCSTA和TXSTA寄存器:设置接收和发送模式,启用接收和发送功能。

启用EUSART模块:设置相关寄存器以启用EUSART模块。

1.3.1代码示例

以下是一个使用PIC16F877A单片机初始化UART的示例代码:

#includexc.h

#includepic16f877a.h

#define_XTAL_FREQ//晶振频率20MHz

voidUART_Init(unsignedintbaud){

//配置波特率

SPBRG=(unsignedchar)((_XTAL_FREQ/(16UL*baud))-1);

//配置RCSTA和TXSTA寄存器

TXSTA=0//模式选择:异步模式,低波特率,8位传输

RCSTA=0//接收使能,9位模式禁用

//启用UART模块

TRISC|=0//设置TX引脚为输入

TRISC=0//设置RX引脚为输出

TXEN=1;//启用发送

RCEN=1;//启用接收

CREN=1;//启用接收中断

}

voidUART_WriteChar(chardata){

while(!TRMT);//等待发送缓冲区为空

TXREG=data;//发送数据

}

voidUART_WriteString(char*data){

while(*data){

UART_WriteChar(*data);

data++;

}

}

charUART_ReadChar(){

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

returnRCREG;//读取数据

}

intmain(void){

//初始化系统

TRISA=0//设置PORTA为输出

TRISB=0//设置PORTB为输出

//初始化UART

UART_Init(9600);//设置波特率为9600

while(1){

//发送字符串

UART_WriteString(Hel