2025 / 07 / 01
【瑞萨RA2L1入门学习】开发板开箱及串口输出实现

作者:VR小杰

1 开箱及项目介绍

前些天在电子发烧友论坛上申请试用了RA2L1开发板,下面是其外观,两边各引出了两排引脚,支持串口烧录和JLink烧录。
左侧有一个用户按键,右侧的是RST按键,上方是两块触摸按键。

这次拿这块开发板来做一个低功耗的桌面摆件项目,功能是实时时钟+温湿度计,使用0.96寸 OLED屏幕显示数据,触摸按键唤醒,未唤醒时进入待机模式。预计用到的开发板功能有:I2C、触摸按键、UART、待机模式。

2 创建模板工程

开发瑞萨MCU是要用到E2 Studio的(简称e2s),之前在试用RA4E2时已做过详细的配置记录:https://bbs.elecfans.com/jishu_2468424_1_1.html ,在这里就不再赘述,直接开始创建模板工程。

2.1 新建项目

点击新建--瑞萨C/C++项目--Renesas RA
根据下方图片来进行之后的操作,其中项目名为template,主控芯片搜索R7FA2L1AB2DFL,不用FreeRTOS。





2.2 设置输出hex文件

点击菜单栏的项目--C/C++ Project Settings,找到下图所示的地方,选择 Intel HEX。


2.3.2 新建并设置模块属性

点击Stacks,New Stack--Connectivity--UART(r_sci_uart)


单击g_uart0_UART,在属性对话框中更改nameg_uart9Channel改为9,其他属性配置保持默认。

然后,在Interrupts--Callback中,修改为debug_uart9_callback,这是串口中断回调函数,稍后将在代码中写具体逻辑。每当串口发送或者接收完成一个字符时,都会默认触发串口的中断,而在串口中断中会调用函数 debug_uart9_callback,在函数里我们需要根据不同的中断情况进行相应的处理。


2.3.3 重定向printf输出到串口

虽然我们可以直接使用 R_SCI_UART_Write 函数来将字符串输出到串口,但是这个函数在很多情况下没有 printf 函数那样方便。所以我们需要添加一段代码来将 printf 输出重定向到串口UART9。

在菜单栏中单击项目--C/C++ Project Settings,按下图所示进行勾选,最后应用并关闭。



最后,修改一下堆大小,点击BSP--Heap Size--修改为0x1000

保存配置文件,并点击Generate Project Content让其自动为我们生成代码。

2.3.4 代码编写

在工程的src文件夹下,新建debug_bsp_uart.h头文件和debug_bsp_uart.c源文件。

2.3.4.1 修改debug_bsp_uart.c

debug_bsp_uart.c中键入如下代码,包含了一个发送完成标志uart_send_complete_flag、调试串口 UART9 初始化Debug_UART9_Init和先前配置的串口回调函数debug_uart9_callback

#include "debug_bsp_uart.h"
/* 发送完成标志 */
volatile int uart_send_complete_flag = 0;

/* 调试串口 UART9 初始化 */
void Debug_UART9_Init(void)
{
   fsp_err_t err = FSP_SUCCESS;

   err = R_SCI_UART_Open (&g_uart9_ctrl, &g_uart9_cfg);
   assert(FSP_SUCCESS == err);
}

/* 串口中断回调 */
void debug_uart9_callback (uart_callback_args_t * p_args)
{
   switch (p_args->event)
   {
      case UART_EVENT_RX_CHAR:
      {
            /* 把串口接收到的数据发送回去 */
            R_SCI_UART_Write(&g_uart9_ctrl, (uint8_t *)&(p_args->data), 1);
            break;
      }
      case UART_EVENT_TX_COMPLETE:
      {
            uart_send_complete_flag = 1;
            break;
      }
      default:
            break;
   }
}


还是在debug_bsp_uart.c文件中,加入重定向 printf 输出的函数。

/* 重定向 printf 输出 */
#if defined __GNUC__ && !defined __clang__
int _write(int fd, char *pBuffer, int size); //防止编译警告
int _write(int fd, char *pBuffer, int size)
{
   (void)fd;
   R_SCI_UART_Write(&g_uart9_ctrl, (uint8_t *)pBuffer, (uint32_t)size);
   while(uart_send_complete_flag == 0);
   uart_send_complete_flag = 0;

   return size;
}
#else
int fputc(int ch, FILE *f)
{
   (void)f;
   R_SCI_UART_Write(&g_uart9_ctrl, (uint8_t *)&ch, 1);
   while(uart_send_complete_flag == 0);
   uart_send_complete_flag = 0;

   return ch;
}
#endif


2.3.4.2 修改debug_bsp_uart.h

debug_bsp_uart.h中加入以下代码,用于声明函数:

#include "hal_data.h"
#include "stdio.h"
void Debug_UART9_Init(void);


2.3.4.3 修改hal_entry.c

在文件开头,加入以下代码:

#include "debug_bsp_uart.h"


hal_entry函数中,加入以下代码:

Debug_UART9_Init(); // SCI9 UART 调试串口初始化


最后编译该工程即可。

2.4 下载测试

2.4.1 Renesas Flash Programmer 软件

需要下载 Renesas Flash Programmer 软件,可以到 RA 生态社区网站下载。


RA 生态社区网站下载地址:
https://ramcu.cn/resource/list/?aType=5


或者去瑞萨官网下载:
https://www.renesas.cn/zh/software-tool/renesas-flash-programmer-programming-gui


这里我使用串口下载的方式,接线如下表所示。


2.4.2 软件配置

将USB转TTL的模块接入电脑,双击打开烧录软件,先新建工程。


然后做一些配置。

找到template项目的.hex文件。

将开发板上的模式选择跳线改为短接1、3号接口的,并按一下RST按键,接着点击软件中的Start,即可完成烧录。

2.4.3 效果

打开串口助手软件,将波特率设置为115200,发送任意消息,可看到板子同时发送回来,即为配置成功。



隐私条款

一、接受条款 使用者(也称"您")在访问或使用本网站及其服务时,即已经表示同意并不加修改地接受本《用户协议》、本网站的《隐私声明》、《法律声明》以及其关或相链接的网页和网站的条件和条款的规定。我们强烈建议:在您阅读和接受本《用户协议》时,也应阅读并接受本《用户协议》中所提到《隐私声明》、《法律声明》及其相关或相链接网页或网站所包含的资料,因为《隐私声明》、《法律声明》及其它相关网页或网站可能包含对您适用的进一步规定。(请注意:点击划有底线的词句即可链接到上述《隐私声明》、《法律声明》及其它相关或相链接的网页和网站。

 

二、使用者的资格要求 在本网站中"使用者"指的是浏览、阅读、使用本网站信息或服务的任何个人或组织。本网站的服务仅适用于根据相关法律的规定具有签订有约束力的合同的个人或组织并仅由其使用。本网站的服务不向18周岁以下的个人使用者提供,也不向临时被本网站中止或取消使用者资格的使用者提供。如果使用者不符合本条规定,请停止使用本网站或本网站的服务。

样品
申请

应用
资源

微信