默认情况下,系统复位后,控制器运行在RUN模式,在RUN模式下,CPU的时钟是由HCLK提供,如果CPU不需要一直保持运行 状态,是可以设置控制器为其他几种低功耗模式,比如,当控制器需要等待一个 外部中断事件时。这取决于用户选择合适的工作模式。

该芯片具有5中低功耗模式:

①  低功耗运行模式:低功耗运行模式:适配器处于低电压模式,时钟频率限制在低频,部分外围的使用也受限。

②  睡眠模式:Cortex-M3内核停止,外围器件保持运行状态,比如RTC一直运行。

③ 低功耗睡眠模式:Cortex-M3内核停止,时钟频率受限(降频),部分外围运行,电源适配器处于低功耗模式,RAM断电,Flash停止。

④  停止模式:所有的时钟停止,电源低功耗运行。

⑤  待机模式:内核断电。

另外:在正常运行模式下,功耗也可以通过下面的方式降低:

  • 降低时钟频率。
  • 外围不使用的时候,APBx和AHBx外围的时钟降低。

其实这个貌似用途反而不大,可以考虑不降频,缩短整个程序运行时间,然后快速进入低功耗模式。

 低功耗模式下的时钟特征

    APB外设和DMA时钟是可以通过软件关闭的。

一、睡眠和低功耗睡眠模式下的时钟表现

睡眠和低功耗睡眠模式下,CPU内核时钟停止。 睡眠模式下,内存接口时钟和其他所有外围的时钟可以通过软件设定停止。低功耗 睡眠模式下,内存接口时钟停止,而且RAM处于掉电模式,AHB-APB总线时钟被 硬件停止(前提是连接的外围器件也停止)

二、停止和待机模式下的时钟特点

系统时钟和所有的告诉时钟停止:

  • PLL停止。
  • HIS时钟源停止。
  • HSE时钟源停止。
  • MSI时钟源也停止。

当stop模式被中断打断跳出时,或者待机模式被reset打断跳出时,MSI时钟会被自动选择作为系统时钟。当设备从stop模式跳出后,之前的MSI配置信息保持,当设备从待机模式跳出时,定时值会被复位为默认的2MHz。

三、外围时钟选通。

在RUN模式下,HCLK和PCLKx对应的独立外围设备和内存设备可以在任何时间设定停止,以便降低 功耗。

在sleep模式下,通过执行WFI或者WFE指令设定外围时钟停止,可以进一步降低功耗。

外围时钟的选通控制是通过AHB时钟使能寄存器(RCC_AHBENR)、APB2时钟使能 寄存器(RCC_APB2ENR)、APB1时钟使能寄存器(RCC_APB1ENR)

睡眠模式下,通过reset寄存器RCC_AHBLPENR和RCC_APBxLPENR的同步位,实现自动关闭外围时钟的功能。

四、睡眠模式

      (1) 如何进入睡眠模式

进入睡眠模式,需要执行WFI(wait for interrupt)或WFE(wait for event)指令。这两种指令都是对SLEEPONEXIT位进行配置实现的。

sleep- now:一旦执行了WFI或WFE,(立刻睡眠)如果SLEEPONEXIT位被清除,MCU进入sleep模式。

sleep-on-exit:如果SLEEPONEXIT位置1,如果退出ISR,MCU进入sleep模式。

在睡眠模式下,所有的I/O口,都保持与RUN模式相同的状态。

(2)如何退出睡眠模式

如果通过WFI指令进入睡眠 模式,任何的外围设备的中断都能实现唤醒设备。

如果通过WFE执行进入睡眠模式,MCU通过“事件”出现唤醒,这个唤醒的时间包括:

① 使能一个外围控制中断,但是不在NVIC中, 使能SEVONPEND位,外围中断挂起位 和 外围NVIC IRQ通道挂起位清除。

② 配置一个外部或者内部的EXTI Line作为事件模式,当CPU从WFE唤醒,不必要清除外围中断位,或者NVIC IRQ通道挂起位。

睡眠模式进入/退出总结:

五、低功耗睡眠模式

    (1)如何进入 低功耗睡眠模式

        进入低功耗睡眠模式,需要配置电压适配器到低功耗模式,同时配合执行WFI或WFE指令。在这种模式下,Flash存储无效,但是RAM存储 有效。

      在这种模式下,系统频率不能超过  f_MSI range1,

     低功耗睡眠模式只有在Vcore是在电压范围2(range2 = 1.5V)才能进入。

     注意:如果APB1时钟频率小于 7倍RTC时钟频率(7*RTCLCK = 7*32.768k = 229376),那么读RTC日历寄存器就需要读2次,如果第2次读取的RTC_TR数值与第一次相同,才能确定读取数据正确, 否则就再读一次。

     有两种方式可以进入低功耗睡眠模式:

① 立刻睡眠:如果SLEEPONEXIT位清0,一旦执行WFI或WFE执行,MCU立刻进入低功耗睡眠模式。

② 通过事件睡眠:如果SLEEPONEXIT位置1,只有事件的优先级最低,MCU才进入低功耗模式。

进入 低功耗睡眠模式下的过程如下:

① 通过FLASH_ACR寄存器的SLEEP_PD位,关闭Flash,这可以降低功耗,不过也会增加唤醒时间。

② IP Clock必须通过RCC_APBxENR和RCC_AHBENR寄存器使能或禁止。

③ 系统时钟频率必须降低。

④ 通过软件(LPSDSR bit位设定)强制电压适配器处于低功耗模式。

⑤ 执行WFI/WFE执行,进入睡眠模式。

退出低功耗睡眠模式:与 睡眠模式类似。

六、停止模式

停止模式是一种深度睡眠模式,配合外围时钟选通。电压适配器可以配置为正常或低功耗模式。

停止模式下,Vcore时钟是停止的,PLL、MSI、HSI、HSE RC是停止的(RTC的时钟没有停止),,内部的SRAM和寄存器目录是保持的。

为了在Stop模式下得到最低的功耗,内部Flash也要进入低功耗模式,当Flash在power down模式,当从stop模式下唤醒后,会有启动延时。

为了实现功耗最小化,进入stop模式前,Vrefint、BOR、PVD、温度传感器可以关闭,这些外围也是可以再打开的,当从stop模式退出后,通过PWR_CR寄存器中ULP bit位。

进入STOP模式:

    

       STOP模式下,下面的外围是可以独立编程的:

IWDG、RTC、LSI RC振荡器、外部32.768k振荡器。

     STOP 模式退出:

     从stop模式下退出可以通过中断或者wakeup事件,退出后,MSI RC振荡器会被选做系统时钟。

超低功耗研发-STM32L151C8T6芯片(二)低功耗模式相关推荐

  1. 超低功耗研发-STM32L151C8T6芯片(三)RTC自动唤醒机制

    超低功耗产品必然涉及到"唤醒"机制,唤醒后执行 正常的功能代码,这个"唤醒"动作有多种,基本上有外部中断.中断事件.RTC自动唤醒等,外部中断多是IO口中断,比 ...

  2. gpio的8种工作模式_【超低功耗系列一】STM32L 低功耗产品和模式

    大家知道意法半导体STM32产品中有四个系列,其中一个很重要的系列是超低功耗系列,今天我们就来聊一下STM32超低功耗系列产品. 意法半导体的超低功耗系列有非常优秀的低功耗表现,在EEMBC(嵌入式微 ...

  3. (二)UPF之电压域、低功耗模式编码(Primary Supply Set、Power State)

    文章目录 一.电压域编码 1.1.PD分类 1.2.PD - Supply Set Bind 1.3.PD - Supply Set Bind - Available Supply Set 1.4.示 ...

  4. stm32低功耗模式下mcu的实际功耗(ST芯片手册)

    STM32F103xC. STM32F103xD和STM32F103xE增强型产品支持三种低功耗模式,可以在要求低 功耗.短启动时间和多种唤醒事件之间达到最佳的平衡. ● 睡眠模式 在睡眠模式,只有C ...

  5. E70系列模块高效型、超低功耗无线cc1310芯片优势典型应用

    E70系列是成都亿佰特电子科技有限公司基于TI公司CC1310射频芯片研发的无线串口模块(UART),可工作在431~446.5MHz频段(默认433MHz).861~876.5MHz频段(默认868 ...

  6. ESPIDF开发ESP32学习笔记【电源管理与低功耗模式】

    电源管理 ESP-IDF中集成的电源管理算法可以根据应用程序组件的需求,调整外围总线 (APB) 频率.CPU 频率,并使芯片进入 Light-sleep 模式,尽可能减少运行应用程序的功耗 应用程序 ...

  7. FreeRTOS 低功耗模式设计 STM32平台

    1. STM32F105RBT6 的三种低功耗模式 1.1 sleep睡眠模式.stop停机模式.standby 待机模式 1.2 STM32中文参考手册有介绍STM32 低功耗模式的介绍 2. Fr ...

  8. STM32低功耗模式解读

    本文主要解读STM32低功耗模式的机制,并不侧重STM32低功耗的程序实现,而且借助STM32固件库实现STM32低功耗会变的非常简单. 一.STM32芯片性能 使用芯片型号:stm32f030f4, ...

  9. STM32低功耗模式下GPIO如何配置最节能?

    目录 1.将未使用的GPIO 配置为模拟输入模式 2.调节GPIO 速度 3.GPIO不使用时禁用寄存器时钟 4.避免悬空未使用的引脚 STM32低功耗模式下GPIO如何配置最节能,这里总结了一下四点 ...

最新文章

  1. Torch not compiled with CUDA enabled
  2. 函数-生成器之斐波拉契数列
  3. mysql开创_MySQL创始人打造MariaDB 全面兼容MySQL 5.1
  4. oracle字符集查看、修改、版本查看
  5. TCP中间件_Delphi_client
  6. mtk一键usb驱动_6寸三防手持终端 Windows系统 安卓系统,高通 MTK 条码扫描 NFC
  7. IBM携手三菱东京日联银行 将区块链用于合同管理
  8. python-PyQuery详解
  9. Win11开机桌面假死怎么办 win11开机桌面假死的解决方法
  10. 如何搭建百度局域网离线地图服务器
  11. 【渝粤教育】国家开放大学2019年春季 24建筑工程管理与实务 参考试题
  12. 直接耦合共射放大电路带载与不带载的电路参数分析
  13. Vue进阶(幺贰叁):v-for 实现一行展示 n 个元素
  14. 【数据库】Mysql索引究竟是什么?
  15. 一文了解 AlphaFold 2 背后的 PDB 蛋白质结构数据集
  16. 怎样用python计算π的值_Python 计算 π 值的简单示例
  17. 首例 3次IPO:前2次申请科创板、创业板均撤回、第3次改为主板、难圆其说变更保代及券商……
  18. java中什么是外层实例,ew MyAsyncTask(); 报错
  19. Keep It Mac版
  20. uboot配置和编译过程详解

热门文章

  1. 事件的节流(throttle)与防抖(debounce)
  2. Arduin-ST7735
  3. python入门--动画,不是动画片!
  4. 很有趣的一个小游戏--打企鹅
  5. 第五章 数 组-1147:最高分数的学生姓名
  6. 对MTK的pdaf对焦方式的分析
  7. js中搜索栏中的搜索图标(以及其他各种图标)怎么写?Fontawesome
  8. python 删除文件前几行和最后一行
  9. Ubuntu 破解密码(ubuntu-20.04-server)
  10. Linux下使用ps命令查看进程状态【ps常用命令】