瑞萨FPB-RA0E2开发板简介及环境搭建指南

转自RA生态工作室

RA MCU众测宝典环境搭建专题更新啦!这次我们聚焦【FPB-RA0E2】开发板,一步步打通开发“第一关”,为后续功能开发筑牢基础。

开启宝典

01.FPB-RA0E2开发板简介

FPB-RA0E2是一款针对RA0E2系列微控制器(MCU)的快速原型板,旨在帮助用户无缝评估RA0E2 MCU的各项特性,并利用灵活配置软件包(FSP)和e²studio集成开发环境来开发嵌入式系统应用。

该板卡的核心是基于ArmCortex-M23内核、主频32MHz的R7FA0E2094CFM微控制器,配备了128KB代码闪存和16KB SRAM。在系统功能层面,它集成了多种时钟源、用于精确功耗测量的电流测量点、一个板载调试器(SWD)、USB Type-C接口、用户LED和按钮。尤为关键的是,该开发板提供了强大的生态系统扩展能力,同时兼容Digilent Pmod和Arduino(UNO R3)两种流行的接口标准,使开发者可以方便地连接各类外设和扩展板,从而快速将创意转化为实际产品。

0a0bd8ba-f4ed-11f0-92de-92fbcf53809c.png

02开发环境搭建

首先,需要下载e²studio。下载地址如下:

下载e²studio

https://www.renesas.com/en/software-tool/e-studio?srsltid=AfmBOoqRmLqCRqEFXlE7lYL88hcZdWgQCaE6kPwMr4tdSUvFGh0Jsf9j#downloads

需要下载最近的版本:

其次、需要下载FSP,建议下载最新v6.0.0,最新的v6.0.0增加了很多对FPB-RA0E2的支持

0b3bb700-f4ed-11f0-92de-92fbcf53809c.png

下载地址:

下载FSP v6.0.0

https://github.com/renesas/fsp

0c63a854-f4ed-11f0-92de-92fbcf53809c.png

03新建项目

在e²studio的主界面,点击顶部菜单栏的文件(F)

在下拉菜单中,将鼠标移动到新建(N)上。

在弹出的子菜单中,选择瑞萨C/C++项目

最后,在右侧的菜单中点击Renesas RA

0ccf8b3c-f4ed-11f0-92de-92fbcf53809c.png

在弹出的“新建C/C++项目”窗口中,您会看到可用的项目模板。

选择第二个选项:Renesas RA FSP Solution。这个模板用于创建基于Renesas FSP(Flexible Software Package)的完整解决方案,是开发RA系列微控制器的推荐方式。

选择后,点击下一步(N)按钮继续

0d3469da-f4ed-11f0-92de-92fbcf53809c.png

在“Renesas RA FSP Solution”窗口中,您需要设置项目名称和存储位置。

Project name(项目名称)输入框中,输入您的项目名称,例如图中所示的led3

通常保持勾选使用缺省位置(D),这样项目就会被创建在e²studio的默认工作空间中。

设置好名称后,点击下一步(N)

0d92834e-f4ed-11f0-92de-92fbcf53809c.png

Board(开发板)的下拉列表中,找到并选择您的目标开发板,根据图中的高亮选择,这里选FPB-RA0E2

Toolchains(工具链)部分,确保项目使用的编译器是GNU ARM Embedded

在下方的工具链版本选择框中,选择您已经安装并希望使用的版本。

完成以上配置后,点击完成(F)按钮(图中未显示,但这是最后一步)。

0df560a4-f4ed-11f0-92de-92fbcf53809c.png

04GPIO控制

实现2个LED等不同闪烁。

一个实现1s的反转,一个实现呼吸效果。使用的是GPIO操作。

0e65bef8-f4ed-11f0-92de-92fbcf53809c.png

05程序

左右滑动查看完整内容

[/p][p][code][/p][p]#include"hal_data.h"[/p][p]void R_BSP_WarmStart(bsp_warm_start_event_t event);[/p][p]extern bsp_leds_t g_bsp_leds;[/p][p]void hal_entry (void)[/p][p]{[/p][p]#ifBSP_TZ_SECURE_BUILD[/p][p]  R_BSP_NonSecureEnter();[/p][p]#endif[/p][p]  if(g_bsp_leds.led_count < 2)[/p][p]    {[/p][p]        while (1);[/p][p]    }[/p][p]    bsp_io_port_pin_t led1_pin = (bsp_io_port_pin_t) g_bsp_leds.p_leds[BSP_LED_LED1];[/p][p]    bsp_io_port_pin_t led2_pin = (bsp_io_port_pin_t) g_bsp_leds.p_leds[BSP_LED_LED2];[/p][p]    const uint32_t LOOP_TICK_MS = 1;[/p][p]    const uint32_t PWM_PERIOD_MS = 20;[/p][p]    const uint32_t BRIGHTNESS_STEPS = 100;[/p][p]    const uint32_t BREATHE_STEP_INTERVAL_MS = 20;[/p][p]    uint32_t brightness = 0;[/p][p]    int8_t breathe_direction = 1;[/p][p]    uint32_t breathe_step_counter = 0;[/p][p]    const uint32_t BLINK_INTERVAL_MS = 1000;[/p][p]    bsp_io_level_t led2_state = BSP_IO_LEVEL_LOW;[/p][p]    uint32_t blink_counter = 0;[/p][p]    R_BSP_PinAccessEnable();[/p][p]    R_BSP_PinWrite(led2_pin, led2_state);[/p][p]    while (1)[/p][p]    {[/p][p]        uint32_t on_time_ms = (PWM_PERIOD_MS * brightness) / BRIGHTNESS_STEPS;[/p][p]        uint32_t current_pwm_phase = (breathe_step_counter + blink_counter) % PWM_PERIOD_MS;[/p][p]        if (current_pwm_phase < on_time_ms)[/p][p]        {[/p][p]            R_BSP_PinWrite(led1_pin, BSP_IO_LEVEL_HIGH);[/p][p]        }[/p][p]        else[/p][p]        {[/p][p]            R_BSP_PinWrite(led1_pin, BSP_IO_LEVEL_LOW);[/p][p]        }[/p][p]        breathe_step_counter += LOOP_TICK_MS;[/p][p]        if (breathe_step_counter >= BREATHE_STEP_INTERVAL_MS)[/p][p]    {[/p][p]      breathe_step_counter = 0;[/p][p]      brightness += breathe_direction;[/p][p]      if(brightness >= BRIGHTNESS_STEPS)[/p][p]      {[/p][p]        brightness = BRIGHTNESS_STEPS;[/p][p]        breathe_direction = -1;[/p][p]      }[/p][p]      elseif(brightness == 0)[/p][p]      {[/p][p]        breathe_direction = 1;[/p][p]      }[/p][p]    }[/p][p]    blink_counter += LOOP_TICK_MS;[/p][p]    if(blink_counter >= BLINK_INTERVAL_MS)[/p][p]    {[/p][p]      blink_counter = 0;[/p][p]      led2_state = (led2_state == BSP_IO_LEVEL_LOW) ? BSP_IO_LEVEL_HIGH : BSP_IO_LEVEL_LOW;[/p][p]      R_BSP_PinWrite(led2_pin, led2_state);[/p][p]    }[/p][p]    R_BSP_SoftwareDelay(LOOP_TICK_MS, BSP_DELAY_UNITS_MILLISECONDS);[/p][p]  }[/p][p]}[/p][p]void R_BSP_WarmStart (bsp_warm_start_event_t event)[/p][p]{[/p][p]  if(BSP_WARM_START_RESET == event)[/p][p]  {[/p][p]#ifBSP_FEATURE_FLASH_LP_VERSION != 0[/p][p]    R_FACI_LP->DFLCTL = 1U;[/p][p]#endif[/p][p]  }[/p][p]  if(BSP_WARM_START_POST_C == event)[/p][p]  {[/p][p]    R_IOPORT_Open(&IOPORT_CFG_CTRL, &IOPORT_CFG_NAME);[/p][p]  }[/p][p]}[/p][p]
复制代码

06效果

0ed47370-f4ed-11f0-92de-92fbcf53809c.gif

如果在工具安装、项目配置中遇到阻碍,或是有更高效的搭建技巧,欢迎在评论区分享交流~环境搭建专题会持续补充更多RA系列开发板的实操指南,让嵌入式开发起步更顺畅!

返回顶部
跳到底部

Copyright ©2024 本站由 灵灵猴 版权所有,站长QQ303154759.津ICP备2024027016号-5,本站部分内容为转载,不代表本站立场,如有侵权请联系处理 open开发