大家都知道STM32L系列是ST公司旗下的微功耗处理器,今天我们就拿STM32L476来了解下STM32的低功耗模式,首先我们知道该款处理器有,运行,休眠,停止,待机四种模式,大家可以根据自己的需要,来选择合适的工作模式,我这里主要说一下STOP停止模式,停止模式又分为STOP0,STOP1,STOP2,看下表:
STOP0模式下功耗108uA,STOP2模式下,普通串口无法唤醒CPU,不满足项目要求,这里不做介绍,我们来着重介绍下STOP1模式下如何实现最低功耗(6.9uA):
一、IO配置
1、所有未使用的GPIO都配置为模拟输入模式;
2、所有的IO输入管脚都配置为上拉输入(根据自己电路设计也可能配置为下拉来实现最低功耗,但不允许配置为浮空输入模式);
3、输出管脚可以不做处理。
二、USART配置
所有串口的RX引脚需要配置为上拉输入,不仅可以保证STOP1模式下的功耗最低,也可以增强抗干扰能力,避免因外部干扰产生不必要的中断。
三、SPI配置
三线SPI引脚,CLK,MISO,MOSI都要配置为上拉,如果外部接FLASH或其他传感器等,还需要根据CS电平有效值来单独控制IO使其失能。
四、IIC配置
IIC外设我们一般会在外部接上拉电阻,所以无需处理,但是考虑到实际应用中(比如外设未供电,外设供电未接上拉,或外设空载等情况),我们这里给出的建议的建议是在进入STOP模式之前将IIC引脚反初始化,单片机唤醒后重新对IIC的引脚进行初始化即可。
当然这样会占用CPU资源,所以如果确定外设一直存在的情况下,可以不处理,或者可以确定外设永远用不到的情况下也可以把引脚配置为上拉,同样可以达到最低功耗。
实际测试7uA,我这里用的是RTC+STOP1模式定时唤醒,不得不说这款处理器还是很牛的。如果追求极致的功耗可以考虑STOP2模式,当然就需要舍弃一些功能,比如普通串口中断将无法唤醒单片机。待机模式不推荐,因为在Standby模式下GPIO无法保持电平状态,会产生不必要的功耗,所以并不适用。