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, bSwCnt, bMode参数分别用于设置第一个扫描的键的键号、顺序扫描键的个数和扫描的方式,扫描的方式有单次扫描和连续扫描两种方式。?CSR_GetScanStatus函数返回扫描的状态,CSR_iReadSwitch函数得到扫描的结果即定时器的计数值。
CSR_bUpdateBaseline是一个重要而有多种功能的函数。对于每一个触摸感应键,都有一个Baseline用于跟踪在没有手指触摸时的定时器的计数值,它是通过将每一次扫描得到的定时器的计数值做IIR滤波并符合有关条件后才作修正。作为差值比较的基准线,每一次扫描得到的定时器的计数值都要和它比较得到差值,该差值再和手指信号的阀值比较以判定有无手指触摸。参数bSwGroup可选0,1和2,表明本次调用是修正触摸按键还是第一或第二滚动条。返回值是0或1,表明无或有手指触摸。除了实施以上功能外,该函数还要完成峰值检测和ESD检测。用于提高测试的性能。
3.手指在滚动条上的定位
滚动条通常被做成锯齿排列,每一个锯齿条对应一个感应块,当手指触摸滚动条或在其上移动时,某一时刻会有几个连续的感应块被感应(如图6),手指中间对应的感应块感应量最大,两边顺序递减。这就可以用重心法来确定手指在滚动条上的位置,式(2)是
中心法的计算公式。用这种方式定位的同时也可以提高定位的精度,CSR模块允许滚动条的最大分辨率是(滚动条上感应块数-1)*15.94。分辨率的提高使它可以应用在需要高分辨率的场合。函数CSR_bGetCentroidPos(bSwGroup)用于计算手指在滚动条上的定位并返回定位值。bSwGroup选择1(第一个滚动条)和2(第二个滚动条)。
三.手机中使用CapSense技术
CapSense技术由于它的许多优势已经被使用在手机上。在手机上触摸按键可以代替传统的轻触按键,滚动条可以用于调节音量或在菜单上移动光标。由于没有机械的动作和位移,触摸式按键和滚动条的寿命要更长久,同时这种方式也给手机的外形和工业设计带来更多的想象空间和发挥余地,使手机变得更时尚。但区别于其他应用,CapSense技术在手机中使用有其特点需要特别关注。
手机的按键通常比较小,所以有一些用于感应手指的铜箔面积会很小,这将影响手指感应的灵敏度。所以一般要求,感应面上的覆盖层应尽量薄,覆盖层的厚度可以控制在0.2~1.5mm以内。而覆盖层的材料应尽量选择介电常数比较高的塑料、聚酯或有机玻璃等等。在印制板上,感应手指的铜箔面积应尽量做大,而用于投射背光的孔应尽量小。印制板上的铺地应放在底层并用30~60%网格作为铺地。以确保每一个感应块有合适的Cp和足够的灵敏度。
手机采用电池供电,待机时间是手机重要的技术指标之一。待机时,PSoC芯片可以通过SLEEP方式降低功耗。SLEEP降低功耗有两种方式:IDLE方式和深度SLEEP方式。前者利用PSoC的SLEEP定时器在设定的一段时间内(如125mS)自动唤醒PSoC后扫描所有感应块一次,如果没有任何触摸,则再次进入SLEEP。否则,激活PSoC。这种方式是采用间歇扫描方式来降低待机时的平均功耗,适用按键比较少的情况。后者是SLEEP定时器自动唤醒PSoC后检查由主控端通过I/O口设定的电平信号,以决定是继续SLEEP还是激活PSoC。这种方式可使待机时的PSoC功耗下降到4uA。可适用对功耗要求很高的手机。
手机在拨打电话时会产生很强的射频信号。这种射频信号对CapSense会产生严重的干扰和影响。它必须通过硬件和软件两方面采取措施加以解决。硬件采取的措施包括芯片和地线合理的布局、芯片上未使用的管脚必须接地、在感应PCB的背面使用锡箔加以屏蔽,必要的时候可以在一些输入管脚上和I2C输入端串接300~500欧姆的电阻。软件上采取的措施主要是对明显异常的数据进行判断并加以筛选和滤波。
ESD测试是手机必须测试的项目,通常在手机上它要求能承受10KV以上的静电冲击。CapSense 技术采用电容感应原理,还是有可能受到静电的干扰。静电对CapSense的干扰通常有其明显的特征,在CSR模块中,函数 CSR_bUpdateBaseline(bSwGroup)已经对受典型的静电干扰数据实施了过滤和处理。并有过滤的参数可供用户选择。硬件上也可以采取一些措施可以有效地防止静电干扰。如按键周围可以设置接地环路;提高面板和外壳的密封程度。连接器地线的可靠连接;保证静电有有效的释放路径。
四、结束语
CapSense触摸感应技术是一种有效而易于使用的触摸感应技术。它所提供的CSR模块包括硬件构造和软件API函数,使用户很容易上手。它不仅可以用于按键的触摸感应,同时也可以用于滚动条的触摸感应应用,相关API函数可以直接给出手指在触摸区的键值和在触摸滚动条上的位置值。由于CSR模块是可构造硬件和软件的结合,使得它在键的数量、灵敏度的调节、滚动条的选择与否等方面给用户很大的灵活性和空间。它的外围元件极少,充分体现了PSoC芯片的优势,降低了用户的系统成本。
评论
查看更多