4、低功耗硬件设计:DC-DC与LDO选型策略、外设电源域隔离、GPIO上下拉电阻对漏电流的影响
好,咱们进入第四讲。这一讲我打算聊聊硬件层面的低功耗设计。很多做软件的朋友觉得低功耗就是软件的事,把MCU往深睡里一塞就完事了。其实不然。硬件上的坑,往往比软件更难填。
我见过不少项目,软件团队把功耗优化做到了极致,结果一测整板电流还是几十毫安。查来查去,发现是某个LDO静态电流太大,或者某个GPIO悬空在那漏电。嗯,这种问题,软件再怎么写也救不回来。
所以今天咱们就掰开揉碎,讲讲DC-DC与LDO怎么选、电源域怎么隔离、以及GPIO上下拉电阻那点“小电流”。
4.1 DC-DC与LDO选型策略
先问个问题:你手头有个3.3V的MCU,电池是12V的,你会用DC-DC还是LDO?
我个人习惯是:压差大、电流大,优先DC-DC。压差小、电流小,或者对噪声敏感,那就LDO。
为什么?咱们看个对比:
| 特性 | DC-DC(开关电源) | LDO(低压差线性稳压器) |
|---|---|---|
| 效率 | 高(80%~95%) | 低(效率≈Vout/Vin) |
| 静态电流 | 较高(几百μA~几mA) | 可极低(几十nA~几μA) |
| 输出纹波 | 大(mV级) | 小(μV级) |
| EMI | 有(开关噪声) | 无 |
| 外围器件 | 多(电感、电容、二极管) | 少(2个电容即可) |
| 成本 | 较高 | 较低 |
你看,DC-DC效率高,但代价是噪声和EMI。LDO安静,但压差一大,效率就惨不忍睹。
我在项目中遇到过一件事:一个车载T-BOX模块,待机时需要保持RTC供电,电流只有几十μA。当时硬件同事选了个DC-DC给RTC供电,结果DC-DC自身的静态电流就有200μA,比负载还大好几倍。后来换成一颗静态电流只有1μA的LDO,待机电流直接降下来了。
- 主电源(如MCU核心供电,1A以上):用DC-DC,效率优先。
- 待机电源(如RTC、唤醒逻辑,μA级):用超低静态电流LDO。
- 模拟电路电源(如ADC参考、运放):用高PSRR的LDO,纹波要小。
4.2 外设电源域隔离(Power Domain)
什么叫电源域隔离?说白了,就是把不同功耗要求的电路,用不同的电源开关分开控制。
你想想看,一个ECU里,MCU核心、CAN收发器、传感器、显示屏,它们的功耗需求天差地别。如果所有外设都挂在同一个电源轨上,那MCU进入休眠时,外设还在耗电,这怎么行?
所以,我们需要做电源域划分。我一般这么分:
- 常电域(Always-on Domain):MCU的唤醒逻辑、RTC、部分GPIO。必须一直供电,电流要极低。
- 休眠域(Sleep Domain):CAN收发器、部分传感器。休眠时可断电,唤醒时快速恢复。
- 全功能域(Full-power Domain):显示屏、大功率外设。只在工作时供电。
每个域之间用电源开关隔离。常用的开关有:
- MOSFET开关:适合大电流,压降低。P-MOSFET常用在高侧开关。
- 负载开关(Load Switch):集成MOSFET和驱动,带软启动,方便控制。
- 电源管理IC(PMIC):多路输出,可编程时序,适合复杂系统。
另外,不同电源域之间的信号传递,也要小心。一个域断电了,另一个域的信号不能直接连过去,否则会通过IO引脚漏电。这时候需要加电平转换芯片,或者用带断电保护的IO。
4.3 GPIO上下拉电阻对漏电流的影响
这个知识点,看起来很小,但影响很大。很多工程师容易忽略。
GPIO的上下拉电阻,是用来确定引脚默认电平的。但你知道吗?如果上下拉电阻选得不对,漏电流会成倍增加。
咱们算一笔账:
假设MCU的GPIO内部上拉电阻是40kΩ,电源电压3.3V。那么当引脚悬空时,上拉电阻上的电流是:
I = V / R = 3.3V / 40kΩ = 82.5μA
一个引脚就82.5μA,如果系统里有10个这样的引脚,那就是825μA。对于待机电流要求只有几十μA的系统来说,这简直是灾难。
所以,我的建议是:
- 能不用的GPIO,就配置成模拟输入或输出低电平。这样没有上下拉,漏电流最小。
- 必须用上下拉的,选大电阻。比如100kΩ甚至1MΩ。电流就小多了。
- 外部上下拉电阻,也要注意。有些工程师习惯在板子上加10kΩ外部上拉,其实很多时候没必要。MCU内部就有可配置的上下拉。
另外,还要注意上下拉电阻在休眠时的状态。有些MCU在休眠模式下,内部上下拉电阻会被自动断开,这时候外部上下拉就很重要了。一定要看芯片手册的“休眠模式GPIO行为”章节。
4.4 实战总结
好了,咱们把这一讲的核心点串一下:
- DC-DC和LDO:大电流、高效率用DC-DC;小电流、低噪声用LDO。注意静态电流。
- 电源域隔离:把电路分成常电、休眠、全功能三个域,用MOSFET或负载开关控制。注意上电时序和信号隔离。
- GPIO上下拉:能不用就不用,必须用时选大电阻。休眠时检查内部上下拉是否有效。
这些硬件设计做好了,软件的低功耗优化才能事半功倍。否则,软件再怎么折腾,也抵不过硬件上那几mA的漏电流。
下一讲,咱们会深入MCU的休眠模式,看看怎么在软件层面把功耗压到最低。到时候你会发现,硬件和软件其实是相辅相成的。