CN114296976A - 一种i2c通信故障恢复方法及系统 - Google Patents

一种i2c通信故障恢复方法及系统 Download PDF

Info

Publication number
CN114296976A
CN114296976A CN202111588072.9A CN202111588072A CN114296976A CN 114296976 A CN114296976 A CN 114296976A CN 202111588072 A CN202111588072 A CN 202111588072A CN 114296976 A CN114296976 A CN 114296976A
Authority
CN
China
Prior art keywords
bus
cpld
target
repair
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.)
Pending
Application number
CN202111588072.9A
Other languages
English (en)
Inventor
胡守锋
赖国洪
刘伟
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Ruijie Networks Co Ltd
Original Assignee
Ruijie Networks Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Ruijie Networks Co Ltd filed Critical Ruijie Networks Co Ltd
Priority to CN202111588072.9A priority Critical patent/CN114296976A/zh
Publication of CN114296976A publication Critical patent/CN114296976A/zh
Pending legal-status Critical Current

Links

Images

Landscapes

  • Small-Scale Networks (AREA)

Abstract

本发明实施例提供一种I2C通信故障恢复方法及系统,在目标主设备和目标从设备通过CPLD进行通信的过程中,CPLD确定后端I2C总线故障,然后控制前端I2C总线断开,并向目标从设备发送修复信号,以对故障的后端I2C总线进行修复,确定故障的后端I2C总线修复成功,控制前端I2C总线导通,其中,前端I2C总线用于连接目标主设备和CPLD,后端I2C总线用于连接目标从设备和CPLD。其中CPLD具有修复功能,通过向目标从设备发送修复信号以对故障的后端I2C总线进行修复,然后控制前端I2C总线和后端I2C总线均导通,提高了I2C通信的可靠性。

Description

一种I2C通信故障恢复方法及系统
技术领域
本发明涉及通信技术领域,特别涉及一种I2C通信故障恢复方法及系统。
背景技术
交换机(Switch)意为“开关”,是一种用于电(光)信号转发的网络设备,它可以为接入交换机的任意两个网络节点提供独享的电信号通路。
交换机中一般配备多个电源、风扇、端口等从设备,这些模块或芯片常常通过双向二线制同步串行总线(Inter-Integrated Circuit,I2C)接口接到基板管理控制器(Baseboard Manager Controller,BMC)或中央处理器(Central Processing Unit,CPU)管理芯片等主设备,即这些设备之间是通过I2C总线进行通信的。对于某一种从设备例如电源,一般都是批量生产的,其I2C地址是相同,在通信时容易产生冲突问题,并且通过I2C进行通信时从设备也容易出现故障,故障后通信将不能继续进行,影响通信的可靠性。
因此,如何提高I2C总线进行通信时的可靠性,是本领域技术人员亟待解决的问题。
发明内容
本发明实施例提供了一种I2C通信故障恢复方法及系统,用以解决现有技术中利用I2C总线进行通信时不可靠的问题。
第一方面,本发明实施例提供了一种I2C通信故障恢复方法,所述方法包括:
在目标主设备和目标从设备通过CPLD进行通信的过程中,所述CPLD确定后端I2C总线故障;
所述CPLD控制前端I2C总线断开,并向所述目标从设备发送修复信号,以对故障的后端I2C总线进行修复;
所述CPLD确定所述故障的后端I2C总线修复成功,控制所述前端I2C总线导通;
其中,所述前端I2C总线用于连接所述目标主设备和所述CPLD,所述后端I2C总线用于连接所述目标从设备和所述CPLD。
在一种可能的实现方式中,所述CPLD确定后端I2C总线故障,包括:
所述CPLD确定所述后端I2C总线中的SDA或SCL为低电平的时长超过第一预设时长;或
所述CPLD确定通过所述后端I2C总线接收到起始符后的第二预设时长内未接收到结束符。
在一种可能的实现方式中,所述修复信号包括预设数量的SCL脉冲。
在一种可能的实现方式中,所述CPLD确定所述故障的后端I2C总线修复成功,包括:
所述CPLD向所述目标从设备发送修复校验信号;
若所述CPLD接收到所述目标从设备发送的响应信号,则确定所述故障的后端I2C总线修复成功。
在一种可能的实现方式中,所述修复校验信号包括I2C地址探测波形。
在一种可能的实现方式中,通过下列方式使所述目标主设备和所述目标从设备通过所述CPLD进行通信:
所述CPLD根据至少一个主设备发送的起始符的到达时刻,选择目标主设备;
所述CPLD根据预设规则,从多个具有相同I2C地址的从设备中选择目标从设备,以使所述目标主设备与所述目标从设备通过CPLD进行通信。
第二方面,本发明实施例还提供一种I2C通信故障恢复系统,所述系统包括目标主设备、CPLD、目标从设备;
在目标主设备和目标从设备通过CPLD进行通信的过程中,所述CPLD确定后端I2C总线故障;
所述CPLD控制前端I2C总线断开,并向所述目标从设备发送修复信号,以对故障的后端I2C总线进行修复;
所述CPLD确定所述故障的后端I2C总线修复成功,控制所述前端I2C总线导通;
其中,所述前端I2C总线用于连接所述目标主设备和所述CPLD,所述后端I2C总线用于连接所述目标从设备和所述CPLD。
在一种可能的实现方式中,所述CPLD确定后端I2C总线故障,包括:
所述CPLD确定所述后端I2C总线中的SDA或SCL为低电平的时长超过第一预设时长;或
所述CPLD确定通过所述后端I2C总线接收到起始符后的第二预设时长内未接收到结束符。
在一种可能的实现方式中,所述修复信号包括预设数量的SCL脉冲。
在一种可能的实现方式中,所述CPLD确定所述故障的后端I2C总线修复成功,包括:
所述CPLD向所述目标从设备发送修复校验信号;
若所述CPLD接收到所述目标从设备发送的响应信号,则确定所述故障的后端I2C总线修复成功。
在一种可能的实现方式中,所述修复校验信号包括I2C地址探测波形。
在一种可能的实现方式中,通过下列方式使所述目标主设备和所述目标从设备通过所述CPLD进行通信:
所述CPLD根据至少一个主设备发送的起始符的到达时刻,选择目标主设备;
所述CPLD根据预设规则,从多个具有相同I2C地址的从设备中选择目标从设备,以使所述目标主设备与所述目标从设备通过CPLD进行通信。
本发明实施例提供的I2C通信故障恢复方法及系统,在目标主设备和目标从设备通过CPLD进行通信的过程中,CPLD确定后端I2C总线故障,然后控制前端I2C总线断开,并向目标从设备发送修复信号,以对故障的后端I2C总线进行修复,确定故障的后端I2C总线修复成功,控制前端I2C总线导通,其中,前端I2C总线用于连接目标主设备和CPLD,后端I2C总线用于连接目标从设备和CPLD。其中CPLD具有修复功能,通过向目标从设备发送修复信号以对故障的后端I2C总线进行修复,然后控制前端I2C总线和后端I2C总线均导通,提高了I2C通信的可靠性。
附图说明
为了更清楚地说明本申请的技术方案,下面将对实施例描述中所需要使用的附图作简要介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种I2C通信故障恢复方法的流程示意图;
图2为本发明实施例提供的一种I2C通信故障恢复的场景示意图;
图3a为本发明实施例提供的另一种I2C通信故障恢复的场景示意图;
图3b为本发明实施例提供的另一种I2C通信故障恢复的场景示意图;
图4为本发明实施例提供的一种I2C通信故障恢复系统的示意图;
图5为本发明实施例提供的另一种I2C通信故障恢复系统的示意图;
图6a为本发明实施例提供的一种前端I2C总线选通的示意图;
图6b为本发明实施例提供的另一种前端I2C总线选通的示意图;
图7为本发明实施例提供的另一种I2C通信故障恢复系统的示意图;
图8为本发明实施例提供的另一种I2C通信故障恢复系统的示意图;
图9为本发明实施例提供的寄存器与从设备对应关系的示意图;
图10为本发明实施例提供的另一种I2C通信故障恢复系统的示意图。
具体实施方式
为了使本申请的目的、技术方案和优点更加清楚,下面将结合附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员所获得的所有其他实施例,都属于本申请保护的范围。
交换机是一种用于电(光)信号转发的网络设备,它可以为接入交换机的任意两个网络节点提供独享的电信号通路。在交换机的组成中,通常包括BMC或CPU管理芯片等主设备以及多个电源、风扇、端口等从设备。当这些从设备与主设备进行通信时,若其中一个从设备异常或者发生故障,特别是从设备强制占用I2C总线时,主设备将无法对其他从设备进行访问,造成设备瘫痪,影响通信。
为解决上述问题,本发明实施例提供了一种I2C通信故障恢复方法,如图1所示,包括:
S101、在目标主设备和目标从设备通过CPLD进行通信的过程中,CPLD确定后端I2C总线故障;
S102、CPLD控制前端I2C总线断开,并向目标从设备发送修复信号,以对故障的后端I2C总线进行修复;
S103、CPLD确定故障的后端I2C总线修复成功,控制前端I2C总线导通,其中,前端I2C总线用于连接目标主设备和CPLD,后端I2C总线用于连接目标从设备和CPLD。
本发明实施例提供的I2C通信故障恢复方法,在目标主设备和目标从设备通过CPLD进行通信的过程中,CPLD确定后端I2C总线故障,然后控制前端I2C总线断开,并向目标从设备发送修复信号,以对故障的后端I2C总线进行修复,确定故障的后端I2C总线修复成功,控制前端I2C总线导通,其中,前端I2C总线用于连接目标主设备和CPLD,后端I2C总线用于连接目标从设备和CPLD。其中CPLD具有修复功能,通过向目标从设备发送修复信号以对故障的后端I2C总线进行修复,然后控制前端I2C总线和后端I2C总线均导通,提高了I2C通信的可靠性。
在具体实施中,如图2所示,I2C总线上传输的信号包括串行时钟线SCL和串行数据线SDA,首先CPLD10确定后端I2C总线故障,确定故障的判断方式包括:CPLD10确定后端I2C总线中的SDA或SCL为低电平的时长超过第一预设时长;或CPLD10确定通过后端I2C总线接收到起始符后的第二预设时长内未接收到结束符。
在正常通信时,SDA或者SCL的低电平持续时间很短,远远小于3秒,这里的第一预设时长可以为3秒钟,所以若CPLD10检测到SDA或者SCL的拉低时间超过3秒,代表与目标从设备300相连的后端I2C总线发生故障;同样的,在进行正常通信时,目标从设备300发送信号的开始会发送起始符,通信完成之后会发送结束符,正常情况下起始符和结束符之间的间隔时间远远小于3分钟,这里的第二预设时长可以为3分钟,所以若CPLD10确定通过后端I2C总线接收到起始符后的第二预设时长内未接收到结束符,代表与目标从设备300相连的后端I2C总线发生故障。
本发明实施例提供的故障检测方法简单可靠,可以及时检测到发生故障的后端I2C总线,便于后续进行修复,从而提高通信的可靠性。
在具体实施中,如图3a所示,在CPLD10检测到与目标从设备300连接的后端I2C总线发生故障后,断开与目标主设备200连接的前端I2C总线,并向目标从设备300发送修复信号,根据I2C协议的规定,本发明实施中的修复信号可以为预设数量的SCL脉冲,具体可以为9个SCL脉冲。
本发明实施例提供的修复信号符合I2C协议的相关要求,修复过程高效快捷,修复成功率高,不易出现紊乱。
在CPLD10发送修复信号之后,还需要检验是否修复成功,如图3b所示,CPLD10确定故障的后端I2C总线修复成功,包括:CPLD10向目标从设备300发送修复校验信号,若CPLD10接收到目标从设备300发送的响应信号,则确定故障的后端I2C总线修复成功,然后导通与目标主设备200连接的前端I2C总线;若CPLD10没有接收到响应信号,则继续保持前端I2C总线保持断开状态,此时可以认定故障原因非软件原因,直接判定为硬件原因,减少了故障排查时间,这样也保证了软件的正常报警功能,同时不会影响软件访问其他正常的从设备。
本发明实施例中的修复校验信号可以包括I2C地址探测波形,为节约时间,所探测的地址仅仅覆盖所有从设备的地址即可。
基于相同的发明构思,本发明实施例还提供了一种I2C通信故障恢复系统,如图4所示,该系统包括主设备20(以2个主设备为例)、CPLD10和从设备30(以28个从设备为例),CPLD10与主设备20、从设备30之间通过I2C总线连接。
CPLD10,用于根据至少一个主设备20发送的起始符的到达时刻,选择目标主设备,并根据预设规则,从多个具有相同I2C地址的从设备30中选择目标从设备,以使目标主设备与目标从设备进行通信。
本发明实施例提供的I2C通信故障恢复系统,CPLD10根据至少一个主设备20发送的起始符的到达时刻,选择目标主设备,并根据预设规则,从多个具有相同I2C地址的从设备30中选择目标从设备,以使目标主设备与目标从设备进行通信。由于目标从设备是通过CPLD10根据预设规则进行选择的,经过选择得到的目标从设备的I2C地址是唯一的,CPLD10经过选择得到的目标主设备和目标从设备在进行通信时不会产生I2C地址冲突的问题,从而提高了通信的可靠性。
在具体实施中,如图4所示,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地址的从设备中选择目标从设备。
在一种实施例中,如图5所示,前端I2C总线和后端I2C总线都可以通过电阻上拉到单独的电源上,具有不同地址的主设备20和从设备30分别工作在不同的电源域。不同电源域的主设备以及从设备可以相互隔离,有助于实现对不同电源域单独上下电控制,避免电源污染。
很多交换机都是CPU和BMC双主控制的I2C总线,CPU和BMC同时作为主设备时在通信时也容易产生冲突,因此本发明实施例采用I2C主端选通模块101进行选择,在同一时间仅允许一个主设备进行通信,避免双主冲突的产生。
在具体实施中,I2C主端选通模块101根据至少一个主设备20发送的起始符的到达时刻,选择目标主设备,包括:I2C主端选通模块101将最先到达的起始符对应的主设备20作为目标主设备。
例如,主设备1为BMC,主设备2为CPU,如图5所示,I2C主端选通模块101同时检测前端I2C总线1和前端I2C总线2,根据BMC或者CPU发送的起始符的到达的时间顺序,来决定总线占用。当BMC发送的起始符先到达I2C主端选通模块101时,将BMC作为目标主设备,I2C主端选通模块101锁定前端I2C总线1作为有效通道,如图6a所示;当CPU发送的起始符先到达I2C主端选通模块101时,CPU为目标主设备,I2C主端选通模块101锁定前端I2C总线2作为有效通道,如图6b所示。
在具体实施中,I2C主端选通模块101根据至少一个主设备发送的起始符的到达时刻,选择目标主设备之后,I2C主端选通模块101导通其与目标主设备之间的前端I2C总线,例如图6a中的前端I2C总线1导通,图6b中的前端I2C总线2导通。本发明实施例中,有效通道锁定过程中,另一个主设备发送的信号都是与后级断开的,例如图6b中,当CPU与I2C主端选通模块101之间的前端I2C总线2作为有效通道导通时,BMC与I2C主端选通模块101之间的前端I2C总线1是断开的。
在具体实施中,目标主设备与目标从设备进行通信之后,还包括:I2C主端选通模块101根据目标主设备发送的结束符或故障标志位,断开其与目标主设备之间的前端I2C总线,即有效通道锁定之后,需要等待目标主设备发送结束符或者故障标志位才能释放锁定。释放锁定之后,任何主设备都没有与后级相连,即主设备20与I2C主端选通模块101之间的所有前端I2C总线都是断开的,必须等待下一次目标主设备发送起始符才能导通相应的前端I2C总线进行通信。
本发明实施例中的I2C主端选通模块101通过简单的软件编程就可以控制至少两个前端I2C总线中的一个进行导通,不需要额外的芯片开销,就可以解决双主设备进行通信时容易产生冲突的问题。
在具体实施中,如图7所示,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个,如图8所示,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个寄存器,具体信息如下表所示。
Figure BDA0003428751170000101
Figure BDA0003428751170000111
表1
本发明实施例在I2C从端选通模块102中集成了一个芯片地址为0x70的内部寄存器,并定义了0x01-0x05这5个寄存器。其中,0x01寄存器作为电源从设备I2C选通寄存器,控制后端I2C总线1-2的连通状态;0x02寄存器作为风扇从设备I2C选通寄存器,控制后端I2C总线3-8的连通状态;0x03寄存器、0x04寄存器和0x05寄存器均作为端口从设备I2C选通寄存器,控制后端I2C总线9-28的连通状态。
具体的,寄存器与各个从设备的对应关系如图9所示,下面进行举例说明本发明实施例的I2C从端选通模块102进行选通的过程。
电源从设备的I2C地址为0x50,具有相同I2C地址(0x50)的2个电源从设备1和电源从设备2的标识分别为PSU1和PSU2,I2C解析模块103首先通过I2C总线,获取具有相同地址的至少一个从设备的标识,例如同时获取到PSU1和PSU2,从图9中可以看出与PSU1和PSU2对应的寄存器地址为0x01,然后将此地址为0x01的寄存器的数据写入到该寄存器中,即将有效值1写入到电源从设备1(PSU1)和电源从设备2(PSU2)对应的存储位置Bit0和Bit1;
风扇从设备的I2C地址为0x55,具有相同I2C地址(0x55)的6个风扇从设备3-8的标识分别为FAN3-FAN8,I2C解析模块首先通过I2C总线,获取具有相同地址的至少一个从设备的标识,例如获取到FAN3,从图9中可以看出与FAN3对应的寄存器地址为0x02,然后将此地址为0x02的寄存器的数据写入到该寄存器中,即将有效值1写入到风扇从设备3(FAN3)对应的存储位置Bit0;
端口从设备的I2C地址为0x56,具有相同I2C地址(0x56)的20个端口从设备9-28的标识分别为DK9-DK28,I2C解析模块首先通过I2C总线,获取具有相同地址的至少一个从设备的标识,例如获取到DK9、DK17和DK25,从图9中可以看出与DK9、DK17和DK25分别对应的寄存器地址为0x03-0x05,然后将这些地址为0x03-0x05的寄存器的数据写入到相应的寄存器中,即将有效值1分别写入到端口从设备9(DK9)对应的存储位置Bit0、端口从设备17(DK17)对应的存储位置Bit0和端口从设备25(DK25)对应的存储位置Bit0。
综上,写入寄存器中的内容如下表(表2)所示。
Figure BDA0003428751170000121
Figure BDA0003428751170000131
表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总线通道,故障后自动隔离通道,不需要软件发起复位信号。
在一种实施例中,CPLD10还包括修复模块105和修复校验模块106,如图10所示,修复模块105用于向目标从设备300发送9个SCL脉冲,尝试与目标从设备300连接的故障的后端I2C总线的修复;修复校验模块106用于向目标从设备300发送修复校验信号,该修复校验信号可以为地址探测波形,为节约时间,所探测的地址仅仅覆盖所有从设备30的地址即可,例如本发明实施例中电源从设备地址是0x50,风扇从设备地址是0x55,端口从设备的地址是0x56,所以仅需要发送这3个地址的探测波形即可。
本发明实施例中的修复模块105和修复校验模块106通过I2C协议可以修复软件行为的故障,而对于模块硬件短路或断路这类故障是无法恢复的,即恢复失败的模块,就可以定位为硬件故障,减少了故障排查时间。
本发明实施例提供的I2C通信故障恢复方法及系统,在目标主设备200和目标从设备300通过CPLD10进行通信的过程中,CPLD10确定后端I2C总线故障,然后控制前端I2C总线断开,并向目标从设备300发送修复信号,以对故障的后端I2C总线进行修复,确定故障的后端I2C总线修复成功,控制前端I2C总线导通,其中,前端I2C总线用于连接目标主设备和CPLD,后端I2C总线用于连接目标从设备和CPLD。其中CPLD10具有修复功能,通过向目标从设备300发送修复信号以对故障的后端I2C总线进行修复,然后控制前端I2C总线和后端I2C总线均导通,提高了I2C通信的可靠性。
此外,本发明实施例提供的I2C通信故障恢复系统硬件电路简单、成本低,不需要额外的芯片开销,就可以解决I2C总线的相同地址冲突问题以及多个主设备的冲突问题。
本发明以电源从设备、风扇从设备和端口从设备这些I2C地址会冲突的从设备为例,介绍了相同地址在交换机系统的处理方法,但不限于交换机系统,如服务器或其它系统也同样适用,本发明并非局限于文中所描述的例子,任何本领域的技术人员能思之的变化都应落在本发明的保护范围内。
显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。

Claims (10)

1.一种内置集成电路I2C通信故障恢复方法,其特征在于,所述方法包括:
在目标主设备和目标从设备通过复杂可编程逻辑器件CPLD进行通信的过程中,所述CPLD确定后端I2C总线故障;
所述CPLD控制前端I2C总线断开,并向所述目标从设备发送修复信号,以对故障的后端I2C总线进行修复;
所述CPLD确定所述故障的后端I2C总线修复成功,控制所述前端I2C总线导通;
其中,所述前端I2C总线用于连接所述目标主设备和所述CPLD,所述后端I2C总线用于连接所述目标从设备和所述CPLD。
2.如权利要求1所述的方法,其特征在于,所述CPLD确定后端I2C总线故障,包括:
所述CPLD确定所述后端I2C总线中的串行数据线SDA或串行时钟线SCL为低电平的时长超过第一预设时长;或
所述CPLD确定通过所述后端I2C总线接收到起始符后的第二预设时长内未接收到结束符。
3.如权利要求1所述的方法,其特征在于,所述修复信号包括预设数量的SCL脉冲。
4.如权利要求1所述的方法,其特征在于,所述CPLD确定所述故障的后端I2C总线修复成功,包括:
所述CPLD向所述目标从设备发送修复校验信号;
若所述CPLD接收到所述目标从设备发送的响应信号,则确定所述故障的后端I2C总线修复成功。
5.如权利要求4所述的方法,其特征在于,所述修复校验信号包括I2C地址探测波形。
6.如权利要求1-5任一所述的方法,其特征在于,通过下列方式使所述目标主设备和所述目标从设备通过所述CPLD进行通信:
所述CPLD根据至少一个主设备发送的起始符的到达时刻,选择目标主设备;
所述CPLD根据预设规则,从多个具有相同I2C地址的从设备中选择目标从设备,以使所述目标主设备与所述目标从设备通过CPLD进行通信。
7.一种内置集成电路I2C通信故障恢复系统,其特征在于,所述系统包括目标主设备、复杂可编程逻辑器件CPLD、目标从设备;
在目标主设备和目标从设备通过CPLD进行通信的过程中,所述CPLD确定后端I2C总线故障;
所述CPLD控制前端I2C总线断开,并向所述目标从设备发送修复信号,以对故障的后端I2C总线进行修复;
所述CPLD确定所述故障的后端I2C总线修复成功,控制所述前端I2C总线导通;
其中,所述前端I2C总线用于连接所述目标主设备和所述CPLD,所述后端I2C总线用于连接所述目标从设备和所述CPLD。
8.如权利要求7所述的系统,其特征在于,所述CPLD确定后端I2C总线故障,包括:
所述CPLD确定所述后端I2C总线中的串行数据线SDA或串行时钟线SCL为低电平的时长超过第一预设时长;或
所述CPLD确定通过所述后端I2C总线接收到起始符后的第二预设时长内未接收到结束符。
9.如权利要求7所述的系统,其特征在于,所述修复信号包括预设数量的SCL脉冲。
10.如权利要求7所述的系统,其特征在于,所述CPLD确定所述故障的后端I2C总线修复成功,包括:
所述CPLD向所述目标从设备发送修复校验信号;
若所述CPLD接收到所述目标从设备发送的响应信号,则确定所述故障的后端I2C总线修复成功。
CN202111588072.9A 2021-12-23 2021-12-23 一种i2c通信故障恢复方法及系统 Pending CN114296976A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202111588072.9A CN114296976A (zh) 2021-12-23 2021-12-23 一种i2c通信故障恢复方法及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202111588072.9A CN114296976A (zh) 2021-12-23 2021-12-23 一种i2c通信故障恢复方法及系统

Publications (1)

Publication Number Publication Date
CN114296976A true CN114296976A (zh) 2022-04-08

Family

ID=80968952

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111588072.9A Pending CN114296976A (zh) 2021-12-23 2021-12-23 一种i2c通信故障恢复方法及系统

Country Status (1)

Country Link
CN (1) CN114296976A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115982086A (zh) * 2023-02-14 2023-04-18 井芯微电子技术(天津)有限公司 一种芯片原型验证板

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115982086A (zh) * 2023-02-14 2023-04-18 井芯微电子技术(天津)有限公司 一种芯片原型验证板

Similar Documents

Publication Publication Date Title
US7039734B2 (en) System and method of mastering a serial bus
US5629685A (en) Segmentable addressable modular communication network hubs
JP3327559B2 (ja) フィーチャ・カードのコンピュータへの非破壊的活状態挿入およびコンピュータからの非破壊的活状態取外しを可能にする方法およびシステム
US20150074306A1 (en) Single Wire Communications Interface and Protocol
CN106649180A (zh) 一种解除i2c总线死锁的方法及装置
CN101436154A (zh) 计算机主板开关机测试系统及方法
CN111538319B (zh) 一种can总线控制器并行测试方法
US5680113A (en) Dynamic address assignments to serially connected devices
CN101494564B (zh) 一种电源监控装置及单板热备份的实现方法
CN108712308B (zh) 虚拟网络中检测网络设备的方法和装置
CN114296976A (zh) 一种i2c通信故障恢复方法及系统
CN105915518B (zh) 一种以太网数据帧实时解析方法及装置
CN114356671A (zh) 板卡调试装置、系统及方法
US8391162B2 (en) Apparatus and method for testing SMNP cards
CN115473749B (zh) 基于单片机控制实现网卡bypass功能的方法及电路
KR100684130B1 (ko) 고유 버스 프로토콜을 사용하여 동기 버스를 임의의길이만큼 확장하는 방법 및 시스템
CN114302256B (zh) 一种i2c通信防冲突方法及系统
KR20180007950A (ko) 버스 네트워크 연결 회로 및 동작 방법
CN112463707A (zh) 一种i2c链路管理系统及方法
CN111865411A (zh) 一种交换机光模块监控方法、装置及相关组件
CN113765827B (zh) 一种交换机固件保护系统
CN1319339C (zh) 一种单板信息的配置方法及装置
JP2001245476A (ja) 電源装置
CN117933153B (zh) I3c总线验证系统
JP2847957B2 (ja) 増設システム

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