当前位置:首页 > 单片机 > 单片机
[导读] 【问】有网友问关于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

 【问】有网友问关于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、此外,如果主机也结合了从机功能,而且在寻址阶段丢失仲裁,它很可能就是赢得仲裁的主机在寻址的器件。那么,丢失仲裁的主机必须立即切换到它的从机模式

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: 驱动电源

在工业自动化蓬勃发展的当下,工业电机作为核心动力设备,其驱动电源的性能直接关系到整个系统的稳定性和可靠性。其中,反电动势抑制与过流保护是驱动电源设计中至关重要的两个环节,集成化方案的设计成为提升电机驱动性能的关键。

关键字: 工业电机 驱动电源

LED 驱动电源作为 LED 照明系统的 “心脏”,其稳定性直接决定了整个照明设备的使用寿命。然而,在实际应用中,LED 驱动电源易损坏的问题却十分常见,不仅增加了维护成本,还影响了用户体验。要解决这一问题,需从设计、生...

关键字: 驱动电源 照明系统 散热

根据LED驱动电源的公式,电感内电流波动大小和电感值成反比,输出纹波和输出电容值成反比。所以加大电感值和输出电容值可以减小纹波。

关键字: LED 设计 驱动电源

电动汽车(EV)作为新能源汽车的重要代表,正逐渐成为全球汽车产业的重要发展方向。电动汽车的核心技术之一是电机驱动控制系统,而绝缘栅双极型晶体管(IGBT)作为电机驱动系统中的关键元件,其性能直接影响到电动汽车的动力性能和...

关键字: 电动汽车 新能源 驱动电源

在现代城市建设中,街道及停车场照明作为基础设施的重要组成部分,其质量和效率直接关系到城市的公共安全、居民生活质量和能源利用效率。随着科技的进步,高亮度白光发光二极管(LED)因其独特的优势逐渐取代传统光源,成为大功率区域...

关键字: 发光二极管 驱动电源 LED

LED通用照明设计工程师会遇到许多挑战,如功率密度、功率因数校正(PFC)、空间受限和可靠性等。

关键字: LED 驱动电源 功率因数校正

在LED照明技术日益普及的今天,LED驱动电源的电磁干扰(EMI)问题成为了一个不可忽视的挑战。电磁干扰不仅会影响LED灯具的正常工作,还可能对周围电子设备造成不利影响,甚至引发系统故障。因此,采取有效的硬件措施来解决L...

关键字: LED照明技术 电磁干扰 驱动电源

开关电源具有效率高的特性,而且开关电源的变压器体积比串联稳压型电源的要小得多,电源电路比较整洁,整机重量也有所下降,所以,现在的LED驱动电源

关键字: LED 驱动电源 开关电源

LED驱动电源是把电源供应转换为特定的电压电流以驱动LED发光的电压转换器,通常情况下:LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: LED 隧道灯 驱动电源
关闭