×
嵌入式 > 嵌入式开发 > 详情

初识STM8S的电源管理

发布时间:2020-07-17 发布时间:
|
丰富的片上设备模块和可配置熔丝选项是AVR强过老一辈MCU的优势之一。不过STM8S出世以后,AVR的这一优势就有点光环顿失了。


下面是我对电源管理部分的理解,这是我看过STM8S手册和STM8S20X器件资料后的初步认识。

除了运行模式,可以采用以下三种低功耗模式:等待、主动停机、停机。
1)等待(Wait)模式:CPU停止工作,片上设备可以选择被关断,任意内部外部中断及复位均可唤醒,耗电2.4mA@24MHz,5v。
2)主动停机模式(Active Halt):保留一个定时唤醒单元AWU工作,CPU和片上设备全停止工作,AWU和外部中断及复位均可唤醒,耗电11uA - 1000uA,取决于片上稳压器(MVR还是LPVR)和Flash模式的选择。
3)停机模式(Halt):CPU和片上设备完全停止工作,定时唤醒单元AWU也停止,仅由外部中断及复位唤醒,耗电6uA~66uA,取决于Flash模式的选择。

这样的设置并没有太多与众不同,但一些细节的设计却提供了灵活的选择。

系统慢速运行
提供4种振荡模式:0~24MHz外部晶体SHE、外部时钟、16MHz内部高速振荡器SHI、128KHz内部低速速振荡器LSI。内部高速振荡器4档可调,最大8分频。CPU时钟8档可调,最大128分频。

系统时钟切换
可以不卡壳地安全地切换时钟源。分自动模式和手动模式。自动模式时,先设定好要切换的时钟,程序继续工作,无需照顾时钟切换过程,新时钟振荡并稳定以后切换完成。这有助于在运行中使用较低速度的振荡器。

在RAM中运行
系统运行于RAM中比运行于FLASH中要省电很多,4mA vs 11mA。可以把常用的代码置于RAM中运行。

关闭不用的数字片上设备
AVR是各个模块在其寄存器中使能或关闭,STM8S则集中到两个PCG寄存器中。因是CMOS电路,关闭时钟就等于断电。

换到低功耗内部稳压器
STM8S的核心工作在1.8V,内部稳压器有两个,MVR和LPVR。LPVR是低功耗稳压器,提供的电流较小但是自身功耗低。主动停机模式下选择PLVR,整机功耗有明显下降。但是使用主稳压器MVR时,从主动停机模式下唤醒较快。

主动停机模式和停机模式下Flash掉电
在停机模式下Flash进入掉电模式,节约20~60uA电流,代价是唤醒时间长几个uS。

定时唤醒单元AWU
AWU是一个很好的设计,使得系统多一个从主动停机模式定时唤醒的定时器,这是主动停机模式的得名。就像整机工作在定时器中断唤醒的模式下。但这是从主动停机模式中醒来的,而不是从等待模式(即空闲模式)中醒来,电流节省得更多。而且,AWU的配置也相当的灵活,手册中有一个例子,可配置为15uS到30S。相比之下,AVR的省电模式必须使用内部振荡器时,才可以靠外部T2时钟运行类似的定时唤醒模式,外接晶振免谈。

不过,STM8S掉电模式(停机模式)的功耗约6.5uA到5V,4.5uA到3.3V,高于Pico的AVR。不适合长期关机保电的场合,例如使用2032等锂电池的场合。

AVR的PicoPOWER还是可以用一用的,如果MSP430还是那么贵的话。

CLK_PCKENR2 |= 0x04; // Enable the clock for AWU
// AWU设置前必须先使能

AWU_CSR1 = 0; // 自动唤醒设置(1S)
AWU_APR = (31-2); // f_APR = LSI 128K/31
AWU_TBR = 0x0D; // T_AWU = 2^12 / f_APR = 0.992S
AWU_CSR1_AWUEN = 1; // 启动AWU

#pragma vector = AWU_vector // 加的中断地址.原头文件漏了
__interrupt void
AWU_isr(void)
{
BYTE i;

i = AWU_CSR1; // !!!CLR FLAG
if(bitif(i,5))
WakeUpSR = 0;
else
WakeUpSR = 0xFF;
}



『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
基于嵌入式系统的CAN总线网络通信流程设计