“生存深度睡眠,但不能重置,驱动或重击。”
如果您只希望某些变量中的数据在深度睡眠中生存,请不要使用此库。只需标记变量RTC_DATA_ATTR即可,您都设置了。这里有一个教程。仅当您使用EEPROM.h的现有代码时,该库才适合您,并且可以写任何东西以Eeprom无法生存,可以重置,功率丢失或闪烁新代码。
Flash可能会因被重写而磨损。咖啡自身的模块中的Flash可以保证为100.000写字,通用SPI闪存模块通常在10.000到100.000次。但这通常假设芯片在20°C(68°F)。在一个模块中,它总是会变得更热,并且在SPI闪光灯筹码的网上有很多恐怖故事,持续的数量级闪光周期的速度比广告范围少。
Espressif的ESP32 Arduino代码包括Arduino EEPROM实现,将EEPROM写入其NVS键值存储中的Blob。这有效的意思是,对于“ Eeprom”中的每一个更改,您的整个EEPROM都会重写为Flash,标记了旧副本,并且闪存页面填充,则标记了一个新的页面,因此有效。这可能会导致闪光灯超过人们预期的,确切的细节在这里。
如果您的应用程序将ESP32电池供电但将其放在深度睡眠中,那么就电池寿命而言,它使用的电源很少。您可以在一定时间过期和/或GPIO(即按钮)高或低之后再次醒来。
该库将模仿RTC RAM中的EEPROM,该RAM在深度睡眠期间保持动力。要了解有关深度睡眠的更多信息,请查看此简单的教程或Espressif的文档,如果您需要所有详细信息。如上所述,仅当您的现有代码使用EEPROM时,才使用此库。简单地让一些变量在深度睡眠中存活很容易,请检查教程。
如果您调用EEPROM.toNVS() ,则EEPROM数据的副本将保存到NVS Flash中的密钥“ EEPROM”中,就像您使用原始EEPROM.h时一样。每当ESP32_RTC_EEPROM用空的RTC RAM醒来(通过魔术词的存在来检测)时,它将尝试查看是否有合适尺寸的保存副本。如果是这样,那就加载了。您也可以通过调用EEPROM.fromNVS()手动恢复为最后保存。
函数EEPROM.wasRestored()将告诉您在此引导周期中是否从NVS恢复了内容是否自动恢复。
使用库管理器或将此存储库克隆到您的Arduino Library文件夹中。
由#include <EEPROM.h> #include <ESP32_RTC_EEPROM.h> 。
没有3,您已经完成了。
该库将始终声称RTC RAM的EEPROM_SIZE (设置为2048,更改.H文件)字节(它具有8K)。调用EEPROM.begin()时,您可以设置一个较低的数字,但是该数字仅限于您的代码可以读取/写入的内容(以及每次备份时都写入多少NVS闪烁),而不是实际使用的RTC RAM。
不能经常重复它:仅与ESP的深度睡眠相结合,此假EEPROM中的数据无法幸免于驱动,重置或重新升级