跳转至内容
  • 版块
  • 最新
  • 标签
  • 热门
折叠
品牌标识

YunTu Forum

YTMicro.com
  1. 主页
  2. Blogs
  3. 云途MCU低功耗排查指南

云途MCU低功耗排查指南

已定时 已固定 已锁定 已移动 Blogs
2 帖子 1 发布者 33 浏览
  • 从旧到新
  • 从新到旧
  • 最多赞同
登录后回复
此主题已被删除。只有拥有主题管理权限的用户可以查看。
  • xianghanX 离线
    xianghanX 离线
    xianghan YunTu
    编写于 最后由 xianghan 编辑
    #1

    云途MCU低功耗排查指南

    前言

    本指南面向云途 MCU 的低功耗调试,帮助开发者定位三类常见问题:无法进入目标模式、进入后反复唤醒,以及稳定休眠后电流仍偏高。排查按“确认测量条件—基准固件对比—按现象定位—修复验证”展开,可根据第 1 章的入口直接选择对应路径。

    每次只改变一个因素,保留电流波形和修改前后的记录。具体模式、寄存器及 SDK 接口以对应型号和版本为准;代码集成示例见附录 A。

    1. 排查入口与测量准备

    1.1 先保证测量有效

    接线、量程与供电

    • 操作:电流表串入待测支路;先用可承受启动电流的量程,再选休眠量程。在 MCU 电源引脚附近核对实际电压。
    • 判断与处理:读数不超量程,供电满足该模式要求;有压降或复位时,先处理仪表、线缆及供电。

    运行阶段

    • 操作:下载后复位运行,等待初始化、打印和启动延时结束,再读取休眠电流。
    • 判断与处理:不能用初始化或断点暂停时的电流判断休眠功耗。MC0 基准工程延时为 10 秒,其他工程查对应源码。

    调试及外部连接

    • 操作:断开调试器、非必需 USB 和串口转换器,保留正常供电及必需唤醒连接,重新上电测量。
    • 判断与处理:若断开后恢复正常,检查调试保持配置、信号电平及反向供电路径。

    测量范围

    • 操作:优先通过跳线或串联 0 Ω 电阻测量 MCU 支路;有多路电源时,明确覆盖的供电域。
    • 判断与处理:整板、稳压器输入和 MCU 支路电流应分别记录;无法分测时,用同板、同条件对比。

    波形与平均值

    • 操作:读数跳动时用电流分析仪,或合适的采样电阻配合示波器记录波形,确保采样压降不影响供电。
    • 判断与处理:区分运行、休眠、周期唤醒及重复启动;有周期唤醒时,同时记录平台电流和完整周期平均电流。

    **开始前记录:**芯片及板卡版本、SDK/应用版本、固件、供电电压、温度、目标模式、保留时钟及唤醒源、测量位置、仪表及量程、外部连接状态。后续对比保持这些条件一致。

    1.2 根据现象选择入口

    电流接近运行平台,未见休眠平台

    • 排查路径:查第 3.1 节的执行路径、模式配置和接口结果;应用复杂或原因不明时,用第 2 章做基准对比。

    电流短暂降低后反复升高,或程序重启

    • 排查路径:先记录唤醒/复位原因及波形,再按第 3.2 节排查触发源。

    休眠平台稳定,但 MCU 支路电流偏高

    • 排查路径:有适配固件时,先做第 2 章对比;再按第 3.3 节检查时钟、GPIO 及外围影响。

    MCU 支路正常,整板电流偏高

    • 排查路径:直接查第 3.3 节的外围与供电支路,不必逐项排查 MCU 进入流程。

    **电流判断标准:**按数据手册中相同型号、供电、温度、模式和保留功能的条件比较。基准工程实测值用于定位差异;整板功耗还需计入稳压器及外围器件,不能直接套用 MCU 电流值。

    2. 基准固件对比

    应用配置复杂或原因不明时,用同板基准对比缩小范围。下载前确认型号、目标模式及引脚配置适配板卡;没有匹配固件时,按第 3 章对应现象继续排查。

    2.1 选择匹配工程

    配套测试文档提供 ELF、部分型号工程,以及 SIRC 开/关两组结果。选择时同时核对芯片型号、Flash 配置、目标模式和必须保留的唤醒功能。需要 SIRC 支撑唤醒时,不能为追求最低电流直接选用关闭 SIRC 的方案。

    YTM32B1LD0

    • 测试文档列出的模式:StandBy
    • 板级测试注意事项:按对应型号栏目选择 ELF。

    YTM32B1LE0

    • 测试文档列出的模式:StandBy
    • 板级测试注意事项:所列开发板测试需移除 RP1、RP2。

    YTM32B1MC0

    • 测试文档列出的模式:StandBy
    • 板级测试注意事项:所列测试配置包含 PTA10(JTAG_TDO)上拉。

    YTM32B1MD1、YTM32B1ME0

    • 测试文档列出的模式:PowerDown
    • 板级测试注意事项:按对应型号栏目选择 ELF。

    YTM32B1HA0

    • 测试文档列出的模式:PowerDown
    • 板级测试注意事项:所列开发板测试需拔掉 J35、J36;另有 PTA10 上拉配置。

    YTM32Z1LS0

    • 测试文档列出的模式:StandBy、PowerDown
    • 板级测试注意事项:区分两种模式的 ELF。

    YTM32B1MD2

    • 测试文档列出的模式:StandBy
    • 板级测试注意事项:所列测试配置包含 PTA10(JTAG_TDO)上拉。

    YTM32B1LE1

    • 测试文档列出的模式:StandBy
    • 板级测试注意事项:按对应型号栏目选择 ELF。

    上述模式及板级条件来自本章末尾的配套文档,具体电流、ELF 和工程请查该文档。开发板跳帽与器件处理要求不直接套用于客户板,供电及引脚状态按实际型号手册和原理图确认。

    2.2 同板下载与测量

    1. 先保存当前应用固件及测量记录,确认可以恢复;记录应用的休眠平台电流、平均电流和外围器件状态。

    2. 下载适配的基准 ELF;使用源码时,先核对工程配置并编译。可用 Ozone、支持对应 ELF 的 J-Flash,或已连接正确器件的 J-Link Commander。

    3. 下载后断开调试器及不需要的外部连接,重新上电;等待工程设定的启动延时结束及电流稳定,再记录结果。

    4. 恢复应用固件,在同一板卡、供电、温度、测量位置、量程和接线条件下复测;比较时同时核对模式、保留功能和外围器件实际状态。

    J-Link Commander 已连接正确器件后,可参考以下命令。文件路径需替换为实际 ELF,下载能力取决于器件支持及 Flash 算法:

    r
    h
    loadfile "C:/firmware/low_power.elf"
    r
    g
    

    确认程序可启动后,退出连接、断开调试器,重新上电并按第 1.1 节测量。

    根据结果选择下一步:

    基准正常,应用偏高

    • 可得到的判断:优先定位两套软件的差异,包括引脚电平对外围电路的影响。
    • 下一步:未进入休眠查第 3.1 节;反复唤醒查第 3.2 节;平台偏高查第 3.3 节,逐项恢复业务功能。

    基准与应用都偏高

    • 可得到的判断:尚不能区分固件适配、模式、测量条件和硬件问题。
    • 下一步:先复核匹配及实际进入状态,再分测 MCU 与外围支路,按第 3.3 节定位。

    基准只降低了部分电流

    • 可得到的判断:可能存在多个影响因素,或两套固件的模式、时钟、外围状态不同。
    • 下一步:记录差值,逐项对齐条件;不能据此认定全部问题都来自 MCU 内部。

    同一固件在不同板上有差异

    • 可得到的判断:需结合供电、电源域、外围器件和引脚连接分析。
    • 下一步:先统一测量条件,再交叉对比板卡及供电支路,不能仅凭整板差异判定芯片异常。

    3. 按现象定位问题

    3.1 无法进入低功耗

    适用于启动延时结束后仍接近运行电流、未观察到目标休眠平台的情况。按以下顺序检查:

    是否执行到休眠接口

    • 操作:在 POWER_SYS_SetMode() 前设置断点确认路径,或用不影响板级功能的 GPIO 标记;检查初始化、通信等待、锁和延时。
    • 判断与下一步:到不了接口,先处理阻塞;能到达,再查模式。测量前移除调试影响。

    模式是否正确

    • 操作:核对 POWER_SYS_Init() 的配置数组和 LOW_POWER_MODE 对应条目,确认目标模式及支持的唤醒源。
    • 判断与下一步:模式参数是数组下标,不能跨工程照搬。配置不符时修正后复测。

    接口是否报错

    • 操作:单独保存 POWER_SYS_SetMode() 返回值。采用 AGREEMENT 策略时,检查回调是否拒绝切换;对应 SDK 可用 POWER_SYS_GetErrorCallback() 定位。
    • 判断与下一步:报错按 SDK 返回码处理;返回成功仍需用波形及芯片状态确认是否保持休眠。

    是否进入后立即退出

    • 操作:脱离调试器观察波形,记录唤醒和复位原因,确认是否出现短暂低电流平台。
    • 判断与下一步:短暂降低后上升查第 3.2 节;稳定但偏高查第 3.3 节;原因不明时做第 2 章基准对比。

    **确认恢复方式:**唤醒后继续执行的模式,检查接口返回及恢复流程;通过复位启动恢复的模式,在启动早期记录复位/唤醒原因。不能用断点暂停电流判定休眠功耗。

    3.2 反复唤醒或重启

    1. **先记录原因,再清标志。**在初始化清除前,按手册规则保存唤醒/复位原因,结合波形区分预期唤醒、异常中断、看门狗及欠压复位。

    2. **只保留一个可控唤醒源。**确认目标模式支持该来源,暂时关闭非必需的 RTC 闹钟、定时器和通信唤醒。异常消失后逐项恢复,找到重新引入问题的来源。

    3. **核对任务及节拍。**暂停非必需采样、通信和定时任务;RTOS 按其低功耗流程处理系统节拍。唤醒周期与任务周期一致时,重点检查该任务及触发外设。

    4. **排查持续触发。**先停止不需要的触发源,再按手册清除外设标志和待处理中断;核对唤醒引脚电平、边沿、上下拉及抖动。

    5. **处理复位与调试影响。**看门狗按目标模式调整服务或配置;欠压先查供电和仪表压降。断开调试器重新上电,确认是否仍有异常。

    **通过标准:**无非预期唤醒或复位,主动触发后原因与配置一致。业务要求的周期唤醒应保留,同时分别评估平台电流及完整周期平均电流;修复后执行第 4 章验证。

    3.3 稳定休眠但电流偏高

    先确认目标模式和保留功能一致,并排除非预期唤醒。有适配固件时,优先做第 2 章对比,再逐项检查:

    时钟

    • 操作:列出 RTC、定时器及通信唤醒依赖的时钟;核对目标模式保持选项、外设门控和时钟输出。每次只关闭一个不被必需功能使用的时钟或模块。
    • 判断与下一步:电流下降时恢复该项复验,再结合手册确认原因;保留必需唤醒功能。无变化则查 GPIO。

    GPIO

    • 操作:按原理图逐脚核对:确认未使用的普通引脚才关闭不需要的数字通路、上下拉和中断;电源使能、待机及片选脚保持外围要求的电平;复位、调试及唤醒脚单独配置。
    • 判断与下一步:测量实际电平,每次只改变一组引脚。变化可复现时,查上下拉对拉、悬空、外围误开启和反向供电。示例见附录 A。

    外围器件

    • 操作:停止 MCU 通信后,继续按器件手册设置 CAN/LIN 收发器和传感器的待机/休眠状态。板卡允许时逐项隔离外围供电或信号。
    • 判断与下一步:记录使电流下降的支路,恢复原状态复验;MCU 停止通信不代表外围已休眠。

    供电及跨电源域信号

    • 操作:核对稳压器静态电流、使能和输入/输出测量位置;检查断电器件是否被信号线反向供电。隔离时保留 MCU 供电及必需控制电平。
    • 判断与下一步:分别对比 MCU 与外围支路,结合两端电压及器件手册确认路径;整板差异不能直接证明芯片异常。

    **通信引脚处理:**先停止新增发送并等待发送完成,再按 SDK 流程停用外设;仅在不依赖该通信唤醒、且外部电路允许时切换引脚状态。唤醒后恢复时钟、引脚及外设,并验证通信。

    **通过标准:**MCU 支路满足对应条件下的规格/目标,外围状态正确,整板电流满足产品预算。找到原因后执行第 4 章;仍无法定位时,保留基准对比、支路测量及波形记录,继续做板卡交叉验证。

    4. 修复验证与结果记录

    完成以下验证后再关闭问题:

    1. 在相同条件下回退修改复现异常,再重新应用,确认电流和行为变化可重复。

    2. 多次上电,确认每次都能进入并保持目标模式,无非预期唤醒或复位。

    3. 逐一触发必需唤醒源,核对原因及恢复路径,并检查时钟、GPIO、通信和外围功能。

    4. 确认唤醒后还能再次休眠;记录平台电流,有周期唤醒时同时记录完整周期平均电流和周期长度。

    5. 按对应规格条件及产品预算验收,将测量条件、原因和修改内容与工程版本一起归档。

    结果记录:

    复现条件

    • 内容:芯片及板卡版本、相关原理图、SDK/应用版本、固件、电压、温度、仪表、量程、测量位置和接线。

    配置及现象

    • 内容:目标模式、配置数组条目、保留时钟与唤醒源、外围状态、平台电流、周期平均电流及周期、波形和接口返回码。

    定位及修复

    • 内容:唤醒/复位原因、同板基准对比、单项修改及电流变化、最终原因、修复内容和回退复验结果。

    附录 A:关闭未使用引脚与串口恢复示例

    **适用范围:**以下为接口集成示例,适用于工程中具有相同 PINS、LINFlexD、WKU 和 POWER 接口的 SDK;引脚、实例和生成配置必须与实际芯片及板卡一致。已核对 MC0 基准工程中 PINS_DRV_Init()、POWER_SYS_SetMode() 的返回类型为 status_t;这不代表所有型号都具有示例中的 LINFlexD2 或相同引脚映射。

    A.1 仅处理已确认未使用的普通引脚

    LowPower_DisableUnusedPin() 是基于 SDK 接口封装的辅助函数,并非 SDK 自带接口。调用前应确认该脚不承担复位、调试、唤醒或外围控制功能,且板级电路允许关闭数字通路及上下拉。

    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);
    }
    

    A.2 串口停用、进入低功耗及恢复

    以下函数放入已完成初始化的工程中调用,替换原有“配置引脚保持、进入低功耗及恢复串口”的对应流程。前提是:工程确实使用 PTE12/PTD17 作为 LINFlexD2 TX/RX;唤醒源已配置且不依赖该串口;发送已经完成;外部电路允许 TX/RX 进入高阻;目标模式唤醒后从接口继续执行。若唤醒会复位启动,应在启动流程中恢复,不能照搬本函数的返回路径。

    LOW_POWER_MODE 必须是本工程 POWER_SYS_Init() 配置数组中的目标下标。下面保留了原文的“先恢复引脚配置、再解除保持”顺序,集成时还须核对对应型号的引脚保持机制,以及时钟/电源恢复是否由 SDK 或回调完成。生成的引脚初始化数组应包含需要恢复的引脚。

    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;
    }
    

    **调用与判断:**调用方应保存返回值并处理错误,失败时停止后续正常打印及再次休眠,按板级策略恢复;调试时分别查看 deinitStatus、powerStatus、pinStatus 和 uartStatus。返回成功仍需按第 3.1、3.2 节确认实际进入与唤醒行为。该示例已做接口与文本核对,未替代目标工程的编译及实板验证。

    **关于 10 秒延时:**配套文档的 YTM32B1MC0_Standby.zip 中,app/main.c 在 POWER_SYS_Init() 后调用 OSIF_TimeDelay(10000),再进入低功耗。其他型号、版本和业务工程的等待时间应查各自源码。

    1 条回复 最后回复
    0
    • xianghanX 离线
      xianghanX 离线
      xianghan YunTu
      编写于 最后由 xianghan 编辑
      #2

      [SDK] 芯片最低 低功耗测试.pdf
      ELF及工程_按芯片分类_20261021.zip

      1 条回复 最后回复
      0

    • 云途开发生态介绍

      快速上手云途开发生态

    • 云途论坛规则/Yuntu Forum Rules

      发帖前请查看

    • YT CONFIG TOOL调查问卷

      帮助改进和优化YT CONFIG TOOL,有机会抽取YTM32B1ME0 EVB哦...

    • can
      29
      demo
      26
      uds
      14
      lin stack
      13
      fbl
      6
      md14
      6
      yt-link
      6
      adc模块
      4
      Online Users
      • 登录

      • 登录或注册以进行搜索。
      • 第一个帖子
        最后一个帖子
      0
      • 版块
      • 最新
      • 标签
      • 热门