在stop形式下,一切Vcore(稳压器输出电压)域时钟中止,PLL、MSI、HSI、HSE都被中止。RAM和寄存器中的值保存。
在stop形式下,稳压器为 Vcore(稳压器输出电压)域供给低功耗电压,用来坚持寄存器和内部RAM中的数据。
为了最大程度下降功耗,在进入stop形式之前,VREFINT、BOR、PVD、和温度传感器可以被封闭,退出stop形式后,可以用PWR_UltraLowPowerCmd()翻开他们。
PWR_UltraLowPowerCmd(ENABLE);//使能超低功耗形式;
内部参阅电压的功耗也不是微乎其微的,尤其在stop形式和standby形式。为了减小功耗,用这个函数设置PWR_CR的ULP位来封闭内部参阅电压,可是,在这种情况下从stop形式或standby形式退出时,在内部参阅电压发动时刻内(3ms),通过内部参阅电压办理那些功用是不可靠的。为了缩短唤醒时刻,在进入stop形式或许standby形式之前,调用PWR_FastWakeUpCmd()函数(设置PWR_CR的FWU位),CPU就可以从stop形式或许standby形式唤醒而不必等候内部参阅电压的发动。
if ULP=0(参阅电压在低功耗形式下翻开),FWU位被疏忽。
if ULP=1(参阅电压在低功耗形式下封闭),FWU=1:当从低功耗形式退出时,疏忽参阅电压的发动时刻。
if ULP=1(参阅电压在低功耗形式下封闭),FWU=0:CPU只要比及参阅电压准备好才会从低功耗形式退出。
PWR_EnterSTOPMode(PWR_Regulator_LowPower,PWR_STOPEntry_WFI);//进入stop形式;设置PWR_CR寄存器的PDDS和LPSDSR位。PDDS:进入stop形式。
稳压器:
一个嵌入式的、线性的稳压器给除了待机电路外的一切数字电路供电。稳压器的输出电压在1.2~1.8V范围内,软件可配。
稳压器在体系复位后总是被使能。稳压器依据CPU使用形式不同,作业在三种不同的形式:主形式(MR),低功耗形式(LPR),掉电形式。
1、CPU作业在运转形式下时,稳压器作业在主形式并且为Vcore domain供给悉数电量(包含核、寄存器、数字电路)
2、CPU作业再低功耗运转形式,稳压器作业再低功耗形式并且为Vcore domain供给低电量,以保存寄存器和内部RAM中的内容。
3、CPU作业再睡觉形式,稳压器作业在主形式并且为Vcore domain供给悉数电量,以保存寄存器和内部RAM中的内容。
4、CPU作业再stop形式,稳压器作业再低功耗形式并且为Vcore domain供给低电量,以保存寄存器和内部RAM中的内容。
5、CPU作业在Standby形式,稳压器作业在掉电形式,除了standby电路外,寄存器和内部RAM中的内容都将丢掉。
内部参阅电压:
通过内部参阅电压办理的功用有(BOR)欠压复位、可编程电压检测、ADC、LCD、比较器。内部参阅电压总是使能的。
内部参阅电压的功耗是不能被疏忽的,尤其是在stop形式和standby形式。为了削减功耗,可以将PWR_CR寄存器的ULP(Ultra low power)方位位来封闭内部参阅电压,可是在这种情况下,当从stop/standby形式退出时,通过内部参阅电压办理的功用在内部参阅电压发动时(3ms)是不可靠的。为了削减唤醒时刻,CPU可以从stop/standby形式退出时不等候内部参阅电压的发动。在进入stop/standby形式之前,将PWR_CR寄存器的FWU(Fast wakeup)置位可以完成。
不管FWU的值是多少,假设ULP位被置位,在进入stop/standby形式之前使能的以上这些功用,在进入stop/standby形式之后这些功用被制止,并且当内部参阅电压的发动完毕后这些功用再次使能(通过做PVD的测验,如同并没有像手册说的那样再次使能,而是每次唤醒后要从头手动使能PVD)。在PWR_CSR寄存器的VREFINTRDYF 位表明内部参阅电压是否准备好。
从stop形式唤醒后,体系时钟默以为MSI时钟,需求从头配置体系时钟。
任何的EXTI Line(内部的或外部的)中止或事情都能是CPU从stop形式唤醒。
CPU的低功耗特性仅仅做低功耗产品的开发的一部分,外围器材的功耗相同起决定作用。要想到达抱负的功耗,CPU和外围器材有必要可以完美的结合。在低功耗产品研制中,或许是我第一次触摸此类产品的研制,功耗问题花费了我许多的时刻,CPU在没有外部器材的情况下功耗是抱负的,基本上与数据手册描绘的相同,所选的外围器材的功耗也很低,可是CPU与外围器材连起来时功耗就很高。
下面我共享下我在做STM32L151低功耗(stop形式)研制中的一些经历:
1.外部器材能用IO口供电的就尽量用IO口供电,在stop形式下,CPU的IO口的状况是坚持的,这样外围器材的供电开关很简单操控。像外部存储芯片可以用IO口供电。有些外围芯片不适合用IO口供电的,像有些射频芯片,由于这些射频芯片上电发动要恰当长的时刻。
2.最好别用standby形式。尽管standby形式对CPU来说功耗最低,可是standby形式有许多缺陷。在standby形式下CPU处于不受操控的状况,一切的IO口都作业在高阻抗的状况下,只要几个专用的引脚可以将CPU从standby形式唤醒,并且每次唤醒都恰当于体系复位,RAM中的数据悉数丢掉。在有外部器材衔接的情况下,器材引脚或许会吸收许多的电流,反而达不到低功耗的意图。
3.假设CPU外围有器材衔接,且没有用IO供电,必定要将CPU与器材相连的IO口设置成恰当的形式,不然这些引脚或许会吸收很大的电流。ST公司给的例程中主张设置成模仿输入,可是我将CPU与射频芯片nRF24L01相连的IO口设置成模仿输入功耗达不到抱负要求。通过屡次试验,设置成下拉输入功耗到达了抱负要求。或许每种器材的特性不同导致了这样的成果。
4.关于电平的检测。在检测外围器材的某个引脚的中止时,假设该中止是低电平有用,中止前该引脚坚持高电平,这种情况下要把CPU的IO口设置成上拉输入,反之就设置成上拉输入。检测到中止后赶快的铲除中止。