今天我們來玩兒EEPROM。
EEPROM概述
ESP32內部沒有專門的EEPROM,但是我們可以通過FLASH模擬EEPROM,FLASH與EEPROM也是非常相似的,都是非易失性存儲器,使用EEPROM,我們就可以在不使用文件系統的情況下,來保存一些數據
,可以實現一些更加復雜的功能。
例如,我們可以做到以下功能:
- 保存變量的最終狀態
- 保存我們的設置
- 保存設備被激活的次數
- 永久保存其它任何類型的數據
ESP32在Arduino是使用FLASH開辟的一塊存儲區域,默認的對象存儲大小為4096個字節。
硬件
本實驗我們直接用核心板就可以,不添加其它外設了。
軟件
EEPROM初始化
代碼調用#include 后,已經默認定義了一個EEPROM對象,我們使用began方法初始化一下,參數為要操作的字節大小,最大為4096字節,所以這里的參數范圍為0-4095。EEPROM的操作以字為單位,size最好設置為4的倍數。
EEPROM.begin(size);
寫
將數據寫入EEPROM,使用EEPROM.write();第一個參數為地址,第二個參數為保存的值。
EEPROM.write(address, value);
讀
從EEPROM上讀取一個字節,使用EEPROM.read();參數為讀取的地址。
EEPROM.read(address);
更新生效
通過EEPROM.write()寫入數據后,之后需要調用EEPROM.commit()使更改生效,寫入完成。
EEPROM.commit();
EEPROM還有其它函數,都在庫文件中,大家可以在下面兩個文件中找到相關源碼。
EEPROM.h
EEPROM.c
完整程序
這里我們用一個例子來演示一下,我們在整片EEPROM上寫入數據,從0-255,反復循環寫入,然后再讀取出來。
寫程序
/*
* Created on: 20220128
* Author: 公眾號:跳動的字節
* Function 09 EEPROM寫與讀
* Version: V1.0
*
* ,%%%%%%%%,
* ,%%/%%%%/%%
* ,%%%c''''J/%%%
* %. %%%%/ o o %%%
* `%%. %%%% |%%%
* `%% `%%%%(__Y__)%%'
* // ;%%%%`-/%%%'
* (( / `%%%%%%%'
* .' |
* / | |
* / ) | |
* /_ | |__
* (____________))))))) 攻城獅
*
*/
#include < EEPROM.h >
void setup()
{
Serial.begin(115200);
Serial.println("");
EEPROM.begin(4096); //申請4096個字節的EEPROM存儲空間
//寫數據
Serial.println("write begin");
for(int addr = 0; addr< 4096; addr++)
{
int data = addr%256; //EEPROM寫入的數據時以字節為單位的
EEPROM.write(addr, data); //寫入數據
}
EEPROM.commit(); //保存更改的數據
Serial.println("write done");
//讀數據
Serial.println("read begin");
for(int addr = 0; addr< 4096; addr++)
{
int data = EEPROM.read(addr); //讀數據
Serial.print(data);
Serial.print(" ");
delay(2);
if((addr+1)%256 == 0) //每行顯示256個數據
{
Serial.println("");
}
}
Serial.println("read done");
}
void loop()
{
}
實驗效果:
EEPROM的使用很簡單,但這里有一點需要注意,在初始化EEPROM.begin(size)的時候,參數size下一次必須大于等于上一次,否則會有用一些出錯,正常情況下,我們就一直用最大值4096即可。
后面,我們會介紹更加高級的方法實現數據的保存,使用Preferences庫來保存鍵值對的方式,還有文件系統的方式,大家到時候再深入了解。
感謝大家,關于ESP32的學習,希望大家Enjoy!
-
FlaSh
+關注
關注
10文章
1633瀏覽量
147943 -
存儲器
+關注
關注
38文章
7484瀏覽量
163765 -
EEPROM
+關注
關注
9文章
1019瀏覽量
81561 -
文件系統
+關注
關注
0文章
284瀏覽量
19904 -
ESP32
+關注
關注
18文章
971瀏覽量
17203
發布評論請先 登錄
相關推薦
評論