CN112114992B - 一种i2c防挂死设计方法 - Google Patents

一种i2c防挂死设计方法 Download PDF

Info

Publication number
CN112114992B
CN112114992B CN202010992176.5A CN202010992176A CN112114992B CN 112114992 B CN112114992 B CN 112114992B CN 202010992176 A CN202010992176 A CN 202010992176A CN 112114992 B CN112114992 B CN 112114992B
Authority
CN
China
Prior art keywords
sda
scl
output
continuing
released
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
Application number
CN202010992176.5A
Other languages
English (en)
Other versions
CN112114992A (zh
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.)
Inspur Computer Technology Co Ltd
Original Assignee
Shandong Inspur Science Research Institute 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 Shandong Inspur Science Research Institute Co Ltd filed Critical Shandong Inspur Science Research Institute Co Ltd
Priority to CN202010992176.5A priority Critical patent/CN112114992B/zh
Publication of CN112114992A publication Critical patent/CN112114992A/zh
Application granted granted Critical
Publication of CN112114992B publication Critical patent/CN112114992B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/0745Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in an input/output transactions management context
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0793Remedial or corrective actions

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本发明提供了一种I2C防挂死设计方法,本专利主要是通过CPLD或者MCU等器件对I2C链路进项监控,当发现I2C链路异常时,通过外部硬件对I2C链路进项恢复。专利可用于主要的I2C链路的监控与恢复,可以恢复除硬件故障以外的所有I2C的通讯故障,提供链路稳定性。

Description

一种I2C防挂死设计方法
技术领域
本发明涉及对I2C链路进行监控与恢复,具体涉及一种I2C防挂死设计方法。
背景技术
I2C发生挂死时是由于主从I2C的状态不一致导致。什么原因导致的我们不做探讨和分析。我们只做监控和恢复处理,当I2C发生挂死的时候即SDA或者SCL被某个主从设备拉死到0电平,其他器件都无法正常使用。SCL挂死(也就是前面所说一直拉低SCL)这种情况在标准I2C从器件上基本不会出现,因为只要芯片还在正常工作buffer总算有准备好的时候,自然就就释放SCL了。往往是使用用户使用MCU作为I2C从机时,程序设计上的问题导致MCU无法读取&填充buffer而导致,重点分析MCU I2C中断服务程序
在某些比较复杂的设计中,I2C的功能拓扑也是极其复杂的,I2C链路发生挂死的情况也是很大概率发生的,当其发生故障挂死时,I2C链路将无法正常通讯,一种可以监控其挂死的设计方法对比较重要的链路来说是极其重要的。
发明内容
本发明目的是提供了一种I2C防挂死设计方法,有效的监控和恢复I2C的链路。其有效性的设计可以恢复几乎所有的I2C挂死问题
本发明为实现上述目的,通过以下技术方法实现:
一种I2C防挂死设计方法,包括以下步骤:
1)CPLD或者MCU的SDA信号作为输入信号,监控I2C的链路变化,并配置SDA为输入GPIO;
2)判断SDA是否为低,若为低则,继续步骤3);若不为低,则配置SDA/SCL为I2C模式;
3)配置SCL为开漏输出GPIO,并循环计数加一,判断循环是否小于9次,若小于9次,SCL模拟拉低输出,继续步骤4);若大于9次,则直接监控是否SDA释放,继续判断SDA是否为高,如果为高则继续5),如果不为高继续步骤2);
4)监控SDA是否释放,判断SDA是否为低,如果为低,SCL拉高输出,继续步骤3);若不为低,则进行步骤5);
5)监控SDA已经释放,配置SDA为开漏输出GPIO,模拟STOP信号,停止整个I2C流程。
优选的,所述步骤5)中模拟STOP信号,首先,SDA拉低输出,将SCL拉高输出,再将SDA拉高输出。
本发明的优点在于:完成主设备未完成的流程,使得整个i2c流程可以正常走完,使得device设备可以正常释放总线,使得i2c链路恢复正常。有效的监控和恢复I2C的链路,其有效性的设计可以恢复几乎所有的I2C挂死问题。
附图说明
附图用来提供对本发明的进一步理解,并且构成说明书的一部分,与本发明的实施例一起用于解释本发明,并不构成对本发明的限制。
图1为本发明操作流程示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方法进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
I2C发生挂死时是由于主从I2C的状态不一致导致。什么原因导致的我们不做探讨和分析。我们只做监控和恢复处理,当I2C发生挂死的时候即SDA或者SCL被某个主从设备拉死到0电平,其他器件都无法正常使用!
SCL挂死(也就是前面所说一直拉低SCL)这种情况在标准I2C从器件上基本不会出现,因为只要芯片还在正常工作buffer总算有准备好的时候,自然就就释放SCL了。往往是使用用户使用MCU作为I2C从机时,程序设计上的问题导致MCU无法读取&填充buffer而导致,重点分析MCU I2C中断服务程序
当SDA挂死时(主要原因是从机返回数据或者相应信号给主设备时,只有在SCL为低的时候回拉住SDA做数据传输,这个时候若主机在通讯的过程中产生了复位。由于复位动作通常会立刻执行,外设状态机都恢复到默认状态,也就发不出完整的CLK了。那么等到主机复位完成回来后,SCL为高,SDA被从机拉低。主机无法发起START起始条件,不能开始下一次与从机的通讯,这称为SDA挂死),恢复总线要做的第一件事情就是在想办法用GPIO在SCL线上模拟一个下降沿,让从机状态机继续走下去。
举个例子:在数据字节第6个CLK拉高后主机复位,在第三个模拟的时钟低电平期间才看到SDA释放,随后主机先拉低SDA,再模拟一个STOP结束条件。
CPLD或者MCU实现以下功能场景:总体的思想是完成主设备未完成的流程,使得整个I2C流程可以正常走完,使得device设备可以正常释放总线,使得I2C链路恢复正常。
一种I2C防挂死设计方法,包括以下步骤:
1)CPLD或者MCU的SDA信号作为输入信号,监控I2C的链路变化,并配置SDA为输入GPIO;
2)判断SDA是否为低,若为低则,继续步骤3);若不为低,则配置SDA/SCL为I2C模式;
3)配置SCL为开漏输出GPIO,并循环计数加一,判断循环是否小于9次,若小于9次,SCL模拟拉低输出,继续步骤4);若大于9次,则直接监控是否SDA释放,继续判断SDA是否为高,如果为高则继续5),如果不为高继续步骤2);
4)监控SDA是否释放,判断SDA是否为低,如果为低,SCL拉高输出,继续步骤3);若不为低,则进行步骤5);
5)监控SDA已经释放,配置SDA为开漏输出GPIO,模拟STOP信号,停止整个I2C流程。
所述步骤5)中模拟STOP信号,首先,SDA拉低输出,将SCL拉高输出,再将SDA拉高输出。

Claims (2)

1.一种I2C防挂死设计方法,其特征在于,包括以下步骤:
1)CPLD或者MCU的SDA信号作为输入信号,监控I2C的链路变化,并配置SDA为输入GPIO;
2)判断SDA是否为低,若为低则,继续步骤3);若不为低,则配置SDA/SCL为I2C模式;
3)配置SCL为开漏输出GPIO,并循环计数加一,判断循环是否小于9次,若小于9次,SCL模拟拉低输出,继续步骤4);若大于9次,则直接监控是否SDA释放,继续判断SDA是否为高,如果为高则继续5),如果不为高继续步骤2);
4)监控SDA是否释放,判断SDA是否为低,如果为低,SCL拉高输出,继续步骤3);若不为低,则进行步骤5);
5)监控SDA已经释放,配置SDA为开漏输出GPIO,模拟STOP信号,停止整个I2C流程。
2.根据权利要求1所述的I2C防挂死设计方法,其特征在于,所述步骤5)中模拟STOP信号,首先,SDA拉低输出,将SCL拉高输出,再将SDA拉高输出。
CN202010992176.5A 2020-09-21 2020-09-21 一种i2c防挂死设计方法 Active CN112114992B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010992176.5A CN112114992B (zh) 2020-09-21 2020-09-21 一种i2c防挂死设计方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010992176.5A CN112114992B (zh) 2020-09-21 2020-09-21 一种i2c防挂死设计方法

Publications (2)

Publication Number Publication Date
CN112114992A CN112114992A (zh) 2020-12-22
CN112114992B true CN112114992B (zh) 2023-11-14

Family

ID=73799875

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010992176.5A Active CN112114992B (zh) 2020-09-21 2020-09-21 一种i2c防挂死设计方法

Country Status (1)

Country Link
CN (1) CN112114992B (zh)

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2011085595A1 (zh) * 2010-01-18 2011-07-21 中兴通讯股份有限公司 一种实现i2c总线控制的系统及方法
CN102521187A (zh) * 2011-11-29 2012-06-27 广东东研网络科技有限公司 一种i2c总线通信死锁解决方法
CN103324546A (zh) * 2013-06-25 2013-09-25 杭州华三通信技术有限公司 一种延时喂狗的方法及装置
WO2017000119A1 (en) * 2015-06-29 2017-01-05 Thomson Licensing Initialization method for use in i2c system and master device
CN106354685A (zh) * 2016-08-19 2017-01-25 浪潮电子信息产业股份有限公司 一种psu和me通信i2c总线挂死恢复的实现方法
WO2019136595A1 (zh) * 2018-01-09 2019-07-18 深圳市汇顶科技股份有限公司 处理i2c总线死锁的方法、电子设备和通信系统

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2011085595A1 (zh) * 2010-01-18 2011-07-21 中兴通讯股份有限公司 一种实现i2c总线控制的系统及方法
CN102521187A (zh) * 2011-11-29 2012-06-27 广东东研网络科技有限公司 一种i2c总线通信死锁解决方法
CN103324546A (zh) * 2013-06-25 2013-09-25 杭州华三通信技术有限公司 一种延时喂狗的方法及装置
WO2017000119A1 (en) * 2015-06-29 2017-01-05 Thomson Licensing Initialization method for use in i2c system and master device
CN106354685A (zh) * 2016-08-19 2017-01-25 浪潮电子信息产业股份有限公司 一种psu和me通信i2c总线挂死恢复的实现方法
WO2019136595A1 (zh) * 2018-01-09 2019-07-18 深圳市汇顶科技股份有限公司 处理i2c总线死锁的方法、电子设备和通信系统

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
基于ATT7022E多功能电力数据采集系统的设计;祝海宁;;实验室研究与探索(05);全文 *
基于CP2120的SPI与I~2C总线接口转换电路设计;段向东;毋玉芝;;国外电子元器件(12);全文 *
防止I~2C总线锁死的研究;林兴隆;杨锁强;涂海洋;;计算机与网络(10);全文 *

Also Published As

Publication number Publication date
CN112114992A (zh) 2020-12-22

Similar Documents

Publication Publication Date Title
WO2020134634A1 (zh) 程序调试方法、程序调试装置、终端设备及存储介质
US9846625B2 (en) Method and device for debugging a MIPS-structure CPU with southbridge and northbridge chipsets
US8799719B2 (en) On demand tracing of application code execution
US20110193579A1 (en) Determination of physical connectivity status of devices based on electrical measurement
CN106354685A (zh) 一种psu和me通信i2c总线挂死恢复的实现方法
CN111736678A (zh) 一种芯片复位电路、方法以及设备
CN112835839A (zh) PCIe接口的设备枚举方法、装置、设备及存储介质
CN105095041A (zh) 芯片的调试方法
CN112114992B (zh) 一种i2c防挂死设计方法
CN102063356B (zh) 一种多中央处理单元cpu心跳检测系统及方法
CN111694340B (zh) 一种PSU BootLoader自动测试治具及方法
CN111538626B (zh) 一种从i2c设备解挂死的方法
CN112214343B (zh) 一种基于pca9511芯片的iic挂死的链路恢复电路及方法
CN106372019B (zh) 一种系统总线设备响应超时的处理方法及超时处理装置
CN102662902A (zh) 一种防止i2c总线锁定的方法、装置及系统
CN109814816A (zh) 在can总线上增加打印日志的系统及方法
CN115794701A (zh) 一种dma功能虚拟串口的bmc芯片及方法
CN110808876B (zh) 一种话机调试系统及设备
CN101650702B (zh) 一种usb通信在线维护的装置和方法
CN108388481B (zh) Olt设备的智能看门狗电路系统
Carvalho et al. Enhancing I2C robustness to soft errors
CN113900849A (zh) 一种Linux操作系统下GMAC网卡故障解决方法
CN102955545A (zh) 计算机
US8943365B2 (en) Computer program product for handling communication link problems between a first communication means and a second communication means
CN217718676U (zh) Gpio通信电路及板卡、电子设备

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
TA01 Transfer of patent application right
TA01 Transfer of patent application right

Effective date of registration: 20231016

Address after: 250000 building S02, No. 1036, Gaoxin Inspur Road, Jinan, Shandong

Applicant after: Shandong Inspur Scientific Research Institute Co.,Ltd.

Address before: 250104 1st floor, R & D building, No. 2877, Suncun Town, Licheng District, Jinan City, Shandong Province

Applicant before: JINAN INSPUR HIGH-TECH TECHNOLOGY DEVELOPMENT Co.,Ltd.

GR01 Patent grant
GR01 Patent grant
TR01 Transfer of patent right

Effective date of registration: 20241009

Address after: 2324, Building 1, Aosheng Building, No. 1166 Xinluo Street, High tech Zone, Jinan City, Shandong Province, 250000

Patentee after: Inspur Computer Technology Co.,Ltd.

Country or region after: China

Address before: 250000 building S02, No. 1036, Gaoxin Inspur Road, Jinan, Shandong

Patentee before: Shandong Inspur Scientific Research Institute Co.,Ltd.

Country or region before: China