EEPROM (electrically erasable programmable read-only memory)是一種用戶可修改的ROM,又或者稱為閃存(Flash Memory)。它可以通過施加高于正常電壓的電壓,就可以反復擦除和重新編程(寫入)的閃存 。
EEPROM 是一種非易失性ROM,可以擦除和重新編程單個字節(jié)的數(shù)據(jù)。這就是 EEPROM芯片被稱為字節(jié)可擦除芯片的原因。EEPROM 通常用于在計算和其他電子設備中存儲少量數(shù)據(jù)。
Arduino Uno 的EEEROM大小為1024個字節(jié)。
ESP32的EEPROM大小為 512 字節(jié)。
這意味著使用 ESP32 和 EEPROM 庫可以有 512 個不同的地址,可以在每個地址位置保存一個 0 到 255 之間的值。
簡單來說EEPROM里面的數(shù)據(jù)是可以斷電保存的,重新上電數(shù)據(jù)并不會丟失。但是,閃存的一個限制是可刷寫數(shù)據(jù)的次數(shù)。你可以根據(jù)需要多次從閃存中讀取數(shù)據(jù),但大多數(shù)設備閃存的寫入次數(shù)設計為大約 100,000 到 1,000,000 次寫入操作。
在 ESP32 的閃存讀取和寫入將使用 EEPROM 庫。其實是和 Arduino EEPROM 一樣的,并沒有太大區(qū)別。
本示例,主要記錄ESP32/Arduino如何使用EEPROM,并且讀取和寫入數(shù)據(jù)。
程序提點
首先需要加載EEPROM的庫
// 加載EEPROM的庫 #include
在setup中初始化EEPROM的大小
// 定義EEPROM的大小 #define EEPROM_SIZE 1 // 這里定義1個字節(jié)的大小 void setup() { ... // 初始化EEPROM為預習定義的大小 EEPROM.begin(EEPROM_SIZE); ... }
讀取EEPROM指定位置的數(shù)據(jù)
例如,讀取第0位的數(shù)據(jù):
read_value = EEPROM.read(0); // 讀區(qū) EEPROM 第0位的數(shù)據(jù)
EEPROM刷寫指定位置的數(shù)據(jù)
例如,第0位的數(shù)據(jù)刷寫為read_value的值,最后,不要忘記EEPROM.commit();提交,運行這句代碼才能正真刷寫數(shù)據(jù)。
EEPROM.write(0, read_value); // 把 變量read_value的數(shù)值寫入第0位 EEPROM.commit(); // 需要提交才能正真地把數(shù)據(jù)寫入EEPROM
完整代碼
該程序
實現(xiàn)每一秒都會把變量read_value + 1 ,并寫入EEPROM中。
當中途斷電,重新通電也能繼續(xù)斷電前的數(shù)據(jù),而不是從0開始。
// welcome to lingshunlab.com // 加載EEPROM的庫 #include// 定義EEPROM的大小 #define EEPROM_SIZE 1 // 這里定義1個字節(jié)的大小 int read_value = 0; void setup() { Serial.begin(115200); // 初始化EEPROM為預習定義的大小 EEPROM.begin(EEPROM_SIZE); } void loop() { read_value = EEPROM.read(0); // 讀區(qū) EEPROM 第0位的數(shù)據(jù) Serial.println(read_value); read_value++; // read_value+1 ,但EEPROM只接受0~255的數(shù)值,超出的將會是255的取余值 EEPROM.write(0, read_value); // 把 變量read_value的數(shù)值寫入第0位 EEPROM.commit(); // 需要提交才能正真地把數(shù)據(jù)寫入EEPROM delay(1000); }
審核編輯:劉清
-
EEPROM
+關(guān)注
關(guān)注
9文章
1019瀏覽量
81552 -
Arduino
+關(guān)注
關(guān)注
188文章
6468瀏覽量
186923 -
ESP32
+關(guān)注
關(guān)注
18文章
969瀏覽量
17194
原文標題:ESP32 斷電數(shù)據(jù)保存 EEPROM數(shù)據(jù)讀取和寫入
文章出處:【微信號:凌順實驗室,微信公眾號:凌順實驗室】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論