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

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

在这篇文章中,小编将对USB接口的相关内容和情况加以介绍以帮助大家增进对USB接口的了解程度,和小编一起来阅读以下内容吧。

关键字: USB 通用串行总线 总线

今天,小编将在这篇文章中为大家带来嵌入式总线技术的有关报道,通过阅读这篇文章,大家可以对嵌入式总线技术具备清晰的认识,主要内容如下。

关键字: 嵌入式 总线

汽车CAN/LIN总线系统测试的关键是测试流程、测试标准和测试工具,掌握专业的总线分析和测试工具的使用技术,开发测试软件并将它们应用到测试过程是对中国汽车厂家和汽车工程师的重大挑战汽车总线测试流程。概括的讲,汽车总线的测...

关键字: CAN 总线 汽车

现代电子技术的正处于一个飞速发展的时代,随着现代汽车整体性能的逐渐完善,单片机和集成电路不再是家电等电器产品的专属,也正愈来愈广泛的被在应用现代汽车上,电子控制单元部件及各种传感器数量在现代汽车的装配也越来越多。为方便这...

关键字: 汽车 总线 监控

现在CAN的高性能和可靠性已被认同,并被广泛地应用于工业自动化、船舶、医疗设备、工业设备等方面,现场总线是当今自动化领域技术发展的热点之一、被誉为自动化领域的计算机局域网。它的出现为分布式控制系统实现各节点之间实时、可靠...

关键字: CAN 总线 硬件

CAN(Controller Area Network)是一种多主方式的串行通讯总线。基本设计规范要求有高的位速率、高抗电磁干扰性,而且能够检测出产生的任何错误,当信号传输距离达到 10Km 时 CAN-bus 仍可提供...

关键字: CAN 串行通讯 总线

CAN(Controller Area Network)即控制器局域网络。是应用在现场、在微机化测量设备之间实现双向串行多节点数字通讯系统,是一种开放式、数字化、多点通信的底层控制网络。 CAN协议建立在ISO/OSI模...

关键字: CAN 数字通讯 总线

当前市场行业发展CAN总线虽然有强大的抗干扰和纠错重发机制,但目前CAN大量地运用于电动汽车、充电桩、电力电子、轨道交通等电磁环境比较恶劣的场合,因此对CAN总线的抗干扰能力也会存在挑战,所以对CAN总线的抗干扰能力需要...

关键字: CAN 通信 总线

CAN总线控制器实现网络协议ISO 11898–1的所有低级功能,同时收发器与物理层通信。不同的物理层需要不同的收发器,如高速can、低速容错can、高速可变数据速率can。在一个典型的实现中,CAN总线控制器和微处理器...

关键字: CAN 总线 控制器

CAN英文全称为(Controller Area Network)即局域网控制器,CAN能够实现分布式实时控制。能够将多种智能机器进行网络连接,并进行统一控制。CAN最初由罗伯特·博世公司所开发,1993年开始被广泛应用...

关键字: CAN 总线 汽车
关闭
关闭