STM32
直播中

h1654155275.5697

7年用户 615经验值
私信 关注
[问答]

STM32F10xxx有几种低功耗模式

STM32的工作电压是多少?

STM32F10xxx有几种低功耗模式?分别是哪些?

回帖(1)

姬中岩

2021-9-24 15:12:46
  STM32的工作电压(VDD)为2.0~3.6V。通过内置的电压调节器提供所需的1.8V电源。
  当主电源VDD掉电后,通过VBAT脚为实时时钟(RTC)和备份寄存器提供电源。
  
  独立的A/D转换器供电和参考电压
  为了提高转换的精确度, ADC使用一个独立的电源供电,过滤和屏蔽来自印刷电路板上的毛刺
  干扰。
  ● ADC的电源引脚为VDDA
  ● 独立的电源地VSSA
  如果有VREF-引脚(根据封装而定),它必须连接到VSSA。
  100脚和144脚封装:
  为了确保输入为低压时获得更好精度,用户可以连接一个独立的外部参考电压ADC到VREF+和
  VREF-脚上。在VREF+的电压范围为2.4V~VDDA。
  64脚或更少封装:
  没有VREF+和VREF-引脚,他们在芯片内部与ADC的电源(VDDA)和地(VSSA)相联。
  电池备份区域
  使用电池或其他电源连接到VBAT脚上,当VDD断电时,可以保存备份寄存器的内容和维持RTC的
  功能。
  VBAT脚也为RTC、 LSE振荡器和PC13至PC15供电,这保证当主要电源被切断时RTC能继续工
  作。切换到VBAT供电由复位模块中的掉电复位功能控制。
  如果应用中没有使用外部电池, VBAT必须连接到VDD引脚上。
  低功耗模式
  在系统或电源复位以后,微控制器处于运行状态。当CPU不需继续运行时,可以利用多种低功
  耗模式来节省功耗,例如等待某个外部事件时。用户需要根据最低电源消耗、最快速启动时间
  和可用的唤醒源等条件,选定一个最佳的低功耗模式。
  STM32F10xxx有三种低功耗模式:
  ● 睡眠模式(Cortex™-M3内核停止,所有外设包括Cortex-M3核心的外设,如NVIC、系统时
  钟(SysTick)等仍在运行)
  ● 停止模式(所有的时钟都已停止)
  ● 待机模式(1.8V电源关闭)
  此外,在运行模式下,可以通过以下方式中的一种降低功耗:
  ● 降低系统时钟
  ● 关闭APB和AHB总线上未被使用的外设时钟。
  
  降低系统时钟
  在运行模式下,通过对预分频寄存器进行编程,可以降低任意一个系统时钟(SYSCLK、HCLK、 PCLK1、 PCLK2)的速度。进入睡眠模式前,也可以利用预分频器来降低外设的时钟。
  外部时钟的控制
  在运行模式下,任何时候都可以通过停止为外设和内存提供时钟(HCLK和PCLKx)来减少功耗。为了在睡眠模式下更多地减少功耗,可在执行WFI或WFE指令前关闭所有外设的时钟。通 过 设 置 AHB 外 设 时 钟 使 能 寄 存 器 (RCC_AHBENR) 、 APB2 外 设 时 钟 使 能 寄 存 器(RCC_APB2ENR)和APB1外设时钟使能寄存器(RCC_APB1ENR)来开关各个外设模块的时钟。
  睡眠模式
  通过执行WFI或WFE指令进入睡眠状态。根据Cortex™-M3系统控制寄存器中的SLEEPONEXIT位的值,有两种选项可用于选择睡眠模式进入机制:
  ● SLEEP-NOW:如果SLEEPONEXIT位被清除,当WRI或WFE被执行时,微控制器立即进入睡眠模式。
  ● SLEEP-ON-EXIT:如果SLEEPONEXIT位被置位,系统从最低优先级的中断处理程序中退出时,微控制器就立即进入睡眠模式。在睡眠模式下,所有的I/O引脚都保持它们在运行模式时的状态。
  退出睡眠模式
  如果执行WFI指令进入睡眠模式,任意一个被嵌套向量中断控制器响应的外设中断都能将系统从
  睡眠模式唤醒。如果执行WFE指令进入睡眠模式,则一旦发生唤醒事件时,微处理器都将从睡眠模式退出。唤醒事件可以通过下述方式产生:
  ● 在外设控制寄存器中使能一个中断,而不是在NVIC(嵌套向量中断控制器)中使能,并且在Cortex-M3系统控制寄存器中使能SEVONPEND位。当MCU从WFE中唤醒后,外设的中断挂起位和外设的NVIC中断通道挂起位(在NVIC中断清除挂起寄存器中)必须被清除。
  ● 配置一个外部或内部的EXIT线为事件模式。当MCU从WFE中唤醒后,因为与事件线对应的挂起位未被设置,不必清除外设的中断挂起位或外设的NVIC中断通道挂起位。该模式唤醒所需的时间最短,因为没有时间损失在中断的进入或退出上。
  
  
  停止模式
  停止模式是在Cortex™-M3的深睡眠模式基础上结合了外设的时钟控制机制,在停止模式下电压调节器可运行在正常或低功耗模式。此时在1.8V供电区域的的所有时钟都被停止, PLL、 HSI和HSE RC振荡器的功能被禁止, SRAM和寄存器内容被保留下来。在停止模式下,所有的I/O引脚都保持它们在运行模式时的状态。
  进入停止模式
  在停止模式下,通过设置电源控制寄存器(PWR_CR)的LPDS位使内部调节器进入低功耗模式,能够降低更多的功耗。
  如果正在进行闪存编程,直到对内存访问完成,系统才进入停止模式。如果正在进行对APB的访问,直到对APB访问完成,系统才进入停止模式。可以通过对独立的控制位进行编程,可选择以下功能:
  ● 独立看门狗(IWDG):可通过写入看门狗的键寄存器或硬件选择来启动IWDG。一旦启动了独立看门狗,除了系统复位,它不能再被停止。
  ● 实时时钟(RTC):通过备份域控制寄存器 (RCC_BDCR)的RTCEN位来设置。
  ● 内部RC振荡器(LSI RC):通过控制/状态寄存器 (RCC_CSR)的LSION位来设置。
  ● 外部32.768kHz振荡器(LSE):通过备份域控制寄存器 (RCC_BDCR)的LSEON位设置。在停止模式下,如果在进入该模式前ADC和DAC没有被关闭,那么这些外设仍然消耗电流。通过设置寄存器ADC_CR2的ADON位和寄存器DAC_CR的ENx位为0可关闭这2个外设。
  退出停止模式
  关于如何退出停止模式,详见下表。当一个中断或唤醒事件导致退出停止模式时, HSI RC振荡器被选为系统时钟。
  当电压调节器处于低功耗模式下,当系统从停止模式退出时,将会有一段额外的启动延时。如果在停止模式期间保持内部调节器开启,则退出启动时间会缩短,但相应的功耗会增加。
  
  待机模式
  待机模式可实现系统的最低功耗。该模式是在Cortex-M3深睡眠模式时关闭电压调节器。整个1.8V供电区域被断电。 PLL、 HSI和HSE振荡器也被断电。 SRAM和寄存器内容丢失。只有备份的寄存器和待机电路维持供电。
  进入待机模式
  可以通过设置独立的控制位,选择以下待机模式的功能:
  ● 独立看门狗(IWDG):可通过写入看门狗的键寄存器或硬件选择来启动IWDG。一旦启动了独立看门狗,除了系统复位,它不能再被停止。
  ● 实时时钟(RTC):通过备用区域控制寄存器(RCC_BDCR)的RTCEN位来设置。
  ● 内部RC振荡器(LSI RC):通过控制/状态寄存器(RCC_CSR)的LSION位来设置。
  ● 外部32.768kHz振荡器(LSE):通过备用区域控制寄存器(RCC_BDCR)的LSEON位设置。
  退出待机模式
  当一个外部复位(NRST引脚)、 IWDG复位、 WKUP引脚上的上升沿或RTC闹钟事件的上升沿发生时(见图154: 简化的RTC框图),微控制器从待机模式退出。从待机唤醒后,除了电源控制/状态寄存器(PWR_CSR)(见第4.4.2节),所有寄存器被复位。
  从待机模式唤醒后的代码执行等同于复位后的执行(采样启动模式引脚、读取复位向量等)。 电源控制/状态寄存器(PWR_CSR)将会指示内核由待机状态退出。
  
  低功耗模式下的自动唤醒(AWU)
  RTC可以在不需要依赖外部中断的情况下唤醒低功耗模式下的微控制器(自动唤醒模式)。 RTC提供一个可编程的时间基数,用于周期性从停止或待机模式下唤醒。通过对备份区域控制寄存器(RCC_BDCR)的RTCSEL[1:0]位的编程,三个RTC时钟源中的二个时钟源可以选作实现此功能。
  低功耗32.768kHz外部晶振(LSE)该时钟源提供了一个低功耗且精确的时间基准。 (在典型情形下消耗小于1µA)
  低功耗内部RC振荡器(LSI RC)使用该时钟源,节省了一个32.768kHz晶振的成本。但是RC振荡器将少许增加电源消耗。为了用RTC闹钟事件将系统从停止模式下唤醒,必须进行如下操作:
  ● 配置外部中断线17为上升沿触发。
  ● 配置RTC使其可产生RTC闹钟事件。
  如果要从待机模式中唤醒,不必配置外部中断线17
  供电方案
  
举报

更多回帖

发帖
×
20
完善资料,
赚取积分