STMCU小助手
发布时间:2022-7-14 18:00
|
前言" C- g1 D v8 F1 Z STM32F411 产品线属于 STM32 Dynamic Efficiency™ 微控制器的一部分。这些器件是高性能 F4 系列的入门级产品,具有动态功耗和处理性能的最佳平衡,并能够在运行、睡眠和停止模式下实现极低功耗。$ x) l. F, Y. _4 o STM32F411xx 微控制器具有新型的批采集模式 (BAM),为数据批处理进行了功耗优化,将动态效率提升到了一个新的水平。* G- J& p3 A. w0 n 本应用笔记通过一个用例,指导您在 STM32F411xx 微控制器上实现预期的功耗。还提供了关于如何实现 BAM 的示例。 本应用笔记中采用 X-CUBE-BAM 固件包。2 L R2 P: `* a V ) L) P( _ {3 {2 ~ " s8 R6 c0 D# S: A- {- |0 m) w8 V 1应用概述 本章给出了应用笔记用例概览,详细说明了用户如何实现 BAM,并描述了用例工作中涉及的每个低功耗模式。 ! ^3 f& _3 `+ | 1.1 硬件高层描述, [5 D* |) Q3 N5 U' R) c+ @( k 本文档首先说明如何评价不同低功耗模式 (待机、睡眠、停止和低功耗运行)中的功耗,然后重点说明通过使用 BAM 将传感器 (LSM6DS0 MEMS)数据流向 (UP 或 DOWN)传输至主 STM32F411xx 微控制器,来实现明显的功率降低。 传感器发送的数据通过 I2C 接口接收,利用 DMA 传输至 RAM。经过数据处理后, DMA 将数据流向传到 UART。然后通过 USB 虚拟串口显示出来。2 {- }: [0 K& V( @$ ? 图 1 显示了应用的高层框图。
注: X-CUBE-BAM 还包括一个基于 LSM303DLH MEMS 和 32F401DISCOVERY 作为传感器的用例。更多详细信息,请参考固件封装,可在项目 /NUCLEO-F411RE/LSM303DLHC 下获取。 A9 G* R& ^ a 1.2 低功耗模式' ~8 R; ]# S3 o5 J 本章描述了应用中所使用的不同低功耗模式。- {9 q. G8 ^$ a • 低功耗运行模式) |9 _5 V) y0 F' S. r) a9 c) j# g CPU 和一些外设处于运行中。为了进一步降低功耗,不用的 GPIO 被配置为模拟引脚并禁用外设。 ' [; n" _9 C6 n* E; @5 ? • 睡眠模式 这种模式下,仅有 CPU 是停止的,外设保持运行。为了降低功耗,可在进入睡眠模式前关闭闪存。发生中断时,外设能够唤醒 CPU。 5 T, J8 r; {6 N3 @ • 停止模式 CPU 处于深度睡眠模式 (DeepSleep mode)。除了 RTC,所有外设都禁用。通过发出中断来退出停止模式。 • 待机模式4 C K* c! z' p1 X2 B2 h 这种模式下,功率仅用于维持 RTC 寄存器。器件被 WKUP 脚上的上升沿 (产生系统复位)唤醒。 注: 更多关于低功耗模式的详细信息,请参考 STM32F411xx 数据手册。$ O& J- L$ w" f, D+ h' l( Y' a * a8 c* ]2 ?5 R 1.3 批采集模式 (BAM)7 j" C( O. m! I 1.3.1 原理 批采集模式 (BAM)可优化数据批处理的功耗。( g/ ]0 i% K' s- g/ | 它可通过通信外设交换大量数据,同时器件的其它部分 (包括 CPU)可处于省电模式:: Z" ?0 o& v" J2 J1 M • 只使能所需要的 DMA 数据流,并将来自通信接口的数据传输到内部 RAM。 • 从 RAM 执行程序允许关闭闪存和停止 Flash 接口时钟。/ {4 u& p, i; }. @ • MCU 内核处于睡眠模式,等待中断 / 事件将其唤醒。 1.3.2 BAM 用例 图 2 显示了应用笔记用例高层框图的一部分。它描述了 BAM 涉及的不同外设及其功率状态(低功耗或激活的)。! e! _* v7 O) O/ Y5 b7 \ 事实上,数据接收过程中,只有 DMA stream0、 I2C1 和 SRAM 是激活的。 MCU 内核处于睡眠模式且闪存停止,直至完成 DMA 传输。 , N$ ]! z% H8 g* Q. _* M+ ` 7 g3 `5 F3 b8 n8 @) S* G$ P, s
# J( u8 N. A8 I% h. p* E v/ R 1.3.3 如何实现 BAM 当 BAM 使能时,通过设置 PWR_CR 寄存器的 FMSSR 和 FISR 位来关闭闪存。从闪存执行程序时不能设置这些位。这可以通过从RAM执行一个特殊程序来实现(具体描述请参见图 3,图 4 和图 5)。 可采用 3 种方法来实现 BAM。每种方法都取决于用户应用: • 从 RAM 执行中断7 I! Q( {0 h( H4 F9 b • 从闪存执行中断 • 利用事件来唤醒 CPU 2 I" ^% `, k2 [4 a( w. | 从 RAM 执行中断 应用笔记用例中采用此方法 (参见图 3)。中断将器件从睡眠模式中唤醒。因此用户应用必须将所需 ISR 和向量表存储在 RAM 中,以便在中断发生时能够立即从 RAM 中执行。$ z1 }9 A& t2 I4 q& x4 q
- q4 B' e& d$ n: u 从闪存执行中断 S% T+ U8 \. k/ @% \ p, L1 Z" ^ 这种方法里,闪存停止,必须禁用所有中断,直至闪存再次使能 (参见图 4)。6 v, R1 C o! m) |, F 8 R8 J i8 Y2 ?/ l7 B2 ]% ?) ?# z! R % [/ r; i7 F( y
9 a, J/ f$ U9 c; ?$ r" o, L 利用事件唤醒 CPU 此方法利用事件而不是中断将 CPU 从睡眠模式中唤醒 (参见图 5)。7 h$ l1 L- z& l. _- e+ g- c% z
BAM 实现方法总结* [2 T8 K& l4 p ?, P& m! b
完整版请查看:附件 |
DM00121312_ZHV4.pdf
下载796.84 KB, 下载次数: 3
【福利三:雨露均沾·逢7狂欢】之四:用一个定时器同步另外两个定时器输出PWM
【逢7发帖赢大礼】STM32开发之WIFI实时时钟
【逢7发帖赢大礼】STM32开发之指纹识别!
【逢7发帖赢大礼】STM32开发之环境空气质量监测
【逢7发帖赢大礼】STM32开发之人体实时运动信息监测!
【逢7发帖赢大礼】STM32开发之IC门禁卡UID读取方法!
【逢7发帖赢大礼】全网最简单的Arduino_STM32开发环境搭建教程!
STM32F4中文用户手册
STM32F400、STM32F402 Cortex-M4超值单片机
SPI 高温读错最后一位?STM32F42xx 官方根治方案
微信公众号
手机版