嵌入式低功耗设计实战:从KL26电气特性到系统级优化
1. 项目概述从数据手册到设计实战拿到一份芯片的数据手册尤其是电气特性章节很多工程师的第一反应可能是“头大”。满屏的表格、符号、最小最大值看起来就像一本天书。但如果你做过几个实际项目尤其是那些因为电源设计不当导致系统不稳定或者因为功耗没算准而让产品续航“翻车”的案子你就会明白这些枯燥的数字背后藏着产品成败的关键。今天我们就以恩智浦NXP的Kinetis KL26这款经典的Cortex-M0内核微控制器为例抛开照本宣科聊聊如何把这份几十页的电气特性参数表真正“吃透”并应用到实际的低功耗嵌入式设计中。Kinetis KL26是一款面向低功耗、高性价比应用的32位微控制器它最大的亮点就是在保持足够性能最高48MHz主频的同时提供了极其丰富的低功耗模式。对于做智能手表、环境传感器、便携医疗设备或者任何需要电池长期工作的朋友来说选型时看一眼它的功耗数据很难不心动。但心动之后如何行动如何确保芯片在你的板子上能达到数据手册里宣称的“典型值”甚至更优这中间隔着硬件设计、软件配置和系统联调三重门。本文将结合我过去在多个电池供电项目中使用KL26的经验拆解其核心电气特性并重点分享低功耗设计的实战要点与避坑指南让你不仅能看懂参数更能用好芯片。2. 电气特性基石读懂参数背后的设计约束数据手册的电气特性部分是芯片与外部世界交互的“宪法”。它规定了芯片能承受的极限绝对最大额定值和正常工作的条件推荐工作条件。设计时一旦越界轻则功能异常重则芯片损毁。2.1 绝对最大额定值不可逾越的红线这部分参数是芯片的生存底线超出范围可能导致永久性损坏。KL26的这部分内容需要我们特别关注几个点1. 供电电压VDD其范围是-0.3V到3.8V。这里的-0.3V意味着芯片对轻微的负压有一定的耐受能力这在实际应用中比如热插拔或电源上电时序混乱时可能提供一个短暂的保护窗口。但绝对不可以将其理解为可以在-0.3V下工作正常工作电压必须严格控制在1.71V至3.6V之间。最大值3.8V则提醒我们即使使用常见的3.3V供电也要确保电源轨的上电尖峰或噪声不要超过此限通常需要在电源入口处增加TVS管或确保LDO/DC-DC的输出过冲足够小。2. I/O引脚电压VIO其范围是-0.3V到VDD0.3V。这是一个非常关键且容易出错的地方。它意味着引脚电压绝对不能低于VSS地-0.3V。引脚电压绝对不能高于VDD0.3V。当引脚配置为输入且外部信号电压可能高于VDD时例如一个5V系统与3.3V的KL26通信必须使用电平转换电路或电阻分压绝不能直接连接。我曾见过一个设计将KL26的UART直接连接到一个5V的GPS模块初期测试似乎能收到乱码数据其实是I/O内部保护二极管导通钳位的结果工作一段时间后芯片发热严重最终损坏根源就在于此。3. 单引脚电流ID瞬时最大为±25mA。注意这是“瞬时”和“单引脚”限制。对于驱动LED或MOSFET等场景即使平均电流很小也要注意开关瞬间的电流冲击。KL26的大部分GPIO是普通驱动强度高驱动能力的引脚如PTB0, PTB1等在驱动较大容性负载时上升/下降沿的电流可能接近此值必要时需串联小电阻限流。4. ESD与闩锁Latch-up等级HBM人体模型±2000VCDM器件充电模型±500V闩锁电流±100mA105°C环境。这些参数决定了生产、焊接、测试和日常 handling 过程中需要采取的防静电措施等级。对于消费类产品HBM 2KV是基本要求但在干燥环境或工业现场可能需要更高的设计余量或更严格的ESD防护电路。实操心得在设计原理图阶段我会专门建立一个“电气极限检查表”将VDD、VIO、ID等关键最大额定值列出来并在相应的电源网络和I/O接口旁做上注释。PCB布局完成后再用这个表复查一遍确保无任何网络或信号可能超出这些限制。这个习惯帮我避免了很多潜在的硬件风险。2.2 直流电气特性逻辑世界的规则这部分定义了芯片在推荐工作电压下输入输出电平的“游戏规则”。1. 输入电平门限VIH/VILKL26的输入阈值是比例式的而非固定值。当 VDD ≥ 2.7V 时VIH ≥ 0.7 * VDD,VIL ≤ 0.35 * VDD。当 1.71V ≤ VDD 2.7V 时VIH ≥ 0.75 * VDD,VIL ≤ 0.3 * VDD。假设我们采用典型的3.3V供电那么VIH ≈ 2.31V,VIL ≈ 1.16V。这意味着一个1.8V的逻辑高电平对于KL26来说是无法被可靠识别为高电平的1.8V 2.31V。在进行电平匹配时必须计算清楚。同时芯片还提供了约0.06*VDD约200mV的输入迟滞VHYS这能有效抑制慢变化信号或噪声带来的输入抖动对于连接机械开关、长线传输的信号非常有益。2. 输出驱动能力VOH/VOL这决定了芯片能输出多大的电流并保持合格的逻辑电平。普通驱动强度在3.3V下输出5mA电流时高电平至少为VDD - 0.5V 2.8V低电平最高为0.5V。高驱动强度在3.3V下输出20mA电流时仍需满足同样的压降要求。这告诉我们如果你用普通驱动引脚直接驱动一个压降为2V、需要10mA电流的LED当输出高电平时引脚电压会被拉低至3.3V - (10mA * 引脚内阻) - 2V这个值很可能低于2.8V导致高电平不合格。此时要么选用高驱动引脚要么增加外部驱动电路如三极管。3. 电源电压要求KL26的VDD工作范围是1.71V到3.6VVDDA模拟电源必须与VDD的差值在±0.1V以内。这意味着如果你使用一个3.3V的LDO给VDD供电那么VDDA最好直接从同一路3.3V通过一个磁珠或小电阻隔离后获得并配合去耦电容而不是用一个独立的3.0V电源。两者电压差过大会导致ADC、内部参考电压等模拟电路工作异常。2.3 上电复位与低压检测系统稳定的守护者POR上电复位和LVD低压检测是微控制器可靠启动和运行的基石。KL26的相关参数非常详细。1. POR检测电压VPOR典型值1.1V范围0.8V到1.5V。当VDD从0上升超过此阈值后芯片开始启动。但请注意数据手册给出从VDD达到1.8V到执行第一条指令的时间tPOR最大为300μs。这意味着你的电源电压从0上升到稳定例如3.3V的速率必须保证在电压超过VPOR后有足够的时间300μs达到稳定否则芯片可能启动异常。对于使用大电容或缓慢上电的电路需要评估这个时间。2. LVD低电压检测KL26提供了可编程的LVD阈值VLVDL/VLVDH和四级低电压警告LVW。这是一个极其有用的功能尤其在电池供电应用中。低范围LVDV00检测阈值典型值1.60V。适用于两节干电池标称3V截止约2V或单节锂电截止通常2.8V-3.0V的应用。你可以在电池电压跌至1.8VLVW1L时收到警告进行数据保存在跌至1.6V时强制复位防止CPU在过低电压下运行出错。高范围LVDV01检测阈值典型值2.56V。更适合用于标称3.3V的系统当电源异常跌落时提供保护。配置示例假设我们设计一个由3.3V LDO供电的产品希望电压低于2.8V时警告低于2.6V时复位。我们可以选择高范围LVD并设置LVW阈值到Level 2典型值2.80VLVD阈值到2.56V。这样当输入电压跌落导致LDO输出低于2.8V时会触发中断软件可紧急保存关键数据低于2.6V时芯片复位确保系统状态确定。3. 功耗深度解析从数据到策略KL26的低功耗能力是其核心卖点。但数据手册中密密麻麻的电流值需要结合模式、配置和温度综合解读。3.1 功耗模式全景图KL26提供了从高性能运行到深度睡眠的多种功耗模式理解其状态机是进行功耗管理的前提运行模式RUN全速运行所有模块可用。等待模式WAITCPU停止外设和中断可唤醒。停止模式STOPCPU和系统时钟停止部分外设时钟可选保持由中断唤醒。低泄漏停止模式LLS比STOP更省电仅保留少数低功耗外设如RTC、LPTMR和IO状态。极低功耗运行/等待模式VLPR/VLPWCPU降频至4MHz总线/Flash降至1MHz/0.8MHz下的运行/等待模式。极低功耗停止模式VLPS进入STOP模式但前提是从VLPR模式进入功耗极低。极低泄漏停止模式VLLSx最深度的睡眠模式分为0/1/3三级。VLLS0功耗最低但唤醒后从复位开始VLLS1/3可保留RAM和部分寄存器状态快速唤醒。3.2 关键功耗数据解读与计算我们以3.0V25°C的典型条件为例分析几个核心数据1. 全速运行功耗IDD_RUN当内核48MHz总线/Flash 24MHz所有外设时钟关闭从Flash执行简单循环代码时典型电流为4.6mA。如果开启所有外设时钟电流升至6.0mA。这给出了一个基准KL26全速运行的“底噪”在5mA量级。2. 极低功耗运行模式IDD_VLPR内核降至4MHz总线/Flash降至0.8MHz同样关闭外设时钟典型电流仅185μA。这是实现“低功耗实时处理”的关键。对于一些需要周期性采集传感器数据并进行简单处理如滤波、阈值判断的应用VLPR模式比频繁进出深度睡眠模式唤醒-全速处理-休眠可能整体功耗更低因为模式切换本身有时间和能量开销。3. 深度睡眠模式对比STOP305μA。保留了所有寄存器可由任何中断快速唤醒~5μs。VLPS2.69μA。比STOP低两个数量级但需从VLPR进入。LLS1.98μA。可保留32字节寄存器文件和RAM由特定引脚或低功耗外设唤醒。VLLS00.40μAPOR保持关闭或0.23μAPOR保持开启。最低功耗但唤醒相当于冷复位需要更长的恢复时间~120μs。4. 外设功耗附加项Adder这是评估系统总功耗的关键。数据手册表10列出了各种外设在低功耗模式下的额外电流。例如在STOP模式下使能4MHz内部时钟IRC增加56μA。在STOP模式下使能外部4MHz晶振增加228μA。在VLLS1模式下使能RTC使用外部32kHz晶振仅增加约0.36μA典型值。在STOP模式下使能UART使用内部4MHz时钟等待接收增加66μA。系统功耗估算实战假设我们设计一个无线温湿度传感器每5分钟唤醒一次采集数据并通过低功耗蓝牙发送。工作流程如下大部分时间处于VLLS3模式保留RAM快速唤醒使能RTC用于定时唤醒。功耗 IDD_VLLS3 (1.46μA) IRTC (0.357μA) ≈ 1.82μA。RTC每5分钟产生中断唤醒系统至RUN模式48MHz。唤醒时间约47μs此期间平均功耗按RUN模式估算。唤醒后初始化传感器I2C、读取数据、处理、通过蓝牙发送。假设此过程耗时100ms平均电流为8mA包含射频功耗。任务完成后重新进入VLLS3。平均电流计算睡眠周期电流1.82μA * (300s - 0.1s) ≈ 546μA·s工作周期电流8mA * 0.1s 800μA·s唤醒过程电流粗略估算5mA * 47μs 0.235μA·s占比极小可忽略总平均电流≈(546 800) μA·s / 300s ≈ 4.49μA这个计算表明即使有100ms的高功耗工作窗口系统的平均电流依然可以控制在微安级使用一颗200mAh的纽扣电池理论续航可达200mAh / 4.49μA ≈ 5年以上。这展示了合理利用低功耗模式的巨大威力。避坑指南功耗估算最容易忽略的是“隐藏”的耗电单元。GPIO状态未使用的GPIO如果悬空可能因感应电压产生微小的漏电流。务必在初始化时将未用引脚设置为输出低或带上拉/下拉的输入模式。模拟模块ADC、DAC、比较器CMP等模块即使不转换如果使能了其时钟或参考电压也会消耗电流。在进入低功耗模式前必须检查并关闭所有不需要的模拟外设。调试接口SWD/JTAG接口在芯片运行时也会消耗少量电流。在产品最终版本中如果不需要在线调试可以考虑禁用或物理断开。电源管理误区不要以为进入最深的VLLS0模式就一定最省电。如果应用需要频繁唤醒且每次唤醒后都要进行复杂的初始化从复位开始那么频繁的复位初始化过程所消耗的能量总和可能超过使用VLLS1/3或LLS这些能保留状态、快速唤醒的模式。需要根据唤醒频率和唤醒后的任务来权衡。4. 低功耗设计实战软硬件协同优化理解了参数和模式下一步就是如何在项目中实现最优的低功耗设计。这需要硬件和软件紧密配合。4.1 硬件设计要点1. 电源网络设计去耦电容这是老生常谈但对低功耗芯片至关重要。KL26的电源引脚VDD、VDDA附近必须放置容值搭配合理的去耦电容如10uF 0.1uF 0.01uF以提供瞬间电流并滤除高频噪声。噪声过大会导致内部逻辑翻转消耗额外电流甚至触发LVD误报警。电源隔离使用磁珠Ferrite Bead或0Ω电阻将模拟电源VDDA与数字电源VDD在物理上隔离并在VDDA侧增加额外的LC滤波可以显著降低数字开关噪声对ADC等模拟电路的影响提高测量精度有时也能降低整体噪声功耗。LDO选型选择静态电流IQ极低的LDO。为KL26供电的LDO其自身静态电流可能达到几个μA甚至更高如果它比MCU在睡眠时的电流还大那就本末倒置了。应选择IQ在1μA以下的超低功耗LDO。2. 时钟电路设计外部晶振 vs. 内部RC外部晶振精度高但即使不工作其负载电容和芯片内部的振荡器电路也可能存在漏电。KL26的数据显示在STOP模式下使能外部4MHz晶振会增加约228μA电流而内部4MHz RC仅增加56μA。对于时钟精度要求不高的低功耗应用优先使用内部RC振荡器。如果必须使用外部晶振如为USB或高精度定时提供时钟确保软件可以在进入深度睡眠前将其关闭。32.768kHz晶振用于RTC计时。KL26在VLLS模式下使用外部32kHz晶振的附加电流仅约0.5μA这是非常优秀的。布局时该晶振应尽量靠近芯片XTAL引脚走线短且对称用地线包围并严格按照数据手册推荐值选择负载电容CL。3. 外围电路漏电管理上拉/下拉电阻连接到GPIO的外部上拉/下拉电阻是“功耗杀手”。例如一个连接到3.3V的10kΩ上拉电阻当GPIO输出低电平时将产生3.3V / 10kΩ 330μA的持续电流这比VLLS模式下的整个MCU功耗还高解决方案是1使用更大阻值的电阻如1MΩ2在MCU可控制的前提下通过一个GPIO或电源开关来动态控制上拉电源的通断。传感器电源管理不要让传感器始终通电。使用一个MCU的GPIO配置为开漏输出或配合三极管/MOSFET来控制传感器的电源开关。仅在需要测量时上电测量完成后立即断电。4.2 软件配置与优化策略1. 系统时钟树管理功耗与频率成正比。在非实时性要求高的阶段动态降频是首选。// 示例切换到极低功耗运行模式VLPR void Enter_VLPR_Mode(void) { // 1. 首先将系统时钟源切换到内部慢速时钟IRC MCG-C1 | MCG_C1_CLKS(2); // 选择内部参考时钟 while((MCG-S MCG_S_CLKST_MASK) ! MCG_S_CLKST(2)); // 等待切换完成 // 2. 配置MCG进入BLPI模式旁路低功耗内部 MCG-C2 ~(MCG_C2_LP_MASK); // 关闭FLL锁相环低功耗位如果之前使能 // ... 其他相关MCG配置确保进入BLPI模式 // 3. 配置系统时钟分频器降低核心、总线、Flash时钟 SIM-CLKDIV1 SIM_CLKDIV1_OUTDIV1(0) | // Core 4MHz (假设输入时钟4MHz) SIM_CLKDIV1_OUTDIV2(3) | // Bus 1MHz (4/4) SIM_CLKDIV1_OUTDIV4(4); // Flash 0.8MHz (4/5) // 注意进入VLPR前必须确保时钟配置符合VLPR模式限制核心4MHz总线1MHz // 4. 切换到VLPR模式 SMC-PMPROT | SMC_PMPROT_AVLP_MASK; // 允许VLPR模式 SMC-PMCTRL (SMC-PMCTRL ~SMC_PMCTRL_RUNM_MASK) | SMC_PMCTRL_RUNM(2); // 进入VLPR while((SMC-PMSTAT SMC_PMSTAT_PMSTAT_MASK) ! 0x04); // 等待确认进入VLPR }进入VLPR后所有外设的时钟频率上限也相应降低需检查并调整UART波特率、PWM频率等参数。2. 外设时钟门控这是最直接有效的省电方法。KL26的每个外设模块都有一个时钟门控位通常在SIM_SCGCx寄存器中。在初始化外设前打开使用完毕后立即关闭。// 使用UART前使能时钟 SIM-SCGC4 | SIM_SCGC4_UART0_MASK; // ... 配置并使用UART ... // UART使用完毕后在进入低功耗模式前关闭其时钟 SIM-SCGC4 ~SIM_SCGC4_UART0_MASK;养成“即用即开用完即关”的习惯。可以在软件架构上将外设初始化和反初始化做成对称的函数对。3. I/O引脚状态配置在进入深度睡眠尤其是VLLSx、LLS前必须妥善处理所有GPIO。输出引脚设置为已知的稳定状态高或低避免驱动外部电路产生不必要的电流。如果驱动的是MOSFET确保其处于关闭状态。输入引脚使能内部上拉或下拉电阻避免悬空。悬空的引脚会因电场耦合导致电平不确定可能使输入缓冲器不断翻转消耗额外电流。根据外部电路情况选择上拉或下拉。模拟功能引脚如果引脚复用了ADC、DAC等功能在进入低功耗前应将其配置为数字输入并禁用模拟功能以减少漏电。4. 低功耗模式进入与唤醒流程进入低功耗模式不是简单调用一个函数而是一个需要精心编排的流程。void Enter_DeepSleep_VLLS3(void) { // 1. 保存关键系统状态如果需要从VLLS3快速恢复 Save_System_Context(); // 2. 关闭所有不需要的外设时钟 Disable_Peripheral_Clocks(); // 3. 配置所有GPIO为安全状态 Configure_GPIOs_for_Sleep(); // 4. 配置唤醒源例如使能RTC中断、外部引脚中断 NVIC_EnableIRQ(RTC_IRQn); RTC-IER | RTC_IER_TSIE_MASK; // 使能秒中断 // 5. 设置SMC寄存器准备进入VLLS3 SMC-PMPROT | SMC_PMPROT_AVLLS_MASK; // 允许VLLSx模式 SMC-PMCTRL (SMC-PMCTRL ~SMC_PMCTRL_STOPM_MASK) | SMC_PMCTRL_STOPM(0x4); // VLLS3 SMC-VLLSCTRL SMC_VLLSCTRL_VLLSM(3); // 选择VLLS3子模式保留RAM // 6. 执行WFI指令进入睡眠 __DSB(); __WFI(); // 系统将在此挂起直到唤醒事件发生 // 7. 唤醒后从这里开始执行 Restore_System_Context(); // 恢复状态 System_Clock_Reconfig(); // 重新配置系统时钟VLLS3唤醒后时钟可能复位 // ... 继续执行主程序 }关键点VLLS0/1/3模式唤醒后的行为不同。VLLS0唤醒类似于上电复位程序从复位向量开始执行。VLLS1/3可以保留RAM和部分寄存器唤醒后可以从WFI指令之后继续执行但系统时钟需要重新配置。务必根据需求选择正确的模式。5. 常见问题排查与调试技巧即使按照手册设计低功耗系统调试中仍会遇到各种“诡异”问题。以下是一些常见问题及排查思路。5.1 实测功耗远高于理论值这是最常见的问题。排查步骤应像侦探破案一样由外到内由大到小。1. 排除外部电路这是第一步也是最容易的一步。断开法将MCU从板子上取下测量板子的静态电流。如果电流依然很大问题肯定在外围电路传感器、指示灯、电平转换芯片、LDO自身功耗等。逐个排除如果MCU焊接在板上可以尝试逐个移除或断开可能耗电的元件用烙铁或跳线观察电流变化。2. 检查MCU配置如果确定问题在MCU本身则需深入软件。使用调试器查看寄存器在进入低功耗模式前设置断点通过调试器如J-Link读取关键寄存器状态SIM_SCGCx检查是否有关闭了的外设时钟又被意外打开。PORTx_PCRn检查GPIO配置是否正确特别是复用功能是否关闭上下拉是否合理。MCG_C1/C2检查时钟源和模式是否正确。SMC_PMCTRL/PMSTAT确认成功进入了目标低功耗模式。利用GPIO辅助调试在进入低功耗模式的代码前后控制一个GPIO引脚翻转用示波器观察。如果引脚在预期的时间点没有变化说明程序可能在进入低功耗前就卡住了。如果进入低功耗后该引脚电平不稳定说明可能有中断不断唤醒MCU。3. 检查唤醒源系统无法进入深度睡眠或进入后立即被唤醒。禁用所有中断在进入低功耗前先禁用全局中断__disable_irq()然后测量电流。如果电流降下来了说明有未处理的中断或中断标志位未清除在不断触发唤醒。然后逐个使能中断定位问题源。检查外设状态标志一些外设如UART、ADC、LPTMR在使能后即使没有配置中断其内部状态标志如接收完成、转换完成、定时器溢出也可能被置位。在进入低功耗前读取并清除这些标志位UART0-S1; ADC0-SC1[0]等。5.2 系统唤醒后运行异常1. 时钟未正确恢复从VLLS1/3、LLS等模式唤醒后系统时钟源可能被重置为默认的内部慢速时钟IRC。如果唤醒后的代码需要更高的系统频率必须在唤醒后第一时间重新初始化时钟系统MCG模块将时钟切换到所需的高频源如PLL。void System_Clock_Reconfig_After_VLLS3(void) { // 检查时钟源状态 if((MCG-S MCG_S_CLKST_MASK) MCG_S_CLKST(0)) { // 处于FLL内部参考模式(FEI)需要重新配置到PEE模式48MHz // ... 完整的MCG初始化代码使能外部晶振和PLL ... } // 重新配置SIM_CLKDIV等分频器 SIM-CLKDIV1 SIM_CLKDIV1_OUTDIV1(0) | // Core 48MHz SIM_CLKDIV1_OUTDIV2(1) | // Bus 24MHz SIM_CLKDIV1_OUTDIV4(1); // Flash 24MHz }2. 外设状态丢失从LLS/VLLS1/3唤醒后GPIO状态和部分外设寄存器得以保留但很多外设如UART、SPI、I2C的模块配置会丢失需要重新初始化。而VLLS0唤醒相当于复位所有外设都需要重新初始化。软件设计上最好有一个统一的Peripheral_Reinit()函数根据唤醒来源决定是全部初始化还是部分恢复。3. 电源稳定性问题在唤醒瞬间尤其是从深度睡眠模式唤醒到全速运行模式MCU的电流需求会瞬间增大从微安级跃升至毫安级。如果电源电路响应慢或去耦不足会导致VDD电压瞬间跌落可能触发LVD复位或导致程序跑飞。解决方案是确保电源路径包括PCB走线阻抗足够低并在MCU的VDD引脚附近放置足够容量的储能电容如10-22uF的陶瓷电容。5.3 低功耗模式下外设功能异常1. 通信外设UART/I2C/SPI在VLPR模式下无法工作VLPR模式下总线时钟fBUS最高只有1MHz。如果你将UART的时钟源设置为总线时钟Bus Clock并试图产生115200的波特率计算出的分频系数可能超出模块允许的范围或者精度变得很差。解决方案是在VLPR模式下为这些外设选择独立的、频率合适的时钟源例如内部或外部的4MHz时钟MCGIRCLK或OSCERCLK并重新计算分频器。2. 低功耗定时器LPTMR在VLLS模式下不计数LPTMR的时钟源选择有限。在VLLS模式下只有特定的时钟源可用如内部1kHz LPO或外部引脚输入。确保在进入VLLS前将LPTMR的时钟源切换到这些可用的低频源上。同时检查SIM-SCGC5寄存器中LPTMR的时钟门控是否在低功耗模式下依然保持使能对于某些深度睡眠模式部分外设时钟会自动关闭需要查证手册。3. ADC在低功耗模式下采样不准或无法启动首先ADC模块在STOP、VLPS等模式下是关闭的无法工作。如果需要在低功耗下采样可以考虑使用带窗口比较功能的模拟比较器CMP它可以在VLLS1模式下以极低功耗运行。其次如果是在VLPR模式下使用ADC需要注意ADC的转换时钟fADCK不能超过该模式下的上限通常较低并且要等待ADC的参考电压稳定尤其是使用内部带隙基准时需要使能并等待稳定。调试低功耗系统一个高精度的电流表能测量nA~mA级和一台支持低功耗调试的仿真器如J-Link Ultra或支持“连接下电”功能的调试器是必不可少的工具。通过测量不同工作阶段的电流波形可以直观地看到模式切换是否成功是否存在异常唤醒从而快速定位问题根源。