4、电源管理单元(PMU)设计:DC-DC与LDO的选型与对比、电源轨设计原则、动态电压调节(DVS)技术、电源序列设计

电源管理单元,说白了就是给整个系统「喂饭」的。饭喂得不好,芯片要么饿死(掉电),要么撑死(过压),要么闹肚子(纹波太大)。我在医疗设备这行干了十几年,见过太多因为电源设计翻车的案例。今天咱们就把PMU设计这摊事掰开揉碎了讲清楚。

4.1 DC-DC与LDO:选型与对比

先问个问题:你手头有个传感器,需要3.3V供电,电池是4.2V的锂电。你会用DC-DC还是LDO?

很多人想都不想就说「DC-DC效率高」。嗯,这话没错,但得看场景。我个人习惯是这么判断的:

  • 压差大、电流大 → DC-DC。比如从12V降到3.3V,电流500mA以上,用LDO的话,功耗全烧在管子上了,发热量能煎鸡蛋。
  • 压差小、电流小 → LDO。比如3.6V降到3.3V,电流50mA,LDO效率也能到90%以上,而且噪声低、成本低、外围简单。
  • 噪声敏感电路 → LDO。医疗设备里的模拟前端、心电采集、血氧探头,这些地方对电源纹波极其敏感。DC-DC的开关噪声会直接耦合到信号里,造成基线漂移。我遇到过一台监护仪,心电波形上总有50mV的毛刺,查了两天,最后发现是DC-DC的开关频率刚好落在信号带宽内。

来看个对比表,一目了然:

参数 DC-DC(降压型) LDO
效率 85%~95%(重载) 取决于压差,压差大时效率低
输出纹波 10~50mV(需加滤波) <1mV(典型值)
静态电流 几十μA~几mA 几μA(超低功耗LDO)
外围器件 电感、电容、反馈电阻 输入/输出电容(2个)
成本 较高 较低
适用场景 主电源、大电流、电池供电 模拟电路、低噪声、小电流
我的小技巧: 在电池供电的医疗设备里,我习惯用DC-DC先把电池电压降到3.6V左右,再用LDO降到3.3V给模拟电路供电。这样既保证了效率,又保证了噪声性能。这叫「两级供电」,很多高端监护仪都这么干。

4.2 电源轨设计原则

电源轨设计,说白了就是给板上每个芯片分配「专属电源通道」。你想想看,一个MCU、一个蓝牙模块、一个运放,它们对电源的要求能一样吗?

我总结了几条原则,记好了:

  1. 分区供电:数字电路和模拟电路必须分开供电。数字电路的地弹噪声会通过电源轨串扰到模拟电路。我曾经在一个血氧仪项目里,把MCU和运放共用一个3.3V,结果运放输出端全是数字噪声,波形跟锯齿似的。
  2. 星型拓扑:电源走线尽量采用星型结构,从电源源头分别拉到各个负载,避免「串联供电」。串联供电会导致后级负载的电流波动影响前级。
  3. 去耦电容就近放置:每个芯片的电源引脚旁边,必须放一个0.1μF的陶瓷电容,距离不超过2mm。这是铁律。我见过有人把电容放在板子另一面,过孔绕了半圈,那效果基本等于没放。
  4. 电源轨宽度:根据电流计算走线宽度。1A电流至少需要40mil(1mm)宽度的铜箔,还要考虑温升。医疗设备通常要求温升不超过10°C。
注意: 电源轨的「回路面积」一定要小。电流从电源流出,经过负载,再流回电源地,这个回路围成的面积越小,电磁辐射越小。高频开关电源尤其要注意这一点。

4.3 动态电压调节(DVS)技术

DVS,听起来高大上,其实原理很简单:根据芯片的工作负载,动态调整供电电压。负载重时给高点,负载轻时给低点。目的是省电。

举个例子:MCU在运行算法时,需要80MHz主频,供电1.8V;在待机时,只需要32kHz时钟,供电1.2V就够了。如果一直用1.8V,待机功耗会多出30%~50%。

实现DVS通常有两种方式:

  • 通过PMIC的I2C接口调节:很多电源管理芯片(如TI的TPS62840)支持I2C动态调压。MCU在进入低功耗模式前,通过I2C发个命令,把输出电压从1.8V降到1.2V。
  • 通过反馈电阻切换:用MOSFET切换反馈电阻的分压比,改变输出电压。这种方式响应快,但需要额外引脚控制。

代码示例(I2C调压,伪代码):

// 进入低功耗模式前,降低电压
void enter_low_power_mode(void) {
    // 设置PMIC输出电压为1.2V
    pmic_i2c_write(0x01, 0x2A);  // 寄存器地址0x01,值0x2A对应1.2V
    delay_ms(1);  // 等待电压稳定
    
    // 降低MCU主频
    set_cpu_freq(32000);  // 32kHz
    
    // 进入睡眠
    __WFI();
}

// 唤醒后,恢复电压
void wake_up_from_low_power(void) {
    // 恢复主频
    set_cpu_freq(80000000);  // 80MHz
    
    // 恢复电压到1.8V
    pmic_i2c_write(0x01, 0x3F);  // 1.8V
    delay_ms(1);
}
避坑指南: 我曾经在一个可穿戴心电设备上用了DVS,结果发现电压切换时,MCU会瞬间复位。查了半天,原来是电压下降速度太快,MCU的BOD(欠压检测)触发了。解决方案:在电压切换时,先降低主频,再降电压,并且设置电压下降的斜率(slew rate)不要太陡。

4.4 电源序列设计

很多医疗设备里有多个电源域:比如MCU需要1.8V和3.3V,射频模块需要1.2V和2.8V,模拟前端需要±5V。这些电源的上电和下电顺序,是有严格要求的。

为什么要有顺序?因为芯片内部有ESD保护二极管、寄生PN结。如果某个电源先上电,而另一个电源还没上电,电流会通过保护二极管倒灌,轻则芯片工作异常,重则烧毁。

我见过最惨的一次:一个超声设备,FPGA的1.0V内核电压先上电,1.8V I/O电压后上电,结果FPGA内部的I/O buffer全部烧毁,整块板子报废。从那以后,我对电源序列就特别较真。

设计电源序列的要点:

  • 先上内核,后上I/O:对于MCU/FPGA,通常要求内核电压先稳定,I/O电压后上电。反过来,下电时先断I/O,后断内核。
  • 模拟电路先上电:模拟电路(运放、ADC)通常需要先建立稳定的参考电压,数字电路再开始工作。否则数字信号进来时,模拟电路还没准备好,会输出错误数据。
  • 使用电源监控芯片:比如TI的TPS3808,可以监控电压是否达到阈值,输出一个「Power Good」信号给下一级电源的使能引脚。这样就能自动实现顺序上电。

一个典型的电源序列时序图(文字描述):

时间轴 →
1. 电池接入(4.2V)
2. 100μs后,DC-DC输出3.6V(主电源)
3. 200μs后,LDO_1输出3.3V(MCU I/O、传感器)
4. 300μs后,LDO_2输出1.8V(MCU内核)
5. 400μs后,LDO_3输出1.2V(射频模块)
6. 500μs后,所有Power Good信号都拉高,MCU复位释放,开始运行
我的习惯: 在设计原理图时,我会在每路电源的输出端加一个「Power Good」指示灯(LED串联1k电阻到地)。调试时,用示波器同时测量几路电源的上电波形,确保时序正确。这个习惯帮我避免了好几次潜在的时序问题。

嗯,电源管理这部分内容确实不少,但它是医疗设备低功耗设计的基石。你想想看,一个24小时连续监测的心电贴,如果电源效率低10%,电池续航可能就少了两三个小时。这可不是小事。

下一章咱们聊聊「低功耗MCU选型与配置」,到时候我会分享一些实际项目中用过的低功耗MCU型号和它们的坑。敬请期待。