"รอดชีวิตจากการนอนหลับลึก แต่ไม่ได้รีเซ็ต powercycle หรือ reflashing"
อย่าใช้ไลบรารีนี้หากคุณต้องการข้อมูลในตัวแปรบางตัวเพื่อความอยู่รอดของการนอนหลับลึก เพียงทำเครื่องหมายตัวแปร RTC_DATA_ATTR แล้วคุณก็พร้อมแล้ว มีการสอนที่นี่ ห้องสมุดนี้เหมาะสำหรับคุณเฉพาะในกรณีที่คุณมีรหัสที่มีอยู่ซึ่งใช้ EEPROM.h และคุณโอเคที่จะมีสิ่งใดที่เขียนไว้ใน EEPROM ที่ไม่สามารถอยู่รอดได้รีเซ็ตการสูญเสียพลังงานหรือการกระพริบรหัสใหม่
แฟลชอาจมีการสวมใส่ใหม่ แฟลชในโมดูลของ Espressif ได้รับการรับประกันถึง 100.000 WRITES โมดูลแฟลช SPI ทั่วไปโดยทั่วไปจะได้รับการจัดอันดับตั้งแต่ 10.000 ถึง 100.000 แต่ โดยทั่วไปสมมติว่าชิปอยู่ที่ 20 ° C (68 ° F) ภายในโมดูลมันจะร้อนขึ้นอยู่เสมอและมีเรื่องราวสยองขวัญมากมายบนตาข่ายของชิป SPI Flash คำสั่งซื้อรอบแฟลชที่ยาวนานกว่าที่โฆษณา
รหัส ESP32 Arduino ของ Espressif รวมถึงการใช้งาน Arduino EEPROM ที่เขียน EEPROM ให้แฟลชเป็นหยดในที่เก็บคีย์ค่า NVS สิ่งนี้มีความหมายอย่างมีประสิทธิภาพคือการเปลี่ยนแปลงทุกครั้งแม้แต่เพียงเล็กน้อยใน "EEPROM" EEPROM ทั้งหมดของคุณจะถูกเขียนขึ้นใหม่เพื่อแฟลชสำเนาเก่าที่ทำเครื่องหมายไว้ถูกลบและหากหน้าแฟลชเติมเต็มหน้าใหม่จะถูกทำเครื่องหมายและอื่น ๆ สิ่งนี้สามารถนำไปสู่การสึกหรอของแฟลชได้มากกว่าที่คาดไว้รายละเอียดที่แน่นอนอยู่ที่นี่
หากแอปพลิเคชันของคุณรักษาพลังงานแบตเตอรี่ ESP32 แต่วางไว้ในการนอนหลับลึกมันใช้พลังงานน้อยมากจนมีประสิทธิภาพเท่าที่อายุการใช้งานแบตเตอรี่เกี่ยวข้อง คุณสามารถตื่นขึ้นมาอีกครั้งหลังจากระยะเวลาหนึ่งหมดอายุและ/หรือถ้าปุ่ม GPIO (เช่น) สูงหรือต่ำ
ห้องสมุดนี้จะเลียนแบบ EEPROM ใน RTC RAM ซึ่งอยู่ในระหว่างการนอนหลับลึก หากต้องการเรียนรู้เพิ่มเติมเกี่ยวกับการนอนหลับลึกตรวจสอบการสอนง่าย ๆ นี้หรือเอกสารของ Espressif หากคุณต้องการรายละเอียดทั้งหมด เช่นเดียวกับที่กล่าวถึงข้างต้นใช้ไลบรารีนี้เฉพาะในกรณีที่รหัสที่มีอยู่ของคุณใช้ EEPROM เพียงแค่การมีตัวแปรบางอย่างที่รอดชีวิตจากการนอนหลับลึกนั้นง่ายกว่าตรวจสอบการสอน
หากคุณเรียก EEPROM.toNVS() สำเนาของข้อมูล EEPROM ของคุณจะถูกบันทึกลงในคีย์ "EEPROM" ใน NVS Flash เหมือนเมื่อคุณจะใช้ EEPROM.h ดั้งเดิม เมื่อใดก็ตามที่ ESP32_RTC_EEPROM ตื่นขึ้นมาพร้อมกับ RTC RAM ที่ว่างเปล่า (ซึ่งตรวจพบโดยการปรากฏตัวของคำวิเศษ) มันจะพยายามดูว่ามีสำเนาขนาดที่ถูกต้องหรือไม่ ถ้าเป็นเช่นนั้นก็โหลด นอกจากนี้คุณยังสามารถเปลี่ยนกลับไปใช้การบันทึกครั้งสุดท้ายด้วยตนเองโดยโทรหา EEPROM.fromNVS()
ฟังก์ชั่น EEPROM.wasRestored() จะบอกคุณว่าเนื้อหาได้รับการกู้คืนอัตโนมัติหรือไม่จาก NVs ในรอบการบูตนี้
เพิ่มไลบรารีนี้โดยใช้ Library Manager หรือโดยการโคลนที่เก็บนี้ลงในโฟลเดอร์ Arduino Library ของคุณ
แทนที่ #include <EEPROM.h> ในรหัสของคุณโดย #include <ESP32_RTC_EEPROM.h>
ไม่มี 3 คุณทำเสร็จแล้ว
ไลบรารีนี้จะเรียกร้อง EEPROM_SIZE เสมอ (ตั้งไว้ที่ 2048, เปลี่ยนในไฟล์. h.h) ไบต์ของ RAM ของ RTC (มี 8K) คุณสามารถตั้งค่าหมายเลขที่ต่ำกว่าเมื่อโทร EEPROM.begin() แต่ตัวเลขนั้น จำกัด เฉพาะสิ่งที่รหัสของคุณสามารถอ่าน/เขียนได้ (และเท่าใดที่เขียนไปยัง NVS แฟลชทุกครั้งที่สำรองข้อมูล) ไม่ใช่ RMC ที่ใช้จริง
ไม่สามารถทำซ้ำได้บ่อยพอ: มีประโยชน์เฉพาะเมื่อใช้ร่วมกับการนอนหลับลึกของ ESP ข้อมูลใน EEPROM ปลอมนี้จะไม่รอดจาก powercycling รีเซ็ตหรือ reflashing