这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 企业专区 » Renesas » 【瑞萨RA0E2开发板】03:学习一下瑞萨RA0系列的串口知识

共3条 1/1 1 跳转至

【瑞萨RA0E2开发板】03:学习一下瑞萨RA0系列的串口知识

高工
2025-09-16 07:48:31     打赏

一:RA0E2的串口知识:

在 RA0E2 中,串口功能通常由 SCI(Serial Communications Interface) 模块提供。该模块支持多种模式,其中最基本和最常用的就是 UART(异步串行)模式。

关键特性:

全双工异步通信:可以同时进行发送和接收。

可编程的波特率:支持非常宽的波特率范围,通过时钟分频或特定波特率发生器寄存器设置。

可配置的数据格式:

数据位长度:7位 或 8位

停止位:1位 或 2位

校验位:无、偶校验、奇校验

丰富的错误检测标志:帧错误、奇偶校验错误、溢出错误。

中断驱动:支持发送空、接收数据就绪、错误等多种中断源,可高效利用CPU资源。

FIFO:部分型号可能支持FIFO,以减少中断频率。

多通道:RA0E2 组通常提供多个独立的 SCI/UART 通道(例如,SCI0, SCI1, ...)

二:硬件连接如下所示:

03-1.png

这里使用P100与P101 与板载调试器相连接;

三:FSP库配置过程:

3.1:时钟树的配置:

03-2.png

这里需要使能串口的波特率;

3.2 配置串口的参数,编写回调函数

03-3.png

Name: 例如 g_uart0

Channel: 选择硬件通道,例如 0

Baud Rate: 设置通信速率,例如 115200(默认参数)

Data Bits: 8 bits

Parity: None

Stop Bits: 1 bit

Interrupts:

通常使能 Receive Data Full 和 Transmit Data Empty 中断。

Callback: 设置中断回调函数名,例如 g_uart0_callback(FSP自动生成)

Pin Configuration: 在 Pins 选项卡中,为选择的通道配置具体的 TXD 和 RXD 引脚

3.3 串口引脚的配置:

03-4.png配置好后,直接生成底层的驱动代码就可以了。

四:软件代码编写:

4.1 串口的初始化

void g_uart0_init(void)
{
fsp_err_t err = FSP_SUCCESS;
err = R_UARTA_Open(&g_uart0_ctrl, &g_uart0_cfg);
if (FSP_SUCCESS != err)
{
while(1);
}
}

4.2 编写串口0的回调函数:

void g_uart0_callback(uart_callback_args_t *p_args)
{
switch (p_args->event)
{
case UART_EVENT_TX_COMPLETE:
g_data_transmit_flag = true;
break;

case UART_EVENT_RX_COMPLETE:
g_data_received_flag = true;
break;

default:
break;
}
}

4.3 写一个串口的发送函数:

void  Dwin_Send_Example(uint8_t ch)
{
R_UARTA_Write(&g_uart0_ctrl, (uint8_t *)&ch, 1);
while(g_data_transmit_flag == false);
g_data_transmit_flag = false;
}
void SendTestData(uint8_t ID)
{
static uint8_t DWIN_Buffer[64];
volatile int i = 0 ;

DWIN_Buffer[0] = 0x5A ;
DWIN_Buffer[1] = 0xA5 ;
DWIN_Buffer[2] = 0x07 ;
DWIN_Buffer[3] = 0x82 ;
DWIN_Buffer[4] = 0x00 ;
DWIN_Buffer[5] = 0x84 ;
DWIN_Buffer[6] = 0x5A ;
DWIN_Buffer[7] = 0x01 ;
DWIN_Buffer[8] = 0x00 ;
DWIN_Buffer[9] = ID ;
for(i= 0 ;i < 10 ; i++)
{
Dwin_Send_Example(DWIN_Buffer[i]);
}
}

4.4 发送数据函数在定时器中进行回调处理。

void g_timer0_callback(timer_callback_args_t *p_args)
{
if (TIMER_EVENT_CYCLE_END == p_args->event)
{
/*        g_timer_flag [APP_TML_16_BIT] = true;
       g_number_cycles ++;*/
count0Point++ ;
if(count0Point>=1000)
{
count0Point = 0 ;
SendTestData(0x01);
}
}
}

五:实物验证图片:

03-5.jpg

六:调试后记:

硬件正确连接:TXD-RXD,RXD-TXD,GND-GND。

FSP 图形化配置:选择通道、设置参数、配置引脚和中断。

代码实现:打开设备、编写中断回调函数、使用读写 API。

调试:确保波特率匹配,善用工具(逻辑分析仪)进行波形分析。





关键词: 瑞萨     RA0E2     串口    

菜鸟
2025-09-16 08:06:37     打赏
2楼

学习了


院士
2025-09-17 15:23:29     打赏
3楼

我越来越觉得这个115200,这个数值不太友好了。

其并不能被时钟准确分频


共3条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]