CapSense触摸感应技术在手机中的应用
发布时间:2008/5/29 0:00:00 访问次数:653
一、 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, bm
一、 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, bm
上一篇:如何选择适当的传感器