1 简介
今天收到了来自RA生态工作室寄来的RA4M2-SENSOR开发板。
RA4M2-SENSOR 是一款基于RA4M2系列微控制器的评估套件,支持TrustZone技术和片内安全加密引擎(SCE),提供硬件级安全保护,确保敏感数据安全。RA4M2 MCU采用40nm工艺,具有出色的低功耗性能(CoreMark®功耗低至81µA/MHz)。
套件支持瑞萨的灵活配置软件包(FSP), FSP 基于 FreeRTOS 构建,能够与其他实时操作系统(RTOS)和中间件兼容,并且可以通过丰富的外设接口(如I2C、SPI、ADC等)与各种传感器模块(如温湿度、气体、光传感器等)进行无缝连接。此外,该套件包括传感器(SENSOR)系列接口以及对微控制器所有引脚的通孔访问,极大地提升了扩展性,满足开发者对不同应用需求的扩展。
开发板的功能分区如下图所示

开发板背面带有引脚标注

2 开箱


3 新建模板工程
3.1 新建工程
之前也有评测过瑞萨开发板,E2S的下载安装教程可参考我之前的文章 。
这里直接新建一个模板工程,为之后的评测项目用。
新建一个Renesas RA项目


项目名称 00_Template

选择Device这里(第二步)请看下张图片。注意工具链选择GNU ARM Embedded

芯片选择 R7FA4M2AD3CFL

接下来的两步,默认即可


RTOS选择FreeRTOS

下一步,完成即可创建项目。
3.2 修改时钟配置
我们开发板上的晶振是12MHz的,因此,需要在configuration.xml文件中的Clocks页面将 XTAL改为12MHz。其他按需调整,只要让工作频率在100MHz就行。
改完记得ctrl+s保存!

3.3 修改调试配置
在System:Debug中,修改调试模式为SWD

3.4 配置串口
在Pins--SCI--SCI9下配置模式为异步UART,程序自动配好了RXD和TXD引脚。

在Stacks页新建UART(r_sci_uart)

打开属性页面,修改名称和通道,以及回调函数名称、中断优先级为2。注意将波特率修改为57600,默认的115200会导致串口乱码。

printf函数通常需要设置堆栈大小。因为printf函数在运行时需要使用栈空间来存储临时变量和函数调用信息。如果堆栈大小不足,可能会导致程序崩溃或不可预期的行为。
为了防止printf崩溃,在BSP页面下修改堆大小为0x2000

然后点击Generate Project Content生成程序代码
3.5 printf重定向串口
打开项目 C/C++ Project Settings

下图框出的位置勾选上。如果这里没有这两个选项,检查是不是之前创建项目时没有选GNU ARM Embedded

3.6 修改生成的程序格式
别急着关上面的窗口,按下图所示找到Output file formatm,将生成的文件格式改为INTEL HEX

4 软件部分
4.1 新建uart驱动代码
在src目录下,新建uart文件夹,在其中新建uart.h和uart.c文件。
uart.c文件内容
#include "uart.h"
#include "hal_data.h"
volatile int uart_send_complete_flag = 0;
void UART_Init(void)
{
fsp_err_t err = FSP_SUCCESS;
err = R_SCI_UART_Open (&g_uart9_ctrl, &g_uart9_cfg);
assert(FSP_SUCCESS == err);
}
#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
void uart9_callback (uart_callback_args_t * p_args)
{
switch (p_args->event)
{
case UART_EVENT_RX_CHAR:
{
break;
}
case UART_EVENT_TX_COMPLETE:
{
uart_send_complete_flag = 1;
break;
}
default:
break;
}
}
uart.h文件内容
#include "stdio.h"
void UART_Init(void);
4.2 修改hal_entry.c
引用头文件部分
#include "hal_data.h"
#include "uart/uart.h"
hal_entry函数部分
void hal_entry(void)
{
UART_Init();
printf("Hello RA4M2-SENSOR开发板!\r\n");
while(1){
}
#if BSP_TZ_SECURE_BUILD
R_BSP_NonSecureEnter();
#endif
}
5 烧录程序
使用Renesas Flash programmer或者J-Link烧录,详细教程请见https://blog.csdn.net/xinzuofang/article/details/149791583
6 成果展示
丝印写着DEVICE的USB口连接到电脑,使用串口调试工具打开串口,给开发板上电,显示出Hello RA4M2-SENSOR开发板!
