关于外部EEPROM的使用

学了Arduino两个月,UNO让人尴尬的内存,让有强迫症的我感觉不自在,尝试使用外部EEPROM时,却发现很多教程之间存在一个问题——仅仅适用于一种EEPROM,2K的代码,用得到32K的就不行了~经过两个月的苦心钻研,参考各位的库文件,经过自行修改和调试,写了一个兼容性较为客观的库文件(当然,大神可以无视这句话...留给同样喜欢Arduino的入门新手参考)#include <AT24CXXX.h>#include <Wire.h>AT24CXXX ROM_512;void setup(){Wire.begin(); //启动I2C通信Serial.begin(9600);ROM_512.Memory_Size(512);//512K内部地址:0x0000——0xffff//32K内部地址: 0x0000——0x0fff//2K内部地址: 0x0000——0x00ff}void loop(){byte a0 = 0xff;byte a1 = 0xff;//WriteByte(硬件地址位,内部地址位,一个字节数据)ROM_512.WriteByte(0x50 ,0x0000 ,0xaa);ROM_512.WriteByte(0x50 ,0x00ff ,0xbb);//Readbyte(硬件地址位,内部地址位)a0 = ROM_512.ReadByte(0x50 ,0x0000);a1 = ROM_512.ReadByte(0x50 ,0x00ff);Serial.print("a0=");delay(10);Serial.println( a0,HEX );delay(1000);Serial.print("a1=");delay(10);Serial.println( a1,HEX );delay(1000);}复制代码这个是最简单的一个,使用时要注意EEPROM的内存容量(Memory_Size),自己百度对应的datasheet,查看AT24CXXX系列EEPROM的内部地址最高为多少,因为超过了,它会自动覆盖,从0x0000开始重写~目前尝试过AT24C02,AT24C32,AT24C512的EEPROM,如果你们使用过程中遇到问题请留言,大家交流一下
PS:还是别用512K以上的EEPROM,512都解决不了,还是直接上SD卡吧

标签: Arduino教程