微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 传感器 > CapSense触摸感应技术在手机中的应用

CapSense触摸感应技术在手机中的应用

时间:05-21 来源:赛普拉斯半导体国际有限公司 点击:

  CapSense触摸感应技术是Cypress半导体使用CY8C21x34系列PSoC芯片开发的、用于触摸式按键、触摸式滚动条(Slider)、触摸式平板(Touchpad)的触摸感应技术。它利用PSoC的CY8C21x34系列芯片一些特有的资源,根据电容感应的原理和松弛震荡器的技术实现触摸感应。区别于其他触摸感应技术,CapSense技术具有几乎不需要外围元件,每一个按键的灵敏度可单独调整,一个芯片可同时实施触多个触摸式按键和触摸式滚动条等优点。可用于各种家电产品代替传统的轻触按键和薄膜键盘。同样它也非常适合在时尚的手机上使用。本文介绍CapSense技术的基本原理以及它在手机中的应用。

一、 CapSense技术的基本原理

  CapSense技术是根据电容感应的原理和松弛震荡器来实现触摸感应。我们知道PCB板上相邻的导线或铜箔之间存在寄生电容Cp。当有手指接近或触摸铜箔时,相当于附加了两个电容,这两个电容等效于并联在Cp上的一个电容Cf。如果在手指与铜箔之间有不导电的介质,它将影响Cf。介质越厚、介质的介电常数εr越小,对它的影响就越大。为了检测Cp和Cp的变化Cf我们用图3所示的电路对其实施操作。图中左半面是一个松弛震荡器,它的工作过程是这样的:使用恒流源以iCHARGE电流对Cp充电,当Cp上的电压上升并刚好超过比较器的反向输入端的电压VBG(1.3V)时,比较器翻转到高电平,控制复位开关闭合,Cp迅速放电到零。比较器翻转恢复到低电平,恒流源以iCHARGE电流再对Cp充电… 这个过程周而复始,形成震荡。而震荡的周期近似于充电的时间为:

tCHARGE=CpVBG/iCHARGE

  图中右半面是一个间隔计数器。它由一个8位的PWM和一个16位的定时器组成。它实施一段时间间隔(PWM的Duty)里16位的定时器对系统时钟的计数。PWM的输入来自比较器的输出,16位的定时器被设置成捕捉定时器,它的输入来自系统时钟SYSCLK。当PWM进入Duty状态时启动16位的定时器工作,当PWM的Duty状态结束时捕捉16位的定时器的计数。这个计数的值为:

n = NPERIODS.tCHARGE.SYSCLK

其中NPERIODS为当PWM为Duty状态时松弛震荡器的震荡次数,它的值被设置成PWM的周期值减2。将tCHARGE=CpVBG/iCHARGE代入上式有:

n = NPERIODS.CpVBG.SYSCLK/iCHARGE

当其他值都被固定以后n和Cp有唯一确定的关系。如果有手指触摸时,Cp将变化到Cp+Cf,而n将由n1变化到n2:

⊿n = n2 – n1

当⊿n大于预先设定的阀值时,就可以表明有手指触摸。图4是无手指触摸和有手指触摸对应松弛震荡器的波形和PWM及定时器计数值变化的示意图。

二.CapSense技术的实施

  CapSense所需要的资源包括松弛震荡器和间隔定时器全部都被包含在PSoC芯片里,芯片外围不需要任何元件。为了实施CapSense,PSoC的集成开放环境(IDE)Designer4.2已经为CY8C21x34芯片 建立了CSR模块,通过对CSR模块的硬件配置和函数的调用可以来实施CapSense。

1. CSR模块的配置

  在IDE的器件编辑状态,选择并放置CSR模块后,激活CSR模块导向器(图4),在CSR模块导向器中可以设置多少个触摸按键以及每一个按键所对应的管脚;也可以同时设置一个或两个滚动条(Slider)以及滚动条由几个感应块组成和它们所对应的管脚。滚动条的分辨率可以大于组成它按键的个数,它也在这里被设定。

  在模块的参数设置窗口,可以设置CSR模块的工作模式(周期或频率)、手指信号的阀值、噪声信号的阀值、基本线修正的速率和抗ESD信号的周期。当所有设置完成以后,点击Generate Device Application按钮,即可自动生成CSR模块有关的程序供用户程序调用。

2. 几个关键函数的调用

下面是CSR模块的几个关键函数:
void CSR_Start();
void CSR_Stop();
CSR_SetDacCurrent(BYTE bValue, BYTE bRange);
CSR_SetScanSpeed(BYTE bDivider);
void CSR_StartScan(bStrtSw, bSwCnt, bMode);
BYTE CSR_GetScanStatus();
BYTE CSR_iReadSwitch(Byte bSwitch);
CSR_bUpdateBaseline(bSwGroup);
BYTE CSR_bGetCentroidPos(bSwGroup);

CSR_Start和CSR_Stop分别是启动和停止CSR模块。CSR_SetDacCurrent用于设定给Cp充电的恒流源的大小,bValue, bRange参数用于分两级设定恒流源的值。CSR_SetScanSpeed用于设置PWM的周期值,其参数bDivider的值减2为PWM的Duty值。上面两个函数的参数的调整可以调节触摸按键和触摸滚动条的灵敏度和扫描周期。CSR_StartScan用于启动扫描,bStrtSw, b

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top