I2C通讯协议详解

仲裁和时钟生成:ARBITRATION AND CLOCK GENERATION
(1)同步化:Synchronization

        所有主机在SCL线上生成自己的时钟,以在I2C总线上传输消息。 数据仅在时钟的高电平期间有效。 因此,为了进行逐位仲裁过程,需要一个定义的时钟。时钟同步是通过I2C接口与SCL线的线与连接执行的,这意味着SCL线上从高到低的跳变将导致相关设备开始计算其低电平周期,并且一旦设备时钟变为 低电平,它将SCL线保持在该状态,直到达到时钟高电平状态为止。但是,如果另一个时钟仍在其LOW周期内,则此时钟从LOW到HIGH的转变可能不会改变SCL线的状态。 因此,SCL线将被具有最长低电平周期的器件保持低电平。 低电平周期较短的设备在此期间进入高电平等待状态。

当所有相关器件的低电平时间都结束后,时钟线将被释放并变为高电平。 这样,设备时钟和SCL线的状态之间就不会有差异,并且所有设备都将开始计数其高电平周期。 第一个完成其高电平周期的器件将再次将SCL线拉低。

        这样,生成了一个同步的SCL时钟,其LOW周期由时钟LOW周期最长的设备确定,其HIGH周期由时钟HIGH周期最短的设备确定。
(2)仲裁

 只有在总线空闲时,主机才可以开始传输。 两个或更多个主机可能会在启动条件的最短保持时间(tHD; STA)内产生一个启动条件,从而导致总线定义了一个启动条件。 仲裁在SDA线上进行,而SCL线在高电平上,这样的方式是:发送总线的主机在发送高电平的同时,另一个主机在发送低电平的主机将关闭其DATA输出级,因为总线的电平状态无法与其本身的电平状态相符合。

        仲裁可以持续许多位。 它的第一阶段是地址位的比较。 如果主机各自尝试寻址同一设备,则仲裁将继续比较数据位(如果它们是主机发送器),或者是确认位(如果它们是主机接收器)。 由于I2C总线上的地址和数据信息由获胜的主机确定,因此在仲裁过程中不会丢失任何信息。

        丢失仲裁的主机可以生成时钟脉冲,直到丢失仲裁的字节的末尾为止。由于Hs模式主机具有唯一的8位主机代码,因此它将始终在第一个字节中完成仲裁(请参见第13节)。如果主服务器还具有从属功能,并且在寻址阶段丢失了仲裁,则获胜的主机可能会尝试解决该问题。 因此,丢失的主机必须立即切换到其从机模式。

        图9显示了两个主机的仲裁程序。 当然,可能涉及更多(取决于连接到总线的主机数量)。 当主机生成DATA 1的内部数据电平与SDA线上的实际电平之间存在差异时,其数据输出将关闭,这意味着接下来将HIGH输出电平连接至总线。 这不会影响获胜主数据发起的数据传输。


 由于I2C总线的控制完全取决于竞争主机发送的地址或主机代码和数据,因此总线上没有中央主机,也不存在任何优先级。
如果在串行传输期间,当重复的START条件或STOP条件传输到I2C总线时,仲裁程序仍在进行中,则必须特别注意。 如果有可能发生这种情况,则所涉及的主机必须在格式帧中的同一位置发送此重复的START条件或STOP条件。 换句话说,不允许在以下情况之间进行仲裁:

·重复的START条件和一个数据位
·STOP条件和数据位
·重复的START条件和STOP条件。
从机不参与仲裁程序。

  • 4
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值