导航: 老古网老古论坛XMOS公共讨论区XMOS开源项目区单片机程序设计嵌入式系统广告区域
→[求助]AT24C256页读程序不行,读出来的数据只有第一个[oyzhg]

 *第14036篇: [求助]AT24C256页读程序不行,读出来的数据只有第一个字节是正确的,请教DX指点

  
楼 主:oyzhg 2003年7月3日16:06
 [求助]AT24C256页读程序不行,读出来的数据只有第一个字节是正确的,请教DX指点
//下面的调用方式都试过了
//ReadIIC_24CXX(0x00,0xa0,kk,16);
//ReadIIC_24CXX(0x00,0xa0,kk,64);

unsigned char ReadIIC_24CXX(uint address,uchar ID_A1A0,uchar *p,uchar lenth)

 unsigned char address_in_page; //page
 unsigned char ddata=0;
 unsigned char i=8;
 
 address_in_page=(unsigned char)(address);

 I2CStart();
// write_8bit(0xa0 | page); //
 write_8bit(ID_A1A0);
 ACK();

 write_8bit(address>  >  8);
 ACK();
 //Èç¹ûÊÇ24C01£­24C16£¬µØÖ·ÎªÒ»×Ö½Ú;
 write_8bit(address_in_page);
 ACK(); //ÒÔÉÏÊÇÒ»¸ö¡°ÑÆ¡±Ð´²Ù×÷£¬Ï൱ÓÚÉèÖõ±Ç°µØÖ·

// SCL=1;
// SDA=0;_nop_();
// SDA=1; //STOPÍ£Ö¹Ðźſɼӿɲ»¼Ó

// delay();ÑÓʱ¿É¼Ó¿É²»¼Ó

 I2CStart();
// write_8bit(0xa1); //д´ÓµØÖ·£¬ÖÃΪ¶Áģʽ
 ID_A1A0 = ID_A1A0 + 1;
 write_8bit(ID_A1A0);
 ACK();

 for(;lenth>  0;lenth--)
 {
  while (i--)
  {
   SDA=1;
   ddata  <  <=1;
   SCL=0;_nop_();
   SCL=1;
   if (SDA) ddata|=0x01;
  }
  if(lenth>  1) SendAck();
  *p = ddata;
  p++;
  i = 8;

 }

 SendNotAck();
 I2CStop();

 delay();
 return ddata;
}

  
2楼:ybs777 2003年7月3日17:37
 没看程序,你能确定你写进去的都是什么吗?
如果能确定,就试试单个字节读。按说单个字节读如果正确的话,那么页读应当是没有问题的,我就是这样做的。

>>>>>>对该主题发表你的看法

本主题贴数2,分页: [第1页]


[上一篇主题]:[求助]max1112

[下一篇主题]:[求助]