6. 仲裁和时钟生成: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条件。
从机不参与仲裁程序。
(3)使用时钟同步机制作为握手:Use of the clock synchronizing mechanism as a handshake

除了在仲裁过程中使用之外,时钟同步机制还可以用于使接收器能够应对字节级或位级的快速数据传输。

在字节级别,设备可能能够以快速速率接收数据字节,但需要更多时间来存储接收到的字节或准备另一个要发送的字节。 从机可以在接收和确认一个字节后将SCL线保持为低电平,以迫使主机进入等待状态,直到从机为握手过程中的下一个字节传输做好准备(见图6)。

在位级别上,诸如微控制器之类的设备(具有或不具有I2C总线的有限硬件)可以通过延长每个时钟的LOW周期来减慢总线时钟。 因此,任何主机的速度都适合于该设备的内部工作速率。
在Hs模式下,此握手功能只能在字节级别使用。

I2C协议研读(三):仲裁和时钟同步相关推荐

  1. I2C(IIC)的仲裁、时钟同步和时钟扩展

    I2C(IIC)的仲裁.时钟同步和时钟扩展 注意,CSDN以及博客园上有大量抄袭和以讹传讹的情况,注意鉴别. 本文参考了Philip的I2C specification以及wiki pedia,并且通 ...

  2. I2C协议研读(六):快速模式、高速模式以及10位寻址

    9. 标准模式I2C总线规范的扩展:EXTENSIONS TO THE STANDARD-MODE I2C-BUS SPECIFICATION 标准I2C总线规范始于1980年,数据传输速率最高100 ...

  3. I2C协议研读(十)

    13 I / O阶段和总线线路的电气规范和时序:ELECTRICAL SPECIFICATIONS AND TIMING FOR I/O STAGES AND BUS LINES 13.1 标准和快速 ...

  4. Dynamo涉及的算法和协议——p2p架构,一致性hash容错+gossip协议获取集群状态+向量时钟同步数据...

    转自:http://www.letiantian.me/2014-06-16-dynamo-algorithm-protocol/ Dynamo是Amazon的一个分布式的键值系统,P2P架构,没有主 ...

  5. I2C协议研读(五):7位地址构成详解

    8. 7位地址 对于I2C总线的寻址,在START条件后的第一个比特往往决定了哪个从机被主机选中."general call"地址是例外,它可以寻址所有设备.当用这个地址时,理论上 ...

  6. I2C协议研读(九):十位寻址

    12. 十位寻址:10-BIT ADDRESSING 10位寻址可以和7位寻址兼容.合并.利用10位寻址时,在START条件或重复START条件之后,为第一个字节的前七个位使用保留的组合1111XXX ...

  7. I2C协议研读(四):7位地址格式

    7.  7位地址格式 数据传输服从下图所示的格式 在起始条件后,发送一个从机地址,这个地址是7比特长,后面跟着第八位的读写标志位(R/W),0表示写,1表示读.一个数据的传输往往以主机生成的停止条件结 ...

  8. I2C中的时钟同步与仲裁

    文章目录 时钟同步和仲裁 1.时钟同步 2.仲裁 时钟拉伸 系列文章 <I2C总线(1)–数据传输格式与7位地址读写>: <I2C总线(2)–10位地址读写>: <I2C ...

  9. gPTP时钟同步(时间同步)协议简介

    一.时间同步要解决的问题 不知道大家还记得军训练习齐步走的场景吗? 齐步走的动作要领你还记得吗? • 教官首先发出"齐步-–走"的命令,大家听到"齐步"二字后, ...

最新文章

  1. C#程序实现动态调用DLL的研究(转)
  2. 在C#用GDI+实现图形图像的任意变形效果(转载)
  3. vs 2010 下使用VLD工具
  4. python文本筛选html_Python使用正则表达式去除(过滤)HTML标签提取文字功能
  5. 观看TED演讲(计算机的发明和发展)感受
  6. java环境变量的配置步骤,实现原理分析
  7. Git命令行介绍和使用说明(持续更新)
  8. vue-cli 安装
  9. 快解析结合任我行crm
  10. 学编程脚本 android,Android开发之--脚本编程
  11. php自定义建站系统,PbootCMS(开源免费PHP建站系统) V2.0.9 官方版
  12. 浅谈地铁视频监控的方法与技巧
  13. maven html项目自动版本控制(时间戳) com.google.code.maven-replacer-plugin插件 前端代码自动添加版本号
  14. web3开发课程精选
  15. 中石油大学22春季《大学英语(四)#》第一阶段在线作业
  16. 哔哩哔哩(B站)品牌投放,优质潜力up主如何找?
  17. pd.read_excel
  18. 一个炫酷的opengles2.0翻页效果(安卓上opengles2.0 翻书效果附源码)
  19. Umeng App监管执法合规自查通知
  20. 微课竞赛系统的设计与实现所需工作条件_启升微课丨从软件设计开发着手准备医疗器械软件描述文档...

热门文章

  1. RTMP协议和RTSP协议的区别
  2. tomcat下载和配置(简单,详细)
  3. Visual Studio 2013安装使用方法
  4. Java语言程序设计与数据结构(基础篇)梁勇第二章书中例题
  5. RISC-V指令集架构------RV32I基础整数指令集
  6. Cadence OrCAD Capture CIS ODBC数据库文件在两台电脑上同步使用时一台电脑启动失败的问题解决图文教程
  7. 单元测试|unittest生成测试报告
  8. 终日乾乾,与时偕行——2022年度吴文俊人工智能最高成就奖:郑南宁院士
  9. Infrastructure 知识: dnf对module的处理
  10. 泰拉服务器生存模式物品修改,荒岛求生修改存档生存物品方法