CN107766267A - 一种i2c总线的仲裁方法及系统 - Google Patents
一种i2c总线的仲裁方法及系统 Download PDFInfo
- Publication number
- CN107766267A CN107766267A CN201710948971.2A CN201710948971A CN107766267A CN 107766267 A CN107766267 A CN 107766267A CN 201710948971 A CN201710948971 A CN 201710948971A CN 107766267 A CN107766267 A CN 107766267A
- Authority
- CN
- China
- Prior art keywords
- bus
- master devices
- buses
- current
- flag bits
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/42—Bus transfer protocol, e.g. handshake; Synchronisation
- G06F13/4282—Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1605—Handling requests for interconnection or transfer for access to memory bus based on arbitration
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Small-Scale Networks (AREA)
- Bus Control (AREA)
Abstract
本发明提供了一种I2C总线的仲裁方法及系统,二者均在I2C总线当前空闲时将I2C总线的控制权分配给当前主控器件,而在I2C总线当前非空闲时基于接收到的状态寄存器当前反馈的相应标志位的值,实现对上述当前主控器件的总线控制权的统筹分配;且二者均实时采集各当前确权主控器件的I2C总线通信状态,并在每次判定相应当前确权主控器件的I2C总线通信结束后,收回该相应当前确权主控器件的I2C总线控制权,并控制上述状态寄存器释放其BUSY标志位;所述的当前确权主控器件为当前分配有I2C总线的控制权的主控器件。本发明能够实现多主控器件状态下I2C总线控制权的自由切换,提高了I2C总线的通信速率、通信稳定性和通信质量。
Description
技术领域
本发明涉及总线通信领域,具体是一种I2C总线的仲裁方法及系统。
背景技术
I2C(Inter-Integrated Circuit)总线,是由PHILIPS公司开发的两线式(串行数据(SDA)线和串行时钟(SCL)线)串行总线,通过串行数据(SDA)线和串行时钟(SCL)线在连接到总线的器件间传递信息,是同步通信的一种特殊形式,具有接口线少、控制方式简单、器件封装形式小、通信速率较高等优点,已成为微电子通信控制领域广泛采用的一种总线标准。
申请公布号为“CN106155971A”的中国专利申请公开了一种I2C总线的仲裁方法,该方法包括:接收到第一主控器件发送的内部集成电路I2C总线控制请求后,向第二主控器件发送I2C总线释放请求,所述第二主控器件拥有所述I2C总线的控制权;若接收到所述第二主控器件发送的I2C总线释放响应,则向所述第一主控器件发送I2C总线控制响应;接收到所述第一主控器件发送的I2C总线控制应答后,将所述I2C总线的控制权分配给所述第一主控器件。该方案对于各个主控器件的I2C总线控制请求可以相对准确高效地进行仲裁,减少冲突产生的概率,从而减少主控器件获取仲裁结果的延时,有利于处理实时业务。
可见,基于上述公开的方案,在多主控器件的I2C总线链路中,让一个主控器件长期占用总线的控制权,即使在没有数据发送任务时,该主控器件也会一直独占总线的控制权,直至另一个主控器件需要发送数据包时,才会通过仲裁模块申请释放总线的控制权,从而进行控制权的切换。这使得总线资源一直处于“非A即B”的被占用状态,造成了总线资源的极大浪费。
另外,当一个主控器件长期占有总线的控制权,总线一旦出现异常,比如出现与地短接现象,上述公开的方案无法做出即时的判断,会认为是总线控制下的正常电平拉低,致使影响总线的稳定性。
此为现有技术的不足之处。
发明内容
本发明所要解决的技术问题是,针对现有技术的不足,提供一种I2C总线的仲裁方法及系统,用于实现多主控器件状态下总线控制权的自由切换,提高总线的通信稳定性和通信质量。
为解决上述技术问题,本发明提供了一种I2C总线的仲裁方法,应用在网络设备中,所述网络设备包括至少两个主控器件,所述的I2C总线配设有总线仲裁单元,所述的总线仲裁单元配置有一状态寄存器,所述的状态寄存器定义有BUSY标志位、WAIT标志位和ERROR标志位,其中BUSY标志位用于指示I2C总线占用状态、WAIT标志位用于指示I2C总线等待释放状态、ERROR标志位用于指示I2C总线故障状态;该I2C总线的仲裁方法包括步骤:
总线仲裁单元接收当前主控器件发送的I2C总线控制请求;
总线仲裁单元在接收到当前主控器件发送的I2C总线控制请求后,判定I2C总线当前是否空闲;
总线仲裁单元在判定I2C总线当前空闲后,将I2C总线的控制权分配给上述当前主控器件,并拉高上述状态寄存器的BUSY标志位;否则总线仲裁单元访问所述的状态寄存器,并在接收到上述状态寄存器当前反馈的相应标志位的值后,实现对上述当前主控器件的总线控制权的统筹分配;
总线仲裁单元实时采集各当前确权主控器件的I2C总线通信状态,并在每次判定相应当前确权主控器件的I2C总线通信结束后,收回该相应当前确权主控器件的I2C总线控制权,并控制上述状态寄存器释放其BUSY标志位;所述的当前确权主控器件为当前分配有I2C总线的控制权的主控器件。
其中,在接收到上述状态寄存器当前反馈的相应标志位的值后,实现对上述当前主控器件的总线控制权的统筹分配,具体包括:
总线仲裁单元在接收到上述状态寄存器回应的BUSY标志位的值为该标志位被拉高后对应的值、回应的WAIT标志位和ERROR标志位的值均为初始值后,拉高所述状态寄存器的WAIT标志位,并向上述当前主控器件发送等待被分配I2C总线控制权的回应;
总线仲裁单元在接收到上述状态寄存器回应的BUSY标志位和WAIT标志位的值对应为相应标志位被拉高后各自对应的相应值、回应的ERROR标志位的值为初始值后,向上述当前主控器件发送拒绝分配I2C总线控制权的回应;
总线仲裁单元在接收到上述状态寄存器回应的ERROR标志位的值为该标志位被拉高后对应的值后,向上述当前主控器件发送拒绝分配I2C总线控制权的回应。
进一步地,总线仲裁单元在向上述当前主控器件发送等待被分配I2C总线控制权的回应后,并在判定当前确权主控器件的I2C总线通信结束后,释放上述状态寄存器的BUSY标志位,并将I2C总线的控制权分配给该当前主控器件;且在上述将I2C总线的控制权分配给该当前主控器件后,释放上述状态寄存器的WAIT标志位并拉高上述状态寄存器的BUSY标志位。
另外,本发明还提供了一种I2C总线的仲裁系统,应用在网络设备中,所述网络设备包括至少两个主控器件,所述的I2C总线配设有总线仲裁单元,所述的总线仲裁单元配置有一状态寄存器,所述的状态寄存器定义有BUSY标志位、WAIT标志位和ERROR标志位,其中BUSY标志位用于指示I2C总线占用状态、WAIT标志位用于指示I2C总线等待释放状态、ERROR标志位用于指示I2C总线故障状态;所述的总线仲裁单元包括:
第一收发模块,用于接收当前主控器件发送的I2C总线控制请求;
第一判定模块,用于在第一收发模块接收到当前主控器件发送的I2C总线控制请求后,判定I2C总线当前是否空闲;
第一分配模块,用于在第一判定模块判定I2C总线当前空闲时,将所述I2C总线的控制权分配给上述当前主控器件;还在将所述I2C总线的控制权分配给上述当前主控器件后,用于拉高状态寄存器的BUSY标志位;
第二分配模块,用于在第一判定模块判定所述I2C总线当前为非空闲时,访问所述的状态寄存器;还用于在接收到上述状态寄存器当前回应的相应标志位的值后,实现对上述当前主控器件的总线控制权的统筹分配;
第二判断模块,与所述的第一分配模块和第二分配模块相连,用于实时采集各当前确权主控器件的I2C总线通信状态;并用于在每次判定相应当前确权主控器件的I2C总线通信结束后,收回该相应当前确权主控器件的I2C总线控制权,并控制上述状态寄存器释放其BUSY标志位;所述的当前确权主控器件为当前分配有I2C总线的控制权的主控器件。
其中所述的第二分配模块,在接收到上述状态寄存器当前回应的相应标志位的值后,实现对上述当前主控器件的总线控制权的统筹分配,具体包括:
在接收到上述状态寄存器回应的BUSY标志位的值为该标志位被拉高后对应的值、回应的WAIT标志位和ERROR标志位的值均为初始值后,用于拉高所述状态寄存器的WAIT标志位,并用于向上述当前主控器件发送等待被分配I2C总线控制权的回应;
在接收到上述状态寄存器回应的BUSY标志位和WAIT标志位的值对应为相应标志位被拉高后各自对应的相应值、回应的ERROR标志位的值为初始值后,用于向上述当前主控器件发送拒绝分配I2C总线控制权的回应;
在接收到上述状态寄存器回应的ERROR标志位的值为该标志位被拉高后对应的值后,用于向上述当前主控器件发送拒绝分配I2C总线控制权的回应。
其中所述的第二分配模块,在其向上述当前主控器件发送等待被分配I2C总线控制权的回应,并在第二判断模块判定当前确权主控器件的I2C总线通信结束后,用于释放上述状态寄存器的BUSY标志位,并用于将I2C总线的控制权分配给该当前主控器件;还在上述将I2C总线的控制权分配给该当前主控器件后,用于释放上述状态寄存器的WAIT标志位,并用于拉高上述状态寄存器的BUSY标志位。
与现有技术相比,本发明的优点在于:
(1)本发明适于在多主控器件的I2C总线链路中使用,且在每次判定相应主控器件的I2C总线通信结束后,通过收回该相应主控器件的I2C总线控制权的方式,能够避免I2C总线的控制权被一个主控器件长期占用的现象的发生,使得其他主控器件在需要通过I2C总线发送数据时,节省了通过仲裁模块申请释放总线的控制权的过程的使用,这在一定程度上节约了总线资源,也在一定程度上提高了通信的速度;
(2)本发明引入了与I2C总线配合使用的状态寄存器,在判定I2C总线当前非空闲后,通过访问所述的状态寄存器,并在接收到上述状态寄存器当前反馈的相应标志位的值后,实现对上述当前主控器件的总线控制权的统筹分配,从而在一定程度上提高了通信的稳定性与质量;
(3)本发明在当前主控器件已占用I2C总线的同时,可以给另一主控器件预先分配该I2C总线的控制权,从而能够实现多主状态下I2C总线的控制权的有序切换,这在一定程度上进一步提高了通信的稳定性与质量;
(4)本发明引入了状态寄存器的ERROR标志位,且在接收到上述状态寄存器回应的ERROR标志位的值为该标志位被拉高后对应的值后,判定总线故障,并向当前主控器件发送拒绝分配I2C总线控制权响应,这使得本发明在I2C总线故障时,能够即时作出判断,这在一定程度上确保了通信的稳定性与质量。
由此可见,本发明与现有技术相比,具有突出的实质性特点和显著的进步,其实施的有益效果也是显而易见的。
附图说明
图1为本发明所述I2C总线的仲裁方法在具有三个主控器件并行发送对I2C总线的控制请求情况下的具体实施方式;
图2为本发明所述I2C总线的仲裁系统的结构框图示意图。
具体实施方式
为使本发明的技术方案和优点更加清楚,下面将结合附图,对本发明的技术方案进行清楚、完整地描述。
本发明的一种I2C总线的仲裁方法,应用在网络设备中,所述网络设备包括至少两个主控器件。所述的I2C总线配设有总线仲裁单元,所述的总线仲裁单元配置有状态寄存器,所述的状态寄存器定义有BUSY标志位、WAIT标志位和ERROR标志位,其中BUSY标志位用于指示I2C总线占用状态、WAIT标志位用于指示I2C总线等待释放状态、ERROR标志位用于指示I2C总线故障状态;该I2C总线的仲裁方法包括如下步骤S1-S4:
步骤S1、总线仲裁单元接收当前主控器件发送的I2C总线控制请求。
步骤S2、总线仲裁单元在上述步骤S1中接收到当前主控器件发送的I2C总线控制请求后,判定I2C总线当前是否空闲,且在判定I2C总线当前空闲后执行步骤S3,否则执行步骤S4。
步骤S3、总线仲裁单元将I2C总线的控制权分配给上述当前主控器件,并拉高状态寄存器的BUSY标志位;
步骤S4、总线仲裁单元访问所述的状态寄存器,并基于接收到上述状态寄存器当前反馈的相应标志位的值,实现对上述当前主控器件的总线控制权的统筹分配。
其中,在上述步骤S4中,在接收到上述状态寄存器当前反馈的相应标志位的值后,实现对上述当前主控器件的总线控制权的统筹分配,具体包括:
在接收到上述状态寄存器回应的BUSY标志位的值为该标志位被拉高后对应的值后,拉高所述状态寄存器的WAIT标志位,并向上述当前主控器件发送等待被分配I2C总线控制权的回应;
在接收到上述状态寄存器回应的BUSY标志位和WAIT标志位的值对应为相应标志位被拉高后各自对应的相应值后,向上述当前主控器件发送拒绝分配I2C总线控制权的回应;
在接收到上述状态寄存器回应的ERROR标志位的值为该标志位被拉高后对应的值后,向上述当前主控器件发送拒绝分配I2C总线控制权的回应。
进一步地,在向上述当前主控器件发送等待被分配I2C总线控制权的回应后,实时判定当前分配有I2C总线的控制权的相应主控器件的当前I2C总线通信是否结束;
在判定上述当前I2C总线通信结束后,释放上述状态寄存器的BUSY标志位,并将I2C总线的控制权分配给该当前主控器件;
在上述将I2C总线的控制权分配给该当前主控器件后,释放上述状态寄存器的WAIT标志位并拉高上述状态寄存器的BUSY标志位。
另外,在判定I2C总线当前空闲后,将I2C总线的控制权分配给上述当前主控器件,并拉高状态寄存器的BUSY标志位,直至在判定上述当前主控器件对应的I2C总线通信结束后,控制所述的状态寄存器释放BUSY标志位。
其中,所述的I2C总线的仲裁方法还包括:总线仲裁单元实时采集各当前确权主控器件的I2C总线通信状态,并在每次判定相应当前确权主控器件的I2C总线通信结束后,收回该相应当前确权主控器件的I2C总线控制权,并控制上述状态寄存器释放其BUSY标志位。所述的当前确权主控器件为当前分配有I2C总线的控制权的主控器件。
具体地,以三个主控器件A、B、C为例,主控器件A、B、C并行发送对I2C总线的控制请求,如图1所示,具体如下:
步骤q1、初始状态(I2C总线当前空闲)下,总线仲裁单元接收到主器件A发送的I2C总线控制请求;其中在初始状态下,状态寄存器定义的BUSY标志位、WAIT标志位和ERROR标志位的值依序为0、0和0;
步骤q2、总线仲裁单元在接收到主器件A发送的I2C总线控制请求后,判定I2C总线当前是否空闲,且此时判定I2C总线当前空闲,执行步骤q3;
步骤q3、总线仲裁单元将I2C总线的控制权分配给主控器件A,并拉高其配置的状态寄存器的BUSY标志位;之后执行步骤q4和q12;
步骤q4、在主控器件A占有I2C总线的控制权的过程中,总线仲裁单元接收到主器件B发送的I2C总线控制请求;
步骤q5、总线仲裁单元在接收到主器件B发送的I2C总线控制请求后,判定I2C总线当前是否空闲,此时判定I2C总线当前非空闲,之后执行步骤q6;
步骤q6、总线仲裁单元访问上述状态寄存器,并在上述状态寄存器回应的BUSY标志位、WAIT标志位和ERROR标志位的值依序为1(即为该BUSY标志位被拉高后对应的值)、0和0时,执行步骤q7;且在上述状态寄存器回应ERROR标志位的值为1(即为该ERROR标志位被拉高后对应的值)时执行步骤q15;
步骤q7、拉高所述状态寄存器的WAIT标志位,并向主控器件B发送等待被分配I2C总线控制权的回应,主控器件B进入等待状态;
步骤q8、在主控器件A占有I2C总线的控制权、以及在上述步骤q7向主控器件B发送等待被分配I2C总线控制权的回应后,总线仲裁单元接收到主器件C发送的I2C总线控制请求;
步骤q9、总线仲裁单元在接收到主器件C发送的I2C总线控制请求后,判定I2C总线当前是否空闲,此时判定I2C总线当前非空闲,之后执行步骤q10;
步骤q10、总线仲裁单元访问所述的状态寄存器,并在该状态寄存器回应BUSY标志位的值为1、回应WAIT标志位的值为1以及回应ERROR标志位的值为0时,执行步骤q11;且在该状态寄存器回应ERROR标志位的值为1时,执行步骤q11;
步骤q11、总线仲裁单元向上述主控器件C发送拒绝分配I2C总线控制权的回应;
步骤q12、总线仲裁单元实时采集主控器件A的I2C总线通信状态,并在判定主控器件A的I2C总线通信结束后,执行步骤q13;
步骤q13、收回主控器件A对I2C总线的控制权,并释放上述状态寄存器的BUSY标志位(该BUSY标志位恢复至初始状态),之后执行步骤q14;
步骤q14、总线仲裁单元将I2C总线的控制权分配给主控器件B,之后控制上述状态寄存器释放WAIT标志位并拉高BUSY标志位;此时,WAIT标志位置0,BUSY标志位置1;
步骤q15、向上述主控器件B发送拒绝分配I2C总线控制权的回应。
其中,在上述主控器件B占有I2C总线的控制权的过程中,若总线仲裁单元再接收到其他主控器件发送的I2C总线控制请求,则重复执行上述主控器件B与C的控制过程。
在本实施方式中,所涉及的判定主控器件的I2C总线通信结束的方法为:在主控器件当前被分配有I2C总线的控制权后,实时采集当前I2C总线对应串行数据(SDA)和串行时钟 (SCL)线中的各相应信号,在SCL线中信号处于高位时,若判定SDA线中信号由低位转为高位,则判定该当前主控器件的I2C总线通信结束。
综上,可见本发明提供了一种高效的调度方法,提前将并行的主控器件进行排队处理,保证了总线资源的高效利用。同时检测总线是否异常,保证多主器件的正常运转。
本发明还提供了一种I2C总线的仲裁系统,如图2所示,应用在网络设备中,所述网络设备包括至少两个主控器件(本实施方式以三个主控器件为例),所述的I2C总线配设有总线仲裁单元,所述的总线仲裁单元配置有一状态寄存器,所述的状态寄存器定义有BUSY标志位、WAIT标志位和ERROR标志位,其中BUSY标志位用于指示I2C总线占用状态、WAIT标志位用于指示I2C总线等待释放状态、ERROR标志位用于指示I2C总线故障状态;所述的总线仲裁单元包括:
第一收发模块,用于接收当前主控器件发送的I2C总线控制请求;
第一判定模块,用于在第一收发模块接收到当前主控器件发送的I2C总线控制请求后,判定I2C总线当前是否空闲;
第一分配模块,用于在第一判定模块判定I2C总线当前空闲时,将所述I2C总线的控制权分配给上述当前主控器件;还在将所述I2C总线的控制权分配给上述当前主控器件后,用于拉高状态寄存器的BUSY标志位;
第二分配模块,用于在第一判定模块判定所述I2C总线当前为非空闲时,访问所述的状态寄存器;还用于在接收到上述状态寄存器当前回应的相应标志位的值后,实现对上述当前主控器件的总线控制权的统筹分配;
第二判断模块,与所述的第一分配模块和第二分配模块相连,用于实时采集各当前确权主控器件的I2C总线通信状态;并用于在每次判定相应当前确权主控器件的I2C总线通信结束后,收回该相应当前确权主控器件的I2C总线控制权,并控制上述状态寄存器释放其BUSY标志位;所述的当前确权主控器件为当前分配有I2C总线的控制权的主控器件。使用时,总线仲裁单元通过第一收发模块接收当前主控器件发送的I2C总线控制请求;之后通过第一判定模块判定I2C总线当前是否空闲;并在第一判定模块判定I2C总线当前空闲时,调用第一分配模块将I2C总线的控制权分配给上述当前主控器件,之后调用第一分配模块拉高状态寄存器的BUSY标志位(即将BUSY标志位置1);且在第一判定模块判定所述I2C总线当前为非空闲时,调用第二分配模块访问所述的状态寄存器,并在接收到上述状态寄存器当前回应的相应标志位的值后,实现对上述当前主控器件的总线控制权的统筹分配。另外,该系统在使用时,调用第二判断模块实时采集各当前确权主控器件的I2C总线通信状态,并在每次判定相应当前确权主控器件的I2C总线通信状态为I2C总线通信结束后,收回该相应当前确权主控器件的I2C总线控制权,并控制上述状态寄存器释放其BUSY标志位(即将该BUSY标志位置0)。所述的当前确权主控器件为当前分配有I2C总线的控制权的主控器件。
在本实施方式中,所述的第二分配模块,在接收到上述状态寄存器当前回应的相应标志位的值后,实现对上述当前主控器件的总线控制权的统筹分配,具体包括:在接收到上述状态寄存器当前回应的BUSY标志位的值为1(即为该BUSY标志位被拉高后对应的值)、回应的WAIT标志位和ERROR标志位的值均为0后,用于拉高所述状态寄存器的WAIT标志位,并用于向上述当前主控器件发送等待被分配I2C总线控制权的回应;在接收到上述状态寄存器回应的BUSY标志位和WAIT标志位的值均为1(即为BUSY标志位和WAIT标志位各自被拉高后各自对应的值)、回应的ERROR标志位的值为0后,用于向上述当前主控器件发送拒绝分配I2C总线控制权的回应;在接收到上述状态寄存器回应的ERROR标志位的值为1(即为该ERROR标志位被拉高后对应的值)后,用于向上述当前主控器件发送拒绝分配I2C总线控制权的回应。
其中所述的第二分配模块,在其向上述当前主控器件发送等待被分配I2C总线控制权的回应,并在第二判断模块判定当前确权主控器件的I2C总线通信结束后,用于释放上述状态寄存器的BUSY标志位,并用于将I2C总线的控制权分配给该当前主控器件;还在上述将I2C总线的控制权分配给该当前主控器件后,用于释放上述状态寄存器的WAIT标志位,并用于拉高上述状态寄存器的BUSY标志位。
其中,上述第二判断模块判定每个所涉及的主控器件的I2C总线通信结束的方法为:在主控器件当前被分配有I2C总线的控制权后,实时采集当前I2C总线对应串行数据(SDA)和串行时钟 (SCL)线中的各相应信号,在SCL线中信号处于高位时,若判定SDA线中信号由低位转为高位,则判定该当前主控器件的I2C总线通信结束。
综上可见,本发明所述的I2C总线的仲裁系统,实现了多个主控器件并行通信过程中的合理调度,避免了多个主控器件因各自判定逻辑不兼容而导致的冲突的发生,不仅提高了通信效率,还提高了整个通信系统的灵活性和稳定性,在很大程度上实现了I2C链路资源的利用。另外,本发明增加了I2C总线异常检测机制,从而保证了多主环境下I2C总线的正常运转。
需要说明的是,本发明所涉及的拉高各相应标志位,即为将各相应标志位对应的值分别置为1;本发明所涉及的拉低各相应标志位,即为将各相应标志位对应的值分别置为0;另外,各相应标志位的初始值均为0。
以上实施方式仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施方式对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施方式所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施方式技术方案的范围。
Claims (6)
1.一种I2C总线的仲裁方法,应用在网络设备中,所述网络设备包括至少两个主控器件,所述的I2C总线配设有总线仲裁单元,其特征在于,所述的总线仲裁单元配置有一状态寄存器,所述的状态寄存器定义有BUSY标志位、WAIT标志位和ERROR标志位,其中BUSY标志位用于指示I2C总线占用状态、WAIT标志位用于指示I2C总线等待释放状态、ERROR标志位用于指示I2C总线故障状态;该I2C总线的仲裁方法包括步骤:
总线仲裁单元接收当前主控器件发送的I2C总线控制请求;
总线仲裁单元在接收到当前主控器件发送的I2C总线控制请求后,判定I2C总线当前是否空闲;
总线仲裁单元在判定I2C总线当前空闲后,将I2C总线的控制权分配给上述当前主控器件,并拉高上述状态寄存器的BUSY标志位;否则总线仲裁单元访问所述的状态寄存器,并在接收到上述状态寄存器当前反馈的相应标志位的值后,实现对上述当前主控器件的总线控制权的统筹分配;
总线仲裁单元实时采集各当前确权主控器件的I2C总线通信状态,并在每次判定相应当前确权主控器件的I2C总线通信结束后,收回该相应当前确权主控器件的I2C总线控制权,并控制上述状态寄存器释放其BUSY标志位;所述的当前确权主控器件为当前分配有I2C总线的控制权的主控器件。
2.根据权利要求1所述的I2C总线的仲裁方法,其特征在于,在接收到上述状态寄存器当前反馈的相应标志位的值后,实现对上述当前主控器件的总线控制权的统筹分配,具体包括:
总线仲裁单元在接收到上述状态寄存器回应的BUSY标志位的值为该标志位被拉高后对应的值、回应的WAIT标志位和ERROR标志位的值均为初始值后,拉高所述状态寄存器的WAIT标志位,并向上述当前主控器件发送等待被分配I2C总线控制权的回应;
总线仲裁单元在接收到上述状态寄存器回应的BUSY标志位和WAIT标志位的值对应为相应标志位被拉高后各自对应的相应值、ERROR标志位回应的值为初始值后,向上述当前主控器件发送拒绝分配I2C总线控制权的回应;
总线仲裁单元在接收到上述状态寄存器回应的ERROR标志位的值为该标志位被拉高后对应的值后,向上述当前主控器件发送拒绝分配I2C总线控制权的回应。
3.根据权利要求2所述的I2C总线的仲裁方法,其特征在于,进一步地,总线仲裁单元在向上述当前主控器件发送等待被分配I2C总线控制权的回应后,并在判定当前确权主控器件的I2C总线通信结束后,释放上述状态寄存器的BUSY标志位,并将I2C总线的控制权分配给该当前主控器件;且在上述将I2C总线的控制权分配给该当前主控器件后,释放上述状态寄存器的WAIT标志位并拉高上述状态寄存器的BUSY标志位。
4.一种I2C总线的仲裁系统,应用在网络设备中,所述网络设备包括至少两个主控器件,所述的I2C总线配设有总线仲裁单元,其特征在于,所述的总线仲裁单元配置有一状态寄存器,所述的状态寄存器定义有BUSY标志位、WAIT标志位和ERROR标志位,其中BUSY标志位用于指示I2C总线占用状态、WAIT标志位用于指示I2C总线等待释放状态、ERROR标志位用于指示I2C总线故障状态;所述的总线仲裁单元包括:
第一收发模块,用于接收当前主控器件发送的I2C总线控制请求;
第一判定模块,用于在第一收发模块接收到当前主控器件发送的I2C总线控制请求后,判定I2C总线当前是否空闲;
第一分配模块,用于在第一判定模块判定I2C总线当前空闲时,将所述I2C总线的控制权分配给上述当前主控器件;还在将所述I2C总线的控制权分配给上述当前主控器件后,用于拉高状态寄存器的BUSY标志位;
第二分配模块,用于在第一判定模块判定所述I2C总线当前为非空闲时,访问所述的状态寄存器;还用于在接收到上述状态寄存器当前回应的相应标志位的值后,实现对上述当前主控器件的总线控制权的统筹分配;
第二判断模块,与所述的第一分配模块和第二分配模块相连,用于实时采集各当前确权主控器件的I2C总线通信状态;并用于在每次判定相应当前确权主控器件的I2C总线通信结束后,收回该相应当前确权主控器件的I2C总线控制权,并控制上述状态寄存器释放其BUSY标志位;所述的当前确权主控器件为当前分配有I2C总线的控制权的主控器件。
5.根据权利要求4所述的I2C总线的仲裁系统,其特征在于,
所述的第二分配模块,在接收到上述状态寄存器当前回应的相应标志位的值后,实现对上述当前主控器件的总线控制权的统筹分配,具体包括:
在接收到上述状态寄存器回应的BUSY标志位的值为该标志位被拉高后对应的值、回应的WAIT标志位和ERROR标志位的值均为初始值后,用于拉高所述状态寄存器的WAIT标志位,并用于向上述当前主控器件发送等待被分配I2C总线控制权的回应;
在接收到上述状态寄存器回应的BUSY标志位和WAIT标志位的值对应为相应标志位被拉高后各自对应的相应值、回应的ERROR标志位的值为初始值后,用于向上述当前主控器件发送拒绝分配I2C总线控制权的回应;
在接收到上述状态寄存器回应的ERROR标志位的值为该标志位被拉高后对应的值后,用于向上述当前主控器件发送拒绝分配I2C总线控制权的回应。
6.根据权利要求5所述的I2C总线的仲裁系统,其特征在于,
所述的第二分配模块,在其向上述当前主控器件发送等待被分配I2C总线控制权的回应,并在第二判断模块判定当前确权主控器件的I2C总线通信结束后,用于释放上述状态寄存器的BUSY标志位,并用于将I2C总线的控制权分配给该当前主控器件;还在上述将I2C总线的控制权分配给该当前主控器件后,用于释放上述状态寄存器的WAIT标志位,并用于拉高上述状态寄存器的BUSY标志位。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710948971.2A CN107766267B (zh) | 2017-10-12 | 2017-10-12 | 一种i2c总线的仲裁方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710948971.2A CN107766267B (zh) | 2017-10-12 | 2017-10-12 | 一种i2c总线的仲裁方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107766267A true CN107766267A (zh) | 2018-03-06 |
CN107766267B CN107766267B (zh) | 2020-03-03 |
Family
ID=61268014
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710948971.2A Active CN107766267B (zh) | 2017-10-12 | 2017-10-12 | 一种i2c总线的仲裁方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107766267B (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110990313A (zh) * | 2019-11-29 | 2020-04-10 | 苏州浪潮智能科技有限公司 | 一种i3c总线处理时钟拉伸的方法、设备以及存储介质 |
CN111124979A (zh) * | 2019-10-31 | 2020-05-08 | 苏州浪潮智能科技有限公司 | 一种基于堆栈结构的i2c多主访问方法和系统 |
CN111488175A (zh) * | 2019-12-29 | 2020-08-04 | 北京浪潮数据技术有限公司 | 一种访问控制方法、装置、设备及可读存储介质 |
CN112069114A (zh) * | 2020-09-07 | 2020-12-11 | 北京同有飞骥科技股份有限公司 | I2c仲裁方法及装置 |
CN113626885A (zh) * | 2021-06-25 | 2021-11-09 | 苏州浪潮智能科技有限公司 | Mcu多源写操作控制方法、系统、终端及存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0246666B1 (en) * | 1986-05-22 | 1994-05-04 | Chrysler Corporation | Serial data bus for different modes of operation (SCI, SPI and buffered SPI) and methods for a serial peripheral interface in a serial data bus |
CN102419739A (zh) * | 2011-09-30 | 2012-04-18 | 上海联能仪表有限公司 | 多主总线仲裁共享装置以及仲裁方法 |
CN102722466A (zh) * | 2012-06-05 | 2012-10-10 | 天津市英贝特航天科技有限公司 | 一种3取2或2取2控制系统中的16位多总线电路 |
CN103116563A (zh) * | 2012-11-09 | 2013-05-22 | 瑞斯康达科技发展股份有限公司 | 一种主机通信方法、一种主机及通信系统 |
CN104794079A (zh) * | 2015-03-31 | 2015-07-22 | 华为技术有限公司 | 一种总线仲裁的方法、装置及系统 |
-
2017
- 2017-10-12 CN CN201710948971.2A patent/CN107766267B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0246666B1 (en) * | 1986-05-22 | 1994-05-04 | Chrysler Corporation | Serial data bus for different modes of operation (SCI, SPI and buffered SPI) and methods for a serial peripheral interface in a serial data bus |
CN102419739A (zh) * | 2011-09-30 | 2012-04-18 | 上海联能仪表有限公司 | 多主总线仲裁共享装置以及仲裁方法 |
CN102722466A (zh) * | 2012-06-05 | 2012-10-10 | 天津市英贝特航天科技有限公司 | 一种3取2或2取2控制系统中的16位多总线电路 |
CN103116563A (zh) * | 2012-11-09 | 2013-05-22 | 瑞斯康达科技发展股份有限公司 | 一种主机通信方法、一种主机及通信系统 |
CN104794079A (zh) * | 2015-03-31 | 2015-07-22 | 华为技术有限公司 | 一种总线仲裁的方法、装置及系统 |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111124979A (zh) * | 2019-10-31 | 2020-05-08 | 苏州浪潮智能科技有限公司 | 一种基于堆栈结构的i2c多主访问方法和系统 |
CN110990313A (zh) * | 2019-11-29 | 2020-04-10 | 苏州浪潮智能科技有限公司 | 一种i3c总线处理时钟拉伸的方法、设备以及存储介质 |
CN111488175A (zh) * | 2019-12-29 | 2020-08-04 | 北京浪潮数据技术有限公司 | 一种访问控制方法、装置、设备及可读存储介质 |
CN112069114A (zh) * | 2020-09-07 | 2020-12-11 | 北京同有飞骥科技股份有限公司 | I2c仲裁方法及装置 |
CN113626885A (zh) * | 2021-06-25 | 2021-11-09 | 苏州浪潮智能科技有限公司 | Mcu多源写操作控制方法、系统、终端及存储介质 |
CN113626885B (zh) * | 2021-06-25 | 2023-05-23 | 苏州浪潮智能科技有限公司 | Mcu多源写操作控制方法、系统、终端及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN107766267B (zh) | 2020-03-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107766267A (zh) | 一种i2c总线的仲裁方法及系统 | |
CN1192675C (zh) | 自动媒体交换设备和方法 | |
CN100570566C (zh) | 一种异构多核间协调调度的方法及异构多核系统 | |
CN104899170B (zh) | 分布式智能平台管理总线ipmb连接方法及atca机框 | |
CN101873269B (zh) | 数据转发设备和端口缓存的分配方法 | |
CN102811152B (zh) | 一种多主总线网络通讯实时交易数据交换实现方法 | |
EP3023880A1 (en) | Method, device and computer storage medium for implementing interface cache dynamic allocation | |
CN203590251U (zh) | 基于串行RapidIO总线的FlexRay控制系统 | |
CN103257946A (zh) | 一种紧耦合多控存储系统控制器之间的高速互联方法 | |
CN101557379A (zh) | 一种pcie接口的链路重组方法和装置 | |
CN106155971A (zh) | I2c总线的仲裁方法及装置 | |
CN106506625A (zh) | 四控服务器及四控服务器通信方法 | |
CN107622032A (zh) | 一种i2c总线的三线扩展方法及电路 | |
CN101610143A (zh) | 链路数据的保护方法、系统及装置 | |
CN103312614B (zh) | 一种组播报文处理方法、线卡及通信设备 | |
CN112738176B (zh) | 一种有线通信总线通信方法及系统 | |
CN106325995A (zh) | 一种gpu资源的分配方法及系统 | |
CN105991315A (zh) | 一种sdn中的链路保护方法、交换设备及网络控制器 | |
CN110391960B (zh) | 总线传输控制装置及方法 | |
CN210324188U (zh) | 一种集成电路总线iic主从竞争自动切换设备及其系统 | |
CN103995789B (zh) | 一种直接内存存取的实现系统及方法 | |
CN107181702B (zh) | 一种实现RapidIO和以太网融合交换的装置 | |
EP3968171A1 (en) | Data exchange chip and server | |
CN101635683A (zh) | 基于链路聚合的业务下发方法及装置 | |
CN106776034A (zh) | 一种任务批处理计算方法、主站计算机及系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |