tandby模式下,如何唤醒MCU APM32的RTC与WKUP?


部分应用中,会有功耗要求,在功耗要求比较高的场景,要提高使用电池供电设备的待机时间,就需要关闭耗电高的器件,比如LCD屏幕、LED灯等,MCU也可以配置到低功耗状态来进一步降低。
APM32F103系列低功耗模式有三种:睡眠模式、停止模式和待机模式。通过关闭内核、时钟源、设置调压器来降低功耗。
每种低功耗模式的功耗、唤醒启动时间、唤醒方式、唤醒后数据的保存存在差异;功耗越低,唤醒时间越长,唤醒方式越少,唤醒后保存的数据越少,用户可以根据需求选择最合适的低功耗模式。下图是三种低功耗模式的差异。
APM32F103系列查看数据手册,可以看到各工作模式下的功耗差异。
根据主频和外设使用情况的不同:
Run mode:19.4~32.9mA
Sleep mode:5.2~21.5mA
Stop mode:20μA左右
Standby mode:4μA左右
可以看到各低功耗模式的功耗差异还是非常大的,特别的是standby模式,可以满足绝大部分低功耗需求。
Standby模式功耗最低,但待机时内核停止工作,外设也停止工作,内核寄存器、内存的数据会丢失。唤醒后相当于程序复位从头开始执行。
唤醒的方式可以通过WKUP引脚的上升沿, RTC闹钟、唤醒、入侵事件或 NRST引脚外部复位及IWDT。
一般常用的就是通过WKUP引脚或RTC来唤醒MCU。接下来简单测试下这两种方式。
WKUP唤醒的配置比较简单,只需要配置PMU_CSTS的WKUPCFG位即可。
对应库函数为: PMU_EnableWakeUpPin();
然后在进入standby前清除唤醒标志位,避免标志位干扰即可:
PMU_ClearStatusFlag(PMU_FLAG_WUE);
PMU_EnterSTANDBYMode();
而RTC的唤醒首先需要对RTC进行初始化。
void RTC_Init(void)
{
if(PMU_ReadStatusFlag(PMU_FLAG_SB) == SET)
{
APM_MINI_LEDOn(LED3);
PMU_ClearStatusFlag(PMU_FLAG_SB);
RTC_WaitForSynchro();
}
else
{
BAKPR_Reset();
RCM_EnableLSI();
while(RCM_ReadStatusFlag(RCM_FLAG_LSIRDY) == RESET);
RCM_ConfigRTCCLK(RCM_RTCCLK_LSI);
RCM_EnableRTCCLK();
RTC_WaitForSynchro();
RTC_ConfigPrescaler(40000);
RTC_WaitForLastTask();
}
}
这里使用LSI作为时钟源,Standby唤醒虽然主程序会从头运行,但RTC的配置不受影响,所以根据PMU_CSTS的待机标志,可以不用重复配置RTC,节省初始化时间。
再配置SysTick中断和按键PA1的中断,分别做系统运行闪烁指示和按键进入Standby的判断。
同时在EINT1_IRQHandler中进入standby前,进行RTC闹钟配置,让MCU进standby唤醒3秒后自动唤醒。
void SysTick_Handler(void)
{
APM_MINI_LEDToggle(LED2);
}
void EINT1_IRQHandler(void)
{
if(EINT_ReadIntFlag(KEY1_BUTTON_EINT_LINE) != RESET)
{
EINT_ClearIntFlag(KEY1_BUTTON_EINT_LINE);
APM_MINI_LEDOn(LED2);
RTC_ClearStatusFlag(RTC_FLAG_SEC);
while(RTC_ReadStatusFlag(RTC_FLAG_SEC) == RESET);
RTC_ConfigAlarm(RTC_ReadCounter()+ 3);
RTC_WaitForLastTask();
PMU_ClearStatusFlag(PMU_FLAG_WUE);
PMU_EnterSTANDBYMode();
}
}
对应main中进行初始化配置。
int main(void)
{
RCM_EnableAPB1PeriphClock((RCM_APB1_PERIPH_T)(RCM_APB1_PERIPH_PMU | RCM_APB1_PERIPH_BAKR));
APM_MINI_LEDInit(LED2);
APM_MINI_LEDInit(LED3);
APM_MINI_PBInit(BUTTON_KEY1, BUTTON_MODE_EINT);
APM_MINI_LEDOn(LED2);
APM_MINI_LEDOff(LED3);
PMU_EnableWakeUpPin();
PMU_EnableBackupAccess();
RTC_Init();
SysTick_Init();
while(1)
{
if(PMU_ReadStatusFlag(PMU_FLAG_WUE) == SET)
{
APM_MINI_LEDOn(LED3);
}
else
{
APM_MINI_LEDOff(LED3);
}
}
}
运行效果为:
上电LED2闪烁 ,表示MCU在运行状态。
按下PA1的按键,LED2熄灭,MCU进入standby模式。
3秒后MCU自动唤醒,或者给PA0一个上升沿信号也可以唤醒。
唤醒后,LED2继续闪烁,LED3常亮,表示进入过了standby模式。
而我main中多了一句:
if(PMU_ReadStatusFlag(PMU_FLAG_WUE) == SET)
{
APM_MINI_LEDOn(LED3);
}
这是为了验证用户手册说的:
实测也是运行状态下,如果PA0也就是WKUP引脚是高电平,这个标志位就会置位,并且由于标志位一直置位,如果保持PA0一直是高电平的状态进入standby,RTC闹钟无法唤醒MCU,需要PA0有个上升沿型号才行。
所以,应用中使用WUKP需要保持空闲状态低电平,需要唤醒时拉高,避免标志位不对。
补充下standby模式下的功耗,只有3μA,还是相当不错的。
- |
- +1 赞 0
- 收藏
- 评论 0
本文由Vicky转载自极海半导体 微信公众号,原文标题为:APM32芯得 EP.27 | Standby模式 RTC唤醒与WKUP唤醒,本站所有转载文章系出于传递更多信息之目的,且明确注明来源,不希望被转载的媒体或个人可与我们联系,我们将立即进行删除处理。
相关推荐
【经验】如何在JFLASH中添加极海半导体Geehy APM32系列MCU
本文主要介绍极海半导体MCU产品如何使用第三方Segger公司的JFLASH配合J-Link仿真器对指定型号MCU的Flash进行擦除、写入及读取操作的目的。
【经验】APM32F4 MCU在RT-Thread系统上添加以太网驱动和使用LwIP网络组件的方法
本文详细介绍了如何将极海半导体APM32F4 MCU在RT-Thread系统上添加以太网驱动和使用LwIP网络组件,其他APM32带有以太网控制器的MCU,在RT-Thread使用LwIP网络功能也是大同小异的,按照这个过程基本都可以把网络功能应用起来。
APM32芯得 | 基于极海APM32E103系列MCU的SPI转CAN芯片MCP2515移植测试
极海半导体APM32E103系列MCU支持CAN协议2.0A和2.0B,通信波特率最大为1Mbit/s,并且拥有双CAN接口,能适应更多的应用场合。将杜邦线按照引脚配置,接好线后仿真就能测试回环模式下收发数据了。可以看到断点打到接收部分,可以接收到CAN数据,与发送的数据一致。
【经验】极海APM32全系列MCU在线调试仿真工具GEEHY-LINK,支持全速运行、单步调试等调试方式
GEEHY-LINK是一款仿真器和编程器一体化的开发工具,可以在keil集成开发环境下对极海半导体APM32全系列MCU产品进行在线调试仿真。支持全速运行、单步调试和断点设置等各种调试方式。
极海半导体32位MCU-M0选型表
极海半导体的APM32系列是基于Arm® Cortex®-M0+/M3/M4内核的优质国产32位通用MCU,具有低功耗、高性能、高集成度以及快速移植等特性。凭借优异的系统性能、丰富的协处理功能以及灵活的使用体验,有助于用户缩短产品设计时间、降低开发成本、实现性能最优化。
产品型号
|
品类
|
内核
|
Frequency(MHz)
|
FLASH(KB)
|
SRAM(KB)
|
I/Os
|
Vmin(V)
|
Vmax(V)
|
GPTMR(16bit)
|
GP TMR(32bit)
|
Advanced TMR(16bit)
|
Basic TMR
|
Systick(24bit)
|
ADC 12-bit Cell
|
ADC 12-bit channels
|
DAC 12-bit Cell
|
DAC 12-bit channels
|
Analog Comparator
|
TSC (Channels)
|
SPI
|
I2S
|
I2C
|
U(S)ART
|
CAN
|
SDIO
|
USB Device
|
Package
|
对照型号
|
APM32F072V8T6
|
32位MCU
|
ARM Cortex-M0
|
48MHz
|
64KB
|
16KB
|
87
|
2V
|
3.6V
|
5
|
1
|
1
|
2
|
1
|
1
|
16
|
1
|
2
|
2
|
24
|
2
|
2
|
2
|
4
|
1
|
0
|
1
|
LQFP 100
|
-
|
选型表 - 极海半导体 立即选型
还可以这样玩?极海半导体APM32F411系列MCU与pyocd的火花
前段时间笔者学习了一下如何使用pyocd配合APM32F411VCTINY板在命令行下给它进行各种骚操作,在使用一段时间后就想着:pyocd是基于python的,那是不是也可以使用python脚本+pyocd使用起来呢?本文中极海半导体与大家分享能够自动化完成重复操作的设计经验。
【应用】极海半导体MCU APM32F103系列用于HMI人机界面,可满足HMI功耗调整、蓝牙通信等需求
本文推荐采用极海半导体推出的APM32F103系列MCU作为HMI人机界面的主控,最高96MHz工作频率,FLASH 256K,SRAM 64K,支持FPU单元;资源丰富,有CRC/RTC/DMA通道,两个DMA;通信接口丰富。
【经验】软硬件开发工具Geehy使用教程,为MCU应用开发提供有力支持
极海半导体根据自身产品特色及应用领域要求,自主研发建成了一套完整的软硬件开发工具,可帮助用户缩短产品开发周期、提高产品稳定性,为客户在完成MCU应用开发工作的过程提供强有力的支持。
APM32F411xCXE ARM®Cortex®-M4F核基32位MCU用户手册
极海半导体 - 基于ARM®CORTEX®-M4F内核的32位MCU,MICRO-CONTROLLER UNIT,ARM® CORTEX®-M4F CORE-BASED 32-BIT MCU,微控制器单元,MCU,APM32,APM32F411XCXE SERIES,APM32F411XCXE
【应用】国产工业级高性能MCU APM32F407VGT6用于PLC工控板,主频168MHz,通信外设丰富
某客户主要做各种工业自动控制系统装置,其中一款国产PLC工控板主控要更换成国产物料,推荐极海工业级高性能MCU APM32F407系列,主频高达168MHz、通信外设资源丰富,工作温度范围-40℃到+85℃。
【经验】极海MCU APM32F103 IAP的实现方式
拿到了一块APM32F103VC的MINI开发板,在学习了一段时间后发现其有非常丰富的外设资源,主频能达到96Mhz。最近在项目中使用到了IAP(In Application Programming)功能,特来评估一下APM32F103的IAP实现方式。
APM32F103xCXDXE基于ARM®Cortex®-M3的32位MCU用户手册
本手册详细介绍了APM32F103xCxDxE系列基于Arm® Cortex®-M3内核的32位微控制器(MCU)的系统架构、内存和外设。内容包括系统架构概述、内存映射、启动配置、Flash存储器、外部存储器控制器(EMMC)、外部内存控制器(SMC)、动态内存控制器(DMC)、复位和时钟管理(RCM)、电源管理单元(PMU)、备份寄存器(BAKPR)、嵌套向量中断控制器(NVIC)、外部中断/事件控制器(EINT)、直接内存访问(DMA)、调试MCU(DBGMCU)、通用输入/输出引脚(GPIO)、多功能输入/输出引脚(AFIO)、定时器、看门狗定时器(WDT)、实时时钟(RTC)、通用同步/异步收发器(USART)、内部集成电路接口(I2C)、串行外设接口/片上音频接口(SPI/I2S)、控制器局域网(CAN)、安全数字输入/输出接口(SDIO)、全速USB设备接口(USBD)、模数转换器(ADC)、数模转换器(DAC)、循环冗余校验计算单元(CRC)、浮点单元(FPU)以及芯片电子签名等。
极海半导体 - ARM® CORTEX® -M3 BASED 32-BIT MCU,基于ARM®CORTEX®-M3的32位MCU,微型控制器,MICRO-CONTROLLER,MCU,APM32F103XCXDXE,APM32F103XDXE,APM32F103XCXDXE SERIES,APM32F103XC,APM32F
什么?MCU APM32F072_RTC会恢复默认值?
本文介绍了APM32F072的RTC计数值会在断电后重新上电(Vbat未断电)后,APM32F072的RTC计数会恢复默认值发生的原因,查找问题的方法以及解决问题的办法。
【应用】极海32位MCU用于光伏逆变器,内置3个精度12位的ADC,主频高达168MHz
极海半导体APM32F407VGT6在硬件上标准LQFP100封装,高达168MHz的主频,独立FPU模块,高达82个I/O,操作简单,提供标准DEMO驱动程序等优点,是光伏逆变器应用或者其他通用MCU场景的优秀选择。
APM32E103xCXe基于ARM®Cortex®-M3的32位MCU用户手册
本手册详细介绍了APM32E103xCxE系列基于Arm® Cortex®-M3内核的32位微控制器(MCU)的系统架构、内存和外设。内容包括系统架构、内存映射、启动配置、FLASH存储器、外部存储器控制器(EMMC)、外部内存控制器(SMC)、动态内存控制器(DMC)、复位和时钟管理(RCM)、电源管理单元(PMU)、备份寄存器(BAKPR)、嵌套向量中断控制器(NVIC)、外部中断/事件控制器(EINT)、直接内存访问(DMA)、调试MCU(DBGMCU)、通用输入/输出引脚(GPIO)、多功能输入/输出引脚(AFIO)、定时器、看门狗定时器(WDT)、实时时钟(RTC)、通用同步/异步收发器(USART)、内部集成电路接口(I2C)、串行外设接口/片上音频接口(SPI/I2S)、控制器局域网(CAN)、安全数字输入/输出接口(SDIO)、全速USB设备接口(USBD)、模数转换器(ADC)、数模转换器(DAC)、循环冗余校验计算单元(CRC)、浮点单元(FPU)和芯片电子签名等。手册还提供了各个模块的功能描述、寄存器地址映射和功能描述。
极海半导体 - ARM® CORTEX® -M3 BASED 32-BIT MCU,基于ARM®CORTEX®-M3的32位MCU,微型控制器,MICRO-CONTROLLER,MCU,APM32E103VET6S,APM32E103XCXE SERIES,APM32E103XCXE
电子商城
现货市场
服务

可定制显示屏的尺寸0.96”~15.6”,分辨率80*160~3840*2160,TN/IPS视角,支持RGB、MCU、SPI、MIPI、LVDS、HDMI接口,配套定制玻璃、背光、FPCA/PCBA。
最小起订量: 1000 提交需求>

拥有IC烧录机20余款,100余台设备,可以烧录各种封装的IC;可烧录MCU、FLASH、EMMC、NAND FLASH、EPROM等各类型芯片,支持WIFI/BT模组PCBA烧录、测试。
最小起订量: 1 提交需求>
登录 | 立即注册
提交评论