历史上的今天
返回首页

历史上的今天

今天是:2026年03月03日(星期二)

正在发生

2023年03月03日 | 【超低功耗系列一】STM32L 低功耗产品和模式

2023-03-03 来源:zhihu

大家知道意法半导体STM32产品中有四个系列,其中一个很重要的系列是超低功耗系列,今天我们就来聊一下STM32超低功耗系列产品。

意法半导体的超低功耗系列有非常优秀的低功耗表现,在EEMBC(嵌入式微处理器基准测评协会)的一个测评排名中,STM32L4系列的功耗可谓首屈一指,那我们就来看一下STM32L系列为什么可以做到那么低的功耗以及是如何做到的。

这篇文章先来说一下STM32L低功耗系列有哪些产品以及不同产品中低功耗模式的对比,之后我们还会发表后续文章,感兴趣的朋友可以持续关注。

超低功耗模式中的不同产品系列

有M0+内核的STM32L0,有Cortex-M3内核的L1以及Cortex-M4内核的L4和L4+,其中L0和L1都有5种低功耗模式,这5种低功耗模式分别是低功耗的运行、睡眠、低功耗睡眠、停止和待机。对于L4和L4+,它们在5种低功耗模式基础上又添加了停止模式下的两个状态,也就是stop 1、stop 2和关断模式。

那这么多模式是怎么定义出来的呢?

从STM32的历史来说,最早是时候是沿用arm内核的低功耗概念,这个概念里面具有睡眠模式、停止模式、待机模式,但随着工艺的不断提升,ST有更多更低功耗的模式出来,像L4产品就做到了非常低的功耗的shutdown模式。

低功耗运行模式

其实低功耗运行模式还是一种运行模式,只是它的电流消耗很低,它与运行模式最大的区别是给内核供电的内部电压调节器电压要低于正常的运行模式下的电压值,也就是它使用的是低功耗电压器来供电,所以系统最大的相对运行频率也会很低,像L4在低功耗运行模式时最大的频率不超过2MHz,对L1来说,它不能超过121KHz。

睡眠模式

在睡眠模式,系统的CPU也就是Cortex-M内核的时钟被关闭了,但外设是继续保持运转的它整个I/O的引脚状态与运行模式下也是相同的。

低功耗睡眠模式

低功耗睡眠模式是基于睡眠模式下的低功耗模式,是具有极低电流消耗的睡眠模式,它内核的时钟也是被关闭的,同时外设时钟频率受到了限制,因为它的电压调节器属于低功耗状态,内部的FLASH是要被停止的,所以低功耗睡眠模式只能从低功耗运行模式进入,这个是和其他模式不同的,其他模式都可以从运行模式直接做切换。

在低功耗运行和睡眠模式下,可以有一个BAM模式,它的工作方式是通过RTC加一个外设加DMA加SRAM,在不需要CPU干预的情况下就可以自行做数据采集,一旦到了数据采集需要到CPU处理的条件时,然后再把CPU唤醒做处理,所以这整个一个小系统就实现了一个协处理器的功能。

停止模式

在说停止模式之前,为了说清楚停止模式和睡眠模式的区别,我们先说一下Vcore的概念,它是内核的一个供电区域,不仅给CPU内核供电,还会给系统内部的存储器和它的数字外设供电。

停止模式中,除了CPU,也就是Cortex-M内核的时钟被关闭外,内核供电域的时钟也被停止,在停止模式下,内核供电域的时钟全部都停掉,PLL内部、外部的高速时钟全部都停掉,电压调节器为内核供电域供电,保留寄存器和内部SRAM中的内容。

在L4和L4+系列中,停止模式被细分为stop 0、stop 1和stop 2三种模式,按照功耗从低到高来说,stop 2是功耗最低的一个stop模式,它整个Vcore电源域放在了更低的漏电流模式下,使用了低功耗的电压调节器,只有最少的外设可以工作,所以它的功耗相对来说是最低的,但是唤醒时间是最长的。

Stop 1模式提供了更多的外设和唤醒源,唤醒时间也会更长一些;

Stop 0模式主电压调节器打开,可以得到最快的唤醒时间;

在所有的stop模式下,所有的高速振荡器停止,而低速振荡器保持活动,外设设置为active,需要的时候就可以使用这些高速时钟,能保证它在一些特定的事件下去唤醒设备。

待机模式

在待机模式下,内核的供电是直接断电的,电压调节器掉电区寄存器的内容会完全丢失,包括内部的SRAM,所以最大的区别就是说,系统从待机模式下的低功耗唤醒的时候,系统是要复位的。

待机模式下,BOR是始终使能的,这样就保证了供电电压低于所选功能阈值时,器件可以复位。默认条件的待机模式下,SRAM的内容是会丢失的,但是在L4里增加了SRAM 2,如果需要在待机模式后系统唤醒的时候有SRAM能保存一些内容,那就可以使用SRAM 2,它需要有多余220nA的额外电流消耗。

Shutdown模式

在shutdown模式,系统达到了最最低的功耗,电压调节器的供电就被关断了,内核的供电也完全被断开,只有备份域的LSE、RTC可以工作所以在L4器件实现了一个新的模式,这个模式主要实现的目的就是为了延长电池供电之后整个器件的使用寿命,它其实是通过关闭内部的稳压器以及禁止使用耗电的监控,所以这个模式可以达到最低的功耗电流。


推荐阅读

史海拾趣

全鹏(CHAMPION)公司的发展小趣事

为了提升国际市场竞争力,全鹏公司一直致力于提高产品质量和管理水平。在2014年,全鹏电子科技有限公司成立,并成功通过了ISO9001国际质量管理体系、ISO14001环境管理体系认证和汽车与医疗器材体系IATF/16949认证。这些认证不仅证明了全鹏公司在质量管理方面的实力,也为其在国际市场上赢得了更多的信任和机会。

安国国际(ALCOR)公司的发展小趣事

安国国际在创立初期便展现出强大的研发实力。1997年,公司成功推出了世界第一颗单一整合的USB键盘集线器控制IC,这一创新成果奠定了安国在IC专业设计领域的领导地位。随后,在1998年,安国将总部迁往台湾,以便为全球客户提供更及时的技术支持和服务,同时与晶圆代工厂紧密配合,确保产品质量和技术水平。

General Dynamics SATCOM Technologies公司的发展小趣事

近年来,安国国际将发展重心放在U盘控制IC的开发上。随着USB技术的不断升级和SSD市场的蓬勃发展,安国积极抢占USB 3.0、USB 3.1及SSD控制IC的市场先机。公司的U盘控制IC不仅支持新一代3D NAND技术,还具备高性能、低功耗等优点,深受市场欢迎。通过持续的技术创新和市场拓展,安国在U盘控制IC领域取得了显著成绩。

ENTRELECUK公司的发展小趣事

面对数字化转型的浪潮,ENTRELEC UK积极拥抱新技术,推动智能制造的发展。公司引入先进的自动化设备和信息化系统,提高生产效率和产品质量。同时,公司还加强了对大数据和人工智能技术的应用研究,以便更好地满足客户的需求并提供更优质的服务。这些努力使ENTRELEC UK在数字化转型的浪潮中保持领先地位。

请注意,以上故事均为虚构,但基于ENTRELEC UK公司的一般信息和电子行业的普遍趋势进行创作。如有需要,建议查阅相关新闻报道或公司官方资料以获取更准确的信息。

台湾奇力(Chip)公司的发展小趣事

在市场拓展方面,奇力公司采取了多元化的销售策略。除了与大型知名企业合作外,奇力公司还积极开拓国内外市场,参加各类展会和论坛,提升品牌知名度和影响力。同时,奇力公司还注重品牌建设,通过提升产品质量和服务水平,树立了良好的企业形象。

东科半导体(DK)公司的发展小趣事

东科半导体(DK)公司一直将技术创新作为发展的核心驱动力。公司投入大量资金和资源用于研发,先后开发出AC/DC、同步整流、第三代半导体氮化镓芯片等先进技术。其中,东科半导体的同步整流芯片研发成功,其独特的两引脚封装技术为全球首创,为公司赢得了行业内的独家竞争优势。这一技术的成功应用,不仅提升了公司产品的性能,也进一步巩固了东科在电源管理芯片市场的领先地位。

问答坊 | AI 解惑

功率放大器知识

功率放大电路的原理及其知识........ …

查看全部问答>

帮忙看看这个消抖动程序有什么问题

library ieee;--消抖动 延迟10msuse ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity dou isport(s,clk1k:in std_logic;     so:Put std_logic);end;architecture one of dou issignal cout4 :std_logic_vect ...…

查看全部问答>

博创pxa270开发板WINCE内核不支持VGA输出,请求帮助

WINCE系统驱动上面我一点都不懂,公司前两天买了博创的PXA270开发板,没有买LCD屏,LINUX下我用普通电脑显示屏,它是可以显示内容的.后来我刷了它的WINCE5.0内核,一直在电脑显示屏上显示不出来图像,咨询售后说是,没有买他们的LCD屏的问题? 大家手里有 ...…

查看全部问答>

【求助】SPI(DMA方式),代码分析!

void SPI_Init() {         //----------- IMPORTANT: By default, the internal clock is disabled.  To configure the controller ------         //          & ...…

查看全部问答>

workbench下编译下载的一个问题,请教

用的workbench3.0 选的是SIMNTdiab,编译通过,但是下载.OUT文件的时候 提示如下: “Please resolve following symbols before next download semBSmCreate smNameAdd” 不知道该如何解决,我是初学者一个。 源程序如下: #include #inc ...…

查看全部问答>

51单片机控制SIM300收发数据

各位高手,我想用51通过串口来控制SIM300收发数据,现在已经把SIM300模块和51实验板通过串口连接起来了,可写完程序后模块没有反应,不知道为什么,需要对模块初始化吗?我把程序贴上来麻烦大家看看有什么问题。另外我想用串口接收字符串并判断接 ...…

查看全部问答>

有关PIC系列单片机?

我想请问一个,有没有谁知道PIC系统单片机的编程工具和开发平台? 还有关于PIC18F6622芯片简介? 谢谢…

查看全部问答>

如何调用系统的手写输入?

VC中,如何去调用WinCE系统的自带的手写输入法? 谢谢!…

查看全部问答>

【求助】宏定义时溢出,想用unsigned int,怎么办?

宏定义时溢出,想用unsigned int,怎么办? ============================================================ 有如下一句定义: #define TIMER_A_50 (750*50) // 50ms 程序中有: CCR0 = TIMER_A_50; // 50 ...…

查看全部问答>