现在做嵌入式产品,低功耗几乎是个必选项。特别是电池供电的设备,功耗控制直接关系到产品的续航能力。这些年做低功耗设计,积累了一些经验,和大家分享一下。
低功耗设计要从硬件和软件两方面考虑。硬件上,选芯片的时候就要注意低功耗特性。现在很多 MCU 都有多种低功耗模式,待机、睡眠、停机这些,功耗差别很大。外设也要选低功耗的,比如传感器、通信模块这些,待机电流越小越好。
软件上的优化空间更大。最基本的思路就是不用时就休眠,需要工作时再唤醒。这里有个技巧,尽量让 MCU 在低功耗模式待的时间长一些,唤醒后快速完成任务,然后继续休眠。
中断的使用也很关键。我用得最多的是定时器中断和外部中断。定时器可以周期性唤醒系统采集数据,外部中断可以在有事件时立即响应。中断服务程序要尽量短,耗时的操作放到主循环里处理。
外设时钟的管理容易被忽视。不用的外设时钟要及时关闭,这个能省不少功耗。还有 GPIO 引脚,悬空的引脚会增加功耗,不用的引脚要配置成固定电平。
实际调试的时候,我习惯用电流表实时监测功耗,看看每个模式下电流是多少,有没有异常。有时候一个小小的配置错误,可能导致功耗增加好几倍。
低功耗设计是个系统工程,需要从选型、架构、编码、调试各个环节都注意。多做测试,多对比,慢慢就能找到最优方案。
