1. 低功耗基础概念:RTOS功耗模型、MCU睡眠模式与电流电压关系

各位同学,咱们今天开篇先聊点基础。别觉得基础就简单,我做了十几年低功耗项目,发现很多坑其实都出在基础概念没吃透上。你想想看,如果连MCU睡多深、电流怎么算都没搞明白,后面调待机电流的时候,那真是两眼一抹黑。

1.1 RTOS下的功耗模型

RTOS系统跟裸机最大的区别是什么?裸机要么跑要么睡,简单粗暴。RTOS呢?它有一堆任务在排队,还有Tick中断在定时唤醒。所以RTOS的功耗模型,说白了就是“谁在占用CPU,CPU在干什么”。

我个人习惯把RTOS功耗拆成三个部分:

  • 活跃功耗:CPU正在跑任务代码,外设也在工作。这时候电流最大,通常几十mA甚至上百mA。
  • 空闲功耗:所有任务都挂起了,CPU跑空闲任务。这时候如果空闲任务只是死循环,那功耗跟活跃时差不多。所以必须让空闲任务进睡眠。
  • 唤醒开销:从睡眠到恢复执行,这段时间的额外功耗。很多人只盯着睡眠电流,忽略了唤醒那几十微秒的尖峰电流——我在项目中遇到过,一个产品待机电流标称2uA,实测却有5uA,查了半天发现是唤醒太频繁,每次唤醒的尖峰把平均电流拉高了。

核心公式:平均功耗 = (活跃时间 × 活跃电流 + 空闲时间 × 空闲电流 + 唤醒次数 × 唤醒能耗) / 总时间

记住,低功耗优化的本质是缩短活跃时间、降低空闲电流、减少唤醒次数。三者缺一不可。

1.2 MCU睡眠模式分类:Sleep / Stop / Standby

不同MCU厂商的叫法可能不一样,但底层逻辑大同小异。我以最通用的ARM Cortex-M系列为例,把睡眠模式分成三个层级。嗯,这里要注意,每个层级省电的程度不同,但恢复代价也不同。

模式 CPU时钟 SRAM/寄存器 唤醒源 唤醒时间 典型电流
Sleep 停止 保持 任意中断 ~几个时钟周期 ~mA级
Stop 停止 保持 特定外设/RTC ~几十微秒 ~uA级
Standby 掉电 丢失 复位/特定唤醒引脚 ~几毫秒 ~nA级

Sleep模式:CPU停了,但外设还在跑,SRAM内容全保留。唤醒最快,但省电有限。适合那种“我随时可能被中断唤醒”的场景。

Stop模式:大部分外设时钟都关了,只有少数几个(比如RTC、LPUART)还在工作。SRAM保持,但唤醒后需要重新配置时钟。这是RTOS低功耗调度最常用的模式。我曾经在一个表计项目里,用Stop模式配合RTC定时唤醒,把平均电流从1.2mA压到了12uA。

Standby模式:最省电,但代价也最大——SRAM内容全丢,相当于系统复位。唤醒后得重新初始化所有东西。这种模式只适合那种“几个月才唤醒一次”的场景,比如烟雾报警器。

避坑指南:我曾经在一个NB-IoT终端项目里,为了追求极致待机电流,直接用了Standby模式。结果发现每次唤醒后重新连网耗时3秒,这3秒的电流高达50mA,反而把平均功耗拉高了。后来改成了Stop模式+RTC唤醒,虽然待机电流多了2uA,但整体续航反而提升了15%。

所以,不要盲目追求最低的睡眠电流,要看整个工作周期的平均功耗。

1.3 电流与电压的关系:不只是欧姆定律

说到电流和电压,大家第一反应肯定是I = U/R。但在低功耗系统里,事情没那么简单。

MCU的功耗由两部分组成:

  • 静态功耗:漏电流,跟电压成正比,跟温度强相关。温度每升高10°C,漏电流差不多翻一倍。我在做户外传感器时,夏天40°C和冬天-20°C的待机电流能差3倍。
  • 动态功耗:P = C × V² × f。注意,电压是平方关系!所以降压比降频更有效。这也是为什么很多低功耗MCU支持动态电压调节(DVS)。

实战技巧:我建议你在选型时,重点关注MCU的“每MHz功耗”指标。比如一个MCU在48MHz下跑3.6mA,另一个在64MHz下跑4.2mA。算一下:3.6/48 = 0.075 mA/MHz,4.2/64 = 0.066 mA/MHz。后者效率更高。但别忘了,还要看睡眠电流和唤醒时间。

还有一个容易被忽略的点:电源转换效率。你用电池供电,中间肯定有LDO或DC-DC。LDO的静态功耗(Iq)可能就有几个uA,如果MCU待机电流才2uA,那LDO自己就吃掉了一大半。我有个项目,选了个Iq=5uA的LDO,MCU待机电流压到1uA,结果整机待机还是6uA——白忙活了。

1.4 本章知识体系总览

下面这张图,把咱们这一章的核心逻辑串起来了。你可以把它当作后续调试的路线图。

RTOS低功耗知识体系 RTOS功耗模型 活跃功耗 空闲功耗 唤醒开销 MCU睡眠模式分类 Sleep (mA级) Stop (uA级) Standby (nA级) 电流与电压关系 静态功耗:漏电流 vs 温度 动态功耗:P = C × V² × f 核心优化思路:缩短活跃时间 → 降低空闲电流 → 减少唤醒次数

这张图把咱们这一章的内容串起来了。从RTOS功耗模型出发,到三种睡眠模式的选择,再到电流电压的物理本质。后面几章咱们会一步步深入,把这些理论变成能落地的代码和调试方法。

好,第一章就到这里。记住我今天说的三个关键词:平均功耗、唤醒开销、电压平方关系。后面调试的时候,你会反复用到它们。