加饭 发表于 2014-10-21 11:31:25

关于外部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

zsh516 发表于 2014-11-4 21:14:24

最近遇到一个问题,也尝试了你的代码,,还是只能读数据,不能写入数据,我用的不是标准的eeprom,是集成在另一个芯片里的,还有就是,用了一块8051的调试板是可以往里面写入数据的,用arduino不行,不知道如何解决,求教

zsh516 发表于 2014-11-5 09:12:53

方便加QQ联系吗

zsh516 发表于 2014-11-5 09:12:53

方便加QQ联系吗

加饭 发表于 2014-11-7 13:02:46

zsh516 发表于 2014-11-4 21:14
最近遇到一个问题,也尝试了你的代码,,还是只能读数据,不能写入数据,我用的不是标准的eeprom,是集成在 ...

我也不是很专业,对于你的问题,无法给出准确的解释,但可以给你提个建议:芯片的写保护引脚是否被锁了?其次更换一下读取的地址位,看读取的数据与之前写入的是否一致~
另外查看相关数据手册,看一下该芯片的通信协议~

小A 发表于 2014-11-18 13:30:00

大神请教一个问题
能不能向 EEPROM中写入程序,让
arduino来运行?
我现在有个程序39K大小,UNO完全用不了啊!

luke02 发表于 2023-4-18 08:49:08

感谢share ,我下载了,可以学习一下,
页: [1]
查看完整版本: 关于外部EEPROM的使用