和记娱乐


网站导航

联系我们

和记娱乐

联系人: 

电 话:021-64057486

公司网址:http://www.happy123456789.com

   址:成都市松江区漕河泾松江新兴产业园区研展路丰产支路55号B座803室

邮编:201165


通信知识

您的当前位置: 和记娱乐主页 > 通信知识 >

I2C总线的仲裁问题

发布日期:2019-09-23 07:51 来源:和记h88 发布人:和记娱乐 点击:

  我现在遇到了一个问题,假设说有两台主机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总线的仲裁有比较详细地论述。个人认为需要明白其的先决条件:

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

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

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

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

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

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

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

      和记娱乐,和记h88,h88平台官网