极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 11391|回复: 2

铁电EEPROM FM24C512的写入问题

[复制链接]
发表于 2013-9-8 05:25:20 | 显示全部楼层 |阅读模式
本帖最后由 文少 于 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 | 显示全部楼层
试试这个库看看能不能用

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-9-23 15:05:00 | 显示全部楼层
测试了FRAMX库也是一样.
最后没招, 换用FM24C256, 不加延时在400KHz总线速度下, 写入成功.
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|联系我们|极客工坊

GMT+8, 2026-6-5 18:56 , Processed in 0.036071 second(s), 19 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表