新闻中心

EEPW首页 > 物联网与传感器 > 设计应用 > 使用CY8C22X45系列PSoC设计低功耗触摸按键应用系统

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

作者:陈晓霖 胡泊 Cypress主任应用工程师 2Cypress应用工程师时间:2010-04-28来源:电子产品世界收藏

  3. 开发低功耗的固件代码

本文引用地址:http://www.eepw.com.cn/article/108471.htm

  实际上,除了设置适当的芯片参数,固件代码的编写对系统功耗也有着重要影响。具有良好的可配置性能,其数字模块和模拟模块可以配置成不同的功能模块,根据应用需求,仅在使用时才将其使能,否则一直让其停止工作,即可减少系统的工作电流。

  和大多数芯片一样,也提供低功耗休眠模式,有些型号的可以提供低至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也存在着三种不同的方式。



评论


相关推荐

技术专区

关闭