wemos D1 arduino物聯網開發板應用筆記3-操做EEPROM

前言

本節咱們學習使用WeMos D1操做EEPROM,使用EEPROM咱們能夠保存須要掉電保存的信息,如配網信息,設備加密信息,產品認證信息等。git

1、基礎知識

1.EEPROM簡介

EEPROM (Electrically Erasable Programmable Read-Only Memory),電可擦可編程只讀存儲器--一種掉電後數據不丟失的存儲芯片。簡而言之,若是但願保存內容,而且從新上電後讀取上次保存的數據,推薦使用EEPROM,Arduino有EEPROM的接口函數可使用。github

ESP8266的EEPROM操做其實是使用Flash模擬EEPROM,不過請放心,存在Flash中也是能夠完成掉電保存的,編譯出來的固件都是燒錄到Flash中的,因此是不會丟失的哈。編程

2.函數說明

WeMos D1函數說明ide

wemos D1 arduino物聯網開發板應用筆記3-操做EEPROM

EPS8266的EEPROM大小爲4K,所以EEPROM.begin(size)中size最大是4096,和標準的Arduino相比,WeMos D1每次使用都須要使用EEPROM.begin聲明要操做的空間。函數

調用EEPROM.write實際上不會真正的把數據寫入Flash,而是寫到了內存中,須要調用EEPROM.commit或者EEPROM.end才能夠把數據真正寫道Flash中。oop

2、實例

實例程序實現每次從3000地址開始讀取數據,而後從0開始依次寫入,直到寫入地址到達3025,調用commit()函數保存內容,下次從新上電數據仍在。學習

#include <Arduino.h>
#include <EEPROM.h>

int address = 3000;
byte value;
byte value_write = 0;
int len = 4096;

void setup() {
   // put your setup code here, to run once:
   Serial.begin(9600);

   EEPROM.begin(len);
}

void loop() {
  // put your main code here, to run repeatedly:

   value = EEPROM.read(address);
   Serial.print(address);
   Serial.print("\t");
   Serial.print(value, DEC);
   Serial.println();

   EEPROM.write(address, value_write);
   value_write ++;

   if (address == 3025)
   {
      EEPROM.commit();
   }
   address = address + 1;
   if (address == 4096)
      address = 0;

   delay(2000);
}

上述程序中,首先使用 EEPROM.begin(len)聲明要操做的EEPROM長度,其實是用來申請內存空間,須要調用EEPROM.commit()才能將數據保存到Flash。ui

3、運行

wemos D1 arduino物聯網開發板應用筆記3-操做EEPROM

從圖中可知,設備首次讀取3000地址處內容爲0xFF,重啓設備後,數據變爲了咱們從0開始依次寫入的數據。加密

4、結語

1.總結:

本節完,實際操做過程當中須要注意的地方有以下幾點:code

(1) WeMos D1,支持操做4K數據

注意,實際操做地址爲0-4095。

(2) 保存數據

注意write()只是將數據寫的內存,如須要寫入硬件,須要調用commit()函數。

(3) 擦除數據

擦除數據實際上是向地址中寫入0。

2.後記:

如您在使用過程當中有任何問題,請加QQ羣進一步交流,也能夠github提Issue。

QQ交流羣:906015840 (備註:物聯網項目交流)

github倉庫地址:https://github.com/solitary-sand/wemos/

一葉孤沙出品:一沙一世界,一葉一菩提

wemos D1 arduino物聯網開發板應用筆記3-操做EEPROM

相關文章
相關標籤/搜索