CN110908841B - 一种i2c通信异常恢复方法及装置 - Google Patents
一种i2c通信异常恢复方法及装置 Download PDFInfo
- Publication number
- CN110908841B CN110908841B CN201911221442.8A CN201911221442A CN110908841B CN 110908841 B CN110908841 B CN 110908841B CN 201911221442 A CN201911221442 A CN 201911221442A CN 110908841 B CN110908841 B CN 110908841B
- Authority
- CN
- China
- Prior art keywords
- communication
- bus
- signal
- controlling
- transmit
- 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
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/20—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
- G06F11/2002—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where interconnections or communication control functionality are redundant
-
- 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
- G06F2213/00—Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F2213/0016—Inter-integrated circuit (I2C)
Abstract
本发明提供一种I2C通信异常恢复方法及装置,用以解决现有技术中存在的恢复I2C通信异常效果不佳的问题。该方法应用于I2C系统包括的与I2C总线连接的至少一个I2C主设备中的指定I2C主设备,包括:确定I2C通信异常时,控制串行时钟线在第一时长内传输时钟信号,时钟信号用于保证经过第一时长后串行数据线被释放;控制I2C总线传输开始信号,以使至少一个I2C从设备在接收到开始信号后脱离I2C通信异常发生时的工作状态;控制I2C总线传输结束信号,以使至少一个I2C从设备在接收到结束信号后进入空闲状态。
Description
技术领域
本发明涉及通信技术领域,尤其涉及一种I2C通信异常恢复方法及装置。
背景技术
内置集成电路(Inter-Integrated Circuit,I2C)通信是指连接于I2C总线上的器件(即I2C主设备和I2C从设备)之间的通信,I2C总线包括串行数据线和串行时钟线。由于一些异常动作,I2C主设备在与I2C从设备通信过程中可能会复位,I2C主设备会释放I2C总线的串行时钟线,若此时I2C总线上的串行数据线被I2C从设备占用且为低电平,则会使I2C总线的串行数据线挂死,从而导致I2C通信异常。
目前,通常采用在串行时钟线传输时钟信号,来让I2C从设备执行完其对串行数据线的操作,恢复I2C主设备通过I2C总线与I2C从设备之间的通信,但这样的方式不适于I2C总线上存在多个I2C主设备和多个I2C从设备的情况,易发生对多I2C从设备的误写操作,从而引起其它异常,效果较差。
发明内容
本发明提供一种I2C通信异常恢复方法及装置,用以解决现有技术中存在的恢复I2C通信异常效果不佳的问题。
第一方面,本发明实施例提供一种I2C通信异常恢复方法,应用于I2C系统包括的与I2C总线连接的至少一个I2C主设备中的指定I2C主设备,所述I2C系统还包括与所述I2C总线连接的至少一个I2C从设备,所述I2C总线包括串行时钟线和串行数据线,所述方法包括:
确定I2C通信异常时,控制所述串行时钟线在第一时长内传输时钟信号,所述时钟信号用于保证经过所述第一时长后所述串行数据线被释放;
控制所述I2C总线传输开始信号,以使所述至少一个I2C从设备在接收到所述开始信号后脱离所述I2C通信异常发生时的工作状态;
控制所述I2C总线传输结束信号,以使所述至少一个I2C从设备在接收到所述结束信号后进入空闲状态。
在一种可选的实现方式中,确定所述I2C通信异常时,在控制所述串行时钟线在第一时长内输出时钟信号之前,所述方法还包括:
控制所述串行时钟线在第二时长内为低电平;
控制所述I2C总线传输所述结束信号,以使所述至少一个I2C从设备在接收到所述结束信号后进入空闲状态。
在一种可选的实现方式中,确定所述I2C通信异常时,在控制所述串行时钟线在第二时长内为低电平之前,所述方法还包括:
控制所述I2C总线传输所述开始信号,以使所述至少一个I2C从设备在接收到所述开始信号后脱离所述I2C通信异常发生时的工作状态。
在一种可选的实现方式中,控制所述I2C总线传输所述结束信号之后,还包括:
确定所述I2C通信是否恢复;
若确定所述I2C通信未恢复,则将所述I2C通信持续未恢复的次数加1;
确定加1后的所述I2C通信持续未恢复的次数是否达到次数阈值;
若确定加1后的所述I2C通信持续未恢复的次数达到所述次数阈值,则发出设备故障信号;
若确定加1后的所述I2C通信持续未恢复的次数未达到所述次数阈值,则执行所述控制所述串行时钟线在第一时长内传输时钟信号的步骤。
第二方面,本发明实施例提供一种I2C通信异常恢复装置,设置于I2C系统包括的与I2C总线连接的至少一个I2C主设备中的指定I2C主设备,所述I2C系统还包括与所述I2C总线连接的至少一个I2C从设备,所述I2C总线包括串行时钟线和串行数据线,所述装置包括:
确定模块,用于确定I2C通信异常;
控制模块,用于:
当所述I2C通信异常时,控制所述串行时钟线在第一时长内传输时钟信号,所述时钟信号用于保证经过所述第一时长后所述串行数据线被释放;
控制所述I2C总线传输开始信号,以使所述至少一个I2C从设备在接收到所述开始信号后脱离所述I2C通信异常发生时的工作状态;
控制所述I2C总线传输结束信号,以使所述至少一个I2C从设备在接收到所述结束信号后进入空闲状态。
在一种可选的实现方式中,所述控制模块,还用于:
当所述I2C通信异常时,在控制所述串行时钟线在第一时长内输出时钟信号之前,控制所述串行时钟线在第二时长内为低电平;
控制所述I2C总线传输所述结束信号,以使所述至少一个I2C从设备在接收到所述结束信号后进入空闲状态。
在一种可选的实现方式中,所述控制模块,还用于:当所述I2C通信异常时,在控制所述串行时钟线在第二时长内为低电平之前,控制I2C总线传输所述开始信号,以使所述至少一个I2C从设备在接收到所述开始信号后脱离所述I2C通信异常发生时的工作状态。
在一种可选的实现方式中,
所述确定模块,还用于当控制所述I2C总线传输所述结束信号后,确定所述I2C通信是否恢复;
所述控制模块,还用于当所述I2C通信未恢复时,将所述I2C通信持续未恢复的次数加1;
所述确定模块,还用于确定加1后的所述I2C通信持续未恢复的次数是否达到次数阈值;
所述控制模块,还用于当加1后的所述I2C通信持续未恢复的次数达到所述次数阈值时,发出设备故障信号;当加1后的所述I2C通信持续未恢复的次数未达到所述次数阈值时,执行所述控制所述串行时钟线在第一时长内传输时钟信号的步骤。
第三方面,本发明实施例提供一种I2C通信异常恢复装置,包括:
存储器以及处理器;
存储器,用于存储程序指令;
处理器,用于调用所述存储器中存储的程序指令,按照获得的程序执行第一方面的任一实现方式所述的方法。
第四方面,本发明实施例提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机指令,当所述计算机指令在计算机上运行时,使得计算机执行上述方法。
本发明实施例中,基于第一时长的时钟信号使得串行数据线被释放,然后基于开始信号使至少一个I2C从设备脱离I2C通信异常发生时的工作状态,开始对I2C总线新的访问,以丢掉此前存在的异常数据避免后续发生误写异常数据的情况;进而基于结束信号结束本次存在异常的I2C通信,使至少一个I2C从设备进入空闲状态,从而恢复I2C通信为下一次的I2C正常通信做准备,适用范围较大,有效的提升了解决I2C通信异常的效果。此外,本发明实施例提供的上述方案,无需增加外部硬件电路或检测电路的支持,可移植性较强。
附图说明
图1为本发明实施例提供的一种I2C总线拓扑结构示意图;
图2为本发明实施例提供的另一种I2C总线拓扑结构示意图;
图3为本发明实施例提供的第一种I2C通信异常恢复方法的流程示意图;
图4为本发明实施例提供的第一种信号变化示意图;
图5为本发明实施例提供的第二种信号变化示意图;
图6为本发明实施例提供的第三种信号变化示意图;
图7为本发明实施例提供的第二种I2C通信异常恢复方法的流程示意图;
图8为本发明实施例提供的第四种信号变化示意图;
图9为本发明实施例提供的第五种信号变化示意图;
图10为本发明实施例提供的第三种I2C通信异常恢复方法的流程示意图;
图11为本发明实施例提供的第六种信号变化示意图;
图12为本发明实施例提供的一种I2C通信异常恢复装置的结构框图;
图13为本发明实施例提供的另一种I2C通信异常恢复装置的结构示意图。
具体实施方式
为了使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明作进一步地详细描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
需要说明的是,本发明中涉及的多个,是指两个或两个以上。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。另外,应当理解,尽管在本发明实施例中可能采用术语第一、第二等来描述各数据、但这些数据不应限于这些术语。这些术语仅用来将各数据彼此区分开。
内置集成电路(Inter-Integrated Circuit,I2C)通信是指连接于I2C总线上的器件(I2C主设备和I2C从设备)之间的通信,I2C总线为双向二线制同步串行总线,它依靠两根线即串行数据线(SerialData,SDA)和串行时钟线(Serial ClockLine,SCL),来实现连接于I2C总线上I2C主设备和I2C从设备之间的通信。
I2C主设备可控制SCL发出时钟信号;对应传输数据时读写操作方不同,SDA可由I2C主设备或者I2C从设备的控制下,在SCL为低电平(0)时进行电平切换,而在SCL为高电平(1)时保持不变。当I2C总线空闲时,SCL、SDA都处于高电平状态,具体的传输数据过程中所涉及的SCL/SDA电平切换如下:
1、开始传输:在I2C总线空闲,即SDA、SCL均为高电平时,I2C主设备触发SDA由高电平切换至低电平,以此作为I2C主设备和I2C从设备传输数据的开始信号(STA)。
2、传输数据:包括I2C主设备向I2C从设备中读取数据或者向I2C从设备中写入数据两种情况。具体的,以两者发送到SDA上的每个字节均为8bit,每个字节后跟一个响应位为例,I2C主设备向I2C从设备中写入数据时,I2C主设备每发送一个字节,也即8bit后I2C从设备在第9个bit拉低SDA的电平,以输出用于指示对所述字节接收情况的应答信号(ACK);同理,I2C主设备向I2C从设备中读取数据时,I2C从设备将数据按照一个字节8bit发送到I2C主设备。
3、结束传输:在SDA未被I2C从设备占用,由I2C主设备控制为低电平,且SCL为高电平时,I2C主设备触发SDA由低电平切换至向高电平,对应I2C主设备向I2C从设备写入数据的写入操作,以此为结束信号(STOP),将数据写入I2C从设备。
目前,在I2C主设备在向I2C从设备实施读取或者写入操作的过程中,存在由于看门狗动作、电压异常导致复位芯片动作、人为触及复位键等动作使I2C主设备提前异常复位的情况,也即I2C总线的SDA挂死,而使I2C通信异常的情况。以按照一个字节(8bit)+ACK周期性发送数据到SDA上,且发送1bit数据或者ACK对应1个时钟脉冲(CLOCK)为例,具体的,I2C总线的SDA挂死可分为SDA挂死在写入操作和SDA挂死在读取操作,如下:
(一)SDA挂死在写入操作
如图1所示的一种I2C总线拓扑结构示意图,具体示意出了I2C总线上连接一个I2C主设备(CN7130)、一个I2C从设备(EEPROM)以及电源VDD。在CN7130向EEPROM进行写入操作的过程中,CN7130在开始信号后控制SCL产生8个时钟脉冲,然后拉低SCL的信号为低电平即产生第9个时钟脉冲,EEPROM控制SDA,拉低SDA的信号为低电平以输出ACK时,CN7130由于其复位pin脚信号串扰,所处系统过压过流需进行中断处理等原因异常复位,但EEPROM没有复位继续应答,则会导致SCL被释放为高电平,SDA处于低电平,由于I2C通信协议的规定,传输数据过程中也即SDA被占用时,在SCL为低电平时才能进行电平切换,便导致SDA一直处于低电平,直到SCL变为低电平,才可以结束应答以被释放。然而对于CN7130来说,复位后检测SCL和SDA,发现SDA的信号为低电平,则认为I2C总线被占用,会一直等待SCL和SDA信号均变为高电平。这样,CN1730等待EEPROM释放SDA信号,而同时EEPROM又在等待CN1730将SCL信号拉低以提供结束应答释放SDA信号的条件,两者相互等待,致使SDA挂死在第9个时钟脉冲,产生I2C通信异常。
(二)SDA挂死在读取操作
如图1所示,当CN7130向EEPROM进行读取操作时,CN7130在开始信号后控制SCL产生8个时钟脉冲的过程中,SCL信号为低电平时,EEPROM向SDA上发送数据,8个时钟脉冲对应可发8个bit,即1个字节的数据。若在此过程中的一个时钟脉冲,EEPROM向SDA上发送的bit数据为0,且此时CN7130由于其复位pin脚信号串扰,所处系统过压过流需进行中断处理等原因异常复位,则使得SCL被释放为高电平,但SDA处于低电平。由于I2C通信的规定,传输数据过程中也即SDA被占用时,在SCL为低电平时才能进行电平切换,便导致SDA一直处于低电平,直到SCL变为低电平,才可以结束应答以被释放。然而对于CN7130来说,复位后检测SCL和SDA信号,发现SDA信号为低电平,则认为I2C总线被占用,会一直等待SCL和SDA信号均变为高电平。这样,CN1730等待EEPROM释放SDA信号,而同时IEEPROM又在等待CN1730将SCL信号拉低以提供结束应答释放SDA信号的条件,两者相互等待,致使SDA挂死在前8个时钟脉冲中的某个时钟脉冲时,产生I2C通信异常。
对于上述异常,现有技术方案中通常采用控制I2C总线传输9个时钟脉冲以在SDA挂死在写入操作或者SDA挂死在读取操作时,释放SDA,但是这样的方式会引入新的I2C异常情况,例如:
第一种情况:部分厂家硬件I2C(如CAVIUM MIPS CNXX系列)设计要求I2C主设备和I2C从设备之间必须通过产生结束信号才能开始下一次新的通信。若I2C总线连接有具有这种设计的I2C主设备和I2C从设备,则在解决上述描述的I2C总线的SDA挂死释放SDA后,I2C总线的SCL和SDA均处于高电平,致使I2C总线实际上处于空闲状态,但I2C主设备也无法判断I2C总线的状态,便仍会认为I2C总线被占用,无法对I2C总线发起访问以与I2C从设备进行下一次新的通信,从而仍然导致I2C通信异常。
第二种情况:若I2C总线上连接有多个I2C主设备和多个I2C从设备,且存在有仲裁和时钟同步机制,在解决I2C总线的SDA挂死,释放SDA后,还可能出现误写的问题致使I2C通信异常。
具体的,如图2所示的另一种I2C总线拓扑结构示意图,具体示意出了I2C总线上连接两个I2C主设备(CN7130和CPLD)、两个I2C从设备(EEPROM和LM75)以及电源VDD。其中,CN7130轮询访问读取EEPROM存储的错误日志,电源信息等,并轮询访问LM75监控板上温度,当发生过温时,加大风扇转速,进行断电保护等操作,当CN7130处理其它中断紧急事务时,CPLD短期代替CPU进行I2C轮询访问操作。
在I2C通信过程中,CN7130或CPLD进行I2C轮询访问时,发生如上述描述的CN7130异常复位,而EEPROM仍处于前述读取操作发送数据为0,或者前述写入操作时返回ACK的状态,SDA的信号被拉为低电平,CN7130或CPLD均无法进行正常的I2C通信。以CN7130向EEPROM进行写入操作时发生SDA挂死在写入操作为例,经相关操作释放SDA后,由于没有结束信号,EEPROM依旧处在地址被命中的写入状态,此时若同一I2C总线上的另一个I2C主设备,即CPLD继续控制I2C总线,那么EEPROM也会接收并解析CPLD发送的总线信号,便可能出现误写及EEPROM再次抢占总线的情况,从而导致I2C通信异常。
由此可见,现有技术方案中采用控制I2C总线传输9个时钟脉冲释放SDA的方式,适用范围较小,解决I2C通信异常的效果不佳。
基于此,本发明实施例提供一种I2C通信异常恢复方法及装置,解决现有技术中恢复I2C通信异常方式效果不佳的问题。其中,方法和装置是基于同一发明构思的,由于方法及装置解决问题的原理相似,因此装置与方法的实施可以相互参见,重复之处不再赘述。
为便于对本实施例进行理解,首先对本发明实施例提供的一种I2C通信异常恢复方法进行详细介绍。
参见图3,本发明实施例提供了第一种I2C通信异常恢复方法,应用于I2C系统包括的与I2C总线连接的至少一个I2C主设备中的指定I2C主设备,I2C系统还包括与I2C总线连接的至少一个I2C从设备,上述方法包括:
步骤S301,确定I2C通信异常时,控制串行时钟线在第一时长内传输时钟信号,时钟信号用于保证经过第一时长后串行数据线被释放;
其中,I2C通信异常用于表征I2C系统系统包括的至少一个I2C主设备中任一I2C主设备复位后无法访问I2C总线,与I2C系统包括的至少一个I2C从设备之间的通信失败。
步骤S302,控制I2C总线传输开始信号,以使至少一个I2C从设备在接收到开始信号后脱离I2C通信异常发生时的工作状态;
其中,工作状态为对应前述读取操作的发送状态或者对应前述写入操作的接收状态;当I2C通信异常为SDA挂死在写入操作时,上述步骤S302控制I2C传输开始信号还可用于指示至少一个I2C从设备丢弃异常数据。其中,异常数据为第一时长内串行数据线上所传输还未写入I2C从设备中的数据。
步骤S303,控制I2C总线传输结束信号,以使至少一个I2C从设备在接收结束信号后进入空闲状态,从而恢复I2C通信。
本发明实施例中,基于第一时长的时钟信号使得串行数据线被释放,然后基于开始信号使至少一个I2C从设备脱离I2C通信异常发生时的工作状态,开始对I2C总线新的访问,以丢掉此前存在的异常数据避免后续发生误写异常数据的情况;进而基于结束信号结束本次存在异常的I2C通信,使至少一个I2C从设备进入空闲状态,从而恢复I2C通信为下一次的I2C正常通信做准备,适用范围较大,有效的提升了解决I2C通信异常的效果。此外,本发明实施例提供的上述方案,无需增加外部硬件电路或检测电路的支持,可移植性较强。
具体实施时,I2C主设备可依据其自身的设计配置来判断是否发生I2C通信异常,为便于理解,本发明实施例提供了一种确定I2C通信的实施方式,如下示例:
在I2C主设备复位的情况下,监测到串行数据线为低电平时,确定I2C通信异常;或者,根据状态寄存器中用于指示I2C通信异常的参数的值,确定I2C通信异常。
其中,由于I2C总线的串行时钟线由I2C主设备进行控制,I2C主设备复位即表示串行时钟线被释放为高电平。状态寄存器可以是I2C主设备内部预配置的用于记录相关参数状态值的寄存器,具体实施时,可以根据status reg来确定I2C通信是否异常。需要说明的是,可根据实际情况为I2C主设备配置其确定I2C通信异常的方式,并不仅限于本实施例中所提供的上述实施方式。
在一种可选的实施方式中,第一时长为一个用于指示发送指定数量时钟脉冲的时间周期,以避免发生SDA连续挂死在写入操作的情况。例如,对应当前I2C协议规定串行数据线上是按照一个字节加应答信号循环传输数据,且一个字节为8个bit,一个时间周期包含九个时钟脉冲,一个时钟脉冲对应串行数据线上传输1个bit的数据或者应答信号,对于SDA挂死在写入操作的情况,在时间周期包含的九个时钟脉冲中的第一个时钟脉冲即可实现SDA被释放,从而保证下一个循环传输数据时不会让SDA挂死在写入操作。此外,需要说明的是,本发明实施例中一个时间周期所包含时钟脉冲的数量,可以是根据实际情况或是对应I2C协议自行定义,在此并不进行限制。
为便于理解,本发明实施例以例1~例3的I2C通信异常情况为例,对上述解决I2C通信异常时,I2C总线的信号变化进行详细说明。实例性地,例1~例3中串行数据线SDA均按8个bit为一个字节,再加上一个应答信号ACK循环传输数据。
例1:如图4所示的第一种信号变化示意图,示意出了I2C通信异常为串行数据线SDA挂死在读取操作的第5个bit,且第5个bit至第8个bit传输数据均为0,则I2C主设备首先控制串行时钟线SCL在第一时间(T1)内发送了包含9个时钟脉冲的时钟信号,I2C从设备对应在9个时钟脉冲的前3个时钟脉冲将之前挂死中断未发送出的第6个bit至第8个bit的数据继续传输完成,在第4个时钟脉冲释放SDA,在经过第一时间后I2C主设备控制I2C总线依次传输开始信号以及结束信号,也即如图3所示在T1时间之后,控制SCL保持为高电平,SDA先由高电平变为低电平,再由低电平变为高电平,从而恢复I2C通信异常。
需要说明的是,SDA挂死在读取操作包括SDA挂死在第1个bit到第8个bit中任一bit,图4仅为SDA挂死在读取操作的一种情况,本发明实施例中,发送9个时钟脉冲能够保证无论SDA挂死在哪一个bit,均能经过第一时间后得到释放,进而避免经过第一时间后I2C主设备控制I2C总线输开始信号受到干扰。
例2:如图5所示的第二种信号变化示意图,示意出了I2C通信异常为串行数据线SDA挂死在写入操作,即挂死在应答信号ACK所占的第9个bit,则I2C主设备首先控制串行时钟线SCL在第一时间(T1)内发送了包含9个时钟脉冲的时钟信号,I2C从设备对应在9个时钟脉冲的第1个时钟脉冲时即可释放SDA,在经过第一时间后I2C主设备控制I2C总线依次传输开始信号以及结束信号,也即如图3所示在T1时间之后,控制SCL保持为高电平,SDA先由高电平变为低电平,再由低电平变为高电平,从而恢复I2C通信异常。
例3:如图6所示的第三种信号变化示意图,示意出了对于一些需要以结束信号作为I2C总线空闲的依据之一判断的I2C主设备,不确定I2C总线状态则无法访问I2C总线的情况,I2C主设备首先控制串行时钟线SCL在第一时间(T1)内发送了包含9个时钟脉冲的时钟信号,保证经过第一时间后SCL和SDA均为高电平,然后控制I2C总线传输开始信号以及结束信号,以使I2C能够确定I2C总线的状态为空闲状态,并可发起对I2C总线新的访问。
进一步,如图7所示,本发明实施例提供了第二种I2C通信异常恢复方法,包括:
步骤S701,确定I2C通信异常时,控制串行时钟线在第二时长内为低电平;
步骤S702,控制I2C总线传输结束信号,以使至少一个I2C从设备在接收到结束信号后进入空闲状态。
步骤S703,控制串行时钟线在第一时长内传输时钟信号,时钟信号用于保证经过第一时长后串行数据线被释放。
步骤S704,控制I2C总线传输开始信号,以使至少一个I2C从设备在接收到开始信号后脱离I2C通信异常发生时的工作状态。
步骤S705,控制I2C总线传输结束信号,以使至少一个I2C从设备在接收结束信号后进入空闲状态。
本实施例中,在确定I2C通信异常时,通过控制串行时钟线在第二时间内为低电平,可以保证最多需要串行时钟线输出一个低电平,I2C从设备就可释放SDA的情况下,SDA被释放以使I2C主设备获得对SDA的控制权限,快速将SDA的电平驱为低电平;进而保证经过第二时间后SDA为低电平可以控制I2C总线成功传输前述结束信号以使至少一个I2C从设备能够接收到结束信号从而进入空闲状态的同时,将SDA上的数据保存至接收该数据的I2C主设备或者是I2C从设备;而对于串行时钟线仅输出一个低电平,SDA仍然被12C从设备占用的情况下,控制I2C总线传输结束信号不成功并不会触发I2C总线的信号变化,避免部分异常数据被保存,进而I2C主设备继续按照第一种I2C通信异常恢复方法(也即步骤S703~步骤S704),仍然能够解决这种情况下的I2C通信异常问题,适应范围较大,有效的提升了解决I2C通信异常的效果。
具体的,为便于理解,本发明实施例以例4~例5的I2C通信异常情况为例,对采用第二种I2C通信异常恢复方法解决I2C通信异常时,I2C总线的信号变化进行详细说明。实例性地,例4~例5中串行数据线SDA均按8个bit为一个字节,再加上一个应答信号ACK循环传输数据。
例4:如图8所示的第四种信号变化示意图,示意出了I2C通信异常为串行数据线SDA挂死在读取操作的第6个bit,且第6个bit至第8个bit传输数据均为0。I2C主设备首先控制串行时钟线SCL在第二时间(T2)内为低电平,经过第二时间后,SDA继续挂死在读取操作的第7个bit,控制I2C主线传输第二结束信号不会触发I2C总线的信号变化,然后I2C主设备控制串行时钟线(SCL)在第一时间(T1)内发送了包含9个时钟脉冲的时钟信号,I2C从设备对应在9个时钟脉冲的第1个时钟脉冲将之前挂死中断未发送出的第8个bit的数据继续传输完成,在第2个时钟脉冲释放SDA,在经过第一时间后I2C主设备控制I2C总线依次传输开始信号以及结束信号,也即如图8所示在T1时间之后,控制SCL保持为高电平,SDA先由高电平变为低电平,再由低电平变为高电平,从而恢复I2C通信异常。
例5:如图9所示的第五种信号变化示意图,示意出了I2C通信异常为串行数据线SDA挂死在写入操作,即挂死在应答信号ACK所占的第9个bit,I2C主设备首先控制I2C主设备首先控制串行时钟线SCL在第二时间(T2)内为低电平,以保证经过第二时间后,写操作完成SDA被I2C从设备释放且由I2C主设备控制变为低电平,从而使得I2C主设备控制I2C主线传输第二结束信号触发I2C总线信号变化成功,将本次写操作的数据保存在I2C从设备中;然后控制SCL在第一时间(T1)内发送了包含9个时钟脉冲的时钟信号,第一时间内I2C总线处于空闲状态,串行数据线和串行时钟线均保持高电平,在经过第一时间后I2C主设备控制I2C总线依次传输开始信号以及结束信号,也即如图3所示在T1时间之后,控制SCL保持为高电平,SDA先由高电平变为低电平,再由低电平变为高电平,从而恢复I2C通信异常。
进一步,参见图10,本发明实施例提供了第三种I2C通信异常恢复的方法,该方法包括:
步骤S1001,确定I2C通信异常时,控制I2C总线传输开始信号,以使至少一个I2C从设备在接收到开始信号后脱离I2C通信异常发生时的工作状态。
步骤S1002,控制串行时钟线在第二时长内为低电平。
步骤S1003,在经第二时长后,控制I2C总线传输结束信号,以使至少一个I2C从设备在接收到结束信号后进入空闲状态。
步骤S1004,控制串行时钟线在第一时长内传输时钟信号,时钟信号用于保证经过第一时长后串行数据线被释放。
步骤S1005,控制I2C总线传输开始信号,以使至少一个I2C从设备在接收到开始信号后脱离I2C通信异常发生时的工作状态。
步骤S1006,控制I2C总线传输结束信号,以使至少一个I2C从设备在接收到结束信号后进入空闲状态。
本实施例中,在确定I2C通信异常时,首先通过控制I2C总线传输开始信号,可以保证I2C通信异常为I2C总线空闲,无法访问I2C总线的情况下,成功传输开始信号可令至少一个I2C从设备可接收到开始信号,并能够触发I2C总线的信号变化以使串行数据线由I2C主设备控制变为低电平。进而在I2C成功传输开始信号后,I2C主设备可继续实施第二种I2C通信异常方法(也即步骤1002~步骤1005);而针对于I2C通信异常为I2C总线的SDA挂死,由于SDA被I2C从设备占用,首先控制I2C总线传输开始信号不成功并不会触发I2C总线的信号变化,不会影响I2C主设备继续实施第二种I2C通信异常方法,则仍然可以解决上述I2C通信异常,适应范围较大,有效的提升了解决I2C通信异常的效果。
具体的,为便于理解,本发明实施例以例6~例8的I2C通信异常情况为例,对采用第三种I2C通信异常恢复方法解决I2C通信异常时,I2C总线的信号变化进行详细说明。实例性地,例6~例8中串行数据线SDA均按8个bit为一个字节,再加上一个应答信号ACK循环传输数据。
例6:I2C通信异常为SDA挂死在读取操作的第6个bit,且第6个bit至第8个bit传输数据均为0。这种情况下,由于SDA被I2C从设备占用,首先控制I2C总线传输开始信号不成功,不会触发I2C总线的信号变化,继续实施第二种I2C通信异常方法所引起的I2C总线信号变化,可参见图8,在此不再进行赘述。
例7:I2C通信异常为SDA挂死在写入操作,即挂死在应答信号ACK所占的第9个bit。这种情况下,由于SDA被I2C从设备占用,首先控制I2C总线在传输开始信号不成功,不会触发I2C总线的信号变化,继续实施第二种I2C通信异常方法所引起的I2C总线信号变化,可参见图9,在此不再进行赘述。
例8:如图11所示的第六种信号变化示意图,示意出了I2C通信异常为I2C总线空闲,无法访问I2C总线的情况下,串行时钟线SCL和串行数据线SDA均为高电平,I2C主设备首先控制I2C总线在第三时间(T3)内传输开始信号成功,也即触发I2C总线信号变化成功。然后I2C主设备控制SCL在第二时间(T2)内为低电平,并经过第二时间后控制I2C主线传输第二结束信号触发I2C总线信号变化成功,即可恢复I2C通信。后续I2C主设备控制串行时钟线SCL在第一时间(T1)内发送了包含9个时钟脉冲的时钟信号,经过第一时间后I2C主设备控制I2C总线依次传输开始信号以及结束信号,也不会对此I2C通信异常造成干扰。
进一步,在一种可选的实施方式中,在上述实施例中任一实施例方案的基础上,当最终也即步骤S303、步骤S705、步骤S1006中控制I2C总线传输结束信号后,上述方法还包括:
确定I2C通信是否恢复;若确定I2C通信恢复则停止操作;若确定I2C通信未恢复,则将I2C通信持续未恢复的次数加1。其中,I2C通信持续未恢复的次数表示执行上述确定I2C通信是否恢复这一步骤的次数。
确定加1后的I2C通信持续未恢复的次数是否达到次数阈值;若确定加1后的I2C通信持续未恢复的次数达到次数阈值,则发出设备故障信号;若确定加1后的I2C通信持续未恢复的次数未达到次数阈值,则执行控制串行时钟线在第一时长内传输时钟信号的步骤,以及后续控制I2C总线传输开始信号和结束信号的步骤。
本发明实施例中,在进行一次恢复I2C通信操作后进行检验是否成功,在确定I2C通信未恢复时重复执行上述第一种I2C通信异常恢复方法中的方案,并设定可重复的次数阈值,以确定是否由于设备故障而致I2C通信异常,以便发出故障信号提醒相关人员检查设备,有助于设备维护工作。此外需要说明的是,重复执行的方案还可以是第二种I2C通信异常恢复方法或者第三种I2C通信异常恢复方法中的方案,并不仅限于第一种I2C通信异常恢复方法。
对应上述方法,如图12所示,本发明实施例提供一种I2C通信异常恢复装置1200的结构框图,设置于I2C总线上的I2C主设备,I2C总线包括串行时钟线和串行数据线,该装置1200包括:
确定模块1201,用于确定I2C通信异常;
控制模块1202,用于:
当I2C通信异常时,控制串行时钟线在第一时长内传输时钟信号,时钟信号用于保证经过第一时长后串行数据线被释放;
控制I2C总线传输开始信号,以使至少一个I2C从设备在接收到开始信号后脱离I2C通信异常发生时的工作状态;
控制I2C总线传输结束信号,以使至少一个I2C从设备在接收到结束信号后进入空闲状态。
本发明实施例中,基于第一时长的时钟信号使得串行数据线被释放,然后基于开始信号使至少一个I2C从设备脱离I2C通信异常发生时的工作状态,开始对I2C总线新的访问,以丢掉此前存在的异常数据避免后续发生误写异常数据的情况;进而基于结束信号结束本次存在异常的I2C通信,使至少一个I2C从设备进入空闲状态,从而恢复I2C通信为下一次的I2C正常通信做准备,适用范围较大,有效的提升了解决I2C通信异常的效果。
在一种可选的实施方式中,控制模块1202,还用于:
当I2C通信异常时,在控制串行时钟线在第一时长内输出时钟信号之前,控制串行时钟线在第二时长内为低电平;
控制I2C总线传输结束信号,以使至少一个I2C从设备接收到结束信号后进入空闲状态。
在一种可选的实施方式,控制模块1202,还用于:当I2C通信异常时,在控制串行时钟线在第二时长内为低电平之前,控制I2C总线传输开始信号,以使至少一个I2C从设备在接收到开始信号后脱离I2C通信异常发生时的工作状态。
在一种可选的实施方式中,确定模块1201,还用于当控制I2C总线传输结束信号后,确定I2C通信是否恢复;
控制模块1202,还用于当I2C通信未恢复时,将I2C通信持续未恢复的次数加1;
确定模块1201,还用于确定加1后的I2C通信持续未恢复的次数是否达到次数阈值;
控制模块1202,还用于当加1后的I2C通信持续未恢复的次数达到次数阈值时,发出设备故障信号;当加1后的I2C通信持续未恢复的次数未达到次数阈值时,执行控制串行时钟线在第一时长内传输时钟信号的步骤。
在一种可选的实施方式中,确定模块1201,具体用于:
在I2C主设备复位的情况下,监测到串行数据线为低电平时,确定I2C通信异常;或者,
根据状态寄存器中用于指示I2C通信异常的参数的值,确定I2C通信异常。
在一种可选的实施方式中,上述第一时长为一个时间周期。
进一步,参见图13所示,本发明实施例还提供了另一种I2C通信异常恢复装置1300的结构示意图,该装置1300包括:
通信接口1301,存储器1302以及处理器1303;
其中,所述处理器1303通过所述通信接口1301与其它设备进行通信,存储器1302,用于存储程序指令;处理器1303,用于调用所述存储器1302中存储的程序指令,按照获得的程序执行上述实施例中I2C主设备执行的方法。
本申请实施例中不限定上述通信接口1301、存储器1302以及处理器1303之间的具体连接介质,比如总线,总线可以分为地址总线、数据总线、控制总线等。
在本申请实施例中,处理器可以是通用处理器、数字信号处理器、专用集成电路、现场可编程门阵列或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件,可以实现或者执行本申请实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者任何常规的处理器等。结合本申请实施例所公开的方法的步骤可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。
在本申请实施例中,存储器可以是非易失性存储器,比如硬盘(hard disk drive,HDD)或固态硬盘(solid-state drive,SSD)等,还可以是易失性存储器(volatilememory),例如随机存取存储器(random-access memory,RAM)。存储器还可以是能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。本申请实施例中的存储器还可以是电路或者其它任意能够实现存储功能的装置,用于存储程序指令和/或数据。
进一步,本发明实施例还提供了一种计算机可读存储介质,该计算机可读存储介质存储有计算机指令,当计算机指令在计算机上运行时,使得计算机执行上述I2C通信异常恢复方法。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
Claims (10)
1.一种I2C通信异常恢复方法,应用于I2C系统包括的与I2C总线连接的至少一个I2C主设备中的指定I2C主设备,所述I2C系统还包括与所述I2C总线连接的至少一个I2C从设备,所述I2C总线包括串行时钟线和串行数据线,其特征在于,所述方法包括:
确定I2C通信异常时,控制所述串行时钟线在第一时长内传输时钟信号,所述时钟信号用于保证经过所述第一时长后所述串行数据线被释放;
控制所述I2C总线传输开始信号,以使所述至少一个I2C从设备在接收到所述开始信号后脱离所述I2C通信异常发生时的工作状态;
控制所述I2C总线传输结束信号,以使所述至少一个I2C从设备在接收到所述结束信号后进入空闲状态。
2.如权利要求1所述的方法,其特征在于,确定所述I2C通信异常时,在控制所述串行时钟线在第一时长内输出时钟信号之前,所述方法还包括:
控制所述串行时钟线在第二时长内为低电平;
控制所述I2C总线传输所述结束信号,以使所述至少一个I2C从设备在接收到所述结束信号后进入空闲状态。
3.如权利要求2所述的方法,其特征在于,确定所述I2C通信异常时,在控制所述串行时钟线在第二时长内为低电平之前,所述方法还包括:
控制所述I2C总线传输所述开始信号,以使所述至少一个I2C从设备在接收到所述开始信号后脱离所述I2C通信异常发生时的工作状态。
4.如权利要求1所述的方法,其特征在于,控制所述I2C总线传输所述结束信号之后,还包括:
确定所述I2C通信是否恢复;
若确定所述I2C通信未恢复,则将所述I2C通信持续未恢复的次数加1;
确定加1后的所述I2C通信持续未恢复的次数是否达到次数阈值;
若确定加1后的所述I2C通信持续未恢复的次数达到所述次数阈值,则发出设备故障信号;
若确定加1后的所述I2C通信持续未恢复的次数未达到所述次数阈值,则执行所述控制所述串行时钟线在第一时长内传输时钟信号的步骤。
5.一种I2C通信异常恢复装置,设置于I2C系统包括的与I2C总线连接的至少一个I2C主设备中的指定I2C主设备,所述I2C系统还包括与所述I2C总线连接的至少一个I2C从设备,所述I2C总线包括串行时钟线和串行数据线,其特征在于,所述装置包括:
确定模块,用于确定I2C通信异常;
控制模块,用于:
当所述I2C通信异常时,控制所述串行时钟线在第一时长内传输时钟信号,所述时钟信号用于保证经过所述第一时长后所述串行数据线被释放;
控制所述I2C总线传输开始信号,以使所述至少一个I2C从设备在接收到所述开始信号后脱离所述I2C通信异常发生时的工作状态;
控制所述I2C总线传输结束信号,以使所述至少一个I2C从设备在接收到所述结束信号后进入空闲状态。
6.如权利要求5所述的装置,其特征在于,所述控制模块,还用于:
当所述I2C通信异常时,在控制所述串行时钟线在第一时长内输出时钟信号之前,控制所述串行时钟线在第二时长内为低电平;
控制所述I2C总线传输所述结束信号,以使所述至少一个I2C从设备在接收到所述结束信号后进入空闲状态。
7.如权利要求6所述的装置,其特征在于,所述控制模块,还用于:当所述I2C通信异常时,在控制所述串行时钟线在第二时长内为低电平之前,控制I2C总线传输所述开始信号,以使所述至少一个I2C从设备在接收到所述开始信号后脱离所述I2C通信异常发生时的工作状态。
8.如权利要求5所述的装置,其特征在于,
所述确定模块,还用于当控制所述I2C总线传输所述结束信号后,确定所述I2C通信是否恢复;
所述控制模块,还用于当所述I2C通信未恢复时,将所述I2C通信持续未恢复的次数加1;
所述确定模块,还用于确定加1后的所述I2C通信持续未恢复的次数是否达到次数阈值;
所述控制模块,还用于当加1后的所述I2C通信持续未恢复的次数达到所述次数阈值时,发出设备故障信号;当加1后的所述I2C通信持续未恢复的次数未达到所述次数阈值时,执行所述控制所述串行时钟线在第一时长内传输时钟信号的步骤。
9.一种I2C通信异常恢复装置,其特征在于,包括:
存储器以及处理器;
存储器,用于存储程序指令;
处理器,用于调用所述存储器中存储的程序指令,按照获得的程序执行权利要求1~4任一项所述的方法。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机指令,当所述计算机指令在计算机上运行时,使得计算机执行权利要求1~4中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911221442.8A CN110908841B (zh) | 2019-12-03 | 2019-12-03 | 一种i2c通信异常恢复方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911221442.8A CN110908841B (zh) | 2019-12-03 | 2019-12-03 | 一种i2c通信异常恢复方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110908841A CN110908841A (zh) | 2020-03-24 |
CN110908841B true CN110908841B (zh) | 2022-09-20 |
Family
ID=69821868
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911221442.8A Active CN110908841B (zh) | 2019-12-03 | 2019-12-03 | 一种i2c通信异常恢复方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110908841B (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111737183A (zh) * | 2020-08-05 | 2020-10-02 | 苏州浪潮智能科技有限公司 | 一种服务器及一种i2c总线的通信故障处理方法和系统 |
CN113656340A (zh) * | 2021-08-20 | 2021-11-16 | 西安易朴通讯技术有限公司 | I2c总线的通信控制方法、系统和装置 |
CN113868178B (zh) * | 2021-09-09 | 2024-02-13 | 浪潮电子信息产业股份有限公司 | 一种基于i2c总线的通信方法、系统及存储介质 |
CN113590527B (zh) * | 2021-10-08 | 2022-02-22 | 苏州浪潮智能科技有限公司 | 通信总线的挂死修复方法、装置、电子设备及存储介质 |
CN114253898A (zh) * | 2021-12-27 | 2022-03-29 | 上海集成电路研发中心有限公司 | 总线装置及数据读写电路 |
CN116048849B (zh) * | 2022-07-20 | 2023-11-07 | 荣耀终端有限公司 | 一种i2c总线的通信控制方法、装置、设备及存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6145036A (en) * | 1998-09-30 | 2000-11-07 | International Business Machines Corp. | Polling of failed devices on an I2 C bus |
CN102073613A (zh) * | 2010-12-15 | 2011-05-25 | 创新科存储技术有限公司 | 一种消除i2c总线死锁的装置及方法 |
CN103019871A (zh) * | 2012-12-31 | 2013-04-03 | 四川迪佳通电子有限公司 | 一种i2c总线的防死锁系统及其防死锁方法 |
CN103645975A (zh) * | 2013-11-28 | 2014-03-19 | 华为技术有限公司 | 一种异常恢复的方法及串行总线传输装置 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100346330C (zh) * | 2005-03-10 | 2007-10-31 | 华为技术有限公司 | 恢复i2c主器件和i2c从器件通讯的方法 |
CN102662902B (zh) * | 2012-03-30 | 2015-05-13 | 中兴通讯股份有限公司 | 一种防止i2c总线锁定的方法、装置及系统 |
CN107562668B (zh) * | 2017-08-31 | 2019-02-12 | Oppo广东移动通信有限公司 | 总线死锁恢复系统和方法 |
CN110249319A (zh) * | 2018-01-09 | 2019-09-17 | 深圳市汇顶科技股份有限公司 | 处理i2c总线死锁的方法、电子设备和通信系统 |
-
2019
- 2019-12-03 CN CN201911221442.8A patent/CN110908841B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6145036A (en) * | 1998-09-30 | 2000-11-07 | International Business Machines Corp. | Polling of failed devices on an I2 C bus |
CN102073613A (zh) * | 2010-12-15 | 2011-05-25 | 创新科存储技术有限公司 | 一种消除i2c总线死锁的装置及方法 |
CN103019871A (zh) * | 2012-12-31 | 2013-04-03 | 四川迪佳通电子有限公司 | 一种i2c总线的防死锁系统及其防死锁方法 |
CN103645975A (zh) * | 2013-11-28 | 2014-03-19 | 华为技术有限公司 | 一种异常恢复的方法及串行总线传输装置 |
Also Published As
Publication number | Publication date |
---|---|
CN110908841A (zh) | 2020-03-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110908841B (zh) | 一种i2c通信异常恢复方法及装置 | |
US10116542B2 (en) | Communication device, communication method, program, and communication system | |
CN102521187B (zh) | 一种i2c总线通信死锁解决方法 | |
CN102761439B (zh) | Pon接入系统中基于看门狗的异常检测记录装置及方法 | |
JP5160100B2 (ja) | データ通信誤動作防止装置、電子機器、データ通信誤動作防止装置の制御方法、データ通信誤動作防止装置の制御プログラム、及び当該プログラムを記録した記録媒体 | |
US20110113171A1 (en) | Acknowledgement management technique for supported command set of smbus/pmbus slave applications | |
US9146797B2 (en) | Method for ensuring remediation of hung multiplexer bus channels | |
CN102880527B (zh) | 一种基板管理控制器的数据恢复方法 | |
CN110249319A (zh) | 处理i2c总线死锁的方法、电子设备和通信系统 | |
CN103645975A (zh) | 一种异常恢复的方法及串行总线传输装置 | |
JP6696511B2 (ja) | 通信装置、通信方法、プログラム、および通信システム | |
CN109074343B (zh) | 通信设备、通信方法、程序、以及通信系统 | |
CN110268393B (zh) | 通信装置、通信方法、程序和通信系统 | |
CN110750374A (zh) | 一种看门狗电路及其控制方法 | |
CN111522757A (zh) | 一种基于i2c总线的中断读取与清除的控制方法 | |
TWI228218B (en) | Circuit for detection of internal microprocessor watchdog device execution and method for resetting microprocessor system | |
CN101630278A (zh) | 记录电子装置当机异常信息的方法及其电子装置 | |
CN114296995B (zh) | 一种服务器自主修复bmc的方法、系统、设备及存储介质 | |
EP3459189B1 (en) | Communication apparatus, communication method, program, and communication system | |
CN108897248A (zh) | 一种多cpu控制器和移动机器人 | |
CN115098342A (zh) | 系统日志收集方法、系统、终端及存储介质 | |
CN112445744B (zh) | I2c通信 | |
US10824582B2 (en) | Communication apparatus, communication method, program, and communication system | |
CN106708759B (zh) | 控制数字输入输出接口的方法、处理器 | |
CN116107790A (zh) | I2c通信异常的处理方法、电子设备、系统和存储介质 |
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 |