STM32低功耗分析(1)

随着计算机技术和微电子技术的迅速发展,计算机系统应用领域越来越广泛。在一些特定场景下,低功耗计算机的应用显得尤为重要。如在智能手机、医疗设备和工业控制等领域。由于这些领域对设备的大小、重量和/或持久性有很高的要求,所以低功耗技术在这几个领域有着广泛的应用。
在这里插入图片描述
计算机低功耗应用主要有以下几种:
物联网设备:物联网设备需要长时间运行,因此需要使用低功耗计算机,以确保设备在运行过程中不会快速耗尽电力。
在这里插入图片描述
嵌入式系统:嵌入式系统是一种小型计算机系统,用于控制或监测特定设备或系统。这些系统需要长时间运行,因此需要使用低功耗计算机,以确保系统不会因电力耗尽而失效。
在这里插入图片描述
移动设备:移动设备如智能手机、平板电脑等需要长时间使用,因此需要使用低功耗计算机,以确保设备不会过热或快速耗尽电力。
在这里插入图片描述
云数据中心:云数据中心需要大量的计算机资源来支持大量的用户和应用程序。这些计算机需要长时间运行,因此需要使用低功耗计算机,以确保电力消耗得到有效控制。

在这里插入图片描述
总而言之,低功耗计算机的应用越来越广泛,这些计算机采用了一系列创新技术来最大程度地降低功耗,同时还能够保证高性能的运行。这些技术的应用不仅有利于节能减排,还可以提高设备的性能和可靠性,推动计算机技术的不断发展。

3.如何降低功耗

处理器如何实现低功耗?关于这个问题,先不作答,先举一个生活中的例子来从侧面说明问题

假设一个人住在房子里面(这个房子有1个主卧,3个次卧,1个客厅,1个厨房),假设房子里面的每个房间的灯都开着,请问如何做可以节省电?

在这里插入图片描述

答案很简单,可以把没人住的3个次卧房间的灯关掉,这样耗电量就降低了。

在这里插入图片描述

如果还希望继续省电,应该怎么做呢?是不是可以客厅和厨房的灯关掉,然后一个人睡到主卧?这样是不是耗电量有减少了?

在这里插入图片描述

如果还希望继续省电,应该怎么做呢?是不是可以把主卧的灯也关掉?这样就不耗电了?

在这里插入图片描述
所以在生活中想要省电,只需要把用不用的或者不重要的用电器关掉即可。

4.处理器低功耗原理

在生活中通过关掉用电器可以实现省电节能的目的,同样的道理处理器也可以通过这种方法实现降低功耗。一个处理器是由许多部件组成,一些组件的电源系统是独立的,可以通过关闭处理器内部的组件的电压,可以实现降低功耗
在这里插入图片描述
我们以STM32F1系列处理器为例,STM32的工作电压(VDD)为2.0~3.6V。通过内置的电压调节器提供所需的1.8V电源,当主电源VDD掉电后,通过VBAT脚为实时时钟(RTC)和备份寄存器提供电源,电源框图如下:
在这里插入图片描述
根据STM32电源框图不难发现,STM32 的电源系统可以分为3个部分:

1、VDDA供电区域。
2、VDD供电区域,该区域包含一个重要的1.8V供电区域。
3、后备供电区域。

在这里插入图片描述

4.1.VDDA供电区域

在这里插入图片描述
STM32处理器的 ADC电路模块配有独立的电源,这个电源就是VDDA电源,这种电路设计方便单独对ADC的电源滤波。VDDA供电区域使用 VDDA引脚输入,使用 VSSA作为独立的地连接,VREF引脚则为 ADC 提供测量使用的参考电压。

4.2.VDD供电区域

在这里插入图片描述
VDD供电域是 STM32处理器的电源系统中最主要的部分,其中调压器供电的电路是VDD供电域的核心。调压器为备份域及待机电路以外的所有数字申路供电,其中包括内核、数字外设(USART、TIMER、GPIO等)、 RAM以及FLASH。在这里插入图片描述
调压器的输出电压约为1.8V,因而使用调压器供电的这些电路区域被称为 1.8V 域。调压器可以运行在运行模式、停止模式以及待机模式

在运行模式下,1.8V 域全功率运行。

在停止模式下 1.8V 域运行在低功状态,1.8V
区域的所有时钟都被关闭,相应的外设都停止了工作,但它会保留内核寄存器以及SRAM的内容。

在待机模式下,整个 1.8V域都断电,该区域的内核寄存器及SRAM内容都会丢失。

4.3.后备供电区域

在这里插入图片描述
后备供电区域包括RTC、RTC BDCR寄存器、LSE振荡器和后备寄存器,后备供电区域由VBAT脚供电,使用电池或其他电源连接到VBAT脚上,当VDD断电时,可以保存备份寄存器的内容和维持RTC的功能。

5.STM32系列处理器的低功耗模式

在复位以后,微控制器处于运行状态。当微控制器不需继续运行时,可以利用多种低功耗模式来节省功耗。STM32F1系列处理器有三种低功耗模式

1、睡眠模式
2、停止模式
3、待机模式

这三种低功耗模式的功能框图如下:
在这里插入图片描述

5.1.睡眠模式

当Cortex-M3遇到WFE(等待中断)或者WFI(等待事件)指令时会停止内核时钟,停止程序执行。尽管Cortex-M3内核停止工作,但是处理器中的其他外设仍在继续工作。直到某个外设产生事件或者中断时,内核将会被唤醒,退出睡眠模式,程序继续运行(程序在进入睡眠时暂停,退出睡眠时继续运行)。在睡眠模式下,所有的I/O引脚都保持它们在运行模式时的状态。
在这里插入图片描述
睡眠模式下核停止工作,其他外设仍在继续工作,具体情况如下:
停止:crotex-m内核。
开启:RAM存储器、FLASH存储器、数字外设(USART、TIMER、GPIO等)、待机电路、电压调节器。
睡眠模式是三种低功耗模式中最高的!睡眠模式的功耗数据如下
在这里插入图片描述
进入睡眠模式

通过执行WFI或WFE指令进入睡眠状态。根据Cortex-M3系统控制寄存器中的SLEEPONEXIT位的值,有两种选项可用于选择睡眠模式进入机制:
SLEEP-NOW:如果SLEEPONEXIT位被清除,当WRI或WFE被执行时,微控制器立即进入睡眠模式。
SLEEP-ON-EXIT:如果SLEEPONEXIT位被置位,系统从最低优先级的中断处理程序中退出时,微控制器就立即进入睡眠模式。

退出睡眠模式

如果执行WFI指令进入睡眠模式,任意一个被嵌套向量中断控制器响应的外设中断都能将系统从睡眠模式唤醒。
如果执行WFE指令进入睡眠模式,则一旦发生唤醒事件时,微处理器都将从睡眠模式退出。 唤醒事件可以通过下述方式产生:
在外设控制寄存器中使能一个中断,而不是在NVIC(嵌套向量中断控制器)中使能,并且在Cortex-M3系统控制寄存器中使能SEVONPEND位。当MCU从WFE中唤醒后,外设的中断挂起位和外设的NVIC中断通道挂起位(在NVIC中断清除挂起寄存器中)必须被清除。
配置一个外部或内部的EXIT线为事件模式。当MCU从WFE中唤醒后,因为与事件线对应的挂起位未被设置,不必清除外设的中断挂起位或外设的NVIC中断通道挂起位。
该模式唤醒所需的时间最短,因为没有时间损失在中断的进入或退出上。

进入睡眠模式的代码如下

void main()
{
Init();
while(1)
{
    if(GPIO\_ReadInputDataBit(GPIOC, GPIO_Pin_1) == 0)
    {
        LED = 0;
        \_\_WFI(); //\*进入睡眠模式 
		LED = 1;
    }
}

当外设产生事件或者中断时,内核将会被唤醒退出睡眠模式

5.2.停止模式

停止模式是在Cortex™-M3的深睡眠模式基础上结合了外设的时钟控制机制,在停止模式下电压调节器可运行在正常或低功耗模式。此时在1.8V供电区域的的所有时钟都被停止,PLL、HSI和HSE RC振荡器的功能被禁止,SRAM和寄存器内容被保留下来。
进入停止模式时,停止内核时钟,停止程序执行。当一个中断或唤醒事件发生时,内核将被唤醒,退出停止模式,程序继续运行
在停止模式下,所有的I/O引脚都保持它们在运行模式时的状态。
在这里插入图片描述
停止模式下核停止工作,外设也停止工作,具体情况如下:
停止:crotex-m内核、数字外设(USART、TIMER、GPIO等)、FLASH存储器
开启:RAM存储器、待机电路、电压调节器。

停止模式是三种低功耗模式中排第二名!停止模式的功耗数据如下在这里插入图片描述
关于如何进入停止模式和如何退出停止模式,详见下表:

最后

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Java工程师,想要提升技能,往往是自己摸索成长,自己不成体系的自学效果低效漫长且无助。

因此收集整理了一份《2024年嵌入式&物联网开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

img

img

img

img

img

img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上嵌入式&物联网开发知识点,真正体系化!

如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新!!

1715600070192)]

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上嵌入式&物联网开发知识点,真正体系化!

如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新!!

  • 15
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值