前言
意法半导体基于 ARM® Cortex™-M3 的 STM32 L1 系列采用意法半导体专有的超低泄漏处理技术,具有创新型自主动态电压调节功能和 5 种低功耗模式,为各种应用提供了无与伦比的平台灵活性。 STM32L1 系列产品在不影响性能的情况下扩展了超低功耗概念。
这种复杂的架构意味着配置设置和操作模式具有更多选择。本应用笔记描述了如何配置您的STM32L1 器件来实现低功耗功能的目标,以及如何配置该系列产品的运行模式。它提供了经过验证的、现成可用的代码示例,能够快速评估您的探索板或其他平台上的电流消耗。
本文档不提供针对器件特性的任何配置设置。所附 STSW-STM32146 固件仅作指导。 请参考相关的数据手册来获取有效的最新特性数据。
表 1. 可用产品、工具和固件
1 固件架构
本应用笔记和相关固件定义了器件的基本配置,该配置对于实现最优化电流消耗的目标是必要的。它提供了一种清晰且有启发意义的方法,使您能够利用多种最优化低功耗模式的优势。固件的架构如图 1:固件架构中所述。
图 1. 固件架构
该固件选用基于多项目工作空间的方式。每个项目指向激活的或器件可用的某一种低功耗模式。它们被配置为最简单的用例。 main.h 文件包含了一系列 “#define”,使您可以对更多定制化的测试进行微调 (您可从表 2:编译选项或代码本身的注释中获取更多详细信息)。每个项目的目标设置允许使用不同的时钟配置,这使得在评估阶段中重现精确的应用实例成为可能。
在 IDE 工具的配置向导中,时钟频率或振荡器范围须根据您的需要来定义。
1.1 运行模式
器件的运行功耗通过在器件中运行不同类型的代码来进行评估。请参考表 2 来获取更多关于编译选项的详细信息。
表 2. 编译选项
1.1.1 仿真整数运算循环
器件的运行功耗通过在闪存中运行一个指令循环来进行评估。该代码设计成可得到近似等于Dhrystone 基准的电流消耗,但是用汇编语言编写。这种方法的优点是能够使代码不依赖于编译器设置。
RAM 执行和 DMIPS/mA
为检测应用代码从内部 Flash 或内部 RAM 中执行时电流消耗中的不同,您必须在编译器、IDE 的选项中指定文件 dhrystone_like.c 映射到何处。由于可关闭 Flash,因此从 RAM 执行的电流消耗更低,这使得 DMIPS/mA 速率明显增高。
1.1.2 CoreMark 代码
可评估实际 CoreMark® 代码的消耗。电流消耗可能依赖于编译器和优化设置。进行CoreMark 评分 (Timer, USART……)测量的必要配置都被禁用,以便仅测量 CPU 消耗。
1.1.3 Dhrystone 代码
运行该测试时,请注意禁用编译器内联选项来使其符合整数运算的要求。关于如何实现,更多信息请参考 C 编译器文档。
1.1.4 Fibonacci 代码
此代码执行对 Fibonacci 数列前 46 个数项的计算。 46 次迭代后,32 位结果溢出。也可以从内部 RAM 存储器中执行该代码,且 Flash 置于掉电模式以实现更低的电流消耗和更高的性能。
1.1.5 c 语言中的无限循环:while (1)
为了比较执行复杂计算和基本循环时的内核功耗,向用户提供了此选项。也可以在 RAM 存储器中执行它 (Flash 关断)。
注意: 请注意,仅从闪存执行且预取和 64 位访问使能时,“c while(1); routine” 可能在器件上产生不同的电流消耗。如果在无限分支之前的指令是一个 32 位指令,则分支指令从 Flash 访问。另一方面,如果分支指令在一个 16 位指令之后,则它可以完全从预读取结果访问,会产生更小的电流消耗。
该特点重点说明了内存加速随内存中代码不同队列的运行。
|