超低功耗嵌入式应用设计
扫描二维码
随时随地手机看文章
考虑到我们今天所生活的时代,嵌入式系统的便携性是十分关键的设计考虑因素。便携式系统通常用电池供电,而电池使用寿命取决于系统的功耗。在提倡“绿色环保”计划的今天,即便是市电供电的应用也要把功耗作为一项重要的产品选择标准。
便携式设备通常分为使用充电电池供电的设备和使用非充电电池供电的设备。如果应用使用的是非充电电池,那么电池使用寿命将是至关重要的规范要求。对于任何应用而言,电池使用寿命取决于:
●所用电池的可用电荷量
●应用的平均电流消耗
使用充电电池的应用还要考虑到另一个参数,那就是电池充电的频率和每次充电所花的时间。从最简单的角度说,延长电池使用寿命可通过提高电池容量或降低应用的平均电流消耗来实现。由于电池重量过大会影响系统的机械约束和成本,因此系统设计人员只能将电池电量提高到一个限值。在电池化学技术的全新发展不断提高电池电荷密度的同时,我们还亟需想办法继续降低平均功耗。
应用的平均功耗取决于:
●每个电路组件的功耗
●应用的供电方案以及电力如何通过栅极输送到设计的各个部分
●设计中的各个组件是如何在不同的工作条件下工作的
每个组件的功耗可从各组件的器件数据表获得。了解每个组件的功耗拆分信息非常重要,这有助于设计出色的系统,实现低功耗优化。
不妨来设想一个简单的小型电池供电数字时钟。该设备可用于计时,并在按下按键时能显示当前时间。设备通常处于断电模式以节电,只有在检测到按键动作时才会被唤醒并刷新显示屏。显示屏和主电路在工作一段时间后会返回断电模式以节电。该系统的高层次方框图参见图1。
图1:小型数字时钟的高层次方框图
电路采用RTC计时,用主控制器芯片与RTC通信,并管理显示屏界面。整个系统大部分时间处于断电状态,显示屏关闭,主控制器也处于断电模式,这样电流消耗可降到最低,所有外设都关闭。按键则作为唤醒设备的触发器,以获取RTC数据并在显示屏(通常为LCD)上进行显示。
要分析这种系统的功耗,要看的第一个数据就是设备和显示屏都处在断电模式下的典型平均电流是多少。应查看每个外设和控制器的数据表,以了解功耗数据。为了最大限度地降低功耗并延长电池使用寿命,应做到给所有不使用的外设断电。在本应用中,这个不使用的外设就是显示屏。与显示屏形成对比的是,RTC需要始终进行供电,以实现计时功能。
MCU通常是大多数系统中总功耗的主要来源。这一点同样适用于本案例中的应用,如果不能选择并适当使用正确的MCU时尤为如此。有很多办法可降低MCU的功耗,包括但不限于:
1.降低工作频率
2.以更低的工作电压运行
3.使用低功耗工作模式
MCU能在各种工作频率上运行。然而,不同器件支持的频率各不相同。MCU的功耗与工作频率成正比,随着频率的升高,动态功耗也会升高。因此,MCU应该以尽可能低的频率运行,同时能够可靠地满足系统的需求。
此外,频率也与时钟源有关。设备支持各种时钟源选项,包括内部高速振荡器、内部低速振荡器、外部晶体振荡器等。在大多数情况下,外部晶体可提高精确度,但代价是功耗较高。选择低功耗时钟源,往往要权衡速度和精确度。为选择适当的时钟源,确保系统性能和功耗的完美平衡,应该认真研究系统要求。
大多数MCU支持低功耗工作模式,从而满足低功耗系统设计的要求。同样,支持模式的数量以及每种模式的特性根据器件会有所不同。应适当使用低功耗模式,以降低平均功耗。常见的模式包括:
●工作模式:MCU正常运行。
●较低功耗模式:时钟经门控后送至MCU,保持各种寄存器和RAM的状态。
●最低功耗模式:包括MCU在内的所有外设都断电。
当时钟经门控后送至MCU时,功耗就是静态功耗。静态功耗取决于几个因素,包括亚阈值条件和FET中的隧道电流等。此外,隧道电流在小型芯片设计的FET缩减时会成为主要因素(即尺寸减小使得氧化物的厚度减小)。
今天,我们已经拥有在单芯片上实现完整系统/子系统高度集成的SoC.除了集成度之外,就功耗而言,这些SoC也有助于降低平均功耗,使其低于采用独立MCU和分立外设的情况。
五种电源模式的详细介绍
以下部分主要是介绍SoC以及如何提高其效率,从而有利于系统设计,降低功耗。
通常说来,SoC相对于传统MCU而言能支持更多低功耗模式。其原因在于SoC集成度高,有更多片上组件和多种电源配置,以支持不同的工作需求。电源模式的数量与每种模式下的可用资源根据器件会有所不同。举例来说,在某种低功耗模式下,某个器件能在仅保持寄存器和RAM内容的情况下给所有其它组件断电,而另一种器件则只是给CPU断电,而让其它资源继续运行。不同制造商会对这些模式采取不同的命名方法。在本文中,我们将以赛普拉斯的PSoC 4器件为例来详细介绍各种电源模式。[!--empirenews.page--]
以下电源模式也得到其它制造商的大多数设备的支持:
●工作模式
●休眠模式
●深度休眠模式
●冬眠模式
●停止模式
下面我们来看看这些电源模式的具体情况:
1.工作模式:在此模式下,CPU和所有片上其它资源都正常工作运行。该模式是系统整体功耗的最主要组成部分。在此模式下,如果不使用的话,可将芯片上的各种外设分别断电。
2.休眠:这是控制器另一种常见的电源模式。该模式主要与CPU有关。当CPU进入休眠状态后,其时钟移除。CPU这时对总功耗的唯一影响就是静态功耗,因为这时已经没有时钟开关切换工作,也就不会有动态功耗。ADC和比较器等其它外设在此模式下可用。
3.深度休眠:此电源模式下即便是系统时钟也被禁用,所以在此模式下所有高频资源都不可用。不过,这些资源的当前状态不受影响,也就是说CPU寄存器、SRAM等的当前状态不受影响。由于高频时钟被禁用,因此能节约开关消耗的功率。通常情况下,深度休眠模式提供低频时钟运行的选项,低频时钟可用来驱动定时器等低频资源。此外,该模式也允许开发人员使用I2C从设备等通信协议块,其无需器件自身生成时钟。由于进入此模式的主要方法就是禁用系统主时钟,因此这是可以实现的。然而,模块仍然可通电。该模式对功耗的影响主要在于片上所有时钟的静态功耗。
4.冬眠:在此模式下,所有时钟都关闭,包括低速振荡器。片上所有资源,除了用于外部事件触发唤醒的资源以外全都断电。由于本模式下几乎所有组件都断电,因此该模式能减少静态和动态功耗组件,从而实现最低功耗。
5.停止:顾名思义,停止模式就是所有外设断电,即使是RAM和CPU寄存器的内容也不保持。在PSoC 4等类似器件中,这种模式下仅保持IO引脚的状态。从这种模式下唤醒会进入芯片重启动。
当分析一款应用的功耗时,必须查看所有电源模式下的功耗情况。
必须明确某种模式下能提供唤醒源。举例来说,需要某种中断才能从休眠模式唤醒,在冬眠模式下则需要I2C地址匹配中断以唤醒器件。需要了解每种模式下有哪些资源工作,能提供什么唤醒资源。举例来说,系统中可用比较器中断作为唤醒源,在超出设定阈值情况下可用模拟输入唤醒系统。就图1所示的应用而言,唤醒需要采用GPIO中断或者甚至硬复位,因为RTC会随时运行,而且控制器不需要保持此前的状态。
冬眠和停止模式下,功耗可低至100nA.对于RTC本身而言,您会很容易找到功耗很低的RTC(仅消耗100-200nA)。假设控制器直接驱动LCD,我们可认为LCD的关闭状态功耗为零。
这就使得图1所示系统中的平均功耗在300nA的范围内。如果我们假设设计方案采用CR2032作为电源,电池容量约为225mAh.就300nA的电流来说,电池仅在器件始终处于断电模式下能支持70到80年的工作。
每次按下按键,控制器都会唤醒。这会将控制器的功耗提升到500μA-1mA的范围。假设功耗为1mA左右,控制器从RTC获取数据并显示在LCD上。控制器执行这项工作只需很短的时间,但显示屏要保持较长工作时间(假设说显示屏亮起10秒钟确保用户看到数据)。作为直接驱动LCD,控制器必须保持较长的工作时间,也就是要消耗更多电荷。在此情况下,赛普拉斯的PSoC4等器件可提供低功耗模式,能让设备关闭所有其它外设,仅运行驱动LCD所需的模块。在这种器件中,LCD驱动运行在特定的低功耗模式下,这种模式被称为数字关联模式。其结果就是大幅减少电流消耗。
图2:各种状态下的电流消耗
每次按键都会经历如图2所示的电流曲线。曲线下方区域是单次按键的典型功耗。消耗的电荷计算如下:
Q = (1mA*1ms) + (20μA*10s)
根据上面的数据,我们可计算出给定电源能支持多少次按键。
工作模式下所花的时长非常重要,因为这种模式下耗电最大。一个选项是让MCU保持工作模式,但CPU时钟速度较低,从而降低工作模式下的耗电。不过,这会导致更高的平均功耗,因为工作模式所花的时间取决于时钟频率。此时由于MCU必须处于工作模式,因此功耗取决于MCU处理数据所花的时间。更快速的MCU能很快完成任务,从而延长处于低功耗模式下的时间,也就能让系统减少功耗。系统设计人员可根据系统要求明确最佳配置。
在本系列文章的下一部分,我们将以更大型系统为例作讲解,并介绍如何降低平均功耗。此外,我们还将探讨一些降低平均功耗的系统级技巧。