一种i2c总线被从器件锁定后的恢复方法及装置的制作方法

文档序号:6574042阅读:225来源:国知局
专利名称:一种i2c总线被从器件锁定后的恢复方法及装置的制作方法
技术领域
本发明涉及一种I2C总线被I2C从器件锁定后的恢复方法和装置,属于计算 机通讯领。
背景技术
I2C总线(Inter—IC BUS或IIC BUS,集成电路间互连总线)是一种由飞 利浦(PHILIPS)公司开发的一套串行总线,用于连接微控制器及其外围设备。 I2C总线有两根信号线 一根时钟线SCL, 一根双向数据线SDA。所有接到I2C 总线上的器件的时钟线SCL均接到总线的SCL,其数据线SDA都连接到总线的双 向数据线SDA线。总线使用软件寻址来识别每个器件(如微控制器、存储器、LCD 驱动器、时钟芯片和其他I2C总线器件),完全省去了每个器件的片选线,因而 使系统的接线非常简单。目前I2C已经成为重要的全球业界标准,被所有主要的 IC厂商所认同和使用。在计算机网络通讯设备中,具有I2C总线接口的器件应 用也越来越多。在I2C总线中,当某个器件生成总线上的时钟信号SCK并发起数 据传输时,被称为是主器件(也叫发送器),某个器件从总线上接收控制信息时, 被称为从器件(也叫接收器)。主器件用于启动总线,产生时钟并传送数据,此 时任何被寻址的器件均被认为是从器件。12C总线工作时,由总线上的主器件控制时钟线SCL提供时钟同步信号脉冲, 由双向数据线SDA完成数据传送。12C总线的数据传送速率,在标准工作方式下 为100kbit/s,在快速方式下,最高传送速率可达400kbit/s。 I2C总线技术规 范中,总线协议有着严格的时序要求。12C总线的数据传送格式是在I2C总线开始信号后,送出的第一个字节数 据是用来选择从器件的地址和指示读写操作,其中前7bit为地址码,第8bit 为读写标志位(R/W)。标志位为"0"表示是主器件的"写"操作,即主器件把信 息写入到所选址的从器件;标志位为"1"表示主器件的"读"操作。开始信号 后,系统中的各个器件将自己的地址和主器件送到总线上的地址进行比较,如果 与主器件发送到总线上的地址一致,则该器件即为被主器件寻址的器件,其接收 信息还是发送信息则由第8bit标志(R/W)确定。I2C总线上每次传输的数据字节
数不受限制,但每一个字节必须为8位,而且每个传送的字节后面(第9位), 从器件必须跟一个认可位,也叫应答位(ACK, Acknowledge bit)。I2C总线的工作速度一般是取决于主器件和从器件的性能,参考I2C的总线 规范,时钟线SCL的工作频率可以工作在0Hz到100kHz之间。12C总线技术规范中,对开始和结束信号(也称起始和停止信号)以及应答 信号的定义如下起始信号(S):在时钟线SCL保持高电平期间,双向数据线SDA上出现由高 电平向低电平的变化,用于启动I2C总线,为I2C总线的起始信号;停止信号(P):在时钟线SCL保持高电平期间,双向数据线SDA上出现由低 电平向高电平的变化,用于停止I2C总线,为I2C总线的终止信号;应答信号(A):在I2C总线传输过程中每一个字节的第9个SCL脉冲对应着 应答位,若双向数据线SDA上显示低电平则为总线"应答(A)",若双向数据线 SDA上显示高电平则为总线"非应答(/A)"。因只有主器件才能对I2C总线实现管理与检测,所以开始信号和结束信号一 般都是由主器件产生。12C总线数据传输时,在时钟线SCL为高电平期间,数据 线SDA上必须保持有稳定的逻辑电平状态,高电平表示数据l,低电平表示数据 0。只有在时钟线SCL为低电平时,才允许数据线SDA上的电平状态发生变化。I2C总线本身不会锁定,但如果总线上存在干扰或者SDA或SCL被某些特定 的因素拉成低电平,12C总线就产生锁定,这些情况通常是由于外部干扰以及从 器件的失效和故障造成, 一般情况下,在印制电路板设计时经过仔细的布局布线, 是可以避免因总线上出现干扰造成总线的锁定。在计算机通讯设备内,12C总线上的主器件一般是CPU,从器件是连接在I2C 总线上的其它器件,比如存储器、传感器、实时时钟等。若SDA线被总线上的一 个器件拉成低电平,主器件就不能产生起始、停止信号,进行下一步的传送,譬 如,主器件(CPU)在对I2C从器件的读操作期间,如果CPU突然被复位(RESET), 而此时I2C总线上的一个读操作周期却还没有结束,I2C从器件一般没有复位输 入管脚,也无法知道主器件被复位的情况,从器件只是看到总线的SCL停止变化, 但I2C总线允许时钟线SCL停止,因此从器件也不会认为I2C总线的主器件出现 故障。在CPU复位过程中及复位后,SCL往往被上拉到高电平,保持稳定,按照 I2C总线的规范,SDA数据线上的数据在时钟线SCL高电平期间必须是稳定的, 如果从器件此时在SDA上输出的bit正巧为"低",因此,从器件将始终驱动SDA
线为低电平,使主器件无法产生任何起始、停止信号,从而由从器件锁定SDA 线,造成I2C总线的锁定。此时主器件虽然一般会检测到I2C总线出现锁定,但 却无法实现下一步的数据传输,因此必须通过一定的手段来避免出现此种情况下 造成12C总线的故障。这种情况出现后,如果主器件能够单独控制SCK,可以通过发送几个SCK脉 冲,使从器件完成I2C总线上的读操作周期,从而避免I2C总线的锁定,但是, 有许多CPU (主器件),其内部集成的I2C寄存器一般不提供直接对SCK的控制, 因此,无法采用输出SCK脉冲的办法来解决。I2C总线如果被上述的原因锁定后, 一般无法仅仅通过复位(RESET)主器件来解决,若没有其它合适可靠的解决办 法,必须要重新上电才能解决。对于I2C总线被锁定后的解决方法,不同的器件提供了各自的解决途径。FreeScale公司(美国一家芯片公司)PowerPC处理器中的MPC8541、 MPC8560 系列CPU,其内部集成了 12C总线控制寄存器,在发现I2C总线被锁定后,可以 通过读写一系列的I2C总线控制寄存器来使I2C总线退出锁定状态。MAXIM公司(美国一家芯片公司)的MAX7500系列12C从器件,其内部集成 了超时功能,提供I2C总线的锁定保护。如果在250ms内时钟线SCL没有发生变 化,从器件将自动结束本次的I2C操作,回到初始状态,从而避免了从器件对 12C总线的锁定;但是,在计算机通讯设备内12C总线上连接的器件往往比较多,12C主器件 (一般是CPU)不一定具有解决I2C总线锁定状态的控制寄存器,同时,目前I2C 总线上所有的从器件也不可能全部具备自动退出锁定状态的功能,因此,必须设 计附加装置,避免前面提及的12C总线可能会被锁定的问题。发明内容本发明所要解决的技术问题是,针对目前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的参与,解决了当12C从器件造成总 线的锁定后总线的恢复问题,提高了系统的稳定性和可靠性,并且该本发明实现 起来方便灵活,硬件成本低。


图1是本发明所述方法流程图;图2是本发明所述装置的原理框图。
具体实施例方式
下面结合附图对技术方案的实施作进一步的详细描述图1所示是本发明所述方法的流程图,系统上电后,当I2C主器件检测到 12C总线被从器件锁定后,自动断开I2C从器件的工作电源,等待设定时间后再 恢复供电,此时I2C从器件即恢复至初始状态,从而解决了从器件对总线的锁定, 上述设定时间的长短取决于I2C总线的负载大小及I2C主器件的性能,其取值范 围为0.2秒 5秒。
图2所示是本发明所述I2C总线被从器件锁定后的恢复装置的一个原理框 图。标号为201的是I2C总线上的主器件,本实施例中为CPU处理器;标号为 202的是I2C总线中的从器件,I2C总线上一般会有多个从器件,但本实施例中 仅用一个从器件来示意;标号为203的是用来对I2C从器件的工作电源进行控制 电源开关,电源开关203 —端与系统电源相连, 一端与连接在一起的I2C从器件 电源相连;204用来控制电源开关203,对于有通用输入输出(GPIO)的CPU而
言,204即为其中的一个GPI0管脚;对于没有GPIO管脚的CPU,可以通过外部 的可编程逻辑器件(PLD)来实现,也可以通过外加的锁存器来实现,即CPU可 以通过PLD内部的寄存器来实现对电源开关203的控制。通过电源开关203和 204协同工作,可以实现I2C的主器件对I2C从器件的工作电源进行控制,来解 决I2C从器件锁定总线的情况。本装置在单元(单板)的系统设计、原理图设计阶段,即可把所有I2C从器 件的工作电源连接在一起,连接在一起的I2C从器件工作电源通过一个电源开关 与系统的电源连接。电源开关的主要目的是对I2C从器件的工作电源进行通断, 可以通过继电器或者金属氧化物半导体场效应管(MetalOxide Semicoductor Field Effect Transistor, MOSFET)来实现。对电源开关的控制,要根据其类 型进行考虑,如果是继电器,要考虑驱动电流的实现;如果是MOSFET,要考虑 控制电压Vgs的控制与实现;也可以采用其它方式的电源开关,只要能够实现由 CPU控制电源开关的通断即可。本实施框图中的CPU201具有GPIO管脚,且电源开关203采用了 N沟道耗尽 型MOSFET, GPIO输出为'l'时,MOSFET导通,GPIO输出为'0'时,MOSFET 截止。在实际的应用中,系统上电后,CPU201正常启动,GPIO输出为'r,电 源开关203闭合,I2C从器件202正常工作。当CPU201检测到总线被I2C从器 件202锁定时,即将GPIO的输出调整为'0',控制电源开关103断开,此时 I2C从器件202失去工作电源,所有的I2C从器件将被断电,CPU根据系统的需 求,维持GPIO '0,输出0.2毫秒 5秒后,重新将GPIO的输出调整为'1',控 制电源开关闭合,12C从器件的电源与系统电源重新连接,此时所有的I2C从器 件会处于上电复位后的状态,即解决了 12C从器件锁定总线的情况。
权利要求
1、一种I2C总线被从器件锁定后的恢复方法,其特征在于,用I2C主器件控制所有I2C从器件的工作电源,当I2C主器件检测到总线被锁定时,即断开I2C从器件的工作电源,等待设定时间后再恢复供电,使I2C从器件恢复至初始状态。
2、 如权利要求1所述的I2C总线被从器件锁定后的恢复方法,其特征在于, 所述设定吋间取值范围为0. 2秒 5秒。
3、 一种I2C总线被从器件锁定后的恢复装置,包括I2C主器件、12C从器 件及系统电源,其特征在于,还增加了一个电源开关,所述电源开关一端与系统 电源相连, 一端与连接在一起的I2C从器件电源相连,由I2C主器件控制其通断。
4、 如权利要求3所述的I2C总线被从器件锁定后的恢复装置,其特征在于, 所述电源开关是一个继电器。
5、 如权利要求3所述的I2C总线被从器件锁定后的恢复装置,其特征在于, 所述电源开关是一个金属氧化物半导体场效应管。
6、 如权利要求3所述的I2C总线被从器件锁定后的恢复装置,其特征在于, 所述电源开关由I2C主器件的通用输入输出引脚控制其通断。
7、 如权利要求3或6所述的I2C总线被从器件锁定后的恢复装置,其特征 在于,所述电源开关由12C主器件通过外部可编程逻辑器件控制其通断。
8、 如权利要求3或6所述的I2C总线被从器件锁定后的恢复装置,其特征 在于,所述电源开关由I2C主器件通过外部锁存器控制其通断。
全文摘要
本发明涉及一种I2C总线被I2C从器件锁定后的恢复方法和装置,I2C总线被从器件锁定后的恢复方法为用I2C主器件控制所有I2C从器件的工作电源,当I2C主器件检测到总线被锁定时,即断开I2C从器件的工作电源,等待设定时间后再恢复供电,使I2C从器件恢复至初始状态;恢复装置包括I2C主器件、I2C从器件及系统电源,还增加了一个电源开关,电源开关一端与系统电源相连,一端与连接在一起的I2C从器件电源相连,由I2C主器件控制其通断。本发明通过主CPU的参与,解决了当I2C从器件造成总线的锁定后总线的恢复问题,提高了系统的稳定性和可靠性。
文档编号G06F13/38GK101118528SQ20071007683
公开日2008年2月6日 申请日期2007年8月31日 优先权日2007年8月31日
发明者于克泳, 汤宁峰, 翟红健, 国 邵 申请人:中兴通讯股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1