I2C控制ZLG7290延时问题

[复制链接]
2864|10
 楼主| jiyiche 发表于 2009-4-3 12:48 | 显示全部楼层 |阅读模式
因为datasheet上写传输率在20k~32k之间,因此我采用写EEPROM的程序,只是改变其中的延时程序而已。
原来EEPROM中的延时程序是:
   _nop_();_nop_();_nop_();_nop()_;
我将其改为:
   for(i=0;i<=39;i++)
         _nop_();//1us*40=40us,25kHZ


为什么zlg7290有时有ack有时没,而同一个I2C总线上的EEPROM 24c02就一直可以有ack信号。
换过芯片,应该不是芯片问题。
估计是延时有问题,麻烦各位大侠看看为什么这样延时不行?谢谢了
hotpower 发表于 2009-4-3 12:50 | 显示全部楼层

晕~~~搞这么长延时干什么~~~

lpf336 发表于 2009-4-3 13:12 | 显示全部楼层

我怎么就没看到20k的下限?

 楼主| jiyiche 发表于 2009-4-3 13:17 | 显示全部楼层

延时太长也不行吗?

延时太长了吗?那大概要循环几次?
电脑圆圆 发表于 2009-4-3 16:23 | 显示全部楼层

这个时间什么算的

for(i=0;i<=39;i++)
         _nop_();//1us*40=40us,25kHZ
 楼主| jiyiche 发表于 2009-4-3 18:09 | 显示全部楼层

一句_NOP_()是1us吗?

一句_NOP_()1us的话,40句_NOP_()就40us吧。是这样吗?
 楼主| jiyiche 发表于 2009-4-4 00:06 | 显示全部楼层

高手帮帮忙

电脑圆圆 发表于 2009-4-5 20:52 | 显示全部楼层

照你这么说

i++和判断i<=39也需要几us,所以这段延迟至少是40us的3倍以上
 楼主| jiyiche 发表于 2009-4-5 21:27 | 显示全部楼层

对哦

呵呵,那如果要延时40us要怎么写呢?
zusen 发表于 2009-4-5 22:02 | 显示全部楼层

问老周那例程

大漠孤烟 发表于 2009-4-5 22:12 | 显示全部楼层

很多芯片是达不到他们标称的速率

以前用过一片LED8位驱动的,SPI接口,它就是快不了,快了干脆不干活,叫你拿它没办法,换料呗
您需要登录后才可以回帖 登录 | 注册

本版积分规则

176

主题

484

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部