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的低功耗,主要可以注意以下几点:
- 不需要用到的外设一律不使能外设时钟,对于临时使用的外设,只需在使用时临时打开即可,使用完毕关闭时钟
2.合理配置GPIO口的状态,对于没有使用到的GPIO,可将其设为上拉输出低,GPIO_Init(GPIOF, GPIO_Pin_0, GPIO_Mode_Out_PP_Low_Slow);对于使用到的GPIO口,则要看你外电路的接法,如用一个GPIO低电平来控制LED亮灯,则要实现低功耗时,需把GPIO口置高;另一种情况是对于使用到的中断管脚,将该管脚上拉时,当发生中断电路接地时,该电阻则形成回路,有一定的消耗电流,可选用较大的电阻做外部上拉电阻,则