前言
一些电子产品由于应用场景和行业规范要求,需要使用电池供电,并且要有比较长的续航时间,因此在产品的软件、硬件设计中需要进行这方面的设计,以满足低功耗的要求;下面从软硬件的角度分享几点低功耗设计的要点,本文基于STM32系列MCU进行说明,其它平台同理。
一、低功耗的概念
简单说就是采用低功耗设计后用最少的电量完成嵌入式产品的功能,或者说用相同的电量可以使产品工作更长的时间;对于资源节约和绿色环境也起到社会作用;
二、硬件的设计
1、选型
低功耗的产品在器件选择上要尽量选择具备低功耗模式的器件,比如主控、产品其它功能的器件;
对于没有低功耗模式的器件,尽量选择具备同样功能但功耗更低的器件;
2、断电
对于一个器件来说它最省电的情况是停止供电,对于不需要一直供电的产品在硬件设计上应该可以通过主控的IO将器件断电;
3、电压级别
在满足器件正常工作的情况下,不需要提供太高的电压,比如一个器件工作范围3V到5V,设计上给与3V+即可;一个产品是由多级电压组成的,合理设计电压域网络;
4、硬件测试点
低功耗产品要做到每个器件功耗的精准测量和控制,产品设计初期为了方便对每个器件功耗情况的掌握,留出方便测试每个器件的测试点,在整体验证之后可以将测试点移除;
三、软件的设计
1、主控工作模式
支持低功耗模式的主控芯片一般会有多种功耗模式,如STM32L系列有正常模式、sleep模式、standby模式、stop模式,不同模式下对应的功耗、休眠程度不同,可以根据产品的设计需求通过软件去控制主控芯片工作模式的切换,并确定主控芯片在工作周期中最省电和最耗电的两种极限模式;
2、主控工作频率
主控的工作频率越高干活(计算)的越快但是同时功耗也会变高,有些产品实时性不是硬性,也不需要将主控的主频控制在最高频率运行,对于频率的设置可以做成动态调整的模式,也可以将频率整体设置到一个比较低的低频这样在软件上更易处理;
3、外部器件工作模式
在选型阶段已经确定的具备低功耗的器件,器件在不同功耗模式下具备的功能不同,当我们在芯片高功耗模式下获取/操作芯片后,可以将芯片置为低功耗模式;
对于可以直接通过IO控制掉电的器件,在操作芯片读写数据后,将其断电;
4、IO状态
现在许多MCU的IO模式可以通过寄存器复用为多种模式,如I2C、模式输入、GPIO、上拉输入等等,当不需要IO去操作所接器件后,可以将IO置为几种模式中最省电的模式;
比如有两个脚被复用为I2C用于和I2C协议的芯片进行数据交互,当我们对芯片操作后,将IO置为最省电的模式,下次再次控制芯片时复用为I2C即可;
5、系统的唤醒手段
低功耗的产品的软件逻辑整体上是从低功耗模式到高功耗模式进行往复切换的,触发高低模式切换的事件可以称为唤醒手段,它可能是一个用户可以按的按键,也可能是在极低功耗模式下可以运行的定时器,低功耗设计要要根据产品的应用场景设计好稳定好用的唤醒手段,防止系统直接睡死无法唤醒;