“生存深度睡眠,但不能重置,驅動或重擊。”
如果您只希望某些變量中的數據在深度睡眠中生存,請不要使用此庫。只需標記變量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中的數據無法倖免於驅動,重置或重新升級