首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 嵌入开发 > 单片机 >

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

2012-03-09 
关于24C02的起始信号的问题void Delay(unsigned char m)//延时函数 延时m60, 为什么要延时60微妙,低于或

关于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,具体是多少要按编译出来的汇编指令周期算。

热点排行