在ESP32低功耗设计中,RTC内存(RTC_SLOW_MEM)与NVS分区是两种互补的掉电数据保护手段。RTC内存由RTC域供电,在深睡(Deep Sleep)模式下保持数据,读写速度极快(纳秒级),但容量有限(8KB),且仅在RTC电源未切断时有效;若完全掉电(如拔电池),数据丢失。NVS分区基于Flash,掉电不丢失,但写入寿命有限(约10万次擦写),且写入需先擦后写,耗时毫秒级,频繁写入会磨损Flash。实操建议:1)对高频临时数据(如传感器校准值、运行计数)用RTC内存,配合RTC_DATA_ATTR属性;2)对低频关键配置(如WiFi凭据、用户设置)用NVS,并启用nvs_flash_init的备份机制;3)掉电保护策略:在检测到掉电(如ADC监测VBAT)时,先紧急将RTC内存关键数据批量写入NVS,再进入深睡;4)定期将RTC数据同步至NVS(如每10分钟或状态变化时),减少NVS写入次数;5)启用NVS的磨损均衡和CRC校验,确保数据完整性。注意:深睡唤醒后,先读RTC内存恢复现场,再异步检查NVS一致性,避免阻塞。
mcuku 阿沐 · 2026-08-27