在谈到低功耗处理器时,我们第一个想到的总是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的休眠模式
这三种模式下的典型功耗如下:
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
本文由云飞机器人实验室 (www.yfworld.com) 原创,作者戴晓天保留对该文的所有权与变更权。你可以在注明原作者的前提下自由转载,唯一的条件是保留原文的完整性。
>> 本文章版权归作者所有,如需转载请联系作者授权许可。
>> 原文来自: 云飞机器人实验室
>> 原文地址: STM32 | STM32的低功耗设计
>> 关于我们: 关于云飞实验室
>> 支持我们: 帮助我们可持续发展