CN1831801A - 恢复i2c主器件和i2c从器件通讯的方法 - Google Patents
恢复i2c主器件和i2c从器件通讯的方法 Download PDFInfo
- Publication number
- CN1831801A CN1831801A CN 200510053458 CN200510053458A CN1831801A CN 1831801 A CN1831801 A CN 1831801A CN 200510053458 CN200510053458 CN 200510053458 CN 200510053458 A CN200510053458 A CN 200510053458A CN 1831801 A CN1831801 A CN 1831801A
- Authority
- CN
- China
- Prior art keywords
- main device
- communication
- main
- line
- data line
- 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
- Information Transfer Systems (AREA)
Abstract
本发明公开了一种恢复I2C主器件和I2C从器件通讯的方法,以解决现有技术中由于通讯异常中断而导致的I2C主器件复位后无法继续对I2C从器件进行读操作的问题。该方法由I2C主器件强制给I2C从器件输入SCL时钟信号,使I2C从器件释放SDA数据线,从而使I2C总线恢复到正常的可读写状态。本发明用软件的方法弥补了I2C协议上的不足,提高了不同I2C器件通讯过程中的抗干扰性,避免由于通讯异常中断而导致的总线故障,增加了系统的可靠性。
Description
技术领域
本发明涉及I2C主器件和I2C从器件,尤其涉及一种恢复I2C主器件和I2C从器件通讯的方法。
背景技术
I2C(Inter-Integrated Circuit,相互作用的集成电路)总线是一种用于集成芯片之间连接的二线制总线,是一种由SDA(串行数据线)和SCL(串行时钟线)构成的串行总线,它通过SDA及SCL在连到总线上的器件之间传送信息,最高传送速率为3.4Mbps。目前,I2C总线已成为一个国际标准,在通讯、工控等领域里得到广泛应用。
当某个I2C总线接口器件向总线发送信息时,它就是I2C主器件,而当其从总线上接收信息时,又成为I2C从器件,I2C主器件和I2C从器件都可以工作于接收和发送状态。在I2C总线工作过程中,在其空闲状态,SDA和SCL均保持为高电平。
I2C总线上的控制信号有三种类型,分别是:开始信号、结束信号和应答信号,其具体概念如下:
开始信号:SCL为高电平时,SDA由高电平向低电平跳变,开始传送数据;
结束信号:SCL为高电平时,SDA由低电平向高电平跳变,结束传送数据;
应答信号:I2C从器件处于接收状态时,I2C从器件在SCL的每个上升沿接收数据,当接收到8bit数据后,在SCL的第9个上升沿向I2C主器件发出低电平脉冲的ACK应答位,表示已正确收到数据。
I2C总线必须由I2C主器件控制,I2C主器件发出的SCL信号用于控制总线的传输方向,并产生起始和停止条件。SDA线上的数据状态仅在SCL为低电平的期间才能改变,SCL为高电平的期间,SDA状态的改变被用来表示起始和停止条件。
传统上,I2C主器件和I2C从器件的复位都是设计成独立的,或者某些I2C器件就没有外部复位输入功能,只有接通电源产生的上电复位。在这种设计下,I2C主从器件之间一般都能正常通讯,不会出现I2C读写失败的问题。但是,在某些特殊情况下,主从器件在读写通讯过程中,可能会出现I2C主器件复位了,而I2C从器件并没有复位的情况,例如:当I2C从器件处于发送状态,即I2C主器件正在对I2C从器件进行读操作时,通讯异常中断,I2C从器件在通讯中断时所送出的数据为“0”,SDA线一直保持低电平,I2C从器件一直处于等待读的状态,不能释放I2C总线。这样即使在I2C主器件正常复位后,也无法与I2C从器件进行正常的通讯。在这种情况下,如果没有采取必要的措施,I2C主器件对I2C从器件的读操作将一直失败。
常用的I2C器件有两种,分别为自身有复位功能的和自身无复位功能的。对于自身无复位功能的I2C器件(如内存条SDRAM上的E2PROM芯片,没有单独提供复位接口),采用对I2C器件进行下电后重新上电的操作来解决上述问题。在重新上电后,I2C器件会自动进行初始化,从而恢复了I2C器件可读写的正常状态。这种方法需要人工干预来恢复I2C器件的正常状态,自愈性较差,当I2C器件的通讯故障率比较高的情况下,其维护成本较高;并且多数情况下所有设备的电源是统一的,很难对单独的I2C器件进行上下电操作。
对于自身有复位功能的I2C器件,采用单独控制方式恢复其复位功能,在出现故障时,对故障器件专门复位,通过复位操作重新初始化I2C器件来排除故障。采用这种方式进行复位时,主从I2C器件的复位先后关系复杂,对故障器件复位之前需要经过复杂的判断,而且需要设计相应的外部电路来提供复位通道,从而大大增加了系统的耦合性;另外有复位功能的I2C器件虽然提供了复位接口,但是复位会对整个器件进行了初始化,而不是仅仅初始化I2C接口,由此造成了比较大范围的影响。
发明内容
本发明的目的在于提供一种恢复I2C主器件和I2C从器件通讯的方法,以解决现有技术中因I2C总线通讯中断而导致的I2C主器件复位后无法继续对I2C从器件进行读操作的问题。
为解决上述问题,本发明提供以下技术方案:
一种恢复I2C主器件和I2C从器件通讯的方法,所述I2C主器件和I2C从器件通过串行数据线和串行时钟线进行通讯;当所述I2C主器件和I2C从器件通讯中断后进行下述步骤:
A、复位I2C主器件;
B、I2C主器件检测串行数据线,并在检测到串行数据线处于被占用状态时通过串行时钟线向I2C从器件输入时钟信号,使I2C从器件恢复正常。
所述串行数据线处于被占用状态是指串行数据线处于低电平状态。
在所述步骤B中,I2C主器件通过串行时钟线给I2C从器件输入至少9个周期的时钟信号使I2C从器件将通讯中断时正在发送的字节继续发送完毕。
所述步骤B包括步骤:
b1、I2C主器件通过串行时钟线给I2C从器件输入n个周期的时钟信号后,I2C主器件检测串行数据线是否处于被占用状态,其中n为大于等于1小于等于8的整数;
b2、若是则重复步骤b1,若否则I2C从器件恢复到正常可读写状态。
I2C主器件通过串行时钟线给I2C从器件输入时钟信号的优选值为9个周期。
由于本发明采用了以上技术方案,故具有以下有益效果:
本发明在I2C主器件和I2C从器件通讯异常中断时,由I2C主器件强制给I2C从器件输入SCL时钟信号,使I2C从器件释放SDA数据线,从而使I2C总线恢复到正常的可读写状态。本发明用软件的方法弥补了I2C协议上的不足,提高了不同I2C器件通讯过程中的抗干扰性,降低了故障恢复的成本,增加了系统的可靠性。
附图说明
图1为解决I2C总线通讯故障方法一的流程图;
图2为I2C从器件释放I2C总线的时序示意图;
图3为解决I2C总线通讯故障方法二的流程图;
图4为本发明的具体实施例的示意图。
具体实施方式
I2C主器件和I2C从器件利用I2C总线进行通讯的过程中,若I2C主器件正在对I2C从器件进行读操作时,通讯异常中断,I2C从器件在通讯中断时所送出的数据为“0”,这样在I2C主器件上电复位后,SDA线一直保持低电平,I2C从器件一直处于等待读的状态,于是I2C主器件无法与I2C从器件进行正常的通讯。
如果I2C从器件在通讯中断时所送出的数据为“1”,则SDA线为高电平,这样在I2C主器件上电复位后,I2C从器件可以释放总线,I2C主器件可以访问I2C从器件,可以对I2C从器件发起新的通讯。但是,由于在I2C总线通讯中断的时机点很难控制I2C从器件的输出状态,输出“0”和输出“1”的比例大致是各50%,所以有必要提供一种在I2C总线通讯异常中断时恢复I2C主器件和I2C从器件通讯的方法。
如图1所示,在I2C总线通讯发生异常中断时,若I2C主器件在正常复位后检测到SDA线一直保持低电平,即I2C从器件无法恢复的情况,在这种情况下,如图2所示,I2C主器件强制给I2C从器件输入一段至少9个周期的SCL时钟信号,I2C从器件在此时钟驱动下将通讯中断时正在发送的字节中剩下的几位(1~8位)送出后,SDA线变为高电平,I2C从器件释放SDA线,I2C从器件恢复到正常可读写状态。
由于I2C从器件通讯中断的时机点有可能在一个字节8位当中的任何一位,因此I2C主器件强制给I2C从器件输入一段9个时钟周期以上的SCL时钟信号可以使I2C从器件充分释放SDA线,保证I2C主器件对I2C从器件的再通讯。
在I2C总线通讯发生异常中断时,若I2C主器件在正常复位后检测到SDA线一直保持低电平的情况也可以采用以下方法来解决:
如图3所示,首先I2C主器件通过SCL线给I2C从器件输入n个周期的时钟信号,n为大于等于1小于等于8的整数;然后I2C主器件检测SDA线的状态,若SDA线为高电平则I2C从器件恢复到正常可读写状态;若SDA线为低电平则I2C主器件继续通过SCL线给I2C从器件输入n个周期的时钟信号,直到SDA线变为高电平后,I2C从器件恢复到正常可读写状态。
图4所示为本发明的一个具体实施例,其中MPC8260是I2C主器件,内存条上的E2PROM(Electrically-Erasable Programmable Read-Only Memory,电可擦除只读存储器)是I2C从器件,PD14/PD15是MPC8260的IO(Input Output,输入输出)管脚;MPC8260通过SCL和SDA读取存贮在内存条的E2PROM上的信息,该信息包括内存条的行数、列数、BANK数、时延等信息。
在I2C通讯过程中,MPC8260正在对内存条进行读操作时,通讯异常中断,内存条在通讯中断时所送出的数据为“0”,若MPC8260复位了,而内存条上的E2PROM并没有恢复,SDA线一直保持低电平,仍然处于等待读的状态,不能释放I2C总线,于是,I2C主器件MPC8260无法与内存条上的E2PROM进行正常的I2C通讯。MPC8260检测到SDA数据线被拉低后,通过SCL线向I2C从器件发送9个周期的时钟信号,使内存条上的E2PROM在此时钟驱动下将通讯中断时正在发送的字节继续发送完毕,SDA线变为高电平,内存条上的E2PROM恢复到正常可读写状态,MPC8260就可以继续对内存条上的E2PROM发起新的读写操作。
在上述实施例中,MPC8260检测到SDA数据线被拉低后,也可以给内存条上的E2PROM输入n个周期的时钟信号,n为大于等于1小于等于8的整数;然后MPC8260检测SDA线的状态,若SDA线为高电平内存条上的E2PROM恢复到正常可读写状态;若SDA线为低电平则MPC8260继续通过SCL线给内存条上的E2PROM输入n个周期的时钟信号,直到SDA线变为高电平,内存条上的E2PROM恢复到正常可读写状态为止。
以上仅以较佳实施例对本发明进行说明,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
Claims (5)
1、一种恢复I2C主器件和I2C从器件通讯的方法,所述I2C主器件和I2C从器件通过串行数据线和串行时钟线进行通讯;其特征在于:当所述I2C主器件和I2C从器件通讯中断后进行下述步骤:
A、复位I2C主器件;
B、I2C主器件检测串行数据线,并在检测到串行数据线处于被占用状态时通过串行时钟线向I2C从器件输入时钟信号,使I2C从器件恢复正常。
2、根据权利要求1所述的恢复I2C主器件和I2C从器件通讯的方法,其特征在于:所述串行数据线处于被占用状态是指串行数据线处于低电平状态。
3、根据权利要求1所述的恢复I2C主器件和I2C从器件通讯的方法,其特征在于:在所述步骤B中,I2C主器件通过串行时钟线给I2C从器件输入至少9个周期的时钟信号使I2C从器件将通讯中断时正在发送的字节继续发送完毕。
4、根据权利要求1所述的恢复I2C主器件和I2C从器件通讯的方法,其特征在于:所述步骤B包括步骤:
b1、I2C主器件通过串行时钟线给I2C从器件输入n个周期的时钟信号后,I2C主器件检测串行数据线是否处于被占用状态,其中n为大于等于1小于等于8的整数;
b2、若是则重复步骤b1,若否则I2C从器件恢复到正常可读写状态。
5、根据权利要求3所述的恢复I2C主器件和I2C从器件通讯的方法,其特征在于:I2C主器件通过串行时钟线给I2C从器件输入时钟信号的优选值为9个周期。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2005100534584A CN100346330C (zh) | 2005-03-10 | 2005-03-10 | 恢复i2c主器件和i2c从器件通讯的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2005100534584A CN100346330C (zh) | 2005-03-10 | 2005-03-10 | 恢复i2c主器件和i2c从器件通讯的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1831801A true CN1831801A (zh) | 2006-09-13 |
CN100346330C CN100346330C (zh) | 2007-10-31 |
Family
ID=36994110
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB2005100534584A Expired - Fee Related CN100346330C (zh) | 2005-03-10 | 2005-03-10 | 恢复i2c主器件和i2c从器件通讯的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN100346330C (zh) |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100426274C (zh) * | 2005-08-08 | 2008-10-15 | 中兴通讯股份有限公司 | 避免i2c总线锁定的方法与装置 |
CN100504831C (zh) * | 2007-08-31 | 2009-06-24 | 中兴通讯股份有限公司 | 一种i2c总线被从器件锁定后的恢复方法及装置 |
CN101354689B (zh) * | 2007-07-24 | 2010-09-01 | 明基电通股份有限公司 | 信号传送系统以及方法 |
CN101561790B (zh) * | 2009-05-27 | 2011-10-26 | 中兴通讯股份有限公司 | 一种主控机与从机通信的方法、系统及装置 |
CN101770443B (zh) * | 2009-01-07 | 2012-05-23 | 成都市华为赛门铁克科技有限公司 | 一种内部集成电路总线时序调节方法、相应装置及系统 |
CN103092175A (zh) * | 2013-01-21 | 2013-05-08 | 杭州华三通信技术有限公司 | I2c主设备与从设备之间串行时钟线scl控制的方法及装置 |
CN104699549A (zh) * | 2013-12-04 | 2015-06-10 | 联想(北京)有限公司 | 一种信息获取方法、信息发送方法及电子设备 |
CN106663079A (zh) * | 2014-07-11 | 2017-05-10 | 标致·雪铁龙汽车公司 | 用于管理通用串行总线上的错误的管理装置 |
CN109976489A (zh) * | 2019-03-28 | 2019-07-05 | 烽火通信科技股份有限公司 | 一种iic总线异常情况下自动复位实现方法及系统 |
CN110908841A (zh) * | 2019-12-03 | 2020-03-24 | 锐捷网络股份有限公司 | 一种i2c通信异常恢复方法及装置 |
TWI837031B (zh) * | 2023-06-28 | 2024-03-21 | 明泰科技股份有限公司 | I2c匯流排監控裝置 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6799233B1 (en) * | 2001-06-29 | 2004-09-28 | Koninklijke Philips Electronics N.V. | Generalized I2C slave transmitter/receiver state machine |
CN1220147C (zh) * | 2002-05-10 | 2005-09-21 | 英业达股份有限公司 | 一种具防锁死装置的串行信道多任务器系统 |
US7630304B2 (en) * | 2003-06-12 | 2009-12-08 | Hewlett-Packard Development Company, L.P. | Method of overflow recovery of I2C packets on an I2C router |
-
2005
- 2005-03-10 CN CNB2005100534584A patent/CN100346330C/zh not_active Expired - Fee Related
Cited By (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100426274C (zh) * | 2005-08-08 | 2008-10-15 | 中兴通讯股份有限公司 | 避免i2c总线锁定的方法与装置 |
CN101354689B (zh) * | 2007-07-24 | 2010-09-01 | 明基电通股份有限公司 | 信号传送系统以及方法 |
CN100504831C (zh) * | 2007-08-31 | 2009-06-24 | 中兴通讯股份有限公司 | 一种i2c总线被从器件锁定后的恢复方法及装置 |
CN101770443B (zh) * | 2009-01-07 | 2012-05-23 | 成都市华为赛门铁克科技有限公司 | 一种内部集成电路总线时序调节方法、相应装置及系统 |
CN101561790B (zh) * | 2009-05-27 | 2011-10-26 | 中兴通讯股份有限公司 | 一种主控机与从机通信的方法、系统及装置 |
CN103092175B (zh) * | 2013-01-21 | 2015-04-15 | 杭州华三通信技术有限公司 | I2c主设备与从设备之间串行时钟线scl控制的方法及装置 |
CN103092175A (zh) * | 2013-01-21 | 2013-05-08 | 杭州华三通信技术有限公司 | I2c主设备与从设备之间串行时钟线scl控制的方法及装置 |
CN104699549A (zh) * | 2013-12-04 | 2015-06-10 | 联想(北京)有限公司 | 一种信息获取方法、信息发送方法及电子设备 |
CN106663079A (zh) * | 2014-07-11 | 2017-05-10 | 标致·雪铁龙汽车公司 | 用于管理通用串行总线上的错误的管理装置 |
CN106663079B (zh) * | 2014-07-11 | 2020-11-06 | 标致·雪铁龙汽车公司 | 用于管理通用串行总线上的错误的管理装置 |
CN109976489A (zh) * | 2019-03-28 | 2019-07-05 | 烽火通信科技股份有限公司 | 一种iic总线异常情况下自动复位实现方法及系统 |
CN110908841A (zh) * | 2019-12-03 | 2020-03-24 | 锐捷网络股份有限公司 | 一种i2c通信异常恢复方法及装置 |
TWI837031B (zh) * | 2023-06-28 | 2024-03-21 | 明泰科技股份有限公司 | I2c匯流排監控裝置 |
Also Published As
Publication number | Publication date |
---|---|
CN100346330C (zh) | 2007-10-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN100346330C (zh) | 恢复i2c主器件和i2c从器件通讯的方法 | |
CN102073613B (zh) | 一种消除i2c总线死锁的装置及方法 | |
CN102521187B (zh) | 一种i2c总线通信死锁解决方法 | |
CN103019871B (zh) | 一种i2c总线的防死锁系统及其防死锁方法 | |
US6189109B1 (en) | Method of remote access and control of environmental conditions | |
CN102087621B (zh) | 一种具有自诊断功能的处理器装置 | |
CN106354685A (zh) | 一种psu和me通信i2c总线挂死恢复的实现方法 | |
CN102387074B (zh) | 业务线卡在位检测及复位方法及一种主控制卡和业务线卡 | |
US20060161714A1 (en) | Method and apparatus for monitoring number of lanes between controller and PCI Express device | |
CN101609440B (zh) | 总线系统和总线从锁定状态中恢复的方法 | |
CN104917700A (zh) | 一种管理单元和交换单元双冗余的交换机 | |
CN100480923C (zh) | I2c总线从控制器软实现方法 | |
CN100426274C (zh) | 避免i2c总线锁定的方法与装置 | |
CN1227600C (zh) | 移去和安装计算机系统总线代理的方法和装置 | |
WO2022057372A1 (zh) | 一种基于pca9511芯片的iic挂死的链路恢复电路及方法 | |
CN107942808B (zh) | 一种dcs容量扩展装置 | |
CN102662902B (zh) | 一种防止i2c总线锁定的方法、装置及系统 | |
CN204633800U (zh) | 一种管理单元和交换单元双冗余的交换机 | |
CN105354157A (zh) | 配置iic器件的方法、装置和系统 | |
CN101378339B (zh) | 热插拔控制方法与装置、业务板 | |
CN1158614C (zh) | 高集成度热主备工控主板 | |
CN113849355A (zh) | I2c速率自适应调整方法、系统、终端及存储介质 | |
CN104834624A (zh) | 一种iic总线接口的抗干扰方法 | |
CN101627375A (zh) | I2c时钟发生方法和系统 | |
CN215300646U (zh) | 旁路控制装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | 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 |
Granted publication date: 20071031 |
|
CF01 | Termination of patent right due to non-payment of annual fee |