读书人

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

发布时间: 2012-03-09 16:54:57 作者: rapoo

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

读书人网 >单片机

热点推荐