在嵌入式工程师的眼里,电池里的电量不是抽象的百分比,而是实实在在的库仑 (Coulombs)。
当我们设计一个号称“能在纽扣电池上跑 5 年”的传感器节点时,我们实际上是在进行一场极其严苛的预算管理。要打赢这场战争,首先得搞清楚敌人在哪里。对于 CMOS 工艺的 MCU 来说,功耗主要由两部分组成:动态功耗(忙时的代价)和静态功耗(闲时的漏电)。
一、 动态功耗
当 MCU 的 CPU 正在疯狂跑代码,或者外设正在翻转电平时,消耗的是动态功耗。其物理本质是对电路中寄生电容的充放电。
公式极其残酷且诚实:

1. 电压 (V) 的平方律效应
注意公式里的 V的平方。这意味着,电压降低一点点,功耗会呈指数级下降。
-
STM32G0 的策略:电压调节器 (LDO) 的动态调整
STM32G0 内部集成了一个 LDO(低压差线性稳压器)来给内核(Vcore)供电。它不仅仅是降压,更重要的是它支持动态电压调节 (Dynamic Voltage Scaling, DVS)。
-
Range 1 (高性能): Vcore = 1.2V,主频可达 64MHz。
-
Range 2 (低功耗): Vcore 降至 1.0V 左右,主频限制在 16MHz。
-
深度解读: 如果你的任务只需要 8MHz 就能跑完,却把电源选在了 Range 1,那你就是在浪费电。在 G0 上,手动切换 PWR_CR1 寄存器的 VOS 位,是降低动态功耗的第一把手术刀。
-
-
RL78/G23 的策略:宽电压直驱与极低的主频电流
RL78 是 16 位机,其工艺制程(通常是 130nm 或更成熟工艺,相比 G0 的 90nm/40nm)决定了它的漏电更小,但它对电压的依赖更线性。
-
RL78 惊人之处在于其 Run Mode 电流。G0 大约是 100µA/MHz,而 RL78/G23 可以做到 40-60µA/MHz。
-
它没有复杂的 VOS 调节,因为它在整个电压范围内(1.6V - 5.5V)的效率曲线都非常平缓。这意味着在电池电压下降后期(如 2.2V),RL78 依然能保持极高的能效比,而不用担心 LDO 的压差损耗。
-
2. 频率 (f) 的博弈:Race to Halt (快跑完去睡)
降低频率 (f) 确实能降低瞬时电流,但会延长处理时间。
E = P x t
既然 P 与 f 成正比,t 与 f 成反比,理论上总能量 E 似乎与频率无关?
错。 因为除了 CPU,还有静态基底电流在时刻消耗。
结论: 在 STM32G0 上,通常建议用最高效的主频(如 Range 1 下的 64MHz)快速执行完代码,然后立刻进入 Stop 模式。这种“Race to Halt”策略通常比慢吞吞地跑更省电。
二、 静态功耗:温度与漏电流的暗战
当你以为芯片“关机”了(进入 Stop/Standby 模式),其实它还在流血。这就是静态功耗,主要由 漏电流 (Leakage Current) 构成。
公式如下:

1. 温度的指数级惩罚
这是一个很多新手会忽略的深坑:数据手册首页的低功耗数据,通常是在 摄氏25测得的。
-
物理本质: 随着温度升高,载流子的热运动加剧,PN 结反向漏电流呈指数上升。
-
实战对比:
-
STM32G0 (Cortex-M0+): 由于逻辑门数量庞大(32位核+丰富外设),其漏电流对温度非常敏感。在 摄氏25时 Stop 模式可能只有 3µA,但在 摄氏85 时可能会飙升到 30µA 甚至更高。
-
RL78/G23: 得益于更简单的逻辑结构和专用的低漏电工艺,它的高温漏电表现通常优于 STM32。在高温工况下(如车载、户外暴晒),RL78 的“耐力”更强。
-
2. 保持 RAM 的代价
要想醒来后程序能接着跑,SRAM 里的数据就不能丢。保持 SRAM 数据需要持续供电。
-
STM32G0: 提供了精细的 RAM 保持控制。在 Shutdown 模式下,为了极致省电(几十 nA),它会切断 SRAM 供电(除了几个字节的 Backup Registers),醒来等于复位。
-
RL78/G23: 它的 Stop 模式通常默认保持所有 RAM,且电流依然控制在微安级。这对开发者更友好,因为不需要复杂的“冷启动/热启动”判断逻辑。
三、 架构对比:Snooze vs LPBAM/BAM
这一节是两款芯片灵魂的碰撞。如何做到“CPU 在睡觉,活儿还能干了”?
1. RL78 的杀手锏:Snooze Mode (打盹模式)
这是 RL78 称霸低功耗界多年的独门绝技。
-
场景: 作为一个烟雾报警器,需要每秒采集一次 ADC,判断是否超过阈值。
-
普通 MCU: 唤醒 CPU -> 启动 ADC -> 采样 -> CPU 读数比较 -> 没超标 -> 继续睡。这里面 CPU 的唤醒和上下文切换是巨大的浪费。
-
RL78 Snooze:
-
硬件定时器触发,不唤醒 CPU,直接给 ADC 时钟供电。
-
ADC 自动采样。
-
硬件窗口比较器自动比较采样值。
-
如果值在正常范围内,ADC 自动关机,系统继续睡。CPU 全程不知道发生了什么。
-
只有值异常,才会生成中断唤醒 CPU。
-
-
效果: 极大地降低了平均功耗。
2. STM32G0 的反击:Batch Acquisition Mode (BAM) 理念
STM32G0 虽然没有叫 "Snooze" 的模式,但它通过 DMA + 硬件触发 实现了类似功能,不过实现起来更依赖软件配置。
-
机制: 利用 G0 的 DMA 可以在 Sleep 模式下工作的特性。
-
限制: 在深度的 Stop 模式下,G0 的大部分时钟关闭,DMA 也就停了。这就导致 G0 很难像 RL78 那样在**极低功耗模式(Stop)**下完成数据搬运。
-
改进: STM32 新的 U5 系列引入了 LPBAM 彻底解决了这个问题,但在 G0 这个级别,RL78 的 Snooze 模式在硬件整合度上依然略胜一筹。
四、 工程师视角的总结
| 维度 | STM32G0 (Arm Cortex-M0+) | Renesas RL78/G23 (16-bit CISC) | 胜出者点评 |
| 供电策略 | 内部 LDO + DVS (Range1/2) | 宽电压线性高能效 | G0 适合高性能突发处理;RL78 适合电池直驱。 |
| 计算能效 | 优异 (CoreMark/mA 高) | 一般 | G0 算力强,跑复杂算法省电。 |
| 静态漏电 | 随温度上升明显 | 相对稳定,高温表现好 | RL78 在恶劣环境下更可靠。 |
| 自主运行 | 依赖 DMA,Sleep 模式可行 | Snooze 模式,Stop 模式可行 | RL78 的 Snooze 是低频监控类应用的“神” |
1197

被折叠的 条评论
为什么被折叠?



