【问】有网友问关于I2C总线的仲裁问题:

The I2C-bus specification的第13页有这样的话:

In other words, arbitration isn’t allowed between:

* A repeated START condition and a data bit

* A STOP condition and a data bit

* A repeated START condition and a STOP condition.

Slaves are not involved in the arbitration procedure.

我现在遇到了一个问题,假设说有两台主机A和B同时发送数据给C,但是A发送一个字节的数据,B发送两个字节的数据。并且他们第一个字节的数据都相同。即A发送的是" start+C地址+字节1+stop",B发送的数据是"start+C地址+字节1+字节2+stop".由于第一个字节相同所以在第一个字节传送完后仲裁过程没有结束。这就遇到了规范上所讲到的一个停止位和一个数据位的情况,那么是不应该发生仲裁的。如果说B发送的第二个字节的第一位是1,那么“线与”后SCL和SDA线实际上就表示了stop信号,如果不仲裁则B继续发数据,而此前C已经收到了一个停止信号。C停止了,那么B所发送的第二个字节的数据根本就没有成功。有那位大虾可以帮我解释一下,应该怎么办。多谢了。另外如果两个主机,一个发送停止条件,一个发送重复起始条件,如果不仲裁,总的效果就是产生一个低电平的数据,那么从机就会把这个数据接收过去,但事实上这并不是两个主机期望发送的数据,I2C总线的时序就乱了。

【答】I2C规范的这段话的含义可以译为:

也就是说,仲裁不能在下面情况之间进行:

*重复起始条件和数据位。

*停止条件和数据位。

*重复起始条件和停止条件。

从机不被卷入仲裁过程。

翻阅《I2C总线规范》,对于I2C总线的仲裁有比较详细地论述。个人认为需要明白其的先决条件:

1、I2C总线的控制只由地址或主机码以及竞争主机发送的数据决定,没有中央主机,总线也没有任何定制的优先权。

2、主机只能在总线空闲的时侯启动传送。两个或多个主机可能在起始条件的最小持续时间tHD;STA内产生一个起始条件,结果在总线上产生一个规定的起始条件。

3、当SCL线是高电平时,仲裁在SDA线发生;这样,在其他主机发送低电平时,发送高电平的主机将断开它的数据输出级,因为总线上的电平与它自己的电平不相同。

然后,进一步获得其的判定条件:

1、仲裁可以持续多位。首先是比较地址位。如果每个主机都试图寻址同一的器件,仲裁会继续比较数据位(假设主机是发送器),或者比较响应位(假设主机是接收器)。

2、I2C总线的地址和数据信息由赢得仲裁的主机决定,在仲裁过程中不会丢失信息。丢失仲裁的主机可以产生时钟脉冲直到丢失仲裁的该字节末尾。

3、在串行传输过程中时,一旦有重复的起始条件或停止条件发送到I2C总线的时侯,仲裁过程仍在进行。如果可能产生这样的情况,有关的主机必须在帧格式相同位置发送这个重复起始条件或停止条件,也就是开始那段话的含义。

4、此外,如果主机也结合了从机功能,而且在寻址阶段丢失仲裁,它很可能就是赢得仲裁的主机在寻址的器件。那么,丢失仲裁的主机必须立即切换到它的从机模式

iic总线从机仲裁_I2C总线的仲裁问题相关推荐

  1. iic总线从机仲裁_IIC协议底层原理超详细解析!示波器,逻辑分析仪多图预警

    1. 协议基础 1.1.     协议简介 IIC-BUS(Inter-IntegratedCircuit Bus)最早是由PHilip半导体(现在被NXP收购)于1982年开发.主要是用来方便微控制 ...

  2. iic总线从机仲裁_IIC 总线

    IIC总线简介 I 2C总线是一种用于IC器件之间连接的二线制总线.它通过SDA(串行数据线)及SCL(串行时钟线)两根线在连到总线上的器件之间传送数据,并根据地址识别每个器件:不管是单片机.存储器. ...

  3. SPI、UART、RS232、RS485、IIC 5种嵌入式经典通信总线协议

    文章目录 一.UART 1.通信基础--并行和串行 并行通信 串行通信 2.通信基础--单工和双工 3.通信基础--比特率 4.通讯基础--异步和同步 5.UART硬件连接 6.UART控制器 串口控 ...

  4. CAN总线技术 | 数据链路层03 - CAN总线竞争与仲裁机制

    文章目录 一.前言 二.CAN总线非破坏性仲裁机制 三.非破坏性仲裁机制的前提 四.仲裁的实现 一.前言 CAN总线厉害的其中一个原因是CAN总线灵活且强大的竞争与仲裁机制. 二.CAN总线非破坏性仲 ...

  5. A2B车载音频总线-车机音频麦克风阵列测试

    1.A2B介绍: 随音频是智能座舱的核心功能,涵盖车载音响.语音识别.e-Call.消噪及回声消除等应用,随着汽车智能网联化的发展,对音频的开发要求也越来越高,需要加入更先进.功能丰富的信息娱乐功能以 ...

  6. RS-485总线多机通信

    ;KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK  RS-485总线多机通信  KKKKKKKKKKKKKKKKKKKK ;Rev:01.01 ;DA ...

  7. rs485与modbus流程图_基于Modbus协议的RS485总线通讯机设计原理及应用

    摘要:该文详细论述了基于Modbus协议的RS485总线通讯机设计原理及应用.物理结构上包括上位机.主站.和多个从站节点.在上位机与各从站节点间增加主站,承担上位机的轮询工作,使上位机从繁忙的通信工作 ...

  8. 10 计算机组成原理第六章 总线 总线的概念与分类 总线性能指标 总线仲裁 总线操作和定时 总线标准

    文章目录 1 总线的概念与分类 1.1总线的定义 1.2 总线的特点 1.3 总线的特性 1.4 总线的分类 1.4.1 串行总线与并行总线 1.4.2 按总线功能分类 1.5 系统总线的结构 1.6 ...

  9. 总线控制(总线判优控制、总线通信控制)

    文章目录 基本概念 总线判优控制 链式查询 计数器查询 独立请求方式 总线通信控制 同步通信 异步通信 不互锁方式 半互锁方式 全互锁方式 波特率 半同步通信(同/异步结合) 分离式通信 系列文章 基 ...

最新文章

  1. 跌宕中,特斯拉拿下上海工厂,给蔚来们留下不到两年窗口期
  2. C#集合--Dictionary
  3. CSS3制作文字背景图
  4. VC6、BC5、G2.9标准分配器一览
  5. 《 自动化测试最佳实践:来自全球的经典自动化测试案例解析》一一1.3 建立自动化策略...
  6. java字符串的方法 1118
  7. 当面试官问你Vue响应式原理,你可以这么回答他
  8. postgresql 使用pg_restore时显示role root does not exist的解决办法
  9. .net在当前日期的基础上加一天
  10. java addmonth_JAVA:int month = n.get(Calendar.MONTH)+1;为何要加1?
  11. 使用应用心理学帮助软件工程师
  12. atitit 数据库mysq启动不起来解决方案.docx
  13. 实战jvisualvm
  14. 算法竞赛入门经典 1 实验
  15. python编程实战:暴力破解WIFI密码!亲测运行有效!
  16. RANSAC算法与原理(一)
  17. Vue移动端rotate强制横屏
  18. mysql front新建数据库_简述MySQL-Front数据库的具体操作
  19. CF676A Nicholas and Permutation 题解
  20. A Question of Ingestion(Dp)

热门文章

  1. java拆分任意五位数_五位数拆分出各位 - osc_foo7glsg的个人空间 - OSCHINA - 中文开源技术交流社区...
  2. 安卓 linux找回内置存储,Android手机自带内部存储路径的获取
  3. 两万字教会你解析库之Beautiful Soup
  4. Python数模笔记-模拟退火算法(2)约束条件的处理
  5. java web开发之上机指导(2)
  6. pythonselenium上传图片视频_如何用selenium、python上传文件(图片)
  7. python 随机数
  8. Jmeter性能测试工具Timer定时器详解
  9. linux重定向输出命令
  10. 洛谷 P1219 八皇后题解