这几篇日志将详细记录,自己应用stm32进行低功耗设计的全过程。
使用芯片:STM32L053R8T6
运行模式:
Range 1:电源电压限制在1.71-3.6V,CPU最大运行频率为32MHz。
Range 2:CPU最大运行频率为16MHz。
Range 3:CPU最大运行频率4.2MHz
低功耗模式:
Sleep mode(睡眠模式)、Low-power run mode(低功耗运行模式)、Low-power sleep mode(低功耗睡眠模式)、Stop mode with RTC(带有RTC的停止模式)、Stop mode without RTC(不带RTC的停止模式)、Standby mode with RTC(带有RTC的旁路模式)、Standby mode without RTC(不带RTC的旁路模式)。
在上述这些模式中功耗依次降低,具体值为:
Sleep mode:37uA/MHz
Low-power run mode:8uA
Low-power sleep mode:4.5uA
Stop mode with RTC:1uA
Stop mode without RTC:0.4uA VDD=3.0V
Standby mode with RTC:0.85uA VDD=3.0V
Standby mode without RTC:0.29uA VDD=3.0V
在上述这些模式中,使用时应注意以下几点:
1、睡眠模式,在所有外设全部关闭的条件下,16MHz时,电流为1mA左右,这个数值相对自身的项目来说还是有些大;
2、低功耗运行模式和低功耗睡眠模式,都限制了CPU的最大运行速度,如果CPU需要一直工作选择,该模式是比较合适的;
3、停止模式,电流比较低,唤醒的方法也比较多;
4、旁路模式,里面的RAM中的数据全部丢失,相当于复位重启。
综上所述,停止模式是比较适合大部分项目的,我现在着手于选择停止模式,还完成后续的项目设计工作。
Stop mode without RTC
在停止模式时,RAM和寄存器中的数据全部保留。所有的时钟全部停止,包括PLL、MSI RC、HSI、LSI RC、HSE和LSE 。下图是我项目中用到的时钟的基本情况,仅使用了HSE和PLL。
在stop运行模式时,一些具有唤醒功能的外设,当探索到唤醒条件时,能够使能HSI RC时钟。
在stop运行模式时,电压稳压器处于低功耗模式。任何外部中断先,在3.5us的时间内即可唤醒器件,处理器将处理中断程序或执行后续代码。在STM32中,任何一个GPIO都可以设置为外部中断源,也就是说可以使用任何一个引脚的电平变化,来唤醒CPU。CPU也可以被USB/USART/I2C/LPUART/LPTIMER唤醒。