请教关于I2C的问题,急!

[复制链接]
1762|2
 楼主| magfoxliu 发表于 2008-3-5 21:56 | 显示全部楼层 |阅读模式
最近学习I2C协议的时候,被I2C多主机时钟同步的问题所困扰,spec上是这样说的:<br /><br />所有的主机都能产生自己的时钟,利用时钟来传输I2C总线上的报文,数据只在时钟的高电平周期有效,因此需要在SCL线上有一个确定的时钟对数据进行逐位仲裁。<br /><br />主机的时钟通过“线与”方式连接到I2C接口的SCL线,由于各个主机时钟之间的逻辑关系为“线与”。因此,SCL线的高到低切换会使器件开始它的低电平周期,SCL线被有最长低电平周期的器件保持低电平。此时,低电平周期短的器件会进入高电平的等待状态。时钟同步图如链接图片所示。<br /><br />当所有有关的器件结束了它们的低电平周期后,时钟线被释放并变成高电平。之后,器件时钟和SCL线的状态没有差别。而且所有器件会开始它们的高电平周期,首先完成高电平周期的器件会再次将SCL线拉低,这样产生的同步SCL&nbsp;时钟的低电平周期,由低电平时钟周期最长的器件决定,而高电平周期由高电平时钟周期最短的器件决定。<br /><br /><br />总结:上述工作过程保证了,在I2C传输数据时,任何主机的时钟都为高电平,因为任何主机的时钟地点平都能将时钟拉低,从而使数据失效,这也就是时钟同步的原理。<br /><br /><br />问题:这样的解释我觉得不够具体,比如说有2个主机,一个发400K的时钟,另一个发100K的时钟,那么在总线仲裁哪个主机可以抢得总线之前,通过时钟同步出来的SCL波形是怎么样的呢?麻烦各位大虾指点迷津,谢谢!<br /><br /><br />
maychang 发表于 2008-3-6 14:12 | 显示全部楼层

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

波形就是楼主这个图。<br />
huangqi412 发表于 2008-3-6 15:02 | 显示全部楼层

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

等以后学多了再去讨论这个问题会容易些
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

2

帖子

0

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