关于外部EEPROM的使用
学了Arduino两个月,UNO让人尴尬的内存,让有强迫症的我感觉不自在,尝试使用外部EEPROM时,却发现很多教程之间存在一个问题——仅仅适用于一种EEPROM,2K的代码,用得到32K的就不行了~经过两个月的苦心钻研,参考各位的库文件,经过自行修改和调试,写了一个兼容性较为客观的库文件(当然,大神可以无视这句话...:L留给同样喜欢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卡吧;P
最近遇到一个问题,也尝试了你的代码,,还是只能读数据,不能写入数据,我用的不是标准的eeprom,是集成在另一个芯片里的,还有就是,用了一块8051的调试板是可以往里面写入数据的,用arduino不行,不知道如何解决,求教 方便加QQ联系吗 方便加QQ联系吗 zsh516 发表于 2014-11-4 21:14
最近遇到一个问题,也尝试了你的代码,,还是只能读数据,不能写入数据,我用的不是标准的eeprom,是集成在 ...
我也不是很专业,对于你的问题,无法给出准确的解释,但可以给你提个建议:芯片的写保护引脚是否被锁了?其次更换一下读取的地址位,看读取的数据与之前写入的是否一致~
另外查看相关数据手册,看一下该芯片的通信协议~ 大神请教一个问题
能不能向 EEPROM中写入程序,让
arduino来运行?
我现在有个程序39K大小,UNO完全用不了啊! 感谢share ,我下载了,可以学习一下,
页:
[1]