一、 概述
本文将介绍 NXP S32K1xx 系列 MCU 的功耗管理模块的相关功能,主要包括 S32K1xx 几种低功耗模式的概述、各低功耗模式间的切换、低功耗的进入及唤醒等内容。
二、低功耗模式
S32K1xx 主要包括了 6 种功耗模式,关于各种低功耗模式的特性如下表所示:
低功耗模式 |
描述 |
RUN |
芯片默认的运行模式,片上的电压整流器打开,最高主频为 80MHz |
HSRUN |
高速运行模式,比 RUN 模式的频率更高,最高主频为 112 MHz |
VLPR |
极低功耗的运行模式,此模式下片上整流器运行在低功耗模式,仅够提供降频运行的能量。该模式下 MCU 的内部时钟切换到 SIRC,运行频率为 4MHz,flash 的访问频率降低为 1 MHz,LVD 模块关闭 |
STOP |
睡眠模式,芯片处于静止状态,该模式下所有寄存器的数据正常维持并且 LVD 处于工作状态。NVIC 关闭,AWIC 用于接收中断从睡眠模式唤醒,部分外设的时钟关闭,STOP 模式下的系统时钟是关闭的。该模式下还分为 STOP1 和 STOP2 两种模式,STOP1 和 STOP2 的最主要区别是 STOP2 模式下的总线时钟是打开。 |
VLPS |
极低功耗的睡眠模式,芯片处于静止状态并且 LVD 处于关闭状态,此模式下部分外设的时钟关闭,LPTMR、RTC、CMP 等外设能被使用,NVIC 关闭,AWIC 用于接收中断从睡眠中唤醒,片上整流器运行在低功耗模式,所以 SRAM 的内容及 IO 的状态处于维持的状态 |
表 2.1 S32K1xx 低功耗模式概述
下图为数据手册上 S32K116 和 S32K144 在不同工作条件下不同功耗模式的功耗数据,可以看出 VLPS 模式下的功耗最低,达到了 uA 级别,S32K144在常温下关闭所有外设的情况下为 29.8 uA
图 2.1 S32K1xx 功耗数据
如下图所示为各种低功耗模式间的状态切换图
图 2.2 低功耗模式状态切换图
从上图可以看出,当 S32K 产生任何复位后都会使 MCU 恢复到 RUN 模式,RUN 模式和其它低功耗模式间都可以直接进行切换,而除了 VLPR 和 VLPS 模式之间可以互相切换以外,其它模式都不能直接切换到 RUN 以外的模式。
关于以上各种低功耗模式间的切换条件如下表所示。
模式切换 |
源模式 |
目标模式 |
触发条件 |
1 |
RUN |
STOP |
PMCTRL[RUNM]==00,PMCTRL[STOPM]=000 |
STOP |
RUN |
中断或者复位 | |
2 |
RUN |
VLPR |
PMPROT[AVLP]=1,PMCTRL[RUNM]=10 |
VLPR |
RUN |
PMCTRL[RUNM]=00 或者复位 | |
3 |
VLPR |
VLPS |
PMCTRL[STOPM]=000 或 010 |
VLPS |
VLPR |
中断 | |
4 |
RUN |
VLPS |
PMPROT[AVLP]=1,PMCTRL[STOPM]=010 |
VLPS |
RUN |
中断或者复位 | |
5 |
RUN |
HSRUN |
PMPROT[AHSRUN]=1,PMCTRL[RUNM]=11 |
HSRUN |
RUN |
PMCTRL[RUNM]=00 或者复位 |
表 3.1 模式切换条件
从上表可以看到,要实现各个模式间的切换,最主要的是控制 PMCTRL 和 PMPROT 两个寄存器,PMCTRL 寄存器为功耗模式控制寄存器,寄存器长度为 32 位,主要的控制位为:
- PMCTRL[6:5],运行模式控制位 RUNM,通过配置这个控制位,可以选择需要进入的运行模式模式,PMCTRL[6:5]=00 时进入 RUN 模式,PMCTRL[6:5]==10 时进入 VLPR 模式, PMCTRL[6:5]=11 时进入 HSRUN 模式。
- PMCTRL[3],超低功耗停止模式终止位 VLPSA,当该位置位时 VLPS 模式终止。
- PMCTRL[2:0],停止模式控制位 STOPM,通过该位选择进入 STOP 模式,PMCTRL[2:0]=000 时进入 STOP 模式,PMCTRL[2:0]=010 时进入 VLPS 模式。
- 其它位为保留位
PMPROT 寄存器为功耗模式保护寄存器,通过配置该寄存器可以设置是否允许进入 HSRUN、VLPS、VLPR 等模式。
- PMPROT[7] 控制是否允许进入 HSRUN 模式,该位置位则表示允许进入
- PMPROT[5] 控制是否允许进入 VLPS 或 VLPR 模式,该位置位则表示允许进入
- 其它位为保留位
三、低功耗的进入与唤醒
S32K1xx 低功耗的进入与退出是由 SMC 模块进行管理的,下图为 SMC 模块跟系统其它组件的连接图,SMC 模块通过与这些模块的通信来控制系统的低功耗模式的进入和退出。
图 3.1 SMC 模块与系统其它模块的连接
当 CPU 执行 WFI 指令后触发系统进入VLPS/STOP 低功耗模式,该指令执行后触发以下序列的执行。
- CPU 时钟马上关闭
- 发送请求给所有非 CPU 的总线主机,请求进入 STOP 模式
- 当所有主机响应请求并且准备进入到 STOP 模式后,发送请求给所有从机,请求进入 STOP 模式
- 当所有从机响应请求并且准备进入到 STOP 模式后,根据所选择进入的低功耗模式(VLPS/STOP1/STOP2)关闭系统和总线时钟,STOP2 模式总线时钟不会关闭
- 另外,对于 VLPS 模式,时钟生成器 SCG 会禁止,除非设置使能
- 系统会控制PMC 的片上整流器和内部的电源开关来满足所进入的低功耗模式的功耗目标,该步骤仅针对 VLPS 模式,因为在 STOP 模式下 PMC 处于运行状态
当发送复位或者中断时,系统将从低功耗模式中恢复到 RUN 模式,该过程以下序列将被执行。
- PMC 的片上整流器和内部的电源开关会恢复为原来的状态,该步骤仅针对 VLPS 模式
- 所有主机和从机的系统时钟和总线时钟都使能
- CPU 时钟使能,CPU 开始处理复位和中断
S32K1xx 的中断唤醒是通过 AWIC(Asynchronous Wake-up Interrupt Controller) 来实现的,具体唤醒逻辑如下图。
图 3.2 AWIC 唤醒逻辑
AWIC 支持如图所示的唤醒源。
图 3.3 AWIC 唤醒源
四、参考资料
- NXP ,《S32K1XXRM》https://www.nxp.com.cn/webapp/sps/download/preDownload.jsp?render=true
- NXP ,《S32K-DS》, https://www.nxp.com.cn/docs/en/data-sheet/S32K-DS.pdf
评论