STM8 自动唤醒AWU
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的时钟频率测量方法也可以被用来校准蜂鸣器的频率
STM8自动唤醒AW 相关文章:
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)