在谈到低功耗处理器时,我们第一个想到的总是MSP430,但其实STM32也能拥有不错的低功耗特性。通过合理的进行软件设置,STM32在工作时的功耗可以降至数十mA,而待机功耗可以降到数uA。总的来说,降低STM32功耗的方法主要有以下三种:
1. 关闭不需要的外设时钟
STM32的所有外设都可以独立开启和关断,通过将不需要的AHB/APB的时钟关闭,可以起到降低总待机功耗的作用。各个模块的典型功耗如下所示:
Figure 1. APB1外设的典型功耗
Figure 2. APB2外设的典型功耗
2. 降低主时钟的工作频率
对数字电路而言,功耗是与主频呈正比的。在进行一般任务时主动降低功耗,在需要高性能运算时再恢复到一般频率,通过这种方法可以显著降低设备运行期间的平均功耗,这也是目前很多电脑和手机的功耗优化方案之一。
Figure 3. CPU主频-功耗-温度的关系
3. 进入休眠模式
当设备不需要运行时,可将CPU切换至休眠状态。STM32共有三种休眠状态,如下:
Figure 4. STM32的休眠模式[page]
这三种模式下的典型功耗如下:
Figure 5. Sleep模式下的典型功耗
Figure 6. Stop和Standby模式下的典型功耗
可见Standby模式功耗最低,在数个uA;其次是Stop模式,为数十uA;而Sleep模式的功耗最大,是其余两种模式的100倍。那么既然Standby功耗最低,那么另外两种模式的意义又是什么呢?首先,这三种模式下的唤醒时间各不相同:
Figure 7. 不同休眠模式下的启动时间
其次,这三种模式的特性也不相同:
·Sleep mode
唤醒后程序继续运行
CPU停止运行,但外设继续运行,IO状态保持不变
唤醒时间最短,但功耗较大。
·Stop mode
所有时钟停止运行
IO状态不变
唤醒后程序从休眠处继续运行
1.8 V domain are stopped, the PLL, the HSI and the HSE RC oscillators are disabled. 所以RCC和备份区在启动后需要重新配置。
·Standby mode
功耗最低
每次唤醒后和System Reset/POR一样,程序会重新运行。
IO呈高阻态
RAM与寄存器数据全部丢失,除备份寄存器外。
1.8 V domain are stopped, the PLL, the HSI and the HSE RC oscillators are disabled. 所以RCC和备份区在启动后需要重新配置。
可见Standby有三个缺点:
1) 唤醒时间长
2) 唤醒源单一,只有RTC、WAKEUP、WATCHDOG和RESET
3) 每次唤醒等同与重启,会丢失RAM中的数据
所以究竟使用什么样的休眠程序,还是需要看具体项目的具体特性的,在功耗-唤醒时间-唤醒源-休眠特性上做出一个折中。
参考资料:
·STM32F103xC_D_E Datasheet Rev 7, Sep 2009, ST Microcontroller
·STM32 Technique Reference Manual Rev 14, ST Microcontroller
关键字:STM32 低功耗设计
引用地址:
STM32的低功耗设计
推荐阅读最新更新时间:2024-03-16 14:38
STM32进阶-红外遥控器的应用详细步骤
红外遥控器概述 红外遥控是一种无线、非接触控制技术,具有抗干扰能力强,信息传输可靠,功耗低,成本低,易实现等显著优点,被诸多电子设备特别是家用电器广泛采用,并越来越多的应用到计算机系统中。 同类产品的红外线遥控器,可以有相同的遥控频率或编码,而不会出现遥控信号“串门”的情况。 红外遥控的编码目前广泛使用的是:NEC Protocol 的PWM(脉冲宽度调制)和Philips RC-5 Protocol 的PPM(脉冲位置调制)。 NEC协议的特征: 1、8位地址和8位指令长度; 2、地址和命令两次传输;(确保可靠性) 3、PWM脉冲宽度调制,以发射红外载波的占空比代表“0”和“1”; 4、载波频率为38KHz 5、位时
[单片机]
STM32步进伺服电机梯形加速源程序 单轴简易运动控制器
步进电机梯形加速程序 单片机源程序如下: /*基于STM32的单轴简易运动控制器/脉冲发生器*/ /*脉冲+方向控制步进伺服电机*/ /* 优化记录: 增加急停GPIOC.0、正向极限GPIOC.1、负向极限GPIOC.2等输入IO接点 中断修改TIMx_PSC一个寄存器的值,而不是修改TIMx_ARR预加载寄存器+TIMx_CCRx比较值寄存器两个值,缩短中断处理时间 定位指令DRVI/DRVA中,目标频率设定过高、而实际输出脉冲数过少时,则不必加速到目标频率即进入减速区 */ /* DRVI(A);相对定位,输出A(A取绝对值)个脉冲 A不能为0 若A为正数,则方向为正、GPIOB.0为高电平 若A为负数,则
[单片机]
STM32之触摸屏
一、触摸屏控制器简介 1、TSC2046概貌 2、TSC2046引脚描述 3、TSC2046应用电路 4、常见接线方法 YU=Y- YD=Y+ XL=X- XR=X+ 二、TSC2046编程注意事项 TSC2046的PENIRQ脚在触摸屏被按下的时候输出低电平,没有按下的时候输出高电平。需要格外注意的是在MCU给TSC2046发送命令的时候,次引脚也会产生错误的低电压脉冲,0 us t 100 us。 It is recommended that the processor mask the interruptPENIRQ is associated with whenever the proce
[单片机]
stm32的软件架构问题
1、 架构组成:程序代码分为四种结构 a) 顺序执行代码 定义:按照顺序逐行执行的代码 优点:是思路简单,代码可靠不易被干扰。 缺点:占用资源 用途:只用来各种变量、函数的定义,硬件的初始化程序 位置:main.c的开始一直到main函数的while函数之前 b) 空闲执行代码 定义:在CPU空闲的时候才执行的代码 优点:不占用资源 缺点:执行的实时性不能保证 用途:非实时任务,调试信息输出,不重要的状态指示 位置:main.c的main函数的while函数内部 c) 中断执行代码 定义:由软硬件事件打断整个程序而执行的代码 优点:可以保证实时性,各种中断可以安排优先顺序 缺点:关系相对复杂,互相之
[单片机]
基于STM32电源模块开发
1. 需求分析 使用220-9V的电源适配器进行供电 输出2-5V可调,并且可以监控输出电流 带oled屏幕显示电压电流等信息 带MCU主控可做通信或测试功能使用 2. 硬件设计 2.1 硬件选型及原理图设计 MCU部分原理图设计如下,主要参考的是我之前买的一个STM32F103的一个核心板提供的原理图,主要部分有USB接口、9.6英寸OLED屏幕接口(SPI通信)、SWD及UART接口、按键及指示灯、多余的引脚尽量通过排针引出。 电源部分原理图如下,芯片选型主要使用的是TI的WEBENCH设计工具设计后提供的参考芯片,数字电阻和电流监控的跨阻放大器也都是在TI官网搜的。这里为什么我都用TI的芯片,主要是因为TI
[单片机]
关于STM32开发工具之STM Studio调试和诊断工具讲解
STM Studio这个工具出来很久了,可能很多人都没听说过。之前没写过,今天就写点关于STM Studio的内容。 1写在前面 针对 STM32 软件的开发工具有很多,从开篇图片也能看到,不知大家用过其中哪些工具? STM32软件开发工具地址: https://www.st.com/en/development-tools/stm32-software-development-tools.html 本文就重点讲述其中的一个工具:STM Studio. 2关于STM Studio STM Studio是通过实时读取和显示变量来帮助调试和诊断STM32应用程序。 STM Studio在PC上运行,通过标准的ST-LINK开发
[单片机]
关于stm32的USB学习笔记之usbcore.c
#include stm32f10x_lib.h #include usbreg.h #include usbcore.h #include usbuser.h #include usbcfg.h #include usb.h #include usb_hw.h #include usbdesc.h #include hid.h #include hiduser.h #define _DEBUG_ #include debug.h #pragma diag_suppress 111,1441 //用来指示USB设备的状态 WORD USB_DeviceStatus
[单片机]
stm32编译出问题解决
.FWlibincstm32f10x_conf.h(33): warning: #14-D: extra text after expected end of preprocessing directive 额外的文本在在预处理命令后面出现 #include stm32f10x_dma.h */ 出问题的地方就是这个 */ 仿照原子自己建立工程的时候出现的问题修改: 问题及修改: 1)..SYSTEMdelaydelay.c(27): error: #20: identifier SysTick_CLKSource_HCLK_Div8 is undefined 解决方法:在delay.c中添加
[单片机]