CN112463707B - 一种i2c链路管理系统及方法 - Google Patents
一种i2c链路管理系统及方法 Download PDFInfo
- Publication number
- CN112463707B CN112463707B CN202011460171.4A CN202011460171A CN112463707B CN 112463707 B CN112463707 B CN 112463707B CN 202011460171 A CN202011460171 A CN 202011460171A CN 112463707 B CN112463707 B CN 112463707B
- Authority
- CN
- China
- Prior art keywords
- slave
- signal
- sda
- control module
- link
- 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
- 238000000034 method Methods 0.000 title claims abstract description 16
- 238000007726 management method Methods 0.000 claims description 31
- 238000011084 recovery Methods 0.000 claims description 27
- 238000012544 monitoring process Methods 0.000 claims description 10
- 238000002955 isolation Methods 0.000 claims description 7
- 238000010586 diagram Methods 0.000 description 9
- 238000013461 design Methods 0.000 description 4
- 230000009286 beneficial effect Effects 0.000 description 3
- 230000002159 abnormal effect Effects 0.000 description 2
- 230000005856 abnormality Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
Images
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
- G06F13/4291—Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus using a clocked protocol
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)
- Debugging And Monitoring (AREA)
Abstract
本申请公开了一种I2C链路管理系统及方法,该系统包括:I2C MASTER主设备、多个I2C SLAVE从设备和一CPLD,CPLD包括I2C接口和多个I2C控制模块,每个I2C控制模块匹配一个I2C SLAVE从设备,多个I2C控制模块依次串联连接,I2C接口的一端连接I2C MASTER主设备的控制端,另一端连接多个I2C控制模块中的第一级I2C控制模块。该方法包括:持续采集任一I2C控制模块的I2C_SDA_IN信号;判断是否为低电平;如果是,判断其保持低电平的时间是否≥设定的时间;如果是,判定I2C_SDA_IN信号所在的I2C链路出现挂死现象;当出现挂死后断开I2C_SDA_IN信号所在的I2C链路与后端I2C SLAVE从设备的链接;否则重新采集I2C_SDA_IN信号。如果是高电平,否则将保持低电平的时间清零。通过本申请,能够有效提高I2C链路管理效率和稳定性。
Description
技术领域
本申请涉及服务器I2C(Inter-Integrated Circuit,用于连接微控制器及其外围设备的总线)总线架构设计技术领域,特别是涉及一种I2C链路管理系统及方法。
背景技术
I2C是服务器中常见的一种主从架构两线制串行通信总线,随着服务器技术的发展,服务系统中需要监控的信息越来越多,相应地,同一条I2C链路中接入的I2C从设备日益增多。如何设计I2C链路架构以及对I2C链路进行管理,从而提高I2C链路的工作效率,是个重要的技术问题。
目前的I2C总线链路架构可以参见图1所示。图1中I2C MASTER(I2C主控制器)表示:IIC链路中的主控制器端,可以连接多个IIC从设备,监测链路中的从设备信息并进行参数控制;IIC SLAVE_N表示:IIC链路中的从设备端,例如:Sensor(传感器),CPLD(ComplexProgrammable Logic Device,复杂可编程逻辑器件)等设备,可以向IIC主控制器提供系统的温度、开机状态、电源保护等信息,并可以接受IIC主控制器的控制;IIC MASTER和IICSLAVE通过IIC总线进行互连,且多个IIC SLAVE设备共同连接在一个IIC MASTER接口。
然而,目前的I2C总线链路架构中,由于多个IIC SLAVE设备共同连接在一个IICMASTER接口,当多个IIC SLAVE中有一个设备出现IIC总线挂死等相关异常时,SDA(synchronous Data Adapter,串行数据线)会被一直拉低,会造成整个IIC链路的所有设备无法访问和读写,整个IIC链路将无法使用,导致I2C链路的管理效率较低,稳定性较差。
发明内容
本申请提供了一种I2C链路管理系统及方法,以解决现有技术中的I2C链路架构使得I2C管理效率较低,稳定性较差的问题。
为了解决上述技术问题,本申请实施例公开了如下技术方案:
一种I2C链路管理系统,所述系统包括:一个I2C MASTER主设备、多个I2C SLAVE从设备,且所述I2C MASTER主设备和多个I2C SLAVE从设备之间设置有CPLD,所述CPLD中包括:I2C接口和多个I2C控制模块,多个I2C控制模块之间依次串联连接,且任一I2C控制模块连接一个I2C SLAVE从设备,所述I2C接口的一端连接所述I2C MASTER主设备的控制端,所述I2C接口的另一端连接多个I2C控制模块中的第一级I2C控制模块;
所述任一I2C控制模块,用于监测I2C链路状态,根据所述I2C链路状态确定挂死的I2C SLAVE从设备,并对挂死的I2C SLAVE从设备进行隔离。
可选地,所述任一I2C控制模块包括:
I2C数据信号开关单元,用于根据所获取的信号,控制I2C链路中与所述任一I2C控制模块连接的I2C SLAVE从设备的数字信号通断,且所述I2C数据信号开关单元的输入端连接上一级I2C控制模块的数据输出端以及下一级I2C控制模块的数据输入端,所述I2C数据信号开关单元的输出端通过I2C_SDA Slave信号连接所述I2C SLAVE从设备,所述I2C_SDASlave信号为I2C SLAVE从设备的数据信号;
I2C时钟信号开关单元,用于根据所获取的信号,控制I2C链路中与所述任一I2C控制模块连接的I2C SLAVE从设备的时钟信号通断,且所述I2C时钟信号开关单元的输入端连接上一级I2C控制模块的时钟输出端以及下一级I2C控制模块的时钟输入端,所述I2C时钟信号开关单元的输出端通过I2C_SCL Slave信号连接所述I2C SLAVE从设备,所述I2C_SCLSlave信号为I2C SLAVE从设备的时钟信号;
计数器单元,用于监测所述任一I2C控制模块的I2C_SDA_IN信号被拉低的时间是否达到设定的时间,且当达到设定的时间时向所述I2C数据信号开关单元和I2C时钟信号开关单元发送断开信号,所述I2C_SDA_IN信号为输入数据信号。
可选地,当所述任一I2C控制模块为第一级I2C控制模块时,所述I2C数据信号开关单元的输入端连接CPLD的I2C接口,且所述I2C时钟信号开关单元的输入端连接CPLD的I2C接口。
可选地,所述任一I2C控制模块中还包括:时钟发生单元,用于当所述任一I2C控制模块的I2C_SDA_IN信号与I2C_SCL Slave信号断开后,通过向所述I2C SLAVE从设备发送时钟信号,确认后端挂死现象是否恢复。
可选地,所述设定的时间为120微秒。
一种I2C链路管理方法,所述方法应用于如上所述的一种I2C链路管理系统,所述方法包括:
持续采集任一I2C控制模块的I2C_SDA_IN信号,所述I2C_SDA_IN信号为输入数据信号;
判断所述I2C_SDA_IN信号是否为低电平;
如果所述I2C_SDA_IN信号为低电平,判断所述I2C_SDA_IN信号保持低电平的时间是否≥设定的时间;
如果所述I2C_SDA_IN信号保持低电平的时间≥设定的时间,判定所述I2C_SDA_IN信号所在的I2C链路出现挂死现象;
断开所述I2C_SDA_IN信号所在的I2C链路与后端I2C SLAVE从设备的链接;
如果所述I2C_SDA_IN信号保持低电平的时间<设定的时间,重新持续采集任一I2C控制模块的I2C_SDA_IN信号;
如果所述I2C_SDA_IN信号为高电平,将所述I2C_SDA_IN信号保持低电平的时间清零,并重新持续采集任一I2C控制模块的I2C_SDA_IN信号。
可选地,所述方法还包括:
判断I2C_SDA Slave信号是否为低电平;
如果I2C_SDA Slave信号为低电平,判定与所述I2C_SDA Slave信号连接的I2CSLAVE从设备出现挂死现象;
利用时钟脉冲信号,对I2C SLAVE从设备挂死现象进行校验。
可选地,所述利用时钟脉冲信号,对I2C SLAVE从设备挂死现象进行校验,包括:
向I2C SLAVE从设备发送多组时钟脉冲信号;
重新判断所述I2C_SDA Slave信号是否为低电平;
如果所述I2C_SDA Slave信号为低电平,判定后端I2C SLAVE从设备没有恢复正常;
控制恢复失效次数加一,重新持续采集任一I2C控制模块的I2C_SDA_IN信号;
如果所述I2C_SDA Slave信号为高电平,判定I2C SLAVE从设备恢复正常;
将I2C SLAVE从设备重新接入所述I2C_SDA_IN信号所在的I2C链路。
可选地,所述方法还包括:
判断恢复失效次数是否≥设定的恢复失效次数;
如果是,判定I2C SLAVE从设备无法恢复,对其保持断开隔离状态;
如果否,控制恢复失效次数加一,并重新持续采集任一I2C控制模块的I2C_SDA_IN信号。
可选地,所述设定的恢复失效次数为3。
本申请的实施例提供的技术方案可以包括以下有益效果:
本申请提供一种I2C链路管理系统,该系统主要包括一个I2C MASTER主设备、多个I2C SLAVE从设备和一个CPLD,且CPLD设置于I2C MASTER主设备和多个I2C SLAVE从设备之间。该CPLD包括I2C接口和多个I2C控制模块,每个I2C控制模块匹配一个I2C SLAVE从设备,多个I2C控制模块之间依次串联连接,I2C接口的一端连接I2C MASTER主设备的控制端,另一端连接多个I2C控制模块中的第一级I2C控制模块。本实施例通过在I2C MASTER主设备和多个I2C SLAVE从设备之间设置一CPLD,且CPLD中设置多个I2C控制模块与多个I2C SLAVE从设备一一对应,能够及时监测每个I2C SLAVE从设备的前端链路状态,从而及时发现和隔离挂死的I2C SLAVE从设备,由于整个监测过程中只对挂死的I2C SLAVE从设备进行隔离,并不影响其他正常I2C SLAVE从设备的运行,因此能够有效避免SDA一直被拉低的情况,避免整个I2C链路的所有设备无法访问和读写的情况,有利于大大提高I2C链路的管理效率,提高整个I2C链路的稳定性。另外,本实施例中CPLD作为I2C MASTER主设备和多个I2CSLAVE从设备的中间通路选择模块,并不影响正常I2C设备传输数据,有利于节省故障处理时间,进一步提高整个I2C链路的稳定性和管理效率。
除了第一级I2C控制模块以外,由于每个I2C控制模块与本级后端I2C SLAVE从设备连接的同时,还与下一级I2C控制模块连接,因此,当本级后端I2C SLAVE从设备发生故障时,并不会影响下一级I2C控制模块所连接的后端I2C SLAVE从设备正常运行,这种结构设计,能够大大提高整个I2C链路运行的稳定性和管理效率。
本申请还提供一种I2C链路管理方法,该方法首先持续采集任一I2C控制模块的输入数据信号,然后判断该输入数据信号是否为低电平,当为低电平时,进一步判断该输入数据信号保持低电平的时间是否达到设定的时间,如果是达到设定的时间,说明该输入数据信号所在的I2C链路出现挂死现象,断开该I2C链路与后端I2C SLAVE从设备的链接,实现及时隔离,有利于提高I2C链路的管理效率。如果输入数据信号保持低电平的时间没有达到设定时间,继续对输入数据信号进行持续监测。且当输入数据信号为高电平时,对之前所记录的保持低电平的时间进行清零,避免影响下次记录,有利于提高监测结果的准确性。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本申请。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本申请的实施例,并与说明书一起用于解释本申请的原理。
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为背景技术中I2C总线链路架构示意图;
图2为本申请实施例所提供的一种I2C链路管理系统的结构示意图;
图3为本申请实施例中I2C总线链路架构示意图;
图4为本申请实施例中任一I2C控制模块的架构示意图;
图5为本申请实施例中I2C控制模块的工作原理示意图;
图6为本申请实施例所提供的一种I2C链路管理方法的流程示意图。
具体实施方式
为了使本技术领域的人员更好地理解本申请中的技术方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。
为了更好地理解本申请,下面结合附图来详细解释本申请的实施方式。
实施例一
参见图2,图2为本申请实施例所提供的一种I2C链路管理系统的结构示意图。由图2可知,本实施例中的I2C链路管理系统,主要包括:一个I2C MASTER主设备、多个I2C SLAVE从设备,且I2C MASTER主设备和多个I2C SLAVE从设备之间设置有CPLD。本实施例的CPLD中包括:I2C接口和多个I2C控制模块,多个I2C控制模块之间依次串联连接,且任一I2C控制模块连接一个I2C SLAVE从设备,I2C接口的一端连接I2C MASTER主设备的控制端,I2C接口的另一端连接多个I2C控制模块中的第一级I2C控制模块。也就是,多个I2C控制模块中,除第一级I2C控制模块外,上一个I2C控制模块的输出端连接下一个I2C控制模块的输入端,每个I2C控制模块除了处于整个串联链路中,还与本级后端I2C SLAVE从设备连接,用于监测I2C链路状态,根据I2C链路状态确定挂死的I2C SLAVE从设备,并对挂死的I2C SLAVE从设备进行隔离。由于每个I2C控制模块的这种连接关系,使得任一链路后端的I2C SLAVE从设备发生故障时,都是及时被监测到且被及时隔离,同时,不会影响其他链路中的I2C SLAVE从设备,因此,这种结构设计,能够大大提高I2C链路控制的准确性,从而提高I2C链路的管理效率。
本实施例中CPLD的选型根据需要连接的I2C SLAVE从设备的数量来确定,根据I2CSLAVE从设备的数量确定CPLD的硬件接口数量以及软件资源分配。
本实施例中I2C总线链路架构示意图,可以参见图3所示。图3中I2C MASTER为I2CMASTER主设备、IIC Port_S为CPLD中的I2C接口,IIC Module1……IIC Module N为N个I2C控制模块,I2C SLAVE 1……I2C SLAVE N为N个I2C SLAVE从设备。由图3可知,I2C MASTER的主控制器端连接到CPLD的IIC接口,同时IIC链路中的每一个从设备连接到CPLD对应的IIC控制模块。在CPLD内部逻辑中,有IIC MASTER接入的IIC连接到与IIC SLAVE对应的IIC控制模块,同时通过IIC控制模块连接下一级IIC SLAVE的IIC控制模块IIC输入,按此方式连接所有IIC SLAVE的IIC控制模块。
进一步地,本实施例中I2C控制模块包括:I2C数据信号开关单元、I2C时钟信号开关单元和计数器单元。
其中,I2C数据信号开关单元,用于根据所获取的信号,控制I2C链路中与任一I2C控制模块连接的I2C SLAVE从设备的数字信号通断,且I2C数据信号开关单元的输入端连接上一级I2C控制模块的数据输出端以及下一级I2C控制模块的数据输入端,I2C数据信号开关单元的输出端通过I2C_SDA Slave信号连接I2C SLAVE从设备。当任一I2C控制模块为第一级I2C控制模块时,I2C数据信号开关单元的输入端连接CPLD的I2C接口,其中,I2C_SDASlave信号为I2C SLAVE从设备的数据信号。
I2C时钟信号开关单元,用于根据所获取的信号,控制I2C链路中与任一I2C控制模块连接的I2C SLAVE从设备的时钟信号通断,且I2C时钟信号开关单元的输入端连接上一级I2C控制模块的时钟输出端以及下一级I2C控制模块的时钟输入端,I2C时钟信号开关单元的输出端通过I2C_SCL Slave信号连接I2C SLAVE从设备,当任一I2C控制模块为第一级I2C控制模块时,I2C时钟信号开关单元的输入端连接CPLD的I2C接口。其中,I2C_SCL Slave信号为I2C SLAVE从设备的时钟信号。
计数器单元,用于监测任一I2C控制模块的I2C_SDA_IN信号被拉低的时间是否达到设定的时间,且当达到设定的时间时向I2C数据信号开关单元和I2C时钟信号开关单元发送断开信号,I2C_SDA_IN信号为输入数据信号。本实施例中设定的时间为120微秒,即:当I2C_SDA_IN信号被拉低的时间达到120微秒时,向I2C数据信号开关单元和I2C时钟信号开关单元发送断开信号,从而控制断开后端I2C SLAVE从设备。
进一步地,本实施例的任一I2C控制模块中还包括有:时钟发生单元,用于当任一I2C控制模块的I2C_SDA_IN信号与I2C_SCL Slave信号断开后,通过向I2C SLAVE从设备发送时钟信号,确认后端挂死现象是否恢复。针对后端挂死现象,本实施例中时钟发生单元还对挂死恢复失效次数进行限定,当多次发送时钟信号,I2C_SDA Slave信号都无法恢复高电平时,表示后端的I2C SLAVE设备无法恢复,需要保持断开隔离状态。
当I2C控制模块中设置时钟发生单元时,本实施例中的计数器单元,除了对I2C_SDA_IN信号被拉低的时间进行计数,还用于对挂死恢复失效次数进行计时。即:计数器单元包括:拉低时间计数器和挂死恢复失效计数器。
图4为本申请实施例中任一I2C控制模块的架构示意图。图4中I2C Module为I2C控制模块,IIC_SDA SW为I2C数据信号开关单元,IIC_SCL SW为I2C时钟信号开关单元,TimerCounter为计数器单元,Pulse Gen为时钟发生单元,IIC_SDA_IN为输入数据信号,IIC_SCL_IN为输入时钟信号,IIC_SDA SLAVE为I2C SLAVE从设备的数据信号,IIC_SCL SLAVE为I2CSLAVE从设备的时钟信号。由图4可知,I2C数据信号开关单元和I2C时钟信号开关单元为I2C控制模块的输入输出连接单元,输入为上一级的I2C_SDA/SCL输入信号,输出是I2C_SDA/SCL_Slave信号,连接后端I2C SLAVE设备,控制I2C链路中对应I2C SLAVE设备的通断。计数器单元通过监测I2C_SDA_IN被拉低的时间是否到达120uS,从而确定I2C链路是否被拉死,进而控制I2C_SDA/SCL SW。在I2C_SCL_IN与后端SLAVE时钟信号断开后,通过时钟发生单元Pulse Gen向后端发送时钟信号,确认后端挂死现象是否恢复。
由图3和图4可知,本实施例中I2C_SDA/SCL_IN连接上一级I2C SLAVE控制模块或者I2C MASTER(即:IIC Module 1)的数据及数据信号,同时,I2C_SDA/SCL_IN还通过I2C_SDA/SCL_Down信号至下一级I2C SLAVE控制模块的数据及数据信号。
本实施例中I2C控制模块的工作原理示意图,可以参见图5所示。由图5可知,本实施例通过持续监测I2C_SDA_IN端电平,判断是否出现保持低电平120uS现象,出现该现象说明整个链路出现I2C挂死现象,从而通过I2C_SDA/SCL SW断开I2C_SDA/SCL_IN与后端I2C_SDA/SCL_SLAVE的连接。此时监测I2C_SDA_SLAVE信号即后端I2C SLAVE设备数据信号状态,正常状态下应当是高电平,若出现低电平,说明是该路I2C SLAVE设备出现异常导致I2C挂死。
通过连接I2C_SCL_SLAVE的Pulse Gen向I2C SLAVE设备发送多组时钟信号,再次监测I2C_SDA_SLAVE信号是否恢复高电平。若恢复高电平状态,I2C SLAVE恢复正常,接入I2C链路;若未恢复高电平恢复失效次数加一,再次从监测I2C_SDA_IN端电平流程开始,到达恢复失效计数最大值结束流程,说明该I2C SLAVE无法恢复,需要保持断开隔离状态。断开异常I2C SLAVE设备连接后,整个I2C链路将恢复正常读写功能。
实施例二
在图2-图5所示实施例的基础之上参见图6,图6为本申请实施例所提供的一种I2C链路管理方法的流程示意图。本实施例中I2C链路管理方法主要应用于如上所述的I2C链路管理系统。由图6可知,本实施例中I2C链路管理方法主要包括如下过程:
S1:持续采集任一I2C控制模块的I2C_SDA_IN信号。其中,I2C_SDA_IN信号为输入数据信号。
S2:判断I2C_SDA_IN信号是否为低电平。
如果I2C_SDA_IN信号为低电平,由图6可知,进一步执行步骤S3:判断I2C_SDA_IN信号保持低电平的时间是否≥设定的时间。
如果I2C_SDA_IN信号保持低电平的时间≥设定的时间,执行步骤S4:判定I2C_SDA_IN信号所在的I2C链路出现挂死现象。
S5:断开I2C_SDA_IN信号所在的I2C链路与后端I2C SLAVE从设备的链接。
此处的断开,包括控制I2C链路中与I2C控制模块相匹配的后端I2C SLAVE从设备的数字信号断开,以及后端I2C SLAVE从设备的时钟信号断开。
如果I2C_SDA_IN信号保持低电平的时间<设定的时间,返回步骤S1,重新持续采集任一I2C控制模块的I2C_SDA_IN信号。
如果I2C_SDA_IN信号为高电平,由图6可知,执行步骤S6:将I2C_SDA_IN信号保持低电平的时间清零,并返回步骤S1,重新持续采集任一I2C控制模块的I2C_SDA_IN信号。
进一步地,本实施例中I2C链路管理方法还包括:
S7:判断I2C_SDA Slave信号是否为低电平。
如果I2C_SDA Slave信号为低电平,执行步骤S8:判定与I2C_SDA Slave信号连接的I2C SLAVE从设备出现挂死现象。
I2C_SDA Slave信号正常状态下为高电平,如果为低电平判定对应的I2C SLAVE从设备出现挂死现象。
S9:利用时钟脉冲信号,对I2C SLAVE从设备挂死现象进行校验。
本实施例中的校验,也就是利用时钟脉冲信号判断I2C SLAVE从设备挂死现象是否恢复。通过校验,能够及时获知I2C SLAVE从设备的后续状态,当I2C SLAVE从设备挂死现象恢复后,便于及时重新接入I2C链路,有利于提高整个I2C链路的工作效率。
具体地,步骤S9包括:
S91:向I2C SLAVE从设备发送多组时钟脉冲信号;
返回步骤S7:重新判断I2C_SDA Slave信号是否为低电平;
如果I2C_SDA Slave信号为低电平,执行步骤S92:判定后端I2C SLAVE从设备没有恢复正常;
S93:控制恢复失效次数加一,返回步骤S1,重新持续采集任一I2C控制模块的I2C_SDA_IN信号;
如果I2C_SDA Slave信号为高电平,执行步骤S94:判定I2C SLAVE从设备恢复正常;
S95:将I2C SLAVE从设备重新接入I2C_SDA_IN信号所在的I2C链路。
进一步地,步骤S9还包括如下过程:
S96:判断恢复失效次数是否≥设定的恢复失效次数;
如果恢复失效次数≥设定的恢复失效次数,执行步骤S97:判定I2C SLAVE从设备无法恢复,对其保持断开隔离状态;
也就是,如果恢复失效次数≥设定的恢复失效次数,此时停止采集任一I2C控制模块的I2C_SDC_IN信号,并判定I2C SLAVE从设备无法恢复,对其保持断开隔离状态。本实施例中设定的恢复失效次数为3。当多次发送时钟信号,I2C_SDA Slave信号都无法恢复高电平时,当恢复失效次数达到3时,表示后端的I2C SLAVE设备无法恢复,需要保持断开隔离状态。
如果恢复失效次数<设定的恢复失效次数,执行步骤S98:控制恢复失效次数加一,并返回步骤S1,重新持续采集任一I2C控制模块的I2C_SDA_IN信号。
结合恢复失效次数的设置,本实施例中,步骤S6中除了将I2C_SDA_IN信号保持低电平的时间清零,还包括将恢复失效次数清零。
该实施例中未详细描述的部分可以参照图2-图5所示的实施例二,两个实施例之间可以互相参照,在此不再赘述。
以上所述仅是本申请的具体实施方式,使本领域技术人员能够理解或实现本申请。对这些实施例的多种修改对本领域的技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本申请的精神或范围的情况下,在其它实施例中实现。因此,本申请将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
Claims (9)
1.一种I2C链路管理系统,其特征在于,所述系统包括:一个I2C MASTER主设备、多个I2C SLAVE从设备,且所述I2C MASTER主设备和多个I2C SLAVE从设备之间设置有CPLD,所述CPLD中包括:I2C接口和多个I2C控制模块,多个I2C控制模块之间依次串联连接,且任一I2C控制模块连接一个I2C SLAVE从设备,所述I2C接口的一端连接所述I2C MASTER主设备的控制端,所述I2C接口的另一端连接多个I2C控制模块中的第一级I2C控制模块;
所述任一I2C控制模块,用于监测I2C链路状态,根据所述I2C链路状态确定挂死的I2CSLAVE从设备,并对挂死的I2C SLAVE从设备进行隔离;
其中,所述任一I2C控制模块包括:
I2C数据信号开关单元,用于根据所获取的信号,控制I2C链路中与所述任一I2C控制模块连接的I2C SLAVE从设备的数字信号通断,且所述I2C数据信号开关单元的输入端连接上一级I2C控制模块的数据输出端以及下一级I2C控制模块的数据输入端,所述I2C数据信号开关单元的输出端通过I2C_SDA Slave信号连接所述I2C SLAVE从设备,所述I2C_SDASlave信号为I2C SLAVE从设备的数据信号;
I2C时钟信号开关单元,用于根据所获取的信号,控制I2C链路中与所述任一I2C控制模块连接的I2C SLAVE从设备的时钟信号通断,且所述I2C时钟信号开关单元的输入端连接上一级I2C控制模块的时钟输出端以及下一级I2C控制模块的时钟输入端,所述I2C时钟信号开关单元的输出端通过I2C_SCL Slave信号连接所述I2C SLAVE从设备,所述I2C_SCLSlave信号为I2C SLAVE从设备的时钟信号;
计数器单元,用于监测所述任一I2C控制模块的I2C_SDA_IN信号被拉低的时间是否达到设定的时间,且当达到设定的时间时向所述I2C数据信号开关单元和I2C时钟信号开关单元发送断开信号,所述I2C_SDA_IN信号为输入数据信号。
2.根据权利要求1所述的一种I2C链路管理系统,其特征在于,当所述任一I2C控制模块为第一级I2C控制模块时,所述I2C数据信号开关单元的输入端连接CPLD的I2C接口,且所述I2C时钟信号开关单元的输入端连接CPLD的I2C接口。
3.根据权利要求1所述的一种I2C链路管理系统,其特征在于,所述任一I2C控制模块中还包括:时钟发生单元,用于当所述任一I2C控制模块的I2C_SDA_IN信号与I2C_SCL Slave信号断开后,通过向所述I2C SLAVE从设备发送时钟信号,确认后端挂死现象是否恢复。
4.根据权利要求1所述的一种I2C链路管理系统,其特征在于,所述设定的时间为120微秒。
5.一种I2C链路管理方法,其特征在于,所述方法应用于权利要求1-4 中任一所述的一种I2C链路管理系统,所述方法包括:
持续采集任一I2C控制模块的I2C_SDA_IN信号,所述I2C_SDA_IN信号为输入数据信号;
判断所述I2C_SDA_IN信号是否为低电平;
如果所述I2C_SDA_IN信号为低电平,判断所述I2C_SDA_IN信号保持低电平的时间是否≥设定的时间;
如果所述I2C_SDA_IN信号保持低电平的时间≥设定的时间,判定所述I2C_SDA_IN信号所在的I2C链路出现挂死现象;
断开所述I2C_SDA_IN信号所在的I2C链路与后端I2C SLAVE从设备的链接;
如果所述I2C_SDA_IN信号保持低电平的时间<设定的时间,重新持续采集任一I2C控制模块的I2C_SDA_IN信号;
如果所述I2C_SDA_IN信号为高电平,将所述I2C_SDA_IN信号保持低电平的时间清零,并重新持续采集任一I2C控制模块的I2C_SDA_IN信号。
6.根据权利要求5所述的一种I2C链路管理方法,其特征在于,所述方法还包括:
判断I2C_SDA Slave信号是否为低电平;
如果I2C_SDA Slave信号为低电平,判定与所述I2C_SDA Slave信号连接的I2C SLAVE从设备出现挂死现象;
利用时钟脉冲信号,对I2C SLAVE从设备挂死现象进行校验。
7.根据权利要求6所述的一种I2C链路管理方法,其特征在于,所述利用时钟脉冲信号,对I2C SLAVE从设备挂死现象进行校验,包括:
向I2C SLAVE从设备发送多组时钟脉冲信号;
重新判断所述I2C_SDA Slave信号是否为低电平;
如果所述I2C_SDA Slave信号为低电平,判定后端I2C SLAVE从设备没有恢复正常;
控制恢复失效次数加一,重新持续采集任一I2C控制模块的I2C_SDA_IN信号;
如果所述I2C_SDA Slave信号为高电平,判定I2C SLAVE从设备恢复正常;
将I2C SLAVE从设备重新接入所述I2C_SDA_IN信号所在的I2C链路。
8.根据权利要求7所述的一种I2C链路管理方法,其特征在于,所述方法还包括:
判断恢复失效次数是否≥设定的恢复失效次数;
如果是,判定I2C SLAVE从设备无法恢复,对其保持断开隔离状态;
如果否,控制恢复失效次数加一,并重新持续采集任一I2C控制模块的I2C_SDA_IN信号。
9.根据权利要求8所述的一种I2C链路管理方法,其特征在于,所述设定的恢复失效次数为3。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011460171.4A CN112463707B (zh) | 2020-12-11 | 2020-12-11 | 一种i2c链路管理系统及方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011460171.4A CN112463707B (zh) | 2020-12-11 | 2020-12-11 | 一种i2c链路管理系统及方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112463707A CN112463707A (zh) | 2021-03-09 |
CN112463707B true CN112463707B (zh) | 2023-01-06 |
Family
ID=74803515
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011460171.4A Active CN112463707B (zh) | 2020-12-11 | 2020-12-11 | 一种i2c链路管理系统及方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112463707B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114020679B (zh) * | 2021-11-12 | 2023-11-07 | 中国船舶集团有限公司第七一一研究所 | I2c总线控制电路及用于船舶的电路系统 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101763331A (zh) * | 2010-01-18 | 2010-06-30 | 中兴通讯股份有限公司 | 一种实现i2c总线控制的系统及方法 |
CN111124981A (zh) * | 2019-11-29 | 2020-05-08 | 苏州浪潮智能科技有限公司 | 一种服务器i2c设备的管理系统及方法 |
-
2020
- 2020-12-11 CN CN202011460171.4A patent/CN112463707B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101763331A (zh) * | 2010-01-18 | 2010-06-30 | 中兴通讯股份有限公司 | 一种实现i2c总线控制的系统及方法 |
CN111124981A (zh) * | 2019-11-29 | 2020-05-08 | 苏州浪潮智能科技有限公司 | 一种服务器i2c设备的管理系统及方法 |
Also Published As
Publication number | Publication date |
---|---|
CN112463707A (zh) | 2021-03-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101378267B (zh) | 一种主备切换装置及使用该装置进行主备切换的方法 | |
CN102387074B (zh) | 业务线卡在位检测及复位方法及一种主控制卡和业务线卡 | |
TW200809521A (en) | Fault-isolating SAS expander | |
CN102724093B (zh) | 一种atca机框及其ipmb连接方法 | |
CN103532738B (zh) | 一种端口连接关系的确定方法及装置 | |
CN104753710A (zh) | 双wan口网络设备的主备切换系统及方法 | |
CN101582797B (zh) | 管理板、双机备份系统及方法 | |
WO2009033342A1 (fr) | Procédé et système de synchronisation d'horloge pour l'architecture de calcul de télécommunication avancée | |
CN1831801A (zh) | 恢复i2c主器件和i2c从器件通讯的方法 | |
CN112463707B (zh) | 一种i2c链路管理系统及方法 | |
CN109976489B (zh) | 一种iic总线异常情况下自动复位实现方法及系统 | |
CN101894056A (zh) | 总线工作节点隔离装置及其故障恢复系统和方法 | |
CN112019455B (zh) | 一种基于可编程逻辑器件的交换机监控装置及方法 | |
CN104503947A (zh) | 多路服务器及其信号处理方法 | |
CN101930393A (zh) | Sas背板的测试装置 | |
CN218824636U (zh) | 一种用于服务器硬盘背板的电源检测装置 | |
CN105335328A (zh) | 一种背板i2c总线死锁的消除方法、系统及电子设备 | |
CN111124785B (zh) | 一种硬盘故障检查的方法、装置、设备及存储介质 | |
CN111538626A (zh) | 一种从i2c设备解挂死的方法 | |
CN204633800U (zh) | 一种管理单元和交换单元双冗余的交换机 | |
CN112214343A (zh) | 一种基于pac9511芯片的iic挂死的链路恢复电路及方法 | |
CN207992997U (zh) | I2c总线系统 | |
CN111459768A (zh) | 一种硬盘管理方法、装置、设备及机器可读存储介质 | |
CN114115053B (zh) | 拟态工业控制器中裁决模块间主备模式确认及切换方法 | |
CN101650702B (zh) | 一种usb通信在线维护的装置和方法 |
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 |