一种低功耗触摸按键应用的设计方法

时间:2009-11-05

  引言

  触摸式按键随着iPod等消费类电子的流行而迅速发展,这一方面因为相关技术的不断进步,可以提供更加稳定的性能;另一方面也因为同类电子产品的基本功能趋同,生产商更加关注如何为用户提供舒适、便捷、具有创意的人机交互界面。在这一点上,与传统机械式按键相比,触摸式按键有着其无法比拟的巨大优势。

  现有市场上的触摸式按键方案,其工作原理都是检测手指触摸引起的电路微小变化量,进而将其转化为逻辑上的按键开关操作。在诸多检测方法中,又以电容式检测居多,这种检测方法在扫描时需对电容的充放电,因此不可避免会增加产品功耗。对于一些功耗敏感的应用来说,如何实现低功耗的触摸按键是关键技术环节。

  Cypress作为电容式触摸按键芯片领域的,一直致力提供高效、可靠、贴近用户需求的芯片与解决方案。本文即基于Cypress的CY8C22x45系列芯片,介绍了一种低功耗触摸按键应用设计方法。

  2.低功耗设计方法

  如图 1所示,对于电容式触摸按键,手指的触摸会改变感应电容Cx,当检测电路对Cx充放电时,Cx值的变化会引起电路信号变化,通过一定的检测电路可以测量出该变化,从而判断手指是否存在。不过,系统整体功耗因为频繁的扫描Cx的大小而增加。

  对于输入电压一定的系统来说,其功耗主要取决于平均工作电流,即

  Powerave = Vdd * Iave[2]         公式1

  其中,Vdd是系统工作电压,Iave是系统平均工作电流。从公式1中可以看出,系统的功耗由系统的平均工作电流决定。降低平均工作电流的方法通常有两种:种是在不改变系统有效工作时间的前提下降低系统的工作电流;第二种减少系统的有效工作时间,增加系统的休眠时间。往往只采用种办法不能将平均工作电流降低到一个理想的水平,所以需要结合第二种的方法。在触摸按键系统的实际工作中将,相当一部分时间系统处于无任何按键按下的空闲状态。在这段时间内可以用软件将系统配置为休眠模式。触摸按键芯片一般都提供休眠模式,该模式具有很低工作电流。因此,如果能够合理安排系统工作时间,令其空闲时进入休眠模式,就可降低平均工作电流,从而减少系统功耗。

  图 2是一个具有休眠功能的典型系统软件流程图。

  系统初始化后进入休眠模式,经过一段时间的延时后唤醒扫描按键模块,进行按键扫描。如果有按键按下,软件判断是否有效。如果无效按键按下,那么系统继续进入休眠模式。如果软件判断按键有效,那么唤醒系统,触发任务处理进程。当处理完所有任务后,系统又重新进入休眠状态。这是个典型的具有休眠功能的系统工作流程图,它的优点就是此软件流程简单易懂、容易实现,一般可以满足大多数场合的应用。但是,如果系统任务处理消耗了较多的CPU处理时间,那么为了达到目标平均工作电流,就需要相应增加休眠时间。同时降低了按键扫描的频率,从而加长了系统唤醒的响应时间。因此,此方法适合比较简单的、系统任务不复杂的应用。

  图 3是一个具有休眠功能的复杂系统软件流程图。

  此方法是将以上方法中的任务处理进行分解,分为触发新任务,处理任务。目的就是减小在每个循环周期内部执行任务的所花费的CPU资源。与上一个方法的不同在于:系统唤醒扫描按键程序,当判断按键有效时,触发新任务,并不是将所有的任务处理完毕。在当前的循环周期内,触发的新任务可能没有处理完毕,需要下一个或者更多个系统循环的时间才可以完成。当判断按键无效时,不是马上进入休眠模式,而是判断是否有没有处理完毕的任务。如果有则继续处理;如果没有则进入休眠模式。此方法可以处理比较复杂的任务,能满足更多应用领域的需求。

  如果没有有效按键触发,那么系统工作在的省电模式。不论哪种方法,系统平均工作电流可由公式2计算得出。

  Iave =(Tscan * Iscan + Tsleep * Isleep) / (Tscan + Tsleep)        公式2

  其中,Tscan是扫描按键所需时间,Iscan是按键扫描时的工作电流,Tsleep是休眠时间,Isleep是休眠时的工作电流。Isleep会远远小于Iscan。一般来说,为了保证一定的按键灵敏度,Iscan可调整的空间有限,因此较快的扫描速度,较小的休眠电流,较长的睡眠时间是降低系统功耗的关键。

  在实际设计中,考虑的因素更为复杂,除了上述之外,还需考虑按键的响应时间和按键的灵敏度、等。休眠时间决定了系统的响应时间,对于相同的Iave,Iscan和Isleep,较长的Tscan会引起Tsleep的增加,从而无法满足系统的响应时间;如果减少扫描时间,可能会无法有效减少系统噪声影响,降低信噪比,影响按键的灵敏度。因此,低功耗触摸系统设计需要灵敏,可靠,快速的触摸按键扫描技术。

  3. 基于CY8C22x45的低功耗设计实例

  Cypress的CY8C22x45系列PSoC?芯片可以有效的实现上述目标。该系列芯片内部包含一个独立硬件实现的CapSense触摸按键扫描模块CSD2X[3],多可以扫描37个触摸按键。该模块具有两个硬件扫描通道,可以同时完成位于两个通道上一对按键的扫描,提高了按键扫描速度。该模块包含内置的Cx充电电路,结合Cypress的按键基线算法[4],可以在快速扫描按键的同时,有效降低噪声影响。

  此外,该系列PSoC?芯片包含8个数字模块和6个模拟模块,提供多38个通用I/O, 16Kbyte Flash,1Kbyte的SRAM以及其它一些片上资源,包括10位SAR ADC,电压参考源(VDAC),I2C通信模块,硬件实时时钟(RTC)[5]。硬件实现的触摸按键扫描模块和丰富的数字、模拟模块资源,使得可以用一块CY8C22x45芯片实现触摸按键功能和系统主控操作。

  CY8C22x45系列芯片休眠时的工作电流仅有3 uA[5],芯片内包含一个休眠计数器,系统进入休眠后计数器开始递减,当计数值为零时产生中断唤醒系统。唤醒系统后可以不做任何处理再次进入休眠模式。这样周而复始,达到所需要的整个休眠时间。在实际设计中,常常使用平均休眠电流替代公式2中的Isleep,即在每次休眠结束后,仅让系统正常工作短时间,该时间内完成所有必须操作(仅是循环判断),此时的电流即为该休眠时间下的平均休眠电流。表 1 列出了常用休眠时间的平均休眠电流。


   图 4是一个触摸按键应用中典型的按键波形,每个按键按下后,系统都需输出对应的电压值以供其他系统检测。该应用要求响应时间小于等于40ms,当按键被长按时,需要一直输出按键电压,即使按键释放后,仍需250 ms时间保持原有按键电压,之后停止输出按键电压,进入空闲状态。系统共包含12个触摸按键,当多个按键被同时按下时,系统不响应。系统低功耗设计要求为,系统待机时没有按键操作的平均电流应至少小于1 mA。

  使用示波器可以测出系统扫描12个按键所需时间大约为1.388 ms。同时,可以测量到正常工作状态下系统的工作电流大约为6mA。根据公式2以及表 1,若休眠1.92 ms,需要连续休眠5次(9.6 ms),才可以得到低于1mA的平均待机电流,约为0.875mA;若休眠15.6 ms,休眠即可满足要求,平均待机电流约为0.52mA。实际工程中采用了第二种休眠方式,实际测量到的平均待机电流值为0.565mA,与计算值相近。

  4. 降低功耗和唤醒方式的进一步讨论

  以上实例中系统的平均待机电流是0.565mA,虽然这个功耗满足了系统的设计要求,但是在很多使用电池供电的场合是不行的。这是因为在待机时,系统扫描全部12个按键,用去了1.388ms的时间。如果能减小扫描按键的时间,那么还能够降低系统的待机功耗。

  l 固定按键唤醒系统

  采用固定按键的方式唤醒系统能有效的降低系统扫描按键的时间。系统无需扫描所有的按键,只需扫描固定的一个按键,这可以大大降低在待机状态下扫描按键的时间。以上述的应用为例,CY8C22x45系列PSoC支持双通道并行扫描,12个按键均匀分布在两个通道上,因此扫描一个按键约为0.231 ms。 如果休眠15.6 ms, 可以计算出此时平均待机电流只有0.113 mA,相比之前的0.52 mA的计算值,仅是其21%。如果休眠时间增加至40ms, 从表 1可以推算出此时平均休眠电流约为9 uA, 此时计算出平均待机电流仅为0.043 mA。

  l 任意按键唤醒系统

  如果系统要求任意按键唤醒系统,那么以上介绍的固定按键唤醒系统方法不能满足。Cypress特有的内部模拟总线的方式,可以将全部的按键组合成一个“大按键”。这样系统待机时,只需要对这个“大按键”扫描,就能判断是否有手指触摸到任何按键上。不论任何一个按键被手指触摸,都可以唤醒系统。系统唤醒后,将“大按键”分解,进行正常的按键扫描处理,区分哪个按键按下,进行任务处理。使用这种方法,系统的待机平均电流与使用固定按键唤醒系统的方法相同。

  l 手指接近唤醒系统

  手指接近唤醒系统是Cypress的一项成熟的技术。此方法是建立在任意按键唤醒系统方法基础之上的。在系统待机时,也是使用一个“大按键”进行扫描。与上个方法不同的地方在于:不是当手指触摸到键盘时唤醒系统,而是当手指靠近键盘时就唤醒系统。系统唤醒后立即将“大按键”分解为正常按键,进行按键扫描。相对于任意按键唤醒系统方法,这种方法能加快系统对按键的相应速度,还可以使产品增加丰富的功能特性。

  5. 结语

  应用Cypress的CY8C22x45系列芯片以及独有的CapSense技术,设计者可以用更快的时间扫描大量按键,用更长的时间让系统休眠,结合其较低的休眠电流,在保证系统可靠性能的同时,可以实现较低的待机功耗,为触摸按键应用的低功耗设计提供了一种良好的解决方案。


  
上一篇:浅析C#中异步和多线程的区别
下一篇:基于FPGA 的AES 加密算法的高速实现

免责声明: 凡注明来源本网的所有作品,均为本网合法拥有版权或有权使用的作品,欢迎转载,注明出处。非本网作品均来自互联网,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。

相关技术资料