分享

STM32L系列低功耗

 细寒 2014-04-22

在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口设置成上拉输入,反之就设置成上拉输入。检测到中断后尽快的清除中断。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多