CN103645975A - 一种异常恢复的方法及串行总线传输装置 - Google Patents
一种异常恢复的方法及串行总线传输装置 Download PDFInfo
- Publication number
- CN103645975A CN103645975A CN201310627788.4A CN201310627788A CN103645975A CN 103645975 A CN103645975 A CN 103645975A CN 201310627788 A CN201310627788 A CN 201310627788A CN 103645975 A CN103645975 A CN 103645975A
- Authority
- CN
- China
- Prior art keywords
- scl
- equipment
- sda
- bus
- main equipment
- 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
Images
Landscapes
- Debugging And Monitoring (AREA)
- Information Transfer Systems (AREA)
Abstract
本发明实施例提供了一种异常恢复的方法及串行总线传输装置,涉及通信领域,可以在SDA被从设备拉低的情况下产生stop信号,使数据传输正常进行。所述方法包括:当主设备和从设备检测到SCL处于异常状态时,释放SCL和SDA;当主设备检测到SCL和SDA均被释放后,在串行总线上产生停止stop信号。
Description
技术领域
本发明涉及通信领域,尤其涉及一种异常恢复的方法及串行总线传输装置。
背景技术
I2C(Inter Integrared Circuit,集成电路互联总线)协议、SMBUS(System Management Bus,***管理总线)协议,PMBUS(InterIntegrared Circuit,集成电路互联总线)协议是包括SCL(SerialClock Line,串行时钟总线)和SDA(Serial Data Line,串行数据总线)的两线式串行总线类协议,通常用于连接多个主设备和多个从设备。所述主设备与从设备间的数据传输以start信号开始,以stop信号结束。I2C协议还要求start信号(SCL为高,SDA为下降沿)和stop信号(SCL为高,SDA为上升沿)严格配对,即在I2C总线上进行数据传输时,在数据传输开始时需要产生一个start信号,在数据传输结束后必须对应产生一个stop信号,否则下一次的数据传输不能启动。
在I2C总线***中,通常有多个主设备和多个从设备参与数据传输,这多个主设备和多个从设备均挂接在同一总线上,各主设备可以通过总线仲裁的方式获得总线使用权。主设备或者从设备长期拉低SCL或SDA导致总线挂死等总线异常情况。在这些场景下,总线无法进行自恢复,从而无法产生stop信号,这就导致数据传输无法继续进行。
现有技术中存在一种串行总线异常自恢复的方法,在主设备中引入超时检测模块,对SCL的状态进行实时检测。当SCL被拉低的时间超过超时值时,主设备会发送stop信号,使数据传输正常进行。
在实现上述串行总线异常自恢复方法的过程中,当SDA是被从设备拉低时,主设备无法将SDA拉高产生上升沿,即无法发送stop信号,总线被从设备挂死,总线上的数据传输不能正常进行。
发明内容
本发明实施例提供了一种异常恢复的方法及串行总线传输装置,可以在SDA被从设备拉低的情况下产生stop信号,从而使数据传输正常进行。
为达到上述目的,本发明的实施例采用如下技术方案:
第一方面,公开了一种异常恢复的方法,用于串行总线传输装置,所述串行总线传输装置包括至少一个主设备,至少一个从设备,以及用于所述主设备与所述从设备之间进行通信的串行总线,包括:
所述主设备和所述从设备分别检测串行时钟总线SCL是否处于异常状态;
若所述SCL处于异常状态,则所述主设备和所述从设备分别释放所述SCL和串行数据总线SDA;
在所述主设备检测到所述SCL和所述SDA均被释放之后,所述主设备在所述SCL和所述SDA上产生停止stop信号,以使所述串行总线传输装置恢复正常通信,其中,所述stop信号是指所述SCL处于高电平,所述SDA处于上升沿。
结合第一方面,在第一种可能的实现方式中,所述主设备在所述SCL和所述SDA上产生停止stop信号,包括:
所述主设备控制所述SCL先维持一个高电平时间t1后拉低,再维持一个低电平时间t2后拉高;同时控制所述SDA先维持一个高电平时间t3后拉低,再维持一个低电平时间t4后拉高,使得所述t4结束时,所述SCL处于高电平,所述SDA处于上升沿;其中t3>t1,t3+t4>t1+t2。
结合第一方面或第一方面的第一种可能的实现方式,在第二种可能的实现方式中,
所述若所述SCL处于异常状态,则所述主设备和所述从设备分别释放所述SCL和所述SDA,包括:
所述主设备在检测到所述SCL处于异常状态时,释放所述SCL和所述SDA中的被所述主设备控制的总线;
所述从设备在检测到所述SCL处于异常状态时,释放所述SCL和所述SDA中被所述从设备控制的总线。
结合第一方面或第一方面的第一种可能的实现方式,在第三种可能的实现方式中,
若所述SCL处于异常状态,则所述主设备和所述从设备分别释放所述SCL和所述SDA,包括:
所述主设备在检测到所述SCL处于异常状态时,释放被所述主设备控制的所述SCL;或者,所述从设备在检测到所述SCL处于异常状态时,释放被所述从设备控制的所述SCL;
所述主设备在检测到所述SCL被释放后,所述主设备控制所述SCL进行翻转,并在控制所述SCL翻转小于等于9个时钟周期时释放所述SDA。
第二方面,公开了一种串行总线传输装置,包括至少一个主设备,至少一个从设备,以及用于所述主设备与所述从设备之间进行通信的串行总线,所述主设备包括第一检测单元、第一总线释放单元、总线状态检测单元和STOP信号产生单元,所述从设备包括第二检测单元和第二总线释放单元,包括:
所述第一检测单元,用于检测串行时钟总线SCL是否处于异常状态;
所述第二检测单元,用于检测所述SCL是否处于异常状态;
所述第一总线释放单元,用于在所述第一检测单元检测到所述SCL处于异常状态时,释放所述SCL和串行数据总线SDA;
所述第二总线释放单元,用于在所述第二检测单元检测到所述SCL处于异常状态时,释放所述SCL和所述SDA;
所述总线状态检测单元,用于检测所述SCL和所述SDA是否均被释放;
所述STOP信号产生单元,用于在所述总线状态检测单元检测到所述SCL和所述SDA均被释放时,在所述SCL和所述SDA上产生停止stop信号,以使得串行总线传输装置恢复正常通信,其中,所述stop信号是指所述SCL处于高电平,所述SDA处于上升沿。
结合第二方面,在第一种可能的实现方式中,所述STOP信号产生单元具体用于,控制所述SCL先维持一个高电平时间t1后拉低,再维持一个低电平时间t2后拉高;同时控制所述SDA先维持一个高电平时间t3后拉低,再维持一个低电平时间t4后拉高,使得所述t4结束时,所述SCL处于高电平,所述SDA处于上升沿;其中t3>t1,t3+t4>t1+t2。
结合第二方面或第二方面的第一种可能的实现方式,在第二种可能的实现方式中,所述第一总线释放单元具体用于,在所述第一检测单元检测到所述SCL处于异常状态时,释放SCL和SDA中的被所述主设备控制的总线;
所述第二总线释放单元具体用于,在所述第二检测单元检测到所述SCL处于异常状态时,释放SCL和SDA中的被所述从设备控制的总线。
结合第二方面或第二方面的第一种可能的实现方式,在第三种可能的实现方式中,
所述第一总线释放单元具体用于,在所述第一检测单元检测到所述SCL处于异常状态时,释放被所述主设备控制的所述SCL;
所述第二总线释放单元具体用于,在所述第二检测单元检测到所述SCL处于异常状态时,释放被所述从设备控制的所述SCL;
所述总线状态检测单元用于,检测所述SCL是否被释放;
所述第一总线释放单元还用于,在所述总线检测单元检测到所述SCL被释放后,控制所述SCL进行翻转,并在控制所述SCL翻转小于等于9个时钟周期时释放所述SDA。
上述技术方案提供的异常恢复方法及串行总线传输装置,在主设备和从设备中均引入检测模块对时钟总线SCL进行检测。当主设备或从设备检测到SCL处于异常状态时,就会释放相应总线;当主设备检测到SCL和SDA均被释放后,就会在串行总线上产生stop信号。与现有技术中的在出现SDA被从设备拉低的情况时,主设备无法产生stop信号相比,本发明实施例提供的方法,可以在SDA被从设备控制的情况下,主设备和从设备都可以释放SDA,然后主设备就可以通过软件或硬件产生stop信号,使串行总线上的数据传输正常进行。
附图说明
图1为本发明实施例1提供的一种异常恢复方法流程示意图;
图2为本发明实施例2提供的一种异常恢复方法流程示意图;
图3为stop信号产生过程的时序示意图;
图4为本发明实施例3提供一种异常恢复方法的流程示意图;
图5为本发明实施例4提供的一种串行总线传输装置的结构框图;
图6为本发明实施例5提供的一种串行总线传输装置的结构框图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
实施例1:
本发明实施例所提供的异常恢复的方法,应用于串行总线传输装置,所述串行总线传输装置中包括至少一个主设备,至少一个从设备,以及用于所述主设备与所述从设备之间进行通信的串行总线,所述串行总线包括串行时钟总线SCL和串行数据总线SDA。在设备之间进行通信时,所述主设备起主要控制作用,是通信发起方,从设备是通信过程的目的端。另外,所述主设备能够优先获取总线控制权。
本发明实施例提供了一种异常恢复的方法,应用于串行总线传输装置,如图1所示,所述方法包括以下步骤:
101、所述主设备和所述从设备分别检测串行时钟总线SCL是否处于异常状态。
在所述串行总线传输装置在所述主设备和所述从设备间进行数据传输时,当stop信号结束后的时间间隔满足协议要求后,总线忙闲信号拉低,此时主设备可以产生start信号,同时将总线忙闲状态信号拉高。然后主设备寻址从设备(发送从设备地址:7bit寻址或者10bit寻址)向从设备发送查询消息,从设备接收到所述查询消息后进行寻址握手操作,向所述主设备发送响应消息。主设备在接收到所述响应消息后,就可以与所述从设备进行数据传输(发送模式:主设备发送时钟和数据;接收模式:主设备发送时钟,从设备回传数据)。主设备需要结束传输时,就会产生stop信号,同时将忙闲状态信号拉低。
在实际应用中,会出现的总线异常情况包括:所述主设备在总线仲裁中被要求丢掉总线控制权,但仍以为自身持有总线控制权,将所述SCL长时间拉低,即所述SCL长时间处于低电平状态;或者所述SCL被所述主设备或所述从设备长时间拉低;或者所述SCL长时间处于高电平状态。在上述数据传输的过程中,所述主设备和所述从设备要对所述SCL进行实时检测,检测所述SCL是否处于异常状态,即检测所述SCL处于低电平的状态时间是否超过预设阈值,或者检测所述SCL处于高电平的状态时间超过所述预设阈值。
102、若所述SCL处于异常状态,则所述主设备和所述从设备分别释放所述SCL和串行数据总线SDA。
在这里,当所述SCL处于异常状态时,需要释放串行总线中的所述SCL和所述SDA,释放过程主要包括两种情况:
第一种情况,主设备和从设备在检测到所述SCL处于异常状态时,各自释放被自己控制的总线。
主设备和从设备检测到所述SCL处于异常状态的时刻是有差异的,可以是主设备先检测到也可以是从设备先检测到,在此并不作限制,在所述主设备检测到所述SCL处于异常状态时,所述主设备就试图释放SCL、SDA,但所述主设备只能释放SCL和SDA中的被他自己控制的总线,而不能释放被从设备控制的总线。同理,所述从设备在检测到所述SCL处于异常状态时,也只能释放被所述从设备自己控制的总线。当主设备和从设备都释放了被各自控制的SCL、SDA后,才认为总线被释放。
第二种情况,所述SCL先被主设备或从设备释放,然后所述SDA再被主设备释放。
若所述SCL是被所述主设备控制的,则所述主设备在检测到所述SCL处于异常状态时,就会释放SCL。若所述SCL是被所述从设备控制的,则所述从设备在检测到所述SCL处于异常状态时,就会释放所述SCL。
所述主设备在检测到所述SCL被释放后,所述主设备的总线控制器就会通过软件模拟GPIO功能,进而释放SDA。需要说明的是,本发明实施例所述的释放总线即所述主设备或所述从设备放弃总线控制权。
103、在所述主设备检测到所述SCL和所述SDA均被释放之后,所述主设备在所述SCL和所述SDA上产生停止stop信号。
所述主设备检测到所述SCL和所述SDA均被释放以后,再控制所述SCL和所述SDA进行翻转产生stop信号,以使所述串行总线传输装置恢复正常通信。其中,所述stop信号是指所述SCL处于高电平,所述SDA处于上升沿。
在这里,所述stop信号的产生过程既可以通过硬件实现也可以通过软件实现。
本发明实施例提供的异常恢复方法,在主设备和从设备中均引入检测模块对时钟总线SCL进行检测。当主设备或从设备检测到SCL处于异常状态时,就会释放相应总线;当主设备检测到SCL和SDA均被释放后,就会在串行总线上产生stop信号。与现有技术中的在出现SDA被从设备拉低的情况时,主设备无法产生stop信号相比,本发明实施例提供的方法,可以在SDA被从设备控制的情况下,主设备和从设备都可以释放SDA,然后主设备就可以通过软件或硬件产生stop信号,使串行总线上的数据传输正常进行。
实施例2:
本发明实施例提供了一种异常恢复的方法,应用于串行总线传输装置,如图2所示,所述方法包括以下步骤:
201、所述主设备和所述从设备分别检测所述SCL是否处于异常状态。
在主设备和从设备传输数据的过程中,主设备和从设备都可以对所述SCL进行实时检测,检测所述SCL是否处于异常状态,在实际应用中,会出现的总线异常情况包括:所述主设备在总线仲裁中被要求丢掉总线控制权,但仍以为自身持有总线控制权,将所述SCL长时间拉低,即所述SCL长时间处于低电平状态;或者所述SCL被所述主设备或所述从设备长时间拉低;或者所述SCL长时间处于高电平状态。因此,所述主设备和所述从设备在检测所述SCL是否处于异常状态时,需检测所述SCL处于低电平的状态时间是否超过预设阈值,或者检测所述SCL处于高电平的状态时间超过所述预设阈值。主设备和从设备检测到所述SCL处于异常状态的时刻是有差异的,可以是主设备先检测到也可以是从设备先检测到,在此并不作限制。
202、所述主设备在检测到所述SCL处于异常状态时,释放SCL和SDA中的被所述主设备控制的总线,所述从设备在检测到所述SCL处于异常状态时,释放所述SCL和所述SDA中被所述从设备控制的总线。
这里,主设备和从设备检测到所述SCL处于异常状态的时刻是有差异的,可以是主设备先检测到也可以是从设备先检测到,在此并不作限制。
示例的,若所述SCL被所述主设备控制,所述SDA被所述从设备控制。若所述从设备先检测到所述SCL处于异常状态,所述从设备也只能释放所述SDA。而所述主设备在随后检测到所述SCL处于异常状态时,就会释放所述SCL。这样SCL和SDA就都被释放了。
或者,若所述SCL和所述SDA均是被所述从设备拉低的。若主设备先检测到所述SCL处于异常状态,所述主设备会进行释放总线的操作,试图释放所述SCL和所述SDA,但由于所述SCL和所述SDA均是被所述从设备拉低的,故主设备不能释放SCL和SDA;所述从设备在随后检测到所述SCL处于异常状态时,就会释放所述SCL和所述SDA。这样SCL和SDA就都被释放了。本发明实施例中所述的释放是指所述主设备或所述从设备放弃总线控制权。
203、所述主设备检测所述SCL和所述SDA是否被释放。
204、所述主设备在检测到所述SCL和所述SDA均被释放后,在所述串行总线上产生stop信号。
这里,所述stop信号的产生过程可以如图3所示,所述主设备控制所述SCL先维持一个高电平时间t1后拉低,再维持一个低电平时间t2后拉高;同时控制所述SDA先维持一个高电平时间t3拉低,再维持一个低电平时间t4后拉高,其中t3>t1,t3+t4>t1+t2。这样,在图中所示的T时刻SCL为高电平、SDA为上升沿,即产生了stop信号。
可选地,上述stop信号的产生过程既可以通过硬件实现也可以通过软件实现。
本发明实施例提供的异常恢复方法,在主设备和从设备中均引入检测模块对时钟总线SCL进行检测。当主设备或从设备检测到SCL处于异常状态时,就会释放相应总线;当主设备检测到SCL和SDA均被释放后,就会在串行总线上产生stop信号。与现有技术中的在出现SDA被从设备拉低的情况时,主设备无法产生stop信号相比,本发明实施例提供的方法,可以在SDA被从设备控制的情况下,主设备和从设备都可以释放SDA,然后主设备就可以通过软件或硬件产生stop信号,使串行总线上的数据传输正常进行。
实施例3:
本发明实施例提供了一种异常恢复的方法,应用于串行总线传输装置,如图4所示,所述方法包括以下步骤:
401、所述主设备和所述从设备分别检测所述SCL是否处于异常状态。
本发明实施例中,主设备和从设备都可以对SCL进行实时检测,检测所述SCL是否处于异常状态,在实际应用中,会出现的总线异常情况包括:所述主设备在总线仲裁中被要求丢掉总线控制权,但仍以为自身持有总线控制权,将所述SCL长时间拉低,即所述SCL长时间处于低电平状态;或者所述SCL被所述主设备或所述从设备长时间拉低;或者所述SCL长时间处于高电平状态。因此,所述主设备和所述从设备在对所述检测所述SCL是否处于异常状态时,需检测所述SCL处于低电平的状态时间是否超过预设阈值,或者检测所述SCL处于高电平的状态时间超过所述预设阈值。
这里,主设备和从设备检测到所述SCL处于异常状态的时刻是有差异的,可以是主设备先检测到也可以是从设备先检测到,在此并不作限制。
402、所述主设备或所述从设备在检测到SCL处于异常状态时释放SCL。
示例的,若所述SCL是被所述主设备控制的,则所述主设备在检测到所述SCL处于异常状态时释放所述SCL。若所述SCL是被所述从设备控制的,则所述从设备检测到所述SCL处于异常状态时释放所述SCL。
此时,若所述SDA也被所述主设备或所述从设备控制,所述SDA也不能被释放。即就是,在所述主设备或所述从设备检测到所述SCL处于异常状态时,仅释放所述SCL。
403、所述主设备在检测到所述SCL被释放后,控制所述SCL进行翻转,并在控制所述SCL翻转小于等于9个时钟周期时释放SDA。
这里,在所述主设备中引入总线控制器,所述总线控制器通过软件模拟GPIO功能,将SDA释放。示例的,在所述主设备检测到所述SCL被释放后,所述主设备的总线控制器可以通过软件模拟GPIO功能,控制所述SCL翻转5个时钟周期,并在之后释放SDA。
404、所述主设备检测所述SCL和所述SDA是否被释放。
405、所述主设备在检测到所述SCL和所述SDA均被释放后,在所述串行总线上产生停止stop信号。
这里,所述stop信号的产生过程可以如图3所示,所述主设备控制所述SCL先维持一个高电平时间t1后拉低,再维持一个低电平时间t2后拉高;同时控制所述SDA先维持一个高电平时间t3拉低,再维持一个低电平时间t4后拉高,其中t3>t1,t3+t4>t1+t2。这样,在图中所示的T时刻SCL为高电平、SDA为上升沿,即产生了stop信号。
可选地,上述stop信号的产生过程既可以通过硬件实现也可以通过软件实现。
本发明实施例提供的异常恢复方法,在主设备和从设备中均引入检测模块对时钟总线SCL进行检测。当主设备或从设备检测到SCL处于异常状态时,就会释放相应总线;当主设备检测到SCL和SDA均被释放后,就会在串行总线上产生stop信号。与现有技术中的在出现SDA被从设备拉低的情况时,主设备无法产生stop信号相比,本发明实施例提供的方法,可以在SDA被从设备控制的情况下,主设备和从设备都可以释放SDA,然后主设备就可以通过软件或硬件产生stop信号,使串行总线上的数据传输正常进行。
实施例4:
本发明实施例进一步给出实现图1所示的方法实施例中各步骤及方法的装置实施例。
本发明实施例提供了一种串行总线传输装置,用于执行图1所示的方法实施例中的方法,如图5所示,所述串行总线传输装置包括至少一个主设备和至少一个从设备以及用于所述主设备与所述从设备之间进行通信的串行总线,所述串行总线包括串行时钟总线SCL和串行数据总线SDA,所述主设备包括第一检测单元501、第一总线释放单元502、总线状态检测单元503和STOP信号产生单元504,所述从设备包括第二检测单元505和第二总线释放单元506。
所述第一检测单元501,用于检测所述SCL是否处于异常状态;所述第二检测单元505,用于检测所述SCL是否处于异常状态;所述第一总线释放单元502,用于在所述第一检测单元501检测到所述SCL处于异常状态时,释放所述SCL和所述SDA;所述第二总线释放单元506,用于在所述第二检测单元505检测到所述SCL处于异常状态时,释放所述SCL和所述SDA;所述总线状态检测单元503,用于检测所述SCL和所述SDA是否均被释放;所述STOP信号产生单元504,用于在所述总线状态检测单元503检测到所述SCL和所述SDA均被释放时,在所述SCL和所述SDA上产生停止stop信号,以使得串行总线传输装置恢复正常通信,其中,所述stop信号是指所述SCL处于高电平,所述SDA处于上升沿。
所述STOP信号产生单元具体用于504,控制所述SCL先维持一个高电平时间t1后拉低,再维持一个低电平时间t2后拉高;同时控制所述SDA先维持一个高电平时间t3后拉低,再维持一个低电平时间t4后拉高,使得所述t4结束时,所述SCL处于高电平,所述SDA处于上升沿;其中t3>t1,t3+t4>t1+t2。
所述第一总线释放单元502具体用于,在所述第一检测单元501检测到所述SCL处于异常状态时,释放SCL和SDA中的被所述主设备控制的总线;所述第二总线释放单元506具体用于,在所述第二检测单元505检测到所述SCL处于异常状态时,释放SCL和SDA中的被所述从设备控制的总线。
所述第一总线释放单元502具体用于,在所述第一检测单元501检测到所述SCL处于异常状态时,释放被所述主设备控制的所述SCL;所述第二总线释放单元506具体用于,在所述第二检测单元505检测到所述SCL处于异常状态时,释放被所述从设备控制的所述SCL;所述总线状态检测单元503用于,检测所述SCL是否被释放;所述第一总线释放单元502还用于,在所述总线检测单元503检测到所述SCL被释放后,控制所述SCL进行翻转,并在控制所述SCL翻转小于等于9个时钟周期时释放所述SDA。
本发明实施例提供的串行总线传输装置,在主设备和从设备中均引入检测模块对时钟总线SCL进行检测。当主设备或从设备检测到SCL处于异常状态时,就会释放相应总线;当主设备检测到SCL和SDA均被释放后,就会在串行总线上产生stop信号。与现有技术中的在出现SDA被从设备拉低的情况时,主设备无法产生stop信号相比,本发明实施例提供的方法,可以在SDA被从设备控制的情况下,主设备和从设备都可以释放SDA,然后主设备就可以通过软件或硬件产生stop信号,使串行总线上的数据传输正常进行。
实施例5:
本发明实施例提供了一种串行总线传输装置,在硬件实现上,图5中所述的第一检测单元、第一总线释放单元、总线状态检测单元和STOP信号产生单元,以及第二检测单元和第二总线释放单元可以以硬件形式或软件形式内嵌于基站的处理器中。该处理器可以为中央处理单元(CPU),也可以单片机。
如图6所示,所述串行总线传输装置包括至少一个主设备和至少一个从设备以及用于所述主设备与所述从设备之间进行通信的串行总线,所述串行总线包括串行时钟总线SCL和串行数据总线SDA,所述主设备包括存储器601以及与存储器601连接的处理器602,所述从设备包括存储器603以及与存储器603连接的处理器604,其中,存储器601中存储一组程序代码,且处理器602用于调用存储器601中存储的程序代码,存储器603中存储一组程序代码,且处理器604用于调用存储器603中存储的程序代码,用于执行以下操作:
处理器602,用于检测所述SCL是否处于异常状态;所述处理器604还用于,检测所述SCL是否处于异常状态;所述处理器602,用于在检测到所述SCL处于异常状态时,释放所述SCL和所述SDA;所述处理器604,用于在检测到所述SCL处于异常状态时,释放所述SCL和所述SDA;所述所述处理器602,用于检测所述SCL和所述SDA是否均被释放;所述所述处理器602,用于在检测到所述SCL和所述SDA均被释放时,在所述SCL和所述SDA上产生停止stop信号,以使得串行总线传输装置恢复正常通信,其中,所述stop信号是指所述SCL处于高电平,所述SDA处于上升沿。
所述处理器602具体用于,控制所述SCL先维持一个高电平时间t1后拉低,再维持一个低电平时间t2后拉高;同时控制所述SDA先维持一个高电平时间t3后拉低,再维持一个低电平时间t4后拉高,使得所述t4结束时,所述SCL处于高电平,所述SDA处于上升沿;其中t3>t1,t3+t4>t1+t2。
所述处理器602具体用于,在检测到所述SCL处于异常状态时,释放SCL和SDA中的被所述主设备控制的总线;所述处理器604具体用于,在检测到所述SCL处于异常状态时,释放SCL和SDA中的被所述从设备控制的总线。
所述处理器602具体用于,在检测到所述SCL处于异常状态时,释放被所述主设备控制的所述SCL;所述处理器604具体用于,在检测到所述SCL处于异常状态时,释放被所述从设备控制的所述SCL;所述处理器602用于,检测所述SCL是否被释放;所述处理器602还用于,在检测到所述SCL被释放后,控制所述SCL进行翻转,并在控制所述SCL翻转小于等于9个时钟周期时释放所述SDA。
本发明实施例提供的串行总线传输装置,在主设备和从设备中均引入检测模块对时钟总线SCL进行检测。当主设备或从设备检测到SCL处于异常状态时,就会释放相应总线;当主设备检测到SCL和SDA均被释放后,就会在串行总线上产生stop信号。与现有技术中的在出现SDA被从设备拉低的情况时,主设备无法产生stop信号相比,本发明实施例提供的方法,可以在SDA被从设备控制的情况下,主设备和从设备都可以释放SDA,然后主设备就可以通过软件或硬件产生stop信号,使串行总线上的数据传输正常进行。
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。
Claims (8)
1.一种异常恢复的方法,用于串行总线传输装置,所述串行总线传输装置包括至少一个主设备,至少一个从设备,以及用于所述主设备与所述从设备之间进行通信的串行总线,其特征在于,包括:
所述主设备和所述从设备分别检测串行时钟总线SCL是否处于异常状态;
若所述SCL处于异常状态,则所述主设备和所述从设备分别释放所述SCL和串行数据总线SDA;
在所述主设备检测到所述SCL和所述SDA均被释放之后,所述主设备在所述SCL和所述SDA上产生停止stop信号,以使所述串行总线传输装置恢复正常通信,其中,所述stop信号是指所述SCL处于高电平,所述SDA处于上升沿。
2.根据权利要求1所述的方法,其特征在于,所述主设备在所述SCL和所述SDA上产生停止stop信号,包括:
所述主设备控制所述SCL先维持一个高电平时间t1后拉低,再维持一个低电平时间t2后拉高;同时控制所述SDA先维持一个高电平时间t3后拉低,再维持一个低电平时间t4后拉高,使得所述t4结束时,所述SCL处于高电平,所述SDA处于上升沿;其中t3>t1,t3+t4>t1+t2。
3.根据权利要求1或2所述的方法,其特征在于,所述若所述SCL处于异常状态,则所述主设备和所述从设备分别释放所述SCL和所述SDA,包括:
所述主设备在检测到所述SCL处于异常状态时,释放所述SCL和所述SDA中的被所述主设备控制的总线;
所述从设备在检测到所述SCL处于异常状态时,释放所述SCL和所述SDA中被所述从设备控制的总线。
4.根据权利要求1或2所述的方法,其特征在于,若所述SCL处于异常状态,则所述主设备和所述从设备分别释放所述SCL和所述SDA,包括:
所述主设备在检测到所述SCL处于异常状态时,释放被所述主设备控制的所述SCL;或者,所述从设备在检测到所述SCL处于异常状态时,释放被所述从设备控制的所述SCL;
所述主设备在检测到所述SCL被释放后,所述主设备控制所述SCL进行翻转,并在控制所述SCL翻转小于等于9个时钟周期时释放所述SDA。
5.一种串行总线传输装置,包括至少一个主设备,至少一个从设备,以及用于所述主设备与所述从设备之间进行通信的串行总线,其特征在于,所述主设备包括第一检测单元、第一总线释放单元、总线状态检测单元和STOP信号产生单元,所述从设备包括第二检测单元和第二总线释放单元,包括:
所述第一检测单元,用于检测串行时钟总线SCL是否处于异常状态;
所述第二检测单元,用于检测所述SCL是否处于异常状态;
所述第一总线释放单元,用于在所述第一检测单元检测到所述SCL处于异常状态时,释放所述SCL和串行数据总线SDA;
所述第二总线释放单元,用于在所述第二检测单元检测到所述SCL处于异常状态时,释放所述SCL和所述SDA;
所述总线状态检测单元,用于检测所述SCL和所述SDA是否均被释放;
所述STOP信号产生单元,用于在所述总线状态检测单元检测到所述SCL和所述SDA均被释放时,在所述SCL和所述SDA上产生停止stop信号,以使得串行总线传输装置恢复正常通信,其中,所述stop信号是指所述SCL处于高电平,所述SDA处于上升沿。
6.根据权利要求5所述的串行总线传输装置,其特征在于,所述STOP信号产生单元具体用于,控制所述SCL先维持一个高电平时间t1后拉低,再维持一个低电平时间t2后拉高;同时控制所述SDA先维持一个高电平时间t3后拉低,再维持一个低电平时间t4后拉高,使得所述t4结束时,所述SCL处于高电平,所述SDA处于上升沿;其中t3>t1,t3+t4>t1+t2。
7.根据权利要求5或6所述的串行总线传输装置,其特征在于,
所述第一总线释放单元具体用于,在所述第一检测单元检测到所述SCL处于异常状态时,释放SCL和SDA中的被所述主设备控制的总线;
所述第二总线释放单元具体用于,在所述第二检测单元检测到所述SCL处于异常状态时,释放SCL和SDA中的被所述从设备控制的总线。
8.根据权利要求5或6所述的串行总线传输装置,其特征在于,
所述第一总线释放单元具体用于,在所述第一检测单元检测到所述SCL处于异常状态时,释放被所述主设备控制的所述SCL;
所述第二总线释放单元具体用于,在所述第二检测单元检测到所述SCL处于异常状态时,释放被所述从设备控制的所述SCL;
所述总线状态检测单元用于,检测所述SCL是否被释放;
所述第一总线释放单元还用于,在所述总线检测单元检测到所述SCL被释放后,控制所述SCL进行翻转,并在控制所述SCL翻转小于等于9个时钟周期时释放所述SDA。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310627788.4A CN103645975B (zh) | 2013-11-28 | 2013-11-28 | 一种异常恢复的方法及串行总线传输装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310627788.4A CN103645975B (zh) | 2013-11-28 | 2013-11-28 | 一种异常恢复的方法及串行总线传输装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103645975A true CN103645975A (zh) | 2014-03-19 |
CN103645975B CN103645975B (zh) | 2016-06-15 |
Family
ID=50251196
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310627788.4A Expired - Fee Related CN103645975B (zh) | 2013-11-28 | 2013-11-28 | 一种异常恢复的方法及串行总线传输装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103645975B (zh) |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105323017A (zh) * | 2014-07-01 | 2016-02-10 | 西部电机株式会社 | 通信异常检测装置、通信异常检测方法以及程序 |
CN105512070A (zh) * | 2015-12-02 | 2016-04-20 | 中国电子科技集团公司第四十一研究所 | 一种基于串行总线的控制*** |
CN106201984A (zh) * | 2016-07-15 | 2016-12-07 | 青岛海信电器股份有限公司 | 一种数据读取方法及装置 |
CN108563598A (zh) * | 2018-03-02 | 2018-09-21 | 上海芯导电子科技有限公司 | 一种自唤醒的i2c通讯架构*** |
CN109271273A (zh) * | 2018-10-15 | 2019-01-25 | 郑州云海信息技术有限公司 | 一种通讯异常恢复的方法、异常恢复设备及存储介质 |
CN109388605A (zh) * | 2017-08-10 | 2019-02-26 | 深圳市中兴微电子技术有限公司 | 一种解除i2c总线死锁的方法和装置 |
CN109976489A (zh) * | 2019-03-28 | 2019-07-05 | 烽火通信科技股份有限公司 | 一种iic总线异常情况下自动复位实现方法及*** |
CN110908841A (zh) * | 2019-12-03 | 2020-03-24 | 锐捷网络股份有限公司 | 一种i2c通信异常恢复方法及装置 |
CN111007763A (zh) * | 2019-12-03 | 2020-04-14 | 宁波奥克斯电气股份有限公司 | 一种iic总线解锁的控制方法 |
CN115599617A (zh) * | 2022-12-01 | 2023-01-13 | 苏州浪潮智能科技有限公司(Cn) | 总线检测方法、装置、服务器及电子设备 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070112990A1 (en) * | 2005-11-15 | 2007-05-17 | Matsushita Electric Industrial Co., Ltd. | Iic bus communication system, slave device, and method for controlling iic bus communication |
CN101561790A (zh) * | 2009-05-27 | 2009-10-21 | 中兴通讯股份有限公司 | 一种主控机与从机通信的方法、***及装置 |
CN102073613A (zh) * | 2010-12-15 | 2011-05-25 | 创新科存储技术有限公司 | 一种消除i2c总线死锁的装置及方法 |
CN102521187A (zh) * | 2011-11-29 | 2012-06-27 | 广东东研网络科技有限公司 | 一种i2c总线通信死锁解决方法 |
CN103176937A (zh) * | 2011-12-20 | 2013-06-26 | 富士通株式会社 | 控制***和中继设备 |
-
2013
- 2013-11-28 CN CN201310627788.4A patent/CN103645975B/zh not_active Expired - Fee Related
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070112990A1 (en) * | 2005-11-15 | 2007-05-17 | Matsushita Electric Industrial Co., Ltd. | Iic bus communication system, slave device, and method for controlling iic bus communication |
CN101561790A (zh) * | 2009-05-27 | 2009-10-21 | 中兴通讯股份有限公司 | 一种主控机与从机通信的方法、***及装置 |
CN102073613A (zh) * | 2010-12-15 | 2011-05-25 | 创新科存储技术有限公司 | 一种消除i2c总线死锁的装置及方法 |
CN102521187A (zh) * | 2011-11-29 | 2012-06-27 | 广东东研网络科技有限公司 | 一种i2c总线通信死锁解决方法 |
CN103176937A (zh) * | 2011-12-20 | 2013-06-26 | 富士通株式会社 | 控制***和中继设备 |
Cited By (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105323017B (zh) * | 2014-07-01 | 2018-09-21 | 西部电机株式会社 | 通信异常检测装置、通信异常检测方法以及记录介质 |
CN105323017A (zh) * | 2014-07-01 | 2016-02-10 | 西部电机株式会社 | 通信异常检测装置、通信异常检测方法以及程序 |
CN105512070A (zh) * | 2015-12-02 | 2016-04-20 | 中国电子科技集团公司第四十一研究所 | 一种基于串行总线的控制*** |
CN105512070B (zh) * | 2015-12-02 | 2018-07-06 | 中国电子科技集团公司第四十一研究所 | 一种基于串行总线的控制*** |
CN106201984A (zh) * | 2016-07-15 | 2016-12-07 | 青岛海信电器股份有限公司 | 一种数据读取方法及装置 |
CN109388605A (zh) * | 2017-08-10 | 2019-02-26 | 深圳市中兴微电子技术有限公司 | 一种解除i2c总线死锁的方法和装置 |
CN108563598A (zh) * | 2018-03-02 | 2018-09-21 | 上海芯导电子科技有限公司 | 一种自唤醒的i2c通讯架构*** |
CN109271273A (zh) * | 2018-10-15 | 2019-01-25 | 郑州云海信息技术有限公司 | 一种通讯异常恢复的方法、异常恢复设备及存储介质 |
CN109976489A (zh) * | 2019-03-28 | 2019-07-05 | 烽火通信科技股份有限公司 | 一种iic总线异常情况下自动复位实现方法及*** |
CN110908841A (zh) * | 2019-12-03 | 2020-03-24 | 锐捷网络股份有限公司 | 一种i2c通信异常恢复方法及装置 |
CN111007763A (zh) * | 2019-12-03 | 2020-04-14 | 宁波奥克斯电气股份有限公司 | 一种iic总线解锁的控制方法 |
CN111007763B (zh) * | 2019-12-03 | 2022-02-01 | 宁波奥克斯电气股份有限公司 | 一种iic总线解锁的控制方法 |
CN110908841B (zh) * | 2019-12-03 | 2022-09-20 | 锐捷网络股份有限公司 | 一种i2c通信异常恢复方法及装置 |
CN115599617A (zh) * | 2022-12-01 | 2023-01-13 | 苏州浪潮智能科技有限公司(Cn) | 总线检测方法、装置、服务器及电子设备 |
Also Published As
Publication number | Publication date |
---|---|
CN103645975B (zh) | 2016-06-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103645975B (zh) | 一种异常恢复的方法及串行总线传输装置 | |
CN102546141B (zh) | 485总线***及其异步半双工通信方法 | |
CN101763331B (zh) | 一种实现i2c总线控制的***及方法 | |
CN110908841B (zh) | 一种i2c通信异常恢复方法及装置 | |
CN105677608B (zh) | 一种多主rs485总线仲裁方法及*** | |
TW201923606A (zh) | 針對多執行環境之i3c頻帶內中斷 | |
JP6659552B2 (ja) | マルチマスタバス | |
CN102724093B (zh) | 一种atca机框及其ipmb连接方法 | |
CN107003974B (zh) | 一种接口检测方法及装置 | |
CN203849731U (zh) | 一种基于i2c总线实现的数据处理设备 | |
CN103106113A (zh) | 一种中断事件处理方法和处理设备 | |
CN105760328A (zh) | 一种vr设备usb主从切换方法以及*** | |
CN110659238A (zh) | 数据通信*** | |
RU2015109465A (ru) | Стойка с функцией автоматического восстановления и способ автоматического восстановления для этой стойки | |
CN103412836A (zh) | 热插拔处理方法、装置以及*** | |
CN103530215B (zh) | 一种内部集成电路主机的自检方法、装置及主机 | |
CN113590527B (zh) | 通信总线的挂死修复方法、装置、电子设备及存储介质 | |
CN104010077A (zh) | 一种信息处理方法及电子设备 | |
CN109976489B (zh) | 一种iic总线异常情况下自动复位实现方法及*** | |
CN105807886A (zh) | 一种芯片唤醒***及方法以及移动终端 | |
CN111737183A (zh) | 一种服务器及一种i2c总线的通信故障处理方法和*** | |
CN104899164B (zh) | 集成电路总线的地址寻址方法、集成电路总线设备和*** | |
CN106372019B (zh) | 一种***总线设备响应超时的处理方法及超时处理装置 | |
CN103856381A (zh) | 自动恢复热插拔i2c总线锁死的方法、装置和*** | |
CN212324117U (zh) | 一种rs485总线多主机竞争切换*** |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20160615 Termination date: 20201128 |