当前位置: 代码迷 >> 单片机 >> 关于24C02的起始信号的有关问题
  详细解决方案

关于24C02的起始信号的有关问题

热度:75   发布时间:2016-04-28 16:07:07.0
关于24C02的起始信号的问题

void Delay(unsigned char m)//延时函数 延时m=60, 为什么要延时60微妙,低于或远大于60微妙
{
  unsigned char i;
  for(i=m; i>0; i--);
}

void I2C_Start() //启动I2C总线  
{
 
  SDA=1;
  SCL=1;

  Delay(60); 为什么要在此调用延时函数
  SDA=0;  
  Delay(60); 
  SCL=0; 最后又要 把时钟线设置低电平,为什么?
  Delay(60);
   
}

这个问题,很简单,可是就不明白,为什么, 请问能理解的高手,指点下,谢谢了。

 

------解决方案--------------------
你仔细看看I2C的时序图就懂了
------解决方案--------------------
代码是在完成时序图 延时为了提供时间读写
------解决方案--------------------
仔细看24C02的数据手册,总线时钟频率最大通常是100KHz。SCL不能翻转太快,一个周期最短10μs,高/低电平保持时间至少5μs。指令直接执行得通常比这个快,所以需要延时。

计数值为60不代表时间就是60μs,具体是多少要按编译出来的汇编指令周期算。