题目2:功耗基础理论——嵌入式系统功耗模型与NB-IoT工作状态
各位同学,咱们今天聊点实在的。做低功耗设计,说白了就是跟“电”打交道。你得先搞清楚电是怎么“跑掉”的,才能知道怎么“省”。我刚开始做NB-IoT项目那会儿,上来就调参数,结果功耗死活降不下来。后来才明白,基础理论没吃透,调来调去都是瞎忙活。
一、嵌入式系统的功耗模型:动态功耗与静态功耗
一个芯片的功耗,可以拆成两大部分:动态功耗和静态功耗。嗯,这个模型几乎适用于所有数字芯片。
1. 动态功耗
动态功耗,就是芯片在工作时,电路翻转、充放电消耗的能量。它跟频率和电压的平方成正比。公式很简单:
P_dynamic = C * V² * f
其中C是负载电容,V是工作电压,f是时钟频率。
我个人的习惯是,在项目初期就评估好动态功耗的占比。比如,NB-IoT模块在发送数据时,电流能飙到200-300mA,这时候动态功耗占绝对主导。你想想看,电压降一点,功耗是平方关系下降,效果非常明显。
关键点:降低动态功耗最有效的手段是“降电压”和“降频率”。但要注意,降电压会影响芯片的最高工作频率,这是个权衡。
2. 静态功耗
静态功耗,也叫漏电流功耗。芯片即使不干活,只要上电了,就会有电流漏过去。这个功耗跟工艺关系很大。先进工艺(比如28nm以下)的静态功耗占比越来越高。
我曾经在一个项目中,模块进入PSM模式后,按理说电流应该只有几个微安。结果实测有几十微安。查了半天,发现是某个GPIO没配置好,内部上拉电阻一直在耗电。这就是典型的静态功耗问题。
P_static = I_leak * V
静态功耗虽然单个数值小,但NB-IoT模块大部分时间都处于休眠状态,所以静态功耗的累积效应非常可怕。
注意:不要小看几微安的漏电流。如果模块一天有23小时在休眠,一年下来,这“几微安”可能让你的电池提前报废。
二、NB-IoT模块的工作状态:PSM、eDRX、Active
NB-IoT模块有三个核心工作状态。理解这三个状态,是功耗优化的基础。我建议你把这三种状态画在纸上,对照着看。
| 工作状态 | 典型电流 | 特点 |
|---|---|---|
| Active(激活态) | 100-300 mA | 模块正在收发数据,功耗最高 |
| eDRX(扩展不连续接收) | 1-10 mA | 周期性监听寻呼,功耗中等 |
| PSM(省电模式) | 3-10 μA | 深度休眠,几乎不耗电 |
1. Active(激活态)
这个状态没啥好说的,模块在全力干活。发射功率、数据量、信道质量都会影响电流。我记得有一次测试,模块在弱信号下发射,电流直接飙到350mA。所以,信号强度对功耗的影响非常大。
2. eDRX(扩展不连续接收)
eDRX是NB-IoT的一个特色。模块不需要一直监听网络,而是每隔一段时间醒来一次,看看有没有寻呼消息。这个“间隔”可以配置,从几秒到几分钟不等。
为什么会这样?因为很多物联网应用,比如水表、气表,不需要实时响应。你晚几分钟收到数据,完全没问题。eDRX就是为这种场景设计的。
我个人建议,如果你的应用对实时性要求不高,尽量把eDRX周期拉长。比如从2.56秒拉到40.96秒,平均电流能降一个数量级。
小技巧:eDRX的周期不是随便设的。你需要跟运营商确认网络支持哪些周期值。我遇到过设了40秒,结果网络不认,模块一直处于异常状态。
3. PSM(省电模式)
PSM是NB-IoT的“终极省电武器”。模块进入PSM后,几乎完全关闭射频和大部分数字电路,只保留一个极低功耗的定时器。电流可以低到3-5μA。
但PSM有个代价:模块“失联”了。网络侧不能主动下发数据,只能等模块自己醒来。所以,PSM适合那些“上报型”应用,比如传感器定时上报数据。
嗯,这里要注意:PSM的退出条件有两个——定时器超时,或者模块主动发数据。我建议你仔细阅读模块的AT指令手册,把PSM的定时器配置好。
三、电流与时间的关系:功耗计算的本质
功耗优化,说白了就是管理“电流”和“时间”的乘积。公式很简单:
Q = I * t
总耗电量等于电流乘以时间。你想想看,一个模块在Active态跑1秒,耗电100mA·s。如果进入PSM态跑1000秒,耗电才5mA·s。所以,优化的核心就是:尽量缩短高电流的时间,尽量延长低电流的时间。
我举个例子。一个NB-IoT水表,每天上报一次数据。典型的工作流程是:
- Active态:发送数据,耗时2秒,电流200mA
- eDRX态:等待网络确认,耗时10秒,电流5mA
- PSM态:深度休眠,耗时86388秒,电流5μA
我们来算一下一天的耗电量:
Q = 200mA * 2s + 5mA * 10s + 0.005mA * 86388s
= 400 + 50 + 431.94
= 881.94 mA·s
你看,PSM态虽然电流极小,但因为时间太长,它的耗电量占比反而接近一半。所以,优化PSM态的漏电流同样重要。
核心结论:不要只盯着Active态的峰值电流。PSM态的“微小电流 × 超长时间”往往才是电池杀手。
好了,这一章的内容就到这里。下一章我们会深入讲解如何用示波器和电流探头,精确测量NB-IoT模块的实时电流波形。到时候,我会分享一些我踩过的坑,比如探头接地不良导致的测量误差。