2. 物理层能耗基础:发射功率、接收灵敏度、调制方式对功耗的影响

各位同学,咱们今天聊点实在的。物理层,说白了就是无线通信的「地基」。你上层协议栈写得再漂亮,算法再花哨,物理层这块没抠好,功耗照样下不来。我做了这么多年低功耗协议栈,见过太多项目在物理层上栽跟头——电池没撑过三个月就挂了,结果一查,发射功率配得跟闹着玩似的。

好,咱们直接进入正题。物理层能耗,核心就三个参数:发射功率接收灵敏度调制方式。这三个东西互相牵制,你动一个,另外两个跟着变。咱们一个一个拆开讲。

2.1 发射功率:不是越大越好

很多人有个误区:发射功率越大,信号越强,通信越可靠。这话没错,但代价是什么?功耗翻倍地涨。我给大家算笔账。

发射功率和电流消耗的关系,基本是线性的。你从0dBm调到10dBm,电流可能从10mA飙到30mA。你想想看,一个纽扣电池才200mAh,你天天用10dBm发数据,能撑几天?

核心原则:发射功率够用就行,别贪多。

我在项目中遇到过一件事。有个客户做智能门锁,要求通信距离30米。他们默认用了10dBm的发射功率,结果电池两个月就没电了。我过去一看,实际场景下,0dBm就能稳定通信。把功率降到0dBm后,电池寿命直接延长到八个月。嗯,这就是典型的「杀鸡用牛刀」。

那怎么确定合适的发射功率?我个人的习惯是:

  • 先做链路预算:算清楚路径损耗、天线增益、接收灵敏度,反推出需要的发射功率。
  • 留3dB余量:别卡得太死,留点余量应对环境变化。
  • 动态调整:如果协议栈支持,根据RSSI(接收信号强度指示)动态调整发射功率。信号好就降功率,信号差再升。

小技巧:很多芯片支持多级发射功率,比如-20dBm到+10dBm,步进1dB。别只用最高档,试试中间档位,往往有惊喜。

2.2 接收灵敏度:功耗的隐形杀手

接收灵敏度,很多人不重视。觉得「能收到信号就行」。但你知道吗?接收灵敏度每提升3dB,接收电流可能增加20%-30%。

为什么会这样?因为高灵敏度需要更复杂的接收机架构,比如低噪声放大器(LNA)要开更大增益,或者用更复杂的解调算法。这些都要吃电流。

我举个例子。某款Sub-1G芯片,灵敏度-110dBm时接收电流是12mA。如果你把灵敏度调到-120dBm,接收电流可能涨到18mA。看起来不多,但接收机是常开的(至少是周期性唤醒),这个电流累积起来很可观。

注意:不要盲目追求高灵敏度。如果你的应用场景是近距离通信(比如室内10米),-100dBm的灵敏度完全够用。非要追求-120dBm,那就是在浪费电池。

我曾经帮一个智能家居项目做优化。他们用的芯片灵敏度是-118dBm,接收电流15mA。我建议他们把灵敏度降到-108dBm,接收电流降到8mA。通信距离从50米缩到30米,但实际场景下20米就够用了。电池寿命从半年延长到一年半。你说值不值?

2.3 调制方式:速率和功耗的博弈

调制方式这块,学问就大了。不同的调制方式,对功耗的影响天差地别。咱们挑几个常见的说说。

调制方式 数据速率 接收灵敏度 功耗特点
OOK/ASK 低(<100kbps) 中等(-100dBm左右) 发射功耗低,接收功耗低,但抗干扰差
FSK/GFSK 中(100kbps-1Mbps) 较好(-110dBm左右) 均衡,应用最广
QPSK/OQPSK 高(>1Mbps) 高(-120dBm左右) 接收功耗高,但传输时间短
DSSS(扩频) 低(<10kbps) 极高(-130dBm以上) 接收功耗极高,但抗干扰强

你看这个表,很有意思。OOK/ASK功耗最低,但灵敏度也低,抗干扰差。FSK/GFSK是万金油,大多数低功耗协议(比如BLE、Zigbee)都用它。QPSK速率高,但接收功耗大,适合高速传输场景。DSSS灵敏度极高,但接收功耗也极高,适合远距离、低速率场景(比如LoRa)。

我个人习惯是:能用FSK就别用OOK,能用GFSK就别用FSK。GFSK加了高斯滤波,频谱效率更高,抗干扰更好,功耗增加微乎其微。我在项目中用GFSK替换FSK,误码率降低了30%,功耗只增加了不到5%。这笔账很划算。

关键点:调制方式的选择,本质是「速率 vs 灵敏度 vs 功耗」的三方博弈。没有最好的,只有最合适的。

2.4 三个参数的联动关系

好,咱们把三个参数串起来看。发射功率、接收灵敏度、调制方式,它们不是孤立的。我给大家画个图(嗯,用文字描述吧)。

  • 发射功率↑ → 接收灵敏度可以↓:信号强了,接收机可以降低灵敏度,省电。
  • 调制方式越复杂 → 接收灵敏度越高:但接收功耗也越高。
  • 数据速率↑ → 传输时间↓:发射和接收的总功耗可能降低(因为工作时间短了)。

举个例子。你用一个高灵敏度、低发射功率的方案,和用一个低灵敏度、高发射功率的方案,总功耗可能差不多。但前者抗干扰差,后者干扰别人。怎么选?看应用场景。

我曾经做过一个工业传感器项目。传感器分布在工厂车间,距离不远(10-20米),但干扰源多(电机、变频器)。我选了GFSK调制,发射功率0dBm,灵敏度-110dBm。为什么?因为GFSK抗干扰好,0dBm够用,-110dBm能应对信号衰减。最终功耗控制在平均50μA以下,电池撑了两年。

避坑指南:我曾经犯过一个错——为了省电,把发射功率降到最低,结果通信成功率只有60%。后来发现是接收灵敏度不够。记住:发射功率和接收灵敏度要匹配,别让一个成为另一个的瓶颈。

2.5 实战建议

最后,给大家几个实战建议,都是我用真金白银换来的经验。

  1. 先测再调:别靠猜。用频谱仪测发射功率,用信号发生器测接收灵敏度。数据说话。
  2. 留余量,但别太多:3dB余量是黄金标准。留多了浪费功耗,留少了通信不稳。
  3. 动态调整是王道:如果芯片支持,实现自适应发射功率和自适应灵敏度。信号好就降,信号差就升。
  4. 调制方式选GFSK:除非你有特殊需求(比如超远距离用DSSS,超低功耗用OOK),否则GFSK是最稳妥的选择。
  5. 别忘了天线:天线效率差,发射功率再高也白搭。我见过太多项目,天线效率只有20%,发射功率全浪费了。

警告:别为了省电把接收灵敏度调得太低。我曾经见过一个项目,接收灵敏度调到-90dBm,结果通信距离只有5米。用户投诉不断,最后不得不重新设计。省电不是这么省的。

好了,物理层能耗基础就讲到这里。下一章咱们聊聊MAC层的能耗优化,那才是协议栈功耗的「大头」。记得把今天的内容消化掉,后面会用到。