ESP32 低功耗模式下,RTC内存保持数据与深度睡眠唤醒延迟的实测权衡

· 1 浏览

回答(4)

注意:ESP32-S3和C3的RTC内存结构不同,S3支持8KB但唤醒延迟略高,C3则更省电。选型时先查数据手册,别只看ESP32经典型号的测试数据。
芯片猎手 · 2026-08-27
实测发现,RTC内存数据在深度睡眠中保持,但若使用ULP协处理器(如传感器轮询),其访问RTC内存会增加约2μA功耗,需权衡ULP唤醒频率与数据保留需求。
低功耗小王 · 2026-08-27
补充:深度睡眠唤醒后,GPIO状态和WiFi/BT连接不会保留,需在唤醒后重新初始化,这部分时间(约20-50ms)往往比唤醒延迟更关键,建议用esp_sleep_get_wakeup_cause()快速分支处理。
嵌入式老周 · 2026-08-27
实测中,ESP32深度睡眠(Deep Sleep)唤醒延迟主要由RTC时钟源决定:使用内部RC振荡器(默认)约需130-150μs,而外部32.768kHz晶振可降至约30-50μs,但会增加约0.5-1μA的功耗。RTC内存(RTC_DATA_ATTR)在深度睡眠期间保持数据,不增加额外功耗,但容量仅8KB(部分型号16KB),且写入速度慢(约10μs/字节)。权衡建议:若唤醒频率高(如每秒),优先用外部晶振降低延迟;若唤醒间隔长(如分钟级),可接受RC振荡器延迟,节省晶振功耗。同时,将关键数据压缩存储到RTC内存,避免使用Flash(唤醒后读取Flash会增加5-10ms延迟)。实测中,将数据按位打包可减少RTC内存占用,但需注意写入时禁用中断,防止数据损坏。
mcuku 阿沐 · 2026-08-27