stm32|STM32学习笔记---电源管理

一、STM32电源管理简介 1、电源管理简介
~~~~~~~~电源对电子设备的重要性不言而喻,它是保证系统稳定运行的基础,而保证系统能稳定运行后,又有低功耗的要求。
~~~~~~~~在很多应用场合中都对电子设备的功耗要求非常苛刻,如某些传感器信息采集设备,仅靠小型的电池提供电源,要求工作长达数年之久,且期间不需要任何维护;由于智慧穿戴设备的小型化要求,电池体积不能太大导致容量也比较小,所以也很有必要从控制功耗入手,提高设备的续行时间。
~~~~~~~~STM32有专门的电源管理外设监控电源并管理设备的运行模式,确保系统正常运行,并尽量降低器件的功耗。
2、STM32电源管理系统
stm32|STM32学习笔记---电源管理
文章图片

STM32的电源管理系统主要分为:
1、备份域
2、调压器供电电路
3、ADC电源电路
2.1、备份域电路 ~~~~~~~~STM32的备份域包括LSE振荡器、RTC、备份寄存器及备份SRAM这些器件,这部分的电路可以通过STM32的VBAT引脚获取供电电源,在实际应用中一般会使用3V的钮扣电池对该引脚供电。
stm32|STM32学习笔记---电源管理
文章图片

~~~~~~~~在图中备份域电路的左侧有一个电源开关结构,它的功能类似图中的双二极管,在它的上方连接了VBAT电源,下方连接了VDD主电源(一般为3.3V),右侧引出到备份域电路中。当VDD主电源存在时,由于VDD电压较高,备份域电路通过VDD供电,当VDD掉电时,备份域电路由钮扣电池通过VBAT供电,保证电路能持续运行,从而可利用它保留关键数据
stm32|STM32学习笔记---电源管理
文章图片

2.2、调压器供电电路 ~~~~~~~~在STM32的电源系统中调压器供电的电路是最主要的部分,调压器为备份域及待机电路以外的所有数字电路供电,其中包括内核、数字外设以及RAM,调压器的输出电压约为1.2V,因而使用调压器供电的这些电路区域被称为1.2V域。
stm32|STM32学习笔记---电源管理
文章图片

~~~~~~~~调压器可控制调节供电电路使系统运行在“运行模式”、“停止模式”以及“待机模式”下:

  • 运行模式:
    调压器为 1.2 V 域(内核、存储器和数字外设)提供全功率。
  • 停止模式:
    1.2V域运行在低功耗状态,1.2V区域的所有时钟都被关闭,相应的外设都停止了工作,但它会保留内核寄存器以及SRAM的内容;
  • 在待机模式:
    整个1.2V域都断电,该区域的内核寄存器及SRAM内容都会丢失(备份区域的寄存器及SRAM不受影响)。
2.3、ADC电源控制电路 ~~~~~~~~为了提高转换精度,STM32的ADC配有独立的电源接口,方便进行单独的滤波。ADC的工作电源使用VDDA引脚输入,使用VSSA作为独立的地连接,VREF引脚则为ADC提供测量使用的参考电压。
stm32|STM32学习笔记---电源管理
文章图片

3、STM32低功耗模式
~~~~~~~~很多单片机都有低功耗模式,STM32F4 也不例外 ,运行状态下的 HCLK 为 CPU 提供时钟,内核执行程序代码。当 CPU 不需继续运行时,可以利用多个低功耗模式来节省功耗,例如等待某个外部事件时。
~~~~~~~~STM32F4 按功耗由高到低排列具有运行、睡眠、停止和待机四种工作模式。
~~~~~~~~上电复位后STM32处于运行状态时,当内核不需要继续运行,就可以选择进入后面的三种低功耗模式降低功耗,这三种模式中,电源消耗不同、唤醒时间不同、唤醒源不同,用户需要根据应用需求,选择最佳的低功耗模式。这三种低功耗模式层层递进,运行的时钟或芯片功能越来越少,因而功耗越来越低。
3.1、睡眠模式 ~~~~~~~~在睡眠模式中,仅关闭了内核时钟,内核停止运行,但其片上外设,CM4核心的外设全都还照常运行。
~~~~~~~~有两种方式进入睡眠模式,它的进入方式决定了从睡眠唤醒的方式,分别是WFI(wait for interrupt)和WFE(wait for event),即由等待“中断”唤醒和由“事件”唤醒。睡眠模式的各种特性见下表
stm32|STM32学习笔记---电源管理
文章图片

3.2、停止模式 ~~~~~~~~在停止模式中,进一步关闭了其它所有的时钟,于是所有的外设都停止了工作,但由于其1.2V区域的部分电源没有关闭,还保留了内核的寄存器、内存的信息。
~~~~~~~~所以从停止模式唤醒,并重新开启时钟后,还可以从上次停止处继续执行代码。停止模式可以由任意一个外部中断(EXTI)唤醒。在停止模式中可以选择电压调节器为开模式或低功耗模式,可选择内部FLASH工作在正常模式或掉电模式。
stm32|STM32学习笔记---电源管理
文章图片

3.3、待机模式 ~~~~~~~~待机模式,它除了关闭所有的时钟,还把1.2V区域的电源也完全关闭了,也就是说,从待机模式唤醒后,由于没有之前代码的运行记录,只能对芯片复位,重新检测boot条件,从头开始执行程序。它有四种唤醒方式,分别是WKUP(PA0)引脚的上升沿,RTC闹钟事件,NRST引脚的复位和IWDG(独立看门狗)复位。
stm32|STM32学习笔记---电源管理
文章图片

二、STM32实现睡眠模式 进入睡眠模式,LED灯熄灭,按键唤醒,蜂鸣器提示,打印信息
stm32|STM32学习笔记---电源管理
文章图片

stm32|STM32学习笔记---电源管理
文章图片

1、CubeMx配置
1.1、串口设置 stm32|STM32学习笔记---电源管理
文章图片

1.2、LED、按键管脚设置 stm32|STM32学习笔记---电源管理
文章图片

1.3、时钟设置 stm32|STM32学习笔记---电源管理
文章图片

stm32|STM32学习笔记---电源管理
文章图片

1.4、GPIO中断 stm32|STM32学习笔记---电源管理
文章图片

2、代码详解
2.1、LED、蜂鸣器初始化 stm32|STM32学习笔记---电源管理
文章图片

2.2、进入睡眠模式 stm32|STM32学习笔记---电源管理
文章图片

stm32|STM32学习笔记---电源管理
文章图片

2.3、按键中断唤醒 stm32|STM32学习笔记---电源管理
文章图片

stm32|STM32学习笔记---电源管理
文章图片

stm32|STM32学习笔记---电源管理
文章图片

被唤醒继续执行,输出系统已被执行,需要关闭systick中断,不然中断会触发
stm32|STM32学习笔记---电源管理
文章图片

三、STM32实现停止模式 1、操作说明
stm32|STM32学习笔记---电源管理
文章图片

唤醒后需要恢复时钟
stm32|STM32学习笔记---电源管理
文章图片

2、代码讲解
2.1、进入停止模式 stm32|STM32学习笔记---电源管理
文章图片

stm32|STM32学习笔记---电源管理
文章图片

2.2、中断唤醒 stm32|STM32学习笔记---电源管理
文章图片

stm32|STM32学习笔记---电源管理
文章图片

stm32|STM32学习笔记---电源管理
文章图片

2.3、恢复时钟 唤醒后系统默认选择HSI,需要重新打开使能HSE和PLL
stm32|STM32学习笔记---电源管理
文章图片

stm32|STM32学习笔记---电源管理
文章图片

2.4、串口优化 串口换行符没打印出来,因为串口没有发送完成已经进入停止模式。数据有没有发送完成,看移位寄存器是否为空。
stm32|STM32学习笔记---电源管理
文章图片

四、STM32实现待机模式 1、操作说明
stm32|STM32学习笔记---电源管理
文章图片

2、代码详解
2.1、进入待机模式 【stm32|STM32学习笔记---电源管理】stm32|STM32学习笔记---电源管理
文章图片

stm32|STM32学习笔记---电源管理
文章图片

stm32|STM32学习笔记---电源管理
文章图片

    推荐阅读