这篇文章来简单介绍一下STM32G0的POWER部分。
说到POWER,首先会想到跟低功耗相关的一些内容,所以可以把GO和L4系列做一个对比。
L系列也就是LOW POWER系列,它的低功耗模式是非常多的,一个好的低功耗产品有别于普通的MCU产品,一定是说它有不同的低功耗模式可供选配。
L4有一个stop 2模式,在所有STM32的产品中stop模式基本上基本上都是功耗最低的,执行到stop唤醒之后程序还可以进行下去,其他比stop模式功耗更低的模式,在程序唤醒之后就是reset,不可以再继续往下走。
Stop里面也根据有哪些外设是可以使用的、哪些外设不可以使用分为stop 0、stop 1、stop 2,在L4里有stop 2模式,在STM32里stop 2的功耗 PVD和BOR是做电压的检测,BOR是欠压检测,欠压检测就是如果没达到阈值电压的时候,是不能上电的,不能reset;掉电的时候也是这样,掉到阈值电压以下就reset,这是让整个系统更加稳定的功能。PVD就是可编程电压的检测器,可编程的电压不会产生reset,它是产生一个中断,另外可编程就意味着阈值电压是可以遍进去的,所以这是一个比较方便的外设。在L4中,下降和上升阈值必须一起配置,而在G0中,下降和上升阈值可以各自配置。 BOR和PDR周期采样是在G0中才存在的功能。 电源设计 从电源设计的角度,我们看任何一个MCU,都要看它的电源是怎么设计的,尤其是低功耗的时候电源也很重要。 对于这个电源来说,进来的电是VDD,VDD进来之后一部分给数字供电,一部分给模拟供电 ,数字部分给数字外设供电,外设供电之后数字有一部分通过电压调节器分出来内核的电压,内核的电压是可以去调节的,其实电压调节器也分好几种——主电压调节器、低功耗电压调节器,不同的电压调节器本质上是说输出给内核的电压是不同的,有可能全输的时候是1.2V的,有可能半输的时候是1.0V的,也有可能低功耗的时候比1.0V还低,电压和整个MCU跑的频率是成正比的,电压越大,MCU整个主频跑的越快;电压越低,主频越小。数字部分还有standby电路的电压,有一个备份域,我们可以看到VBAT,这个的意思就是说可以接电池去给它供电,如果整个系统VDD是有电的话,那就自动通过VDD来供电,当系统的VDD没有电了,这时候有电池,VBAT这个引脚接了电池,就转为电池供电。 G0的模拟比较好的是它有一个VREF buffer,这个buffer的意思是它提供两个内部的参考电压源,这两个参考电压源很精准,一个是2.5V,一个2.48V,可以用做内部模拟器件的参考电压,而且还可以输出用做外部的参考电压。 VDD供电范围是1.7V~3.6V(最低可1.6V,低于该值则会产生Power-down),在存在其他独立电源供电时,VDD必须提供。 VDD供电范围是1.62~3.6V,当使用ADC或COMP时,VDDA的最小供电电压为1.62V;当使用DAC时,VDDA的最小供电电压为1.8V;当时用VREFBUF时,VDDA的最小供电电压为2.4V。 当VDDA<2V时,VREF+=VDDA;当VDDA>2V时,2V VREF+:ADC和DAC的参考电压,该电压可以由外部参考电压或者内部的电压参考buffer提供,在低引脚数量的封装上不提供VREF+引脚和内部参考电压,此时VREF+与VDDA内部连接到VDD,内部电压参考buffer保持禁用状态。 电源稳压器 对于GO来说,稳压器是由两个部分组成的,一个是主稳压器,另一个是低功耗稳压器。 主稳压器有2个电压范围(Range 1:1.2V,Range 2:1.0V),用于状态电压调整,用在RUN、Sleep和stop 0模式下。 低功耗稳压器用在LP Run、LP Sleep和带SRAM内容保留的stop 1模式。 G0的不同功耗模式 低功耗模式状态机 主要特性 7种低功耗模式带快速唤醒,低至33nA(Shutdown)仍可用I/O唤醒,低至870nA(standby)仍可有36KB RAM保留能力,很多种外设可以从低功耗模式下唤醒MCU。 在运行模式下低至98.3µA/MHz。 VBAT模式依旧可以保持RTC和备份寄存器的内容。 运用优势 高度灵活度使用户可以选择多个低功耗模式,这取决于需要激活哪些外设,性能要求以唤醒源。 增加了电池使用寿命。 由于只有一对VDD/VSS电源对,从而降低了BOM成本。 RUN和LP RUN模式 每一个外设的时钟可以配置为开启ON或关闭OFF,复位后,除了FLASH所有的外设时钟都是关闭的;在RUN模式下,SRAM时钟总是ON开启的。 当从SRAM启动(在RUN或LP RUN 模式下),FLASH闪存可以处于Power-down模式(仅限Low-Power run);FLASH闪存时钟可以关闭;中断向量必须被重映射到SRAM。 Sleep和LP Sleep模式 内核停止,每个外设的时钟可以被打开或关闭。 通过执行WFI(等待中断)或WFE(等待事件)进入该模式。 2种机制进入该模式:Sleep Now:一旦执行了WFI/WFE事件后,MCU就立刻进入Sleep模式; Sleep on Exit:一旦退出了最低优先级ISR,MCU就立刻进入Sleep模式,在进入Sleep模式前,栈没有被弹出,在下个中断产生时也不会被压栈,节省运行时间。 由内核Cortex-M0+系统控制寄存器[SLEEPONEXIT]。 Sleep模式:Range 1 LP Sleep Stop模式 SRAM和所有的外设寄存器保留。 所有的高速时钟停止。 LSE(32.768KHz外部时钟)和LSI(32KHz内部时钟)可以使能。 一些外设能够被激活并且用于从stop模式唤醒。 系统时钟唤醒后是HSI16(2µs唤醒时钟从SRAM启动,5.6µs从FLASH启动)。 Stop 1和stop 2在主稳压器关闭的情况下是等同的,会有一个更小的功耗但是更长的唤醒时间。 Stop 0模式 Stop 1模式 Stop模式对比 Stop 0和stop 1模式最明显的区别就是稳压器不同,也就导致两种模式的功耗有很大区别。 Standby模式 SRAM和寄存器内容默认不会保存(电源稳压器为关闭),但20字节备份寄存器总是保存的。 可以设置为保存36K字节SRAM的内容(默认不保留SRAM的内容,但可配置)。 超低功耗BOR/PDR配置:忽略下降VDD斜率,采用ULP模式周期性监控VDD电压从而降低功耗。 每个I/O口可配置为上拉/下拉,利用PWR_PUCRx/PWR_PDCRx寄存器(x=A,B,……H),当PWR_CR3寄存器中的APC=1时,允许去控制外部器件的输入状态。 唤醒引脚:每个唤醒引脚的极性可配置。 唤醒时钟是HSI16为16MHz。 Standby模式下带SRAM Standby模式不带SRAM Shutdown模式 Shutdown模式和standby模式类似,但是没有电源监控,即没有BOR和PDR,供电不能切换到VBAT,如果电压的供电低于1.6V产品的状态不能得到保证,并不能自动切换到VBAT; 没有LSI,没有IWDG。 当从shutdown模式跳出来将产生BOR复位,除了那些在备份域之外的所有的寄存器被复位,产生复位信号。 20字节的备份寄存器。 唤醒源:5个唤醒引脚,RTC。 唤醒时钟为16MHz的HSI。 Shutdown模式 低功耗模式总结 VBAT备份域 备份域包含:RTC由32.768KHz LSE提供,包含2个入侵引脚(tamper pins); 20字节备份寄存器; RCC_BDCR寄存器。 当VDD电源关闭和开启时,内部会在VBAT和VDD之间自动切换。 内部连接到ADC通道用于检测电压(VBAT/3)。 VBAT充电:当VDD存在时,允许通过内部电阻对VBAT上的超级电容充电。 VBAT模式 电源监控 除了shutdown模式,在所有的模式下POR和PDR总是使能的,在stop 0/1和standby模式下,它只能在ULPEN比特位设置后周期性的工作。 当BOR_EN选项位使能后,除了shutdown模式,在所有的模式下BOR总是使能的,无论VDD斜率如何,只要MCU供电电压降到所选的阈值以下就能复位,可以通过选项字节BORR_LEV[1:0]和BORF_LEV[1:0]分别对上升沿和下降沿选择4种阈值。 除了standby和shutdown模式,在所有的模式下PVD总是使能的,7个阈值+PVD_IN(Vrefint),对于上升沿或下降沿可独立配置。 PVD的上升阈值PVDRT可以选择使用内部连接的Vrefint,此时PVDFT无效。 欠压BOR复位 与STM32F0相比,G0的POR/PDR之外还存在着一个BOR。 BOR将器件保持在复位状态,直到达到所需的电源电压。 4个BOR阈值,可以独立的配置上升沿和下降沿,为用户提供滞后的灵活性。 电源电压检测 与STM32F0相比,G0的PVD允许用户分别设置上升沿和下降沿的电压阈值,PVD仍然连接到极性可配的EXTI Line,以便执行安全关闭任务(如刹车输入)。
相关文章