打印

请教关于I2C的问题,急!

[复制链接]
1304|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
magfoxliu|  楼主 | 2008-3-5 21:56 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
最近学习I2C协议的时候,被I2C多主机时钟同步的问题所困扰,spec上是这样说的:

所有的主机都能产生自己的时钟,利用时钟来传输I2C总线上的报文,数据只在时钟的高电平周期有效,因此需要在SCL线上有一个确定的时钟对数据进行逐位仲裁。

主机的时钟通过“线与”方式连接到I2C接口的SCL线,由于各个主机时钟之间的逻辑关系为“线与”。因此,SCL线的高到低切换会使器件开始它的低电平周期,SCL线被有最长低电平周期的器件保持低电平。此时,低电平周期短的器件会进入高电平的等待状态。时钟同步图如链接图片所示。

当所有有关的器件结束了它们的低电平周期后,时钟线被释放并变成高电平。之后,器件时钟和SCL线的状态没有差别。而且所有器件会开始它们的高电平周期,首先完成高电平周期的器件会再次将SCL线拉低,这样产生的同步SCL 时钟的低电平周期,由低电平时钟周期最长的器件决定,而高电平周期由高电平时钟周期最短的器件决定。


总结:上述工作过程保证了,在I2C传输数据时,任何主机的时钟都为高电平,因为任何主机的时钟地点平都能将时钟拉低,从而使数据失效,这也就是时钟同步的原理。


问题:这样的解释我觉得不够具体,比如说有2个主机,一个发400K的时钟,另一个发100K的时钟,那么在总线仲裁哪个主机可以抢得总线之前,通过时钟同步出来的SCL波形是怎么样的呢?麻烦各位大虾指点迷津,谢谢!


相关帖子

沙发
maychang| | 2008-3-6 14:12 | 只看该作者

绝不允许两个主机同时存在

波形就是楼主这个图。

使用特权

评论回复
板凳
huangqi412| | 2008-3-6 15:02 | 只看该作者

lz你暂时是碰不到两主机争的情况的,先学主从通信吧

等以后学多了再去讨论这个问题会容易些

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

2

帖子

0

粉丝