ZHCAEM4 October 2024 MSPM0C1103 , MSPM0C1103-Q1 , MSPM0C1104 , MSPM0C1104-Q1 , MSPM0G1105 , MSPM0G1106 , MSPM0G1107 , MSPM0G1505 , MSPM0G1506 , MSPM0G1507 , MSPM0G1519 , MSPM0G3105 , MSPM0G3105-Q1 , MSPM0G3106 , MSPM0G3106-Q1 , MSPM0G3107 , MSPM0G3107-Q1 , MSPM0G3505 , MSPM0G3505-Q1 , MSPM0G3506 , MSPM0G3506-Q1 , MSPM0G3507 , MSPM0G3507-Q1 , MSPM0G3519 , MSPM0L1105
本文档介绍了 MSPM0 的低功耗模式,基于 LP-MSPM0G3507 测量了系统和外设的功耗数据,并提供了从不同外设进入和退出低功耗模式的操作指导。
EnergyTrace and Code Composer Studio™are TMs ofTI corporate name.
Other TMs
MSPM0 器件中有两个核心电源域:PD1 和 PD0。
如图 1-1 所示,PD1 域包括 CPU 子系统、SRAM 存储器、PD1 外设和 PD1 外设总线,该总线通过 MCLK(包括 DMA,最高频率为 80MHz)运行。PD1 外设总线上的外设通常是高速外设,运行时功耗一般较高。PD0 域包括 PD0 外设和 PD0 总线段,该总线由 ULPCLK 驱动,连接低速外设,如通用异步接收器/发送器 (UART)、内部集成电路 (I2C)、实时时钟 (RTC)。
MSPM0 MCU 实施基于策略的电源和时钟管理方案。在某些低功耗模式下,可以禁用 PD1 以更大限度地降低功耗,同时,PD1 域的所有外设也会同步禁用。
MSPM0 器件支持五种功耗模式:RUN、SLEEP、STOP、STANDBY 和 SHUTDOWN。图 1-2 展示了各种模式之间的交互。
PD1 仅在 RUN 和 SLEEP 模式下启用。在 STOP 和 STANDBY 模式下禁用 PD1 时,CPU 寄存器、SRAM 和外设 MMR 配置寄存器将保持不变,以便在退出 STOP 或 STANDBY 模式时可立即使用这些模式恢复运行。
PD0 在除 SHUTDOWN 模式之外的所有模式下均通电,可视为“常开”域。PD0 通过 ULPCLK 运行(在 RUN 和 SLEEP 模式下的最高频率为 40MHz,在 STOP 模式下为 4MHz,在 STANDBY 模式下为 32kHz)。
图 1-3 说明了如何为每种工作模式配置相关的策略位。所有值均以二进制格式表示。短横线 (-) 表示特定的策略位与指定的工作模式无关。有关这些低功耗模式的详细说明,请参阅 MSPM0 G 系列 80MHz 微控制器技术参考手册(版本 A)第 2.1 节 PMCU 概述 (ti.com.cn)。
在 RUN 模式下,CPU 正在执行代码并且可以启用每个外设。
共有三个 RUN 模式策略选项:RUN0、RUN1 和 RUN2。
在 MSPM0 SDK 中,通过 DL_SYSCTL_setPowerPolicyRUNxSLEEPx() API 函数配置时钟后,RUN 模式启动,其中 x 可以选择 0、1 或 2,分别代表三种不同的 RUN 模式策略。
在 SLEEP 模式下,会禁用 CPU(时钟选通),但在其他方面,器件配置与在 RUN 模式下相同。因此,SLEEP 模式的配置方法与 RUN 模式相同。差别在于,SLEEP 模式通过 WFI/WFE 指令暂停 CPU 的运行。
在 STOP 模式下,CPU、SRAM 和 PD1 外设被禁用并保留(如果适用)。PD0 外设的最高 ULPCLK 频率为 4MHz。SYSOSC 可以在更高的频率下运行以支持 ADC、OPA 或 COMP 运行,但 ULPCLK 将被 SYSCTL 自动限制为 4MHz SYSOSC 输出。高速振荡器(SYSPLL、HFXT、HFCLK_IN)被自动禁用。
STOP 模式有三个策略选项:STOP0、STOP1 和 STOP2。
在 MSPM0 SDK 中,通过 DL_SYSCTL_setPowerPolicySTOPx() API 函数配置,其中 x 可以选择 0、1 或 2,分别代表三种不同的 STOP 模式策略。STOP 模式的配置通过 WFI/WFE 指令触发生效。
在 STANDBY 模式下,CPU、SRAM 和 PD1 外设被禁用并保留。除了 ADC、12 位 DAC 和 OPA 外,PD0 外设的最高 ULPCLK 频率为 32kHz。高速振荡器(SYSPLL、HFXT、HFCLK_IN)和 SYSOSC 被禁用。
STANDBY 模式有 2 个策略选项:STANDBY0 和 STANDBY1。
STANDBY 模式通过 MSPM0 SDK 中的 DL_SYSCTL_setPowerPolicySTANDBYx() API 函数配置,其中 x 可以选择 0 或 1,分别代表两种 STANDBY 模式策略。STANDBY 模式的配置通过 WFI/WFE 指令触发生效。
在 SHUTDOWN 模式下,没有可用的时钟。内核稳压器被完全禁用,所有 SRAM 和寄存器内容都将丢失。BOR 和带隙电路被禁用。
该器件可通过支持唤醒功能的 IO、调试连接或 NRST 唤醒。
XDS110 调试探针具有板载电路,可用于测量目标的能耗。其硬件电路支持低带宽的高精度能耗测量,测量电流范围为 1μA 至 100mA,当电流超过该范围时,工具将提示过流并自动关闭。该工具专为表征能耗而设计,但不适用于捕捉短时间的电流尖峰,因为其采样周期较大(约 500μs)。
有关 EnergyTrace 的详细介绍,请参阅 XDS110 调试探针第 3.6 节 Energy Trace (ti.com.cn)。
若要在启动调试会话时自动启动 EnergyTrace 工具,请在 CCS 中按照以下步骤操作:进入“Window - Preferences - Code Composer Studio™ - EngergyTrace Technology”选项,勾选“Enable Auto-launch on target connect”复选框。
如果需要在建立调试连接后启动 EnergyTrace 工具,当核心连接到目标系统时,将目标连接设置为 XDS110。
图 1-6 展示了嵌入在 CCS 中的 EnergyTrace 工具的快速启动方法。这样可以测量并显示由 XDS110 调试探针提供给 MCU 系统板的电流,测量结果会显示在“Current”窗口中。此外,还可以导出数据,并在外部进行分析。
表 2-1 显示了在不同低功耗模式下,MSPM0G350x 系统的功耗测量结果及相应硬件/软件配置。若不启用外设,MSPM0 的功耗与时钟配置密切相关。参考表格中列出了不同低功耗策略下的 SYSOSC、MCLK 和 ULPCLK 配置情况。
低功耗模式 | 配置 | 电流 | |||
---|---|---|---|---|---|
低功耗策略 | SYSOSC | MCLK | ULPCLK | ||
硬件 |
|
||||
软件 |
|
||||
低功耗策略: | Standby1 + WFI | DIS | DIS | 32kHz | 1.5uA |
Standby0 + WFI | DIS | DIS | 32kHz | 1.9uA | |
Stop2 + WFI | DIS | DIS | 32kHz | 46uA | |
Stop1 + WFI | 4MHz | DIS | 4MHz | 182uA | |
Stop0 + WFI | 32MHz | DIS | 4MHz | 346uA | |
RUN2SLEEP2 + WFI | DIS | 32kHz | 32kHz | 293uA | |
RUN2SLEEP2 + while (1) {} | DIS | 32kHz | 32kHz | 294uA | |
RUN1SLEEP1 + WFI | 32MHz | 32kHz | 32kHz | 535uA | |
RUN1SLEEP1+ while (1) {} | 32MHz | 32kHz | 32kHz | 536uA | |
RUN0SLEEP0 + WFI (SYSOSC=32MHz) | 32MHz | 32MHz | 32MHz | 1.36mA | |
RUN0SLEEP0 + while (1) {} (SYSOSC=32MHz) | 32MHz | 32MHz | 32MHz | 2.22mA | |
RUN0SLEEP0 + WFI (SYSOSC=4MHz) | 4MHz | 4MHz | 4MHz | 456uA | |
RUN0SLEEP0 + while (1) {} (SYSOSC=4MHz) | 4MHz | 4MHz | 4MHz | 569uA |
表 3-1 汇总了 MSPM0G350x 主要外设的功耗数据。有关各外设的详细功耗测试结果,请参阅以下章节。
以下表格中提供了两个功耗值的说明:
外设 | 时钟 | 功耗 | ||
---|---|---|---|---|
SYSOSC = 32MHz | LPM 功耗 | RUN0 模式下的静态功耗 | ||
PD0 | UART | ULPCLK=32MHz | 3.5uA | 80uA |
I2C | ULPCLK=32MHz | 2.5uA | 230uA | |
TIMG0 | LFCLK=32kHz | <0.1μA(STOP/STANDBY 模式下的运行功耗) | ||
RTC/WWDT | LFCLK=32kHz | |||
PD1 | TIMA0 | MCLK=32MHz | 30μA(RUN0 模式下的静态功耗) | |
SPI | MCLK=32MHz | 4.1uA | 170uA | |
MCAN | HFCLK=40MHz | 10.6uA | 480uA | |
模拟 | SYSPLL | SYSPLL2x =32MHz | 38μA(STANDBY1 模式下的 LPM 功耗) | |
VREF | MCLK=32MHz | 9.0uA | 80uA | |
ADC | MCLK=32MHz | 2.5uA | 60uA |
以下章节提供了不同外设的功耗测试结果。常用的硬件和软件配置如下,各章节仅列出与对应外设的特定配置:
GPIO | 配置 | 电流 |
---|---|---|
硬件 |
|
|
测试条件 | 未配置未使用的引脚 | 1.8uA |
将未使用的引脚配置为输出低电平 | 1.8uA | |
将未使用引脚配置为输入,带下拉电阻 | 1.8uA | |
将未使用引脚配置为输入,无内部电阻 | 4.0mA |
根据以上表格,将引脚配置为输入且无内部电阻时,会导致异常的较大功耗。因此,为减少未使用引脚的功耗,不要将这些引脚配置为悬空输入,这一点很重要。相应地,可以将 GPIO 配置为输入并使用内部或外部下拉电阻。
当引脚被外设使用时(尤其是用作输入引脚时),悬空的输入引脚可能会导致较高的功耗,甚至可能在低功耗模式下激活外设。因此,建议将外设的输入引脚配置为上拉或下拉。
对于 MSPM0 中的任意引脚,断开引脚与其他器件连接的有效方法是通过 DL_GPIO_initPeripheralAnalogFunction() 将相应引脚配置为模拟输入。在这种情况下,该引脚既不配置为输入也不配置为输出,仅保持与模拟外设的连接路径。
图 3-2 展示了 RTC 在 STANDBY1 模式下几乎不消耗功率(与在 STANDBY0 模式下相同)。
RTC | 配置 | 电流 |
---|---|---|
软件 |
|
|
测试条件 | 启用 RTC、WFI (STANDBY1) | 2.0uA |
禁用 RTC、WFI (STANDBY1) | 2.0uA |
图 3-2 显示了 WWDT 在 STANDBY0 模式下几乎无功耗 (<0.1μA),因为 STANDBY0 是 WWDT 的最低功耗运行模式。
WWDT | 配置 | 电流 |
---|---|---|
软件 |
|
|
测试条件 | 启用 WWDT、WFI (STANDBY0) | 2.7uA |
禁用 WWDT、WFI (STANDBY0) | 2.6uA |
图 3-2 显示了由 LFCLK 驱动的 TIMG0/8 在 STANDBY1 模式下几乎不消耗功率。结合 RTC 和 WWDT 功耗测试的结果可见,由 LFCLK 驱动的外设在运行时几乎不消耗功耗。这也是在其他测试中在 LFCLK 上使用 TIMG0 作为计时器来切换功耗策略的原因。
LFCLK 驱动下的 TIMG0 | 配置 | 电流 |
---|---|---|
软件 |
|
|
测试条件 | 启用 TIMG0、WFI (STANDBY1) | 1.7uA |
禁用 TIMG0、WFI (STANDBY1) | 1.7uA |
TIMA0 每 2s(TIMG0 中断)启用/禁用一次,以便您获取模块的功耗。在 RUN0 模式下,TIMA0 的工作功耗电流约为 30μA。
TIMA0 | 配置 | 电流 |
---|---|---|
软件 |
|
|
测试条件 | 启用 TIMA0 | 2.239mA |
禁用 TIMA0 | 2.209mA |
当系统进入 STOP 或 STANDBY 模式时,TIMA0 和其他位于 PD1 域的计时器都会被强制禁用。要将计时器从低功耗模式恢复,需要重新配置计时器,以使其重新开始计数。重新启动计时器的步骤如下:
UART0 | 配置 | 电流 |
---|---|---|
硬件 |
|
|
软件 |
|
|
测试条件 | 启用 UART 电源并初始化、WFI (STANDBY1) | 3.5uA |
UART 持续传输数据 (9600bps) | 3.28mA | |
RUN0 模式、运行 while (1) {} | 2.33mA | |
关闭 UART 电源、运行 while (1) {} | 2.25mA | |
UART 禁用、WFI (STANDBY1) | 1.9uA |
关于低功耗模式下的 UART0,有以下几点建议:
若 UART0/1/2 在进入 STOP 或 STANDBY 模式前未被重置,退出低功耗模式后其配置会自动恢复。通过 DL_UART_Main_enablePower() 即可在退出低功耗模式后使 UART 正常工作。
I2C | 配置 | 电流 |
---|---|---|
硬件 |
|
|
软件 |
|
|
测试条件 | 启用 I2C 电源并初始化、WFI (STANDBY1) | 1.20mA |
禁用 I2C 异步快速时钟请求、WFI (STANDBY1) | 2.5uA | |
I2C 持续传输数据 (400kHz) | 3.72mA | |
RUN0 模式、运行 while (1) {} | 2.41mA | |
关闭 I2C 电源、运行 while (1) {} | 2.18mA | |
进入低功耗模式、WFI (STANDBY1) | 2.0uA |
根据上面的测试结果,对低功耗模式下的 I2C 模块得出以下结论和建议:
若在进入 STOP 或 STANDBY 模式前未重置 I2C,则退出低功耗模式后,I2C 配置会自动恢复,且启用电源即可使 I2C 正常工作。
SPI | 配置 | 电流 |
---|---|---|
软件 |
|
|
测试条件 | 启用 SPI 电源并初始化、WFI (STANDBY1) | 4.1uA |
SPI 持续传输数据 (500kHz) | 3.02mA | |
RUN0 模式、运行 while (1) {} | 2.13mA | |
关闭 SPI 电源并重置、运行 while (1) {} | 1.96mA | |
进入低功耗模式、WFI (STANDBY1) | 1.9uA |
若 SPI 在进入 STOP 或 STANDBY 模式前未被重置,退出低功耗模式后其配置会恢复。SPI 可以在退出低功耗模式后通过启用电源正常工作。
MCAN | 配置 | 电流 |
---|---|---|
硬件 |
|
|
软件 |
|
|
测试条件 | 启用 MCAN 电源、WFI (STANDBY1) | 10.6uA |
初始化 CAN、CAN 持续传输数据 | 3.38mA | |
RUN0 模式、运行 while (1) {} | 3.28mA | |
关闭 MCAN 电源、运行 while (1) {} | 2.80mA | |
进入低功耗模式、WFI (STANDBY1) | 10.0uA |
根据上面的测试结果,对低功耗模式下的 MCAN 得出以下结论和建议:
从低功耗模式恢复 MCAN 配置时,MCAN 需要重新配置才能正常工作。请按照以下步骤操作: