触摸感应接口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中re模块结合正则表达式的实际应用案例

《Python中re模块结合正则表达式的实际应用案例》Python中的re模块是用于处理正则表达式的强大工具,正则表达式是一种用来匹配字符串的模式,它可以在文本中搜索和匹配特定的字符串模式,这篇文章主... 目录前言re模块常用函数一、查看文本中是否包含 A 或 B 字符串二、替换多个关键词为统一格式三、提

SpringBoot+Redis防止接口重复提交问题

《SpringBoot+Redis防止接口重复提交问题》:本文主要介绍SpringBoot+Redis防止接口重复提交问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不... 目录前言实现思路代码示例测试总结前言在项目的使用使用过程中,经常会出现某些操作在短时间内频繁提交。例

springboot下载接口限速功能实现

《springboot下载接口限速功能实现》通过Redis统计并发数动态调整每个用户带宽,核心逻辑为每秒读取并发送限定数据量,防止单用户占用过多资源,确保整体下载均衡且高效,本文给大家介绍spring... 目录 一、整体目标 二、涉及的主要类/方法✅ 三、核心流程图解(简化) 四、关键代码详解1️⃣ 设置

spring中的ImportSelector接口示例详解

《spring中的ImportSelector接口示例详解》Spring的ImportSelector接口用于动态选择配置类,实现条件化和模块化配置,关键方法selectImports根据注解信息返回... 目录一、核心作用二、关键方法三、扩展功能四、使用示例五、工作原理六、应用场景七、自定义实现Impor

一文深入详解Python的secrets模块

《一文深入详解Python的secrets模块》在构建涉及用户身份认证、权限管理、加密通信等系统时,开发者最不能忽视的一个问题就是“安全性”,Python在3.6版本中引入了专门面向安全用途的secr... 目录引言一、背景与动机:为什么需要 secrets 模块?二、secrets 模块的核心功能1. 基

MybatisPlus service接口功能介绍

《MybatisPlusservice接口功能介绍》:本文主要介绍MybatisPlusservice接口功能介绍,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友... 目录Service接口基本用法进阶用法总结:Lambda方法Service接口基本用法MyBATisP

Java中的Closeable接口及常见问题

《Java中的Closeable接口及常见问题》Closeable是Java中的一个标记接口,用于表示可以被关闭的对象,它定义了一个标准的方法来释放对象占用的系统资源,下面给大家介绍Java中的Clo... 目录1. Closeable接口概述2. 主要用途3. 实现类4. 使用方法5. 实现自定义Clos

java对接第三方接口的三种实现方式

《java对接第三方接口的三种实现方式》:本文主要介绍java对接第三方接口的三种实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录HttpURLConnection调用方法CloseableHttpClient调用RestTemplate调用总结在日常工作

Java 的 Condition 接口与等待通知机制详解

《Java的Condition接口与等待通知机制详解》在Java并发编程里,实现线程间的协作与同步是极为关键的任务,本文将深入探究Condition接口及其背后的等待通知机制,感兴趣的朋友一起看... 目录一、引言二、Condition 接口概述2.1 基本概念2.2 与 Object 类等待通知方法的区别

Python logging模块使用示例详解

《Pythonlogging模块使用示例详解》Python的logging模块是一个灵活且强大的日志记录工具,广泛应用于应用程序的调试、运行监控和问题排查,下面给大家介绍Pythonlogging模... 目录一、为什么使用 logging 模块?二、核心组件三、日志级别四、基本使用步骤五、快速配置(bas