Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >STM32低功耗模式笔记

STM32低功耗模式笔记

作者头像
小锋学长生活大爆炸
发布于 2020-08-13 06:27:03
发布于 2020-08-13 06:27:03
2.2K0
举报

STM32低功耗模式

一、低功耗注意事项:

1、所有IO管脚,如果高阻状态端口是高电平,就设成上拉输入;如果高阻状态是低电平,设成下拉输入;如果高阻是中间状态,设成模拟输入。这个很多人都提到过,必须的。作为输出口就免了,待机你想输出个什么东西,一定要输,硬件上加上下拉就可以了

2、两个晶振输入脚要remap成普通IO,使用内部晶振。

3、pwr的时钟要使能,即RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR, ENABLE);这个也相当重要

4、关闭jtag口,并设成普通IO。

5、注意助焊膏的质量。

6、功耗计算方式:功耗=工作电压*工作电流

7、引脚电压的切换会对外部和内部电容负载产生动态损耗,其损耗与电压切换频率和负载电容有关。

8、在配置IO模拟输入之前,一定不要锁定IO口。

二、低功耗模式

1、电源管理

为了方便进行电源管理,STM32把它的外设、内核等模块根据功能划分了供电区域(备份域电路、调压器供电电路、 ADC电源及参考电压),其内部电源区域划分见图1。

图 1 STM32供电图

  • 备份域电路

STM32的LSE振荡器、RTC、备份寄存器及备份SRAM这些器件被包含进备份域电路中,这部分的电路可以通过STM32的VBAT引脚获取供电电源,在实际应用中一般会使用3V的钮扣电池对该引脚供电。当VDD主电源存在时,由于VDD电压较高,备份域电路通过VDD供电,当VDD掉电时,备份域电路由钮扣电池通过VBAT供电,保证电路能持续运行,从而可利用它保留关键数据。

  • 调压器供电电路

在STM32的电源系统中调压器供电的电路是最主要的部分,调压器为备份域及待机电路以外的所有数字电路供电,其中包括内核、数字外设以及RAM,调压器的输出电压约为1.2V,因而使用调压器供电的这些电路区域被称为1.2V域。

调压器可以运行在"运行模式"、"停止模式"以及"待机模式"。在运行模式下,1.2V域全功率运行;在停止模式下1.2V域运行在低功耗状态,1.2V区域的所有时钟都被关闭,相应的外设都停止了工作,但它会保留内核寄存器以及SRAM的内容;在待机模式下,整个1.2V域都断电,该区域的内核寄存器及SRAM内容都会丢失(备份区域的寄存器及SRAM不受影响)。

  • ADC电源及参考电压

为了提高转换精度,STM32的ADC配有独立的电源接口,方便进行单独的滤波。ADC的工作电源使用VDDA引脚输入,使用VSSA作为独立的地连接,VREF引脚则为ADC提供测量使用的参考电压。

2、低功耗模式

按功耗由高到低排列,STM32具有运行、睡眠、停止和待机四种工作模式。上电复位后STM32处于运行状态时,当内核不需要继续运行,就可以选择进入后面的三种低功耗模式降低功耗。三种低功耗模式见图2。

图 2 STM32低功耗模式

在这三种低功耗模式中,最低功耗的是待机模式,在此模式下,最低只需要2.2uA左右的电流。停止模式是次低功耗的,其典型的电流消耗在350uA左右。最后就是睡眠模式了。

功耗: 运行>睡眠>停止>待机

2.1、睡眠模式

在睡眠模式中,仅关闭了内核时钟,内核停止运行,但其片上外设、CM4核心的外设全都还照常运行。有两种方式进入睡眠模式,它的进入方式决定了从睡眠唤醒的方式,分别是WFI(wait for interrupt)和WFE(wait for event),即由等待"中断"唤醒和由"事件"唤醒。睡眠模式的各种特性见表1。

表 1 睡眠模式的各种特性

特性

说明

立即睡眠

在执行WFI 或WFE 指令时立即进入睡眠模式。

退出时睡眠

在退出优先级最低的中断服务程序后才进入睡眠模式。

进入方式

内核寄存器的SLEEPDEEP = 0 ,然后调用WFI或WFE指令即可进入睡眠模式; 另外若内核寄存器的SLEEPONEXIT=0时,进入"立即睡眠"模式,SLEEPONEXIT=1时,进入"退出时睡眠"模式。

唤醒方式

如果是使用WFI指令睡眠的,则可使用任意中断唤醒; 如果是使用WFE指令睡眠的,则由事件唤醒。

睡眠时

关闭内核时钟,内核停止,而外设正常运行,在软件上表现为不再执行新的代码。这个状态会保留睡眠前的内核寄存器、内存的数据。

唤醒延迟

无延迟。

唤醒后

若由中断唤醒,先进入中断,退出中断服务程序后,接着执行WFI指令后的程序;若由事件唤醒,直接接着执行WFE后的程序。

2.2、停止模式

在停止模式中,进一步关闭了其它所有的时钟,于是所有的外设都停止了工作,但由于其1.2V区域的部分电源没有关闭,还保留了内核的寄存器、内存的信息,所以从停止模式唤醒,并重新开启时钟后,还可以从上次停止处继续执行代码。停止模式可以由任意一个外部中断(EXTI)唤醒。在停止模式中可以选择电压调节器为开模式或低功耗模式,可选择内部FLASH工作在正常模式或掉电模式。停止模式的各种特性见表2。

表 2 停止模式的各种特性

特性

说明

调压器低功耗模式

在停止模式下调压器可工作在正常模式或低功耗模式,可进一步降低功耗

FLASH掉电模式

在停止模式下FLASH可工作在正常模式或掉电模式,可进一步降低功耗

进入方式

内核寄存器的SLEEPDEEP =1,PWR_CR寄存器中的PDDS=0,然后调用WFI或WFE指令即可进入停止模式; PWR_CR 寄存器的LPDS=0时,调压器工作在正常模式,LPDS=1时工作在低功耗模式; PWR_CR 寄存器的FPDS=0时,FLASH工作在正常模式,FPDS=1时进入掉电模式。

唤醒方式

如果是使用WFI指令睡眠的,可使用任意EXTI线的中断唤醒; 如果是使用WFE指令睡眠的,可使用任意配置为事件模式的EXTI线事件唤醒。

停止时

内核停止,片上外设也停止。这个状态会保留停止前的内核寄存器、内存的数据。

唤醒延迟

基础延迟为HSI振荡器的启动时间,若调压器工作在低功耗模式,还需要加上调压器从低功耗切换至正常模式下的时间,若FLASH工作在掉电模式,还需要加上FLASH从掉电模式唤醒的时间。

唤醒后

若由中断唤醒,先进入中断,退出中断服务程序后,接着执行WFI指令后的程序;若由事件唤醒,直接接着执行WFE后的程序。唤醒后,STM32会使用HIS作为系统时钟。

2.3、待机模式

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

表 3 待机模式的各种特性

特性

说明

进入方式

内核寄存器的SLEEPDEEP =1,PWR_CR寄存器中的PDDS=1,PWR_CR寄存器中的唤醒状态位WUF=0,然后调用WFI或WFE指令即可进入待机模式;

唤醒方式

通过WKUP引脚的上升沿,RTC闹钟、唤醒、入侵、时间戳事件或NRST引脚外部复位及IWDG复位唤醒。

待机时

内核停止,片上外设也停止;内核寄存器、内存的数据会丢失;除复位引脚、RTC_AF1引脚及WKUP引脚,其它I/O口均工作在高阻态。

唤醒延迟

芯片复位的时间

唤醒后

相当于芯片复位,在程序表现为从头开始执行代码。

注:在以上讲解的睡眠模式、停止模式及待机模式中,若备份域电源正常供电,备份域内的RTC都可以正常运行、备份域内的寄存器及备份域内的SRAM数据会被保存,不受功耗模式影响。

3、进入低功耗

void PWR_EnterSleepMode(uint8_t PWR_SLEEPEntry); //睡眠模式

void PWR_EnterSTOPMode(uint32_t PWR_Regulator, uint8_t PWR_STOPEntry); //停机模式

void PWR_EnterSTANDBYMode(void); //待机模式

图 3 进入各种低功耗模式时都需要调用WFI 或WFE 命令

3.1、睡眠模式

直接调用WFIWFE 指令可以进入睡眠模式。

a) 设置中断(Interrupt)或事件(Event)

/* 初始化按键为中断模式,按下中断后会进入中断服务函数 */

EXTI_Key_Config();

b) 进入睡眠

__WFI(); //WFI 指令进入睡眠

c) 中断退出睡眠后,继续执行后面的程序

3.2、停止模式

进入停止模式后,STM32 的所有I/O都保持在停止前的状态,而当它被唤醒时,STM32 使用HSI 作为系统时钟(16MHz)运行,由于系统时钟会影响很多外设的工作状态,所以一般我们在唤醒后会重新开启HSE,把系统时钟设置会原来的状态。

a) 设置中断(Interrupt)或事件(Event)

/* 初始化按键为中断模式,按下中断后会进入中断服务函数 */

EXTI_Key_Config();

b) 进入睡眠

/*设置停止模式时,FLASH 进入掉电状态*/

PWR_FlashPowerDownCmd (ENABLE);

/* 进入停止模式,设置电压调节器为低功耗模式,等待中断唤醒 */

PWR_EnterSTOPMode(PWR_Regulator_LowPower,PWR_STOPEntry_WFI);

c) 中断退出睡眠后,继续执行后面的程序

d) 需要先恢复时钟

//获取刚被唤醒时的时钟状态

//时钟源

clock_source_wakeup = RCC_GetSYSCLKSource ();

//时钟频率

RCC_GetClocksFreq(&clock_status_wakeup);

//从停止模式下被唤醒后使用的是HSI 时钟,此处重启HSE 时钟,使用PLLCLK

SYSCLKConfig_STOP();

//获取重新配置后的时钟状态

//时钟源

clock_source_config = RCC_GetSYSCLKSource ();

//时钟频率

RCC_GetClocksFreq(&clock_status_config);

e) 正常执行后面的程序

3.3、待机模式

不需要中断,通过WKUP引脚的上升沿,RTC闹钟、唤醒、入侵、时间戳事件或NRST引脚外部复位及IWDG复位唤醒。

a) 进入睡眠

/*清除WU 状态位*/

PWR_ClearFlag (PWR_FLAG_WU);

/* 使能WKUP 引脚的唤醒功能 ,使能PA0*/

PWR_WakeUpPinCmd (ENABLE);

/* 进入待机模式 */

PWR_EnterSTANDBYMode();

b) 唤醒后,重新执行程序

e) 检测是否是唤醒后的程序

//检测复位来源

PWR_GetFlagStatus(PWR_FLAG_WU)

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018/11/25 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
小华半导体-低功耗 MCU:HC32L021 来喽~
在这个文章里面: 世界最小ARM-M0 MCU型号更正-HC32L110B6YA 我们就已经和小华有个照面了。
云深无际
2025/04/22
1130
小华半导体-低功耗 MCU:HC32L021 来喽~
(24)STM32——待机唤醒(低功耗)笔记
        这三种模式的功耗是逐渐降低的,特别是待机模式,功耗特别低,最低只需要 2.2uA 左右的电流。停机模式是次低功耗的,其典型的电流消耗在 350uA 左右。最后就是睡眠模式了。根据最低电源消耗,最快启动时间和可用的唤醒源等条件,选择一种最佳的低功耗模式。
小点点
2022/12/12
1.5K0
(24)STM32——待机唤醒(低功耗)笔记
低功耗设计方法--低功耗IP设计(一)
前面的章节已经从系统架构师和芯片设计师的角度讨论了低功耗设计。本文从设计复杂IP(如处理器、DSP、USB、PCIE和总线)的工程师的角度介绍低功耗设计。
数字IC小站
2022/08/26
1.3K0
低功耗设计方法--低功耗IP设计(一)
STM32低功耗控制心得体会
本文主要叙述在stm32进入stop时如何保持最低功耗的问题,并对部分细节问题进行分析整理。STM32L提供5种低功耗模式:低功耗运行模式、睡眠模式、低功耗睡眠模式、停止模式、待机模式。
bigmagic
2020/03/17
2K0
聊一聊STM32的低功耗管理(附源码)
先来看看STM系列手册为例看看STM32的几种工作模式,小飞哥最近用到STM32G0系列的MCU,就拿G0的手册来聊一聊吧,其他的都类似,功耗方面有些差别
用户8913398
2022/06/07
2K0
聊一聊STM32的低功耗管理(附源码)
STM32芯片超低功耗设计思路
对于给定的制造工艺和晶片区域,微控制器的功耗主要取决于两个因素(动态可控):电压和频率。ST公司L系列超低功耗芯片为130nm超低泄漏工艺,在超低功耗所做的设计思路如下:
硬件大熊
2022/06/23
6310
STM32芯片超低功耗设计思路
STM32低功耗模式下的外设状态冻结与恢复策略
STM32的低功耗模式设计是嵌入式系统中非常重要的一个环节,尤其在电池供电的设备中,如何在保持一定功能的情况下降低功耗显得尤为重要。
不脱发的程序猿
2025/02/18
1110
STM32低功耗模式下的外设状态冻结与恢复策略
如何在低功耗模式下debug MCU?
正常情况下,通过SWD在线调试时,一旦芯片进入低功耗模式(Stop或者Standby),调试就会断开。原因是进入Stop或者Standby模式后,内核时钟就停止了。如果想在调试低功耗代码时还可以正常通过调试接口debug,有没有什么办法呢?
用户2366192
2022/12/06
9120
如何在低功耗模式下debug MCU?
ARMv8-A Power management
空闲管理通常在操作系统的控制下。在这种情况下,当内核空闲时,操作系统电源管理(OSPM)会将其移至低功耗状态。通常,可以选择状态,具有不同的进入和退出等待时间,以及与每个状态相关的不同级别的功耗。通常使用的状态取决于再次需要内核的速度。可以一次使用的电源状态还可能取决于SoC中除内核之外的其他组件的活动。每个状态均由进入状态时通过时钟门控或电源门控的一组组件定义。
用户9732312
2022/05/13
6780
FreeRTOS(十六):低功耗 Tickless 模式
很多应用场合对于功耗的要求很严格,比如长期无人照看的数据采集仪器,可穿戴设备等。其实很多 MCU 都有相应的低功耗模式,以此来降低设备运行时的功耗,进行裸机开发的时候就可以使用这些低功耗模式。但是现在我们要使用操作系统,因此操作系统对于低功耗的支持也显得尤为重要,这样硬件与软件相结合,可以进一步降低系统的功耗。这样开发也会方便很多,毕竟系统已经原生支持低功耗了,我们只需要按照系统的要求来做编写相应的应用层代码即可。FreeRTOS 提供了一个叫做 Tickless 的低功耗模式。
Jasonangel
2022/04/07
3.9K2
FreeRTOS(十六):低功耗 Tickless 模式
物联网这么火了,怎么能不懂点低功耗设计
随着物联网的兴起,各式各样的物联网设备涌向市场,这些设备有一个共同的特点就是电池供电,电池的容量是有限的,如何在电池容量有限的情况下延长设备的使用时间呢?万恶始于源头,最好的办法就是在设计中降低设备的功耗,设计又进一步分为软件设计、硬件设计。
用户8913398
2021/08/16
1.4K0
物联网这么火了,怎么能不懂点低功耗设计
看这里!低功耗STM32L4七大工作模式及应用策略帮你梳理好了!
STM32L系列具有比较显著的低功耗性能,在现代电子产品、工业仪器仪表、可穿戴设备应用等领域往往都需要设计低功耗应用,那么如何基于STM32L设计出一个好的低功耗应用,首先应比较准确的理解其核心的7大工作模式。
AI 电堂
2021/01/08
7.8K0
STM8S功耗管理(设计通法)
这篇文章我们聊下功耗管理,不仅仅是STM8S,51,32,等等单片机都绕不过这个坎,在文章最后试图给出一些设计的通法。
云深无际
2022/06/15
5830
STM8S功耗管理(设计通法)
干货 | 用GD32替换STM32,这些细节你一定要知道!
GD32是国内开发的一款单片机,据说开发的人员是来自ST公司的,GD32也是以STM32作为模板做出来的。所以GD32和STM32有很多地方都是一样的。
MCU起航
2022/05/16
2.6K0
干货 | 用GD32替换STM32,这些细节你一定要知道!
如何解决STM32待机模式无法下载程序问题
STM32的待机模式(Standby Mode)是一种低功耗模式,主要用于在不需要高性能处理的情况下,降低系统的功耗。
不脱发的程序猿
2025/01/12
2330
如何解决STM32待机模式无法下载程序问题
stm32学习笔记
单片机:Single-Chip Microcomputer,单片微型计算机,是一种集成电路芯片
是小北a
2023/10/21
2620
stm32学习笔记
stm32入门教程_单片机STM32
首先你得知道学习stm32,实际就是在学ARM内核,stm32内核就是ARM的; ARM使用RISC精简指令集模式开发; ARM公司全称Acorn Risc Machine; ARM处理器本身是32位设计,但也具备16位指令集,与等价32位处理器相比代码量节省35%,还能具备32位处理器的所有优势; ARM公司是英国的; ARM公司是全球知识产权提供商,他不做生产制造; 全世界超过95%的智能手机和平板电脑都采用ARM架构; 同时日本软银收购了ARM公司,成为物联网的领军者; ARM11系列就是应用到手机上的芯片,包括ARMv6、ARM6T2、ARMv6KZ、ARMv6K; ARM12系列时候,名字就不叫ARM12了,叫成Cortex; 杨桃首页:
全栈程序员站长
2022/10/29
1.6K0
stm32入门教程_单片机STM32
【STM32H7教程】第14章 STM32H7的电源,复位和时钟系统
完整教程下载地址:http://forum.armfly.com/forum.php?mod=viewthread&tid=86980 第14章       STM32H7的电源,复位和时钟系统 本章
Simon223
2019/05/14
1.6K0
【STM32】HAL库 STM32CubeMX教程十三—RTC时钟
本系列教程将 对应外设原理,HAL库与STM32CubeMX结合在一起讲解,使您可以更快速的学会各个模块的使用
全栈程序员站长
2022/08/11
2.8K0
【STM32】HAL库 STM32CubeMX教程十三—RTC时钟
对于GD32VF103一些想法
GD32VF103是兆易创新推出的基于Nuclei Bumblebee处理器的32位控制器。
bigmagic
2021/03/27
1.1K0
推荐阅读
相关推荐
小华半导体-低功耗 MCU:HC32L021 来喽~
更多 >
领券
💥开发者 MCP广场重磅上线!
精选全网热门MCP server,让你的AI更好用 🚀
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档