<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[云途MCU低功耗排查指南]]></title><description><![CDATA[<h1>云途MCU低功耗排查指南</h1>
<h2>前言</h2>
<p dir="auto">本指南面向云途 MCU 的低功耗调试，帮助开发者定位三类常见问题：无法进入目标模式、进入后反复唤醒，以及稳定休眠后电流仍偏高。排查按“确认测量条件—基准固件对比—按现象定位—修复验证”展开，可根据第 1 章的入口直接选择对应路径。</p>
<p dir="auto">每次只改变一个因素，保留电流波形和修改前后的记录。具体模式、寄存器及 SDK 接口以对应型号和版本为准；代码集成示例见附录 A。</p>
<h2>1. 排查入口与测量准备</h2>
<h3>1.1 先保证测量有效</h3>
<p dir="auto"><strong>接线、量程与供电</strong></p>
<ul>
<li>操作：电流表串入待测支路；先用可承受启动电流的量程，再选休眠量程。在 MCU 电源引脚附近核对实际电压。</li>
<li>判断与处理：读数不超量程，供电满足该模式要求；有压降或复位时，先处理仪表、线缆及供电。</li>
</ul>
<p dir="auto"><strong>运行阶段</strong></p>
<ul>
<li>操作：下载后复位运行，等待初始化、打印和启动延时结束，再读取休眠电流。</li>
<li>判断与处理：不能用初始化或断点暂停时的电流判断休眠功耗。MC0 基准工程延时为 10 秒，其他工程查对应源码。</li>
</ul>
<p dir="auto"><strong>调试及外部连接</strong></p>
<ul>
<li>操作：断开调试器、非必需 USB 和串口转换器，保留正常供电及必需唤醒连接，重新上电测量。</li>
<li>判断与处理：若断开后恢复正常，检查调试保持配置、信号电平及反向供电路径。</li>
</ul>
<p dir="auto"><strong>测量范围</strong></p>
<ul>
<li>操作：优先通过跳线或串联 0 Ω 电阻测量 MCU 支路；有多路电源时，明确覆盖的供电域。</li>
<li>判断与处理：整板、稳压器输入和 MCU 支路电流应分别记录；无法分测时，用同板、同条件对比。</li>
</ul>
<p dir="auto"><strong>波形与平均值</strong></p>
<ul>
<li>操作：读数跳动时用电流分析仪，或合适的采样电阻配合示波器记录波形，确保采样压降不影响供电。</li>
<li>判断与处理：区分运行、休眠、周期唤醒及重复启动；有周期唤醒时，同时记录平台电流和完整周期平均电流。</li>
</ul>
<p dir="auto">**开始前记录：**芯片及板卡版本、SDK／应用版本、固件、供电电压、温度、目标模式、保留时钟及唤醒源、测量位置、仪表及量程、外部连接状态。后续对比保持这些条件一致。</p>
<h3>1.2 根据现象选择入口</h3>
<p dir="auto"><strong>电流接近运行平台，未见休眠平台</strong></p>
<ul>
<li>排查路径：查第 3.1 节的执行路径、模式配置和接口结果；应用复杂或原因不明时，用第 2 章做基准对比。</li>
</ul>
<p dir="auto"><strong>电流短暂降低后反复升高，或程序重启</strong></p>
<ul>
<li>排查路径：先记录唤醒／复位原因及波形，再按第 3.2 节排查触发源。</li>
</ul>
<p dir="auto"><strong>休眠平台稳定，但 MCU 支路电流偏高</strong></p>
<ul>
<li>排查路径：有适配固件时，先做第 2 章对比；再按第 3.3 节检查时钟、GPIO 及外围影响。</li>
</ul>
<p dir="auto"><strong>MCU 支路正常，整板电流偏高</strong></p>
<ul>
<li>排查路径：直接查第 3.3 节的外围与供电支路，不必逐项排查 MCU 进入流程。</li>
</ul>
<p dir="auto">**电流判断标准：**按数据手册中相同型号、供电、温度、模式和保留功能的条件比较。基准工程实测值用于定位差异；整板功耗还需计入稳压器及外围器件，不能直接套用 MCU 电流值。</p>
<h2>2. 基准固件对比</h2>
<p dir="auto">应用配置复杂或原因不明时，用同板基准对比缩小范围。下载前确认型号、目标模式及引脚配置适配板卡；没有匹配固件时，按第 3 章对应现象继续排查。</p>
<h3>2.1 选择匹配工程</h3>
<p dir="auto">配套测试文档提供 ELF、部分型号工程，以及 SIRC 开／关两组结果。选择时同时核对芯片型号、Flash 配置、目标模式和必须保留的唤醒功能。需要 SIRC 支撑唤醒时，不能为追求最低电流直接选用关闭 SIRC 的方案。</p>
<p dir="auto"><strong>YTM32B1LD0</strong></p>
<ul>
<li>测试文档列出的模式：StandBy</li>
<li>板级测试注意事项：按对应型号栏目选择 ELF。</li>
</ul>
<p dir="auto"><strong>YTM32B1LE0</strong></p>
<ul>
<li>测试文档列出的模式：StandBy</li>
<li>板级测试注意事项：所列开发板测试需移除 RP1、RP2。</li>
</ul>
<p dir="auto"><strong>YTM32B1MC0</strong></p>
<ul>
<li>测试文档列出的模式：StandBy</li>
<li>板级测试注意事项：所列测试配置包含 PTA10（JTAG_TDO）上拉。</li>
</ul>
<p dir="auto"><strong>YTM32B1MD1、YTM32B1ME0</strong></p>
<ul>
<li>测试文档列出的模式：PowerDown</li>
<li>板级测试注意事项：按对应型号栏目选择 ELF。</li>
</ul>
<p dir="auto"><strong>YTM32B1HA0</strong></p>
<ul>
<li>测试文档列出的模式：PowerDown</li>
<li>板级测试注意事项：所列开发板测试需拔掉 J35、J36；另有 PTA10 上拉配置。</li>
</ul>
<p dir="auto"><strong>YTM32Z1LS0</strong></p>
<ul>
<li>测试文档列出的模式：StandBy、PowerDown</li>
<li>板级测试注意事项：区分两种模式的 ELF。</li>
</ul>
<p dir="auto"><strong>YTM32B1MD2</strong></p>
<ul>
<li>测试文档列出的模式：StandBy</li>
<li>板级测试注意事项：所列测试配置包含 PTA10（JTAG_TDO）上拉。</li>
</ul>
<p dir="auto"><strong>YTM32B1LE1</strong></p>
<ul>
<li>测试文档列出的模式：StandBy</li>
<li>板级测试注意事项：按对应型号栏目选择 ELF。</li>
</ul>
<p dir="auto">上述模式及板级条件来自本章末尾的配套文档，具体电流、ELF 和工程请查该文档。开发板跳帽与器件处理要求不直接套用于客户板，供电及引脚状态按实际型号手册和原理图确认。</p>
<h3>2.2 同板下载与测量</h3>
<ol>
<li>
<p dir="auto">先保存当前应用固件及测量记录，确认可以恢复；记录应用的休眠平台电流、平均电流和外围器件状态。</p>
</li>
<li>
<p dir="auto">下载适配的基准 ELF；使用源码时，先核对工程配置并编译。可用 Ozone、支持对应 ELF 的 J-Flash，或已连接正确器件的 J-Link Commander。</p>
</li>
<li>
<p dir="auto">下载后断开调试器及不需要的外部连接，重新上电；等待工程设定的启动延时结束及电流稳定，再记录结果。</p>
</li>
<li>
<p dir="auto">恢复应用固件，在同一板卡、供电、温度、测量位置、量程和接线条件下复测；比较时同时核对模式、保留功能和外围器件实际状态。</p>
</li>
</ol>
<p dir="auto">J-Link Commander 已连接正确器件后，可参考以下命令。文件路径需替换为实际 ELF，下载能力取决于器件支持及 Flash 算法：</p>
<pre><code class="language-text">r
h
loadfile "C:/firmware/low_power.elf"
r
g
</code></pre>
<p dir="auto">确认程序可启动后，退出连接、断开调试器，重新上电并按第 1.1 节测量。</p>
<p dir="auto"><strong>根据结果选择下一步：</strong></p>
<p dir="auto"><strong>基准正常，应用偏高</strong></p>
<ul>
<li>可得到的判断：优先定位两套软件的差异，包括引脚电平对外围电路的影响。</li>
<li>下一步：未进入休眠查第 3.1 节；反复唤醒查第 3.2 节；平台偏高查第 3.3 节，逐项恢复业务功能。</li>
</ul>
<p dir="auto"><strong>基准与应用都偏高</strong></p>
<ul>
<li>可得到的判断：尚不能区分固件适配、模式、测量条件和硬件问题。</li>
<li>下一步：先复核匹配及实际进入状态，再分测 MCU 与外围支路，按第 3.3 节定位。</li>
</ul>
<p dir="auto"><strong>基准只降低了部分电流</strong></p>
<ul>
<li>可得到的判断：可能存在多个影响因素，或两套固件的模式、时钟、外围状态不同。</li>
<li>下一步：记录差值，逐项对齐条件；不能据此认定全部问题都来自 MCU 内部。</li>
</ul>
<p dir="auto"><strong>同一固件在不同板上有差异</strong></p>
<ul>
<li>可得到的判断：需结合供电、电源域、外围器件和引脚连接分析。</li>
<li>下一步：先统一测量条件，再交叉对比板卡及供电支路，不能仅凭整板差异判定芯片异常。</li>
</ul>
<h2>3. 按现象定位问题</h2>
<h3>3.1 无法进入低功耗</h3>
<p dir="auto">适用于启动延时结束后仍接近运行电流、未观察到目标休眠平台的情况。按以下顺序检查：</p>
<p dir="auto"><strong>是否执行到休眠接口</strong></p>
<ul>
<li>操作：在 POWER_SYS_SetMode() 前设置断点确认路径，或用不影响板级功能的 GPIO 标记；检查初始化、通信等待、锁和延时。</li>
<li>判断与下一步：到不了接口，先处理阻塞；能到达，再查模式。测量前移除调试影响。</li>
</ul>
<p dir="auto"><strong>模式是否正确</strong></p>
<ul>
<li>操作：核对 POWER_SYS_Init() 的配置数组和 LOW_POWER_MODE 对应条目，确认目标模式及支持的唤醒源。</li>
<li>判断与下一步：模式参数是数组下标，不能跨工程照搬。配置不符时修正后复测。</li>
</ul>
<p dir="auto"><strong>接口是否报错</strong></p>
<ul>
<li>操作：单独保存 POWER_SYS_SetMode() 返回值。采用 AGREEMENT 策略时，检查回调是否拒绝切换；对应 SDK 可用 POWER_SYS_GetErrorCallback() 定位。</li>
<li>判断与下一步：报错按 SDK 返回码处理；返回成功仍需用波形及芯片状态确认是否保持休眠。</li>
</ul>
<p dir="auto"><strong>是否进入后立即退出</strong></p>
<ul>
<li>操作：脱离调试器观察波形，记录唤醒和复位原因，确认是否出现短暂低电流平台。</li>
<li>判断与下一步：短暂降低后上升查第 3.2 节；稳定但偏高查第 3.3 节；原因不明时做第 2 章基准对比。</li>
</ul>
<p dir="auto">**确认恢复方式：**唤醒后继续执行的模式，检查接口返回及恢复流程；通过复位启动恢复的模式，在启动早期记录复位／唤醒原因。不能用断点暂停电流判定休眠功耗。</p>
<h3>3.2 反复唤醒或重启</h3>
<ol>
<li>
<p dir="auto">**先记录原因，再清标志。**在初始化清除前，按手册规则保存唤醒／复位原因，结合波形区分预期唤醒、异常中断、看门狗及欠压复位。</p>
</li>
<li>
<p dir="auto">**只保留一个可控唤醒源。**确认目标模式支持该来源，暂时关闭非必需的 RTC 闹钟、定时器和通信唤醒。异常消失后逐项恢复，找到重新引入问题的来源。</p>
</li>
<li>
<p dir="auto">**核对任务及节拍。**暂停非必需采样、通信和定时任务；RTOS 按其低功耗流程处理系统节拍。唤醒周期与任务周期一致时，重点检查该任务及触发外设。</p>
</li>
<li>
<p dir="auto">**排查持续触发。**先停止不需要的触发源，再按手册清除外设标志和待处理中断；核对唤醒引脚电平、边沿、上下拉及抖动。</p>
</li>
<li>
<p dir="auto">**处理复位与调试影响。**看门狗按目标模式调整服务或配置；欠压先查供电和仪表压降。断开调试器重新上电，确认是否仍有异常。</p>
</li>
</ol>
<p dir="auto">**通过标准：**无非预期唤醒或复位，主动触发后原因与配置一致。业务要求的周期唤醒应保留，同时分别评估平台电流及完整周期平均电流；修复后执行第 4 章验证。</p>
<h3>3.3 稳定休眠但电流偏高</h3>
<p dir="auto">先确认目标模式和保留功能一致，并排除非预期唤醒。有适配固件时，优先做第 2 章对比，再逐项检查：</p>
<p dir="auto"><strong>时钟</strong></p>
<ul>
<li>操作：列出 RTC、定时器及通信唤醒依赖的时钟；核对目标模式保持选项、外设门控和时钟输出。每次只关闭一个不被必需功能使用的时钟或模块。</li>
<li>判断与下一步：电流下降时恢复该项复验，再结合手册确认原因；保留必需唤醒功能。无变化则查 GPIO。</li>
</ul>
<p dir="auto"><strong>GPIO</strong></p>
<ul>
<li>操作：按原理图逐脚核对：确认未使用的普通引脚才关闭不需要的数字通路、上下拉和中断；电源使能、待机及片选脚保持外围要求的电平；复位、调试及唤醒脚单独配置。</li>
<li>判断与下一步：测量实际电平，每次只改变一组引脚。变化可复现时，查上下拉对拉、悬空、外围误开启和反向供电。示例见附录 A。</li>
</ul>
<p dir="auto"><strong>外围器件</strong></p>
<ul>
<li>操作：停止 MCU 通信后，继续按器件手册设置 CAN／LIN 收发器和传感器的待机／休眠状态。板卡允许时逐项隔离外围供电或信号。</li>
<li>判断与下一步：记录使电流下降的支路，恢复原状态复验；MCU 停止通信不代表外围已休眠。</li>
</ul>
<p dir="auto"><strong>供电及跨电源域信号</strong></p>
<ul>
<li>操作：核对稳压器静态电流、使能和输入／输出测量位置；检查断电器件是否被信号线反向供电。隔离时保留 MCU 供电及必需控制电平。</li>
<li>判断与下一步：分别对比 MCU 与外围支路，结合两端电压及器件手册确认路径；整板差异不能直接证明芯片异常。</li>
</ul>
<p dir="auto">**通信引脚处理：**先停止新增发送并等待发送完成，再按 SDK 流程停用外设；仅在不依赖该通信唤醒、且外部电路允许时切换引脚状态。唤醒后恢复时钟、引脚及外设，并验证通信。</p>
<p dir="auto">**通过标准：**MCU 支路满足对应条件下的规格／目标，外围状态正确，整板电流满足产品预算。找到原因后执行第 4 章；仍无法定位时，保留基准对比、支路测量及波形记录，继续做板卡交叉验证。</p>
<h2>4. 修复验证与结果记录</h2>
<p dir="auto"><strong>完成以下验证后再关闭问题：</strong></p>
<ol>
<li>
<p dir="auto">在相同条件下回退修改复现异常，再重新应用，确认电流和行为变化可重复。</p>
</li>
<li>
<p dir="auto">多次上电，确认每次都能进入并保持目标模式，无非预期唤醒或复位。</p>
</li>
<li>
<p dir="auto">逐一触发必需唤醒源，核对原因及恢复路径，并检查时钟、GPIO、通信和外围功能。</p>
</li>
<li>
<p dir="auto">确认唤醒后还能再次休眠；记录平台电流，有周期唤醒时同时记录完整周期平均电流和周期长度。</p>
</li>
<li>
<p dir="auto">按对应规格条件及产品预算验收，将测量条件、原因和修改内容与工程版本一起归档。</p>
</li>
</ol>
<p dir="auto"><strong>结果记录：</strong></p>
<p dir="auto"><strong>复现条件</strong></p>
<ul>
<li>内容：芯片及板卡版本、相关原理图、SDK／应用版本、固件、电压、温度、仪表、量程、测量位置和接线。</li>
</ul>
<p dir="auto"><strong>配置及现象</strong></p>
<ul>
<li>内容：目标模式、配置数组条目、保留时钟与唤醒源、外围状态、平台电流、周期平均电流及周期、波形和接口返回码。</li>
</ul>
<p dir="auto"><strong>定位及修复</strong></p>
<ul>
<li>内容：唤醒／复位原因、同板基准对比、单项修改及电流变化、最终原因、修复内容和回退复验结果。</li>
</ul>
<h2>附录 A：关闭未使用引脚与串口恢复示例</h2>
<p dir="auto">**适用范围：**以下为接口集成示例，适用于工程中具有相同 PINS、LINFlexD、WKU 和 POWER 接口的 SDK；引脚、实例和生成配置必须与实际芯片及板卡一致。已核对 MC0 基准工程中 PINS_DRV_Init()、POWER_SYS_SetMode() 的返回类型为 status_t；这不代表所有型号都具有示例中的 LINFlexD2 或相同引脚映射。</p>
<h3>A.1 仅处理已确认未使用的普通引脚</h3>
<p dir="auto">LowPower_DisableUnusedPin() 是基于 SDK 接口封装的辅助函数，并非 SDK 自带接口。调用前应确认该脚不承担复位、调试、唤醒或外围控制功能，且板级电路允许关闭数字通路及上下拉。</p>
<pre><code class="language-c">static void LowPower_DisableUnusedPin(PCTRL_Type *pctrl,
                                      GPIO_Type *gpio,
                                      uint32_t pin)
{
    PINS_DRV_SetPinIntSel(gpio, pin, PCTRL_DMA_INT_DISABLED);
    PINS_DRV_ClearPinIntFlagCmd(gpio, pin);
    PINS_DRV_DisableDigitalFilter(gpio, pin);
    PINS_DRV_SetPinDirection(gpio, pin, GPIO_INPUT_DIRECTION);
    PINS_DRV_SetPullSel(pctrl, pin,
                        PCTRL_INTERNAL_PULL_NOT_ENABLED);
    PINS_DRV_SetMuxModeSel(pctrl, pin, PCTRL_PIN_DISABLED);
}
</code></pre>
<h3>A.2 串口停用、进入低功耗及恢复</h3>
<p dir="auto">以下函数放入已完成初始化的工程中调用，替换原有“配置引脚保持、进入低功耗及恢复串口”的对应流程。前提是：工程确实使用 PTE12／PTD17 作为 LINFlexD2 TX／RX；唤醒源已配置且不依赖该串口；发送已经完成；外部电路允许 TX／RX 进入高阻；目标模式唤醒后从接口继续执行。若唤醒会复位启动，应在启动流程中恢复，不能照搬本函数的返回路径。</p>
<p dir="auto">LOW_POWER_MODE 必须是本工程 POWER_SYS_Init() 配置数组中的目标下标。下面保留了原文的“先恢复引脚配置、再解除保持”顺序，集成时还须核对对应型号的引脚保持机制，以及时钟／电源恢复是否由 SDK 或回调完成。生成的引脚初始化数组应包含需要恢复的引脚。</p>
<pre><code class="language-c">static status_t LowPower_TestWithUartDisabled(void)
{
    /* 调用前等待最后一次发送完成，并停止新增发送请求。 */
    status_t deinitStatus = LINFlexD_UART_DRV_Deinit(2U);
    if (deinitStatus != STATUS_SUCCESS)
    {
        return deinitStatus;
    }

    LowPower_DisableUnusedPin(PCTRLE, GPIOE, 12U);
    LowPower_DisableUnusedPin(PCTRLD, GPIOD, 17U);

    WKU_DRV_SetPinIsolation(true);
    status_t powerStatus = POWER_SYS_SetMode(
        LOW_POWER_MODE, POWER_MANAGER_POLICY_AGREEMENT);

    /* 无论切换成功返回还是报错返回，均执行运行配置恢复。 */
    status_t pinStatus = PINS_DRV_Init(
        NUM_OF_CONFIGURED_PINS0, g_pin_mux_InitConfigArr0);
    if (pinStatus != STATUS_SUCCESS)
    {
        /* 保持隔离；调用方进入板级恢复／错误处理流程。 */
        return pinStatus;
    }
    WKU_DRV_SetPinIsolation(false);

    status_t uartStatus = UTILITY_PRINT_Init();
    if (uartStatus != STATUS_SUCCESS)
    {
        return uartStatus;
    }

    /* 恢复完成后返回原低功耗结果，避免被初始化结果覆盖。 */
    return powerStatus;
}
</code></pre>
<p dir="auto">**调用与判断：**调用方应保存返回值并处理错误，失败时停止后续正常打印及再次休眠，按板级策略恢复；调试时分别查看 deinitStatus、powerStatus、pinStatus 和 uartStatus。返回成功仍需按第 3.1、3.2 节确认实际进入与唤醒行为。该示例已做接口与文本核对，未替代目标工程的编译及实板验证。</p>
<p dir="auto">**关于 10 秒延时：**配套文档的 YTM32B1MC0_Standby.zip 中，app/main.c 在 POWER_SYS_Init() 后调用 OSIF_TimeDelay(10000)，再进入低功耗。其他型号、版本和业务工程的等待时间应查各自源码。</p>
]]></description><link>https://forum.ytmicro.com/topic/2307/云途mcu低功耗排查指南</link><generator>RSS for Node</generator><lastBuildDate>Wed, 21 Oct 2026 23:05:58 GMT</lastBuildDate><atom:link href="https://forum.ytmicro.com/topic/2307.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 21 Oct 2026 05:54:22 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to 云途MCU低功耗排查指南 on Wed, 21 Oct 2026 09:27:07 GMT]]></title><description><![CDATA[<p dir="auto"><a href="https://yt-static-main.oss-cn-shanghai.aliyuncs.com/nodebb/28/bd3ac5da-4b71-450e-a5df-3cc5f968306c.pdf" rel="nofollow ugc">[SDK] 芯片最低 低功耗测试.pdf</a><br />
<a href="https://yt-static-main.oss-cn-shanghai.aliyuncs.com/nodebb/28/c8126c8e-0010-4ec7-bf26-a9877c4d168d.zip" rel="nofollow ugc">ELF及工程_按芯片分类_20261021.zip</a></p>
]]></description><link>https://forum.ytmicro.com/post/9950</link><guid isPermaLink="true">https://forum.ytmicro.com/post/9950</guid><dc:creator><![CDATA[xianghan]]></dc:creator><pubDate>Wed, 21 Oct 2026 09:27:07 GMT</pubDate></item></channel></rss>