stm32电源控制

看了手册关于电源控制的这一张,我觉得先了解下相关寄存器比较好,而且相关寄存器只有两个,看完就还不容易忘记,如果按照手册上的读,看完前面的,再去看寄存器,前面的已经忘了。看完寄存器,脑子里面还能有点印象,刚好看前面的,就很有节奏感。借此做如下总结:


供电:

           VDD:2.0V--3.6V;

                  内嵌的电压管理器为内部数字区域分配1.8V电压;

                  VBAT:当VDD不供电时,为RTC和Backup供电。通俗就是电池供电。

stm32电源控制_第1张图片

      独立的A/D和D/A供电和参考电压:

                    为了提高转换精度,ADC和DAC需要独立的可以被滤波和从噪声中屏蔽的供电电源:VDDA作为供电输入,VSSA作为孤立的地,VREF-必须和VSSA连接;(这里我有个地方不太懂,前面说VDDA和VSSA必须相应连接VDD和VSS,这里又说需要使用VDDA和VSSA为ADC和DAC独立供电,这里很明显前后矛盾了,我在相关的群里问过,有人回答一般应用里面是直接连起来的。今天本打算去问老师,下课时,被拥挤的人流阻挡。。。如果大家有更好的建议,谢谢留言!)

                   在100-Pin和144-Pin中,VREF+是需要连接参考电压的,范围:2.4V--VDDA;

                  在少于等于64-Pin中,VREF-和VREF+都是不可用的,内部自动连接了ADC的VDDA和VSSA;

     电池备份区域:

                     通过图,很好理解VBAT为那些东西(RTC单元、LSE振荡器、PC13、PC14、PC15)供电,实现从VDD转向VBAT供电,是通过复位模块的掉电复位PDR实现的。

                     在上升时间或者检测到一个PDR时,VBAT和VDD之间的切换还是保持在VBAT;在启动的时候,如果VDD稳定的时间小于上升时间TRSTTEMPO,并且VDD>VBAT+0.6V,一个电流就会从内部的连接VDD和Switch的二极管进去VBAT;如果VBAT不能承受这个电压,可以在VDD和VBAT之间放一个二极管。

                     不使用外部电池的时候,可以直接通过一个陶瓷二极管把VBAT和VDD连接.

                      Backup由VDD供电:

                             PC14和PC15可以被用作GPIO口和LSE;

                             PC13可以用作GPIO、TAMPER、RTC校验时钟、RTC Alarm或者秒输出(register:BKR)

                             PC13 to PC15不能用作电流源,最大输出3mA,最高速度2MHz和最大负载30pF

                      Backup由VBAT供电:

                             PC14和PC15可用作LSE;

                             PC13可用作TAMPER,RTC Alarm或者秒输出(register:BKP_RTCCR);

电压管理器:

              复位后自动使能,三种模式:

                      Run mode:为1.8V区域(core、memories和数字外设)正常供电;

                     Stop mode:为1.8V提供低电源,保存SRAM中的内容;

                     Standby mode:regulator被断电,除了Standby电路和Backup区域,寄存器、SRAM内容丢失;

                        

供电管理器:

    POR和PDR:上升/下降到2V,复位启动;stm32电源控制_第2张图片stm32电源控制_第3张图片


相关寄存器:

                电源控制寄存器(PWR_CR):stm32电源控制_第4张图片                   DBP:消除备份区域的写保护,在复位状态,RTC和Backup寄存器被保护不被寄生的写入,为了对这些寄存器进行写操作,必须对DBP置位;

               PLS[2:0]:PVD的等级选择

                              000--2.2V     001--2.3V       010--2.4V      011--2.5V     ....      111--2.9V 

               PVDE:PVD使能位

               CSBF:清楚待机标志位

               CWUF:清楚唤醒标志位

               PDDS:掉电深入睡眠位,同LPDS一起工作

                          0--当CPU进入深度睡眠,进入Stop模式,regulator状态由LPDS决定

                          1--当CPU进入深度睡眠,进入Standby模式

               LPDS:低电源深度睡眠

                          0--电压管理器正常工作在Stop模式

                          1--电压管理器在Stop模式下出去低电源

                   电源控制/状态寄存器(PWR_CSR):stm32电源控制_第5张图片

               EWUP:使能WKUP引脚,该位需要通过系统复位来复位

                                0--WKUP引脚被用作通用IO口,一个Event不会使CPU从Standby模式恢复;

                                1--WKUP引脚被用来唤醒CPU从Standby模式,并且强迫使输入电平拉低,当检测当上升沿的时候,CPU苏醒;

                  PVDO:PVD的输出,只有当PVDE被置位时,该位才有效.PVD会被Standby模式停止掉,PVD为0,当从Standby模式和                                     Reset启动后

                              0--VDD/VSSA比PLS中选中的电压高;

                              1--VDD/VSSA比PLS中选中的电压低;

                  SBF:Standby标志位(硬件置位,通过POR/PDR或者CSBF--PWR_CR位清0)

                  WUF:Wakeup标志位(硬件置位,通过硬件、系统复位、CWUF--PWR_CR位清0)


  PVD可编程电压检测器:

          PVDE位使能;

          监视VDD和VDDA的供电,通过和PLS[2:0](PWR_CR)中选择的电压比较,PVDO标志位指示状态;

          内部连接EXTI 16,使能EXTI寄存器,可以产生中断。当VDD/VDDA上升超过或者下降低于PVD设定值,就可以通过EXTI16产生中断输出。stm32电源控制_第6张图片

低电源模式:

默认情况下,系统和电源复位,微控制器是在Run模式。

     stm32f10XXX有三种低电源模式:

           Sleep mode:CPU时钟关闭,其它保持;

           Stop mode:所有时钟关闭;

           Standby mode:1.8V区域断电;

      通过降低系统时钟(RCC_CFGR)、APB时钟(RCC_APB1ENR、RCC_APB2ENR)和AHB外设可以降低能耗在Run mode下。

stm32电源控制_第7张图片

解释几个简写:

         WFI:Wait For Interrupt                    WFE:Wait For Event


Sleep mode:

     Sleep-now:SLEEPONEXIT清除,只要WFI和WFE指令执行,MCU就进入Sleep模式;

     Sleep-on-exit:SLEEPONEXIT被置位,只要退出最低权限ISR,MCU就进入Sleep模式;

     在Sleep模式下,所有的I/O口保持相同的状态在Run模式下;

     这种模式的唤醒实践最长,因为浪费在了中断进入和中断离开;

stm32电源控制_第8张图片

Stop mde:

       SRAM和寄存器中的内容被保持;

       所有的I/O口保持在相同状态,在Run mode下;

       内部电源管理器可以被设置为低电源模式(PWR_CR的LPDS位),再降低能耗;

       如果编程或者APB通道正在进行,Stop模式的进入会延迟;

   在此模式下,通过编程可以选择如下功能:

       IWDG:一旦开始,就只能通过复位关闭;

       RTC:RCC_BDCR的RTCE位使能;

       LSI RC:RCC_CSR的LSION位配置;

       LSE OSC:RCC_BDCR的LSEON位配置;

  ADC和DAC在Stop模式下会消耗电能,除非在进入Stop之前关闭。ADON(ADC_CR2)和ENx(DAC_CR)必须为0;

stm32电源控制_第9张图片


Standby mode:

       该模式的能耗最低,基于Cortex-m3的深度睡眠,1.8V区域断电,PLL、HSI、HSE关闭,SRAM和寄存器内容丢失,只有Backup区域的寄存器和Standby电路保持;

 

在此模式下,通过编程可以选择如下功能:

       IWDG:一旦开始,就只能通过复位关闭;

       RTC:RCC_BDCR的RTCE位使能;

       LSI RC:RCC_CSR的LSION位配置;

       LSE OSC:RCC_BDCR的LSEON位配置;

stm32电源控制_第10张图片

I/O状态:

    所有I/O为高阻态,除了:

           Reset 管脚;

           TAMPER引脚(温度传感器或者校验输出)

           WKUP引脚,如果使能;

通过配置DBGMCU_CR寄存器,软件可以调试,即使处于低电源模式;

RTC可以用来唤醒MCU从低电源模式;

你可能感兴趣的:(stm32f1)