
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)。
- 1个复位按键
- 2个用户按键
- 2个触摸按键
- 3个LED
- 2个PMOD接口
- 板载USB转TTL模块,可用于串口通信和烧录
- 板载SWD接口,方便用户调试与下载
- 支持 TrustZone 的 200MHz Arm Cortex-M33
- 安全芯片的功能
- 1MB 闪存、192kB支持奇偶校验 SRAM 以及64kb ECC SRAM
- 具有后台运行能力的双区闪存
- 8KB 数据闪存,提供与 EEPROM 类似的数据存储功能
- 100 引脚封装
- 带有专用 DMA 的以太网控制器
- 电容触摸按键感应单元
- 全速 USB 2.0,支持主机模式和设备模式
- CAN 2.0B
- QuadSPI 和 OctaSPI
- SCI(UART、简单 SPI、简单 I2C)
- SPI/ I2C 多主接口
- SDHI 和 MMC
搭建keil的配置环境
- 需要先安装keil软件,然后再安装瑞萨的软件
- 首先打开 FSP 的发布页面(https://github.com/renesas/fsp/releases),在这个网页下面定位到所需的 FSP 发布版本,以 FSP 6.1.0 版本为例,
在 Assets 栏下面发布了与 FSP 6.1.0 相关的工具软件,如下图所示。

在下载的时候很慢,后来使用了科学上网后才快速的下载完成。 进行安装,安装路径要注意不要用中文路径,需要记一下路径位置后续需要用到。
- 安装完成后,打开keil软件,进行一些配置
)
wKgZO2jZJ1mAO7AGAABFaO80REE871.png)
在“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”一栏中输入:−applicationcom.renesas.cdt.ddsc.dpm.ui.dpmapplicationconfiguration.xml"L%L"
创建工程

这里进行芯片的选择,注意100pin的还分三种,选最下面的一个
然后进行配置,时钟我们默认就行
先点灯
- 看原理图

需要将这三个引脚进行配置
配置串口
看原理图串口是使用的串口9




配置下DEBUG引脚和BSP的栈大小


选择SWD
然后就生成代码
代码展示
在串口的主代码中需要添加一段代码如下:

unsigned char send_buff[100];
volatile bool uart_send_complete_flag = false;
void user_uart9_callback (uart_callback_args_t * p_args)
{
if(p_args->event == UART_EVENT_TX_COMPLETE)
{
uart_send_complete_flag = true;
}
}
int fputc(int ch)
{
err = R_SCI_UART_Write(&g_uart9_ctrl, (uint8_t *)&ch, 1);
if(FSP_SUCCESS != err) __BKPT();
while(uart_send_complete_flag == false)
{
}
uart_send_complete_flag = false;
return ch;
}
主循环中,添加测试代码,进行串口的发送
void hal_entry(void)
{
err = R_SCI_UART_Open(&g_uart9_ctrl, &g_uart9_cfg);
assert(FSP_SUCCESS == err);
while(1)
{
printf("Hellow world ! \r\n");
}
#if BSP_TZ_SECURE_BUILD
R_BSP_NonSecureEnter();
#endif
}
点灯的代码分文件进行了编写:
.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_02_PIN_10, BSP_IO_LEVEL_LOW)
#define LED2_ON R_IOPORT_PinWrite(&g_ioport_ctrl, BSP_IO_PORT_02_PIN_11, BSP_IO_LEVEL_LOW)
#define LED3_ON R_IOPORT_PinWrite(&g_ioport_ctrl, BSP_IO_PORT_02_PIN_14, BSP_IO_LEVEL_LOW)
#define LED1_OFF R_IOPORT_PinWrite(&g_ioport_ctrl, BSP_IO_PORT_02_PIN_10, BSP_IO_LEVEL_HIGH)
#define LED2_OFF R_IOPORT_PinWrite(&g_ioport_ctrl, BSP_IO_PORT_02_PIN_11, BSP_IO_LEVEL_HIGH)
#define LED3_OFF R_IOPORT_PinWrite(&g_ioport_ctrl, BSP_IO_PORT_02_PIN_14, BSP_IO_LEVEL_HIGH)
#define LED1_TOGGLE R_PORT4->PODR ^= 1<<(BSP_IO_PORT_02_PIN_10 & 0xFF)
#define LED2_TOGGLE R_PORT4->PODR ^= 1<<(BSP_IO_PORT_02_PIN_11 & 0xFF)
#define LED3_TOGGLE R_PORT4->PODR ^= 1<<(BSP_IO_PORT_02_PIN_14 & 0xFF)
void LED_Init(void);
void basic_waterfall_led(void);
void toggle_waterfall_led(void);
#endif
.c的文件如下:
#include "bsp_led.h"
void LED_Init(void)
{
R_IOPORT_Open (&g_ioport_ctrl, g_ioport.p_cfg);
}
void basic_waterfall_led(void) {
LED1_ON;
LED2_OFF;
LED3_OFF;
R_BSP_SoftwareDelay(500, BSP_DELAY_UNITS_MILLISECONDS);
LED1_OFF;
LED2_ON;
LED3_OFF;
R_BSP_SoftwareDelay(500, BSP_DELAY_UNITS_MILLISECONDS);
LED1_OFF;
LED2_OFF;
LED3_ON;
R_BSP_SoftwareDelay(500, BSP_DELAY_UNITS_MILLISECONDS);
}
void toggle_waterfall_led(void) {
LED1_ON;
LED2_OFF;
LED3_OFF;
R_BSP_SoftwareDelay(500, BSP_DELAY_UNITS_MILLISECONDS);
LED1_TOGGLE;
LED2_TOGGLE;
R_BSP_SoftwareDelay(500, BSP_DELAY_UNITS_MILLISECONDS);
LED2_TOGGLE;
LED3_TOGGLE;
R_BSP_SoftwareDelay(500, BSP_DELAY_UNITS_MILLISECONDS);
LED3_TOGGLE;
LED1_TOGGLE;
}
进行测试

串口可以正常工作,三个流水灯也能正常的显示
