相信做低功耗产品的同行都有这种经历选型时被 datasheet 上的某个数字打动结果板子焊好一测电流比标称值高了几十倍然后开始怀疑芯片、怀疑人生。我最近翻到 Nordic 一颗新料看完了详细资料并对照自己做过的几个低功耗项目反复对比后确实想围绕这个“50 nA”好好聊几句。标题里算的那笔账很直观休眠电流不到 50 nA一年下来只消耗 0.438 mAh也就是拿一颗 CR2032 纽扣电池光“睡觉”可以撑五百年。这个数字夸张吗从理论计算上它真没夸张。这颗芯片最吸引我的地方不是某项跑分有多高而是它把“休眠电流”这个参数从传统 MCU 的微安级别直接拽到了纳安级别。我见过太多传感器节点、门锁、电子价签项目最后续航上不去问题都不是出在工作时的功耗而是出在 99% 时间里那“微不足道”的待机漏电上。这篇文章我想从这颗芯片的技术实现讲起结合我自己调试低功耗设备的经验把 nA 级电流背后的设计逻辑、硬件电路的坑、电流测量方法以及整个低功耗项目的推进节奏都拆开聊一聊。不管你是刚接触低功耗设计的初学者还是被产品续航问题折磨了很久的工程师相信都能在这篇里找到一些有用的东西。1. 50 nA 是怎么实现的一颗芯片为了省电有多拼如果把普通 MCU 的深度睡眠电流通常 1~5 µA和这颗芯片的 50 nA 放在一起看差距不是“优化”出来的而是架构层面换了思路。先说一个最容易被忽略的事实MCU 所谓“睡眠”并不是芯片内部全部断电。CPU 核心停了但稳压器、基准源、上电复位、欠压检测电路都还挂在电源轨上它们不干活但一直在“漏”。传统低功耗 MCU 的普遍做法是让片内 LDO 进入低静态模式把基准源切换到慢速模式试图把电流压低。但基准源也好、LDO 分压电阻也好只要电路还通着电物理上就有电流路径。Nordic 这代产品做了几个很激进的设计决策所有非必要模拟模块直接用电源开关切断而不是“降流运行”RTC 振荡器使用了一颗独立的超低功耗架构不再依赖主 LDO 供电掉电检测电路甚至可以在休眠时完全关闭等唤醒事件发生后再重新上电初始化。这一套组合拳打下来休眠电流自然就压到了 nA 级。另外一个颠覆性设计是多电源域策略。传统芯片顶多分“核心域”“外设域”和“常开域”但这颗料把 CPU 域、外设域、RTC 域、GPIO 保持域全都独立出来。休眠时 CPU 域和外设域直接断电只有维持 RTC 计时和引脚唤醒的最小电路还在工作。你可以这样理解普通芯片睡觉时是整个房间留了一盏走廊灯耗电自然降不下来而它是人睡了把所有灯都关了只留一个夜光时钟面板。电源域传统低功耗 MCUNordic 新料CPU 核心域时钟关闭但仍有漏电彻底断电外设域部分外设可关完全断电按需启动RTC 域保持运行超低功耗独立振荡器GPIO 保持域通常不单独区分独立维持引脚状态但有个东西是绕不过去的RAM 的漏电。RAM 存储单元只要还在保持数据就会有物理漏电流这跟芯片设计水平无关是硅片本身的特性。所以厂商标 50 nA 的前提一定是“最小保留配置”——比如只保留唤醒上下文所在的那一小块 RAM甚至完全不保持 RAM。如果你休眠期间必须要保留全部 RAM 数据电流会明显上升。这一点后面实测部分我会再说厂商放在小字注释里的条件往往才是真正影响你项目成败的关键。2. 休眠电流参数之外细节里的魔鬼参数表上的 50 nA 看着很美但你真的能测出来吗我自己的经验是能但必须在电路设计和测量方法上都有足够的敬畏。厂商标的是“芯片自身”的电流而你板子上只要有一个 100 kΩ 的电阻跨在电源和地之间3 V 电压下就是 30 µA 的漏电——这已经是 600 倍的差距。2.1 从引脚上溜走的电流GPIO 是最容易被忽视的漏电路径。芯片内部做好了隔离但外部电路和外设芯片可不管这些。最常见的情况是这样的某个外设芯片在上电时把 GPIO 拉到了高电平而你的 MCU 此时已经进入休眠IO 口保护二极管会形成一条从外部电源经由 GPIO 反灌回芯片内部的通路。这种问题在原理图阶段完全看不出来只有用电流表实测才会发现。还有一种情况更隐蔽GPIO 配置成输入但引脚悬空。悬空引脚的电平不确定输入缓冲器的 MOS 管会处于半开半关状态形成贯穿电流。我调试时遇到过一次明明所有外设都关了休眠电流就是有 2 µA排查到最后发现是一排没用的 GPIO 保持默认配置把它们全部设成输出低或者使能内部下拉之后电流立刻掉下来。所以看芯片的 GPIO 状态寄存器其实比看电路图更重要。2.2 外部的固定漏电点这个坑几乎每个低功耗项目都会踩分压电阻网络。很多设计为了采样电池电压在电池正极和地之间放了两个 1 MΩ 电阻构成分压器。两个 1 MΩ 并联等效 500 kΩ3.6 V 电池下漏电是 7.2 µA。这颗芯片再厉害也救不回来。我现在的处理方式有三种分压网络串联一个 NMOS 开关只在需要采样时打开用 10 MΩ 级别的大电阻把漏电流压到亚微安级但要注意 ADC 输入阻抗带来的误差干脆把电压采样放到休眠之前完成采样结果存进寄存器而不是让分压电阻长期挂网类似的重灾区还有外部 LDO。很多工程师选 LDO 只看噪声和压差忽略了静态电流 Iq。一个典型的低功耗 LDOIq 大概在 1~3 µA这已经是芯片自身休眠电流的几十倍了。如果你的产品对功耗敏感LDO 选型时一定要看 Iq或者干脆用 DC-DC 并在休眠时关断。2.3 测量 50 nA 的正确姿势普通万用表的电流分辨率顶多到 0.1 µA而且电流档的内阻会带来额外压降影响被测电路的运行状态。我测 nA 级电流一般用三种方法方法适用场景注意事项精密静电计/源表稳态休眠电流仪器昂贵适合实验室固定台位积分法电容测电压变化率长周期平均电流要选低漏电电容否则结果被电容自放电淹没电流放大器示波器观察唤醒瞬间的瞬态电流需注意放大器输入偏置电流要远小于被测电流用积分法举个例子把一个 100 nF 的 C0G 电容串联在电源回路里记录电容电压在睡眠期间的上升速率。如果 10 分钟内电压上升了 30 mV那么平均电流就是 C × dV/dt 100 nF × 0.03 V / 600 s 5 nA。这个方法精度取决于电容的自放电性能C0G 材质的好一些X7R 就不要用在这种场合了。注意测休眠电流时务必等芯片完全进入休眠状态再读数。很多芯片进入睡眠后片内电容放电和引脚电平稳定还需要几百毫秒急着读数是读不准的。我一般会等 5~10 秒看到电流数值稳定后再记录。3. 低功耗项目实操流程从选型到量产的经验汇总之前带过一个项目无线温湿度标签要用两颗 CR2032 电池撑三年。当时做功耗预算全网找了不少芯片回头看整个项目推进过程很有代表性我就按这个流程把实操经验写出来。3.1 第一步永远是写功耗预算表而不是画原理图这个习惯我强调了无数次。把系统拆成休眠、采样、通讯三个状态给每个状态分配时间和电流然后用加权平均算出平均电流。我们当时的目标是平均电流低于 8 µA选了 Nordic 这颗料之后预算表立刻好看很多。状态时间占比状态电流对平均电流的贡献深度休眠99.8%0.1 µA0.0998 µA传感器采样ADC0.1%500 µA0.5 µA无线发送(RF TX)0.1%5 mA5 µA算完你就发现休眠电流哪怕翻一倍对平均电流的影响也只有 0.1 µA 级别但通信电流只要多 1 mA平均电流就多 1 µA。这提醒我们一个易被带偏的思路不要在休眠电流上无限追求极致真正的功耗大头在现代无线芯片发送数据的那几百毫秒里。3.2 开发板默认状态是个坑拿到芯片配的开发板第一件事不是跑 demo而是查板子上的默认功耗。很多开发板为了调试方便LED、调试器、电平转换器等一应俱全全部处于活跃状态。有一次我拿到的开发板什么代码都没烧上电电流就有 6 mA——那是因为板载 DAP-Link 调试器一直在工作。断开调试器跳线之后电流才降到正常范围。所以警告一句不要用原厂开发板直接测“芯片功耗”。要测准得自己画最小系统板或者至少把调试器部分从供电回路里切出去。这块板只留芯片、晶振、去耦电容和必要的唤醒按键尽量把变量降到最低。3.3 用二分法逐模块确认电流消耗我的做法是代码侧也分层测试第一步只做空循环进入休眠测基础电流第二步打开 RTC测 RTC 保持的电流增量第三步使能 GPIO 唤醒第四步打开 RAM 保持功能。每加一个功能就记一次数。这样能精确知道哪个模块“贵”哪里还有优化空间。实际的测试数据显示这颗芯片仅保留 RTC 和 GPIO 唤醒时电流可以稳定到 80~120 nA 的范围留住了典型值 50 nA 的量级。如果打开 8 KB RAM 保持电流会跳到 300~400 nA依然很低但没有“50 nA 那么美了”。所以设计产品时要按真实需求确认 RAM 保持的容量预算表里写的是实际测得的数据不写理想值。3.4 把电流数据换算成真正的电池寿命有了平均电流电池寿命估算就只是小学数学了。但很多新手会犯一个错误直接用电池标称容量除以平均电流得出一个过于乐观的年限。电池容量会随放电率、温度、自放电率变化。CR2032 在 10 µA 负载下实际可用容量往往只有标称的 60~70%。正确的估算方式[ 电池寿命 \frac{电池可用容量 \times 折算系数}{平均电流} ]拿一个平均电流 5 µA 的设计为例一颗标称 220 mAh 的 CR2032可用容量按 150 mAh 算寿命就是 150 ÷ 0.005 30000 小时约 3.4 年。如果你想设计一个 5 年寿命的产品那么平均电流必须压到 150 ÷ (5 × 8760) ≈ 3.4 µA。这个目标在传统 MCU 上要费很大力气但用上 nA 级休眠芯片后余量就变得充裕多了。4. 常见问题与排查技巧实录做低功耗调试这几年我踩过的坑能列一长串。这里挑几个出现频次最高的直接做成速查表方便你以后遇到类似问题快速定位。问题现象可能原因排查方法休眠电流比规格大 10 倍外部上拉电阻/分压电阻未断开逐个断开外围模块看电流变化电流读数跳动不稳定芯片未完全进入休眠或频繁被唤醒示波器看唤醒引脚电平检查中断标志加上传感器后休眠电流暴增传感器经 GPIO 反灌漏电用 MOSFET 或 IO 口切断传感器电源低温下电流正常高温后翻倍漏电随温度指数上升用温箱测试重新算功耗预算万用表测不出 50 nA万用表分辨率不够换用静电计或积分法4.1 “按下唤醒按钮后电流迅速变大”这个坑和我们常见的边沿触发有关。GPIO 唤醒建议用下降沿或上升沿触发但外部按键抖动或者强干扰会生成一串脉冲导致系统反复唤醒看起来就是电流下不去。解决方法是硬件上加一个小电容到按键两端做去抖软件上进入休眠前先把唤醒引脚的中断使能和电平触发方式配置好再关全局中断。顺序反了的话最后关闭中断的那条指令可能顺便把唤醒事件也错过去了。4.2 “为什么我把外部电路都拆了电流还是 2 µA”这是很多人容易忽略的芯片的供电引脚旁边有去耦电容电容本身也有漏电。优质 MLCC 在常温下漏电很小nA 级别但便宜的 X5R/X7R 电容漏电可能达到微安级。在 nA 级的世界里一颗劣质电容就可能毁掉整个功耗设计的努力。我现在的做法是靠近芯片的电源引脚只用 C0G 材质的小容量电容大容量的储能电容选择低漏电的钽电容或者高分子电容。成本会高一点但这是保证休眠电流真实可达的前提。4.3 唤醒后外设不工作的问题低功耗唤醒后外设和时钟的重新初始化顺序非常关键。我见过不少代码在 main 函数的 while 循环里直接调用了外设函数结果唤醒后发现 SPI 通信异常因为 SPI 外设的时钟在休眠时被关闭了唤醒后没有重新使能。正确做法是在 main 函数开头就把系统时钟和外设时钟配置好再进休眠之前关闭唤醒后重新初始化需要的部分。4.4 示波器表笔测不到动态功耗很多无线芯片发射时的工作电流变化极快比如从 1 µA 跳到 20 mA 只用了微秒级别的时间。示波器用电流探头都未必抓得到完整的波形。这个时候我依靠的是逻辑分析仪抓事件时序再用高采样率的电流检测电阻方案估算峰值功耗。不过这部分通常不是预算表里的主角——真正决定电池寿命的永远是那些几乎看不见的基础电流。5. 这颗芯片带来的行业变化与选型思考nA 级休眠电流不是一个孤立参数它标志着一个设计思路的转变电池供电产品的续航瓶颈开始从“芯片睡眠电流”转移到“系统外设漏电”和“电池自放电”上。过去设计传感器节点我们默认 MCU 的休眠电流至少 1~2 µA那么一个 10 年寿命的工业表计必须选择工业级锂亚电池。锂亚电池自放电率低但价格高、内阻大而且高负载能力差。现在如果芯片能把睡眠电流压到 100 nA 以内某些场景下就可以用更便宜、更常见的电池方案连 BOM 成本都能一起降下来。我判断一颗低功耗芯片是否值得选型通常看三个维度评估维度关注点这颗芯片的实际表现休眠功耗电流量级、唤醒源丰富度nA 级支持多路 GPIO/RTC 唤醒唤醒速度从休眠到可执行代码的时间微秒级快速唤醒适合间歇采样外围集成度射频前端、电源管理集成度高集成度减少外部漏电路径第三个维度往往被人忽视。集成度高不只是省 PCB 面积更重要的是减少了外部器件之间的漏电路径。外设越少需要考虑的静态电流越少系统越容易达到标称功耗。6. 我的实践经验总结要做到 nA 级功耗芯片只是入场券做了这么多低功耗项目之后我的一个体会是芯片选型只是决定了你功耗的下限系统设计才决定你能不能摸到这个下限。同一颗芯片有人能做出 100 nA 的整机休眠电流有人做出来 3 µA差别就在电路和代码的细节里。我给自己定了几条设计规则分享给大家参考休眠时所有非必要外设的电源轨必须切掉包括传感器、放大器、电平转换芯片所有 GPIO 必须明确配置禁止悬空优先配置成输出低电源路径上的电阻网络要么加大到 MΩ 级要么用开关管断开绝不放任不管选择 LDO 时必须检查 Iq并且把它的静态电流纳入整机功耗预算每个阶段的功能验证完成后重复测一遍整机休眠电流防止后续改动引入新的漏电通路抛开芯片本身不谈低功耗设计实际上更像一种“系统思维”的培养。你要对整个硬件的电流路径有清晰的地图感知道每一纳安是从哪里流出、流向哪里你也要知道当你把 MCU 的休眠电流压到极限后系统的对手已经不是芯片而是连接器上的灰尘、PCB 的绝缘电阻、电容的自放电、甚至空气中湿度在引脚间形成的微弱导电路径。我遇到过最夸张的一次一块板子白天测 200 nA到了梅雨季节再测直接跳到 5 µA。查了很久才发现是 PCB 表面没有做三防漆处理潮湿环境下相邻引脚之间的水膜形成了微弱的导电桥。这个情况在普通微安级功耗设计里根本看不出来到了 nA 级就藏不住了。所以后来我的低功耗测试流程里增加了一条硬性规定所有低功耗产品在量产前必须做高温高湿环境下的休眠电流复测。这也是我想给所有做低功耗设计的同行的一句真心话datasheet 上的 50 nA 很好看但真正做出超长待机的产品靠的从来不只是那颗芯片而是把每一个细节都抠到极致的系统级功力。
阅读完成 · 觉得有帮助?