虽然都知道8266的EEPROM的运用是很简单的事,简单到看了例程后几分钟就能用了。但是就是这么简单由于理解力的问题,以及因为简单 所有资料反而说得太笼统,容易引起使用者的误会,因此经过昨日出现的对EEPROM使用上的错误的研究,终于算是搞明白了EEPROM的运行逻辑了。发现很多人使用上的困惑究其原因还是因为对这个逻辑的不解造成的。
EEPROM的原文这里就不多说了,有兴趣的到这个链接上去看。这里只讲我的理解:
1、8266的EEPROM是模拟的,每次要使用时是要调入FLASH里的。
2、EEPROM只有一个,所有程序都可以用,在Blinker里,Blinker会用到多段,详见下图。所以我们在开发时只能用4096以内的其它段。一般我们开发的时候只会存一些标识、WIFI的帐号和密码,总共也就用到96个字节,所以还算够用。
3、和EEPROM密切相关的常用命令只有这么几个
```cpp
EEPROM.begin(size)
EEPROM.write(addr,val)
EEPROM.read(addr)
EEPROM.end()
4、内存块每次用EEPROM.begin(size)
读入缓存里,读入的大小由size决定,该数值范围为(4-4096),每次读入的这个EEPROM块都是从ROM的0地址开始的。比如,你的size是1024字节,那么读入的EEROM的块地址是从0-1023这个块。所以如果就你自已用时,你爱读多少就读多少,每次都从0地址开始用。
5、如果同时有多个程序用这个内存块,那就要注意了。比如Blinker提示,占用了0-1269 和 1536-2431。这样,我们在使用时要避开。如下
EEPROM.begin(4000);
EEPROM.write(1280,val);
EEPROM.end();
这里的4000,指的是从0开始读到4000地址位的ROM进缓存。1280指从0开始到1280地址位写入,最后end()把缓存内容提交,真正写到物理介质中。