文少 发表于 2013-9-8 05:25:20

铁电EEPROM FM24C512的写入问题

本帖最后由 文少 于 2013-9-8 13:13 编辑

铁电EEPROM最大优势是写入不用延时,用在实时性强的机器上面很方便。
同样的代码用在24C64上完全正常,套用在FM24C512上,并且把原来的写入延时10ms去掉,发现并不能写入数据,必须要加最少2ms的延时,这就让人郁闷了。
尝试更改SCL和SDA的上拉电阻以提高I2C总线速度,也没改善,不知何解?

以下是相关说明的代码

#include <Wire.h>    //库文件
int addr=0;               //EEPROM地址

void setup(){
   Wire.begin();
}

void loop(){
   ....
   write_byte(0x50,addr,1);//地址0写入1   
   delay(2);
   ...
}

//-------------字节写---------------
void write_byte( int d_add, unsigned int e_add, byte data ) {
int rdata = data;
Wire.beginTransmission(d_add);
Wire.send((int)(e_add >> 8));   // MSB
Wire.send((int)(e_add & 0xFF)); // LSB
Wire.send(rdata);
Wire.endTransmission();
}

//-------------字节读-----------------
byte read_byte( int d_add, unsigned int e_add ) {
byte rdata = 0xFF;
Wire.beginTransmission(d_add);
Wire.send((int)(e_add >> 8));   // MSB
Wire.send((int)(e_add & 0xFF)); // LSB
Wire.endTransmission();
Wire.requestFrom(d_add,1);
if (Wire.available()) rdata = Wire.receive();
return rdata;
}

弘毅 发表于 2013-9-8 21:37:57

试试这个库看看能不能用

文少 发表于 2013-9-23 15:05:00

测试了FRAMX库也是一样.
最后没招, 换用FM24C256, 不加延时在400KHz总线速度下, 写入成功.
页: [1]
查看完整版本: 铁电EEPROM FM24C512的写入问题