ARM Cortex-M低功耗模式基本介绍
扫描二维码
随时随地手机看文章
无论是嵌入式系统在电池上运行还是连接到电网,设计绿色并最小化能源消耗的系统都是大多数系统的常见要求。现代嵌入式系统中最大的能源消费者之一是微控制器,并且了解如何最大程度地减少其能源消耗至关重要。即使您查看一个微控制器家族,每个处理器架构都将具有略有不同的低功率功能。在这篇文章中,我们将研究ARM Cortex-M处理器核心中的基本低功率模式以及如何使用它们。
基本低能模式
每个基于ARM Cortex-M处理器的微控制器都至少具有三种功率模式;跑步,睡眠和深度睡眠。显然,运行模式是处理器完全供电的地方,并执行嵌入式系统设计的所有操作。睡眠模式将停止CPU时钟,但会使系统时钟,闪光灯和外围时钟运行。深度睡眠模式不仅会停止CPU时钟,还可以关闭系统时钟,闪光灯和PLL。
微控制器供应商能够完全自定义其低功率模块以提供不同程度的低功率。例如,NXP KINETIS-L处理器不仅具有标准的Cortex-M低功率模式,还具有诸如低渗透睡眠模式和非常低的泄漏睡眠模式之类的模式,它们仅绘制电流的微或纳米压缩。
重要的是要注意,微控制器的睡眠越深,完全关闭的距离就越近。这一点很重要,因为随着您使用越来越深的睡眠模式,备份微控制器并开始执行指令所需的时间可能会大大增加。一些提供非常深的功率模式的处理器需要与处理器启动序列相同的时间才能再次运行。根据您的应用程序,这可能会对系统的实时性能产生重大影响。
进入低功率模式
开发人员可以使用两种不同的说明将其系统置于低功率状态。等待事件(WFE)和互换等待(WFI)。执行WFE指令后,它将检查系统控制块(SCB)中事件位的值。如果未设置钻头,则将系统放置在睡眠模式中。事件可以由外部来源或使用发送事件(SEV)指令生成。在大多数情况下,我看到或编写的应用程序中有99%都使用了WFI指令。
当遇到WFI指令时,除非有待处理中断,否则处理器将立即进入SCB中配置的低功率睡眠模式。一旦处理器入睡,当中断时,它将醒来。某些处理器甚至可能具有可选的唤醒间断控制器,该处理器允许开发人员配置允许哪些源唤醒处理器。这为开发人员提供了对系统可以在最低功率睡眠模式下保留多长时间的精细控制。
进入所需睡眠模式的C代码非常直截了当。在大多数开发环境中,所有人都需要做的就是编写以下代码行:
__wfi;
如果您使用的是CMSI,也可以通过写作来呼叫WFI函数:
__wfi();
现在,您可能想知道如何配置输入哪种低功率模式。在SCB寄存器中,有一个SleepDeep位,如果设置为1,则将处理器置于深度睡眠模式。如果将钻头清除为0,则处理器将进入睡眠模式。正如我前面提到的,硅供应商通常会增强睡眠模式,因此还需要根据设计您的微控制器来配置其他寄存器。
额外的低功率功能
除了能够进入低功率模式外,还有另一个有趣的低功率模式功能,称为“睡眠”。一旦执行完成的中断,就可以让处理器立即重新入睡。这使开发人员可以节省时间,在这种情况下,时间是能量,通过避免不必要的上下文在主应用程序和中断之间进行切换。允许处理器在中断中醒来,进行必要的工作,然后重新入睡。
结论
Cortex-M处理器上的低功率模式是减少嵌入式系统用途的能源消耗量的主要密钥之一。如我们所见,开发人员可以使用WFI指令将其系统置于低功率模式中,然后一旦触发了先前配置的唤醒事件或中断,系统就会唤醒。每个微控制器供应商都能自定义其功率模式,我们将看到具有三种默认电源模式的微控制器,其始终以十几个功率模式和复杂的状态计算机,这些机器可以促进处理器如何从一种模式移动到另一种模式。