50 nA 是什么概念普遍认知里芯片低功耗做到微安级已经值得一吹了而这颗 Nordic 芯片把休眠电流压到了纳安级。按 50 nA 算连续挂一年只消耗大约 0.438 mAh——也就是说一颗普通的 CR2032 纽扣电池光供它睡觉就能撑几十年。看到这个数字我第一反应是“标错小数点了吧”。把这一级别功耗做进量产芯片里实际难度远不止项目标题看起来这么简单。今天就把这个“50 nA”拆开聊透功耗数字本身怎么理解、猜测一下 Nordic 用了哪些手段把它压到纳安级、系统级设计里要怎样配合才能真吃住这个红利以及 nA 级电流到底怎么测、怎么排坑。适合做物联网终端、可穿戴设备、资产追踪、传感器节点还有对电池续航有执念的嵌入式硬件工程师参考。1. 一个数字说明白0.438 mAh 是怎么来的以及它在行业里是什么水平1.1 数字背后不是宣传话术是可复算的物理事实先做一遍基础验算。休眠电流典型值 50 nA即 0.00000005 A一年是 8760 小时0.00000005 A × 8760 h 0.000438 Ah 0.438 mAh也就是说标题里的数字不是厂商拍脑袋是一道乘法题。这 0.438 mAh 是什么量级一粒黄豆大小的 MLCC 电容、一颗卡在 PCB 上没拔下来的调试探针、甚至是 PCB 表面防潮处理没做好带来的漏电流都可能比它大几个数量级。数据对得上逻辑自洽没有水分。这个数字在很多低功耗场景里意味着什么用 30 mAh 的微型软包电池比如 TWS 耳机仓里的那个光待机就能撑将近 70 年用 250 mAh 的纽扣电池休眠理论上可以放 570 年——注意这只是理论值因为电池自己太久也会自放电放空设备寿命的瓶颈从“芯片”彻底转移到了“电池自放电”和“法拉电容自漏电”上。我常对刚入行的硬件工程师说一句话低功耗的尽头不是 MCU 的 Sleep 电流而是你自己 PCB 上的漏电路径。1.2 50 nA 为什么不寻常把时间往回拨十年。当年 nRF51822 时代System OFF 模式相当于深度断电只留很少电路工作典型电流大概在 0.6 µA 左右也就是 600 nA 的级别。现在新一代 Nordic 芯片把休眠压到 50 nA相当于在十年前的低功耗底子上又往下砍了十倍不止。行业里横向对比一下主流低功耗系列像基于 Cortex-M4/M33 的一众家族深度睡眠电流很多在 µA 量级做得好的能到几百 nA而真正公开展示“常温下典型值 ≤50 nA”并且量产交付的并不多。这里有个概念要分清停产很久的 MSP430 空载待机曾经也做到了 0.1 µA 级别100 nA但它是纯 MCU不带射频、不带复杂的多协议栈和众多外设资源。Nordic 这颗芯片是完整 SoC射频前端、协议栈、大 Flash 和 RAM 都在一块晶圆上在这种复杂度下还维持 nA 级休眠功耗完全不是一个难度等级。不要拿“nA 级”去和“连 uA 级都嫌高”的所有芯片一刀切比较要看它带着多少资源进休眠。2. nA 级休眠电流靠什么堆出来上路基、下路基、侧路基2.1 电源域管理把芯片拆成一个个“可断电的房间”想要把休眠电流压到 nA 级核心思路不是“让所有电路都别动”而是“让绝大多数电路彻底没电”。一颗 SoC 内部有 CPU 核心、总线矩阵、Flash、RAM、外设总线SPI/UART/I2C/Timer、射频前端、电源管理模块等等。低功耗芯片的第一课就是把这些模块切成不同的电源域Power Domain类似一套房子里的总闸和分闸主供电系统带着 CPU 和主要外设像客厅和厨房的闸常电域带着唤醒逻辑、低功耗定时器、RTC实时时钟和一定量的保留 RAM像卧室里常亮的夜灯真正“绝对最低功耗”的 System OFF / 深度休眠模式会把几乎全部电源域断掉只留极小的逻辑单元监测唤醒源和按键/IO 边沿。Nordic 的 nRF52 系列就有 System ON正常工作和 System OFF深睡两种顶层电源状态。System OFF 模式下CPU、内存、外设均掉电只有 GPIO 唤醒检测、复用比较器或特定引脚电平变化这类小型逻辑继续“值班”。新一代的 nRF54 系列把这个思路推得更极致采用了更细粒度的域划分。50 nA 这个典型值意味着它在“值班”逻辑上都做了轻量化处理——值班的人越少会议室电灯自然关得越多。2.2 电压域与电平设计降到你不敢想象的工作电压光把电路断电还不够。就算 nA 级待机供电路径、内部电压基准、电流侦测比较器、唤醒边沿检测这些东西工作时也会漏电。低功耗设计里常用一招把“值班电压”主动降到接近晶体管的阈值电压附近让漏电指数级下降。这就像空调夏天调 26°C 省电深夜没人的时候调 30°C 更省。芯片里的“省电温度”由 PMU 控制——在深度休眠时它会把内部 LDO低压差线性稳压器/DC-DC 的输出电压调低或者直接切走一些高精度参考源。省掉的每一纳安都是靠拉低电压换来的。这也是为什么现在低功耗 SoC 越来越强调“多级电压域”甚至把 IO 供电VDDH 之类和核心逻辑供电分开设计。外设引脚如果还挂在高压域上Pin 上万一有浮空电平就是一条现成的漏电通道。2.3 Flash 和 RAM 的取舍保数据还是保功耗芯片给了你选择权休眠态下 Flash 和 RAM 的用电策略直接影响电流数字。Flash 是一种非易失存储它想“记住”数据不需要持续供电这一点很友好。但 RAM 是易失的要保留内容就需要持续供电。SoC 里很多休眠模式下芯片丢不掉 RAM 里的内容——因为唤醒后要继续跑上下文。这部分 RAM 供电漏电很可能就从系统总功耗里“流失”掉了。Nordic 等厂商的做法是深度休眠时默认切断绝大多数 RAM 域的供电把需要保留的关键上下文少批量放进“低漏电 RAM 域”或“保留 RAM”只有真正需要唤醒后立即恢复的状态比如当前指令地址、关键外设配置、少量缓存才放进保留区其余全部丢电系统复位后从 Flash 重新加载上下文一切重来。这也是为什么很多低功耗方案的“唤醒时间”偏长——它不是在睡是直接“重启”到某个检查点。你必须有这个心理预期最省电的休眠往往不是“暂停”而是“半重置”。2.4 引脚和漏电路径芯片省下来的一丁点电很容易被 IO 和 PCB 漏光这是很多开发者的知识盲区。芯片内部把漏电降到 50 nA你却让它身上每一根 GPIO 悬空——悬空的引脚在 CMOS 电路里就像两根电极之间没拉电阻的逻辑门随时可能在两个电源轨之间形成一条稳定的穿通电流路径。IO 悬空时芯片里的输入缓冲器内部不但是个比较器还可能形成上拉下拉竞争几十微安的电流都能漏出来。所以 Nordic 的 SDK 里有明确的推荐做法深度休眠前把所有未使用的 GPIO 要么设为“无上拉下拉的输入”内部高阻要么连到确定的电平外部拉电阻或直接接 GND。省电细节的一个隐藏要点是芯片说的 50 nA默认是“所有 IO 都处理妥当”时的数值。不是焊上就完事。2.5 处理新技术快速内部振荡器、功耗管理单元本身的门道让我猜一下这颗芯片内部的组成从指标看它很可能采用了较新的制程和低功耗 IP 组合甚至包含一个独立的小型 MCU比如可编程电源管理器件 PMIC 功能专门负责在休眠期间做周期性唤醒采样。传统方案用 32 kHz 晶振做 RTCRTC 工作电流本身就得几百 nA。若是把“值班”逻辑压到 50 nA 级芯片大概率是把定时唤醒、比较器检测、事件记录这些小模块做成了真正亚阈值功耗的专项电路并不依赖完整时钟树全速跑。这一类设计的核心特征是“事件驱动”——什么都不发生就什么都不跑。人睡觉时心脏还在跳、呼吸还在继续但大脑皮层大部分区域纯待机只有监测到异响的听觉回路保持警觉。正是这种“只留传感器、逻辑都断电”的架构才让总功耗压到这么低。3. 芯片省不代表系统省从电池到 PCB哪些环节在吃掉你的 nA 级红利3.1 从 nA 级回看系统预算一颗纽扣电池到底能撑多久芯片把自己压到 50 nA系统能不能享受到这份红利全看外围配合。先算一个系统级账系统组件典型电流占系统比重MCU 深度休眠50 nA 级别0.00005 mA几乎可忽略RTC 晶振工作有源晶振0.5 µA ~ 1.5 µA不容忽视板上 LDO 静态电流IQ1 µA ~ 6 µA大头直接吃掉所有优势电源指示灯哪怕微亮几十 µA 起灾难PCB 表面潮湿导致漏电流0.1 µA ~ 10 µA湿度高时难预测非常麻烦电池自放电视电芯化学体系每年 1%~3%寿命上限LDO 的静态电流是低功耗系统里最容易被忽视的黑洞。你选了一颗 50 nA 的 MCU配上常见稳压芯片它的静态电流可能就有 2 µA——直接让系统待机电流变成 40 倍于芯片。这就是为什么现在很多低功耗产品宁可多花点钱选低 IQ 的 PMIC或者直接让 MCU 的电压域接管总电源控制该断电时把 LD0 也关了只留电池秤上那点常电。我在实际项目里见过最典型的翻车MCU 休眠电流 3 µA整体设计也控制得还行最后整机测试却显示 200 µA。逐个断开外设后才发现一块 W25Q 系列 Flash 的待机电流就是 5 µA一块气体传感器就是 100 µA。原件文档里写得清清楚楚但没人想到要挨个查。3.2 硬件设计阶段就该做的低功耗涂抹想让整机产品真正接近“年耗 0.5 mAh”的优雅状态设计阶段就得有目的地涂抹这些细节电源树能断尽断对外围传感器、Flash、LED 驱动等一律用 MOS 管或电源开关单独控制休眠时直接切掉外围电源滤波电容不要贪大一颗 10 µF 的钽电容ESR 和漏电流都可能贡献到 µA 级10 µF × 几种介质混合在低电压下漏电比标称值差很多倍。挑选低漏电系列或者用较小容值并联分压电阻能免则免任何接到电池的电阻分压电路都等于在电桥上开了一扇永远关不上的门。需要电池电压检测时用 MCU 内部 ADC 加上断开电阻路径或者只在唤醒期间临时开通GPIO 上下拉统一复核内部上拉电阻典型值十几 kΩ~几十 kΩ挂在 3.3V 上就产生约 0.1~0.2 mA任何未被处理的上下拉在休眠期间都近似于白炽灯调试接口拔下再测J-Link/SWD 探针本身就可能给芯片供电甚至它的目标供电线上也有静态电流。测试功耗的基准条件应该是不接任何调试器PCB 清洗和涂层手工焊的产品助焊剂残留遇潮气形成离子迁移能让 PCB 表面出现一条看不见的“电阻”耗掉微安级电流。低功耗整机要求切板后清洗并涂三防漆保形涂层尤其南方梅雨季节这一步不做整机功耗起飞。3.3 实测举例一个 BLE 标签项目的功耗预算做一个简单的 BLE 温湿度标签结构是 MCU BLE 射频 温湿度传感器用 CR2032约 220 mAh 可用容量供电。设计目标应用场景是每秒广播一次其余时间全部休眠。先算一次广播的耗电BLE 广播平均 5 ms发射电流峰值约 10 mA那一秒平均多消耗 0.000005 Ah × 20一秒 20 次广播是 100 µAh实际单次广播电流可以按 50 µA·s 估算——算出来每天广播约消耗 1.2 mAh/天不这是错的。我们来精算每秒一次广播一次 5 ms 峰值 10 mA平均到每秒就是 10 mA × 0.005 s / 3600 s ≈ 13.9 µAh。那一天就是 0.333 mAh。看似不多但 CR2032 只有约 220 mAh光广播就能撑一年多。再把 RTC、传感器、升压、LDO 静态都算进平均电流假设整机平均待机电流 10 µA这里芯片 50 nA 根本对总账没影响声明大头的还是外设和 LDO加上广播 13.9 µAh/天每天 240 µAh 333 µAh 约 573 µAh/天。220 mAh 除以 0.573 mAh/天约 383 天。这个寿命才是现实的。芯片省下的 0.4 mAh 年耗对整个含广播的系统来说微乎其微。所以你看芯片的 50 nA 很了不起但它是“最低气温纪录”不是“全年平均气温”。做产品功耗设计应该盯均值不能让峰值指标蒙蔽系统预算的双眼。4. 想亲眼验证 50 nA先学会怎么测 nA 级电流4.1 测量设备万用表直接救不了你很多人拿到开发板第一反应是拿万用表电流档串进去量。但普通数字万用表电流档分辨率也就 1 µA 或 0.1 µA你让它量 50 nA那基本就是在噪声和底数里猜。就算买到分辨率 100 nA 的仪表串进电路的接触电阻和电压降burden voltage也都是不小的麻烦。要想可靠测到 nA 级有两条路高精度皮安表/源表比如 Keithley 6485、6487 或者吉时利 2450 等。皮安表分辨率能做到 fA飞安级测 50 nA 绰绰有余。缺点是贵实验室配置低功耗专用测量模块有些厂商推出低至 nA 级分辨率的电流测量模块比如 Nordic 自己的 Power Profiler Kit 2简称 PPK2这是开发板调试功耗的常用工具能采样电流波形也能累计电量。它内部用精密电流检测运放专门为了低功耗场景做优化分辨率一般到 100 nA 或更低不同档位不同测休眠和射频脉冲都没问题。我个人的经验日常开发用 PPK2 或类似工具就足够看电流曲线调唤醒策略非常好用真到发布前最终验证再找仪器室借一台皮安表做终测。给的是“球赛直播”和“裁判录像”的关系功能场景不同。4.2 测量时的关键细节每条都可能导致数字“虚高”电源要稳压且低噪被测芯片的休眠电流极低电源适配器的纹波和噪声若落在测量路径上很容易被放大。建议用电池或实验室精密电源两端各接一个几 µF 滤波电容串联位置要对皮安表串在电源和被测设备之间。注意地线——大多数测量项目出问题根源都是共地没接好等待时间要足够芯片进休眠是渐进式的Flash 下电、外设关断、稳压器电压爬坡这些动作要几十毫秒到几百毫秒。上电后马上读数看到的是“开机瞬态”而非“休眠稳态”。我习惯的做法是让系统稳定运行 10 秒以上再读取平均值温度影响巨大nA 级电流对温度极其敏感25°C 和 60°C 的数值可能相差十倍甚至更多。对比测试时必须控制在同一温度环境下手动挡养成好习惯自动量程在 nA 级别会频繁切换形成虚假抖动读数。锁定在合适的量程记录稳定后的数值。4.3 波形分析休眠电流之外的真正功耗大坑皮安表测的是“直流平均值”但实际系统功耗更像心电图。一个 BLE 设备唤醒发包时瞬间电流到几十毫安接着回到休眠。如果只看平均电流你永远不会知道唤醒配置对没对——射频卡死在反复重传里平均功耗高但休眠内芯一点没变。PPK2 这类带波形的工具的价值在于它能拍下瞬时电流轨迹让你一眼看出唤醒次数是不是异常、重传是不是在反复烧电、BLE 连接间隔有没有按设计执行。数字只告诉你“你病了”波形告诉你“病灶在哪”。实际操作里我有一个习惯先跑半小时波形采集看唤醒周期和峰值是否符合预期再把平均值导出来和理论计算对照。对上了才敢说功耗设计闭环了。5. 从评测到量产我踩过的低功耗实现高发坑5.1 坑一测出来休眠电流是 40 µA怎么查都查不出来这是一类高频问题。遇到这种情况排查路径通常是固定的关闭所有外设时钟域查阅数据手册确认该芯片所有外设的不可屏蔽默认状态用电流波形工具观察“休眠后”是否还有周期性唤醒——比如 RTC 配置了但没人关闭或者低功耗定时器还在跑用 GPIO 配置检查工具或寄存器转储确认每个引脚状态——很多 SDK 有nrf_gpio_cfg_*系列接口可以统一把所有未用脚设为高阻输入拔掉所有外接板传感器排线、显示屏 FFC、探针都可能反向供电。其中最坑的是 3.3V 转 1.8V 的电平转换芯片掉电后它会通过 IO 保护二极管从高电平引脚反向馈电逐块断开板卡如果电压域可割先把射频、Flash、传感器全部摘掉再把问题范围缩小。我的一个真实项目BLE 网关测出休眠 60 µA查了一天没头绪。后来发现它板上有一颗三轴加速度计本来就是要定期唤醒的厂家默认不开休眠——一颗芯片就吃了 55 µA。这类“看似无关的外设”太容易变成罪魁。5.2 坑二引脚浮空导致休眠时内部上拉在下拉打架有个经典场景GPIO 接了外部上拉电阻但休眠前忘了设为输入模式等真正进入深睡内部上下拉配置还停留在输出状态输出低电平的外部上拉电阻就形成了一条电流路径。类似的问题在 PCB 上是“设计常态”。所以做低功耗驱动时我坚持把“休眠前 IO 状态展平”做成一个专门的函数void board_enter_sleep(uint32_t wakeup_pin_mask) { // 把所有不参与唤醒的引脚设为高阻输入并确保无上下拉 for (uint32_t pin 0; pin PIN_COUNT; pin) { if (!(wakeup_pin_mask (1 pin))) { nrf_gpio_cfg_input(pin, NRF_GPIO_PIN_NOPULL); } } // 然后才进入 System OFF 或 System ON 低功耗模式 }这个函数每次休眠前都执行所有不上拉不下拉的引脚全展平。看起来不起眼却是整机功耗稳定的定海神针。5.3 坑三电源管理 IC 选型失误整机跟着翻车芯片的低功耗指标在文档里是“chip alone”的。你给它配一颗静态电流 4 µA 的 LDO抛出去的现实是整机待机 4.x µA——芯片省下的 0.05 µA 在 4 后面毫无存在感。低功耗系统选电源芯片的核心指标就是 IQQuiescent Current静态电流和最小负载。现在很多专门为 IoT 设计的小功率 LDO/DC-DC静态电流能做到几百 nA 甚至几十 nA比如 TI 的 TPS7A0225 nA IQ、Analog Devices 的 ADP5300DC-DC 静态电流极低这类。选型时要重点看“轻载/空载”下的工作电流而不是最大负载时的效率——很多 DC-DC 在微安级负载下效率暴跌到 30% 都不到。5.4 防潮与清洁南方梅雨季的低功耗杀手北方工程师可能体会不深但在华南地区同一块板子冬天测 5 µA梅雨季能漂到 20 µA 以上。原因就是潮气吸附在 PCB 表面形成漏电流通道尤其助焊剂残留多的板子更严重。量产级的解决方案清洗工艺必须上超声波清洗 去离子水冲洗去除离子残留三防漆保形涂层必选薄薄一层聚氨酯或丙烯酸涂覆把整个焊接面盖住漏电就上不来了测试环境标准化高低温箱 湿度箱做组合验证只看常温数字不足以反映真实环境表现。我有个老项目的惨痛教训功耗测试全用同一块手焊样板绿油和助焊剂加热后发黑烘干后指标通过一到南方客户现场就报警待机异常。从那之后我的流程固定为“烘干—清洗—涂敷—密封—复测”。6. 低功耗落地从指标到系统Nordic 这颗芯片带来的不是“功耗数字全球第一”的炫耀而是把“低功耗”从系统设计的配角提到了主角位置。当芯片本体省到极致产品整机功耗的红线就完全压到了外围电路和工程习惯上——LDO 的 IQ、PCB 的清洁度、GPIO 的初始化、唤醒源的配置这些以前可以“差不多”的地方现在全都成了决定成败的细节。我个人对这些 nA 级产品的使用体会是指标越极致测试和工程手段越要跟上。省电的不是芯片那一栏参数而是你真正把整条耗电路径都抠干净的功力。对普通开发者来说最大的价值可能不在于“我也能做出年耗 0.5 mAh 的设备”而是它逼着你去理解电源域、漏电机制和外围器件的极限——这些能力比任何一个孤立的低功耗数字都更值钱。最后分享一个我自己调试低功耗的小技巧拿到任何低功耗开发板先别写应用逻辑只做一件事——配置完所有外设后强制让芯片进入最深休眠用 PPK2 记录 30 秒电流波形。如果这 30 秒里电流曲线干净得像一条直线说明基础底子是好的如果还能看到毛刺、周期尖峰那恭喜你提前把未来量产时注定要踩的坑挖出来了。清理掉这些异常再开始加业务逻辑顺序反了功耗问题会像滚雪球一样越滚越大。
