STM8L151G6U6 之实现低功耗RTC唤醒

STM8L151G6U6 之实现低功耗

所谓低功耗产品,一般来讲就是在大多数时间让MCU进入睡眠模式,在有数据更新时唤醒,将数据显示或者发送上报。对于中断类型的,可以采用中断直接唤醒MCU的方式,而对于温湿度之类的传感器,只能采用定时唤醒,然后采样并比较判断当前的值是否发送变化,然后显示或者上报。

如果使用了显示屏,WiFi、蓝牙等模块,则需要在睡眠时将其断电。硬件上需要升压电路,否则有些外设在低电压时驱不起来。

STM8L本身在halt模式下消耗电流为350nA,在active-halt with RTC模式下为1.3uA。

最先的版本测试电流达到了1mA以上,草,赶紧折腾了一下,发现在进低功耗之前需要将相关的ADC、TIMER等关闭,此时达到了70uA左右,折腾,发现部分使用到的IO口需要根据硬件进行相关的配置,这样可以达到20uA左右,再折腾,发现没有连到电路的IO设置为输出低电平,又可以降低,这次是2.4uA,,,再折腾,发现PWR_UltraLowPowerCmd(ENABLE);需要开启,这次到了0.4uA。好了

M8L151G6U6,该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口置高;另一种情况是对于使用到的中断管脚,将该管脚上拉时,当发生中断电路接地时,该电阻则形成回路,有一定的消耗电流,可选用较大的电阻做外部上拉电阻,则大大减低电流。

  1. 最重要的一点,由于STM8L151G6有电源管理部分,故必须在进入睡眠之前使能低功耗模式,具体库函数为:

PWR_UltraLowPowerCmd(ENABLE);

  1. 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。

RTC唤醒休眠后 要清除唤醒标志。
————————————————
版权声明:本文为CSDN博主「jnu_fangzebin」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/jnu_fangzebin/article/details/47261099

你可能感兴趣的:(单片机)