铁电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;
} 试试这个库看看能不能用
测试了FRAMX库也是一样.
最后没招, 换用FM24C256, 不加延时在400KHz总线速度下, 写入成功.
页:
[1]