首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

如何用动态重配置实施CapSense Plus

如何用动态重配置实施CapSense Plus

触摸感应按键和滑条已经被越来越多的应用在家电和工业产品中用于取代传统的机械按键和簿膜按键。由于触摸感应按键和滑条使得控制面板更时尚和具有更长的寿命,它也被越来越多的用户所接受。在多种技术中,电容式触摸感应技术已经成为触摸感应技术的主流。Cypress半导体基于PSoC的电容式触摸感应技术CapSense具有外围元件少、抗干扰能力强和灵敏度调节灵活已经得到了广泛的应用。区别于其他的专用的触摸感应芯片,CapSense是基于PSoC的电容式触摸感应技术,所以在PSoC芯片上不仅可以实施CapSense触摸感应,还可以实现用户希望实现的其他功能,如:控制 LED灯、温度测量、马达控制等等。这就是所谓的CapSense Plus。

  

PSoC是包含有8位微处理器核和数字与模拟混合信号阵列的可编程片上系统。PSoC的数字资源(如定时器、PWM、UART等等)和模拟资源(放大器、比较器、滤波器等等)以数字模块和模拟模块的方式给出。用户可以根据自己的需要来定义这些模块。PSoC的集成开发环境PSoC Designer也预先为用户定义了五十多个常用的数字和模拟资源供用户选择。如数字资源有:定时器、PWM、UART、SPI、CRC、PRS等等;模拟资源有放大器、比较器、滤波器等等;AD转换器由若干数字模块和模拟模块组合而成。所有这些预定义的模块被称之为用户模块。PSoC Designer也为用户提供这些用户模块的API函数供用户编程时调用。CapSense触摸感应包括两个用户模块CSD和CSA可供用户选择。其中PSoC最常用带触摸感应的芯片CY8C21x34支持CSD用户模块。

  

CapSense CSD模块触摸感应原理

CSD模块可以被划分为六个部分:开关电容、时钟、∑-⊿调制器、位流调制滤波器、参考源和软件处理(见图1)。其中开关电容部分中的Cx是触摸感应按键本身所具有的寄生电容。∑-⊿调制器部分中的Cmod和Rb分别被称之为调制电容和放电电阻,它们是CSD模块仅有的两个外部元件。

图1:由六个部分组成的CSD模块。
图1:由六个部分组成的CSD模块。

图2:开关电容等效电路。
图2:开关电容等效电路。

      

开关电容的工作原理是将来自时钟部分的时钟信号二分频并建立死区控制产生ph1和ph2来控制Sw1和Sw2。在ph1阶段Cx通过Vdd充电,在ph2阶段Cx通过Sw2放电给Cmod,Cmod被充电。ph1和ph2交替工作,周而复始将在Cmod上建立电压Vmod。由于Cmod>>Cx并且其上所有的电荷均来自 Cx,而Cx上的电荷均来自Vdd,因此可以将开关电容等效成一个串接的电阻Rx(如图2),Rx的大小为:Eq1


fs为时钟信号的频率。这样就变成Vdd经Rx向Cmod充电,当开关电容的时钟频率一定时,充电电流的大小与Cx成反比。

∑-⊿调制器用于产生一个与Cx相关的一位的位流。Vdd经Rx向Cmod充电时,Cmod上的电压VCmod逐渐上升,当超过比较器反向输入端的参考电压Vref时,比较器翻转,输出高电平。这个高电平被锁存器锁存并用来控制 Sw3闭合使Cmod经Rb放电。 被锁存的时间由来自时钟部分的VC1决定。当VCmod电压低于Vref时,比较器翻转,输出低电平, Sw3又断开,VCmod电压随着充电又上升。这样周而复始使VCmod围绕Vref上下波动,而∑-⊿调制器输出一串位流脉冲(见图3中Vmod)。经过计算位流脉冲的占空比dmod和Cx有如下正比关系:

Eq2

或者说一段时间里高电平所占的时间和是和Cx有对应的关系。当手指触摸感应按键时,dmod或高电平所占的时间和将随着Cx的增加而增加。只要测量出一段时间里高电平所占的时间和的变化量就可以知道是否有手指触摸。

  

图3:CSD模块节点波形图。
图3:CSD模块节点波形图。

位流调制滤波器正是用于测量一段时间里高电平所占的时间和。其中ADCPWM的duty宽度决定了这个“一段时间”,而与门使在这个一段时间里∑-⊿调制器输出的位流脉冲的高电平可以通过并打开计数器,对频率比较高的VC1信号进行计数。在ADCPWM的duty的下降沿产生中断信号用中断服务程序读出计数器的值得到高电平所占的时间和,这个值由软件处理即可判断有无手指触摸。

控制ph1和ph2的时钟通常来自主时钟IMO的n次分频信号,但在CSD中使用了伪随机信号发生器PRS来控制ph1和ph2(见图3的Vph1和Vph2),它的好处不仅使CSD本身产生的干扰频谱扩散,也增强了CSD对外界的抗干扰能力。另外CSD的模拟输入端的低阻输入方式也使CSD的抗干扰性能获得提高。

由于CSD模块的ADCPWM的参数、开关频率fs、参考电压Vref和外部元件Cmod、Rb都可由户设定,因此灵敏度的调节非常方便。

CSD模块软件用于实施在ADCPWM的duty的下降沿产生中断信号时,用中断服务程序读出计数器的值得到高电平所占的时间和,并且对每一个感应块进行重复和连续的扫描,用得到的计数值作为基本的数据进行有效的处理。这些处理主要包括建立和更新Baseline,得到当前的计数值和Baseline的差,判断这个差是否超过设定的阈值和给出某个或几个感应块被触摸的信息。模块软件以 多个API函数的方式给出,方便用户调用。

用CapSense CSD模块实施触摸感应有诸多优势,但它需要占用三个数字模块和三个模拟模块。而CY8C21x34芯片只有四个数字模块和四个模拟模块,如果要实施CapSense Plus,CY8C21x34的模块资源显得有些捉襟见肘。然而由于PSoC的周边资源是通过数字模块和模拟模块的方式给出,并且这些模块的功能可以由用户自己定义和配置,这就给实现动态重配置CY8C21x34芯片的周边资源带来可能,使CY8C21x34的数字模块和模拟模块可以实施一块二用或一块多用。所以我们可以使用动态重配置实施CapSense Plus,使CY8C21x34芯片的资源有更高的利用率,系统的成本也为之降低。

动态重配置及实施

类似通信中使用“时分复用”技术,动态重配置也是使PSoC的数字模块和模拟模块实施时分复用,即在同一个应用项目中不同的时刻同一个或几个模块有不同的功能。动态重配置并不局限于双重配置,它允许用户实施多重配置,动态多重配置可以大大提高PSoC的模块资源的利用率。但通常来讲,动态多重配置的实施取决于具体的项目和设计工程师的想象力以及对多任务程序设计的驾驭能力。

事实上,PSoC Designer集成开发环境已经为用户实施动态重配置创造了良好的条件,在进入PSoC Designer的Device Editor环境时,它为用户提供一个基本的模块配置平台。当用户在这个平台上完成了基本的模块配置以后,通过点击Add Loadable Configuration按钮,即会出现一个新的模块配置平台。在这个平台上可以实施第一重的模块配置。再点击Add Loadable Configuration按钮,又会出现一个新的模块配置平台,在这个平台上可以实施第二重的模块配置….. (图4)通常将不能时分复用或不需要动态重配置的模块放在基本的模块配置中进行配置,而将需要时分复用的模块按其功能要求实施重新配置。配置完毕,并且所有模块参数也设置完毕,点击Generate Application按钮即可生成所有模块的API函数和供用户调用。同时在生成的库函数中也包含了各个配置的列表和装载、卸载各个配置的函数。在用户程序中正是使用这些装载、卸载配置的函数来轻松地实施各个模块配置之间的切换。

图4:实施动态重配置示意图。
图4:实施动态重配置示意图。

通常在程序开始要先调用基本的模块配置,在使用某一个功能块任务时调用这一个功能块相应的模块配置。在这一个功能块的任务完成以后,要切换到另一个模块配置实施相应的任务之前,必须先卸载当前的模块配置,然后再调用新的模块配置。通过这种反复不断地装载、卸载配置函数的调用,使PSoC的某些模块资源在不同的时刻发挥不同的作用和功能。

图5:包含调用基本配置和重配置的主程序流程图。
图5:包含调用基本配置和重配置的主程序流程图。

  

动态重配置的应用实例

在这个例子中,使用CY8C21434实施四个触摸感应键的检测,并将对应的感应键状态在P2.0~P2.3输出控制4个LED灯。同时通过P1.1口输入电压来控制P2.6上的LED的亮度。触摸感应键的检测使用CapSense CSD用户模块,它需要占用三个数字模块和三个模拟模块;输入电压的检测使用一个10位的ADC,它需要占用一个数字模块和两个模拟模块;LED灯的亮度控制使用一个PWM控制,它需要占用一个数字模块。总共需要5个数字模块和5个模拟模块。但是,CY8C21434仅有4个数字模块和4个模拟模块。利用动态重配置解决了模块资源不足的问题。

首先在基本配置中放置PWM模块并将其输出引到P2.6,再在第一重配置中放置ADC模块,将输入连到P1.1,再在第二重配置中放置CSD模块并设定四个感应键的Pin脚和相关参数,4个LED灯由程序通过IO口直接控制。下面是实施上面所说功能的主程序流程图。所有被调用的函数均由系统生成并位于相应的库函数中。

本文小结

触摸感应正在越来越多的应用中被广泛采用,而电容式触摸感应技术已经成为触摸感应技术的主流。在电容式触摸感应技术的实施中,动态重配置可以使PSoC模块资源得到更充分的利用。使实施CapSense Plus成为可能。它也给PSoC的应用设计工程师带来了更多的想象空间和创造独一无二的设计的机会。

这个版主不太冷 =========================== 我的中电网博客:http://blog.chinaecnet.com/u/20/index.htm
返回列表