文章目录
Introduction
YTM32的低功耗系统中有设计了多种工作模式,功耗从高到低,包括:正常工作模式(Active Mode)、休眠模式(Sleep Mode)、深度休眠模式(DeepSleep Mode)、待机模式(Standby Mode)和掉电模式(PowerDown Mode)。其中Active Mode、Sleep Mode和DeepSleep Mode是Arm处理器内核定义的通用功耗模式,分别对应着芯片系统正常工作、停用CPU时钟但不停用系统总线时钟,以及进一步停用系统总线时钟的三种情况。在有多组内部调压器(regulator)的MCU功耗管理系统中,在这三种常规的功耗模式下,在芯片内部通常仍设计使用同一个高压调压器(例如LDO25)供电,此时,在不同工作模式下,通过逐步停用芯片内部各功能区域的时钟,可以实现降低系统功耗。
YTM32在通用功耗模式之外,设计了Standby Mode,相对于Arm定义的DeepSleep Mode,StandBy Mode切换使用芯片内部的处于节能模式的低压调压器(LDO11)为部分片内模块供电,高压调压器处于不激活的节能模式,如此,可以进一步减少系统的功耗。此时,芯片内部只有能够使用低压调压器工作的模块还能存活,例如一些低速的时钟源(SIRC、SXOSC),以及可以使用这些时钟源的外设(LPTMR、SPI、I2C等)。
进一步在PowerDown模式中,彻底停用了高压调压器,仅保留处于节能模式下的低压调压器为部分模块供电,对应也停用了一些原本还可以在Standby模式下存活的外设,仅保留了少量外设,包括SIRC(选配)、SXOSC(选配)、LPTMR、RTC、ACMP等,以及将这些外设的触发事件作为唤醒源唤醒芯片系统的WKU模块。特别注意,在PowerDown模式中,Flash和大部分SRAM(除了一小块特殊保留供电的区域)都已经停电,CPU不能从Flash中读取程序,SRAM中保存的数据也已经丢失,此时,即使原地唤醒MCU,也已经不具备原地唤醒的条件。因此,相比于其他低功耗模式下唤醒从原地醒来继续接着干活,PowerDown模式唤醒后,将直接进入硬件复位流程,通过重新启动过程,重新建立程序的运行环境。
由于PowerDown模式不是原地唤醒,而是进入复位流程重新执行程序,这对开发者不是很友好,因此很多用户都尽量避免使用这种模式。但对于追求极限低功耗的应用场景,PowerDown模式极度省电的特性也能帮助开发者实现最优的低功耗方案。本文整理了使用要点,供开发者了解和利用好PowerDown模式。
另外,关于片内调压器的节能模式,在寄存器字段PCU_CTRL[FASTREC]的介绍中,提到了一些有意思的说法:
This bit controls the recovery time from Low Power Mode (LPM) to Performance Mode (FPM). At recovery from Low Power Mode all the capacitors from the secondary supplies have to re recharged. This high current demand, that might not be met by the supply driving primary domain. When selecting the fast recovery time, the curre echarging is approximately 3 times higher than for FASTREC=0.
这里是说,当芯片系统从低功耗模式中恢复时,需要为次级负载(也就是外设模块)的电容充电(对应于芯片RESET引脚和VDD引脚上的电容)。相对于常规的从低功耗模式下恢复的机制,有一种快速回复模式,如果启用了快速恢复的功能,则会(用更大的电流)加速这个充电的过程,此时在主电源域(VDD)上流过的电流是未启用快速恢复功能的将近3倍,这样的大电流对外部供电系统也提出了要求。
专门的唤醒源管理器WKU
相对于其他低功耗工作模式可以通过任何外设的中断事件唤醒,在PowerDown模式下,Arm核的中断管理器NVIC都已经停用了,不能捕获中断事件。此时,必须使用具体芯片上专门设计的唤醒管理器WKU(概念类似于NXP产品中的LLWU),搜集触发信号,进一步唤醒MCU。需要特别注意的是,WKU模块仅能在PowerDown模式模式中时钟,WKU模块是不起作用的,
WKU模块(Wakeup Unit)可以捕获两种事件以唤醒PowerDown模式下的MCU:
- 唤醒引脚上的电平变化
- MCU内部模块发出的触发信号
外部的唤醒引脚
其中,WKU监控最多32个(受限于32位的WKU_PFR寄存器的宽度)唤醒引脚(Wake-Up Pin)上的电平变化,用户可在每个独立的WKU_PCRn[WUPE]
寄存器字段中,为对应的唤醒引脚单独设置唤醒的事件,为上升沿、下降沿或者任一边沿。如图x所示。
当配置启用唤醒引脚捕获外部引脚上特定的边沿触发事件,就相当于是把这些外部引脚都变成了工作在PowerDown模式下的复位引脚,外部电路可以通过它们复位并唤醒MCU。
从图x中还可以看到,在WKU_PCR
寄存器唤醒引脚启用滤波器,以对外部输入的信号“消