本文首要解读STM32低功耗形式的机制,并不偏重STM32低功耗的程序完结,并且凭借STM32固件库完结STM32低功耗会变的十分简略。
一、STM32芯片功用
运用芯片型号:stm32f030f4,CORTEX-M0.封装TSSOP20.
运转形式:内部时钟(HSI),体系时钟频率选用48MHZ。
作业电压:3.3V
芯片具体参数如下:
二、芯片功耗
功耗:
芯片作业形式:
作业形式:外设正常运转,内核CPU及SRAM供电,未运用外设的时钟默许封闭。
睡觉形式:只要CPU中止作业,各个外设正常作业,依托任何中止/事情唤醒。
停机形式:1.8V供电区域时钟被中止,内部HSI,PLL,外部时钟HSE均封闭,一起电压检测器也可进入低功耗形式,但SRAM和寄存器不断电,此刻只能依托外部中止(EXTI)和RTC时钟才干唤醒。
待机形式:1.8V供电区域被时钟中止,内部HSI,PLL,外部时钟HSE均封闭,一起电压检测器也可进入低功耗形式,SRAM和不属于待机电路的寄存器也被断电封闭,此刻即便是外部中止(EXTI)也不能将其唤醒,只能经过复位(外部复位,看门狗复位)、唤醒引脚、RTC时钟来唤醒。
留意:无论是在中止形式仍是待机形式下,RTC和IWDG及其时钟源不会被封闭。
各个形式功耗:
功耗核算方法:功耗=作业电压*作业电流。
静态损耗:
内部上下拉电阻损耗:这部分损耗首要取决于内部电阻的巨细,一般为了下降内部电阻损耗常常需求下降电阻两头电压,若引脚为低电压则选用下拉电阻,若引脚为高电压则选用上拉电阻。
I/O额定损耗:当引脚设为输入I/O时,用来区别电压凹凸的斯密特触发器电路会发生一部分耗费,为此可将引脚设为模仿输入形式。
动态损耗:关于悬浮的引脚,因为其电压不稳定会发生外部电磁搅扰和损耗,因而有必要把悬浮引脚设为模仿形式或输出形式,引脚电压的切换会对外部和内部电容负载发生动态损耗,其损耗与电压切换频率和负载电容有关。具体损耗值如下:
三、CORTEX-M0低功耗功用、指令、相关寄存器
CORREX内核支撑低功耗形式有2种:
睡觉形式:CPU时钟中止,对应STM32睡觉形式
深度睡觉形式:体系时钟中止,PLL,FLASH封闭,对应STM32停机形式。
进入睡觉形式:
当CPU处理完中止后软件有必要能使其进入睡觉形式,当CPU履行WFI指令,其将会当即进入睡觉形式,当反常发生或中止被挂起时,其当即被唤醒。
当CPU履行WFE指令时,它首要会查看对应的事情标志位,当事情标志寄存器为0时进入睡觉形式,否则将寄存器事情标志清0并持续履行程序。事情标志可由外部事情标志或SEV指令发生。
回来方法:经过设置内核SCB寄存器的Sleep-on-exit位,能够挑选体系被唤醒履行完中止服务程序后进入主线程形式后是否当即进入睡觉形式。
从睡觉中唤醒:
WFI唤醒或sleep-on-exit:
一般来说,使能的反常能够唤醒内核。关于一些体系,在唤醒后履行中止处理程序前需求先履行从头康复的使命,则首要需求屏蔽一切中止(PRIMASK=1),中止发生后内核被唤醒但不履行中止处理,待履行完康复使命后再将PRIMASK设为0,尔后履行中止处理使命。
WFE唤醒:
使能反常能够唤醒内核。外部事情或SEV指令发送的事情也可唤醒内核。
留意:当SCR的SEVONPEND设置为1时,任何使能/非使能中止或事情都可唤醒内核。
中止唤醒操控器(WIC):
WIC只要在SCR寄存器DEEPSLEEP位设为1时才干使能,WIC不行编程也没有相关的操控寄存器,它仅与硬件信号有关,当进入深睡觉时内核大部分模块被封闭,体系计数器也被封闭,因而当内核被唤醒时需求较多的时刻康复到睡觉前的状况并处理中止。
外部事情输入:可在WFE形式下唤醒内核。
相关指令:
WFE等候事情,若无事情则睡觉,中止、事情唤醒
WFI等候中止,当即进入睡觉,中止唤醒
SEV软件发送一个事情,在核体系中可唤醒另一个内核。
微操控器软件接口规范:
由指令对应的C言语接口:
//core_cmInstr.h
void__WFE(void)//WaitforEvent
void__WFI(void)//WaitforInterrupt
void__SEV(void)//SendEvent
相关寄存器:
SCR寄存器:
SEVONPEND:
0:只要使能的中止或事情才干唤醒内核。
1:任何中止和事情都能够唤醒内核。
SLEEPDEEP:
0:低功耗形式为睡觉形式。
1:进入低功耗时为深度睡觉形式。
SLEEPONEXIT:
0:被唤醒进入线程形式后不再进入睡觉形式。
1:被唤醒后履行完相应的中止处理函数后进入睡觉形式。
四、STM32时钟办理
运转形式下可经过封闭和下降相关外设的时钟频率来削减功耗。
APB外设时钟和DMA时钟可用软件制止。
睡觉形式中止CPU时钟。在CPU睡觉中存储器接口时钟(Flash和RAM接口)可被中止。当连接到APB一切外设的时钟制止后,当进入睡觉期间AHB到APB桥时钟由CPU的硬件封闭。
CPU进入中止形式时中止V18域、PLL、HSI、HSI14和HSE振荡器的时钟。
HDMICEC,USART1和I2C1即便在MCU进入中止形式下仍有才干翻开HIS振荡器(假设HIS被选为这些外设的时钟)。
在LSE振荡器已使能的情况下,HDMICEC和USART1当在体系进入中止形式下也可由LSE振荡器驱动(假设LSE被选为这些外设时钟)。可是这些外设没有翻开LSE振荡器的才干。
CPU进入待机形式时中止V18域、PLL、HSI、HSI14和HSE振荡器的时钟。
当设置DBGMCU_CR寄存器中的DBG_STOP或DBG_STANDBY位,那么CPU在相应的深度睡觉形式下也能够具有调试功用。
当体系由中止(中止形式)或复位(待机形式)唤醒后,HSI振荡器被选为体系时钟(不论进入中止形式或待机形式前选用的是何种时钟)。
假设当时正在进行闪存编程,只要在闪存编程悉数完结之后才会进入深度睡觉形式(深度睡觉拖延)。若当时正在运用APB域,那么只要悉数完结APB域的操作后才进入深度睡觉形式。
五、STM32低功耗设置
STM32作业形式首要有运转、睡觉、中止、待机4种形式。
供电框图
由上图能够看到整个STM32芯片的供电图,模仿电路部分选用VDDA独立供电,各个部分能够独立被关断或敞开。备份电路部分由电池供电,首要有RTC时钟及相关的备份寄存器,VDD掉电后可由电池供电,关于没有VBAT引脚的芯片,其电源直接与VDD相连。中心部分分为1.8V作业域和VDD作业域,1.8V作业域首要有内核、存储、外设部分,VDD供电域首要有I/O、待机电路(唤醒电路,独立看门狗)、电压调节器(VoltageRegulator)。
电压调节器
器材复位后电压调节器总是翻开着的,其依据使用形式有三种不同的作业形式。
运转形式:调节器以全功耗形式为域(内核,内存和数字外设)供给1.8V电源。
中止形式:调节器以低功耗形式为坚持寄存器及SRAM数据部分域供给1.8V的电源。
待机形式:调节器断电,除了待机电路及备份域电路外,寄存器和SRAM的内容悉数丢掉。
相关寄存器介绍:
1,cortex-mo中的SCR寄存器
SEVONPEND:
0:只要使能的中止或事情才干唤醒内核。
1:任何中止和事情都能够唤醒内核。
SLEEPDEEP:
0:低功耗形式为睡觉形式。
1:进入低功耗时为深度睡觉形式。
SLEEPONEXIT:
0:被唤醒进入线程形式后不再进入睡觉形式。
1:被唤醒后履行完相应的中止处理函数后进入睡觉形式。
2,电源操控寄存器PWR_CR
其间与低功耗有关的操控位:
CSBF:铲除待机标志,该位一直读出为0,写1铲除待机标志。
CWUF:铲除唤醒标志,该位一直读出为0。写1铲除唤醒标志。
PDDS:掉电深睡觉
0:当CPU进入深睡觉时进入停机形式,调压器的状况由LPDS位操控。
1:当CPU进入深睡觉时进入待机形式。
LPDS:深睡觉下的低功耗
0:在停机形式下电压调节器敞开
1:在停机形式下电压调节器处于低功耗形式
3,电源操控/状况寄存器(PWR_CSR)
EWUP2/EWUP1:使能WKUP2或EWUP1引脚。
0:WKUP1/2引脚作为通用IO口。WKUP1引脚上的事情不能将CPU从待机形式唤醒。
1:WKUP1/2引脚用于将CPU从待机形式唤醒,WKUP1引脚被强置为输入下拉的装备(WKUP1引脚上的上升沿将体系从待机形式唤醒)。
SBF:待机标志
该位由硬件设置,只能设置电源操控寄存器PWR_CR的CSBF位铲除。
0:体系不在待机形式
1:体系进入待机形式
WUF:唤醒标志
由硬件设置,只能设置电源操控寄存器PWR_CR的CWUF位铲除。
0:没有唤醒事情发生
1:从WKUP或RTC闹钟发生一个唤醒事情
留意:当WKUP引脚已经是高电平时,在(经过设置EWUP位)使能WKUP引脚时,会检测到一个额定唤醒的事情。
低功耗形式的进入与退出问题
1、睡觉形式
进入睡觉形式:
当STM32在运转状况时,履行WFI或WFE指令可进入睡觉形式。
条件:SLEEPDEEP=0,设为睡觉形式。此刻CPU时钟被中止。
若令被唤醒的STM32履行完中止处理使命后进入睡觉形式,则可将SLEEPONEXIT设为1.
退出睡觉形式:
履行WFI指令进入睡觉,可经过使能中止唤醒。履行WFE指令进入睡觉可由事情唤醒,CPU时钟翻开。发生事情的两种方法:
装备一个外部或内部EXTI线做为事情形式。