3. 低功耗MCU选型:主流低功耗MCU对比
做低功耗产品,第一步就是选芯片。选错了,后面再怎么优化都白搭。我见过不少团队,硬件都画好了才发现待机电流降不下去,只能换方案重来,那叫一个痛苦。
今天咱们就聊聊三款主流低功耗MCU:STM32L系列、EFM32系列和MSP430系列。我会结合自己的项目经验,把它们的核心参数、适用场景和坑点都掰开揉碎了讲清楚。
3.1 三款MCU的定位与背景
先简单说说这三家的来历:
- STM32L:意法半导体的低功耗系列,基于ARM Cortex-M3/M4/M33内核。生态最成熟,资料最多,但功耗不是极致。
- EFM32:Silicon Labs(芯科科技)的“Gecko”系列,ARM Cortex-M3/M4内核。主打超低功耗,外设能自主运行,不用频繁唤醒CPU。
- MSP430:德州仪器的16位RISC架构,不是ARM核。功耗极低,但性能偏弱,适合简单传感器应用。
你可能会问:“为什么不用国产的?” 嗯,国产芯片这几年进步很大,但低功耗这块,尤其是待机电流和唤醒时间,跟这三家比还是有差距。咱们先把标杆搞清楚,再看国产的心里就有数了。
3.2 关键参数深度解读
选低功耗MCU,不能只看数据手册上的“典型值”。你得知道这些参数是怎么测出来的,以及在实际电路中会有什么变化。
3.2.1 待机电流(Standby Current)
这是最关键的参数。产品大部分时间都在睡觉,待机电流直接决定了电池能用多久。
| 参数 | STM32L4系列 | EFM32 Giant Gecko | MSP430FR系列 |
|---|---|---|---|
| 最低待机模式 | Shutdown: 30 nA | EM4: 20 nA | LPM4: 100 nA |
| 带RTC待机 | Standby + RTC: 450 nA | EM3 + RTC: 900 nA | LPM3 + RTC: 350 nA |
| 保留RAM待机 | Stop2: 1.1 µA | EM2: 1.3 µA | LPM3: 0.5 µA |
我的经验: 数据手册上的nA级电流,往往是在理想条件下测的。实际板上会有漏电流,比如电源芯片的静态电流、PCB的绝缘电阻、电容的漏电。我曾经在MSP430项目上,手册说待机100 nA,结果板子焊好一测,3 µA。查了半天,发现是去耦电容漏电。所以,选型时别卡太死,留50%的余量。
3.2.2 运行电流(Active Current)
运行电流取决于主频和外设开启情况。低功耗MCU通常有多个运行模式,可以在性能和功耗之间动态切换。
| 参数 | STM32L4系列 | EFM32 Giant Gecko | MSP430FR系列 |
|---|---|---|---|
| 最高主频 | 80 MHz | 48 MHz | 16 MHz |
| 运行电流(典型) | 100 µA/MHz | 63 µA/MHz | 100 µA/MHz |
| 低功耗运行模式 | Low-power run: 50 µA/MHz | EM0: 63 µA/MHz | LPM0: 60 µA/MHz |
你看,EFM32在运行电流上明显占优。它的秘诀是:外设反射系统(Peripheral Reflex System, PRS)。简单说,就是外设之间可以直接通信,不需要CPU介入。比如定时器触发ADC采样,ADC采样完直接触发DMA传输,CPU全程睡觉。这个设计思路,我在其他MCU上很少见到。
3.2.3 唤醒时间(Wake-up Time)
唤醒时间决定了系统从睡眠到开始干活需要等多久。这个参数容易被忽略,但在实时性要求高的场景下,它可能是瓶颈。
| 参数 | STM32L4系列 | EFM32 Giant Gecko | MSP430FR系列 |
|---|---|---|---|
| 从最低功耗模式唤醒 | Shutdown: 200 µs | EM4: 160 µs | LPM4: 6 µs |
| 从保留RAM模式唤醒 | Stop2: 5 µs | EM2: 2 µs | LPM3: 1.5 µs |
| 从运行模式切换 | 动态调频: 3 µs | 动态调频: 1 µs | 动态调频: 1 µs |
MSP430的唤醒时间简直逆天,6 µs就能从最深睡眠醒过来。为什么?因为它是16位RISC架构,内核简单,启动电路少。STM32L的Shutdown模式要200 µs,因为它要重新初始化PLL和Flash。
我踩过的坑: 有一次做无线传感器,要求每隔100 ms唤醒一次,发送数据后继续睡。我选了STM32L,用Shutdown模式。结果发现,200 µs的唤醒时间加上数据发送时间,占了整个周期的3%。虽然不多,但客户要求平均电流低于10 µA,这3%的唤醒时间就把电流拉高了。后来我改用Stop2模式(5 µs唤醒),虽然待机电流从30 nA升到1.1 µA,但整体平均电流反而降了。你看,参数之间是相互制约的。
3.3 知识体系结构图
下面这张图帮你理清选型时的决策逻辑:
3.4 选型实战建议
说了这么多,到底怎么选?我总结了一个简单的判断逻辑:
- 如果产品需要频繁唤醒(比如每秒几十次),选MSP430。它的唤醒时间最短,能效比最高。
- 如果产品大部分时间在睡觉,偶尔醒来干点活,选EFM32。它的外设反射系统能让CPU多睡一会儿。
- 如果产品需要复杂计算、跑协议栈、或者团队开发经验丰富,选STM32L。生态好,遇到问题容易找到答案。
3.5 一个真实案例
我去年做的一个智能门锁项目,要求两节AA电池用一年。门锁大部分时间在待机,每天开锁10次左右。我一开始选了STM32L,因为团队熟悉。但算下来,待机电流450 nA(带RTC),加上每天10次开锁(每次唤醒+通信+电机驱动,约200 mA持续2秒),平均电流约5 µA。两节AA电池(2000 mAh)理论上能用45年?不对,电池有自放电,而且门锁还有蓝牙广播、按键扫描等额外功耗。实际测试下来,只能用8个月。
后来我换成EFM32,利用它的PRS功能,让按键扫描和蓝牙广播都由外设自主完成,CPU只在开锁时唤醒。待机电流降到1.3 µA(EM2模式),但CPU睡眠时间更长。最终平均电流降到2.8 µA,电池寿命超过一年。这个项目让我深刻体会到:选对MCU,比优化代码更有效。
好了,这一章的内容就到这里。记住,选型是低功耗设计的第一步,也是最关键的一步。花时间把芯片选对,后面会省很多事。