触摸感应接口TSI模块

2023-11-01 00:50
文章标签 模块 接口 触摸 感应 tsi

本文主要是介绍触摸感应接口TSI模块,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

TSI

触摸感应输入模块TSI:具有高灵敏和强鲁棒性的电容触摸感应检测能力。可在低功耗模式下运行,能以一个触摸事件唤醒CPU,实现键盘触摸,旋转和滑动。

使用TSI作为输入的电气设备,不需要操作人员直接接触电路就可感应到用户的操作。

TSI模块可用于基于接近感应的人机交互设备的设计,实现操作人员与电气设备的隔离,在丰富操作方式的基础上,也提供了更高的安全性能。同时避免了对设备的直接操作,也使得设备损坏的概论降低,从而减少了维护成本。

常见设备:触摸键盘、触摸显示屏等

触摸感应实现原理

根据电子学原理,未接地的电极与地之间存在电容,人体当作接地面,当有人体接近电极板时,等效地增大了电极与地之间的有效面积,使得电极板电容值增大。

TSI模块的内部机制可以实现对电极电容值的检测,并且可以设定触发检漏事件的阈值,当检测到电容值大于设定阈值时,TSI的触发标志位将置位,并可激活发出中断请求,从而实现了触摸感应事件的响应。

 

测量电容原理

TSI模块内部有两个电流源,对外接电极进行充放电,在电极板上产生三角波信号。

电极上三角波信号的频率随电极电容变化而变化,当电极电容增大时,三角波信号的频率减小,周期变大。

 TSI模块以一个内部振荡器产生的时钟信号为参考节拍,对电极上的三角波电压信号的周期进行测量计数,当三角波电压信号周期增大时,对应计数值亦会增大。

 

驱动构件机使用方法

TSI具有初始化,获取返回值,设置TSI阈值三种基本操作,按照构件的思想,可封装成独立的功能函数

TSI初始化函数主要完成TSI工作的设定:工作时钟、工作方式、电气参数、引脚门控使能及模块使能

TSI获取返回值函数tsi_value16主要是启动一次TSI扫描,获取TSI通道计数值,将结果保存数返回。

设置TSI阈值函数tsi_set_threshold只要是设定TSI通道的触发阈值。设定的触发阈值包括阈值下限和阈值上限。

当让TSI模块自动进行超出范围判断时,若TSI通道计数值超出设定阈值的上下限,则TSI模块认为TSI引脚上有TSI事件触发,将会自动设置TSI触发标志位。

使能TSI模块函数tsi_enable_re_int(用来开TSI中断)

关闭TSI模块函数tsi_disable_re_int(用来关TSI中断)

开启一次软件扫描函数tsi_softsearch。

构件的具体使用方法

使用步骤:

1.在主函数main中,首先定义TSI模块所使用的通道号并赋值,然后调用初始化函数,传入通道号。

uint_8 chnID=5;//TSI通道测试选择通道5

tsi_init(chnIID);  //初始化TSI

2.在头文件include中定义两个宏分别表示通道阈值下限和上限,然后调用设定通道阈值的函数,设置指定通道的阈值,其中传入的第一个参数为下限,第二个为上限。

#define TSI_TSHD_VALUE_HIGH 0x010c

#define TSI_TSHD_VALUE_LOW 0x00F

tsi_set_threshold(TSI_TSHD_VALUE_LOW,TSI_TSHD_VALUE_HIGH);

3.调用TSI模块中断使能函数,开TSI中断

tsi_enable_re_int();//开TSI中断

4.开启一次软件扫描

tsi_softsearch();

5.当获得的通道计数值超出阈值范围时,会产生TSI中断。在中断函数中获取计数值,并把它通过串口1发送给PC机。

uint_16 i;

i=tsi_get_value16();

uart_send1(UART_1,(uint_8)(i)+'0');

 

TSI的构件制作

实现TSI电容测量涉及以下寄存器:

通用控制和状态寄存器(TSI0_GENCS)

用于对TSI中断使能、TSI模块使能、中断类型选择、参考振荡器充放电时电流值、振荡器充放电电压的峰值、电极振荡器的充放电电流值、电极每次的扫描次数、阈值的超出、触发扫描的方式等配置。

DATA寄存器(TSI0_DATA)

用于TSI通道选择和软件触发开始的设置。

阈值寄存器(TSI0_TSHD)

用于TSI阈值上下限的设置。

 

嵌入式技术基础与实践(第4版)

这篇关于触摸感应接口TSI模块的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/319293

相关文章

python: 多模块(.py)中全局变量的导入

文章目录 global关键字可变类型和不可变类型数据的内存地址单模块(单个py文件)的全局变量示例总结 多模块(多个py文件)的全局变量from x import x导入全局变量示例 import x导入全局变量示例 总结 global关键字 global 的作用范围是模块(.py)级别: 当你在一个模块(文件)中使用 global 声明变量时,这个变量只在该模块的全局命名空

深入探索协同过滤:从原理到推荐模块案例

文章目录 前言一、协同过滤1. 基于用户的协同过滤(UserCF)2. 基于物品的协同过滤(ItemCF)3. 相似度计算方法 二、相似度计算方法1. 欧氏距离2. 皮尔逊相关系数3. 杰卡德相似系数4. 余弦相似度 三、推荐模块案例1.基于文章的协同过滤推荐功能2.基于用户的协同过滤推荐功能 前言     在信息过载的时代,推荐系统成为连接用户与内容的桥梁。本文聚焦于

Java 后端接口入参 - 联合前端VUE 使用AES完成入参出参加密解密

加密效果: 解密后的数据就是正常数据: 后端:使用的是spring-cloud框架,在gateway模块进行操作 <dependency><groupId>com.google.guava</groupId><artifactId>guava</artifactId><version>30.0-jre</version></dependency> 编写一个AES加密

Jenkins构建Maven聚合工程,指定构建子模块

一、设置单独编译构建子模块 配置: 1、Root POM指向父pom.xml 2、Goals and options指定构建模块的参数: mvn -pl project1/project1-son -am clean package 单独构建project1-son项目以及它所依赖的其它项目。 说明: mvn clean package -pl 父级模块名/子模块名 -am参数

寻迹模块TCRT5000的应用原理和功能实现(基于STM32)

目录 概述 1 认识TCRT5000 1.1 模块介绍 1.2 电气特性 2 系统应用 2.1 系统架构 2.2 STM32Cube创建工程 3 功能实现 3.1 代码实现 3.2 源代码文件 4 功能测试 4.1 检测黑线状态 4.2 未检测黑线状态 概述 本文主要介绍TCRT5000模块的使用原理,包括该模块的硬件实现方式,电路实现原理,还使用STM32类

java线程深度解析(一)——java new 接口?匿名内部类给你答案

http://blog.csdn.net/daybreak1209/article/details/51305477 一、内部类 1、内部类初识 一般,一个类里主要包含类的方法和属性,但在Java中还提出在类中继续定义类(内部类)的概念。 内部类的定义:类的内部定义类 先来看一个实例 [html]  view plain copy pu

模拟实现vector中的常见接口

insert void insert(iterator pos, const T& x){if (_finish == _endofstorage){int n = pos - _start;size_t newcapacity = capacity() == 0 ? 2 : capacity() * 2;reserve(newcapacity);pos = _start + n;//防止迭代

京东物流查询|开发者调用API接口实现

快递聚合查询的优势 1、高效整合多种快递信息。2、实时动态更新。3、自动化管理流程。 聚合国内外1500家快递公司的物流信息查询服务,使用API接口查询京东物流的便捷步骤,首先选择专业的数据平台的快递API接口:物流快递查询API接口-单号查询API - 探数数据 以下示例是参考的示例代码: import requestsurl = "http://api.tanshuapi.com/a

股票数据接口-陈科肇

陈科肇 新浪财经 sz-深圳sh-上海历史分价表:http://market.finance.sina.com.cn/pricehis.php?symbol=sz000506&startdate=2016-12-27&enddate=2016-12-27历史成交明细(当日成交明细):http://vip.stock.finance.sina.com.cn/quotes_service/v

python内置模块datetime.time类详细介绍

​​​​​​​Python的datetime模块是一个强大的日期和时间处理库,它提供了多个类来处理日期和时间。主要包括几个功能类datetime.date、datetime.time、datetime.datetime、datetime.timedelta,datetime.timezone等。 ----------动动小手,非常感谢各位的点赞收藏和关注。----------- 使用datet