STM8L 电源管理以及自动唤醒AWU

更新时间:2024-04-23 02:54:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

电源供电以及低功耗模式

MCU有一个电源供电。供电有两种模式:主电压供电模式(MVR)和低功率电压供电模式(LPVR)。

系统进入停机(Halt)模式或者活跃停机(Active-halt)模式,供电从MVR进入到LPVR。

电源管理

在系统或者电源复位启动后,处理器默认进入运行模式。这模式CPU的时钟为fmaster,并执行程序。外设时钟都被禁止。

在运行模式下,仍然保持CPU运行和执行代码,下面操作可以降低电源功耗: ?减慢系统时钟。

?未使用的外设将其时钟禁止。 ?关掉未使用的模拟功能。

当CPU无需运行时,有三种低功耗模式可供选择: ?等待模式 ?活跃停机模式 ?停机模式

以上三种模式可以配置获得最优的低功耗,最快速的启动和可利用的唤醒源。 通用配置

低功耗的特点对于节约能源起到重要作用。尤其适用于移动设备。 在芯片中有两种功耗方式:

1. 静态功耗由极化电流和漏电流造成。静态功耗很小,只在停机(Halt)模式和活跃停机

(Active Halt)模式下有意义。

2. 动态功耗:来自于芯片上正在运行的数字模块。它取决于VDD,时钟频率和负载电

容。

一个微控制器的功耗取决于:

?VDD供电电压 ?模拟性能

?MCU大小及数字逻辑门数(漏电流及负载电容) ?时钟频率

?处于激活状态的外设数目 ?可用的低功耗模式及级别

微控制器MCU的处理速度也很重要,这使得用户程序只需很短时间处于运行状态,而更多时间处于低功耗模式下。

使用STM8灵活的低功耗特性,用户可在很大范围内降低STM8S系统功耗并快速恢复操作。

低功耗下的时钟管理

系统时钟的降低

在运行模式下,对于配置最优性能和功耗选择时钟频率是非常重要的。可以配置CLK_CKDIVR寄存器来完成。

注:在某一时期MCU可以进入停机模式。为了降低活跃和停机期间的比例,在活跃期间保持高速时钟可以降低功耗。 外设时钟控制

使用PCG来节省额外的功耗。在任意时期都可以使能或者禁止主时钟与外设的连接。这些设置在运行模式和等待模式都是有效的。

每个PCG状态都代表一个特定功耗或者低功耗。 外设关闭开关

为了到达最小功耗MCU的任意外设都可以被禁止使用。模拟外设和数字外设都可以。 模拟外设

通过控制COMP_CR寄存器的BIAS_EN和COMPx_EN位,模拟外设可以被关掉。 数字外设 每个一个数字外设可以被关掉:

?SWIM_CSR寄存器的SWD位可以控制SWIM模式。 ?AWU_CSR寄存器的AWUEN位可以控制AWU功能。 ?AWU_CSR寄存器的BEEPEN位可以控制蜂鸣器。 ?TIMx_CR1寄存器的CEN位可以控制定时器的使能。 ?I2C_CR1寄存器的PE位可以控制I2C接口使能。 ?SPI_CR1寄存器的SPE位可以控制SPI接口使能。 ?USART_CR2寄存器可以控制USART接口使能。

注:以上这些外设只有在使用时再使能。一旦看门狗被使能,除非复位,否则不能禁止看门狗。

低功耗模式 在系统或者电源上电复位后,处理器默认进入运行模式。在低功耗模式,快速启动模式和可唤醒源之间,系统支持三种低功耗行为以达到最优。这三种模式为:

1. 等待模式:CPU时钟停止,但是使能的外设保持时钟运行。一个内部或者外部中断或复

位可以使处理器退出等待模式。

2. 活跃停机模式:除RTC外CPU和外设时钟都停止。利用RTC中断,外部中断或者复位,

可唤醒处理器。

3. 停机模式:CPU和外设时钟停止,器件仍然上电。外部中断或者复位可以被唤醒。一部

分外设也可以唤醒CPU。

此外在运行模式下,以下方法可以减少功耗: 1. 降低系统时钟。

2. 不使用的外设时钟将其禁止。

等待模式

执行WFI或者WFE指令,系统可以从运行模式进入等待模式:停止CPU运行,允许其他外设和中断继续运行。因此功耗被降低。等待模式可以结合PCG寄存器来降低器件功耗。 在等待模式中,所有的寄存器和RAM都被保存起来,通过设置CLK_CKDIVR可以选择时钟频率。

等待直到中断唤醒模式 当一个外部或者内部中断请求发生,CPU可以从WFI模式中被唤醒,并进入中断服务程序和进入主程序。

注:在基于中断应用中,通过设置CFG_GCR寄存器的AL位主程序可以被暂停,大部分程序处理可以通过中断服务程序实现。设置此位将导致CPU返回到WFI模式而不恢复主程序的上下文。通过删除储存或恢复的上下文和电源管理中软件主循环的运行可以节省功耗。(为了返回WFI模式)

等待直到事件唤醒模式

有两种方式可以使CPU从WFE模式中唤醒:

1. 当一个中断发生时:CPU从WFE模式中唤醒,之后进入中断服务程序。在运行完中断服

务程序之后,处理器进入WFE模式。 2. 当一个事件发生时:CPU被唤醒并且重启处理器。在执行WFE指令可以直接进入系统恢

复,这时不发生上下文的存储。

注:在WFE模式中,只有WFE_CR1或者WFE_CR2寄存器相应标志位被清零后,中断源才能作为外部中断被配置。否则他产生WFE事件(没有中断服务以及用户不得不清除EXTI_SR1或者EXTI_SR2寄存器中对应的标志位)。 使用这一模式并从RAM中执行可以进一步降低功耗。在一些非常低功耗应用中,当主软件循环体很短以及执行时间很短,这一程序可以被移至RAM并从中执行。因为可编程flash内存在唤醒时未被使用,在处理器运行期间功耗将会降低。

在任意时候,通过一条调用语句或跳转程序,其他程序(储存在FLASH内存中)可以被软件执行。

停机模式

此模式主时钟将会停止。这意味着CPU以及所有被主时钟驱动的外设将无法使用。外设时钟将会停止,MCU的数字部分的功耗可以忽略不计。 在MCU进入停机模式后,主电源自动关闭。MCU内核通过LPVR供电,所有寄存器和RAM的数据将会被保持起来。 当HALT指令被执行时,MCU进入停机模式。一个外部中断,作为可配置成输入中断的通用I/O口或者备用功能引脚可以触发一个外设中断,都可以唤醒MCU。 在中断应用中,通过设置CPU寄存器的AL位主程序将被暂停,进入中断服务程序来完成大多数处理。在执行完中断后,将此位置位可使CPU返回停机状态而不恢复执行主程序。 通过删除保存/恢复上下文以及不执行主程序中的电源管理软件可以节省电源。 活跃停机模式 活跃停机模式类似于停机模式,但他无需一个外部中断才能唤醒。经过一个可编程的延时后,它利用AWU来产生一个唤醒事件。 进入活跃停机模式后,首先使能AWU功能。之后再执行HALT指令。 在活跃停机模式后,主振荡器,CPU和大部分外设将会停止。只有LSI RC振荡器在运行并驱动AWU计数器,BEEP和看门狗(首先保证这三部分预先被使能)。 当MCU进入活跃停机模式后,主电源将会被自动关闭。MCU内核由低功耗电源供电,所有寄存器和RAM的数据将会被保存。

自动唤醒功能

简介 当CPU进入活跃停机模式时,AWU用来产生内部唤醒功能。这个基本定时器被内部低速RC振荡器控制。 LSI时钟 在使用LSI低速内部时钟时,为了确保最好的精度,它的频率可以通过TIM2的输入捕捉1来测定。

AWU功能描述 AWU操作 为了使用AWU功能必须进行如下操作:

1. 使用AWU_CSR寄存器的MSR位和TIM2输入捕获1来测定LSI时钟。 2. 设定AWU_APR寄存器的APR[5:0]位来确定适当预分频。

3. 设定AWU_TBR寄存器的AWUTB[3:0]位选择想要的自动唤醒延迟。 4. 设定AWU_CSR寄存器的AWUEN使能位启动AWU。 5. 执行HALT指令。AWU计时器将会重装以及开始计数。

注意:计数器仅仅在HALT指令之后MCU进入活跃停机模式时才开始计数(请参考电源管理的活跃停机模式章节),AWU中断同时被使能。

预分频计数器仅仅在APR[5:0]值不同于它的复位值0x3F值时才开始计数。 空闲模式

如果不使用AWU,必须载入'0000'值到AWU_TBR的AWUTB[3:0]位来让STM8降低功耗。

时基选择

请参考AWU_APR和AWU_TBR的说明。

AWU的时间间隔取决于AWUTB[3:0]位的值和APR[5:0]位的值(APRDIV),可以定义15种不重叠的时间间隔,如下所示:

(表22: AWUTB[3:0]选择)

(表23: 当fLS=128 kHz,目标时间是78.5 ms时的一个例子 )

LSI低速内部时钟频率检测

在经过出厂校验后,在全温度范围内低速内部RC(LSI)振荡器的频率离散性是128 kHz+/-12.5%。为了获得精确的AWU时间间隔或者蜂鸣器输出,必须精确测量LSI频率。 可采用如下的步骤:

1.将AWU_CSR的MSR位置1来把LSI的内部时钟连接到TIM2定时器的ICAP1; 2.通过定时器的输入捕捉中断来测量LSI的时钟频率;

3.到向AWU_APR的APR[5:0]位写入一个适当的值来调整AWU定时间隔到期望的时间间隔。 AWUTB[3:0]位可以被更改来选择不同的时间间隔。

LSI的时钟频率测量方法也可以被用来校准蜂鸣器的频率(见13.2.2)。

(表22: AWUTB[3:0]选择)

(表23: 当fLS=128 kHz,目标时间是78.5 ms时的一个例子 )

LSI低速内部时钟频率检测

在经过出厂校验后,在全温度范围内低速内部RC(LSI)振荡器的频率离散性是128 kHz+/-12.5%。为了获得精确的AWU时间间隔或者蜂鸣器输出,必须精确测量LSI频率。 可采用如下的步骤:

1.将AWU_CSR的MSR位置1来把LSI的内部时钟连接到TIM2定时器的ICAP1; 2.通过定时器的输入捕捉中断来测量LSI的时钟频率;

3.到向AWU_APR的APR[5:0]位写入一个适当的值来调整AWU定时间隔到期望的时间间隔。 AWUTB[3:0]位可以被更改来选择不同的时间间隔。

LSI的时钟频率测量方法也可以被用来校准蜂鸣器的频率(见13.2.2)。

本文来源:https://www.bwwdw.com/article/90ap.html

Top