在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 9358|回复: 21

[求助] I2C从机响应的问题

[复制链接]
发表于 2011-8-31 19:48:28 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
我想请教下,I2C协议中的通信是属于半双工通信吧?主机发送地址和数据后都需要等待从机响应。在第9个时钟时,从机发送响应在SDA上,那在第9个时钟主机对SDA是做何处理?主机还要判断从机是否响应,那只能在第10个时钟时才能去判断吧?我现在对这个从机响应和主机检测响应的思路有点乱(注,I2C协议中文字说明,我能看懂,就是在实际实现时,就不知道咋处理了),请哪位高手讲解下。
发表于 2011-8-31 19:54:46 | 显示全部楼层
第9个时钟slave发出响应至sda,master在第9个时钟判断slave发出的响应
 楼主| 发表于 2011-8-31 20:16:16 | 显示全部楼层
回复 2# puyuwei


    第9个时钟从机才发送,主机在第9个时钟能判断吗?而且你说的端口是用的三态端口(sdi,sdo,)还是就一根inout 的sda?
发表于 2011-8-31 22:42:23 | 显示全部楼层
主机在第9个时钟可以判断,而且必须在这个时钟对从机的响应做判断。
对于芯片外部的端口来说 sda 是inout的。对于芯片内部的逻辑来说分开为 sda_in 和 sda_out
发表于 2011-9-1 10:36:45 | 显示全部楼层
下降沿数据变化,上升沿数据采样和判断,没问题的
 楼主| 发表于 2011-9-1 16:23:36 | 显示全部楼层
回复 4# puyuwei


    我能不能这样理解:在主机芯片内部,sda_in是从从机发过来的响应,sda_out是主机发出的数据。在第9个时钟时,从机响应,sda_in就为0,(其它时候一直保持为1)。同时在第9个时钟时,主机发送的sda_out线是不是就该置为1呢?
 楼主| 发表于 2011-9-1 16:40:26 | 显示全部楼层
回复 5# falloutmx


    你说的那个原理我理解,就是在SCL上升沿时去判断SDA是0还是1.但具体实现时还是不知道咋处理。是不是在主机中要去检测SCL的上升沿?但是SCL是在主机中一步一步产生的,咋个检测呢?能否说得详细些?
发表于 2011-9-1 18:49:02 | 显示全部楼层
回复 6# 刺猬精灵


    差不多吧....第9个时钟读取sda_in 上状态,看是否正确响应;主机读从机响应的时候主机的sda_out处于无效状态(1);
还有一点就是要好好理解一下inout端口的三态结构。
 楼主| 发表于 2011-9-1 20:05:02 | 显示全部楼层
回复 8# puyuwei


    嗯,我刚查了下三态门的使用。看到这样说法“在内部模块最好不要出现inout,如果确实需要,那么用两个port实现,到顶层的时候再用三态实现。理由是:在非顶层模块用双向口的话,该双向口必然有它的上层跟它相连。既然是双向口,则上层至少有一个输入口和一个输出口联到该双向口上,则发生两个内部输出单元连接到一起的情况出现,这样在综合时往往会出错。”
    上面这段话里说只有在顶层的时候用态实现,那对于I2C的主机和从机来说,顶层是分别指主机的顶层,和从机的顶层,还是指主机和从机一起的顶层?
发表于 2011-9-1 21:44:40 | 显示全部楼层
i2c的响应处理是:master产生时钟,sda发送数据,当发完第8个时钟沿的数据时,将该inout端口置为高阻('z')状态,然后再第9个时钟沿检测slave是不是在sda置高电平,如果是,就表示收到响应了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /2 下一条

X

小黑屋| 手机版| 关于我们| 联系我们| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2025-6-21 09:50 , Processed in 0.035881 second(s), 10 queries , Gzip On, MemCached On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表