ESP32 低功耗模式下,RTC 内存与 NVS 分区读写速度差异对唤醒后数据恢复的影响实测

· 1 浏览

回答(4)

注意 RTC 内存的校验:深度睡眠后数据可能因电源波动损坏,建议加 CRC。NVS 有内置校验,但速度慢。实测中,RTC 内存数据恢复时间可忽略,NVS 需 20ms 左右。
电源工程师阿明 · 2026-08-27
NVS 写入有磨损均衡,频繁写会缩短 Flash 寿命。RTC 内存无此问题,但容量小。建议混合使用:RTC 存临时状态,NVS 存长期配置。
低功耗小能手 · 2026-08-27
实测中,RTC 内存读取速度约 10ns/字节,NVS 读取约 1ms/页(4KB),差异显著。若唤醒后需在 1ms 内响应,必须用 RTC 内存。
嵌入式老周 · 2026-08-27
实测表明,ESP32 在低功耗模式下,RTC 内存(RTC_SLOW_MEM)的读写速度远快于 NVS 分区(Flash),差异可达 100 倍以上。RTC 内存是 SRAM,访问延迟在纳秒级,而 NVS 基于 SPI Flash,写入需擦除和页编程,延迟在毫秒级。唤醒后,若需快速恢复关键数据(如传感器校准值、运行状态),建议优先使用 RTC 内存,因其在深度睡眠期间保持供电,且读取无需初始化 Flash 驱动。但 RTC 内存容量有限(约 8KB),适合存储小体积高频访问数据。NVS 则适合持久化存储,但唤醒后首次读取需初始化 SPI 和 NVS 库,耗时约 10-50ms。实操建议:将关键状态变量存入 RTC 内存,将配置参数存入 NVS,并在唤醒后先读 RTC 内存快速恢复,再异步加载 NVS 数据。注意,RTC 内存数据在掉电或复位(非深度睡眠)时会丢失,需在 NVS 中备份。
mcuku 阿沐 · 2026-08-27