打印
[ZLG-ARM]

请教xcxxyc

[复制链接]
1208|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
sanxiajian|  楼主 | 2007-5-24 10:41 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
I2c, ST, TE, se, ui
   你好,你曾经贴出一篇名为"I2C的问题"的帖子,内容如下:
  void Send_N_byte(uint8 Sla,uint8 Subaddr,uint8 Data)
{
   uint8 ii=0;
     I2C0CONCLR =(1<<3);  
     I2C0CONSET = (1<<5);  
     
     I2C0DAT = Sla&0xfe;   // 和屏蔽部分对照,改成这样,第2步读到的状态位正常--18,使用屏蔽部分,第2步读到的状态位为 20,不是18
//  while (  ((I2C0STAT & 0xf8)!=0x08) && ((I2C0STAT & 0xf8)!  =x10) );    // && (ii++<0xff)  );
//     temptemp = I2C0STAT;
//     I2C0DAT = 0x34;
     I2C0CONCLR = 1<<3;
   
  while (  ((I2C0STAT & 0xf8)!=0x18) && ((I2C0STAT & 0xf8)!=0x20) );// && (ii++<0xffff)  );
// temptemp = I2C0STAT;
//  if((I2C0STAT & 0xf8)!=0x18)
//  {
     I2C0DAT = Subaddr;  
     I2C0CONCLR = 1<<3;
//   }
//   else
//   {
//      I2C0CONCLR =0x28;
//      I2C0CONSET=1<<4;
//     return ;
//    } 
  
//  ii=0;  
  while (  ((I2C0STAT & 0xf8)!=0x28) && ((I2C0STAT & 0xf8)!=0x30)  && (ii++<0xff)  );
  temptemp = I2C0STAT;   //该句测试用 状态变为08H,不懂为什么,求助
  if(((I2C0STAT & 0xf8)!=0x28))
  {
    I2C0DAT = Data;  
    I2C0CONCLR = 1<<3;
    ii=0; 
  } else {
   I2C0CONCLR =0x28;
   I2C0CONSET=1<<4;
   return ;
    }   
  while (  ((I2C0STAT & 0xf8)!=0x28)  && ((I2C0STAT & 0xf8)!=0x30) && (ii++<0xffff)  );
   temptemp = I2C0STAT;
     I2C0CONCLR =0x28;   // 清零 SI 和 STA  
     I2C0CONSET=1<<4;                                         // 1<<3 he 1<<5 
  temptemp = I2C0STAT;  
}  
你说你读到的状态码是20不是18,我和你也遇到了同样的问题,请问你是怎么解决的?

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

3

主题

4

帖子

0

粉丝