本帖最后由 EPTmachine 于 2023-5-28 12:39 编辑


1、硬件介绍

感谢面包板社区提供的这次试用机会,本次测评的开发板是RA生态工作室提供的基于R7FA2E1A7DFL制作的RA-Eco-RA2E1开发板。板上的资源如下:



  • 1个复位按键
  • 1个自定义按键
  • 2个触摸按键
  • 2个LED
  • 64kB 的闪存以及 16kB SRAM
  • 4kB 数据闪存,提供与 EEPROM 类似的数据存储功能
  • 48引脚封装
  • 1.6V - 5.5V 的宽工作电压范围
  • 增强型电容式触摸感应单元 (CTSU)
  • 12 位 ADCx13
  • LPACMP低功耗模拟比较器x2
  • TSN温度传感器
  • GPT32 32位通用PWM定时器x1,GTP16  16位通用PWM定时器x6
  • 低功耗异步通用定时器x2
  • RTC实时时钟
  • SCI串行通信接口x4
  • SPIx1
  • I2Cx1
  • DTC数据传输控制器
  • WDT/IWDT
  • KINT密钥中断函数x5

forum.jpg

2、开发环境搭建

瑞萨今年推广MCU的力度很大,在很多平台上都可以看到测评活动,其中与RT-Thread的互动很频繁,在RT-Thread上可以找到很多与RA系列相关的测评文章。

开发环境主要包括瑞萨的灵活配置软件包(FSP)、Keil。

2.1 灵活配置软件包 (FSP) 安装

可快速配置开发板的外设功能,请使用 v3.5.0 版本,目前可在github上下载3.5.0版本(下载地址:https://github.com/renesas/fsp/releases/tag/v3.5.0

1、找到下载的文件打开(注意文件名称包含为rasc):setup_fsp_v3_5_0_rasc_v2021-10.exe

2、接下下来一路点击next即可完成安装

forum.jpg

forum.jpg

forum.jpg

运行 rasc.exe,验证是否安装成功。路径:\eclipse\rasc.exe

forum.jpg

2.2 Keil环境配置

Keil的安装在此就不多做介绍了,在实际应用时,我们会在Keil中对RA SmartConfig工具进行配置,能够在Keil环境中对其进行调用。具体配置如下:

1. 打开 MDK,选择 “Tools -> Customize Tools Menu…”

2. 点击 “new” 图标,添加一条自定义命令: RA Smart Configurator

3. Command 输入工具的安装路径, 点击“…”找到安装路径下的“rasc.exe”文件并选中 (setup_fsp_xxxxx 安装目录下)

4. Initial Folder 输入参数: $P

5. Arguments 输入参数: --device $D --compiler ARMv6 configuration.xml

6. 点击 OK 保存命令“Tools -> RA smart Configurator”  

forum.jpg

forum.jpg

3、RT-Thread运行和功能演示

3.1 代码编写

RT-Thread论坛中虽然有大量有关RA系列MCU的测评文章,不过其中的大部分文章都集中与CPK系列的评估板,没有与特定MCU相关的测评,在RT-Thread的支持包中没有与这个开发板相对应的支持包。

幸好平时公众号上看的多,找了一篇本次相关的文章,其中实现了基于CPK-RA2E1的RT-Thread移植,其代码仓库为:

https://gitee.com/recan-li/ra4m2-rt-thread

工程的路径为:ra4m2-rt-thread\bsp\renesas\ra2e1-cpk

我们打开工程,并修改目标芯片型号。

forum.jpg

参看板上的标记可以看到,P103和P104分别控制一个LED,在hal_entry.c中添加如下代码,代码功能如注释描述。

#include <rtthread.h>
  • #include "hal_data.h"
  • #include <rtdevice.h>
  • //定义LED1和LED2引脚
  • #define LED1_PIN    "P103" /* Onboard LED pins */
  • #define LED2_PIN    "P104" /* Onboard LED pins */
  • void hal_entry(void)
  • {
  •         uint32_t cnt = 0;
  •     rt_kprintf("\nHello RT-Thread!\n");
  •     rt_uint32_t led1_pin = rt_pin_get(LED1_PIN);
  •         rt_uint32_t led2_pin = rt_pin_get(LED2_PIN);
  •     while (1)
  •     {
  •         rt_pin_write(led1_pin, PIN_HIGH);
  •         rt_thread_mdelay(500);
  •         rt_pin_write(led1_pin, PIN_LOW);
  •         rt_thread_mdelay(500);
  •                 rt_pin_write(led2_pin, PIN_HIGH);
  •         rt_thread_mdelay(500);
  •         rt_pin_write(led2_pin, PIN_LOW);
  •         rt_thread_mdelay(500);
  •     }
  • }
  • //指令回调函数1定义
  • void icu_sample(void)
  • {
  •     /* init */
  •     rt_kprintf("\n icu_sample demo. \n");
  • }
  • //注册指令回调函数1
  • MSH_CMD_EXPORT(icu_sample, icu sample);
  • //指令回调函数2定义
  • void cmd_examle2(void)
  • {
  •     /* init */
  •     rt_kprintf("\n cmd_examle2 demo2. \n");
  • }
  • //注册指令回调函数2
  • MSH_CMD_EXPORT(cmd_examle2, cmd example2);
  • 复制代码

    3.2 代码运行效果

    在SecureCRT中通过串口工具发送指令可以看到,刚才注册的两个响应函数返回了,实现了通过串口控制MCU程序执行的功能。本次测评主要是通过试用网络上提供的样例工程进行修改来实现预定的功能,给我的感觉是,现在RA的可用的示例代码越来越多,只是大家现在还不熟悉瑞萨MCU的开发流程,不过看目前瑞萨的推广力度,相信瑞萨的MCU会流行起来。