先简单介绍下STM8L151G6U6,该MCU是STM8L超低功耗系列,与152系列相比只是少了LCD的功能,官方手册介绍的各个低功耗模式的功耗如下:
其低功耗性能还是很不错的,在本文中是基于活跃停机低功耗模式来测试的。
要实现STM8L151G6的低功耗,主要可以注意以下几点:
1. 不需要用到的外设一律不使能外设时钟,对于临时使用的外设,只需在使用时临时打开即可,使用完毕关闭时钟
2.合理配置GPIO口的状态,对于没有使用到的GPIO,可将其设为上拉输出低,GPIO_Init(GPIOF, GPIO_Pin_0, GPIO_Mode_Out_PP_Low_Slow);对于使用到的GPIO口,则要看你外电路的接法,如用一个GPIO低电平来控制LED亮灯,则要实现低功耗时,需把GPIO口置高;另一种情况是对于使用到的中断管脚,将该管脚上拉时,当发生中断电路接地时,该电阻则形成回路,有一定的消耗电流,可选用较大的电阻做外部上拉电阻,则大大减低电流。
3. 最重要的一点,由于STM8L151G6有电源管理部分,故必须在进入睡眠之前使能低功耗模式,具体库函数为:
PWR_UltraLowPowerCmd(ENABLE);
4. STM8L系列的MCU数据手册表明工作电压可低到1.65V,当要实现这个功能是有要求的,必须勾选选项字节中的BOR_ON Brownout reset OFF,不启用BOR,这个可以在烧录软件中选择,这个在参考手册中有下面的描述
In low density devices, medium density devices and in the medium+ and high density
devices operating from 1.8V to 3.6V (device part numbers without "D" suffix), the BOR starts
to work above the POR threshold (see Section 6.3: Brownout reset (BOR) on page 66). To
ensure the minimum operating voltage (1.65 V), the BOR should be configured to BOR
Level 0.
我根据上述几点,对自己的项目进行测试,使用活跃停机模式,RTC 30s自动唤醒,最后测试的休眠电流能做到4.7uA。