×
嵌入式 > 技术百科 > 详情

STM8 自动唤醒AWU

发布时间:2020-06-15 发布时间:
|
简介 

       AWU是用来当MCU进入低功耗的活跃停机(Active Halt) 模式时提供一个内部的唤醒时间基准。该时间基准的时钟是由内部的低速RC振荡器时钟(LSI)或者通过预分频的HSE晶振时钟来提供的。 
LSI  时钟测量 
在使用LSI低速内部时钟时,为了确保最好的精度,它的频率可以通过TIM3的输入捕捉1 来测定。 
AWU  时钟框图

AWU功能描述 
AWU  操作 
为了使用AWU功能,按顺序执行如下步骤: 
1.  使用AWU_CSR寄存器的MSR位和TIM3的输入捕捉通道1来检测LS的时钟频率; 
2.   通过写AWU_APR 的APR[5:0]位来定义适当的预分频值; 
3.   通过写AWU_TBR 的AWUTB[3:0]来选择需要的自动唤醒延时; 
4.   置位AWU_CSR 的AWUEN 位; 
5.  执行HALT指令。 
注意:    计数器仅仅在HALT指令之后MCU进入活跃停机模式时才开始计数(请参考电源管理的活跃停机模式章节),AWU中断同时被使能。 
预分频计数器仅仅在APR[5:0] 值不同于它的复位值0x3F值时才开始计数。 
空闲模式

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

 时基选择 
请参考AWU_PAR 和AWU_TBR 的说明。 
AWU的时间间隔取决于 AWUTB[3:0] 位的值和 APR[5:0]  位的值 (APRDIV),可以定义15种不重叠的时间间隔, 如下所示: 
  AWUTB[3:0] 选择

 

 
为了获得AWUTB[3:0]和APRDIV的正确值,用户必须根据期望的时间间隔值来找出一个对应的间隔范围,从而找出对应的AWUTB[3:0]值。然后选择APRDIV的值来得到一个尽可能接近期望的时间间隔值。这个也可以使用AWU_TBR 描述中列出的公式获得。 
注意:    如果目标值在 和 或者和 之间时,必须选择更靠近目标的那个值。 
当 fLS=128 kHz ,目标时间是 78.5 ms 时的一个例子

 正确的TB[3:0] 值是 1001 , “ 理想的 。因此可以分配给 APR DIV 的值就是 39 ,这样给定的实际的间隔时间是 78 ms。

 LSI  低速内部时钟频率检测 
在经过出厂校验后,在全温度范围内低速内部RC(LSI)振荡器的频率离散性是128 kHz +/- 12.5% 。为了获得精确的AWU时间间隔或者蜂鸣器输出,必须精确测量LSI频率。 
可采用如下的步骤: 
 1.   将AWU_CSR 的MSR位置1来把LSI的内部时钟连接到TIM3定时器的ICAP1 ; 
2.     通过定时器的输入捕捉中断来测量LSI的时钟频率; 
3.   到向AWU_APR 的 APR [5:0] 位写入一个适当的值来调整AWU定时间隔到期望的时间间隔。
AWUTB[3:0]位可以被更改来选择不同的时间间隔。 
LSI的时钟频率测量方法也可以被用来校准蜂鸣器的频率

 

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

热门文章 更多
物联传感与Atmel强强联手 达成智能家居战略合作协议