当前位置: 代码迷 >> 单片机 >> 51单片机跟24C02通讯延时到底要多少啊
  详细解决方案

51单片机跟24C02通讯延时到底要多少啊

热度:74   发布时间:2016-04-28 14:58:32.0
51单片机和24C02通讯延时到底要多少啊?
手册上写的Write Cycle Time要10ms,但是我发现只要大概900us,最多1ms左右就够了,我试了不同的值不同的地址发现都没问题啊。
另外其他的比如Start Hold Time,Clock Pulse Width Low什么的都是4~5us左右,但是我发现不延迟也没问题?
比如CLR SCL以后马上就能SETB SCL,这个不需要延迟吗?



------解决方案--------------------
这个和I2C时序本身没有关系,说的是EEPROM擦写的时间。
------解决方案--------------------
Write Cycle Time这个指标一般是指内部写一页所需的时间,你写完满满一页后要等一会
------解决方案--------------------

手册给的是保证你没有问题的条件,相对比较保守。

如果你写的代码是要交付用户使用的,最好按手册来。如果是自己玩玩,那就没关系了。
------解决方案--------------------
比如CLR SCL以后马上就能SETB SCL,这个不需要延迟吗?
-------
有个指令周期的延迟

------解决方案--------------------
stop与start/restart的时间叫tBuf,这个是I2C规定的。

EEPROM的擦写时间叫tWR,这个是EEPROM厂商给出的。 
------解决方案--------------------
Min是告诉你至少要有这么长的时间,低于了肯定不行;
Max是告诉你,Min到Max之内都可以,但是超过了的话,极有可能操作已经失败。(写超时?)
------解决方案--------------------
t(WR) 参数是MAX,也就是最多需要10MS,不代表次次需要10MS,有时候可能需要1MS,有时候缺可能10MS,“CLR SCL以后马上就能SETB SCL“,这个时间是t(LOW)1.2us,这说明你51达不到这个速度,8M晶振算最短指令执行也需要 1/8000000*12=0.0000015s=1.5us
------解决方案--------------------
如果不考虑多主机可多从机的情况(通常我们只有一主一从), 延时可以缩短. 不过基本时序要保证.