单片机低功耗模式

发布时间:2024年01月11日

低功耗对单片机具有重要意义和深远的影响,因此人们在单片机上降低功耗的努力也在多方面进行

低功耗对单片机的意义:

  • 只有降低功耗,才有可能既使用轻便电源又保证长期供电,这对便携式设备和掌上智能设备(PDA)中使用的单片机十分必要. 功耗可低到用纽扣电池就可以为其长期供电, 几年才更换一次电池
  • 低功耗可以降低芯片的发热量,电路中元器件的排列才可能更加紧密,从而有利于提高芯片的集成密度,并降低芯片的封装成本
  • 由于低功耗芯片工作时发热量少,进而有利于提高芯片工作的可靠性
  • 单片机芯片的低功耗,有效的促进了单片机系统的整体低功耗化. 设计单片机系统时候,必须把低功耗作为一个目标,采用低功耗电路设计方法,选用低功耗的外拓展部件,如液晶显示器等.

人们做出的降低功耗的努力:

  1. 电路和工艺上
  2. 为单片机配备高速和低速两套时钟,可根据需要选择,以减少不必要的功耗
  3. 今天要详细介绍的,为单片机设置低功耗模式

单片机除了电路上面的低功耗措施外,还在常规的程序运行模式之外,设置了低功耗工作模式.
80C51单片机有两种低功耗模式: 待机模式和掉电模式
STM32F413单片机有四种低功耗模式: 睡眠模式,停止模式,批采集模式和待机模式
而AT32F421 单片机也有三种低功耗模式: 睡眠模式,深度睡眠模式和待机模式

由于是初学,分别对此进行介绍,并尝试分辨出差别

80C51

SMODGF1GF0PDIDL

80C51单片机的工作模式是通过电源控制寄存器PCON进行设置的.其位格式如上所示:
通用标志位GF1和GF0通常用于指示中断发生的时刻,即中断是在待机期间发生的还是在待机之前发生的,以便通过编制为状态检查,使中断服务程序执行后能返回正确的断点.
掉电方式位PD,用来设置单片机的功耗模式,PD=1,单片机进入掉电模式
待机模式位IDL,用来设置单片机的功耗模式,IDL=1,单片机进入待机模式

待机模式(IDLE Mode)

待机模式的主要特点是关闭CPU,办法是阻断向CPU提供时钟信号的通路. CPU因得不到时钟信号而停止工作,同时与CPU相关的PSW,ACC,PC,SP以及寄存器都保持原状态.
待机模式的典型例子是液晶显示器LCD处于静止不变的显示过程,此时因用不着CPU而只需要外围电路接口工作,所以单片机进入待机模式

待机模式下,有两种方式退出待机模式返回常规程序运行模式的方法:

  • 中断方法
    • 为了保证能采用中断方法退出待机模式,振荡器应正常工作,继续向中断逻辑,串行口和定时器/计数器等电路提供时钟信号,以维持其中断功能. 因为响应中断时,电源控制寄存器PCON的IDL位自动被清0,从而使单片机退出待机模式.
    • 可使用外部中断或定时中断,中断响应后执行终端服务程序,但只需在中断服务程序中安排一条RETI指令,就可以使单片机恢复正常工作后返回断点处继续执行程序.
  • 复位方法
    • 加在RST引脚上的的有效复位信号,同样也能将电源控制寄存器PCON的IDL位清0,从而使单片机退出待机模式,进入程序运行模式

掉电模式(Power Down Mode)

在掉电模式下,振荡器停振,单片机停止工作,但内部RAM单元的内容能被保存.
使用查询设备时,当操作了触摸屏上对应用来说无效的输入区域时,就应当让单片机进入掉电状态.

退出掉电状态的唯一方法是硬件复位. 并且复位信号要维持足够长的时间,使振荡器能够启振并且稳定下来.
复位操作将使系统重新初始化,并从头开始执行程序,但内部RAM仍保持掉电前的内容.

这里所说的掉电模式只是人为设计的一种降低功耗的方法,并不是电源真的没有电压了. 此时Vcc仍然存在,正因为此,RAM的内容才能保存下来


AT32F421

睡眠模式(Sleep Mode)

执行 WFI 或 WFE 指令可以进入睡眠状态。根据 Cortex?-M4 系统控制寄存器中的 SLEEPONEXIT 位有
两种进入睡眠模式的机制:

  • SLEEP-NOW 模式
    • 当 SLEEPDEEP=0,SLEEPONEXIT=0 时,执行 WFI 或 WFE 指令,此时可立即进入睡眠模式。
  • SLEEP-ON-EXIT 模式
    • 当 SLEEPDEEP=0,SLEEPONEXIT=1 时,执行 WFI 指令,此时当系统从最低优先级的中断处理程序中退出时,可立即进入睡眠模式。

在睡眠模式下,CPU 时钟关闭,其他时钟均正常工作,电压调节器正常工作,所有的 I/O 管脚都保持它们在运行模式时的状态,调节器 LDO 以正常功耗模式提供 1.2V 电源(CPU 内核、内存和内嵌外设)。

  • 执行WFI指令进入睡眠模式时,只要产生外设中断,都能使系统退出睡眠模式。
  • 执行WFE指令进入睡眠模式时,存在两种方式的唤醒事件,使系统退出睡眠模式:
    • 使能任一外设中断(未在 NVIC 中使能)且使能 SEVONPEND 位可以产生唤醒事件。系统唤醒
      后,需清除外设中断挂起位和 NVIC 通道挂起位。
    • 配置内部 EXINT 线为事件模式来产生唤醒事件。

从执行 WFE 指令进入睡眠模式唤醒所需的时间最短,因为没有时间损失在中断的进入或退出上。

深度睡眠模式(Deepsleep Mode)

通过设置 Cortex?-M4 系统控制寄存器中的 SLEEPDEEP 位,清除电源控制寄存器(PWC_CTRL)中的
LPSEL 位,再执行 WFI 或 WFE 指令即可进入深度睡眠模式。

还可以通过设置电源控制寄存器(PWC_CTRL)中 VRSEL 位选择深度睡眠模式下电压调节器的工作状态。当 VRSEL=0,电压调节器正常工作,当 VRSEL=1,电压调节器处于低功耗模式。
另外,深度睡眠模式下,在设置 VRSEL=1,控制电压调节器处于低功耗模式的基础上,可以通过设置内部电压调节器额外低功耗模式使能位(VREXLPEN),进一步降低深度睡眠模式下整个系统的功耗。

在深度睡眠模式下,所有 1.2V 时钟关闭,HICK 和 HEXT 振荡器都被关闭,电压调节器以正常工作或低功耗工作状态给 1.2V 域供电,所有 I/O 管脚都保持它们在运行模式时的状态,SRAM 和寄存器内容保持。

  1. 执行WFI指令进入深度睡眠模式,任一外部中断线在中断模式下产生的中断,即可使系统退出深度睡眠模式。
  2. 如果执行WFE指令进入深度睡眠模式,任一外部中断线在事件模式下产生的事件,即可使系统退出深度睡眠模式。

系统从深度睡眠模式退出时,HICK RC 振荡器开启并在稳定后被选为系统时钟。当电压调节器处于低功耗模式时,退出深度睡眠模式时,需要额外等待电压调节器稳定,从而会增加一段额外的唤醒时间。

待机模式(Standby Mode)

待机模式可最大限度的降低系统功耗,在该模式下,电压调节器关闭,只有 VDD/VDDA 域维持供电,其他的 1.2V 供电区域,PLL、HICK 和 HEXT 振荡器都被断电。寄存器和 SRAM 中的内容也会丢失。

通过设置 Cortex?-M4 系统控制寄存器中的 SLEEPDEEP 位,设置电源控制寄存器(PWC_CTRL)中LPSEL 位,并清除电源控制及状态寄存器(PWC_CTRLSTS)中的 SWEF 位的情况下,执行 WFI 或WFE 指令即可进入待机模式。

在待机模式下,除了复位管脚、被设置为防侵入或校准输出时的 TAMPER 引脚和被使能的唤醒引脚之外,所有的 I/O 引脚处于高阻态。
当发生 WKUPx 引脚的上升沿、ERTC 闹钟事件的上升沿、ERTC 入侵事件、ERTC 时间戳、NRST 引脚上外部复位、WDT 复位时,微控制器将退出待机模式。

调试配置
默认情况下,在进行调试时,微处理器一旦进入深度睡眠或待机模式,会因为 Cortex?-M4 的内核失去了
时钟而失去调试连接。只需通过设置 DEBUG 控制寄存器(DEBUG_CTRL)中的某些配置位,就可以在
低功耗模式下继续调试软件。


STM32F413

和AT32F421类似,只是多了个BAM模式
立即睡眠和退出时睡眠对应上述的SLEEP NOW和SLEEPONEXIT两种模式
低功耗模式汇总
MCU 通过执行 WFI(等待中断)或 WFE(等待事件)指令进入低功耗模式,也可通过在从
ISR 返回时将带 FPU 的 Cortex?-M4 系统控制寄存器中的 SLEEPONEXIT 位置 1 进入低功
耗模式。
仅当没有中断或事件挂起时,才可通过 WFI 或 WFE 进入低功耗模式。

四种具体模式的进入和退出方式和STM32F1有些许差别,具体可以查看相关的参考手册


了解了低功耗模式之后,我们还可以了解一下低功耗模式的应用

  1. 降低功耗

待机模式和掉电模式主要使位降低功耗而设置的. 以台湾华邦公司的80C51衍生芯片W78LE516为例
对于2.4V供电的12MHz晶振频率下的最大工作电流,程序运行模式下为3mA,待机模式下为1.5mA,而掉电模式下仅为0.02mA. 因此,在单片机工作过程中,只要有可能,就应该使其处于待机或掉电状态下,这是降低功耗的一种有效途径

例如,许多单片机系统的程序运行都是处于键盘扫描和显示的交替循环中,绝大部分机器,时间花费在等待键输入上,真正用于数据处理的有用时间很短. 为此,可以在键等待期间,让单片机处于待机或掉电状态,当有键输入的时候再唤醒机器进入程序运行模式,从而使功耗大幅度降低.

  1. 抗电磁干扰

当单片机的控制对象为开关型大电流电感性负载(继电器,电磁阀和开关等)时候,如果单片机与控制对象的距离较近,则负载开启和关闭时产生的强电磁干扰将影响单片机工作的稳定性. 这时待机模式就是避开干扰的最好办法
在单片机发出负载开关指令后,紧接着一条将PCON.IDL位设置为1的指令,让单片机进入待机状态. 在待机状态下,即使有电磁干扰,也不会对单片机有任何影响. 隔一定时间后,等电磁干扰消失,再结束待机,使单片机返回正常工作.

文章来源:https://blog.csdn.net/shaun2001/article/details/135502412
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。