【AG32开发板体验连载】AG32VF407 UART串口通信测试 - RISC-V MCU技术社区 - 电子技术论坛 - 广受欢迎的专业电子论坛
分享 收藏 返回

zhjylzh 关注 私信
[文章]

【AG32开发板体验连载】AG32VF407 UART串口通信测试

【AG32开发板体验连载】--智能蒸烤箱 AG32VF407 UART串口通信测试

由AG32VF407 MCU手册可知, AG32VF407 MCU自带的UART串口通信共设置了5组,分别为UART0~ UART4,AG32自带5个UART接口,如需要更多,可以用cpld实现十几个甚至更多的UART,可以满足不同需求的应用场景。本文重点介绍AG32VF407 UART串口总线通信的实现方法。

由于UART0开发板已经用于DEBUG调试,这里我们以UART1为例。

一、 UART1配置方法

我们将开发板的引脚80、81分别配置为UART1的TXD、RXD,打开example_board.ve配置文件,找到UART0_UARTRXD
PIN_69位置,仿照UART0的配置方法,增加两行:

UART1_UARTTXD PIN_80
UART1_UARTRXD PIN_81
1.jpg

二、 通信示例

1、初始化工作

要实现UART通信,需先对UART进行初始化,主要包括时钟、引脚工作模式、串口初始化参数设置等。时钟、引脚初始化如下:

SYS_EnableAPBClock(APB_MASK_UART1);

GPIO_AF_ENABLE(GPIO_AF_PIN(UART,1,UARTRXD));

GPIO_AF_ENABLE(GPIO_AF_PIN(UART,1,UARTTXD));

GPIO_AF_ENABLE(UART1_UARTRXD);

GPIO_AF_ENABLE(UART1_UARTTXD);

串口初始化需调用UART.c中的初始化函数:

UART_Init(UARTx(1), BAUD_RATE, UART_LCR_DATABITS_8, UART_LCR_STOPBITS_1, UART_LCR_PARITY_NONE, UART_LCR_FIFO_16);

各位的含义为:端口号,这里为UART1,波特率,数据位,停止位,奇偶校验位以及FIFO数据位。

2、收发子程序

UART.c中提供了收发子程序,分别为发送子程序UART_Send和接收子程序UART_Receive,具体使用方法可直接参考UART.c中的说明。

3、完整的收发程序

#include"example.h"

// Test UART1

voidTestUart1(void)

{

// Wait for existing
UART transmit to finish

while (UART_IsTxBusy(UART1));

constchartxbuf[]="Test UART!\n";

constcharrxbuf[256];

SYS_EnableAPBClock(APB_MASK_UART1);

GPIO_AF_ENABLE(GPIO_AF_PIN(UART,1,UARTRXD));

GPIO_AF_ENABLE(GPIO_AF_PIN(UART,1,UARTTXD));

GPIO_AF_ENABLE(UART1_UARTRXD);

GPIO_AF_ENABLE(UART1_UARTTXD);

UART_Init(UARTx(1), BAUD_RATE, UART_LCR_DATABITS_8, UART_LCR_STOPBITS_1, UART_LCR_PARITY_NONE, UART_LCR_FIFO_16);

UART_Send(UART1,txbuf,strlen(txbuf));

while(1)

{
intrx_len=UART_Receive(UART1,rxbuf,12,0);
UART_Send(UART1,rxbuf,rx_len);
}

}

三、运行结果
2.jpg

更多回帖

×
发帖