CN101118528A - 一种i2c总线被从器件锁定后的恢复方法及装置 - Google Patents
一种i2c总线被从器件锁定后的恢复方法及装置 Download PDFInfo
- Publication number
- CN101118528A CN101118528A CNA2007100768336A CN200710076833A CN101118528A CN 101118528 A CN101118528 A CN 101118528A CN A2007100768336 A CNA2007100768336 A CN A2007100768336A CN 200710076833 A CN200710076833 A CN 200710076833A CN 101118528 A CN101118528 A CN 101118528A
- Authority
- CN
- China
- Prior art keywords
- bus
- main
- components
- power switch
- locking
- 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
- Power Sources (AREA)
Abstract
本发明涉及一种I2C总线被I2C从器件锁定后的恢复方法和装置,I2C总线被从器件锁定后的恢复方法为:用I2C主器件控制所有I2C从器件的工作电源,当I2C主器件检测到总线被锁定时,即断开I2C从器件的工作电源,等待设定时间后再恢复供电,使I2C从器件恢复至初始状态;恢复装置包括I2C主器件、I2C从器件及系统电源,还增加了一个电源开关,电源开关一端与系统电源相连,一端与连接在一起的I2C从器件电源相连,由I2C主器件控制其通断。本发明通过主CPU的参与,解决了当I2C从器件造成总线的锁定后总线的恢复问题,提高了系统的稳定性和可靠性。
Description
技术领域
本发明涉及一种I2C总线被I2C从器件锁定后的恢复方法和装置,属于计算机通讯领。
背景技术
I2C总线(Inter-IC BUS或IIC BUS,集成电路间互连总线)是一种由飞利浦(PHILIPS)公司开发的一套串行总线,用于连接微控制器及其外围设备。I2C总线有两根信号线:一根时钟线SCL,一根双向数据线SDA。所有接到I2C总线上的器件的时钟线SCL均接到总线的SCL,其数据线SDA都连接到总线的双向数据线SDA线。总线使用软件寻址来识别每个器件(如微控制器、存储器、LCD驱动器、时钟芯片和其他I2C总线器件),完全省去了每个器件的片选线,因而使系统的接线非常简单。目前I2C已经成为重要的全球业界标准,被所有主要的IC厂商所认同和使用。在计算机网络通讯设备中,具有I2C总线接口的器件应用也越来越多。在I2C总线中,当某个器件生成总线上的时钟信号SCK并发起数据传输时,被称为是主器件(也叫发送器),某个器件从总线上接收控制信息时,被称为从器件(也叫接收器)。主器件用于启动总线,产生时钟并传送数据,此时任何被寻址的器件均被认为是从器件。
I2C总线工作时,由总线上的主器件控制时钟线SCL提供时钟同步信号脉冲,由双向数据线SDA完成数据传送。I2C总线的数据传送速率,在标准工作方式下为100kbit/s,在快速方式下,最高传送速率可达400kbit/s。I2C总线技术规范中,总线协议有着严格的时序要求。
I2C总线的数据传送格式是:在I2C总线开始信号后,送出的第一个字节数据是用来选择从器件的地址和指示读写操作,其中前7bit为地址码,第8bit为读写标志位(R/W)。标志位为“0”表示是主器件的“写”操作,即主器件把信息写入到所选址的从器件;标志位为“1”表示主器件的“读”操作。开始信号后,系统中的各个器件将自己的地址和主器件送到总线上的地址进行比较,如果与主器件发送到总线上的地址一致,则该器件即为被主器件寻址的器件,其接收信息还是发送信息则由第8bit标志(R/W)确定。I2C总线上每次传输的数据字节数不受限制,但每一个字节必须为8位,而且每个传送的字节后面(第9位),从器件必须跟一个认可位,也叫应答位(ACK,Acknowledge bit)。
I2C总线的工作速度一般是取决于主器件和从器件的性能,参考I2C的总线规范,时钟线SCL的工作频率可以工作在OHz到100kHz之间。
I2C总线技术规范中,对开始和结束信号(也称起始和停止信号)以及应答信号的定义如下:
起始信号(S):在时钟线SCL保持高电平期间,双向数据线SDA上出现由高电平向低电平的变化,用于启动I2C总线,为I2C总线的起始信号;
停止信号(P):在时钟线SCL保持高电平期间,双向数据线SDA上出现由低电平向高电平的变化,用于停止I2C总线,为I2C总线的终止信号;
应答信号(A):在I2C总线传输过程中每一个字节的第9个SCL脉冲对应着应答位,若双向数据线SDA上显示低电平则为总线“应答(A)”,若双向数据线SDA上显示高电平则为总线“非应答(/A)”。
因只有主器件才能对I2C总线实现管理与检测,所以开始信号和结束信号一般都是由主器件产生。I2C总线数据传输时,在时钟线SCL为高电平期间,数据线SDA上必须保持有稳定的逻辑电平状态,高电平表示数据1,低电平表示数据0。只有在时钟线SCL为低电平时,才允许数据线SDA上的电平状态发生变化。
I2C总线本身不会锁定,但如果总线上存在干扰或者SDA或SCL被某些特定的因素拉成低电平,I2C总线就产生锁定,这些情况通常是由于外部干扰以及从器件的失效和故障造成,一般情况下,在印制电路板设计时经过仔细的布局布线,是可以避免因总线上出现干扰造成总线的锁定。
在计算机通讯设备内,I2C总线上的主器件一般是CPU,从器件是连接在I2C总线上的其它器件,比如存储器、传感器、实时时钟等。若SDA线被总线上的一个器件拉成低电平,主器件就不能产生起始、停止信号,进行下一步的传送,譬如,主器件(CPU)在对I2C从器件的读操作期间,如果CPU突然被复位(RESET),而此时I2C总线上的一个读操作周期却还没有结束,I2C从器件一般没有复位输入管脚,也无法知道主器件被复位的情况,从器件只是看到总线的SCL停止变化,但I2C总线允许时钟线SCL停止,因此从器件也不会认为I2C总线的主器件出现故障。在CPU复位过程中及复位后,SCL往往被上拉到高电平,保持稳定,按照I2C总线的规范,SDA数据线上的数据在时钟线SCL高电平期间必须是稳定的,如果从器件此时在SDA上输出的bit正巧为“低”,因此,从器件将始终驱动SDA线为低电平,使主器件无法产生任何起始、停止信号,从而由从器件锁定SDA线,造成I2C总线的锁定。此时主器件虽然一般会检测到I2C总线出现锁定,但却无法实现下一步的数据传输,因此必须通过一定的手段来避免出现此种情况下造成I2C总线的故障。
这种情况出现后,如果主器件能够单独控制SCK,可以通过发送几个SCK脉冲,使从器件完成I2C总线上的读操作周期,从而避免I2C总线的锁定,但是,有许多CPU(主器件),其内部集成的I2C寄存器一般不提供直接对SCK的控制,因此,无法采用输出SCK脉冲的办法来解决。I2C总线如果被上述的原因锁定后,一般无法仅仅通过复位(RESET)主器件来解决,若没有其它合适可靠的解决办法,必须要重新上电才能解决。
对于I2C总线被锁定后的解决方法,不同的器件提供了各自的解决途径。
FreeScale公司(美国一家芯片公司)PowerPC处理器中的MPC8541、MPC8560系列CPU,其内部集成了I2C总线控制寄存器,在发现I2C总线被锁定后,可以通过读写一系列的I2C总线控制寄存器来使I2C总线退出锁定状态。
MAXIM公司(美国一家芯片公司)的MAX7500系列I2C从器件,其内部集成了超时功能,提供I2C总线的锁定保护。如果在250ms内时钟线SCL没有发生变化,从器件将自动结束本次的I2C操作,回到初始状态,从而避免了从器件对I2C总线的锁定;
但是,在计算机通讯设备内I2C总线上连接的器件往往比较多,I2C主器件(一般是CPU)不一定具有解决I2C总线锁定状态的控制寄存器,同时,目前I2C总线上所有的从器件也不可能全部具备自动退出锁定状态的功能,因此,必须设计附加装置,避免前面提及的I2C总线可能会被锁定的问题。
发明内容
本发明所要解决的技术问题是,针对目前I2C主器件不一定具有解决I2C总线锁定状态的控制寄存器,同时I2C总线上所有的从器件也不可能全部具备自动退出锁定状态功能的缺点并根据I2C总线对其从器件有控制和检测的特点,提供一种I2C总线被从器件锁定后的恢复方法并在该方法的基础上提供一种I2C总线被从器件锁定后的恢复装置。
本发明I2C总线被从器件锁定后的恢复方法为:用I2C主器件控制所有I2C从器件的工作电源,当I2C主器件检测到总线被锁定时,即断开I2C从器件的工作电源,等待设定时间后再恢复供电,使I2C从器件恢复至初始状态。
所述设定时间取值范围为0.2秒~5秒。
本发明I2C总线被从器件锁定后的恢复装置包括I2C主器件、I2C从器件及系统电源,还增加了一个电源开关,所述电源开关一端与系统电源相连,一端与连接在一起的I2C从器件电源相连,由I2C主器件控制其通断。
所述电源开关是一个继电器。
所述电源开关是一个金属氧化物半导体场效应管。
所述电源开关由I2C主器件的GPIO引脚控制其通断。
所述电源开关由I2C主器件通过外部可编程逻辑器件控制其通断。
所述电源开关由I2C主器件通过外部锁存器控制其通断。
本发明所述的方法和装置,通过主CPU的参与,解决了当I2C从器件造成总线的锁定后总线的恢复问题,提高了系统的稳定性和可靠性,并且该本发明实现起来方便灵活,硬件成本低。
附图说明
图1是本发明所述方法流程图;
图2是本发明所述装置的原理框图。
具体实施方式
下面结合附图对技术方案的实施作进一步的详细描述:
图1所示是本发明所述方法的流程图,系统上电后,当I2C主器件检测到I2C总线被从器件锁定后,自动断开I2C从器件的工作电源,等待设定时间后再恢复供电,此时I2C从器件即恢复至初始状态,从而解决了从器件对总线的锁定,上述设定时间的长短取决于I2C总线的负载大小及I2C主器件的性能,其取值范围为0.2秒~5秒。
图2所示是本发明所述I2C总线被从器件锁定后的恢复装置的一个原理框图。标号为201的是I2C总线上的主器件,本实施例中为CPU处理器;标号为202的是I2C总线中的从器件,I2C总线上一般会有多个从器件,但本实施例中仅用一个从器件来示意;标号为203的是用来对I2C从器件的工作电源进行控制电源开关,电源开关203一端与系统电源相连,一端与连接在一起的I2C从器件电源相连;204用来控制电源开关203,对于有通用输入输出(GPIO)的CPU而言,204即为其中的一个GPIO管脚;对于没有GPIO管脚的CPU,可以通过外部的可编程逻辑器件(PLD)来实现,也可以通过外加的锁存器来实现,即CPU可以通过PLD内部的寄存器来实现对电源开关203的控制。通过电源开关203和204协同工作,可以实现I2C的主器件对I2C从器件的工作电源进行控制,来解决I2C从器件锁定总线的情况。
本装置在单元(单板)的系统设计、原理图设计阶段,即可把所有I2C从器件的工作电源连接在一起,连接在一起的I2C从器件工作电源通过一个电源开关与系统的电源连接。电源开关的主要目的是对I2C从器件的工作电源进行通断,可以通过继电器或者金属氧化物半导体场效应管(MetalOxide SemicoductorFie1d Effect Transistor,MOSFET)来实现。对电源开关的控制,要根据其类型进行考虑,如果是继电器,要考虑驱动电流的实现;如果是MOSFET,要考虑控制电压Vgs的控制与实现;也可以采用其它方式的电源开关,只要能够实现由CPU控制电源开关的通断即可。
本实施框图中的CPU201具有GPIO管脚,且电源开关203采用了N沟道耗尽型MOSFET,GPIO输出为‘1’时,MOSFET导通,GPIO输出为‘0’时,MOSFET截止。在实际的应用中,系统上电后,CPU201正常启动,GPIO输出为‘1’,电源开关203闭合,I2C从器件202正常工作。当CPU201检测到总线被I2C从器件202锁定时,即将GPIO的输出调整为‘0’,控制电源开关103断开,此时I2C从器件202失去工作电源,所有的I2C从器件将被断电,CPU根据系统的需求,维持GPIO‘0’输出0.2毫秒~5秒后,重新将GPIO的输出调整为‘1’,控制电源开关闭合,I2C从器件的电源与系统电源重新连接,此时所有的I2C从器件会处于上电复位后的状态,即解决了I2C从器件锁定总线的情况。
Claims (8)
1.一种I2C总线被从器件锁定后的恢复方法,其特征在于,用I2C主器件控制所有I2C从器件的工作电源,当I2C主器件检测到总线被锁定时,即断开I2C从器件的工作电源,等待设定时间后再恢复供电,使I2C从器件恢复至初始状态。
2.如权利要求1所述的I2C总线被从器件锁定后的恢复方法,其特征在于,所述设定时间取值范围为0.2秒~5秒。
3.一种I2C总线被从器件锁定后的恢复装置,包括I2C主器件、I2C从器件及系统电源,其特征在于,还增加了一个电源开关,所述电源开关一端与系统电源相连,一端与连接在一起的I2C从器件电源相连,由I2C主器件控制其通断。
4.如权利要求3所述的I2C总线被从器件锁定后的恢复装置,其特征在于,所述电源开关是一个继电器。
5.如权利要求3所述的I2C总线被从器件锁定后的恢复装置,其特征在于,所述电源开关是一个金属氧化物半导体场效应管。
6.如权利要求3所述的I2C总线被从器件锁定后的恢复装置,其特征在于,所述电源开关由I2C主器件的通用输入输出引脚控制其通断。
7.如权利要求3或6所述的I2C总线被从器件锁定后的恢复装置,其特征在于,所述电源开关由I2C主器件通过外部可编程逻辑器件控制其通断。
8.如权利要求3或6所述的I2C总线被从器件锁定后的恢复装置,其特征在于,所述电源开关由I2C主器件通过外部锁存器控制其通断。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2007100768336A CN100504831C (zh) | 2007-08-31 | 2007-08-31 | 一种i2c总线被从器件锁定后的恢复方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2007100768336A CN100504831C (zh) | 2007-08-31 | 2007-08-31 | 一种i2c总线被从器件锁定后的恢复方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101118528A true CN101118528A (zh) | 2008-02-06 |
CN100504831C CN100504831C (zh) | 2009-06-24 |
Family
ID=39054649
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB2007100768336A Active CN100504831C (zh) | 2007-08-31 | 2007-08-31 | 一种i2c总线被从器件锁定后的恢复方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN100504831C (zh) |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102073613A (zh) * | 2010-12-15 | 2011-05-25 | 创新科存储技术有限公司 | 一种消除i2c总线死锁的装置及方法 |
CN103412531A (zh) * | 2013-07-30 | 2013-11-27 | 华为数字技术(苏州)有限公司 | 一种总线控制方法及装置 |
CN103414625A (zh) * | 2013-06-14 | 2013-11-27 | 无锡拓能自动化科技有限公司 | 一种基于Modbus Tcp的以太网IO模块 |
CN105279055A (zh) * | 2015-10-20 | 2016-01-27 | 昆山龙腾光电有限公司 | 一种热插拔检测调节电路 |
CN106227682A (zh) * | 2015-08-31 | 2016-12-14 | 旺宏电子股份有限公司 | 电子装置、存储器装置及其数据交换方法 |
CN106354685A (zh) * | 2016-08-19 | 2017-01-25 | 浪潮电子信息产业股份有限公司 | 一种psu和me通信i2c总线挂死恢复的实现方法 |
CN106649180A (zh) * | 2016-09-09 | 2017-05-10 | 锐捷网络股份有限公司 | 一种解除i2c总线死锁的方法及装置 |
CN108563598A (zh) * | 2018-03-02 | 2018-09-21 | 上海芯导电子科技有限公司 | 一种自唤醒的i2c通讯架构系统 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100346330C (zh) * | 2005-03-10 | 2007-10-31 | 华为技术有限公司 | 恢复i2c主器件和i2c从器件通讯的方法 |
CN100426274C (zh) * | 2005-08-08 | 2008-10-15 | 中兴通讯股份有限公司 | 避免i2c总线锁定的方法与装置 |
CN1740998A (zh) * | 2005-09-13 | 2006-03-01 | 中兴通讯股份有限公司 | I2c总线中主器件复位的实现方法、复位装置及其设备 |
-
2007
- 2007-08-31 CN CNB2007100768336A patent/CN100504831C/zh active Active
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102073613A (zh) * | 2010-12-15 | 2011-05-25 | 创新科存储技术有限公司 | 一种消除i2c总线死锁的装置及方法 |
CN102073613B (zh) * | 2010-12-15 | 2013-05-08 | 创新科存储技术有限公司 | 一种消除i2c总线死锁的装置及方法 |
CN103414625A (zh) * | 2013-06-14 | 2013-11-27 | 无锡拓能自动化科技有限公司 | 一种基于Modbus Tcp的以太网IO模块 |
CN103412531A (zh) * | 2013-07-30 | 2013-11-27 | 华为数字技术(苏州)有限公司 | 一种总线控制方法及装置 |
CN103412531B (zh) * | 2013-07-30 | 2016-09-07 | 华为数字技术(苏州)有限公司 | 一种总线控制方法及装置 |
CN106227682A (zh) * | 2015-08-31 | 2016-12-14 | 旺宏电子股份有限公司 | 电子装置、存储器装置及其数据交换方法 |
CN106227682B (zh) * | 2015-08-31 | 2020-08-18 | 旺宏电子股份有限公司 | 电子装置、存储器装置及其数据交换方法 |
CN105279055A (zh) * | 2015-10-20 | 2016-01-27 | 昆山龙腾光电有限公司 | 一种热插拔检测调节电路 |
CN106354685A (zh) * | 2016-08-19 | 2017-01-25 | 浪潮电子信息产业股份有限公司 | 一种psu和me通信i2c总线挂死恢复的实现方法 |
CN106649180A (zh) * | 2016-09-09 | 2017-05-10 | 锐捷网络股份有限公司 | 一种解除i2c总线死锁的方法及装置 |
CN106649180B (zh) * | 2016-09-09 | 2019-08-20 | 锐捷网络股份有限公司 | 一种解除i2c总线死锁的方法及装置 |
CN108563598A (zh) * | 2018-03-02 | 2018-09-21 | 上海芯导电子科技有限公司 | 一种自唤醒的i2c通讯架构系统 |
Also Published As
Publication number | Publication date |
---|---|
CN100504831C (zh) | 2009-06-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN100504831C (zh) | 一种i2c总线被从器件锁定后的恢复方法及装置 | |
US8055825B2 (en) | Digital device interconnect method | |
EP3345282B1 (en) | Usb power delivery dead-battery control | |
US8010724B2 (en) | 12C/SMBus ladders and ladder enabled ICs | |
US20120246366A1 (en) | Serial port remote control circuit | |
TWI443497B (zh) | 主機裝置、usb的接口模組與其電源管理方法 | |
CN102043933B (zh) | 一种工作状态可控的sd卡读卡器模块 | |
JP2007164765A (ja) | Iicバス通信システム、スレーブ装置およびiicバス通信制御方法 | |
US7558902B2 (en) | Bus to MCU bridge | |
CN100444147C (zh) | 主设备及其控制方法和具有主设备的电子设备 | |
TW201807979A (zh) | 用於藉由轉遞受電裝置(pd)輸入電壓而傳輸電力至遠端乙太網路供電(poe)子系統之系統 | |
CN101208682B (zh) | 具有锁存服务请求的从设备 | |
CN110444156B (zh) | 显示装置及其驱动器 | |
CN100426274C (zh) | 避免i2c总线锁定的方法与装置 | |
WO2007030978A1 (fr) | Procede, appareil de reinitialisation et equipement pour effectuer la reinitialisation d'un dispositif maitre dans un bus i2c | |
JPS6239580B2 (zh) | ||
CN102445981B (zh) | 数据传输系统以及数据传输方法 | |
CN101685433B (zh) | 由主装置指定地址的串联总线装置 | |
EP1876512B1 (en) | Network control apparatus and method for enabling network chip | |
US20080120453A1 (en) | Image processing apparatus and method of transmitting reference clock | |
CN115016360B (zh) | 一种数据传输控制电路、方法、设备及存储介质 | |
JP3949429B2 (ja) | Iicバス制御システム | |
US6874047B1 (en) | System and method for implementing an SMBus/I2C interface on a network interface card | |
CN108563598A (zh) | 一种自唤醒的i2c通讯架构系统 | |
US11119875B2 (en) | Communication port recovery |
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 |