第四章 低功耗设计策略:睡眠模式、待机模式、时钟门控、动态电压调节
各位工程师朋友,咱们接着聊理疗仪的主控芯片选型。这一章我要重点讲讲低功耗设计。说实话,理疗仪这东西,用户可能贴着电极片就睡着了,一用就是好几个小时。功耗要是控制不好,电池哗哗掉电,用户体验直接崩盘。
我自己做过一款便携式低频理疗仪,客户反馈说「充一次电用不到两次」。我一查,问题就出在待机功耗上——芯片在空闲时还在全速跑,白白浪费了80%的电量。从那以后,我对低功耗策略就格外上心。
4.1 睡眠模式与待机模式
这两个模式是低功耗的「基本功」。说白了,就是让芯片在没事干的时候「睡大觉」。
睡眠模式:CPU 核心停止工作,但外设和 RAM 保持供电。唤醒速度很快,微秒级就能恢复。适合理疗仪在两次脉冲输出之间的短暂空闲期。
待机模式:几乎整个芯片都断电,只保留 RTC 和几个唤醒引脚。功耗可以降到微安级别。适合理疗仪长时间不操作时的深度休眠。
实际应用场景:
- 用户按下「开始治疗」后,芯片进入睡眠模式,定时器每 50ms 唤醒一次,输出一个脉冲波形,然后继续睡。这样 CPU 占用率不到 5%。
- 用户 5 分钟没操作,自动进入待机模式。只有按键中断能唤醒。功耗从 10mA 降到 5μA。
我的经验:我曾经在待机模式下翻车了——唤醒后外设状态没恢复,导致波形输出异常。后来我养成了习惯:进入待机前,把关键寄存器值存到 RAM 里,唤醒后先恢复再干活。
4.2 时钟门控
时钟门控,听起来高大上,其实原理很简单:不需要用的模块,就把它的时钟关掉。
理疗仪里哪些模块可以关?
- ADC:只在采集皮肤阻抗时开启,平时关掉
- DAC:只在输出波形时开启,空闲时关掉
- 定时器:只保留一个基础定时器,其他全部关闭
- 通信接口(UART/SPI):没有数据传输时,直接关掉时钟
我见过不少工程师,代码里把所有外设的时钟都开着,功耗直接翻倍。其实你想想看,理疗仪 90% 的时间都在「等待下一个脉冲」,这些外设根本用不上。
避坑指南:我曾经在 STM32L4 上踩过坑——关闭 TIM 时钟后,忘记重新配置预分频器,导致唤醒后定时不准。正确的做法是:关时钟前保存配置,开时钟后恢复配置。
4.3 动态电压调节
动态电压调节,简称 DVS。核心思想是:芯片跑得快的时候给高电压,跑得慢的时候给低电压。
理疗仪的主控芯片,大部分时间都在低负载状态。这时候把电压从 3.3V 降到 1.8V,功耗能降低 40% 以上。为什么?因为功耗和电压的平方成正比。
| 工作模式 | 电压 | 频率 | 功耗 |
|---|---|---|---|
| 全速运行 | 3.3V | 80MHz | 25mW |
| 轻度负载 | 2.5V | 40MHz | 12mW |
| 待机 | 1.8V | 4MHz | 3mW |
嗯,这里要注意:不是所有芯片都支持 DVS。选型时一定要看数据手册里有没有「动态电压调节」或「可编程电压输出」功能。我推荐 STM32U5 系列和 NXP 的 i.MX RT 系列,它们都内置了 DVS 控制器。
4.4 理疗仪中的实际应用
咱们把上面这些策略串起来,看看一个完整的理疗仪低功耗流程:
- 上电初始化:全速运行,配置所有外设。电压 3.3V,频率 80MHz。耗时 100ms。
- 进入治疗循环:切换到轻度负载模式。电压降到 2.5V,频率降到 40MHz。开启时钟门控,只保留 DAC 和定时器。
- 脉冲输出间隙:进入睡眠模式。CPU 停止,DAC 和定时器继续工作。每 50ms 唤醒一次,输出一个脉冲。
- 用户停止操作:进入待机模式。电压降到 1.8V,频率降到 4MHz。只保留 RTC 和按键中断。
- 深度休眠:如果 30 分钟无操作,进入关机模式。功耗降到 1μA 以下。
实测数据:我上一款产品,采用上述策略后,待机功耗从 12mA 降到 5μA,续航从 8 小时提升到 30 小时。用户反馈「终于不用天天充电了」。
4.5 选型建议
最后,我给大家几个选型时的硬指标:
- 睡眠模式唤醒时间:最好小于 10μs,否则会影响脉冲波形的连续性
- 待机模式功耗:低于 10μA 才算合格
- 支持 DVS:必须有,否则功耗优化空间有限
- 时钟门控粒度:最好能单独控制每个外设的时钟,而不是只能整组开关
我个人习惯用 STM32L4 系列做理疗仪,性价比高,低功耗特性也够用。如果预算充足,可以上 STM32U5,它的待机功耗能做到 1μA 以下。
一个小技巧:选型时别只看数据手册上的「典型值」,要看「最大值」。有些芯片标称待机 5μA,实际量产时可能跑到 20μA。我一般会留 50% 的余量。
好了,低功耗这块就聊到这儿。下一章咱们讲讲理疗仪里最关键的波形生成与 DAC 选型。到时候我会分享一个我踩过的坑——DAC 输出噪声太大,差点把用户电出心理阴影。敬请期待。