【瑞萨RA_FSP】CTSU——电容按键检测

news2024/9/24 5:27:57

文章目录

  • 一、1. 电容按键介绍
  • 二、电容按键原理
  • 三、瑞萨QE在电容按键上面的运用
  • 四、电容按键实验
    • 1. 硬件设计
    • 2. FSP配置
    • 3.复制文件
    • 4.主函数


一、1. 电容按键介绍

电容式感应触摸按键可以穿透绝缘材料外壳 8mm (玻璃、塑料等等)以上,准确无误地侦测到手指的有效触摸。 并保证了产品的灵敏度、稳定性、可靠性等不会因环境条件的改变或长期使用而发生变化,并具有防水和强抗干扰能力。

瑞萨的芯片内部集成高分辨率触摸检测模块CTSU和专用信号处理电路,以保证芯片对环境变化具有灵敏的自动识别和跟踪功能。 芯片还必须满足用户在复杂应用中对稳定性、灵敏度、功耗、响应速度、防水等方面的高体验要求。 电容式触摸按键控制芯片通常广泛适用于遥控器、灯具调光、各类开关以及车载、小家电和家用电器控制界面等应用中。 在芯片应用的开发过程非常简单,可以最大限度的降低方案成本。

二、电容按键原理

电容器(简称为电容)就是可以容纳电荷的器件,两个金属块中间隔一层绝缘体就可以构成一个最简单的电容。如下图(俯视图),有两个金属片,之间有一个绝缘介质,这样就构成了一个电容。这样一个电容在电路板上非常容易 实现,一般设计四周的铜片与电路板地信号连通,这样一种结构就是电容按键的模型。当电路板形状固定之后,该电容的容量也是相对稳定的。
在这里插入图片描述
电路板制作时都会在表面上覆盖一层绝缘层,用于防腐蚀和绝缘,所以实际电路板设计时情况如下图。电路板最上层是绝缘材料,下面一层是导电铜箔,我们根据电路走线情况设计并决定铜箔的形状,再下面一层一 般是FR-4板材。金属感应片与地信号之间有绝缘材料隔着,整个可以等效为一个电容Cx。一般在设计时候,把金属感应片设计成方便手指触摸大小。
在这里插入图片描述
在电路板未上电时,可以认为电容Cx是没有电荷的,在上电时,在电阻作用下,电容Cx就会有一个充电过程,直到电容充满,即Vc电压值为3.3V,这个充电过程的时间长短受到电阻R阻值和电容Cx容值的直接影响。但是在选择合适电阻R并焊接固定到电路板上后,这个充电时间就基本上不会变了,因为此时电阻R已经是固定的,电容Cx在无外界明显干扰情况下基本上也是保持不变的。

看看当用手指触摸时会是怎样一个情况?如下图,当用手指触摸时,金属感应片除了与地信号形成一个等效电容Cx外,还会与手指形成一个Cs等效电容。
在这里插入图片描述
此时整个电容按键可以容纳的电荷数量就比没有手指触摸时要多了,可以看成是Cx和Cs叠加的效果。在相同的电阻R情况下,因为电容容值增大了,导致需要更长的充电时间。也就是这个充电时间变长使得我们区分有无手指触摸,也就是电容按键是否被按下。

现在最主要的任务就是测量充电时间。充电过程可以看出是一个信号从低电平变成高电平的过程,现在就是要求出这个变化过程的时间。可以利用定时器输入捕获功能计算充电时间,即设置TIMx_CH为定时器输入捕获模式通道。这样先测量得到无触摸时的充电时间作为比较基准,然后再定时循环测量充电时间与无触摸时的充电时间作比较,如果超过一定的阈值就认为是有手指触摸。

图下为Vc跟随时间变化情况,可以看出在无触摸情况下,电压变化较快;而在有触摸时,总的电容量增大了,电压变化缓慢一些。
在这里插入图片描述

为测量充电时间,需要设置定时器输入捕获功能为上升沿触发, 上图中VH就是被触发上升沿的电压值,也是RA6M5认为是高电平的最低电压值,大约为1.8V。t1和t2可以通过定时器捕获/比较寄存器获取得到。

不过,在测量充电时间之前,必须想办法制作这个充电过程。之前的分析是在电路板上电时会有充电过程,现在要求在程序运行中循环检测按键,所以必须可以控制充电过程的生成。可以控制TIMx_CH引脚作为普通的GPIO使用,使其输出一小段时间的低电平,为电容Cx放电,即Vc为0V。当我们重新配置TIMx_CH为输入捕获时电容Cx在电阻R的作用下就可以产生充电过程。

三、瑞萨QE在电容按键上面的运用

QE for Capacitive Touch 是一种工具,用于协助开发包括使用电容式触摸键在内的嵌入式系统。 此工具简化了触摸用户界面的初始设置和灵敏度的调整。可以使用这一个软件进行多个电容式按键组成的滑块从而识别出诸如“滑”和“推”等手势,从而大大减少开发者对于电容式按键开发的难度。

此工具可自动调整电容式触摸传感器的灵敏度。您可以按照弹出消息中的说明在几分钟内完成基本调整。 简单的GUI操作甚至允许初学者创建用于触摸用户界面的配置,通过触摸传感器监控输入状态,并调整参数。

此外,由于该工具还可以调整调谐参数并通过实时显示反映结果,因此对于在各种情况下找到合适的参数非常有用,例如在存在大量静电的情况下或用湿手使用的情况下。

四、电容按键实验

电容按键不需要任何外部机械部件,使用方便,成本低,很容易制成与周围环境相密封的键盘,以起到防潮防湿的作用。 电容按键优势突出使得越来越多电子产品使用它代替传统的机械按键。

1. 硬件设计

开发板板载一个电容按键,电容按键电路设计请参考下图。
在这里插入图片描述
标示TPAD1在电路板上就是电容按键实体,默认连接到P708,即CTSU单元1的通道TS12。 充电电容的阻值为680欧姆,电阻的大小决定了电容按键充电的时间。

实验还用到调试串口和LED功能,用来打印输入捕获信息和指示电容按键状态。

2. FSP配置

首先打开 “CTSU_basic” 项目的 FSP 配置界面,接下来要在这个界面里配置芯片的引脚及其相应的功能。

双击 configuration.xml 打开配置界面: 然后点开依次点击 Stacks -> New Stack -> CapTouch -> TOUCH 来配置CTSU模块。如下图。
在这里插入图片描述
之后选择对应的引脚如下图
在这里插入图片描述

配置LED引脚
在这里插入图片描述

配置完成之后可以按下快捷键“Ctrl + S”保存, 最后点右上角的 “Generate Project Content” 按钮,让软件自动生成配置代码即可。

3.复制文件

在keil里面创建一个 qe_gen 文件夹,将之前在 e2 studio 项目里生成的 qe_gen 文件夹里的文件复制到keil的文件夹里面, 之后我们将文件目录导入到项目里。
在这里插入图片描述
第一步点击 Options for Target ‘Target 1’ ,将添加的文件夹目录导入到工程里
在这里插入图片描述
第二步点击 Manage Project Items ,设置keil的项目文件管理。 这个时候的文件目录为:

CTSU_basic
├─ .settings
├─ Listings
├─ Objects
├─ qe_gen
│    ├─qe_touch_config.c
│    ├─qe_touch_config.h
│    ├─qe_touch_define.h
│    └─qe_touch_sample.c
├─ ra
├─ ra_cfg
├─ ra_gen
├─ RTE
└─ scriptsrc

4.主函数

void hal_entry(void)
{
   qe_touch_main();     //跳转到电容按键函数

   #if BSP_TZ_SECURE_BUILD
      /* Enter non-secure code */
      R_BSP_NonSecureEnter();
   #endif
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/672789.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

OpenStack(2)--项目(租户)、用户、角色

一、项目(租户)、用户、角色的关系 重点理解项目(project/租户)、用户(user)、角色(role)三者之间的关系,首先这三者都可以单独新建,但是绑定关系是通过open…

10 分钟玩转Elastcisearch——数据可视化分析

在当今这个快速发展的科技时代,Elasticsearch 已经成为企业和开发者的重要技术工具。随着数据的爆发式增长,Elasticsearch 可以帮助个人和企业更好的理解数据、发现数据中的规律趋势和模式、并从海量数据中洞察业务价值。 为了帮助开发者能够快速上手&am…

基于SpringBoot的电子文档管理系统(源码、文档、数据库)

网上文件管理系统所用的资料库是由 SpringBoot架构所建立的 Mysql资料库。在进行设计的时候,要充分地保证了系统代码拥有良好的可读性、实用性、易扩展性、通用性、便于后期维护、操作容易、页面简洁等优势。 一、开发工具及技术介绍 (1).J…

JavaScript Day03 对象详解

文章目录 1. 什么是对象?2.对象的创建2.1 字面量模式2.2 构造函数模式 3 对象的访问4.新增删除对象中的属性5.Object显示类型转换(强制类型转换)5.1-ECMAScript中可用的3种强制类型转换如下:-Boolean(value)-String(value)-Number(value) 5.2-Object类型到Boolean类…

chatgpt赋能python:Python中的模块查找位置详解

Python中的模块查找位置详解 作为一门广受欢迎的高级编程语言,Python 拥有丰富的库和模块,这些工具让开发者能够更加高效地编写代码。但是,有时候当你在使用 Python 模块时,你可能会遇到找不到模块或者无法导入模块的错误。这时候…

【从零开始学习JAVA | 第四篇】标准的JavaBean类的构建

目录 前言: 构造方法: 构造标准JavaBean类: 对象内存图: 前言: 本片会详细的介绍JAVA中JavaBean类的手动构建,IDEA为我们提供的快捷键生成JAVA bean的方式,以及介绍一个可以快速生成…

OTT 的快速频道切换(FCC)

FCC(Fast Channel Change)快速频道切换是一种由FCC服务器下发特制的以I帧为起始的单播节目流来提升频道切换时间的方法, 通过在网络中部署FCC服务,可以回避等待I帧时间与IGMP交互时间,提升I帧传输时间,从而提高频道切换…

chatgpt赋能python:Python构造和析构:介绍和实例

Python 构造和析构:介绍和实例 当你编写 Python 程序时,你可能会注意到一个名为构造函数和析构函数的概念。这些函数可以在创建和删除一个对象时自动执行一些操作。本文将深入介绍 Python 中的构造和析构概念。 构造函数 Python 使用一种名为 __init_…

pkg打包nestjs项目问题点整理

打包运行过程中的警告 Warning Cannot include directory %1 into executable. The directory must be distributed with executable as %2. %1: node_modules\puppeteer.local-chromium %2: path-to-executable/puppeteer 解决方法: 警告大义为在路径如%1的某个目…

chatgpt赋能python:用Python进行nan值的查询

用 Python 进行 nan 值的查询 在数据分析和机器学习的过程中,我们经常会遇到 NaN 值,NaN 是代表不是数字的特殊值,通常意味着在数据中有缺失或者不可识别的数据。由于机器学习等技术需要处理的数据来源繁杂,有时候我们在数据处理…

第八章 总结【编译原理】

第八章 总结【编译原理】 前言推荐第八章 总结8.1 符号表的组织与作用8.1.1符号表的作用8.1.2符号表的组织方式 8.2 整理与查找8.2.1线性表8.2.2 对折查找与二叉树8.2.3杂凑技术 8.3 名字的作用范围8.3.1FORIRAN的符号表组织8.3.2Pascal的符号表组织 8.4 符号表的内容 最后 前言…

python基础学习4【Matplotlib、散点图、折线图绘制、读取存储不同数据源的数据(csv、txt、excel)、编码】

Matplotlib数据可视化基础(绘图基础语法和常用参数) 创建画布与子图 plt.figure()、plt.title()、plt.savefig()保存绘制的图、plt.show() 展示: plt.legend():创建图例 figure.add_subplot():向figure添加一个Axes作为一subp…

极致呈现系列之:Echarts仪表盘的光影奇迹

目录 仪表盘介绍仪表盘的基本结构Echarts仪表盘的常用数据配置项Echarts仪表盘的常用样式配置项创建基本的仪表盘自定义仪表盘样式应用场景 仪表盘介绍 仪表盘通常模拟了传统汽车仪表盘的样式,包括刻度、指针、表盘等元素,用于显示单一指标或数据。它能…

【JavaWeb】前端之HTML基础认知

目录 1、第一个HTML程序 1.1、创建第一个HTML文件 1.2、HTML文件的基本结构 2、HTML常见标签 2.1、注释标签 2.2、标题标签:h1-h6 2.3、段落标签:p 2.4、换行标签:br 2.5、格式化标签 2.6、图片标签:img 2.7、超链接标签&…

vue源码理解之模板编译和组件化

一:模板编译 1、模板编译的主要目标是将模板(template)转换为渲染函数(render) template > render() 2、模板编译必要性 Vue 2.0需要用到VNode描述视图以及各种交互,手写显然不切实际,因此用户只需编写类似HTML代码的Vue模板,…

扩展卡尔曼滤波在目标跟踪中的应用(2)

上一节的内容中,我们对于扩展卡尔曼EKF算法进行了讲解,今天我们对上一节的内容进行仿真。 话不多说,开整!!! 仿真背景 我们以一个目标的位置信息为例,其状态方程如下所示: X k 0…

黑马程序员前端 Vue3 小兔鲜电商项目——(二)初始化项目

文章目录 了解 Vue3初始化项目创建项目启动项目添加目录Git 管理项目jsconfig.json 配置别名路径 ElementPlus 引入安装配置按需导入测试组件 定制 elementPlus 主题安装sass准备定制化的样式文件自动导入配置 Axios 安装并简单封装安装 Axios基础配置封装请求函数并测试 路由整…

数据血缘分析

引入 做过大数据或者接触过数仓的同学,相信都有听到过数据治理、血缘分析的专业术语。不知道大家有没有思考过以下几个问题: 1、什么是血缘分析?主要分析什么东西? 2、为什么要做血缘分析,主要是为了解决什么痛点?做出来之后有什么价值?如何衡量这些价值? 3、如何做血…

mysql存储过程与函数

文章目录 存储过程概述:创建存储过程调用存储过程存储函数的使用对比存储函数和存储过程存储过程和函数的查看、修改、删除查看修改删除 存储过程概述: 它的思想很简单,就是一组经过 预先编译 的 SQL 语句 的封装。 执行过程:存储过程预先存储在 MySQL …

相对路径与绝对路径(以javaweb项目的html文件为例)

相对路径和绝对路径是用于在文件系统中定位文件或目录的两种方式。 1、两者的概念 绝对路径:是指文件或目录在文件系统中的完整路径,从文件系统的根目录开始一直到文件的具体位置。绝对路径所包含的所有目录都是从根目录开始的,因此&#x…