Bootstrap

理解嵌入式系统中ARM32架构下的电源管理单元(PMU)及节能模式-原理(上)

  电源管理单元(Power Management Unit, PMU)是现代电子设备尤其是嵌入式系统中不可或缺的一部分。PMU的主要任务是管理和分配电力资源,确保各个组件在正确的工作电压下运行,同时优化系统的整体能效。PMU通常包含多种功能模块,如稳压器(LDO或DC-DC转换器)、电池充电电路、电量监测电路等,以确保整个系统的可靠性和高效性。

         具体案例分析可以看我的下一篇

1 ARM32中的电源域

对于ARM32架构的设备来说,电源域的划分有助于更精细地控制功耗。典型的电源域可以分为:

                                                 VDD/VDDA域

VDD/VDDA域如下图:

提供PMU 常规电源供应以下模块的供电:看门狗,主频晶振,内部晶振ADC和DAC,LDO电源转换,上电复位,锁相环备份域。

                                                       备份域

备份域如下图:

备份域提供以下供电:外部低频时钟晶振,RTC,上电复位,电源转换。

                                                           1.2V域

1.2V域如下图所示

这个作用域主要提供:AHB高速总线的供电,APB外设总线的供电,内存Cortex-M4的供电。

2 节能模式

嵌入式系统中常用的节能模式包括但不限于:

睡眠模式

  在此模式下,CPU停止工作,但RAM保持供电状态,以便系统可以快速恢复到之前的工作状态。在特定情况下,当设备进入睡眠模式时,会关闭1.2V域中的Cortex-M4内核的供电。这意味着Cortex-M4内核将停止运行,直到被中断或其他唤醒源唤醒。这种模式特别适用于那些需要长时间运行但并非始终活跃的应用场景,例如无线传感器节点、可穿戴设备或其他电池供电的设备。

深度睡眠模

  此模式比睡眠模式更进一步,除了保留RTC等必要组件供电外,其他大部分电源都会被切断。进入深度睡眠模式时,会关闭1.2V域中的所有供电,并同时关闭VDD/VDDA域中的HXTAL、IRC16M和PLLs

待机模式

  在此模式下,几乎切断所有电源,只保留必要的唤醒源(如外部中断),以最大程度降低功耗。进入待机模式时,会关闭1.2V域中的所有供电,并且同时关闭VDD/VDDA域中的LDO、IRC16M、HXTAL和PLLs。

3 ARM架构中的低功耗指令:WFI与WFE

在ARM架构中,WFI(Wait For Interrupt)和WFE(Wait For Event)是两种用于使处理器进入低功耗状态的指令。它们主要用于在没有任务需要处理时暂停处理器的执行,从而节省功耗。

WFI(Wait For Interrupt)

WFI指令使处理器进入等待中断的状态。当处理器执行到WFI时,它会进入一种低功耗模式,此时处理器停止执行指令。一旦有任何中断请求到达(如硬件中断或软件中断),处理器就会被唤醒,并从中断向量表中找到相应的中断处理程序来恢复执行。

WFE(Wait For Event)

WFE指令类似于WFI,但它不仅能够等待中断,还能等待来自其他处理器的核心事件。这意味着当执行到WFE时,处理器会进入低功耗模式,直到有中断或由另一个处理器或外设产生的事件到达为止。WFE指令提供了更多的灵活性,因为它可以等待多个类型的事件。

4 模式总结

           

;