基本信息
文件名称:Microchip 系列:PIC24F 系列_(8).串行通信协议(UARTI2CSPI).docx
文件大小:25.97 KB
总页数:25 页
更新时间:2025-06-19
总字数:约1.22万字
文档摘要

PAGE1

PAGE1

串行通信协议(UART、I2C、SPI)

1.通用异步收发传输器(UART)

1.1.UART基本原理

通用异步收发传输器(UniversalAsynchronousReceiver-Transmitter,UART)是一种常用的串行通信协议,用于在两个设备之间进行异步数据传输。UART通过两个独立的引脚进行数据的发送和接收,分别称为TX(传输)和RX(接收)。UART通信的关键参数包括波特率、数据位、停止位和校验位。

波特率:每秒传输的位数,决定了数据传输的速度。

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

停止位:每个字符传输结束后的空闲时间,通常为1或2位。

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

1.2.PIC24F中的UART配置

PIC24F系列单片机提供了多个UART模块,可以通过软件进行配置以适应不同的通信需求。以下是一个典型的UART配置过程:

使能UART模块

配置波特率

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

使能发送和接收中断

初始化TX和RX引脚

1.3.UART配置示例

假设我们需要在PIC24F单片机上配置一个UART模块,波特率为9600,数据位为8位,无校验位,1个停止位。以下是一个示例代码:

#includexc.h

#includeplib.h

//定义UART配置参数

#defineUART_BAUD_RATE9600

#defineUART_DATA_BITS8

#defineUART_PARITYUART_PARITY_NONE

#defineUART_STOP_BITS1

//初始化UART模块

voidUART_Init(void){

//使能UART模块

U1MODEbits.UARTEN=1;

//配置波特率

U1BRG=(FOSC/(16*UART_BAUD_RATE))-1;

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

U1MODEbits.PDSEL=0b00;//8位数据,无校验,1个停止位

U1MODEbits.STSEL=0b0;//1个停止位

//使能发送和接收中断

U1STAbits.UTXISEL=0b00;//发送中断使能

U1STAbits.URXISEL=0b00;//接收中断使能

//初始化TX和RX引脚

TRISBbits.TRISB7=0;//设置RB7为输出(TX)

TRISBbits.TRISB8=1;//设置RB8为输入(RX)

//使能UART发送和接收

U1STAbits.UTXEN=1;

U1STAbits.URXEN=1;

}

//发送一个字符

voidUART_SendChar(chardata){

while(!U1STAbits.UTXBF);//等待发送缓冲区为空

U1TXREG=data;//发送字符

}

//发送一个字符串

voidUART_SendString(char*data){

while(*data){

UART_SendChar(*data++);

}

}

//接收一个字符

charUART_RecvChar(void){

while(!U1STAbits.URXDA);//等待接收数据

returnU1RXREG;//返回接收到的字符

}

//主函数

intmain(void){

//初始化系统时钟

SYSTEMConfigPerformance(FOSC);

//初始化UART模块

UART_Init();

//发送测试字符串

UART_SendString(Hello,PIC24F!\r\n);

//主循环

while(1){

charreceivedChar=UART_RecvChar();

UART_SendChar(receivedChar);//回显接收到的字符

}