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

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

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 4697|回复: 13

[求助] 关于I2C 从机的设计问题

[复制链接]
发表于 2015-1-26 15:29:32 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 Felix_ZYF 于 2015-1-26 15:54 编辑

设计中使用系统内部的较快时钟去采样SCL和SDA(4倍频以上),通过打两拍得到稳定的SCL_in和SDA_in。
在收数据时,通过检测SCL_in的上升沿采SDA_in的值。
但是问题来了,从机需要发出响应,而且响应必须在SCL低电平时改变SDA的值,因为SCL_in被打两拍了,如果通过检测SCL_in的下降沿时间点去驱动SDA,就有可能出现SDA改变的时刻为下一个SCL高电平,就违反协议要求了。

请问各位大侠,这个问题该怎么解决啊?谢谢了
发表于 2015-1-26 17:35:36 | 显示全部楼层
你把可能变成不可能。
 楼主| 发表于 2015-1-26 18:02:59 | 显示全部楼层
回复 2# wgej1987


   额 大侠 请指教。。
发表于 2015-1-26 18:19:23 | 显示全部楼层
见链接  http://bbs.eetop.cn/thread-475852-1-1.html
七楼代码
 楼主| 发表于 2015-1-26 19:06:20 | 显示全部楼层
回复 4# ddxx


   这个是i2c master的代码。。   Master控制着SCL,所以master可以准确的知道SCL低电平,不存在这个问题啊。
   Slave需要判断SCL低电平的时间点。。
发表于 2015-1-26 20:52:01 | 显示全部楼层
感觉好诡异。。。你确定不会有sda总线控制出现冲突?
增加采样频率,低电平至少三拍,第一拍检测到低电平,第二拍输出sda数据,第三拍保证时序(离scl高电平有一定时间)。
或者在sda输出端使用Latch,使能用scl下降沿检测的标志。
 楼主| 发表于 2015-1-26 21:42:51 | 显示全部楼层
回复 6# cutfor


  举个例子 主机寻址从机,发完8bit的地址+W/R后,主机会在第8个SCL下降沿释放SDA,此时,从机在SCL低电平将SDA拉低,并保持至下一个SCL下降沿后,从机释放SDA。这个过程可以实现对主机ack响应。
  如果用内部时钟检测SCL下降沿,那么至少需要打两拍得到SCL_ff,再打一拍得到SCL_fff,通过这两个信号来确定下降沿。
  一旦时钟频率相对与总线频率不是那么高,假设4倍,那么系统检测到的这个下降沿时间点就可能已经处在SCL的高电平时期了。
  此时已经错过SCL低电平周期,就不能驱动SDA发出ACK了。

  不知道这样描述是否正确,求指点。。
发表于 2015-1-26 23:44:49 | 显示全部楼层
按照协议为准,要不会出错
发表于 2015-1-27 08:41:21 | 显示全部楼层
回复 1# Felix_ZYF


    我觉得你可以将SCL与SDA用快速的时钟同时采进来,不需要延迟两拍。再输出应答信号。
发表于 2015-1-27 09:55:56 | 显示全部楼层
你把采样始终弄4倍以上呗
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

X

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

GMT+8, 2025-6-24 21:51 , Processed in 0.029165 second(s), 10 queries , Gzip On, MemCached On.

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