一:瑞萨RA4L1的串口基本知识:
在 RA4L1 中,串口功能通常由 SCI(Serial Communications Interface) 模块提供。该模块支持多种模式,其中最基本和最常用的就是 UART(异步串行)模式。
关键特性:
全双工异步通信:可以同时进行发送和接收。
可编程的波特率:支持非常宽的波特率范围,通过时钟分频或特定波特率发生器寄存器设置。
可配置的数据格式:
数据位长度:7位 或 8位
停止位:1位 或 2位
校验位:无、偶校验、奇校验
丰富的错误检测标志:帧错误、奇偶校验错误、溢出错误。
中断驱动:支持发送空、接收数据就绪、错误等多种中断源,可高效利用CPU资源。
FIFO:部分型号可能支持FIFO,以减少中断频率。
多通道:RA4L1组通常提供多个独立的 SCI/UART 通道(例如,SCI0, SCI1, ...)
二:硬件查看:

可以看到开发板,可以通过串口1 P109和P110引脚,与PC端进行通讯, 进行数据的交互。
三:FSP库配置
3.1 使能串口的时钟

我使用的是uart9,应该是在这个地方配置时钟,或者是其他的地方,后来才发现这个地方是配置错了。
3.2 新建串口9的任务

3.3 配置串口9的基本属性:

Name: 例如 g_uart9
Channel: 选择硬件通道,例如 9
Baud Rate: 设置通信速率,例如 115200(默认参数)
Data Bits: 8 bits
Parity: None
Stop Bits: 1 bit
Interrupts:
通常使能 Receive Data Full 和 Transmit Data Empty 中断。
Callback: 设置中断回调函数名,例如 g_uart9_callback(FSP自动生成,使用的时候直接调用就可以)
Pin Configuration: 在 Pins 选项卡中,为选择的通道配置具体的 TXD 和 RXD 引脚
3.4 这里很重要的是需要配置堆栈的大小,否则会导致程序运行不正常:

四:代码编写如下所示:
4.1 串口9的初始化部分:
void g_uart9_init(void)
{
fsp_err_t err = FSP_SUCCESS;
err = R_SCI_UART_Open(&g_uart9_ctrl, &g_uart9_cfg);
if (FSP_SUCCESS != err)
{
while(1);
}
}
4.2 串口9的回调处理部分:
void g_uart9_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)
{
fsp_err_t err = FSP_SUCCESS;
err = R_SCI_UART_Write(&g_uart9_ctrl, (uint8_t *)&ch, 1);
if(FSP_SUCCESS != err) __BKPT();
while(g_data_transmit_flag == false);
g_data_transmit_flag = false;
}
4.4 发送一个字符串如下所示:
void SendTestData(uint8_t ID)
{
static uint8_t DWIN_Buffer[]={"xin cha cha RA4L1 test!\n"};;
volatile int i = 0 ;
for(i= 0 ;i < sizeof(DWIN_Buffer) ; i++)
{
Dwin_Send_Example(DWIN_Buffer[i]);
}
}
接在200ms的任务中,调用上述函数就可以了:
void System_Tim_Driver(char Tim_Intev)
{
switch(Tim_Intev)
{
case 1:
LED1_TOGGLE;
break;
case 2: SendTestData(0x03);
break;
case 10: LED3_TOGGLE;
break ;
default:break;
}
}
五:实物测试如图所示:

使用串口工具监测一下数据:

调试后记:
硬件正确连接:使用type-c线直接连接串口就可以。
FSP 图形化配置:选择通道、设置参数、配置引脚和中断。
代码实现:打开设备、编写中断回调函数、使用读写 API。
调试:确保波特率匹配,善用工具(逻辑分析仪)进行波形分析。

全部评论