通过集成特性平衡 MCU 的性能与功耗

开发人员早已能够访问处于低功耗工作状态的 MCU,从而通过关断外设甚至是内核本身来降低系统功耗要求。但是对于有些应用来说,开发人员需要更直接地控制功率消耗,以确保部分系统仍处于通电状态,从而满足某些关键性功能要求。

过去,设计人员要使用独立的电源管理器件来构建精确的功率控制。与此相反,Analog Devices ADuCM3029 MCU 提供的是集成式解决方案,可帮助开发人员更轻松地实现最高的性能,同时最大限度地减少为传感器数据采集、可穿戴电子设备和其他物联网 (IoT) 应用所构建的设计的功耗。

MCU 解决了电源管理问题

对于低功耗设计,工程师可以找到各种各样设计有节能选择的高级 MCU。面向功耗敏感型应用的器件通常具备诸如频率调节之类功能,让工程师能够以性能为代价换取更低的功耗。

通常,低功耗模式通过关断越来越多的 MCU 子系统来逐渐降低功耗,直到只有唤醒 MCU 所需的极少电路保持运行。超低功耗 MCU 添加了特殊的工作模式,可以单独管理器件内核及其外设的电源,从而进一步改进了电源管理。即使在这些情况下,这些特殊模式有时会将外设作为一个整体关断,或者使用给开发人员授予极少功率分配细节控制权限的自动化机制。

虽然 MCU 电源管理通常提供一系列低功耗工作模式,但转换为低功耗模式通常会导致功能急剧下降。在许多情况下,应用可以在有限期限内容忍功能损失。然而,在某些情况下,精确控制功耗对维持运行来说至关重要。Analog Devices ADuCM3029 处理器专为支持超低功耗应用中更复杂的电源管理要求而设计。

ADuCM3029 基于 ARM® Cortex®-M3 内核构建,提供了 256 KB 的纠错码 (ECC) 闪存和 64 KB 带多奇偶校验位保护功能的可配置 SRAM。该处理器的变型版 ADuCM3027 则具有 128 KB 闪存,而其他特性和功能与 ADuCM3029 相同。

除了集成的硬件加密加速器之外,这些器件还包括一个 8 通道、12 位模数转换器 (ADC) 以及多个数字外设,包括 SPI、I2C、UART、GPIO、同步串行端口 (SPORT) 和 25 通道 DMA 控制器。即便具有广泛的功能,该器件在活动模式下的功耗通常仍低于 30 μA/MHz。而且借助 ADuCM3029,设计人员可以进一步微调功能性能与功耗之间的平衡。

功耗性能微调

与大多数高级 MCU 一样,ADuCM3029 具有多种功耗模式,旨在降低低活动期间的功耗。在休眠模式下,该器件会关闭处理器内核和大多数外设,而保持对程序选择的 SRAM 区域供电,通常功耗低于 750 nA。在应用处于非活动状态时,该器件的关断模式仅需要 60 nA。

然而,开发人员经常会遇到在处理器处于非活动状态时需要某种程度的外设活动的情况。为了解决这一问题,ADuCM3029 提供了另一种功耗模式,称为灵活休眠 (Flexi) 模式。Flexi 模式可将功耗降至 300 μA,同时提供了处于活动模式和休眠模式之间的功能。在 Flexi 模式下,器件内核保持休眠模式,而开发人员指定的特定外设保持活动状态(表 1)。

Analog Devices ADuCM3029 MCU 的功耗模式表

表 1:Analog Devices ADuCM3029 MCU 的功耗模式可自动启用(绿色)或禁用(红色)针对某些片上区块的电源,但仍允许开发人员控制某些外设的电源(橙色),甚至配置休眠模式期间保留的 SRAM 大小 (*)。(表格来源:Analog Devices)

开发人员只需将器件的 PMG_PWRMOD 寄存器中的 MODE 位设置为 0 并执行 WFI(等待中断)指令,即可将 MCU 置于 Flexi 模式。在处理器内核处于非活动状态时,开发人员可以通过向 MCU CLKG_CLK_CTL5 寄存器中每个外设的相应位写入 0 来保持特定的外设功能。虽然该器件不能在这种模式下执行指令,但是它可以继续在外设到存储器之间执行像 DMA 传输这样的活动。

Flexi 模式提供了保持外设运行的能力,为传感器应用中的一个普遍问题提供了节能的解决方案,即需要先在一段时间内对一个或多个传感器进行采样,然后才需要处理器处理。在这种情况下,开发人员可以使用集成式 ADC 的自动循环模式在选定通道上执行一次或多次转换,并将 DMA 控制器设置为自动传输样本至 SRAM。经过程序员指定次数的转换和相关 DMA 传输后,DMA 控制器将发出中断来唤醒内核,以进行后续的采样数据处理(图 1)。

处于 Flexi 模式的 Analog Devices ADuCM3029 内核处理器原理图

图 1:在 Flexi 模式下,Analog Devices ADuCM3029 的内核处理器处于休眠状态,而所选外设将继续工作,以便执行 ADC 样本的多通道 DMA 传输等操作,并仅在完成时唤醒处理器。(图片来源:Analog Devices)

高速缓存和时钟

在以功能为代价换取性能方面,Flexi 模式和其他低功耗模式为设计人员提供了一个强大的机制,可显著降低其设计的功耗。然而,对于许多像电池供电型系统这样的应用来说,设计人员通常需要更好地控制功耗。借助 ADuCM3029,设计人员可以利用传统方法和新方法组合来进一步降低功耗。

在典型的传统方法中,使用指令高速缓存可以减少对片外存储器或高能耗片载存储器(如 Flash)的访问。在基于 ADuCM3029 的系统中,开发人员可以分配多达 4 KB 的 SRAM 来充当高速缓存。实际上,具体功耗节省取决于高速缓存命中率,但是 Analog Devices 指出,在一些典型的基准应用中使用高速缓存可以显著降低功耗(表 2)。

代码类型 SRAM (μA) 闪存 (μA) 闪存和高速缓存 (μA) 高速缓存未命中数(大约执行 12 秒)

循环代码(质数)
950
1280
980
24

线性代码 (ULPBench)
911
1493
1083
~800000

表 2:通过将 Analog Device ADuCM3029 配置成使用其一部分 SRAM 作为高速缓存,典型的基准应用就可以在接近低功耗 SRAM 访问(而不是高功耗闪存访问)的功耗级别上运行。(表格来源:Analog Devices)

频率调节是另一种降低功耗的长期性方法。较低的处理器时钟速率会减慢执行指令的速度,但同时也会降低功耗(图 2)。然而,与许多其他方法不同,ADuCM3029 允许开发人员单独为处理器和外设动态修改时钟频率。在此处,器件使用由 26 MHz 内部振荡器或外部晶体驱动的锁相环和时钟分频器,为片载资源(包括处理器、存储器和接口)生成时钟。一个 32 kHz 内部振荡器或外部晶体用于驱动器件的实时时钟 (RTC) 和看门狗定时器。开发人员可以修改器件运行时期间相应的时钟寄存器,以改变时钟频率,使之满足不断变化的应用要求,或匹配功耗降低的机会。

Analog Devices ADuCM3029 调节 MCU 的时钟频率图形

图 2:设计人员只需在 Analog Device ADuCM3029 中设置一些寄存器,即可动态调节 MCU 的时钟频率,并实现相应的功耗降低。(图片来源:Analog Devices)

增强的电源路径

除了支持更传统的功耗降低方法之外,ADuCM3029 还基于专用设备硬件特性提供了更新颖的方法。ADuCM3029 的电源路径中设计有一个片载降压转换器,用于缩小器件的电源电压范围(VBAT,1.74 V - 3.6 V)与内部数字域工作电压 (1.2 V) 之间的差值。

正常工作时,由集成式低压差 (LDO) 稳压器提供此内部电压。与任何典型的 LDO 一样,当 LDO 的电源电压与负载电压之间的差值很大时,默认的电源路径只会消散多余的能量,从而导致功率浪费。然而,凭借此款 MCU,设计人员只需使用少量的外部电容器,即可在更高电源电压下减少这种损耗(图 3)。在软件方面,开发人员只需对降压控制寄存器 (PMG_CTL1) 进行写入操作,即可启用降压转换器。

Analog Devices ADuCM3029 的片载降压转换器原理图

图 3:开发人员只需使用几行代码和一些外部电容器,即可启用 Analog Device ADuCM3029 的片载降压转换器,以降低施加在该器件 LDO 稳压器上的电压电平。(图片来源:Analog Devices)

通过一种高效的基于电容器的充电泵拓扑,该转换器就可以降低提供给 LDO 的电压电平。因此,MCU 可显著降低 VBAT 高端电压电平下的功耗(图 4)。当电平低于约 2.3 V 时,降压转换器进入旁路模式并跟随 VBAT。

Analog Devices 约高 3 V 的 ADuCM3029 供电 (VBAT) 电压电平图形

图 4:当供电 (VBAT) 电压电平高于约 3 V 时,ADuCM3029 的片载降压转换器可降低 MCU 功耗。在此处所示活动模式下以及 Flexi 模式下可相对降低 50%。(图片来源:Analog Devices)

功率优化的采样

诸如高速缓存、频率调节和片载 DC-DC 转换等功能可在系统级别操作,来帮助降低功耗。在应用级别,诸如 Flexi 模式等功能有助于降低外设操作(如传感器采样)的功耗。然而,即使是采用这些方法,在某些应用中也可能是不够的。例如,电池供电的 IoT 器件通常负责以极低的采样率对传感器进行采样,或者定期监控某个外部进程。

对于周期活动较慢的应用,开发人员通常依靠 MCU 的 RTC 来保持一致的时基,以及驱动用于在精确的预定时间唤醒 MCU 的倒数定时器。因此,高级 MCU 通常具有即使在极低功耗模式下也能保留 RTC 功能的功耗模式。借助 ADuCM3029,开发人员可以访问两个独立的 RTC(RTC0 和 RTC1),从而为平衡功耗与性能提供更多选择。

如表 1 所示,这两个 RTC 均支持在活动、Flexi 和休眠模式下操作,但在最低功耗关断模式下只有 RTC0 保持可用。但在其他模式中,这两个时钟之间的明显差异使开发人员可以灵活地实现更复杂的定时应用。例如,RTC0 以秒为单位计算时间(1 Hz 时),将其限制为仅以秒为单位指定的唤醒时间。RTC1 可以在较宽的范围内预分频,并提供低至 30.7 μs 的唤醒时间。每个时钟的功耗也不相同。RTC0 由主电源 (VBAT) 供电,而 RTC1 由内部 1.2 V 电源域供电。因此,使用可选的降压转换器可进一步降低 RTC1 的有效功耗。也许更重要的是,RTC1 支持 Analog Device 的 SensorStrobe 机制,这是 ADuCM3029 中内置的一种独特的低功耗采样功能。

SensorStrobe 是一种特殊的 RTC1 报警,可在 MCU 的 RTC1_SS1 引脚上产生输出脉冲。开发人员可以将 ADuCM3029 的 SensorStrobe 输出连接到外部多传感器器件(如 Analog Devices ADXL363),这样只需少量的元器件,即可创造出一种较低功耗的采样解决方案(图 5)。

Analog Devices ADuCM3029 的 SensorStrobe 机制原理图

图 5:ADuCM3029 的 SensorStrobe 机制为外部器件提供了一个稳定的同步报警,当与集成的传感器(如 Analog Devices ADXL363)结合使用时,可实现简单的数据采集系统。(图片来源:Analog Devices)

Analog Devices 作为其 ADuCM3029 EZ-KIT 开发套件 ADZS-UCM3029EZLITE 的一部分提供了该特定子系统(如图 5 所示)。除了简单的硬件配置之外,此方法只需几行代码,即可设置相关的器件寄存器并启动 SensorStrobe 机制(列表 1)。

#define PRD_VAL 255

void SensorStrobe_Cfg()

{

   // SensorStrobe Pin Mux

  *pREG_GPIO2_CFG |= (0x3 << BITP_GPIO_CFG_PIN11);

   // Reset the RTC counter

  while(*pREG_RTC1_SR1 & 0x0180); //wait until sync

    *pREG_RTC1_SR0 = 0xFF;

  *pREG_RTC1_CR0 = 0;

  while(!(*pREG_RTC1_SR0 & 0x0080 )); //wait for sync

  // SensorStrobe configuration

  // Initial trigger and auto reload value = 255 RTC counts

  // RTC runs at 32KHz ideally, 1 RTC count = 30.7us

  while(*pREG_RTC1_SR5 != 0);

  *pREG_RTC1_SS1ARL = PRD_VAL;

  // SensorStrobe to be triggered after 255 RTC counts

  *pREG_RTC1_CR4SS = (1 << 9); //Enable Autoreload

  *pREG_RTC1_SS1 = PRD_VAL; // Initial Compare Value

  // Enable SensorStrobe

  *pREG_RTC1_CR3SS = 1;

  while(*pREG_RTC1_SR4 != 0x77FF);

  // Initialize the counter value to zero

  while(*pREG_RTC1_SR1 & 0x0600);

  *pREG_RTC1_CNT0 = 0;

  *pREG_RTC1_CNT1 = 0;

  while(!(*pREG_RTC1_SR0 & 0x0400));

  // Enable (start) the counter

  while(*pREG_RTC1_SR1 & 0x0180); //wait until sync

  *pREG_RTC1_SR0 = 0xFF;

  *pREG_RTC1_CR0 = 1;

  while(!(*pREG_RTC1_SR0 & 0x0080)); //wait for sync

  return;

}

列表 1:开发人员只需设置一些器件寄存器,即可利用 Analog Devices ADuCM3029 MCU 的 SensorStrobe 功能。(图片来源:Analog Devices)

在 SensorStrobe 运行期间,开发人员可以将 ADuCM3029 置于休眠模式,以确保在扩展采样过程中产生最低的 MCU 功耗。当 MCU 保持休眠模式时,RTC1 将一直计数到在 SensorStrobe 设置期间建立的寄存器值中指定的所需值。满足 SensorStrobe 计数条件时,SensorStrobe 信号会被施加到 ADXL363 的中断输入引脚,以唤醒该器件。ADXL363 随即会运行其自己的数据采样例程。完成后,ADXL363 将在 MCU 的中断引脚上发出一个信号,使 MCU 从休眠模式中唤醒并开始处理采样数据。

过去,开发人员通常使用外部 RTC、定时器甚至简单的振荡器来实现这种扩展采样设计。除了增加设计复杂性之外,使用外部时钟源还会中断采样数据与 MCU 自己的时基之间的时间同步。因此,使用过去的方法时,开发人员需要有效地对其数据进行重新采样,以将其时间戳标准化为 MCU 的时间戳。但在 SensorStrobe 模式下使用 RTC1 后,开发人员可以确保采样时间戳与基于 ADuCM3029 的系统本身保持同步。

开发人员可能会发现可采用许多分立式机制,来实现接近 ADuCM3029 的集成式电源管理能力。但是,通过发挥该器件的内部能力,工程师也可以轻松地在功耗与性能之间实现更好的匹配。

总结

人们对较低功率系统的需求持续挑战着开发人员在更小的节能设计中实现最高性能的能力。而且,每种应用都需要在功能性能与功耗之间达到独特的平衡,这益发增加了开发的难度。

Analog Devices ADuCM3029 MCU 的集成式电源管理功能使开发人员可以更轻松灵活地实现平衡。使用该器件,开发人员可以兼顾每个特定应用独特的高性能与低功耗需求。

  • 通过集成特性平衡 MCU 的性能与功耗已关闭评论
    A+
发布日期:2019年07月14日  所属分类:参考设计