【开发板介绍】
RA-Eco-RA6M4-100PIN-V1.0开发板,主控芯片为R7FA6M4AF3CFP。 瑞萨电子 RA6M4 微控制器 (MCU) 产品群使用了支持 TrustZone® 的高性能 Arm® Cortex®-M33 内核。与片内的 Secure Crypto Engine(SCE) 配合使用,可提供安全芯片的功能。集成带有专用 DMA 的以太网 MAC,可确保高数据吞吐率。RA6M4 采用高效的 40nm 工艺,由基于 FreeRTOS 的灵活配置软件包 (FSP) 这一开放且灵活的生态系统概念提供支持,并能够扩展以使用其他实时操作系统(RTOS)和中间件。RA6M4 适用于物联网应用的需求,如以太网、面向未来应用的安全功能、大容量嵌入式 RAM 和较低功耗(从闪存运行 CoreMark® 算法,低至 99µA/MHz)。


【获取Keil安装包、RA芯片包和RASC】
Keil(MDK-ARM)
的下载页面为: https://www.keil.com/download/product/。

使用 Keil 软件开发瑞萨 RA MCU 还需要 RA 芯片包以及 RASC 软件,它们和 e2s 一样都可以在同一个下载页面获得。
Renesas Advanced Smart Configurator (RASC)
的下载页面为:https://github.com/renesas/fsp/releases。
在该页面下可以找到 RASC 的安装程序,还有 RA 芯片包。
例如:
- “setup_fsp_v4_0_0_rasc_v2022-07.exe”,其文件名表示安装程序包含的 FSP 库版本为 v4.0.0、RASC 版本为 v2022-07。
- “MDK_Device_Packs_v4.0.0.zip” 该压缩包解压之后得到文件“Renesas.RA_DFP.4.0.0.pack”,
即对应 FSP 4.0.0 版本的 RA 芯片包(适用于 Keil 软件)。
- 注意:建议下载安装 Keil v5.30 以上的版本,因为版本过低可能导致后续的步骤提示“无法安装RA芯片包”的错误。
若安装RA芯片包时遇到此错误提示安装失败,请尝试重新安装较新版本的 Keil 软件之后,再重新安装RA芯片包。
- 上述软件也可直接从野火提供的开发板配套资料中获取。
【安装Keil软件、RA芯片包和RASC】
Keil 软件和 RA 芯片包的安装只需双击它们的安装包然后根据提示进行安装即可,非常简单,在此不再赘述。
需要注意的是,需要先安装好 Keil 软件,然后再安装 RA 芯片包,因为这里的“芯片包”是作为 Keil 软件的一种组件而存在的。

在安装路径下可以找到 RASC 的启动程序,如下图所示。
建议单击右键发送 RASC 启动程序的快捷方式到桌面上,
方便下一次直接在电脑桌面上双击图标快速打开 RASC。

当 RASC 软件安装完成之后,还需要将 RASC 软件集成到 Keil 软件上面,方便使用。
【 将RASC集成到Keil】
本小节参考文档《RA Smart Configurator Quick Start Guide》,
该文档为安装RASC软件附带,可以从软件安装路径中找到:
“C:/Renesas/RA/sc_v2022-07_fsp_v4.0.0/eclipse/rasc_quick_start.html”
将 RASC 集成到 Keil 的具体步骤如下。
首先打开 Keil 软件,在菜单栏依次点击:“Tools”→“Customize Tools Menu”。

将弹出如下图所示的定制工具菜单的界面。

在“Menu Content”窗口中新建一个菜单项 “RA Smart Configurator” ,
然后在“Command”一栏中输入 RASC 程序的路径,在“Initial Folder”一栏中输入 “$P” ,
在“Arguments”一栏中输入:
--device $D --compiler ARMv6 configuration.xml
如下图所示。

同理,在“Menu Content”窗口中再次新建一个菜单项 “Device Partition Manager” ,
然后在“Command”一栏中输入 RASC 程序的路径,在“Initial Folder”一栏中输入 “$P” ,
在“Arguments”一栏中输入:
-application com.renesas.cdt.ddsc.dpm.ui.dpmapplication configuration.xml "$L%L"
最后再点击“OK”即可。

再次点开 Keil 软件菜单栏的“Tools”,我们可以看到
“RA Smart Configurator” 和 “Device Partition Manager” 这两个菜单项已经被加入到 Tools 栏上面了。

【如何更新开发环境的FSP库版本】
更新 e2s 和 Keil/RASC 这两种开发环境的 FSP 库版本很简单,读者可以根据以下方式来进行更新。
首先打开 FSP 的发布页面(https://github.com/renesas/fsp/releases),
在这个网页下面定位到所需的 FSP 发布版本,以 FSP 6.0.0 版本为例,
在 Assets 栏下面发布了与 FSP 6.0.0 相关的工具软件,如下图所示。

对于 Keil/RASC 开发环境:也是在 FSP 发布页面,需要下载适用于 Keil MDK 的芯片包,
比如“MDK_Device_Packs_v4.0.0.zip”,它包含 FSP v4.0.0 版本的芯片包;
同时还需要下载对应 FSP 版本 RASC 安装包,比如“setup_fsp_v4_0_0_rasc_v2022-07.exe”,
它是包含的 FSP v4.0.0 版本的 RASC 软件安装程序。
将相同 FSP 版本的芯片包和 RASC 安装程序都下载到本地之后分别双击打开根据提示进行安装即可。
【点灯】
开发板 LED 灯硬件连接如下:

在 RASC 软件里配置这 3 个引脚为输出,默认低电平。

使用 R_IOPORT_PinWrite 函数可以控制引脚的输出高低电平,从而控制 LED 灯的亮灭。
它的第一个参数需要传入控制块 g_ioport_ctrl,第二个参数传入IO端口和引脚号,第三个参数传入IO引脚电平。
fsp_err_t R_IOPORT_PinWrite (ioport_ctrl_t * const p_ctrl, bsp_io_port_pin_t pin, bsp_io_level_t level);
使用 R_BSP_SoftwareDelay 函数可以进行延时,LED 灯维持亮和灭这两种状态的时间由此函数决定。
它的第一个参数表示延时的时间量,第二个参数表示时间单位。
void R_BSP_SoftwareDelay (uint32_t delay, bsp_delay_units_t units);
时间单位参数可选:
- BSP_DELAY_UNITS_SECONDS,表示秒;
- BSP_DELAY_UNITS_MILLISECONDS,表示毫秒;
- BSP_DELAY_UNITS_MICROSECONDS,表示微秒。
【bsp_led.h】
#ifndef __BSP_LED_H
#define __BSP_LED_H
#include "hal_data.h"
#define LED1_ON R_IOPORT_PinWrite(&g_ioport_ctrl, BSP_IO_PORT_04_PIN_00, BSP_IO_LEVEL_LOW)
#define LED2_ON R_IOPORT_PinWrite(&g_ioport_ctrl, BSP_IO_PORT_04_PIN_03, BSP_IO_LEVEL_LOW)
#define LED3_ON R_IOPORT_PinWrite(&g_ioport_ctrl, BSP_IO_PORT_04_PIN_04, BSP_IO_LEVEL_LOW)
#define LED1_OFF R_IOPORT_PinWrite(&g_ioport_ctrl, BSP_IO_PORT_04_PIN_00, BSP_IO_LEVEL_HIGH)
#define LED2_OFF R_IOPORT_PinWrite(&g_ioport_ctrl, BSP_IO_PORT_04_PIN_03, BSP_IO_LEVEL_HIGH)
#define LED3_OFF R_IOPORT_PinWrite(&g_ioport_ctrl, BSP_IO_PORT_04_PIN_04, BSP_IO_LEVEL_HIGH)
#define LED1_TOGGLE R_PORT4->PODR ^= 1<<(BSP_IO_PORT_04_PIN_00 & 0xFF)
#define LED2_TOGGLE R_PORT4->PODR ^= 1<<(BSP_IO_PORT_04_PIN_03 & 0xFF)
#define LED3_TOGGLE R_PORT4->PODR ^= 1<<(BSP_IO_PORT_04_PIN_04 & 0xFF)
void LED_Init(void);
#endif
【bsp_led.c】
#include "bsp_led.h"
void LED_Init(void)
{
R_IOPORT_Open (&g_ioport_ctrl, g_ioport.p_cfg);
}
在 “hal_entry.c” 文件中添加对头文件 “bsp_led.h” 的包含,
然后将 hal_entry 入口函数的内容改为如下。
【hal_entry.c】
#include "led/bsp_led.h"
void hal_entry(void)
{
LED_Init();
while(1)
{
LED1_ON;
LED2_ON;
LED3_ON;
R_BSP_SoftwareDelay(1, BSP_DELAY_UNITS_SECONDS);
LED1_OFF;
LED2_OFF;
LED3_OFF;
R_BSP_SoftwareDelay(1, BSP_DELAY_UNITS_SECONDS);
}
#if BSP_TZ_SECURE_BUILD
R_BSP_NonSecureEnter();
#endif
}
通过这种方式来封装硬件的驱动程序可以使程序看起来更简单与清晰,并且会让我们以后的开发变得更加的顺畅。
【下载验证】
将程序编译并下载到开发板之后,按下复位按键来复位开发板,
可以观察到开发板上面除了电源指示灯之外的三个 LED 灯在同时缓慢闪烁,三个 LED 灯每秒钟改变一次亮灭的状态。
演示视频如下: