微控制器

MCU 产品

MCU 设计支持

入门

消除现实世界中超低功耗嵌入式设计的隐患

作者:Mark E. Buccini,德州仪器

目前,工程师的任务之一是开发基于低成本微控制器 (MCU) 的超低功耗嵌入式应用,此类应用通常要求用一颗电池维持数年的工作。在从家用自动调温器到个人医疗设备等此类超低功耗应用中,设计人员必须仔细考虑每一微安电流。本文主要探究功耗去向以及如何消除往往在项目的最后时刻才会显露的隐患。

在典型的基于超低功耗 MCU 的应用中,有效占空比极低。在下,绝大多数时间处于待机模式下,只保持实时时钟功能。此类例子包括数秒钟才测一次温度的电子自动调温器以及一天只启动几次且每次运行不超过 1 分钟的便携式血糖监测仪。但是一旦有需求,系统必须即时进行处理。

应当牢记的是,基于 MCU 的超低功耗应用必须提供如下性能:

  • 尽可能低的待机功耗;
  • 必要的卓越性能;
  • 在工作模式间能够快速切换。

理想的电池

便携式仪器使用的电池对系统的工作寿命有很大的影响。最常见的方法是使用一对标准的 1.5V‘AAA’碱性电池。另一种既能使成本最小化又无需更换电池的解决方案是永久安装的单体钮扣锂电池。永久电池概念是一个重要的市场卖点,这种电池能够避免客户服务及因更换电池时安装不当所引起的相关责任。

假设有一个最小供电电压为 2.7V 的电池供电仪器,它的待机模式决定了平均电流,其值通常在 2μA 以内。在使用一对‘AAA’电池供电时,则需要一个 20uA 以内的稳压器对此类电池的线性放电进行补充。因而,系统的总电流消耗为 22μA 即 MCU 与稳压器之和。串联的 2 节碱性电池放电至 2.7V 电压时,只有 40% 的电池容量能被利用,产生大约 400mAh 的电量。在除以 22μA 的平均电流消耗之后,我们就可以计算出采用这种碱性电池供电,系统可以运行 2 年。

与之相反,锂电池具有平坦的放电特性,使得其电池容量几乎可以得到完全利用,而无需进行漏电流调节。例如,一颗普通的 220mAh钮扣锂电池 CR2032,其放电量可以达到 90%,输出电压几乎恒定为 2.8V。总的系统电流消耗为 2μA(即只有 MCU 的电流消耗)。采用这种解决方案,一颗电池就可以使系统运行 10 年以上。由于具有超长的工作寿命,此类仪器往往可以设计成一次性设备,10 年后,该仪器完成了它的使命,同时也变得陈旧或过时。

时钟控制是关键

超低功耗应用中经常采用双振荡器方案。一个总是保持开放状态的 32kHz 的钟表晶振用于低频辅助时钟 (ACLK),通常只为定时器与实时中断功能提供时钟源。一个能够‘快速启动’的高频主时钟 (MCLK) 振荡器只有在 CPU 与系统需要时才启动,且其唤醒时间一般小于 10 微秒。

不过,了解哪些时钟需要快速启动,哪些时钟不需要快速启动是很重要的。

常见的陷阱是二级系统时钟唤醒,其最初仅向 CPU 与系统提供 ACLK,而 MCLK 则保持稳定(1 毫秒即可启动)。有时为系统提供快速启动的 MCLK(但不稳定),但其不稳定性会给可用性造成不利影响。例如,如果要求采用 19200 波特 UART 协议下载数据(这种操作可以随时进行),这就要求每隔 52μs 准确接受一个比特。但 ACLK 的频率不足以为 UART 提供足够的波特率调制。如果将二级启动的高速 MCLK 用于 UART,结果将会造成无法预测的波特率并会丢失字符。在此情况下,MCLK 稳定下来之前 MCU 必须使系统处于等待状态。

进入与退出低功率模式并快速处理数据的能力至关重要,否则 CPU 就会在等待时钟稳定过程中浪费功率。高速系统时钟可能能够快速启动并立即稳定下来。

外设功耗

在设计基于 MCU 的超低功耗应用时还必须考虑到外设的功耗。大部分 MCU 都具有启动单个外设与时钟源的能力,以节省功耗。仅在需要时启动某个外设与时钟是降低功耗的基础。
但是我们需要细心检查两个与外设控制相关的领域,即欠压保护和端口引脚漏电流。

大部分 MCU 都集成了欠压保护功能,其可在电源电压降低到安全工作范围之外时重启系统,以避免无法预料的事件发生。MCU 通常还能启用或禁用欠压保护功能以节省功耗,但是欠压保护必须始终处于开启状态,这是因为欠压是无法预测的。

端口引脚漏电流有时会被忽视,但这个问题必须考虑。许多老式的 MCU 的限定输入引脚漏电流为 1 µA。而这对于一个具有 20 个输入端口的器件来说会消耗 20µA 的电流!但专为低功耗设计的 MCU 允许最大不超过 50nA的漏电流。

架构影响

在项目开始之前,我们通常需要执行一系列专用基准,以分析指定架构在代码密度与周期数量方面的整体效率。通过这个步骤,设计人员应当检验关键的可重入代码路径,以便深入了解可能架构对具体应用产生的影响。

处理集成 A/D 转换器外设的中断服务程序是可重入代码的一个好例子。 1 说明了可同时在工作文件型 8 位 RISC CPU 与基于寄存器的 16 位 RISC CUP 架构中传输 10 位 A/D 数据所需的指令。8 位架构采用单个工作文件累加器,数据必须通过该工作文件累加器进行传输。此类架构与基于 16 位寄存器的 CPU 相比需要更多的 CPU 开销,因为后者允许直接存储器对传输进行存储。从此例可以看出,16 位架构所需代码更少,功能执行速度快 4 倍,从而缩短了运行时间,降低了功耗。

上述 A/D 转换器实例仅对 CPU 处理数据能力的差异进行了对比。而同样重要的是 A/D 转换器外设具备可以降低服务需求的特性。如自动通道扫描、基于定时器的SOC 触发器以及转换输出的直接传输等特性可以将 CPU 开销基本上降低至零,从而有效地将功耗降低至仅为 A/D 转换器自身的功耗。

最终清单

针对具体应用选择超低功耗 MCU 将是一件耗时而又困难的工作。花些时间来了解各种 MCU 的架构特性,可以使设计满足苛刻的功率预算要求。

以下清单为实现基于超低功耗 MCU 的设计提供了部分指导原则。

  • 考虑采用永久锂电池;
  • 采用多种工作模式;
  • 尽可能降低待机功耗;
  • 采用即时启动且稳定的高速振荡器;
  • 在功率预算中考虑欠压保护功能;
  • 兼顾端口引脚泄漏;
  • 采用可最小化每项任务周期数 (cycles per task) 的 CPU;
  • 提供可以降低开销的智能外设。