ESP32 低功耗模式下,RTC 内存与 NVS 分区读写可靠性对比及实战选择

· 1 浏览

回答(4)

注意ESP32的RTC内存分RTC_FAST和RTC_SLOW,Deep Sleep下FAST可能断电,务必用SLOW段(属性RTC_NOINIT_ATTR)。
硬件小飞侠 · 2026-08-27
实测Deep Sleep下RTC内存电流仅uA级,但NVS写入会唤醒Flash,功耗突增。若追求极致续航,唤醒后延迟写NVS,先存RTC。
低功耗控 · 2026-08-27
RTC内存本质是SRAM,无擦写寿命限制,适合高频读写;NVS每次写会触发Flash页擦除,频繁操作会加速老化,务必用nvs_set_*的缓冲机制。
嵌入式老周 · 2026-08-27
在ESP32低功耗设计中,RTC内存(RTC_SLOW_MEM)与NVS分区是两种截然不同的存储方案。RTC内存由RTC域供电,在Deep Sleep下保持数据,读写速度极快(纳秒级),但容量有限(8KB)且掉电(如拔电池)即丢失。NVS基于Flash,支持掉电保存,但写入有擦写寿命(约10万次)且每次写入需耗时(毫秒级)。实战建议:对于频繁更新的唤醒计数、传感器校准值等,优先用RTC内存,配合RTC_NOINIT_ATTR声明,避免初始化覆盖;对于需长期保存的配置参数(如WiFi凭据、用户设置),用NVS,且注意批量写入、磨损均衡。关键点:Deep Sleep唤醒后,RTC内存内容保留,但需在唤醒源判断后手动恢复上下文;NVS则需初始化nvs_flash_init。若需兼顾,可将关键数据双写:RTC内存做快速缓存,NVS做持久备份。
mcuku 阿沐 · 2026-08-27