0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

STM8S_ 006_AWU自动唤醒

黄工的嵌入式技术圈 来源:黄工的嵌入式技术圈 2020-03-20 10:12 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

AWU是STM32中没有的功能

写在前面 Ⅰ

在某些低功耗的设备中,需要设备进入低功耗,且又需要间隔一定时间唤醒MCU,就需要有这么一个定时“AWU自动唤醒”的功能。

在STM32中实现上面功能,常见的操作就是使用RTC来实现。但RTC每次进入低功耗之前都需要配置一下RTC,而STM8独特的AWU功能只需要简单的初始化配置即可。

为方便大家阅读,本文内容已经整理成PDF文件:

http://pan.baidu.com/s/1i5uWhJR

AWU基础知识 Ⅱ

AWU:Auto WakeUp,即自动唤醒

AWU是用来当MCU进入低功耗的活跃停机(Active Halt)模式时提供一个内部的唤醒时间基准。该时间基准的时钟是由内部的低速RC振荡器时钟(LSI)或者通过预分频的HSE晶振时钟来提供的。

LSI低速内部时钟测量

在使用LSI低速内部时钟时,为了确保最好的精度,它的频率可以通过TIM3的输入捕捉1来测定。

AWU操作

为了使用AWU功能,按顺序执行如下步骤:

1. 使用AWU_CSR寄存器的MSR位和TIM1/3的输入捕捉通道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值时才开始计数。

LSI低速内部时钟频率检测

在经过出厂校验后,在全温度范围内低速内部RC(LSI)振荡器的频率离散性是128 kHz +/-12.5%。为了获得精确的AWU时间间隔或者蜂鸣器输出,必须精确测量LSI频率。本文提供的两个工程代码中有一个是校正过的,有一个没有校正。

可采用如下的步骤:

1. 将AWU_CSR的MSR位置1来把LSI的内部时钟连接到TIM1/3定时器的ICAP1;

2. 通过定时器的输入捕捉中断来测量LSI的时钟频率;

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

软件工程源代码 Ⅲ

1、关于工程

本文提供的工程代码是基于前面软件工程“STM8S_Demo”增加AWU修改而来。初学的朋友可以参看我前面对应的基础文章,那些文章讲的比较详细。

工程源代码主要实现功能:配置AWU定时1秒,让MCU从停机模式自动唤醒,改变LED状态;然后又进入停机模式,以此循环下去。

本文重点讲述关于AWU的内容:

AWU_LSICalibrationConfig:LSI低速内部时钟校正配置

AWU_Init:AWU初始化配置

2.代码分析说明

A.AWU_LSICalibrationConfig:时钟校正配置

关于时钟的校正,如果要求不是很高,可以省略该步骤。从上面的说明可以看得出来,是通过定时器来实现的。

我们提供例程通过TIM1/3捕获功能(该功能在后面文章会讲述)测量LSI的时钟,具体请看我提供例程的“AWU_LSIMeasurement”函数,该函数测量得到的LSI时钟,结合“AWU_LSICalibrationConfig”函数即可校正。

B.AWU_Init(AWU_TIMEBASE_1S):定时1秒AWU

通过上面的描述,大家或许初学的朋友还不能完全理解(上面的描述是针对寄存器的描述),但可以通过代码很直接的明白其意思,我们这里结合的是ST提供的标准外设库,具体可以跟踪代码看见,其实里面的内容就是上面所描述的。

void AWU_Initializes(void)

{

AWU_LSICalibrationConfig(AWU_LSIMeasurement());

AWU_Init(AWU_TIMEBASE_1S);

enableInterrupts();

}

提示:

很多人不明白为什么这里要配置中断?

其实细心的朋友会发现寄存器“控制/状态寄存器 (AWU_CSR)”中的“AWUEN自动唤醒使能位”,这一位的功能如下:

此位由软件置位和清零。由此位使能自动唤醒功能。如果MCU进入Active-halt或 Wait 模式,则自动唤醒模块按照预先编程设置延时一段时间唤醒MCU。

0:禁止自动唤醒功能

1:使能自动唤醒功能

因此,我们还需要在中断函数(stm8s_it.c)里添加代码:

INTERRUPT_HANDLER(AWU_IRQHandler, 1)

{

AWU_GetFlagStatus();

}

这一句主要的功能是清除标志位。

下载 Ⅳ

STM8S资料:

http://pan.baidu.com/s/1o7Tb9Yq

软件源代码工程(STM8S-A06_AWU自动唤醒xxx):

http://pan.baidu.com/s/1c2EcRo0

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • Auto
    +关注

    关注

    0

    文章

    43

    浏览量

    15710
  • PDF
    PDF
    +关注

    关注

    1

    文章

    177

    浏览量

    35297
  • STM8S
    +关注

    关注

    16

    文章

    149

    浏览量

    32519
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    TC10管理:虹科10BASE-T1S方案高效管控ECU休眠/唤醒

    虹科Technica深耕汽车以太网领域,基于OPEN Alliance TC10标准,推出10BASE-T1S网络接口卡,一站式解决「低功耗、快唤醒、易测试」三大痛点,无需额外布线与复杂开发,直接适配汽车场景的严苛需求。
    的头像 发表于 11-12 17:40 436次阅读
    TC10管理:虹科10BASE-T1<b class='flag-5'>S</b>方案高效管控ECU休眠/<b class='flag-5'>唤醒</b>

    虹科分享 | TC10管理:虹科10BASE-T1S方案高效管控ECU休眠/唤醒

    虹科10BASE-T1S接口卡TC10唤醒/休眠控制汽车以太网需兼顾「即时响应」与「低功耗」——驾驶员解锁车门、启动引擎时,网络必须毫秒级唤醒;但ECU持续待机又会导致电池过度消耗,直接影响车辆续航
    的头像 发表于 11-12 17:02 1192次阅读
    虹科分享 | TC10管理:虹科10BASE-T1<b class='flag-5'>S</b>方案高效管控ECU休眠/<b class='flag-5'>唤醒</b>

    TPSM8S6C24SEVM-1PH评估模块技术解析与设计指南

    PmBus接口进行编程和监控。TPSM8S6C24SEVM板用于数据中心、机架服务器、有源天线系统、远程无线电、基带单元、自动测试设备、MRI、ASIC、SoC和FPGA。
    的头像 发表于 08-07 11:26 876次阅读
    TPSM<b class='flag-5'>8S</b>6C24SEVM-1PH评估模块技术解析与设计指南

    FII-PRA006/010使用说明

    电子发烧友网站提供《FII-PRA006/010使用说明.pdf》资料免费下载
    发表于 07-28 16:19 0次下载

    ICF-PRA006-010_V1.0_R0.3电路图资料

    ICF-PRA006-010_V1.0_R0.3原理图 
    发表于 07-28 16:16 1次下载

    ICF-PRA006-010硬件参考指南

    电子发烧友网站提供《ICF-PRA006-010硬件参考指南.pdf》资料免费下载
    发表于 07-28 16:15 0次下载

    什么是 K8S,如何使用 K8S

    Kubernetes(简称K8S)是一个用于管理容器化应用程序的开源平台。以下是关于K8S及其使用方法的介绍: 一、什么是 K8S 核心特点 自动化容器编排:
    发表于 06-25 06:45

    欧姆龙发布开关电源S8VK-N

    2025年4月,欧姆龙自动化(中国)有限公司发布新品【开关电源S8VK-N】。在延续经典S8VK系列稳定可靠性能的基础上,通过小型化设计、适应严苛环境、安装灵活等升级,为工业自动化、新
    的头像 发表于 04-21 15:30 892次阅读
    欧姆龙发布开关电源<b class='flag-5'>S8</b>VK-N

    FS26和S32K3可以正常唤醒,当添加与SJA1110的通信时,唤醒过程会卡在断言错误处,为什么?

    FS26 和 S32K3 可以正常唤醒,但当添加与 SJA1110 的通信时,唤醒过程会卡在断言错误处: "GMAC_DEV_ASSERT((Bd-&gt;Des3
    发表于 04-14 08:02

    FA8-220S05D2 FA8-220S05D2

    电子发烧友网为你提供AIPULNION(AIPULNION)FA8-220S05D2相关产品参数、数据手册,更有FA8-220S05D2的引脚图、接线图、封装手册、中文资料、英文资料,FA8-220S05D2真值表,FA
    发表于 03-18 18:45
    FA<b class='flag-5'>8-220S</b>05D2 FA<b class='flag-5'>8-220S</b>05D2

    谷歌“减法”新动作:砍掉耳机按键唤醒朗读功能

    电子发烧友网报道(文/莫婷婷)近期,谷歌宣布将对耳机上的 Google Assistant语音助手功能进行调整,取消通过触控唤醒助理“自动朗读未读通知”的功能。谷歌表示,要想完成该功能可以通过语音
    的头像 发表于 02-22 22:56 2878次阅读
    谷歌“减法”新动作:砍掉耳机按键<b class='flag-5'>唤醒</b>朗读功能

    请问为什么TMP006读出的数据是逐渐增加的?

    我是在淘宝上面买的TMP006的板子!读取寄存器 都是正常的!! 但是测温度的时候 就发现温度 缓慢增加!(而且幅度很小)! 我问过淘宝商家!商家说是正常的!! 但是我有疑问啦!! 原来我用过别的红外线测温MLX90614,虽然有误差!但是人家都是一下就测出来
    发表于 01-23 07:37

    UC-006:4线UART至PC接口

    电子发烧友网站提供《UC-006:4线UART至PC接口.pdf》资料免费下载
    发表于 01-14 16:30 0次下载
    UC-<b class='flag-5'>006</b>:4线UART至PC接口

    Cmsemicon/中微 CMS8S7885、CMS8S7895 支持48MHz 具有丰富模拟外设的工业级8051MCU

    CMS8S78xx系列MCU提供4通道增强型PWM输出,最多达26路12位ADC,支持1路UART、1路SPI和1路I2C,自带蜂鸣器驱动,具有丰富的模拟外设,可简化产品外围电路。工业级标准设计,可
    发表于 12-31 14:43

    k8s和docker区别对比,哪个更强?

    Docker和Kubernetes(K8s)是容器化技术的两大流行工具。Docker关注构建和打包容器,适用于本地开发和单主机管理;而K8s则提供容器编排和管理平台,适用于多主机或云环境,具备自动
    的头像 发表于 12-11 13:55 1115次阅读