低功耗设计实战:利用RTC唤醒与电源门控实现物联网设备深度休眠

2026-03-27 13:44:14
关注
摘要 在物联网设备开发中,电池续航能力直接影响产品竞争力。通过RTC(实时时钟)唤醒与电源门控技术的协同应用,可让设备在大部分时间处于"深度睡眠"状态,将功耗降低至微安级别。本文以STM32L4系列为例,详细阐述实现路径。

低功耗设计实战:利用RTC唤醒与电源门控实现物联网设备深度休眠

在物联网设备设计过程中,电池续航能力已成为衡量产品性能的重要指标。借助RTC(实时时钟)与电源门控技术的协同应用,设备可在非活跃状态下进入“深度睡眠”模式,将整体功耗降至微安级别。以下将以STM32L4系列微控制器为例,详细介绍如何实现高效低功耗设计。

RTC唤醒机制实现

RTC模块可在系统进入休眠状态后继续运行,并通过设置闹钟中断,实现设备的周期性唤醒。具体实现步骤如下:

  • 启用RTC时钟源(如LSE或LSI)。
  • 配置RTC时钟分频,确保定时精度。
  • 初始化并设置闹钟时间,用于触发唤醒。

以下代码演示了RTC的初始化流程:

// RTC初始化配置(以STM32L4为例)void RTC_Init(void) {    // 启用RTC时钟(LSE或LSI)    LL_RCC_LSE_Enable();    while(!LL_RCC_LSE_IsReady());    // 配置RTC时钟源    LL_RCC_SetRTCClockSource(LL_RCC_RTC_CLKSOURCE_LSE);    LL_RTC_InitTypeDef RTC_InitStruct = {0};    RTC_InitStruct.AsynchPrescaler = 0x7F;    RTC_InitStruct.SynchPrescaler = 0x00FF;    LL_RTC_Init(&RTC_InitStruct);    // 设置闹钟唤醒(每10分钟)    LL_RTC_Alarm_InitTypeDef Alarm_InitStruct = {0};    Alarm_InitStruct.AlarmTime.Hours = 0;    Alarm_InitStruct.AlarmTime.Minutes = 10;    Alarm_InitStruct.AlarmTime.Seconds = 0;    LL_RTC_Alarm_Init(&RTC_InitStruct);    LL_RTC_EnableAlarm(RTC, LL_RTC_ALARM_A);}

在深度睡眠模式下,设备仅维持RTC模块运行,整体电流消耗可低至1.2μA(基于STM32L476的实测数据)。当设定的闹钟时间到达时,RTC模块触发中断,从而唤醒主处理器。

电源门控技术的深入应用

电源门控技术通过关闭非必要的外设时钟,进一步降低系统功耗。合理管理外设的供电状态是实现高效低功耗的关键。

外设分类管理

  • 始终供电:RTC、备份寄存器等关键模块。
  • 唤醒时供电:如GPIO、SPI等需在唤醒后恢复的外设。
  • 完全关闭:如ADC、TIM2-TIM7等非关键模块。

动态时钟控制

进入深度睡眠前,应关闭所有非关键外设时钟,并配置好唤醒源。

// 进入深度睡眠前的时钟配置void Enter_DeepSleep(void) {    // 关闭所有非要外设时钟    __HAL_RCC_ADC1_CLK_DISABLE();    __HAL_RCC_TIM2_CLK_DISABLE();    // ...其他外设    // 配置唤醒源(RTC+GPIO)    HAL_PWR_EnableWakeUpPin(PWR_WAKEUP_PIN1);    // 设置睡眠模式    HAL_PWR_EnterSTOPMode(PWR_LOWPOWERREGULATOR_ON, PWR_STOPENTRY_WFI);}

备份域保护

为了防止因主电源关闭导致的数据丢失,关键信息应保存至备份寄存器。

// 存储数据到备份寄存器void Save_BackupData(uint32_t data) {    HAL_PWR_EnableBkUpAccess();    __HAL_RCC_PWR_CLK_ENABLE();    WRITE_REG(PWR->BKPR1, data);}

实用优化技巧

在系统唤醒后,应尽快完成恢复操作,以减少CPU占用。

  • 在RTC中断中快速关闭唤醒源。
  • 采用DMA方式进行数据采集,避免频繁唤醒CPU。
  • 配置GPIO为模拟模式,以减少漏电流。
// 配置GPIO为模拟模式(低漏电流)void GPIO_LowPower_Config(void) {    GPIO_InitTypeDef GPIO_InitStruct = {0};    GPIO_InitStruct.Pin = GPIO_PIN_All;    GPIO_InitStruct.Mode = GPIO_MODE_ANALOG;    GPIO_InitStruct.Pull = GPIO_NOPULL;    HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);    // ...其他GPIO端口}

此外,STM32L4系列支持电压调节功能,可通过降低核心电压来进一步减少功耗。

// 设置核心电压为0.95V(低工作电压)void Set_LowVoltage(void) {    HAL_PWREx_ControlVoltageScaling(PWR_REGULATOR_VOLTAGE_SCALE0);}

实测功耗对比

在实际环境监测设备上应用上述技术后,功耗表现明显改善。

工作模式电流消耗占空比日均功耗
持续工作模式8.2mA100%196.8mAh
传统休眠模式150μA10%36mAh
深度睡眠模式1.8μA0.5%2.16mAh

常见问题与解决方案

在实际部署中,可能会遇到一些典型问题。

  • 唤醒失败:检查唤醒源是否配置正确,确保RTC时钟源稳定。
  • 数据丢失:关键数据应保存在备份寄存器中,并在唤醒后立即恢复外设状态。
  • 时钟恢复延迟:在唤醒后优先恢复RTC时钟,可临时使用HSI作为过渡时钟源。

通过合理设计RTC唤醒机制与电源门控策略,物联网设备可以实现“充电一次,工作数年”的超长续航目标。在实际项目中,建议构建包含电流测量、唤醒时间统计及功耗分布分析的完整测试体系,确保低功耗设计的可靠性。随着微控制器技术的不断演进,集成电源管理单元(PMU)的新一代MCU将使得低功耗系统设计更加便捷高效。

您觉得本篇内容如何
评分

相关产品

CARLO GAVAZZI 佳乐 PD180CBT30Q&MU 光电传感器及开关

测试功能由门控制器激活,或门功能可由限位开关、磁传感器或安全边缘轮廓激活。接收器采用12至24伏交流/直流电源供电,发射器设计为使用2个ER14505 3.6伏直流AA锂电池。

EUROTHERM EUROTHERM 仪器仪表

EUROTHERM生产的温度和过程控制器品种繁多,包括显示仪、电源控制器、工业I/O和信号隔离转换器、阀门控制器、传感器、记录仪和其它相关产品

罗德与施瓦茨 FSH8 手持式频谱分析仪

GHz 高灵敏度 ( 较低的测量不确定度(典型值 0.5 dB) 分辨率带宽可达1 Hz,清晰呈现信号细节 高达20 MHz的信号解调带宽,满足未来的测试需求 内置的跟踪信号源和VSWR电桥,带直流偏置电源全系标配THD/OBW/ACLR/SEM/信道功率/门控触发扫描等测量功能 选配全功能双端口网络分析、电缆断点分析与矢量电压表 选配频谱瀑布图功能,捕获与记录偶发信号 选配WCDMA/CDMA2000

评论

您需要登录才可以回复|注册

提交评论

提取码
复制提取码
点击跳转至百度网盘