一种防止I2C总线锁定的方法、装置及系统制造方法及图纸

技术编号:7759077 阅读:195 留言:0更新日期:2012-09-14 00:56
本发明专利技术公开了一种防止I2C总线锁定的方法、装置及系统,通过与I2C主器件连接的复位信号获取模块获取外界发送给I2C主器件的复位信号,获取到该复位信号后,表明I2C主器件要进行复位操作;然后通过与I2C总线有效连接的控制模块发送预设的终止信号到I2C总线结束该I2C总线上当前未结束操作,避免I2C主器件在复位过程中导致通信终端引起I2C总线被锁定的情况发生,避免了恢复I2C总线通信时对I2C从器件进行误操作,提高了系统工作的可靠性和稳定性。

【技术实现步骤摘要】

本专利技术涉及电子通信控制领域,具体涉及一种防止I2C总线锁定的方法、装置及系统
技术介绍
I2C(Inter-Integrated Circuit)总线是由PHILIPS公司开发的两线式串行总线,用于连接微控制器及其外围设备。是微电子通信控制领域广泛采用的一种总线标准。它是同步通信的一种特殊形式,具有接口线少,控制方式简单,器件封装形式小,通信速率较高等优点。目前已广泛应用在计算机制造,电信设备,消费电子等领域。在I2C总线技术规范中,总线协议有严格的时序要求。总线工作时,由总线上的主器件控制时钟线SCL传送时钟脉冲,由双向数据线SDA传送数据。I2C总线上每次传输的数据字节数不受限制,但每一个字节必须为8位,而且每个传送的字节后面从器件必须跟一个认可位(第9位),也叫应答位(ACK, Acknowledge bit)I2C总线技术规范中,开始和结束信号(也称起始和停止信号)定义如下起始信号⑶在时钟线SCL保持高电平期间,双向数据线SDA出现由高电平向低电平的变化,用于启动I2C总线,为I2C总线的起始信号;停止信号⑵在时钟线SCL保持高电平期间,双向数据线SDA出现由低电平向高电平的变化,用于停止I2C总线,为I2C总线的终止信号;应答信号(A) I2C总线的第9个脉冲对应应答位,若双向数据线SDA上显示低电平则为总线“应答”(A),若双向数据线SDA上显示高电平则为“非应答”(/A)。开始和结束信号一般都是由主器件产生,只有主器件才能对I2C总线实现管理与检测,如起始、停止、发送时钟等。I2C总线数据传输时,在时钟线SCL高电平期间,数据线SDA上必须保持有稳定的逻辑电平状态,高电平为数据1,低电平为数据O。只有在时钟线为低电平时,才允许数据线上的电平状态变化I2C总线的工作速度一般是取决于主控器的性能,参考I2C的总线规范,时钟线SCL的工作频率可以低至OHz。在正常通信的情况下I2C总线是不会锁定的,但是当系统复位时,如果I2C主器件还处在通信过程中,而此时SDA正由从器件驱动时,那么由于复位后主器件没有再发送时钟,SDA被从器件给拉到固定电平,如果SDA此时是低电平,那么主器件复位后,会一直认为I2C总线忙,进而无法对从器件操作,而从器件又无法自动退出这种状态,导致I2C总线被挂起,需要人为干预恢复总线的正常时序。目前各家芯片厂家正对这种情况提供了一些解决方法,例如从器件会检测SCL,当一定时间内没有时钟就结束本次操作,但I2C器件众多各个厂家之间都有差异,这就需要有一个附加的控制装置,统一解决这个问题。对于I2C锁定的恢复,目前采用的主要方法有两种I、复位时检测SDA状态,如果为低,往SCL上输出9个时钟。这种方法实现相对比较简单,也能解除总线锁定的状态,但如果时序在特定的位置被复位,会导致往从器件写入错误数据,由于从器件一般没有复位功能,这种误写有可能会影响系统的正常工作,下面举常用器件EEPROM AT24C04实例分析一下误写情况。图I是一个单字节写操作的SDA时序,图2是一个单字节随机读的SDA时序,在两个图上有I个ACK的标注了一根标示线,首先可以看到从开始到标示线处,读和写的时序都是完全相同的,如果主器件复位后,从器件时序正好处在标示线处,发出ACK等待主器件时钟回应,那么从器件会一直拉低数据线,等待主器件发出的时钟,这时防锁定装置检测到SDA拉低,往SCL上送出9个时钟,第I个时钟后从器件结束响应释放SDA,后面8个时钟参考图I实际上是往当前地址写入了 FF或者00 (取决于主器件在复位状态下SDA引脚输出的默认电平,如果是I或者三态,写入FF,如果是0,写入00),由于EEPROM经常会保存一些配置信息,这种误操作很有可能导致系统的异常,另外9个时钟后时序并未结束,复位后主器件第一次操作,和上次复位时残留的操作拼接成错误时序,也会导致第一次操作失败,只有到主器件发送一个STOP,才能恢复正常。2、复位时检测SDA状态,如果为低,往SCL上输出I个时钟,然后再检测SDA状态,如果为低再送一个时钟,循环往复,直到SDA变高。这种方法相较第一种要复杂很多,可以避免对从器件误写的操作,但是检测SDA变高不一定是从器件释放了 SDA,有可能是在读数据时从器件发送了一个1,如果这时就停止送时钟,那么SDA还是被从器件驱动,复位后主器件在发起第一次I2C操作时START无法正常发出,第一次操作肯定失败,只有等主器件发送一个STOP之后,从器件才会释放SDA。另外这种方法也存在着,复位后主器件第一次操作,和上次复位时残留的操作拼接成错误时序,导致第一次操作失败的问题因此,急需提出一种新的控一种防止I2C总线锁定的方法,避免出现I2C主器件复位过程中I2C总线被锁定以及恢复I2C总线时误操作I2C从器件等情况。
技术实现思路
本专利技术要解决的主要技术问题是,提供一种防止I2C总线锁定的方法、装置及系统,避免I2C主器件复位过程中I2C总线被锁定的情况发生,保证恢复I2C总线通信时的正确操作,提高系统工作的可靠性和稳定性。为解决上述技术问题,本专利技术提供一种防止I2C总线锁定的装置,包括复位信号获取模块,与I2C主器件连接,用于获取外界发送给所述I2C主器件的复位信号;控制模块,与I2C总线有效连接,用于在所述复位信号获取模块获取到所述复位信号后,发送预设的终止信号到所述I2C总线结束所述I2C总线上当前未结束操作。在本专利技术的一种实施例中,所述I2C总线包括串行时钟线和双向串行数据线,所述控制模块包括的时钟控制线和数据线分别与所述I2C总线的串行时钟总线和双向串行数据线连接。在本专利技术的一种实施例中,所述预设终止信号包括至少10个特定时序的脉冲。在本专利技术的一种实施例中,所述预设终止信号为10个特定时序的脉冲,所述特征时序为串行时钟总线上的脉冲与双向串行数据线上的脉冲的相位差为T/4,所述T为脉冲周期。本专利技术还提供了一种防止I2C总线锁定的系统,包括I2C主器件和至少一个通过I2C总线与所述I2C主器件连接的I2C从器件,还包括用于防止I2C总线锁定的装置;所述I2C主器件用于接收外界发送的复位信号;所述装置包括复位信号获取模块,与所述I2C主器件连接,用于获取外界发送给所述I2C主器件的复位信号;控制模块,与所述I2C总线有效连接,用于在所述复位 信号获取模块获取到所述复位信号后,发送预设的终止信号到所述I2C总线结束所述I2C总线上当前未结束操作。在本专利技术的一种实施例中,所述I2C总线包括串行时钟线和双向串行数据线,所述控制模块包括的时钟控制线和数据线分别与所述I2C总线的串行时钟总线和双向串行数据线连接。在本专利技术的一种实施例中,所述预设终止信号包括至少10个特定时序的脉冲。在本专利技术的一种实施例中,所述预设终止信号为10个特定时序的脉冲,所述特征时序为串行时钟总线上的脉冲与双向串行数据线上的脉冲的相位差为T/4,所述T为脉冲周期。本专利技术还提供了一种防止I2C总线锁定的方法,包括检测I2C主器件是否收到外界发送复位信号;若检测到I2C主器件收到外界发送复位信号,则发送预设的终止信号到I2C总线结束所述I2C总线上当前未结束操作。在本专利技术的一种实施例中,所述预设终止信号包括至少10个特定本文档来自技高网
...

【技术保护点】

【技术特征摘要】

【专利技术属性】
技术研发人员:董超
申请(专利权)人:中兴通讯股份有限公司
类型:发明
国别省市:

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

1