一种I2C总线故障处理方法及装置制造方法及图纸

技术编号:37560815 阅读:12 留言:0更新日期:2023-05-15 07:43
本发明专利技术公开了一种I2C总线故障处理方法及装置,所述方法包括:根据SDA数据线的状态和SCL时钟线的状态,获取待处理I2C总线的故障原因;当故障原因为SDA低电平挂死时,对主机进行自恢复处理;当故障原因为SCL挂死时,对通信从机进行自恢复处理;对待处理I2C总线的状态进行判断,当判定待处理I2C总线的状态未恢复正常时,进行通信系统复位处理。采用本发明专利技术实施例提高了对于I2C总线故障的处理精度。例提高了对于I2C总线故障的处理精度。例提高了对于I2C总线故障的处理精度。

【技术实现步骤摘要】
一种I2C总线故障处理方法及装置


[0001]本专利技术涉及数据处理
,尤其涉及一种I2C总线故障处理方法及装置。

技术介绍

[0002]在I2C通信过程中,数据通过SDA线上的电平高低改变进行传输,当SCL线处于高电平时对SDA线上的电平数据进行读取,当SCL为低电平时,SDA能够根据传输的数据改变高低电平进行逻辑1和0的数据切换,在某一个时钟周期中,SDA电平进行切换时,从SCL低电平开始到SDA电平变化的这段时间称为数据输出保持时间(hold time)。
[0003]现有技术中,通过软件模块检测计算数据输出保持时间(hold time)来定位通信故障,但是在I2C总线发生异常的情况下,没有区分I2C具体通信故障情况,无法确定由于主机侧还是从机侧发生异常导致的通信故障问题,由此无法通过SCL线或SDA线挂死的对应解决方案进行针对性处理。
[0004]有上述可得,现有的I2C总线故障处理方法存在处理精度不高的问题。

技术实现思路

[0005]本专利技术实施例提供一种I2C总线故障处理方法及装置,提高了对于I2C总线故障的处理精度。
[0006]本申请实施例的第一方面提供了一种I2C总线故障处理方法,包括:
[0007]根据SDA数据线的状态和SCL时钟线的状态,获取待处理I2C总线的故障原因;
[0008]当故障原因为SDA低电平挂死时,对主机进行自恢复处理;当故障原因为SCL挂死时,对通信从机进行自恢复处理;
[0009]对待处理I2C总线的状态进行判断,当判定待处理I2C总线的状态未恢复正常时,进行通信系统复位处理。
[0010]在第一方面的一种可能的实现方式中,当故障原因为SDA低电平挂死时,对主机进行自恢复处理,具体为:
[0011]控制主机模拟SCL数据线的信号以恢复SDA数据线的信号。
[0012]在第一方面的一种可能的实现方式中,当故障原因为SCL挂死时,对通信从机进行自恢复处理,具体为:
[0013]根据通信地址,复位通信从机。
[0014]在第一方面的一种可能的实现方式中,对待处理I2C总线的状态进行判断,具体为:
[0015]当SDA数据线释放高电平信号或者SCL数据线释放高电平信号时,判定待处理I2C总线的状态恢复正常;
[0016]当SCL数据线释放低电平信号或者当SDA数据线释放低电平信号且模拟次数大于第一预设数值时,判定待处理I2C总线的状态未恢复正常;其中,模拟次数为主机模拟SCL数据线的信号的次数。
[0017]在第一方面的一种可能的实现方式中,还包括:对待处理I2C总线进行初始化处理,具体为:
[0018]启动通信系统,当SDA数据线释放低电平信号时,控制主机在9个时钟周期内连续模拟SCL数据线的信号,以恢复SDA数据线的信号;
[0019]当SDA数据线释放高电平信号时,判定待处理I2C总线的状态为正常状态,完成初始化处理。
[0020]在第一方面的一种可能的实现方式中,还包括:
[0021]监控第一I2C总线的状态,当第一I2C总线不处于IDLE状态时,记录第一I2C总线的通信从机地址;
[0022]当第一I2C总线的当前状态与上一个历史状态相同、且通信从机的确认应答时间大于第二预设数值时,将第一I2C总线作为待处理I2C总线并获取SDA数据线的状态和SCL时钟线的状态。
[0023]在第一方面的一种可能的实现方式中,当待处理I2C总线的状态恢复正常后,还包括:
[0024]更新错误日志数据。
[0025]本申请实施例的第二方面提供了一种I2C总线故障处理装置,包括:获取模块、自恢复处理模块和复位处理模块;
[0026]其中,获取模块用于根据SDA数据线的状态和SCL时钟线的状态,获取待处理I2C总线的故障原因;
[0027]自恢复处理模块用于当故障原因为SDA低电平挂死时,对主机进行自恢复处理;当故障原因为SCL挂死时,对通信从机进行自恢复处理;
[0028]复位处理模块用于对待处理I2C总线的状态进行判断,当判定待处理I2C总线的状态未恢复正常时,进行通信系统复位处理。
[0029]在第二方面的一种可能的实现方式中,当故障原因为SDA低电平挂死时,对主机进行自恢复处理,具体为:
[0030]控制主机模拟SCL数据线的信号以恢复SDA数据线的信号。
[0031]在第二方面的一种可能的实现方式中,当故障原因为SCL挂死时,对通信从机进行自恢复处理,具体为:
[0032]根据通信地址,复位通信从机。
[0033]相比于现有技术,本专利技术实施例提供的一种I2C总线故障处理方法及装置,所述方法包括:根据SDA数据线的状态和SCL时钟线的状态,获取待处理I2C总线的故障原因;当故障原因为SDA低电平挂死时,对主机进行自恢复处理;当故障原因为SCL挂死时,对通信从机进行自恢复处理;对待处理I2C总线的状态进行判断,当判定待处理I2C总线的状态未恢复正常时,进行通信系统复位处理。
[0034]其有益效果在于:本专利技术实施例根据SDA数据线的状态和SCL时钟线的状态获取待处理I2C总线的故障原因,并根据不同的故障原因先初步进行相应的、针对性的自恢复处理;自恢复处理后,当判定待处理I2C总线的状态未恢复正常时,进行通信系统复位处理。本专利技术实施例对故障的I2C总线,能够根据故障原因以及I2C总线的恢复情况进行有针对性的、多级处理,从而提高了对于I2C总线故障的处理精度。
[0035]同时,本专利技术实施例用多级自检的方式,在第一级策略中进行优先判断异常类型并进行相应的自恢复操作,在第二级策略下在进行系统复位操作,缩短时间成本,避免现有技术中在I2C总线发生异常的情况下,直接重新复位整个系统来恢复I2C总线而导致的恢复时长过长、恢复效率低下的问题。
[0036]最后,本专利技术实施例在多从机连接状态下能够判断当前是由于哪个从机运行异常并进行针对性恢复操作,捕获异常发生点并记录于日志数据,方便调试排查问题,保证I2C总线故障修复的安全性。
附图说明
[0037]图1是本专利技术一实施例提供的一种I2C总线故障处理方法的流程示意图;
[0038]图2是本专利技术一实施例提供的自检恢复模块初始化流程图;
[0039]图3是本专利技术一实施例提供的异常超时判断的流程示意图;
[0040]图4是本专利技术一实施例提供的自检恢复模块的工作流程示意图;
[0041]图5是本专利技术一实施例提供的一种I2C总线故障处理装置的结构示意图。
具体实施方式
[0042]下面将结合本专利技术实施例中的附图,对本专利技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本专利技术一部分实施例,而不是全部的实施例。基于本专利技术中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本专利技术保护的范围。
[0043本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种I2C总线故障处理方法,其特征在于,包括:根据SDA数据线的状态和SCL时钟线的状态,获取待处理I2C总线的故障原因;当所述故障原因为SDA低电平挂死时,对主机进行自恢复处理;当所述故障原因为SCL挂死时,对通信从机进行自恢复处理;对所述待处理I2C总线的状态进行判断,当判定所述待处理I2C总线的状态未恢复正常时,进行通信系统复位处理。2.根据权利要求1所述的一种I2C总线故障处理方法,其特征在于,所述当所述故障原因为SDA低电平挂死时,对主机进行自恢复处理,具体为:控制所述主机模拟SCL数据线的信号以恢复SDA数据线的信号。3.根据权利要求2所述的一种I2C总线故障处理方法,其特征在于,所述当所述故障原因为SCL挂死时,对通信从机进行自恢复处理,具体为:根据通信地址,复位所述通信从机。4.根据权利要求3所述的一种I2C总线故障处理方法,其特征在于,所述对所述待处理I2C总线的状态进行判断,具体为:当SDA数据线释放高电平信号或者SCL数据线释放高电平信号时,判定所述待处理I2C总线的状态恢复正常;当SCL数据线释放低电平信号或者当SDA数据线释放低电平信号且模拟次数大于第一预设数值时,判定所述待处理I2C总线的状态未恢复正常;其中,所述模拟次数为所述主机模拟SCL数据线的信号的次数。5.根据权利要求4所述的一种I2C总线故障处理方法,其特征在于,还包括:对所述待处理I2C总线进行初始化处理,具体为:启动所述通信系统,当SDA数据线释放低电平信号时,控制所述主机在9个时钟周期内连续模拟SCL数据线的信号,以恢复SDA数据线的信号;当SDA数据线释放高电平信号时,判...

【专利技术属性】
技术研发人员:王毅莫炜业黄振江
申请(专利权)人:广州通康创智软件有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1