在谈到低功耗处理器时,我们第一个想到的总是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的低功耗设计
>> 关于我们: 关于云飞实验室
>> 支持我们: 帮助我们可持续发展


作者

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据