打印

使用CY8C22X45系列PSoC设计低功耗触摸按键应用系统

[复制链接]
3221|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
Go_PSoC|  楼主 | 2010-12-13 12:09 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
使用CY8C22X45系列PSoC设计低功耗触摸按键应用系统http://www.**/article/108471.htm
作者:陈晓霖 胡泊 Cypress主任应用工程师 2Cypress应用工程师  
1. 引言
  电容式触摸按键已经在越来越多的电子产品中得到应用,相对于传统机械式按键,电容式触摸按键可以增加产品外观设计的灵活性,提高按键使用寿命,为用户带来全新的零压力触控体验,从而提升产品的品质。因此,稳定可靠的触摸按键技术也益发变得重要。
  CypressPSoC系列产品具有高效可靠的触摸按键技术——CapSense,很多电子产品皆已使用该技术实现触摸按键PSoC(可编程片上系统)是Cypress半导体生产的包含有8位微处理器核和数字与模拟混合信号阵列的可编程片上系统。其应用领域与8位的MCU相同。区别于8位的MCU,PSoC的数字资源(如定时器、PWM、UART等等)和模拟资源(放大器、比较器、滤波器等等)以数字模块和模拟模块的方式给出。不同型号的PSoC芯片的差异主要在于其拥有的数字模块和模拟模块的数量的不同。用户可以根据自己的需要来定义这些模块。所有这些预定义的模块被称之为用户模块(User Module)。PSoC的开发IDE——PSoC Designer也为用户提供这些用户模块的API函数供用户编程时调用。
  由于PSoC可以同时处理模拟信号和数字信号,并且它的数字模块和模拟模块资源可以由用户配置,所以与MCU相比有更好的弹性和更高的集成度。这些性能使得它适合便携式设备的触摸按键应用。但便携式设备的触摸按键应用通常要求芯片有低的功耗,这就需要工程师深入细致的了解PSoC诸多特性。本文即针对应用工程师的需求,以Cypress CY8C22545 产品系列为例,分析了芯片资源配置对功耗的影响,然后讨论了PSoC低功耗固件代码的实现方法,从而为应用工程师提供快捷直观的技术参考。
  2. PSoC芯片资源配置
  每个型号的PSoC芯片都包含一些全局资源配置,表格 1列出了CY8C22545产品系列一些常用的全局资源。
  其中Power Setting,CPU Clock,SysClk*2,VC1,VC2和VC3参数的选择对功耗有着至关重要的影响。下面以CY8C22545产品系列为例,测试不同参数配置对功耗的具体影响。测试时未涉及的全局参数采用表格 2中的默认设置。测试时不添加任何数字模块或模拟模块,所有的GPIO也都设置为高阻态(High Z),不接受任何模拟和数字输入,也不产生任何输出,此外,在固件主函数中通过死循环使CPU一直处于工作状态。
首先测试Power Setting对功耗的影响,表格 3列出了Power setting对工作电流的影响,从表中可以看出,工作电压越高,系统时钟越快,工作电流越大,且其变化对工作电流的影响较大。系统时钟为24MHz时,电压从5V变为3.3V,工作电流减少约43%;电压为5V时,系统时钟从24MHz变为6MHz,工作电流减少约63.2%。
  SysClk*2是PSoC芯片内部对系统时钟2倍频后的一个时钟源,可以作为所有数字模块和模拟模块的时钟输入。从表格 4的测试结果可以看出,如果没有使用该时钟源,可以将其停用,以减少系统工作电流。
  表格 5列出了不同的CPU Clock选择对工作电流的影响,CPU Clock越慢,工作电流越小,但是与Power Setting相比,其影响较小,以5V电压,24MHz系统时钟为例,工作电流最大值11.33与最小值7.81相比,减少了约31.1%。
  表格 6列出了不同的VC1,VC2,VC3设置对工作电流的影响,各个分频器的输出频率越低,系统工作电流越小,但是VC1,VC2,VC3对工作电流的影响已比较微小。
3. 开发低功耗的固件代码
  实际上,除了设置适当的芯片参数,固件代码的编写对系统功耗也有着重要影响。PSoC具有良好的可配置性能,其数字模块和模拟模块可以配置成不同的功能模块,根据应用需求,仅在使用时才将其使能,否则一直让其停止工作,即可减少系统的工作电流。
  和大多数芯片一样,PSoC也提供低功耗休眠模式,有些型号的PSoC可以提供低至0.1uA的休眠电流。休眠时系统时钟以及所有由系统时钟驱动的功能模块都会停止工作,但是由32K时钟驱动的模块仍会继续工作。PSoC内部包含一个休眠定时器(Sleep Timer),通过设定其超时时间并使能,PSoC即进入休眠模式,直到被休眠定时器的超时中断唤醒,除此之外,PSoC休眠中也可以被GPIO的中断,低电压检测中断,模拟模块产生的中断和由32K驱动模块产生的中断唤醒,因此进入休眠前需要清除所有等待中的中断,否则PSoC无法进入休眠模式。
  如果在全局资源里设置好了Sleep Timer的周期,那么仅需两行代码即可让PSoC进入休眠模式,第一行代码使能Sleep Timer中断,第二行代码令PSoC进入休眠模式。
  INT_MSK0 |= INT_MSK0_SLEEP;
  M8C_Sleep;
  大多数PSoC提供了4种固定的休眠间隔(表格 7),芯片内的Watchdog周期是当前休眠间隔的3倍,如果同时使用休眠和Watchdog,需要在代码中的适当位置清除Watchdog计数器,以防系统超时重置。
  可以通过多次使用M8C_Sleep来获得更长的休眠时间,例如,如果休眠时间为125ms,下述代码可以获得约375ms的休眠时间。
  M8C_Sleep; M8C_Sleep; M8C_Sleep;
  系统的平均电流取决于工作时间,工作电流,休眠时间和休眠电流,其关系可以通过下面的公式表示
  大多数触摸按键应用都可以在系统空闲时进入休眠状态,但是必须可以通过触摸某个或任意一个按键将系统唤醒。传统的机械按键方案仅需将所有按键连在一起作为一个中断源唤醒MCU即可,但是对于触摸按键技术,都是依靠主动扫描按键信号来获得按键触发状态。因此,设计者需要编写固件代码来实现可靠有效的低功耗休眠。图 1给出了一种典型的休眠模式工作流程。在进入休眠前,设计者需要将PSoC内部所有休眠时不用的数字模块和模拟模块停止工作,以获得最低的休眠电流,然后根据应用的具体需求,选择适当的休眠时间,之后使能数字模块和模拟模块,扫描按键并判断是否唤醒系统。
  对于扫描按键并判断是否唤醒系统,PSoC也存在着三种不同的方式。
  除了全局芯片参数的设置,不同型号的PSoC内部还有数目不等的数字模块与模拟模块,如果这些模块被配置成具体的功能模块,如PWM,SPI Master等,这些功能模块还会引入额外的工作电流。需要注意一点,上述的测试结果没有引入任何的数字与模拟模块,因此针对实际的应用,工作电流还需要在上述结果基础上增加功能模块带来的额外电流。
  3. 开发低功耗的固件代码
  实际上,除了设置适当的芯片参数,固件代码的编写对系统功耗也有着重要影响。PSoC具有良好的可配置性能,其数字模块和模拟模块可以配置成不同的功能模块,根据应用需求,仅在使用时才将其使能,否则一直让其停止工作,即可减少系统的工作电流。
  和大多数芯片一样,PSoC也提供低功耗休眠模式,有些型号的PSoC可以提供低至0.1uA的休眠电流。休眠时系统时钟以及所有由系统时钟驱动的功能模块都会停止工作,但是由32K时钟驱动的模块仍会继续工作。PSoC内部包含一个休眠定时器(Sleep Timer),通过设定其超时时间并使能,PSoC即进入休眠模式,直到被休眠定时器的超时中断唤醒,除此之外,PSoC休眠中也可以被GPIO的中断,低电压检测中断,模拟模块产生的中断和由32K驱动模块产生的中断唤醒,因此进入休眠前需要清除所有等待中的中断,否则PSoC无法进入休眠模式。
  如果在全局资源里设置好了Sleep Timer的周期,那么仅需两行代码即可让PSoC进入休眠模式,第一行代码使能Sleep Timer中断,第二行代码令PSoC进入休眠模式。
  INT_MSK0 |= INT_MSK0_SLEEP;
  M8C_Sleep;
  大多数PSoC提供了4种固定的休眠间隔(表格 7),芯片内的Watchdog周期是当前休眠间隔的3倍,如果同时使用休眠和Watchdog,需要在代码中的适当位置清除Watchdog计数器,以防系统超时重置。
  可以通过多次使用M8C_Sleep来获得更长的休眠时间,例如,如果休眠时间为125ms,下述代码可以获得约375ms的休眠时间。
M8C_Sleep; M8C_Sleep; M8C_Sleep;
  系统的平均电流取决于工作时间,工作电流,休眠时间和休眠电流,其关系可以通过下面的公式表示
  大多数触摸按键应用都可以在系统空闲时进入休眠状态,但是必须可以通过触摸某个或任意一个按键将系统唤醒。传统的机械按键方案仅需将所有按键连在一起作为一个中断源唤醒MCU即可,但是对于触摸按键技术,都是依靠主动扫描按键信号来获得按键触发状态。因此,设计者需要编写固件代码来实现可靠有效的低功耗休眠。图 1给出了一种典型的休眠模式工作流程。在进入休眠前,设计者需要将PSoC内部所有休眠时不用的数字模块和模拟模块停止工作,以获得最低的休眠电流,然后根据应用的具体需求,选择适当的休眠时间,之后使能数字模块和模拟模块,扫描按键并判断是否唤醒系统。
  对于扫描按键并判断是否唤醒系统,PSoC也存在着三种不同的方式。
  Ø 固定按键唤醒系统
  采用固定按键的方式唤醒系统能有效的降低系统扫描按键的时间。系统无需扫描所有的按键,只需扫描固定的一个按键,这可以大大降低在待机状态下扫描按键的时间。
  Ø 任意按键唤醒系统
  如果系统要求任意按键唤醒系统,那么以上介绍的固定按键唤醒系统方法不能满足。Cypress特有的内部模拟总线的方式,可以将全部的按键组合成一个“大按键”。这样系统待机时,只需要对这个“大按键”扫描一次,就能判断是否有手指触摸到任何按键上。不论任何一个按键被手指触摸,都可以唤醒系统。系统唤醒后,将“大按键”分解,进行正常的按键扫描处理,区分哪个按键按下,进行任务处理。使用这种方法,系统的待机平均电流与使用固定按键唤醒系统的方法相同。
  Ø 手指接近唤醒系统
  手指接近唤醒系统是Cypress的一项成熟的技术。此方法是建立在任意按键唤醒系统方法基础之上的。在系统待机时,也是使用一个“大按键”进行扫描。与上个方法不同的地方在于:不是当手指触摸到键盘时唤醒系统,而是当手指靠近键盘时就唤醒系统。系统唤醒后立即将“大按键”分解为正常按键,进行按键扫描。相对于任意按键唤醒系统方法,这种方法能加快系统对按键的相应速度,还可以使产品具有更加丰富的功能特性。
  4. 总结
  本文从芯片参数配置和固件开发两个方面,详细分析了影响PSoC功耗的硬件因素,以及如何实现低功耗的休眠模式和唤醒方式,从而使得设计工程师可以参考本文方便快捷的开发低功耗的触摸按键应用。
  参考文献
  [1]. AN2398: Low Power CapSense® Design using CY8C22x45,Cypress Semiconductor Ltd.
  [2]. AN2360: Capacitive Sensing-Power and Sleep Considerations, Cypress Semiconductor Ltd.
  [3]. Datasheet of CSD2X User Module, Cypress Semiconductor Ltd.
  [4]. CY8C22x45 Technical Reference Manual, Cypress Semiconductor Ltd.
  [5]. Datasheet of CY8C22x45, Cypress Semiconductor Ltd.
沙发
zhuww| | 2010-12-13 22:34 | 只看该作者
不错的**

使用特权

评论回复
板凳
hero9968| | 2011-1-3 16:37 | 只看该作者
太有才了,把**帖这儿!:lol

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

898

主题

5336

帖子

15

粉丝