当前位置: 华文世界 > 数码

浮思特| 选择最佳低功耗微控制器(MCU)

2024-01-17数码

设计低功耗微控制器(MCU)是一项复杂的任务,为特定嵌入式设计挑选合适的MCU同样充满挑战。涉及的应用特定考虑因素繁多,使得对比微控制器的技术规格成为一项艰巨的工作。

从系统架构的视角出发,为了确定哪些MCU真正符合「低功耗」的标准,设计师需要对半导体供应商提出的各种声明进行仔细筛选。由于不同供应商采用了不同且经常令人困惑的度量标准,这项任务并不简单。

MCU的电源消耗通常可以分为以下几个部分:

总耗电量 = 工作模式功耗 + 待机(休眠)模式功耗

然而,另一个需要考虑的重要标准是MCU从待机状态到工作状态的转换时间。 MCU开始执行有用的处理是在所有数字和模拟组件完全稳定并开始运行后,因此在计算总耗电量时,这部分(浪费的)能量也应该被包括在内:

总耗电量 = 工作模式功耗 + 待机(休眠)模式功耗 + 唤醒功耗

由于每个应用的需求不同,系统设计师可能会更关注这些元素中的某些。例如,像水表这样的应用,大部分时间处于待机状态,因此它们的长期工作周期显然需要非常低的待机功耗。而像数据记录器这样的应用,频繁地进入和退出工作状态,因此限制唤醒转换中消耗的时间变得至关重要。 值得注意的是,专门为MCU开发解决方案的制造商不会试图猜测哪个指标最重要,而是从底层开始设计,致力于最小化上述公式中的每一个部分。为此,需要强大的混合信号技术基础,以解决在模拟和数字领域最小化功耗所面临的架构级和电路级挑战。 探讨这些变量可以帮助突出系统设计师在选择最佳MCU解决方案时需要了解的问题类型。

工作模式功耗

对于CMOS逻辑门,动态功耗可以用以下公式表示:

工作模式功耗 = C x V^2 x f

其中C代表负载电容,V代表供应电压,f代表开关频率。

电容项取决于设计和处理技术,而频率项取决于应用的处理需求。然而,正如公式所示,供应电压对MCU总体功耗有着显著的影响。因此, 在MCU设计中加入电压调节功能可以通过为MCU电路提供更低的稳定供电,从而节省大量的工作模式功耗。 开关型转换器可能是一种解决方案,但它们最适合大电压转换比的调节环境。对于电池供电的应用(在电池寿命结束时,平均电压转换比较小,接近1:1),更好的解决方案可能是集成一个片上低压降(Low Drop Out, LDO)线性电压调节器,因为它以较低的复杂性和成本提供可接受的效率,而不是开关解决方案。

为了强调使用LDO调节器的优势,我们可以重新审视CMOS动态功耗方程:

工作模式功耗 = C x V^2 x f

= V x (C x V x f)

= V x I,其中动态电流I = C x V x f

动态电流通常对于频率1MHz和特定供应电压进行标准化。例如,一种新型的超低功耗MCU,在1.8V电压下的动态电流消耗为160µA/MHz。如果没有电源调节,当供电电压为3.2V时,这个数值会增加到(160) x (3.2/1.8) = 284 µA/MHz。使用LDO的情况下,电池电流在整个供应范围内都将保持在160µA/MHz。

正如所见,这种 高级电源架构可以在整个工作电压范围内保持恒定的工作电流,帮助系统设计师显著节省功耗。因此,对于系统设计师来说,确定MCU在整个工作电压范围内的电流消耗是非常重要的 ——而不仅仅是供应商经常引用的1.8V的最低工作条件。引用一个乐观的电流值,假设电压供应不低于典型值,这并不能准确反映真实世界中的应用环境。例如,在2 x AA/AAA和硬币电池应用中,电池在其生命周期的大部分时间内都是在接近初始3V的电压下工作的,如果仅引用1.8V的规格,可能会让人误以为MCU的功耗比经常引用的数值要高出约50%。

此外,由于功耗与开关频率成正比, 对于系统设计师来说,将引用的电流值归一化到每MHz的电流是很重要的。 将这两个因素结合起来,可以进行MCUs的并行对比,基于以下指标:

3V下的电流消耗/MHz

一些供应商可能会试图通过将「MHz」等同于系统时钟速度来混淆概念,而实际有意义的是指令时钟速度。这是误导性的,因为时钟速度可以以双倍(或更多)的实际指令速度运行,从而使功耗效率加倍(或更多)。因此, 需要确保所有数值都归一化到指令时钟速度。这样做,再加上使用典型的供应电压,可以正确推导出实际的工作模式电流消耗预算。

待机(休眠)电流

为了实现最大的能源效率(和电池寿命),需要确保MCU的每个任务在尽可能短的时间内完成,以尽可能低的电流和电压消耗最少的电能,让设备大部分时间都处于极低功耗的休眠模式。 在某些应用中,休眠模式的电流是影响总能源消耗的主要参数。然而,经常被忽略的一点是,MCU可以达到的最低休眠电流主要受到其漏电流的限制。 例如,一个有20个输入的设备,如果每个输入的漏电流规格为100nA,那么在休眠模式下可能会消耗高达2µA的电力。

漏电流受多种因素影响,但最重要的是采用的底层工艺技术。有时,供应商会选择使用0.25或0.35微米的工艺技术来减少漏电所引起的休眠电流,但这种选择会导致更高的工作电流。在其他情况下,MCU供应商可能会选择使用0.18微米或更小的工艺技术以减少工作模式电流,但这会带来更高的漏电电流。 解决这一问题的独特方法是,无论采用何种底层工艺技术,利用混合信号专业技术实现一个专门设计的高级电源管理单元(PMU),以限制漏电,并实现超低休眠电流。

在采用0.25微米或更小的工艺技术时,要实现最小的休眠模式电流,需要切断给数字核心的电源。 在休眠模式下运行的模块,如电源管理电路,I/O垫环元件和实时时钟,必须从未调节的电源电压运行,以避免在LDO中消耗额外的电流。 切断数字核心电源也可以防止其关态漏电导致的休眠模式电流;然而,MCU需要在休眠模式下保留所有RAM内容和所有寄存器状态,以便代码执行能够恢复到中断点。 这种保留可以通过一种非常低电流的休眠模式锁存偏置方案实现,或者使用特殊的保持锁存,这些锁存在休眠模式下无显著漏电。 MCU还需要一种形式的连续供电电压检测(即「断电检测」),如果供应电压下降到最小保持电压以下,则复位设备,因为这可能导致状态损坏。

因此,从系统设计师的角度来看,检查底层漏电流规格非常重要,以确定哪些MCU供应商利用他们的混合信号专业知识来解决这个复杂问题。设计师还应该意识到,大多数供应商提供多种不同的待机电流选项。大多数供应商强调他们的最低休眠模式电流,这通常是在实时时钟和断电检测器被禁用时的电流。有些供应商甚至会引述关机模式电流,这种模式不保留内存,并需要重置才能唤醒,这通常并不实用。因此, 由于大多数应用需要完整的RAM和寄存器保持,对于系统设计师来说,基于以下度量标准进行比较是很重要的:

- 休眠/待机模式下的电流,实时时钟和断电检测器禁用(保持RAM)

- 待机/休眠模式下电流,实时时钟禁用,断电检测器启用

- 待机/休眠模式下电流,实时时钟和断电检测器都启用

这样,系统设计师就可以在计算基于其应用的工作周期的整个待机模式的电源预算时,使用正确的数值。

唤醒能量

正如前面所述,在使用休眠模式的系统中,唤醒MCU和准备它采集或处理数据时可能会浪费大量电源。实际上,在某些应用中,MCU从待机状态恢复时消耗的能量与完全处理数据时使用的能量相当。因此,设计MCU时要能够在极短的时间内唤醒并稳定,以最大限度地减少处于浪费电能状态的时间。

MCU应该能够从外部事件或内部定时器唤醒退出休眠模式。最灵活的周期性唤醒源是实时时钟,它既可以从外部晶体振荡器(对于需要精确计时的应用)运行,也可以从一个低频的内部振荡器(适合对精度要求不高的应用)运行。 避免使用启动慢的晶体振荡器作为高速系统时钟;一个精确、快速启动的片上振荡器是更好的选择。

此外, 由于许多产品定期唤醒以使用片上ADC采样输入,需要足够时间让数字电路唤醒,模拟电路稳定后才能开始有效测量。 模拟模块的启动行为可能对活动模式时间有重大影响;使用外部去耦电容的电压调节器或参考可能需要数毫秒时间才能稳定。有时,MCU供应商只引述数字电路的唤醒时间,而忽略了模拟电路稳定所需的时间。因此, 对于系统设计师来说,分析模拟电路和数字电路的整体唤醒和稳定时间,以计算这部分浪费电能的真实成本是非常重要的。

其他考虑因素

还有其他方式可以进一步减少系统中的功耗。例如,MCU通常可以在1.8V甚至更低的电压下工作(在这种情况下可能没有ADC功能;指令时钟频率降低),因此经常使用2 x AA/AAA电池配置。一种创新的减少功耗(和环境影响)的方法是将设计转换为单电池配置,其中电池可以一直使用到其寿命尽头(0.9V)。 为了实现这一点,MCU必须集成一个高度优化的直流-直流转换器 ,能够使用到电池的最低工作电压,对于碱性电池来说是0.9V。这种方法也可以节省供应商和/或消费者在电池上的开销。

减少功耗的另一种方法是使用高度集成的MCU,包括ADC、DAC和其他外设 ,因为应用可以控制启用和禁用这些外设。例如,有些MCU提供了专门的低功耗ADC,带有突发模式,该模式可以在CPU关闭时采取模拟测量,以进一步减少功耗。

对于大多数应用来说,可能最好的方法是简单地返回到初始的功耗方程,以便切入主题:

总功耗 = 工作模式功耗 + 待机模式功耗 + 唤醒功耗

每个应用将实际应用由待机功耗,工作模式功耗,和唤醒功耗等各种元素的组合影响,因此,系统设计师可能会发现,开始任何分析最有帮助的方式是把功耗数值系统地分解为上面的元素。 一旦得到了这些数值,系统设计师又可以考虑应用的工作周期——应用预期在待机,工作,和唤醒模式下,花费各比例的时间——以计算出平均功耗的数值。得到的数值应该给系统设计师一个近似的,可用来客观评价和对比MCU选项以达到最低可能的系统级功耗的值。