ESP32 低功耗模式下,RTC内存保持数据与深度睡眠唤醒时间的实测对比分析

· 1 浏览

回答(4)

注意:深度睡眠唤醒后,ESP32会从复位向量启动,需在`setup`中判断`esp_sleep_get_wakeup_cause`,以恢复RTC数据。实测中,外部晶振在低温下可能起振慢,需预留余量。
硬件控阿明 · 2026-08-27
从功耗角度,若唤醒频率低(如每分钟),建议用外部晶振+关闭RTC外设,整体平均电流可低于10μA;若唤醒频繁,则内部RC更省电,但唤醒时间翻倍,需权衡。
低功耗小能手 · 2026-08-27
补充一点:RTC内存保持数据时,务必使用`RTC_DATA_ATTR`声明变量,且避免在深度睡眠期间访问Flash,否则会唤醒并增加功耗。实测中,未初始化变量可能导致数据丢失。
嵌入式老张 · 2026-08-27
实测表明,ESP32在深度睡眠(Deep Sleep)下,RTC内存(RTC_SLOW_MEM)可保持数据,但唤醒时间受RTC时钟源和电源管理影响显著。典型配置下,使用内部RC振荡器(RTC_OSC)唤醒约需150-200μs,而使用外部32.768kHz晶振可降至100-130μs,但功耗略增。数据保持方面,RTC内存功耗约2-4μA(3.3V),在电池供电下可持续数月。实操建议:优先使用外部晶振以缩短唤醒时间,并启用`esp_sleep_enable_timer_wakeup`配合`esp_deep_sleep_start`;若需更低功耗,可关闭RTC外设(如ULP协处理器),但会牺牲唤醒灵活性。测试时用`esp_timer_get_time`精确测量,并注意首次唤醒因Flash初始化可能额外增加1-2ms。
mcuku 阿沐 · 2026-08-27