硬件:RA2E1开发板
软件:e2studio Version: 2024-10 (24.10.0)
调试器:J-link V9(我这边有V8的调试器,调试时候遇到点问题,又买了一个V9)
一:RA2E1的开发板知识介绍
1.1 开发板整体介绍
RA-Eco-RA2E1-48PIN-V1.0是一款基于48 MHz Arm® Cortex®-M23 内核架构的核心板,主控芯片为R7FA2E1A72DFL。RA2E1 产品群是 RA 系列的入门级单芯片微控制器,基于48MHz Arm® Cortex®-M23 内核,具有高达 128kB 的代码闪存以及 16kB 的 SRAM 。 这款产品采用优化的制程和瑞萨电子的低功耗工艺技术,是业界一流水平的超低功耗微控制器。 RA2E1 产品支持 1.6V 至 5.5V 的宽工作电压范围和多种封装,如 LQFP、QFN、LGA、BGA 和 WLCSP。 RA2E1 可与 RA2L1 产品群引脚和外围设备兼容,特别适用于电池供电应用以及空间受限应用,以及其他需要高性能和低功耗的系统。
1.2 产品特性:
1个复位按键
1个自定义按键
2个触摸按键
2个LED
板载USB转TTL模块
板载SWD接口,方便用户调试与下载
48MHz Arm Cortex-M23
64kB 的闪存以及 16kB SRAM
4kB 数据闪存,提供与 EEPROM 类似的数据存储功能
48引脚封装
1.6V - 5.5V 的宽工作电压范围
增强型电容式触摸感应单元 (CTSU)
12 位 ADC,LPACMP,温度传感器
32 位通用 PWM 定时器,16 位通用 PWM 定时器,低功耗异步通用定时器
实时时钟
SCI(UART、简单 SPI、简单 I2C)
独立的 SPI 接口/I2C 多主接口
安全功能
加密功能
二:瑞萨定时器相关知识介绍
瑞萨定时器分为通用定时器(GPT)和低功耗定时器(AGT),这里我使用通用定时器进行开发。
通用定时器(GPT)知识介绍:
通用 PWM 定时器(GPT,General PWM Timer)是 RA MCU 的其中一种 32/16 位的定时器外设。在 GPT 当中,可分为 GPT32 和 GPT16,它们最主要的区别是计数器的不同。GPT32 是 32 位的定时器,包含的计数器是 32 位的,所能计数的范围为:0~0xFFFF_FFFF;而 GPT16 是 16 位的定时器,包含的计数器是 16 位的,所能计数的范围为:0~0xFFFF。
定时器(Timer)最基本的功能就是定时,比如定时发送串口数据、定时采集 AD 数据、定时触发中断处理其它事务等等。如果把定时器与 GPIO 引脚结合起来使用的话可以实现更加丰富的功能,可以对输入信号进行计数,可以测量输入信号的脉冲宽度,可以输出单个脉冲、PWM 等波形,等等。通过定时器生成 PWM 波形信号来控制电机状态是工业控制的普遍方法,这方面知识非常值得深入了解。
GPT模块可用于计数事件、测量外部输入信号、作为通用计时器并产生周期性中断、以及输出周期性或 PWM 信号到 GTIOC引脚。GPT 也可用于输出单个脉冲,但是注意这是通过软件来实现的,GPT硬件本身不支持输出单个脉冲(One-Shot)功能。当使用单个脉冲(One-Shot)模式时必须要开启中断,计时器需要在脉冲周期结束后在ISR 中断服务函数中被停止。
系统框图如下所示:
三:软件编写
目的:使用 GPT 定时器进行定时并产生中断请求触发中断,然后通过这个中断,切换 LED 的电平,完成板载LED灯的闪烁。
3.1 新建工程:
3.1.1 打开e2s 软件新建工程
3.1.1 选择设置 瑞萨的工程目录
3.1.2 填写软件的工程名字,默认位置为安装目录下
3.1.4 这里设置一下瑞萨的FSP库文件,使用的开发板和工具链(这个很重要),点击下一步
3.1.5 为了方便学习,这里我选择不适用rtos ;
3.1.6 这里我们默认配置一下就好,我选择的闪烁灯这个程序
四:软件编写如下所示:
4.1 板载LED灯原理图
如上图所示,这里使用P103和P104的作为LED控制引脚,从原理图可知,当单片机引脚拉高时,板载LED灯亮起;当单片机引脚拉低时,板载LED灯熄灭;在固定的时间频率下,翻转IO口电平,实现LED闪烁的功能。
软件配置如下:
配置P103引脚为输出模式,默认输出高电平,
4.2 通用定时器的配置如下所示:
配置好如上所示即可,我们配置定时器中断为100ms,即每100ms 进入一次中断;
五:软件编写:
5.1 gpio 初始化部分:
#define LED1_TOGGLE R_PORT1->PODR ^= 1<<(BSP_IO_PORT_01_PIN_03 & 0xFF)
5.2 定时器软件代码部分
打开定时器
/* Initializes the module. */ err = R_GPT_Open(&g_timer0_ctrl, &g_timer0_cfg); /* Handle any errors. This function should be defined by the user.*/ assert(FSP_SUCCESS == err); /* Start the timer.*/ (void) R_GPT_Start(&g_timer0_ctrl);
编写定时器回调函数
void timer0_callback(timer_callback_args_t *p_args) { /* TODO: add your own code here */ if (TIMER_EVENT_CYCLE_END == p_args->event) { if(Rx_flag==1) { // printf_usart(); Rx_flag=0; } LED1_TOGGLE ; } }
六:实物验证如下:
下载验证:按下板载的复位按键,可以看到 板载的LED灯在程序正常运行后,可以按照100ms的时间间隔进行闪烁。
七:编写心得体会
自己呢也是有幸获得了参赛资格。之前使用keil5的编程工具,对其开发。还好keil5也可以配合FSP库的开发,本次使用e2s对开发板进行编程,这里自己配置的时候也是按照开发文档一步步的进行配置,可以说视频讲解的很详细,通俗易懂。从开始的板载的LED灯控制,其他外设的学习,在自己遇到困难时,去看视频、资料、到论坛上去查看大佬们有没有解决的办法、在软件调试的时,使用FSP软件配置底层驱动代码真的时很方便,可以说相对于其他的mcu芯片,瑞萨有着很多的优势,通过本次的活动,在一定的程度上,提高的自己的动手能力,也学到了瑞萨的许多的珍贵实践、开发的经验。稍后对其他外设进行调试。