I2C总线的仲裁机制

在多主的通信系统中。总线上有多个节点,它们都有自己的寻址地址,可以作为从节点被别的节点访问,同时它们都可以作为主节点向其他的节点发送控制字节和传送数据。但是如果有两个或两个以上的节点都向总线上发送启动信号并开始传送数据,这样就形成了冲突。要解决这种冲突,就要进行仲裁的判决,这就是I 2C总线上的仲裁。

I2C总线上的仲裁分两部分:SCL线的同步和SDA线的仲裁。

 SCL线的同步(时钟同步)

SCL同步是由于总线具有线的逻辑功能,即只要有一个节点发送低电平时,总线上就表现为低电平。当所有的节点都发送高电平时,总线才能表现为高电平。正是由于线逻辑功能的原理,当多个节点同时发送时钟信号时,在总线上表现的是统一的时钟信号。这就是SCL的同步原理


时钟的同步

 

2 SDA仲裁

SDA线的仲裁也是建立在总线具有线逻辑功能的原理上的。节点在发送1位数据后,比较总线上所呈现的数据与自己发送的是否一致。是,继续发送;否则,退出竞争。SDA线的仲裁可以保证I2C总线系统在多个主节点同时企图控制总线时通信正常进行并且数据不丢失。总线系统通过仲裁只允许一个主节点可以继续占据总线

3 仲裁过程

         

 

两个主节点的仲裁过程

上图是以两个节点为例的仲裁过程。DATA1DATA2分别是主节点向总线所发送的数据信号,SDA为总线上所呈现的数据信号,SCL是总线上所呈现的时钟信号。当主节点12同时发送起始信号时,两个主节点都发送了高电平信号。这时总线上呈现的信号为高电平,两个主节点都检测到总线上的信号与自己发送的信号相同,继续发送数据。第2个时钟周期,2个主节点都发送低电平信号,在总线上呈现的信号为低电平,仍继续发送数据。在第3个时钟周期,主节点1发送高电平信号,而主节点2发送低电平信号。根据总线的线的逻辑功能,总线上的信号为低电平,这时主节点1检测到总线上的数据和自己所发送的数据不一样,就断开数据的输出级,转为从机接收状态。这样主节点2就赢得了总线,而且数据没有丢失,即总线的数据与主节点2所发送的数据一样,而主节点1在转为从节点后继续接收数据,同样也没有丢掉SDA线上的数据。因此在仲裁过程中数据没有丢失。

总结:SDA仲裁和SCL时钟同步处理过程没有先后关系,而是同时进行的。

  • 58
    点赞
  • 237
    收藏
    觉得还不错? 一键收藏
  • 16
    评论
I2C多主机模式下,仲裁是指不同主机之间竞争总线控制权的过程。当多个主机同时发起通信请求时,仲裁机制会决定哪个主机能够获得总线的控制权。这个过程是通过时钟同步和时钟扩展来实现的。 时钟同步是指不同主机之间通过线与的特性和I2C对SCL的持续检测来实现的。根据引用\[2\]中的描述,同步之后的时钟的低电平时间取决于低电平最长的CLK,高电平时间取决于高电平时间最短的CLK。通过这种方式,主机能够在通信过程中保持时钟同步,确保数据的准确传输。 时钟扩展是从机在通信过程中动态调整通信速率的措施。根据引用\[1\]中的描述,从机可以通过时钟扩展来延长SCL的低电平时间,从而使主机能够更好地检测到从机的响应。这样可以避免通信冲突和数据错误。 总的来说,在I2C多主机模式下,仲裁是通过时钟同步和时钟扩展来实现的。时钟同步确保不同主机之间的时钟保持一致,而时钟扩展则允许从机动态调整通信速率,以避免通信冲突和数据错误。 #### 引用[.reference_title] - *1* *2* [I2C(IIC)的仲裁、时钟同步和时钟扩展](https://blog.csdn.net/NeoZng/article/details/128486366)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [基于Verilog的I2C_MASTER模块设计](https://blog.csdn.net/LMYKcat/article/details/126134901)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论 16
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值