新闻中心
你的位置:主页 > 新闻中心 >

基于STM32单片机低功耗模式机制详细解析

作者:利来w66 发布时间:2021-01-03 20:14 点击:

  本文主要解读STM32低功耗模式的机制,并不侧重STM32低功耗的程序实现,而且借助STM32固件库实现STM32低功耗会变的非常简单。

  工作模式:外设正常运行,内核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时,用来区分电压高低的斯密特触发器电路会产生一部分消耗,为此可将引脚设为模拟输入模式。

  动态损耗:对于悬浮的引脚,由于其电压不稳定会产生外部电磁干扰和损耗,因此必须把悬浮引脚设为模拟模式或输出模式,引脚电压的切换会对外部和内部电容负载产生动态损耗,其损耗与电压切换频率和负载电容有关。具体损耗值如下:

  深度睡眠模式:系统时钟停止,PLL,FLASH关闭,对应STM32停机模式。

  当CPU处理完中断后软件必须能使其进入睡眠模式,当CPU执行WFI指令,其将会立即进入睡眠模式,当异常产生或中断被挂起时,其立即被唤醒。

  当CPU执行WFE指令时,它首先会检查对应的事件标志位,当事件标志寄存器为0时进入睡眠模式,否则将寄存器事件标志清0并继续执行程序。事件标志可由外部事件标志或SEV指令产生。

  返回方式:通过设置内核SCB寄存器的Sleep-on-exit位,可以选择系统被唤醒执行完中断服务程序后进入主线程模式后是否立即进入睡眠模式。

  一般来说,使能的异常可以唤醒内核。对于一些系统,在唤醒后执行中断处理程序前需要先执行重新恢复的任务,则首先需要屏蔽所有中断(PRIMASK=1),中断发生后内核被唤醒但不执行中断处理,待执行完恢复任务后再将PRIMASK设为0,此后执行中断处理任务。

  注意:当SCR的SEVONPEND设置为1时,任何使能/非使能中断或事件都可唤醒内核。

  WIC只有在SCR寄存器DEEPSLEEP位设为1时才能使能,WIC不可编程也没有相关的控制寄存器,它仅与硬件信号有关,当进入深睡眠时内核大部分模块被关闭,系统计数器也被关闭,因此当内核被唤醒时需要较多的时间恢复到睡眠前的状态并处理中断。

  睡眠模式停止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芯片的供电图,模拟电路部分采用VDDA独立供电,各个部分可以独立被关断或开启。备份电路部分由电池供电,主要有RTC时钟及相关的备份寄存器,VDD掉电后可由电池供电,对于没有VBAT引脚的芯片,其电源直接与VDD相连。核心部分分为1.8V工作域和VDD工作域,1.8V工作域主要有内核、存储、外设部分,VDD供电域主要有I/O、待机电路(唤醒电路,独立看门狗)、电压调节器(VoltageRegulator)。

  运行模式:调节器以全功耗模式为域(内核,内存和数字外设)提供1.8V电源。

  停止模式:调节器以低功耗模式为保持寄存器及SRAM数据部分域提供1.8V的电源。

  待机模式:调节器断电,除了待机电路及备份域电路外,寄存器和SRAM的内容全部丢失。

  0:WKUP1/2引脚作为通用IO口。WKUP1引脚上的事件不能将CPU从待机模式唤醒。

  1:WKUP1/2引脚用于将CPU从待机模式唤醒,WKUP1引脚被强置为输入下拉的配置(WKUP1引脚上的上升沿将系统从待机模式唤醒)。

  注意:当WKUP引脚已经是高电平时,在(通过设置EWUP位)使能WKUP引脚时,会检测到一个额外唤醒的事件。

  若令被唤醒的STM32执行完中断处理任务后进入睡眠模式,则可将SLEEPONEXIT设为1.

  执行WFI指令进入睡眠,可通过使能中断唤醒。执行WFE指令进入睡眠可由事件唤醒,CPU时钟打开。产生事件的两种方式:

  需求:LIN马达控制器:AFS(DHL+AFL)——弯道辅助照明系统DHL:上极限,下极限,零位,马达老化循环;AFL:左极限,右极限,零位,马达老化循环;所有参数可配置:上极限,下极限,零位,左极限,右极限,马达循环上极限,马达循环下极限,马达循环次数,马达循环等待时间;保存至少30款产品的配置,配置界面需要有添加,读取,查找,删除功能。方案:STM32 + LIN + 串口(使用NXP的串口屏,TJA系列的LIN芯片)STM32的LIN接口作为主节点,马达作为从节点。系统设计:RTX多任务设计,串口处理任务,显示屏处理任务,LIN发送任务;(1)、串口处理任务:点击串口屏会获取到点击的坐标值,串口中断接受到数据加入到队列;任务

  需求:(1)、点灯控制器:在线)、PWM控制盒:在线PWM,离线)、电流测试模块:检测车灯电流校准系数;方案:点灯控制器:STM32 + CAN + GPIO节拍:比如亮多长时间,灭多长时间;大节拍中嵌套多个小节拍,每个灯对应相同或者不同的节拍。上位机下发控制指令,表明此时是在线还是离线。(离线跑的节拍是在在线模式下下载的)在线模式:如果是直接输出,按照指定格式下发CAN消息,MCU接受消息并解析,切继电器点灯;如果是存储节拍,MCU内部Flash存储上位机通过CAN下发的点灯节拍。离线模式:从内部Flash中读取节拍,并控制继电器点灯;模式切换按钮:不仅可以通过上位机控制在线/离线模式,还可

  功能:模拟人开车时,ACR和ABL的变化。主控制器:STM32(CAN,串口,网口,输入,输出)上位机:LibViewACR:卷收器(座椅上面的安全带)ABL:电机(座椅右下角接安全带的插孔)PUMA:控制器发送CAN给PUMA,PUMA控制ACR和ABL(DBC文件的解析);ACR通过CAN控制,ABL通过PWM控制电机。STM32硬件接口:按键盒8路输入,网口与工控机软件通信,CAN1直接控制ACR,CAN2给PUMA信号控制ACR,串口与上位机软件通信(控制方向盘震动)。主要有两块功能:静态模式和游戏模式。静态模式:UC-WinRoad没工作时,STM32检测

  , GPIO_InitTypeDef* GPIO_InitStruct){ uint32_t currentmode = 0x00, currentpin = 0x00, pinpos = 0x00, pos = 0x00; uint32_t tmpreg = 0x00, pinmask = 0x00; /* 断言,用于检查输入的参数是否正确 */ assert_param(IS_GPIO_ALL_PERIPH(GPIOx)); assert_param(IS_GPIO_MODE(GPIO_InitStruct-GPIO_Mode)); assert

  专业开发工业设备诊断边缘人工智能(AI)的深度技术软件公司Octonion发布了一个STM32Cube扩展软件包。该软件包是针对来自横跨多重电子应用领域的全球领先的半导体供应商意法半导体(STMicroelectronics,简称ST;纽约证券交易所代码:STM)的工业级STM32L4 +微控制器开发板的优化过的状态监测解决方案。Octonions的新软件包支持意法半导体在快速增长的工业状态监测和预测性维护市场上发起的使用STM32微控制器和微处理器开发人工智能应用的市场活动。Octonion的I-CUBE-OCTMI软件包是一个运行在STM32超低功耗MCU上的自我维护系统,系统

  stm32f10x_conf.h:打开stm32f10x_gpio.h和stm32f10x_rcc.h;stm32f10x_gpio.c 和 stm32f10x_rcc.c加入工程模板中,只说重点。【stm32f10x_rcc.c用于配置系统时钟 和外设时钟,由于每个外设都要配置时钟,所以它是每个外设都需要用到的库文件。】// 新建led.h led.c#ifndef _LED_H_#define _LED_H_#include stm32f10x.h#define ON 0#define OFF 1#define LED1

  nanoPower技术:延长电池寿命,提升传感器性能 2021年1月20日 上午10:00在线研讨会

  最新STM32WB5MMG无线模块,BLE/Zigbee/Thread认证

  STM32H7x3/x5,Cortex®-M7内核,高性能单片机的性价比之王

  PIC单片机AVR单片机ARM单片机嵌入式系统汽车电子消费电子数据处理视频教程电子百科其他技术STM32MSP430单片机资源下载单片机习题与教程词云:

利来w66