1. 概述
RA2E1 产品群是 RA 系列的入门级单芯片微控制器,基于48 MHz Arm® Cortex®-M23 内核,具有高达 128 kB 的代码闪存以及 16 kB 的 SRAM 。 这款产品采用优化的制程和瑞萨电子的低功耗工艺技术,是业界一流水平的超低功耗微控制器。RA2E1 产品支持 1.6V 至 5.5V 的宽工作电压范围和多种封装(25 引脚封装扩展至 64 引脚封装),特别适用于电池供电应用以及空间受限应用,以及其他需要高性能和低功耗的系统。并具有增强型电容式触摸感应单元 (CTSU),最多可以支持30个触摸按键。
本文介绍基于e2studio开发环境,介绍通过FSP配置生成RA2E1触摸按键代码,以及触摸灵敏度的调试。
软件准备: e² studio 2021-10 或者更新版本, gcc arm编译器,FSP3.6, Renesas QE for Capacitive Touch 3.0.2。
硬件准备:EK-RA2E1,CPK-RA2E1或者任意一个RA2E1的板子。
2.工程配置
1. 新建一个RA C/C++ 可执行工程
2. 输入工程名称,选择文件路径。
3. 选择FSP版本,板子芯片(本文为RA2E1A7DFL,根据板子情况可以是EK-RA2E1或CPK-RA2E1)。
4. 选择工程类型。
5. 选择工程模板。
6. 完成之后可以打开 FSP的配置,点击BSP可以看到BSP的配置属性。
如果没有出现FSP的属性,可以通过 Window -> Show View -> Properites打开。
7. 点击Stacks标签,点击 New Stack,分别添加CapTouch -> CTSU(r_ctsu) 驱动以及 CapTouch -> Touch(rm_touch)中间件。
8. 点击 Add DTC Driver for Transmission 以及 Add DTC Driver for Reception,使能DTC。
9. 点击Stack里面的 CTSU,查看属性,配置Support for using DTC-> Enabled,同时点击小Pins小箭头切换至管脚Pins配置。
10. 在Pins标签里面配置TSCAP管脚,以及相应的触摸通道管脚。配置完成按Generate Project Content生成代码。
11. 这时候项目生成了包含BSP, r_ctsu, rm_touch的代码。
3.QE 配置触摸按键
1. 打开CapTouch Main(QE)。
2. 点击Select the target project选择工程 ra2e1_touch。点击To Prepare a Configuration 下拉,选择新建一个配置文件。
3. 配置文件如下配置。点击Button 并移动到中间空白处点击,鼠标左键单击添加一个Button,添加完之后,按 “ESC“键退出添加Button。
4. 双击 Button00可以修改Touch Sensor的属性,指定Touch Sensor,以及对应的Resistance。
5. 配置完成,所有Button显示为绿色,可以点击Create创建配置文件。
6. 回到Touch main窗口,确保电脑通过仿真器连接RA2E1板子,点击Start Tuning。
7. e² studio编译器自动编译,并下载到芯片,显示如下界面。
8. 如果顺利会自动去到第5步,这时会提示触摸按键Button00。
9. 用手指触摸按键Button00, 显示如下触摸值,这时候同时按下键盘任意键确认。
10. Button01可以同样调整。调整完成后显示如下界面,点击Continue the Tuning Process。
11. 回到CapTouch Main(QE),点击 Output Parameter File。
12. 点击Show Sample。
13. 显示如下内容,点击Output to a File输出触摸按键处理文件。
14. 最终生成的文件如下。
4.添加代码
hal_entry.c 修改如下代码,在hal_entry()函数调用qe_touch_main(),并编译工程。
extern void qe_touch_main(void);
void hal_entry(void)
{
/* TODO: add your own code here */
qe_touch_main();
#if BSP_TZ_SECURE_BUILD
/* Enter non-secure code */
R_BSP_NonSecureEnter();
#endif
}
5. 仿真调试
1. 在CapTouch Main(QE)窗口,点击Show Views打开CapTouchStatus窗口。
2. CapTouch Status 窗口如下,可以通过Touch I/F 选择触摸通道。
3. 通过 Renesas View -> Renesas QE -> CapTouch Multi Status Chart,打开多路触摸检测窗口。同理可以打开CapTouch Pad Monitor检测窗口。
4. 全速运行程序,并打开监控(Enable Monitoring),可以看到 下面两个窗口显示了Touch 的测量值。下面为按下按键1的情况。
6. 用户代码添加
qe_sample_main.c文件内容如下。
#include "qe_touch_config.h"
#define TOUCH_SCAN_INTERVAL_EXAMPLE (20) /* milliseconds */
void qe_touch_main(void);
uint64_t button_status;
#if (TOUCH_CFG_NUM_SLIDERS != 0)
uint16_t slider_position[TOUCH_CFG_NUM_SLIDERS];
#endif
#if (TOUCH_CFG_NUM_WHEELS != 0)
uint16_t wheel_position[TOUCH_CFG_NUM_WHEELS];
#endif
void qe_touch_main(void)
{
fsp_err_t err;
/* Open Touch middleware */
err = RM_TOUCH_Open(g_qe_touch_instance_config01.p_ctrl, g_qe_touch_instance_config01.p_cfg);
if (FSP_SUCCESS != err)
{
while (true) {}
}
/* Main loop */
while (true)
{
/* for [CONFIG01] configuration */
err = RM_TOUCH_ScanStart(g_qe_touch_instance_config01.p_ctrl);
if (FSP_SUCCESS != err)
{
while (true) {}
}
while (0 == g_qe_touch_flag) {}
g_qe_touch_flag = 0;
err = RM_TOUCH_DataGet(g_qe_touch_instance_config01.p_ctrl, &button_status, NULL, NULL); // scan the key data,save to button_status
if (FSP_SUCCESS == err)
{
/* TODO: Add your own code here. */
}
/* FIXME: Since this is a temporary process, so re-create a waiting process yourself. */
R_BSP_SoftwareDelay(TOUCH_SCAN_INTERVAL_EXAMPLE, BSP_DELAY_UNITS_MILLISECONDS);
}
}
可以见用户的代码一般需要在qe_touch_main()的主循环里面添加。