请选择 进入手机版 | 继续访问电脑版
查看: 637|回复: 3

[原创] MCX C444:多种低功耗模式切换

[复制链接]

该用户从未签到

678

主题

6335

帖子

0

超级版主

Rank: 8Rank: 8

积分
21733
最后登录
2024-10-2
发表于 2024-8-6 17:42:54 | 显示全部楼层 |阅读模式
本帖最后由 小恩GG 于 2024-8-6 17:42 编辑

MCX C444:多种低功耗模式切换
一、 概述
  秉承在MCU领域深厚的技术积累,NXP在2024年7月推出MCX C系列——一款高性价比、高能效、安全的Cortex-M0+MCU,助力8位和16位传统设计的升级换代。
  MCXC44x在MCXC系列中性能最高。Flash容量可达256KB、SRAM可达32KB、Boot ROM可达16KB。嵌入式ROM配备引导加载程序,支持使用内置USB FS2.0设备灵活进行程序升级。FlexIO可支持任何标准和自定义串行外设仿真,还支持多达24x8或28x4段的段式LCD。在超低功耗运行模式下,功耗低至54uA/MHz,在深度睡眠模式下低至1.96uA(保留RAM+RTC)。封装选项更加丰富,包括32和48引脚QFN、64引脚LQFP以及64引脚BGA。

屏幕截图 2024-07-26 150850.png

  当边缘设备在部署环境中无处不在时,对于电源的分配利用就显得尤为重要。然而,对于整体系统性能而言,高速处理能力同样不可或缺。MCX C系列支持低功耗节能外设和USB接口,USB2.0接口可实现12Mbit/s的全速操作。节能的外设能够减轻内核在节能和低功耗模式下的负载,当内核处于睡眠状态时保持外设的运行。段式LCD支持人机界面(HMI),控制器能够生成相应的波形,驱动复用的数字、字母数字或自定义分段LCD面板。
  NXP FRDM-MCXC444开发板是一款基于MCXC444芯片的低成本设计与评估板。下图为NXP FRDM-MCXC444开发板的板载模块图:

图片1.png

  在本文中,我们将以图文的形式对MCX C系列MCU的低功耗特性进行详细的讲解并探讨电源的多种低功耗模式切换功能的实现。文末附有视频对本文所描述的功能实现进行详细的讲解。
  硬件环境:
  • 开发板:FRDM-MCXC444
  • 测试工具:万用表(电流表)
  软件环境:
    Demo:SDK->FRDM-MCXC444-> demo_apps -> power_mode_switch
  • 串口工具:Putty.exe
  

二、 低功耗特性
  MCX C系列拥有丰富的低功耗模式,可以适用于多种消费及工业应用场景。电源管理控制器(PMC)提供多种供电模式,用户可根据所需的功能级别优化功耗。支持多种运行/等待/停止模式。MCU能在约50µA/MHz的低功耗下运行,在深度睡眠模式下仅消耗2µA左右的电流,同时保持寄存器数据不丢失。即便在深度睡眠模式,微控制器也能在短短4us内唤醒。
  大多数模块的时钟可以关闭以节省电力。PMC内置的低压检测(LVD)系统能够有效防止电压过低的情况。
  首先我们将介绍MCX C系列微控制器不同的低功耗模式以及在该模式下运行的特性:

模式
全称
特性
RUN
Run
MCU可以运行在全速模式,内部电源完全监管,在运行模式规则下,该模式被认为是正常运行模式。
WAIT
Wait
关闭内核时钟。系统时钟持续工作。总线时钟如果开启,则持续工作。保持运行监管。
STOP
Stop
关闭内核时钟,系统时钟服务其他模块。来自支持外设的停止应答信号有效后,关闭总线时钟。
VLPR
Very  Low Power Run
在此模式下,内核、系统、总线、Flash时钟的最大频率受到限制。
VLPW
Very  Low Power Wait
关闭内核时钟。系统、总线和Flash时钟继续运行,其最大频率受到限制。
VLPS
Very  Low Power Stop
核心时钟关闭。在来自支持外设的所有停止确认信号都有效后,其他主机的系统时钟和总线时钟被关闭。
LLS
Low Leakage Stop
关闭内核时钟。来自支持外设的停止应答信号有效后,关闭总线时钟。通过降低内部逻辑电压,将MCU置于低泄漏模式。保持内部逻辑状态。
VLLS3
Very  Low Leakage Stop 3
关闭内核时钟。来自支持外设的停止应答信号有效后,关闭总线时钟。通过关闭内部逻辑,将MCU置于低泄漏模式。保存所有系统RAM的内容且保存I/O状态。内部逻辑状态不会保留。
VLLS1
Very  Low Leakage Stop 1
关闭内核时钟。来自支持外设的停止应答信号有效后,关闭总线时钟。通过关闭内部逻辑和所有系统RAM,将MCU置于低泄漏模式。保存I/O状态。内部逻辑状态不会保留。
VLLS0
Very  Low Leakage Stop 00
关闭内核时钟。来自支持外设的停止应答信号有效后,关闭总线时钟。通过关闭内部逻辑和所有系统RAM,将MCU置于低泄漏模式。保存I/O状态。内部逻辑状态不会保留。禁用1kHz LPO时钟,使用STOPCTRL[PORPO],可以选择是否开启电源复位电路。

  •   MCU上电默认:RUN模式。
  •   低功耗模式:  
      --VLPR模式:低功耗运行。
      --WAIT和VLPW模式:仅CPU进入低功耗模式。
      --STOP,VLPS,LLS和VLLS模式:CPU及外设进入低功耗模式,部分外设会被关闭。
  •   在所有低功耗模式下:
      --IO状态都保持。
      --CPU内部逻辑状态(逻辑门、触发器和寄存器等组件)最低可以保持到LLS模式,从VLLS模式唤          醒后会从复位向量重新执行初始化。
      --SRAM内容最低可以保持到VLLS3模式(VLLS0和VLLS1丢失)。
  下图描述了部分常用外设在低功耗模式下的状态,具体的状态可以从芯片MCXC444的Reference Manual中找到:

屏幕截图 2024-07-29 164012.png

   
图注:LIM:在当前状态下,外设的性能会受影响。
    ASYNC:使用备用时钟源完全正常运行,前提是所选时钟源保持启用状态。
    STATIC:保留模块寄存器状态和相关内存。
    LP:Low Power,内存通电以将内容保持在低功耗状态。

三、 低功耗模式转换
  在这一节中,我们将介绍MCX C系列MCU如何在不同的低功耗模式间进行转换。

图片2.png

  上图是MCX C系列微控制器的低功耗模式转移状态机,下表定义了上图中所示的各种状态转换的触发条件:

  
转换 #
  
当前状态
目标状态
触发条件
1
RUN
WAIT
ARM内核SCR(System Control Register)中,通过清除SLEEPDEEP进入sleep-now模式或sleep-on-exit模式。Note1
WAIT
RUN
中断 / Reset
2
RUN
STOP
PMCTRL[RUNM]=00,  PMCTRL[STOPM]=000   Note2
  
ARM内核的SCR中,通过设置SLEEPDEEP进入sleep-now模式或sleep-on-exit模式。Note1
STOP
RUN
中断 / Reset
3
RUN
VLPR
在这种模式下,内核、系统、总线和Flash时钟频率以及MCG时钟模式受到限制。
  
设置PMPROT[AVLP]=1,  PMCTRL[RUNM]=10
VLPR
RUN
设置PMCTRL[RUNM]=00 / Reset
4
VLPR
VLPW
ARM内核的SCR中,通过清除SLEEPDEEP进入sleep-now模式或sleep-on-exit模式。Note1
VLPW
VLPR
中断
5
VLPW
RUN
Reset
6
VLPR
VLPS
PMCTRL[STOPM]=000 / 010  Note3
  
ARM内核的SCR中,通过设置SLEEPDEEP进入sleep-now模式或sleep-on-exit模式。Note1
VLPS
VLPR
中断
  
注意:如果直接从RUN(转换 #7)输入 VLPS,硬件将强制退回RUN,不会回到VLPR状态中。
7
RUN
VLPS
PMPROT[AVLP]=1,  PMCTRL[STOPM]=010
  
ARM内核的SCR中,通过设置SLEEPDEEP进入sleep-now模式或sleep-on-exit模式。Note1
VLPS
RUN
中断(VLPS模式直接从RUN模式进入)/ Reset
8
RUN
VLLSx
PMPROT[AVLLS]=1,  PMCTRL[STOPM]=100
  
STOPCTRL[LLSM]=x  (VLLSx)
  
ARM内核的SCR中,通过设置SLEEPDEEP进入sleep-now模式或sleep-on-exit模式。
VLLSx
RUN
从使能的LLWU输入源或RESET引脚唤醒。
9
VLPR
VLLSx
PMPROT[AVLLS]=1,  PMCTRL[STOPM]=100
  
STOPCTRL[LLSM]=x  (VLLSx)
  
ARM内核的SCR中,通过设置SLEEPDEEP进入sleep-now模式或sleep-on-exit模式。
10
RUN
LLSx
PMPROT[ALLS]=1,  PMCTRL[STOPM]=011
  
STOPCTRL[LLSM]=x  (LLSx)
  
ARM内核的SCR中,通过设置SLEEPDEEP进入sleep-now模式或sleep-on-exit模式。
LLSx
RUN
从使能的LLWU输入源或RESET引脚唤醒。
11
VLPR
LLSx
PMPROT[ALLS]=1,  PMCTRL[STOPM]=011
  
ARM内核的[media=x,500,375][/media]SCR中,通过设置SLEEPDEEP进入sleep-now模式或sleep-on-exit模式。
Note1:如果启用了调试功能,内核时钟仍支持调试。
Note2:如果PMCTRL[STOPM]=000并且STOPCTRL[PSTOPO]=01或者10,则仅进入部分停止模式而不是STOP模式。
Note3:如果 PMCTRL[STOPM]=000STOPCTRL[PSTOPO]=00,则进入VLPS模式而不是STOP。如果 PMCTRL[STOPM]=000 STOPCTRL[PSTOPO]=01或者10,则仅进入部分停止模式,而不是VLPS模式。

  下面以几个例子来对上述状态机以及表格进行进一步的说明:
  Eg1. 系统默认上电后状态为:RUN,所有的模式下RESET后都恢复到RUN。
  Eg2. RUN和VLPR模式可以互相转换。
  Eg3. VLPW模式无法通过RUN直接进入,需要先进入VLPR模式,再进入VLPW模式。唤醒时,通过中断只能返回到VLPR,返回RUN只能通过RESET进行。
  Eg4. VLLS 0/1/3模式均可以通过RUN和VLPR模式进入,但在唤醒操作时,只能返回到RUN状态,无法返回到VLPR状态。
  Eg5. VLPS模式和LLS模式可以通过RUN和VLPR模式进入,在唤醒操作时,从哪个状态进入的便返回哪个状态。

四、 效果演示
  本文将演示SDK->FRDM-MCXC444-> demo_apps -> power_mode_switch中的例程,通过串口向FRDM-MCXC444开发板发送指令,来达到多种低功耗模式之间相互切换的目的。
  在将例程下载至FRDM-MCXC444开发板之后,移除JP1跳线帽,使用万用表上的电流表功能对开发板的各类功耗模式进行测量。
  将开发板通过USB-C cable连接至电脑上,打开设备管理器查看连接的串口号,打开Putty.exe,配置串口为COMx,波特率为9600,打开串口。

屏幕截图 2024-07-30 134005.png

  通过向串口中输入上述指令,以达到对电源模式切换的功能目的。
  向串口中输入“D”,则可以切换到VLPR模式,可以看到时钟从48MHz变为了2MHz,电源模式从“RUN”切换到了“VLPR”,如下图所示:

屏幕截图 2024-07-30 134152.png

  当向串口输入其他指令时,则会出现以下命令行:

屏幕截图 2024-07-30 134630.png

  除了RUN和VLPR模式之间相互切换,其他的电源状态的返回RUN和VLPR模式时就会出现上述命令行,命令行中描述了两种唤醒源,分别是低功耗定时器唤醒以及按键唤醒。
  使用电流表的mA以及μA档接在JP1的两端并测量电流,测试从RUN模式下进入VLPW模式的过程,结果如下图所示:

IMG_20240805_145421.jpg

  此时是在RUN状态下工作,测得其电流为8.22mA。
  将板子调至VLPW状态,需要先进入VLPR模式,测得电流如下,为0.87mA:

图片3.jpg

  再通过VLPR模式进入VLPW模式,测得电流如下,为92.1μA:

图片4.jpg

  分别测试在USB供电,室温的情况下不同模式的功耗情况,得到结果如下表所示:

屏幕截图 2024-08-05 163518.png

  注意,由于此时FRDM板子上面还打开了串口通讯以及部分其他功能,所以上面实际测得的功耗电流与在特定情况下的MCXC444的典型值有所差异。然而,在实际的低功耗用例中,为了节能,可以做很多事情,包括:
  • 在低功耗模式下,关闭不需要模块的时钟开关。可以在进入低功耗模式之前禁用时钟,并在必要时退出低功耗模式后重新启用时钟。
  • 当模块中其他部分在低功耗模式下工作时,关闭不需要的部分的功能。在大多数情况下,更强大的功能意味着更多的功耗。例如,关闭不必要的引脚复用器的数字功能等等。
  • 根据实际应用硬件设置适当的引脚状态(IO方向和逻辑电平)。否则引脚会漏电流,增加功耗。
  • 其他基于实际应用硬件的低功耗考虑。
  • 用于debug的pin(e.g SWD_DIO)会消耗额外的功率,最好禁用相关引脚或断开。
  在debug的运行过程中的RUN模式功耗电流如下图所示,功耗电流会稍微高出将程序下载进开发板的情况:

IMG_20240805_145630.jpg

  下面,根据MCXC444芯片的datasheet,我将给出一组在特定条件(典型值, MCXC444,25°C,VDD=3V)下的功耗电流参考值,可以看到实际测得电流与特定条件下的参考电流在数量级上保持一致性。

模式
运行条件
功耗电流(典型值)
RUN
48MHz HIRC模式下,48MHz内核时钟、24 MHz 访问Flash总线时钟,所有外设时钟使能。执行Flash中的基准测试程序CoreMark
8.08mA
VLPR
8MHz LIRC模式下,4MHz内核时钟、1 MHz 访问Flash总线时钟,所有外设时钟使能。执行Flash中循环While(1)里的代码。
416μA
WAIT
内核时钟、48 MHz系统时钟、24 MHz总线时钟、Flash被禁止,所有外设时钟被禁止。MCG_LiteHIRC模式下运行。
1.81mA
VLPW
内核时钟、2 MHz系统时钟、0.5 MHz总线时钟、Flash被禁止,所有外设时钟被禁止。
69μA
STOP
Stop  mode
161.93μA
VLPS
Very-low-power  stop mode
3.31μA
LLS
RTC保留
2.46μA
VLLS3
RTC保留
2.05μA
VLLS1
RTC保留
1.26μA
VLLS0
所有外设禁用,上电复位检测电路禁止。
(SMC_STOPCTRL[PORPO] = 1)
0.18μA

视频链接:

MCXC444_PWR_MODE.pdf

1.38 MB, 下载次数: 2, 下载积分: 威望 1

回复

使用道具 举报

  • TA的每日心情
    开心
    昨天 07:29
  • 签到天数: 263 天

    [LV.8]以坛为家I

    18

    主题

    492

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    1321
    最后登录
    2024-10-3
    发表于 2024-8-12 07:33:23 | 显示全部楼层
    这么详细的帖子非常好呀,感谢楼主的用心分享!
    哎...今天够累的,签到来了~
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    0

    主题

    2

    帖子

    0

    注册会员

    Rank: 2

    积分
    125
    最后登录
    2024-9-25
    发表于 2024-8-26 15:51:55 | 显示全部楼层
    点个赞
    回复

    使用道具 举报

  • TA的每日心情
    开心
    昨天 10:00
  • 签到天数: 1419 天

    [LV.10]以坛为家III

    21

    主题

    1万

    帖子

    1

    金牌会员

    Rank: 6Rank: 6

    积分
    13959
    最后登录
    2024-10-3
    发表于 2024-9-14 14:47:15 | 显示全部楼层
    C系列主打低功耗,是不是用在可穿戴设备非常合适
    跟着日天混,三天饱九顿!
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /4 下一条

    Archiver|手机版|小黑屋|恩智浦技术社区

    GMT+8, 2024-10-4 00:49 , Processed in 0.124819 second(s), 23 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

    快速回复 返回顶部 返回列表