当前位置:首页 > 物联网 > 智能应用
[导读]在物联网设备开发中,电池续航能力直接影响产品竞争力。通过RTC(实时时钟)唤醒与电源门控技术的协同应用,可让设备在大部分时间处于"深度睡眠"状态,将功耗降低至微安级别。本文以STM32L4系列为例,详细阐述实现路径。


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


一、RTC唤醒机制实现

RTC模块可在设备休眠时持续运行,通过配置闹钟中断实现周期性唤醒。关键步骤如下:


c

// 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产生中断唤醒CPU。


二、电源门控技术深度应用

电源门控通过关闭非要外设时钟实现功耗优化,需注意:


外设分类管理:

始终供电:RTC、备份寄存器

唤醒时供电:GPIO、SPI

完全关闭:ADC、TIM2-TIM7

动态时钟控制:

c

// 进入深度睡眠前的时钟配置

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);

}

备份域保护:

使用备份寄存器存储关键数据,即使主电源关闭也能保持:

c

// 存储数据到备份寄存器

void Save_BackupData(uint32_t data) {

   HAL_PWR_EnableBkUpAccess();

   __HAL_RCC_PWR_CLK_ENABLE();

   WRITE_REG(PWR->BKPR1, data);

}

三、实战优化技巧

唤醒后快速恢复:

在RTC中断中立即关闭唤醒源

使用DMA进行数据采集,减少CPU占用

低功耗GPIO配置:

c

// 配置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系列上,可通过调节供电电压进一步降低功耗:

c

// 设置核心电压为0.95V(低工作电压)

void Set_LowVoltage(void) {

   HAL_PWREx_ControlVoltageScaling(PWR_REGULATOR_VOLTAGE_SCALE0);

}

四、实测数据对比

在环境监测设备上应用上述技术后,功耗表现显著改善:


工作模式 电流消耗 占空比 日均功耗

持续工作模式 8.2mA 100% 196.8mAh

传统休眠模式 150μA 10% 36mAh

深度睡眠模式 1.8μA 0.5% 2.16mAh

五、常见问题解决

唤醒失败:

检查唤醒源配置是否正确

确认RTC时钟源是否稳定

数据丢失:

关键数据须存入备份寄存器

唤醒后立即恢复外设状态

时钟恢复延迟:

对时间敏感的应用,唤醒后优先恢复RTC时钟

使用HSI作为过渡时钟源

通过RTC唤醒与电源门控的协同设计,物联网设备可实现"充电一次工作数年"的续航能力。在实际项目中,建议建立包含电流测量、唤醒时间统计、功耗分布分析的完整测试体系,确保低功耗设计的有效性。随着MCU技术的演进,集成电源管理单元(PMU)的新一代芯片将使低功耗设计更加简便高效。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除( 邮箱:macysun@21ic.com )。
换一批
延伸阅读
关闭