STMCU小助手
发布时间:2022-8-23 16:54
|
1. 功耗说明+ P+ G( V* W2 F5 p 1.1 电源管理
+ m- n1 d2 G8 i* ~6 m" \& p MVR 可以提供一个 1.8V 驱动能力 25mA 的电源1 [' t$ g" y! J' [4 ^ LPVR 可以提供一个 1.55V 驱动能力 200uA 的电源2 e& F! p% q3 O9 ]0 Y6 s7 P
6 A+ H# h# `1 {( e' M/ Q 1.2 时钟管理
stm8 的默认时钟是 HSI/8 HSI 如果不关闭会消耗 100uA 的电流 理论情况下低功耗的消耗电流如下表:4 k6 a7 v7 h, i1 S
2. Low Power 模式2 g( a+ W4 j5 @7 z9 M# J+ H STM8L05xxx, STM8L15xxx, STM8L162xx, STM8AL31xx 和 STM8AL3Lxx 的低功耗模式如下:7 W! `8 ^( i s' B/ r1 s5 Q Wait mode: CPU 时钟停止,外设继续运行 Low power run mode:使用低速振荡器(LSI或LSE)从RAM中执行代码;选定的外围设备保持活动状态 Low power wait mode:CPU时钟已停止,选定的外设仍保持活动状态0 W) Q& j3 w3 Q& i s' [# [ Active-halt mode:CPU时钟停止, AWU/RTC(自动唤醒/实时时钟)和IWDG(独立看门狗)可 以继续运行 Halt mode:CPU、所有外设都停止# W6 j0 Z% p. s 2.1 Wait mode wait模式分为 WFI (wait for interrupt) 模式 WFE (wait for event) 模式 可通过 WFE 寄存器配置等待的事件 8 ?1 `! [- B8 I8 p9 O) c 1. 当进入 wait 模式时,全局中断将自动启用. |( Q: E! c9 k) y. K 2. 在进入 WFI 模式之前,必须至少启用一个中断 3. 在进入 WFE 模式之前,必须至少启用一个事件源3 R# J* M! z' l- C2 K q 4. 如果在 WFE 模式期间发生中断,则执行相关的中断服务程序。在此程序之后,MCU返回到等待事件模式。 2.2 Low power run mode" e, q! s( A4 }3 s 这种模式是基于来自RAM的代码执行,使用一个低速时钟源。在使用此模式时,必须从高速时钟源切换到低速时钟源。 主电压调压器(MVR)被关闭,并且低功率电压调压器(LPVR)用于向内部结构提供电压。 闪存由软件以IDDQ模式配置。 这种模式不支持ADC,因为它的时钟源的最小频率必须为1MHz。, m$ |* u4 Z! Q6 M5 T+ I8 ^ 在此模式下不允许中断,因为中断向量位于Flash中(它已关闭)。因此,所有的中断都必须被屏蔽。7 i% K! p* p8 M( I4 @8 E; y2 | ( h& v* M0 H1 R5 Z/ Y 进入 Low power run mode 的步骤如下: q! B- Y$ l' R h 关闭所有未使用的外围设、振荡器(LSI或LSE除外)和 ADC 屏蔽所有中断9 b+ Y& _: j$ K- O# j0 I 进入RAM中执行程序- Z! q) N' j6 U 系统时钟切换为 LSI 或者 LSE0 b) d8 R) F" A2 ]4 Z% C 置位 FLASH_CR1 寄存器中的 EEPM 位,将 FLASH 配置为 IDDQ 模式 添加一个软件延迟循环,以确保 Flash / Data EEPROM已关闭 通过在CLK_REGCSR寄存器中设置 REGOFF 位来配置调节器的超低功率模式 (不要与配置内部参考电压的 PWR_CSR2 中的 ULP 位相混淆) , x) i$ e/ l; O- D 退出 Low power run mode 的步骤如下 清除 CLK_REGCSR寄存器中的 REGOFF 位来打开 调节器 ,等待 REGREADY 置位 清除 FLASH_CR1 寄存器中的 EEPM 位来打开 Flash / Data EEPROM 可切换时钟4 ~& _. q! \0 y0 D1 d 可打开中断 可跳转到 FLASH 中执行程序3 m) ]+ l9 j6 `# ~; x 2.3 Low power wait mode) h* _ I/ I% M/ K+ I9 c! R6 m1 b5 R 此模式为执行Low power run mode + wait mode。# C, P$ P) P5 f! r$ J 即 在 RAM 中执行程序 同时 有WFE 模式 它只能通过 外部或内部 事件 退出,在这种情况下,MCU返回到Low power run mode。 不能使用WFI指令,因为必须在低功率运行模式下禁用中断。0 J0 J) c w( z1 n$ j $ X; g2 G9 e9 ?- N( N 2.4 Halt mode 进入Halt模式: Halt 模式通过执行 HALT 指令来进入/ B$ j! ?; [% X. n* K 在进入 Halt 模式之前,必须处理完挂起的中断,防止刚进入 halt 模式就被立马唤醒 如果置位 CLK_ICKCR 寄存器的 SAHALT 位,MCU 一进入 Active-halt 模式,主稳压器MVR就断电,因此唤醒时间更长。- w7 a2 d' L* m5 C- w - v9 z' {2 a3 h; Y 退出Halt模式:4 n- l, P/ N, _' U; [+ S9 ~: i/ m! w 退出 Halt 模式是通过 外部中断 或者设置的 外设中断 来退出的 如果置位 CLK_ICKCR 寄存器的 FHW 标志位,则唤醒后默认时钟为 HSI/8 ,否则默认时钟为进入 Halt 模式之前的时钟(启动比较慢) e R/ S6 D5 ]8 z+ Z& i * R, y( {: ^1 t) i9 M3 P$ Y2 r _ 2.5 Active-halt mode 基于 halt 模式,但是可以使用一些外设。 在主动停止模式下,主振荡器、CPU和几乎所有的外设都停止。 如果启用,只有LSIRC振荡器或LSE晶体运行才能驱动SWIM、BEEP、IWDG、RTC和LCD。一旦上面的一些外设被启用,用户就可以通过HALT指令进入此模式。 3. 低功耗tips 低功耗模式下没用的外设时钟就关闭 未连接的 IO 口要有稳定的电平输入或输出,禁止浮空输入或输出, K* ?, ?- N( l9 G7 |% ~ D 适当减小 VDD 来降低功耗. n$ P% J+ [# m: F 可以通过降频降低功耗 对于等待操作,能睡就睡& Z3 v0 C* K4 G7 [9 B 按键上的上拉电阻可以大点 GPIO 默认都是 浮空输入 模式,没有用到的IO可以配置为:% e1 B; h1 v$ g" W 上拉输入8 L7 A7 s: W' P- |' g8 ?7 z 输出低或者高的电平6 ]9 W" j( ?; e7 ]& x4 P 浮空输入会导致施密特触发器频繁触发,增加功耗 ———————————————— 转载:Vice Versa XL ' O1 V- T( a1 V) W1 k 8 m, N* z) P9 k9 G9 F$ @. ] |
微信公众号
手机版