3、电源树设计:多级电源架构、动态电压调节(DVS)、电源域划分原则

各位同学,咱们接着聊。上一章讲了加密狗的整体功耗目标,今天要啃的这块骨头,是电源树设计。说白了,就是怎么给加密狗里的各个模块“喂电”,喂得既够用又不浪费。

我刚开始做低功耗设计时,总觉得电源树嘛,不就是LDO加DC-DC,拉几条线就完事了?结果第一次做加密狗原型,电池续航只有标称值的60%。查了三天,发现是电源域没划分好,一个休眠的模块还在偷偷吃电。嗯,从那以后,我对电源树设计就再也不敢马虎了。

3.1 多级电源架构:为什么不能“一电到底”?

加密狗里通常有这几个主要耗电模块:主控MCU、加密芯片、USB接口、蓝牙模块、还有一堆传感器。它们的电压需求各不相同。

举个例子:

  • MCU内核:通常需要1.2V或1.8V,电流几十mA
  • 加密芯片:有的需要3.3V,有的内部还有DCDC
  • USB接口:5V供电,但需要过压保护
  • 蓝牙模块:1.8V或3.3V,发射时电流大

如果只用一级电源,比如直接从电池3.7V降到1.2V,压差2.5V,效率会非常低。我算过一笔账:用LDO从3.7V降到1.2V,效率只有32%,剩下68%的能量全变成热量了。加密狗那么小一个壳子,散热根本扛不住。

所以,多级电源架构是必须的。我个人习惯这样分:

  1. 第一级:电池到中间总线(3.7V → 3.3V)—— 用高效率DC-DC,效率能做到90%以上
  2. 第二级:中间总线到各模块(3.3V → 1.2V/1.8V)—— 对噪声敏感的用LDO,对效率敏感的用DC-DC

你想想看,两级转换虽然多了个环节,但每一级压差都小了,整体效率反而更高。我做过一个对比测试:单级LDO方案整体效率只有35%,两级DC-DC+LDO方案能做到78%。差距就是这么明显。

核心原则:大压差用DC-DC,小压差用LDO。噪声敏感电路(如加密芯片的模拟部分)必须用LDO,数字电路可以用DC-DC。

3.2 动态电压调节(DVS):让电压跟着负载跑

动态电压调节,说白了就是“看人下菜碟”。加密狗在工作时,不同任务的负载差异很大:

  • 待机状态:电流只有几μA,电压可以降到最低
  • USB通信:电流几十mA,需要标准电压
  • 加密运算:电流上百mA,需要最高性能

我做过一个项目,加密狗在待机时MCU内核电压从1.2V降到0.9V,功耗直接降了40%。为什么?因为动态功耗和电压的平方成正比。电压降一点,功耗降一大截。

实现DVS,通常有两种方式:

方式 优点 缺点 适用场景
软件控制DVS 灵活,可调范围大 响应慢,需要MCU参与 任务切换不频繁的场景
硬件自动DVS 响应快,μs级切换 电路复杂,成本高 实时性要求高的场景

我个人建议,加密狗这种产品用软件控制DVS就够了。因为加密运算通常持续几十ms,MCU完全来得及在运算开始前把电压调上去,运算结束后再降下来。

小技巧:DVS切换时要注意电压爬升速率。太快了可能引起电源过冲,太慢了影响响应速度。我一般控制在10μs/V左右,既稳定又够快。

3.3 电源域划分原则:别让“漏电”毁了你的续航

电源域划分,是低功耗设计里最容易踩坑的地方。我曾经犯过一个错误:把蓝牙模块和加密芯片放在同一个电源域里。结果蓝牙休眠时,加密芯片的漏电流通过共用的电源轨流到了蓝牙模块,导致蓝牙模块无法完全断电。

后来我总结了几条电源域划分的原则:

  1. 按功能模块划分:每个独立功能模块一个域,比如MCU域、加密域、蓝牙域、USB域
  2. 按工作状态划分:常开域(如RTC)、间歇工作域(如加密运算)、休眠域(如蓝牙待机)
  3. 按电压等级划分:不同电压的模块必须分属不同域

举个例子,一个典型的加密狗电源域划分:

电源域划分示意:
┌─────────────────────────────────────┐
│  常开域 (Always-On)                 │
│  - RTC时钟                          │
│  - 唤醒逻辑                         │
│  - 电源管理PMU                      │
│  电压:1.2V / 电流:< 1μA          │
├─────────────────────────────────────┤
│  主控域 (MCU Domain)                │
│  - MCU内核                          │
│  - 内部SRAM                         │
│  电压:0.9V~1.2V (DVS)             │
│  电流:待机1μA / 工作10mA          │
├─────────────────────────────────────┤
│  加密域 (Crypto Domain)             │
│  - 加密芯片                         │
│  - 密钥存储                         │
│  电压:1.8V                         │
│  电流:待机0.1μA / 工作50mA        │
├─────────────────────────────────────┤
│  通信域 (Comm Domain)               │
│  - 蓝牙模块                         │
│  - USB PHY                          │
│  电压:3.3V                         │
│  电流:休眠1μA / 发射100mA         │
└─────────────────────────────────────┘

每个域之间用电源开关(Power Switch)隔开。我推荐使用集成式的负载开关,比如TI的TPS22918,导通电阻只有几十mΩ,关断时漏电流小于1μA。

注意:电源域切换时,一定要处理好“上电顺序”。比如加密域必须在主控域稳定之后才能上电,否则可能引起逻辑混乱。我一般用PMU的GPIO来控制使能引脚,配合延时电路,确保顺序正确。

3.4 实战中的几个坑

最后,分享几个我在项目中踩过的坑,希望能帮大家少走弯路:

  • 坑一:电源域之间的电平转换 —— 不同电压的域之间通信,必须加电平转换芯片。我试过用电阻分压,结果信号质量一塌糊涂。
  • 坑二:去耦电容的布局 —— 每个电源域入口必须放10μF+0.1μF的去耦电容,而且要靠近芯片引脚。我曾经把电容放远了,结果高频噪声直接耦合到模拟电路里。
  • 坑三:休眠时的漏电路径 —— 检查所有IO口,确保休眠时没有电流倒灌。我吃过一次亏,一个GPIO没配置成高阻,结果休眠时漏了5μA,电池续航少了20%。

好了,这一章的内容就到这里。电源树设计是低功耗的基石,多级架构、DVS、电源域划分,这三板斧用好了,你的加密狗续航至少能翻一倍。下一章我们聊聊PCB布局中的低功耗技巧,到时候见。