breaknormal
驱动牛犊
驱动牛犊
  • 注册日期2009-09-15
  • 最后登录2010-03-02
  • 粉丝0
  • 关注0
  • 积分8分
  • 威望51点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:2076回复:1

CY7C68013读写24LC64不成功

楼主#
更多 发布于:2010-02-23 14:10
各位,我要读写24LC64,自己写的读方法没用CYPRESS给的函数库,因为EZUSB_I2C()只能读单字节地址的EEPROM,但用自己写的方法读出来的数全是D1,先给出自己写的读代码:
BYTE ReadEEPROM(eepromaddr)  
{
  BYTE readeeprombyte;
 // unsigned char address;
  BYTE hiaddr,loaddr;
  hiaddr=eepromaddr>>8;  //地址高位
  loaddr=eepromaddr&0x00ff;   //地址低位

  while(I2CS &bmSTOP);
  I2CS = 0x80;  //START
  I2DAT = 0xA2;    //设备从地址+写
  while((I2CS & 0x01)!= 0x01);  
  I2DAT = 0x00;  //I2DAT = hiaddr;
  while((I2CS & 0x01)!= 0x01);
  I2DAT = 0x00;  //I2DAT = loaddr;
  while((I2CS & 0x01)!= 0x01);
  I2CS = 0x80;  //START
  I2DAT = 0xA3;  //设备从地址+读
  while((I2CS & 0x01)!= 0x01);
  readeeprombyte = I2DAT;
  while((I2CS & 0x01)!= 0x01);  //DONE
  I2CS = 0x20;  //在读到最后一个字节之前,设置LASTRD=1
  readeeprombyte= I2DAT;
  while((I2CS & 0x01)!= 0x01);
  I2CS = 0x40;  //STOP
  //readeeprombyte = I2DAT;
  return (readeeprombyte);
}

请各位指出错误!谢了先。。。。。。。
frozenheart
驱动牛犊
驱动牛犊
  • 注册日期2009-02-08
  • 最后登录2010-07-05
  • 粉丝0
  • 关注0
  • 积分1分
  • 威望11点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2010-07-05 15:07
24LC64的器件地址不是0x50嘛,为什么你写的是0xA2?
游客

返回顶部