CN114302256B - 一种i2c通信防冲突方法及系统 - Google Patents
一种i2c通信防冲突方法及系统 Download PDFInfo
- Publication number
- CN114302256B CN114302256B CN202111588362.3A CN202111588362A CN114302256B CN 114302256 B CN114302256 B CN 114302256B CN 202111588362 A CN202111588362 A CN 202111588362A CN 114302256 B CN114302256 B CN 114302256B
- Authority
- CN
- China
- Prior art keywords
- target
- cpld
- bus
- slave
- slave device
- 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.)
- Active
Links
- 238000004891 communication Methods 0.000 title claims abstract description 49
- 238000000034 method Methods 0.000 title claims abstract description 27
- 239000003999 initiator Substances 0.000 claims abstract description 24
- 238000001514 detection method Methods 0.000 claims description 12
- 238000004458 analytical method Methods 0.000 claims description 8
- 238000010586 diagram Methods 0.000 description 7
- 101150085905 DCP2 gene Proteins 0.000 description 3
- 101100031494 Schizosaccharomyces pombe (strain 972 / ATCC 24843) psu1 gene Proteins 0.000 description 3
- 101100422754 Schizosaccharomyces pombe (strain 972 / ATCC 24843) sui1 gene Proteins 0.000 description 3
- 230000008569 process Effects 0.000 description 3
- 230000009977 dual effect Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- 230000004075 alteration Effects 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 238000003672 processing method Methods 0.000 description 1
Landscapes
- Small-Scale Networks (AREA)
Abstract
本发明实施例提供一种I2C通信防冲突方法及系统,CPLD根据至少一个主设备发送的起始符的到达时刻,选择目标主设备,CPLD根据预设规则,从多个具有相同I2C地址的从设备中选择目标从设备,以使目标主设备与目标从设备进行通信,其中,CPLD与主设备、从设备之间通过I2C总线连接。由于目标从设备是通过CPLD根据预设规则进行选择的,经过选择得到的目标从设备的I2C地址是唯一的,CPLD经过选择得到的目标主设备和目标从设备在进行通信时不会产生I2C地址冲突的问题,从而可以提高通信时的可靠性。
Description
技术领域
本发明涉及交换机技术领域,特别涉及一种I2C通信防冲突方法及系统。
背景技术
交换机(Switch)意为“开关”,是一种用于电(光)信号转发的网络设备,它可以为接入交换机的任意两个网络节点提供独享的电信号通路。
交换机中一般配备多个电源、风扇、端口等从设备,这些从设备常常通过串行通讯总线(Inter-Integrated Circuit,I2C)接口接到基板管理控制器(Baseboard ManagerController,BMC)或中央处理器(Central Processing Unit,CPU)管理芯片等主设备。但是电源和风扇大部分都是批量生产的,其内置的I2C地址都是固定的,另外交换机同时支持多个端口与外界通信,为了管理方便,所有的端口都内置了I2C总线连接到BMC或CPU管理芯片,同样的,这些端口所连接的模块也是批量生产的,其地址也是相同的。交换机在访问多个具有相同I2C地址的设备时会发生冲突,影响通信。
因此,如何解决交换机访问多个具有相同I2C地址的设备时产生的冲突问题,是本领域技术人员亟待解决的问题。
发明内容
本发明实施例提供了一种I2C通信防冲突方法及系统,用以解决现有技术中交换机进行通信时,具有相同I2C地址的设备容易发生冲突的问题。
第一方面,本发明实施例提供了一种内置集成电路I2C通信防冲突方法,所述方法包括:
复杂可编程逻辑器件CPLD根据至少一个主设备发送的起始符的到达时刻,选择目标主设备;
所述CPLD根据预设规则,从多个具有相同I2C地址的从设备中选择目标从设备,以使所述目标主设备与所述目标从设备进行通信;
其中,所述CPLD与所述主设备、所述从设备之间通过I2C总线连接。
在一种可能的实现方式中,所述CPLD根据至少一个主设备发送的起始符的到达时刻,选择目标主设备,包括:
所述CPLD将最先到达的起始符对应的主设备作为所述目标主设备。
在一种可能的实现方式中,所述CPLD包括I2C解析模块和寄存器;
所述CPLD根据预设规则,从多个具有相同I2C地址的从设备中选择目标从设备,包括:
所述I2C解析模块通过所述I2C总线,获取具有相同I2C地址的至少一个从设备的标识,并将有效值写入与所述I2C地址对应的寄存器中与所述标识对应的存储位置;
所述寄存器将目标有效值对应的从设备作为所述目标从设备,其中,所述目标有效值为存储有有效值的存储位置中优先级最高的存储位置中存储的有效值。
在一种可能的实现方式中,所述CPLD根据至少一个主设备发送的起始符的到达时刻,选择目标主设备之后,还包括:
所述CPLD导通其与所述目标主设备之间的前端I2C总线。
在一种可能的实现方式中,所述目标主设备与所述目标从设备进行通信之后,还包括:
所述CPLD根据所述目标主设备发送的结束符或故障标志位,断开其与所述目标主设备之间的前端I2C总线。
在一种可能的实现方式中,该方法还包括:
所述CPLD根据后端I2C总线中的串行数据线SDA或串行时钟线SCL为低电平的时长超过第一预设时长,确定通信故障;或
所述CPLD根据通过所述后端I2C总线接收到起始符后的第二预设时长内未接收到结束符,确定通信故障。
第二方面,本发明实施例还提供了一种内置集成电路I2C通信防冲突系统,所述系统包括主设备、复杂可编程逻辑器件CPLD和从设备,所述CPLD与所述主设备、所述从设备之间通过I2C总线连接;
所述CPLD,用于根据至少一个主设备发送的起始符的到达时刻,选择目标主设备,并根据预设规则,从多个具有相同I2C地址的从设备中选择目标从设备,以使所述目标主设备与所述目标从设备进行通信。
在一种可能的实现方式中,所述CPLD具体用于:
将最先到达的起始符对应的主设备作为所述目标主设备。
在一种可能的实现方式中,所述CPLD包括I2C解析模块和寄存器;
所述I2C解析模块,用于通过所述I2C总线,获取具有相同I2C地址的至少一个从设备的标识,并将有效值写入与所述I2C地址对应的寄存器中与所述标识对应的存储位置;
所述寄存器,用于将目标有效值对应的从设备作为所述目标从设备,其中,所述目标有效值为存储有有效值的存储位置中优先级最高的存储位置中存储的有效值。
在一种可能的实现方式中,所述CPLD,用于根据至少一个主设备发送的起始符的到达时刻,选择目标主设备之后,所述CPLD还用于:
导通所述CPLD与所述目标主设备之间的前端I2C总线。
在一种可能的实现方式中,所述目标主设备与所述目标从设备进行通信之后,所述CPLD还用于:
根据所述目标主设备发送的结束符或故障标志位,断开所述CPLD与所述目标主设备之间的前端I2C总线。
在一种可能的实现方式中,所述CPLD还包括检测模块;
所述检测模块,用于根据后端I2C总线中的串行数据线SDA或串行时钟线SCL为低电平的时长超过第一预设时长,确定通信故障;或
所述检测模块,用于根据通过所述后端I2C总线接收到起始符后的第二预设时长内未接收到结束符,确定通信故障。
本发明实施例提供的I2C通信防冲突方法及系统,CPLD根据至少一个主设备发送的起始符的到达时刻,选择目标主设备,CPLD根据预设规则,从多个具有相同I2C地址的从设备中选择目标从设备,以使目标主设备与目标从设备进行通信,其中,CPLD与主设备、从设备之间通过I2C总线连接。由于目标从设备是通过CPLD根据预设规则进行选择的,经过选择得到的目标从设备的I2C地址是唯一的,CPLD经过选择得到的目标主设备和目标从设备在进行通信时不会产生I2C地址冲突的问题,从而可以提高通信时的可靠性。
附图说明
为了更清楚地说明本申请的技术方案,下面将对实施例描述中所需要使用的附图作简要介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种I2C通信防冲突系统的示意图;
图2为本发明实施例提供的另一种I2C通信防冲突系统的示意图;
图3a为本发明实施例提供的一种前端I2C总线选通的示意图;
图3b为本发明实施例提供的另一种前端I2C总线选通的示意图;
图4为本发明实施例提供的另一种I2C通信防冲突系统的示意图;
图5为本发明实施例提供的另一种I2C通信防冲突系统的示意图;
图6为本发明实施例提供的寄存器与从设备对应关系的示意图;
图7为本发明实施例提供的一种I2C通信防冲突方法的流程示意图。
具体实施方式
为了使本申请的目的、技术方案和优点更加清楚,下面将结合附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员所获得的所有其他实施例,都属于本申请保护的范围。
交换机是一种用于电(光)信号转发的网络设备,它可以为接入交换机的任意两个网络节点提供独享的电信号通路。在交换机的组成中,通常包括BMC或CPU管理芯片等主设备以及多个电源、风扇、端口等从设备。其中,这些从设备中同种设备一般都是批量生产的,例如风扇设备,因此在交换机中多个风扇设备的I2C地址是相同的,交换机中主设备与从设备进行通信时,例如CPU与风扇进行通信时,由于多个风扇设备的I2C地址相同,因此在进行通信时容易发生冲突,影响通信。
为解决上述问题,本发明实施例提供了一种I2C通信防冲突系统,如图1所示,该系统包括主设备20(以2个主设备为例)、CPLD10和从设备30(以28个从设备为例),CPLD10与主设备20、从设备30之间通过I2C总线连接。
CPLD10,用于根据至少一个主设备20发送的起始符的到达时刻,选择目标主设备,并根据预设规则,从多个具有相同I2C地址的从设备30中选择目标从设备,以使目标主设备与目标从设备进行通信。
本发明实施例提供的I2C通信防冲突系统,CPLD10根据至少一个主设备20发送的起始符的到达时刻,选择目标主设备,并根据预设规则,从多个具有相同I2C地址的从设备30中选择目标从设备,以使目标主设备与目标从设备进行通信。由于目标从设备是通过CPLD10根据预设规则进行选择的,经过选择得到的目标从设备的I2C地址是唯一的,CPLD10经过选择得到的目标主设备和目标从设备在进行通信时不会产生I2C地址冲突的问题,从而提高了通信的可靠性。
在具体实施中,如图1所示,CPLD10可以包括I2C主端选通模块101和I2C从端选通模块102。且,整个I2C通信防冲突系统之间是通过I2C总线进行通信的,主设备20与I2C主端选通模块101之间的I2C总线称为前端I2C总线,CPLD10内部的I2C主端选通模块101与I2C从端选通模块102之间的I2C总线称为内部I2C总线,I2C从端选通模块102与从设备30之间的I2C总线称为后端I2C总线。I2C主端选通模块101,用于根据至少一个主设备发送的起始符的到达时刻,选择目标主设备;I2C从端选通模块102,用于根据预设规则,从多个具有相同I2C地址的从设备中选择目标从设备。
在一种实施例中,如图2所示,前端I2C总线和后端I2C总线都可以通过电阻上拉到单独的电源上,具有不同地址的主设备20和从设备30分别工作在不同的电源域。不同电源域的主设备以及从设备可以相互隔离,有助于实现对不同电源域单独上下电控制,避免电源污染。
很多交换机都是CPU和BMC双主控制的I2C总线,CPU和BMC同时作为主设备时在通信时也容易产生冲突,因此本发明实施例采用I2C主端选通模块101进行选择,在同一时间仅允许一个主设备进行通信,避免双主冲突的产生。
在具体实施中,I2C主端选通模块101根据至少一个主设备20发送的起始符的到达时刻,选择目标主设备,包括:I2C主端选通模块101将最先到达的起始符对应的主设备20作为目标主设备。
例如,主设备1为BMC,主设备2为CPU,如图2所示,I2C主端选通模块101同时检测前端I2C总线1和前端I2C总线2,根据BMC或者CPU发送的起始符的到达的时间顺序,来决定总线占用。当BMC发送的起始符先到达I2C主端选通模块101时,将BMC作为目标主设备,I2C主端选通模块101锁定前端I2C总线1作为有效通道,如图3a所示;当CPU发送的起始符先到达I2C主端选通模块101时,CPU为目标主设备,I2C主端选通模块101锁定前端I2C总线2作为有效通道,如图3b所示。
在具体实施中,I2C主端选通模块101根据至少一个主设备发送的起始符的到达时刻,选择目标主设备之后,I2C主端选通模块101导通其与目标主设备之间的前端I2C总线,例如图3a中的前端I2C总线1导通,图3b中的前端I2C总线2导通。本发明实施例中,有效通道锁定过程中,另一个主设备发送的信号都是与后级断开的,例如图3b中,当CPU与I2C主端选通模块101之间的前端I2C总线2作为有效通道导通时,BMC与I2C主端选通模块101之间的前端I2C总线1是断开的。
在具体实施中,目标主设备与目标从设备进行通信之后,还包括:I2C主端选通模块101根据目标主设备发送的结束符或故障标志位,断开其与目标主设备之间的前端I2C总线,即有效通道锁定之后,需要等待目标主设备发送结束符或者故障标志位才能释放锁定。释放锁定之后,任何主设备都没有与后级相连,即主设备20与I2C主端选通模块101之间的所有前端I2C总线都是断开的,必须等待下一次目标主设备发送起始符才能导通相应的前端I2C总线进行通信。
本发明实施例中的I2C主端选通模块101通过简单的软件编程就可以控制至少两个前端I2C总线中的一个进行导通,不需要额外的芯片开销,就可以解决双主设备进行通信时容易产生冲突的问题。
在具体实施中,如图4所示,CPLD10还可以包括I2C解析模块103、检测模块104,I2C从端选通模块102可以包括寄存器;
I2C从端选通模块102根据预设规则,从多个具有相同I2C地址的从设备30中选择目标从设备,包括:
I2C解析模块103,用于通过I2C总线,获取具有相同I2C地址的至少一个从设备30的标识,并将有效值写入与I2C地址对应的寄存器中与标识对应的存储位置;
寄存器,用于将目标有效值对应的从设备作为目标从设备,其中,目标有效值为存储有有效值的存储位置中优先级最高的存储位置中存储的有效值。
其中,I2C解析模块103可以基于I2C协议,实现以下3个功能:(1)解析总线信号,输出地址、数据、读写有效标志位;(2)提取应答标志符、读数据标志符;(3)提取起始和结束标志符。其中,地址、数据、读写有效标志位被送入到I2C从端选通模块102,应答标志符、读数据标志符被送入到I2C主端选通模块101和I2C从端选通模块102,用于切换输入和输出的关系,即I2C主端选通模块101驱动内部I2C总线改变为I2C从端选通模块102驱动内部I2C总线,起始和结束标志被送入到检测模块104。
为了便于理解,下面对I2C解析模块103和寄存器进行详细说明。
I2C从端选通模块102中的寄存器可以根据具体应用场景中从设备的种类与数量进行相应数量的预设与定义,例如本发明实施例中从设备30为28个,如图5所示,28个从设备30中包括2个电源从设备1-2、6个风扇从设备3-8和20个端口从设备9-28,其中每一个从设备与I2C从端选通模块102通过后端I2C总线连接,例如I2C从端选通模块102与电源从设备1通过后端I2C总线1连接,I2C从端选通模块102与电源从设备2通过后端I2C总线2连接。
针对上述情况,可以在寄存器中定义5个寄存器,具体信息如下表所示。
表1
本发明实施例在I2C从端选通模块102中集成了一个芯片地址为0x70的内部寄存器,并定义了0x01-0x05这5个寄存器。其中,0x01寄存器作为电源从设备I2C选通寄存器,控制后端I2C总线1-2的连通状态;0x02寄存器作为风扇从设备I2C选通寄存器,控制后端I2C总线3-8的连通状态;0x03寄存器、0x04寄存器和0x05寄存器均作为端口从设备I2C选通寄存器,控制后端I2C总线9-28的连通状态。
具体的,寄存器与各个从设备的对应关系如图6所示,下面进行举例说明本发明实施例的I2C从端选通模块102进行选通的过程。
电源从设备的I2C地址为0x50,具有相同I2C地址(0x50)的2个电源从设备1和电源从设备2的标识分别为PSU1和PSU2,I2C解析模块103首先通过I2C总线,获取具有相同地址的至少一个从设备的标识,例如同时获取到PSU1和PSU2,从图6中可以看出与PSU1和PSU2对应的寄存器地址为0x01,然后将此地址为0x01的寄存器的数据写入到该寄存器中,即将有效值1写入到电源从设备1(PSU1)和电源从设备2(PSU2)对应的存储位置Bit0和Bit1;
风扇从设备的I2C地址为0x55,具有相同I2C地址(0x55)的6个风扇从设备3-8的标识分别为FAN3-FAN8,I2C解析模块首先通过I2C总线,获取具有相同地址的至少一个从设备的标识,例如获取到FAN3,从图6中可以看出与FAN3对应的寄存器地址为0x02,然后将此地址为0x02的寄存器的数据写入到该寄存器中,即将有效值1写入到风扇从设备3(FAN3)对应的存储位置Bit0;
端口从设备的I2C地址为0x56,具有相同I2C地址(0x56)的20个端口从设备9-28的标识分别为DK9-DK28,I2C解析模块首先通过I2C总线,获取具有相同地址的至少一个从设备的标识,例如获取到DK9、DK17和DK25,从图6中可以看出与DK9、DK17和DK25分别对应的寄存器地址为0x03-0x05,然后将这些地址为0x03-0x05的寄存器的数据写入到相应的寄存器中,即将有效值1分别写入到端口从设备9(DK9)对应的存储位置Bit0、端口从设备17(DK17)对应的存储位置Bit0和端口从设备25(DK25)对应的存储位置Bit0。
综上,写入寄存器中的内容如下表(表2)所示。
表2
接下来,上表(表2)中的寄存器将目标有效值对应的从设备作为目标从设备,本发明实施例中在选通的过程中有优先级限制,对于同一个寄存器,低位=1选通时,高位无论设置为任何值都强制关闭,确保相同地址同一时间仅开启一个后端I2C总线,例如对于地址为0x01的寄存器,Bit0和Bit1均为1,其中Bit0为低位,因此Bit0对应的有效值“1”为目标有效值,因此对于电源从设备只选通后端I2C总线1;对于地址为0x02的风扇从设备I2C选通寄存器,Bit0对应的有效值“1”为目标有效值,因此对于风扇从设备只选通后端I2C总线3;对于地址为0x03-0x05的端口从设备I2C选通寄存器1-3,对于寄存器本身有一个优先级设定,设定为端口从设备I2C选通寄存器1优先级最高,端口从设备I2C选通寄存器2优先级次之,端口从设备I2C选通寄存器3优先级最低,因此对于端口从设备只选通后端I2C总线9。
值得注意的是,因为电源从设备、风扇从设备和端口从设备的I2C地址普遍都不同,因此相互之间不会排斥,本发明实施例中设电源从设备的I2C地址为0x50,风扇从设备的I2C地址为0x55,端口从设备的I2C地址为0x60,根据I2C协议,这些地址不会冲突,可以很方便地被主设备20识别。而对于I2C地址相同的从设备,则I2C总线上同一时间仅允许存在一个,对于同种从设备30,例如电源从设备1和电源从设备2,它们的I2C地址是相同的,应该利用本发明实施例提供的I2C从端选通模块102进行控制,控制方法便利用了定义完成的5个寄存器进行选通。
其中,电源从设备I2C选通寄存器利用了最低两位(Bit0和Bit1)进行选通配置,其余位为保持位(Reserve),风扇从设备I2C选通寄存器利用了低6位进行选通配置,其余位为保持位,端口从设备I2C选通寄存器1和端口从设备I2C选通寄存器2的所有位均进行选通配置,端口从设备I2C选通寄存器3的低4位进行选通配置,其余位为保持位。本发明仅仅是其中一种情况的配置,根据实际从设备30的数量还可以根据需要进行配置的改变。
本发明实施例提供的I2C从端选通模块102只用了寄存器并进行相应定义,不需要额外的芯片开销,就可以解决I2C相同地址的冲突问题。
另外,本发明实施例中,当目标主设备与目标从设备经过选通进行通信完成后,所有的I2C总线通道将自动关闭,软件仅需要完成通道开启和通道内通信两个步骤,提高了总线使用效率。
本发明实施例中的检测模块104用来检测故障,即主设备20和从设备30不能进行正常通信的情况,具体的故障判断方式可以有以下两种:
(1)检测模块104根据后端I2C总线中的SDA或SCL为低电平的时长超过第一预设时长,确定通信故障,具体可以为检测到后端I2C总线中的SDA或者SCL拉低时间超过3秒,远大于I2C正常通信的情况;
(2)检测模块104根据通过后端I2C总线接收到起始符后的第二预设时长内未接收到结束符,确定通信故障,具体可以为在检测到I2C起始符之后,超过3分钟仍然没有收到结束符。
本发明实施例中的检测模块104可以及时检测到故障的I2C总线通道,故障后自动隔离通道,不需要软件发起复位信号。
基于相同的发明构思,本发明实施例还提供一种I2C通信防冲突方法,如图7所示,该方法包括:
S701、CPLD10根据至少一个主设备20发送的起始符的到达时刻,选择目标主设备;
S702、CPLD10根据预设规则,从多个具有相同I2C地址的从设备30中选择目标从设备,以使目标主设备与目标从设备进行通信,其中,CPLD10与主设备20、从设备30之间通过I2C总线连接。
可选的,CPLD10根据至少一个主设备20发送的起始符的到达时刻,选择目标主设备,包括:
CPLD10将最先到达的起始符所对应的主设备20作为目标主设备。
可选的,CPLD10包括I2C解析模块和寄存器;CPLD10根据预设规则,从多个具有相同I2C地址的从设备30中选择目标从设备,包括:
I2C解析模块通过I2C总线,获取具有相同I2C地址的至少一个从设备的标识,并将有效值写入与I2C地址对应的寄存器中与标识对应的存储位置;
寄存器将目标有效值对应的从设备作为目标从设备,其中,目标有效值为存储有有效值的存储位置中优先级最高的存储位置中存储的有效值。
可选的,CPLD10根据至少一个主设备20发送的起始符的到达时刻,选择目标主设备之后,还包括:
CPLD导通其与目标主设备之间的前端I2C总线。
可选的,目标主设备与目标从设备进行通信之后,还包括:
CPLD根据目标主设备发送的结束符或故障标志位,断开其与目标主设备之间的前端I2C总线。
可选的,该方法还包括:
CPLD根据后端I2C总线中的SDA或SCL为低电平的时长超过第一预设时长,确定通信故障;或
CPLD根据通过后端I2C总线接收到起始符后的第二预设时长内未接收到结束符,确定通信故障。
本发明实施例提供的I2C通信防冲突方法及系统,CPLD10根据至少一个主设备20发送的起始符的到达时刻,选择目标主设备,CPLD10根据预设规则,从多个具有相同I2C地址的从设备30中选择目标从设备,以使目标主设备与目标从设备进行通信,其中,CPLD10与主设备20、从设备30之间通过I2C总线连接。由于目标从设备是通过CPLD10根据预设规则进行选择的,经过选择得到的目标从设备的I2C地址是唯一的,CPLD10经过选择得到的目标主设备和目标从设备在进行通信时不会产生I2C地址冲突的问题,从而提高了交换机在进行通信时的可靠性。
此外,本发明实施例提供的I2C通信防冲突系统硬件电路简单、成本低,不需要额外的芯片开销,就可以解决I2C总线的相同地址冲突问题以及多个主设备的冲突问题。
本发明以电源从设备、风扇从设备和端口从设备这些I2C地址会冲突的从设备为例,介绍了相同地址在交换机系统的处理方法,但不限于交换机系统,如服务器或其它系统也同样适用,本发明并非局限于文中所描述的例子,任何本领域的技术人员能思之的变化都应落在本发明的保护范围内。
显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。
Claims (6)
1.一种内置集成电路I2C通信防冲突方法,其特征在于,所述方法包括:
复杂可编程逻辑器件CPLD将最先到达的起始符对应的主设备作为目标主设备;
所述CPLD根据预设规则,从多个具有相同I2C地址的从设备中选择目标从设备,以使所述目标主设备与所述目标从设备进行通信;
其中,所述CPLD与所述主设备、所述从设备之间通过I2C总线连接;
其中,所述CPLD包括I2C解析模块和寄存器;
所述CPLD根据预设规则,从多个具有相同I2C地址的从设备中选择目标从设备,包括:
所述I2C解析模块通过所述I2C总线,获取具有相同I2C地址的多个从设备的标识,并将有效值写入与所述I2C地址对应的寄存器中与所述标识对应的存储位置;
所述寄存器将目标有效值对应的从设备作为所述目标从设备,其中,所述目标有效值为存储有有效值的存储位置中优先级最高的存储位置中存储的有效值。
2.如权利要求1所述的方法,其特征在于,所述CPLD根据至少一个主设备发送的起始符的到达时刻,选择目标主设备之后,还包括:
所述CPLD导通其与所述目标主设备之间的前端I2C总线。
3.如权利要求2所述的方法,其特征在于,所述目标主设备与所述目标从设备进行通信之后,还包括:
所述CPLD根据所述目标主设备发送的结束符或故障标志位,断开其与所述目标主设备之间的前端I2C总线。
4.如权利要求1-3任一所述的方法,其特征在于,该方法还包括:
所述CPLD根据后端I2C总线中的串行数据线SDA或串行时钟线SCL为低电平的时长超过第一预设时长,确定通信故障;或
所述CPLD根据通过所述后端I2C总线接收到起始符后的第二预设时长内未接收到结束符,确定通信故障。
5.一种内置集成电路I2C通信防冲突系统,其特征在于,所述系统包括主设备、复杂可编程逻辑器件CPLD和从设备,所述CPLD与所述主设备、所述从设备之间通过I2C总线连接;
所述CPLD,用于将最先到达的起始符对应的主设备作为目标主设备,并根据预设规则,从多个具有相同I2C地址的从设备中选择目标从设备,以使所述目标主设备与所述目标从设备进行通信;
其中,所述CPLD包括I2C解析模块和寄存器;
所述I2C解析模块,用于通过所述I2C总线,获取具有相同I2C地址的多个从设备的标识,并将有效值写入与所述I2C地址对应的寄存器中与所述标识对应的存储位置;
所述寄存器,用于将目标有效值对应的从设备作为所述目标从设备,其中,所述目标有效值为存储有有效值的存储位置中优先级最高的存储位置中存储的有效值。
6.如权利要求5所述的系统,其特征在于,所述CPLD还包括检测模块;
所述检测模块,用于根据后端I2C总线中的串行数据线SDA或串行时钟线SCL为低电平的时长超过第一预设时长,确定通信故障;或
所述检测模块,用于根据通过所述后端I2C总线接收到起始符后的第二预设时长内未接收到结束符,确定通信故障。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111588362.3A CN114302256B (zh) | 2021-12-23 | 2021-12-23 | 一种i2c通信防冲突方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111588362.3A CN114302256B (zh) | 2021-12-23 | 2021-12-23 | 一种i2c通信防冲突方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114302256A CN114302256A (zh) | 2022-04-08 |
CN114302256B true CN114302256B (zh) | 2024-04-16 |
Family
ID=80969769
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111588362.3A Active CN114302256B (zh) | 2021-12-23 | 2021-12-23 | 一种i2c通信防冲突方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114302256B (zh) |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105373511A (zh) * | 2015-10-30 | 2016-03-02 | 上海斐讯数据通信技术有限公司 | 一种与多个光模块可同时通信的装置和方法 |
CN108399137A (zh) * | 2018-03-07 | 2018-08-14 | 广州芯德通信科技股份有限公司 | Pon模块基于cpld的i2c切换方法 |
CN110597745A (zh) * | 2019-09-20 | 2019-12-20 | 苏州浪潮智能科技有限公司 | 一种交换机系统多主多从i2c通信实现方法和装置 |
CN111124972A (zh) * | 2019-12-02 | 2020-05-08 | 深圳震有科技股份有限公司 | 基于相同i2c地址的芯片扩展方法、系统及存储介质 |
CN111124964A (zh) * | 2019-11-29 | 2020-05-08 | 深圳震有科技股份有限公司 | 一种cpu与iic总线的连通控制方法及设备 |
CN112269749A (zh) * | 2020-10-30 | 2021-01-26 | 厦门紫光展锐科技有限公司 | I2c通信系统 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP6340962B2 (ja) * | 2014-07-07 | 2018-06-13 | 富士通株式会社 | バス制御装置、データ転送システム、及びバス制御方法 |
-
2021
- 2021-12-23 CN CN202111588362.3A patent/CN114302256B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105373511A (zh) * | 2015-10-30 | 2016-03-02 | 上海斐讯数据通信技术有限公司 | 一种与多个光模块可同时通信的装置和方法 |
CN108399137A (zh) * | 2018-03-07 | 2018-08-14 | 广州芯德通信科技股份有限公司 | Pon模块基于cpld的i2c切换方法 |
CN110597745A (zh) * | 2019-09-20 | 2019-12-20 | 苏州浪潮智能科技有限公司 | 一种交换机系统多主多从i2c通信实现方法和装置 |
CN111124964A (zh) * | 2019-11-29 | 2020-05-08 | 深圳震有科技股份有限公司 | 一种cpu与iic总线的连通控制方法及设备 |
CN111124972A (zh) * | 2019-12-02 | 2020-05-08 | 深圳震有科技股份有限公司 | 基于相同i2c地址的芯片扩展方法、系统及存储介质 |
CN112269749A (zh) * | 2020-10-30 | 2021-01-26 | 厦门紫光展锐科技有限公司 | I2c通信系统 |
Also Published As
Publication number | Publication date |
---|---|
CN114302256A (zh) | 2022-04-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3327559B2 (ja) | フィーチャ・カードのコンピュータへの非破壊的活状態挿入およびコンピュータからの非破壊的活状態取外しを可能にする方法およびシステム | |
US5629685A (en) | Segmentable addressable modular communication network hubs | |
US6163824A (en) | Hot plug port adapter with separate PCI local bus and auxiliary bus | |
US9146797B2 (en) | Method for ensuring remediation of hung multiplexer bus channels | |
US10996950B2 (en) | Apparatuses and methods involving selective disablement of side effects caused by accessing register sets | |
US10078568B1 (en) | Debugging a computing device | |
US12105656B2 (en) | Flexibly configured multi-computing-node server mainboard structure and program | |
CN116303207A (zh) | 一种总线传输方法、装置、设备及存储介质 | |
US6567879B1 (en) | Management of resets for interdependent dual small computer standard interface (SCSI) bus controller | |
US6523071B1 (en) | Process and apparatus for configuring the direct memory access transfer mode of a motherboard or host computer | |
CN114302256B (zh) | 一种i2c通信防冲突方法及系统 | |
JPS58502027A (ja) | 低デ−タ転送率の直列入出力インタ−フェイスをモニタするようにされた周辺装置 | |
US20120324078A1 (en) | Apparatus and method for sharing i/o device | |
CN114296976A (zh) | 一种i2c通信故障恢复方法及系统 | |
US7213163B2 (en) | Restoring power in a hot swappable multi-server data processing environment | |
US20170300435A1 (en) | Direct memory access control device for at least one computing unit having a working memory | |
CN115473749A (zh) | 基于单片机控制实现网卡bypass功能的方法及电路 | |
US20090119420A1 (en) | Apparatus and method for scaleable expanders in systems management | |
CN116126769A (zh) | 用于串行总线的隔离电路及设备隔离方法 | |
EP0577110A2 (en) | Dual bus local area metwork interfacing system | |
US6598111B1 (en) | Backplane physical layer controller | |
US10795848B2 (en) | Dual way communication method, system, and master device thereof | |
CN111865411A (zh) | 一种交换机光模块监控方法、装置及相关组件 | |
US7239633B1 (en) | Ethernet switch and method of switching | |
KR20020065628A (ko) | 메모리 내장 자기 시험으로 외부 메모리를 실험하기위한방법 및 장치 |
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 |