目的
EEPROM可以在不使用文件和文件系统的情况下用来固化一些数据,常见的比如用来保存SSID或是Password,保存用户名及密码,保存用户设置等数据,这样就可以不用每次都通过烧写程序来改变系统运行时的初值了。可以实现更复杂的应用。
使用说明
其实EEPROM使用非常简单的,也没必要专门开个帖子写,看看官方说明和例程分分钟就会了。
EEPROM主要几点如下:
- Arduino for esp8266 中用的EEPROM其实是从外部flash中存储器最末尾开辟的4096字节空间,结合官方说明,我们每次操作写入的数据在4~4096字节之间;
- 根据上一条,EEPROM可操作的地址为0~4095;
- 调用
#include <EEPROM.h>来使用EEPROM; - 使用EEPROM时,首先调用
EEPROM.begin(size),size为需要读写的数据字节数,取值4~4096; - 使用
EEPROM.write(addr,data)来写数据,参数分别为地址&数据,写数据后需要通过EEPROM.commit()或EEPROM.end()将数据保存到EEPROM; - 使用
EEPROM.read(addr)来读数据;
更多内容可以参考官方例程:https://github.com/esp8266/Arduino/tree/master/libraries/EEPROM
程序测试
写数据
/*
该代码向EEPROM写入4096字节数据
*/
#include <EEPROM.h>
int addr = 0; //EEPROM数据地址
void setup()
{
Serial.begin(9600);
Serial.println("");
Serial.println("Start write");
EEPROM.begin(4096); //申请操作4096字节数据
for(addr = 0; addr<4096; addr++)
{
int data = addr;
EEPROM.write(addr, addr); //写数据
}
EEPROM.commit(); //保存更改的数据
Serial.println("End write");
}
void loop()
{
}
读数据
/*
该代码从EEPROM读取4096字节数据
*/
#include <EEPROM.h>
int addr = 0;
void setup()
{
Serial.begin(9600);
Serial.println("");
Serial.println("Start read");
EEPROM.begin(4096); //申请操作4096字节数据
for(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("End read");
}
void loop()
{
}
读取测试结果
总结
EEPROM的使用非常简单,没有什么太多可以说的。