[发明专利]一种I2C总线的防死锁系统及其防死锁方法有效
申请号: | 201210593526.6 | 申请日: | 2012-12-31 |
公开(公告)号: | CN103019871A | 公开(公告)日: | 2013-04-03 |
发明(设计)人: | 姜朝来 | 申请(专利权)人: | 四川迪佳通电子有限公司 |
主分类号: | G06F11/00 | 分类号: | G06F11/00 |
代理公司: | 深圳中一专利商标事务所 44237 | 代理人: | 张全文 |
地址: | 518000 广东省深圳市南山*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 i2c 总线 死锁 系统 及其 方法 | ||
技术领域
本发明属于I2C总线设计领域,尤其涉及一种基于IP核复用的I2C总线的防死锁系统及其防死锁方法。
背景技术
I2C总线是一种广泛应用于嵌入式系统设备中,实现主控制器与外设之间通信的双线串行总线。如图1示出了一种I2C总线的典型结构,包括串行数据线(Serial Data,SDA)和串行时钟线(Serial Clock Line,SCL)。每一连接到I2C总线上的I2C设备即可作为主设备,用以负责总线时钟、起始信号及相关初始化数据的产生,也可作为从设备,用以作为被寻址对象。
公知地,I2C总线的数据传输可分为四个阶段,如图2所示,包括:开始、数据读写、应答和停止,分别描述如下:
1)开始(start):串行时钟线为高电平时,串行数据线从高电平向低电平跳变;
2)数据读写:串行数据线上传输的数据在串行时钟线的高电平期间必须保持稳定,只有在串行时钟线的低电平期间才可以进行数据切换;
3)应答(AK):当从设备每接收1个字节数据后,发出一个应答信号,表示数据传输成功与否;
4)停止(stop):串行时钟线为高电平时,串行数据线从低电平向高电平跳变;
依据上述四个阶段,在实际通信时,主设备先发送一个开始信号(start),对I2C总线上的从设备进行寻址,从设备响应后可以进行相应的读写操作。读写数据长度以字节为单位,从设备每接收到一个字节,就发出一个应答信号(AK),表示当前传输状态是否正常,一次操作对数据长度没有限制,传输完成后,主设备向总线发送停止信号(stop)释放总线。
可见,作为串行同步总线,I2C总线进行读取数据的操作都是基于时钟同步进行的。然而,由于连接在I2C总线上的设备中硬件状态不稳定,在长时间工作后,电压会有较大纹波或毛刺,造成I2C总线上时钟和数据波形出现临界状态,导致时钟脉冲跳变,从而影响串行时钟线,使其与串行数据线产生时序错位。由于错位的时间是随机的,某些情况可能造成一次通讯失败,某些情况则导致从设备错过应答位而使得串行数据线一直为低,无法结束,主设备也无法释放总线,从而进入死锁状态。再者,如果处理器本身集成的I2C模块,时序上存在细微的误差,由于处理器都是由数字逻辑电路组成,而组成数字电路的触发器、锁存器等由于电平的临界状态导致产生亚稳态,逻辑器件对其判断无法统一,有判断为“1”,也有判断为“0”,这样逻辑部件就会逻辑混乱。另外,由于I2C模块内部时钟频率较高,将会产生无法消除的几十ns到几百ns的抖动,和亚稳态一起积累到一定程度就会触发串行时钟线错乱,导致I2C状态机错误,主设备无法释放总线,进入死锁状态。由此可见,串行时钟线的异常会导致I2C总线出现异常。
为解决I2C总线的死锁现象,现有技术是在I2C总线上增加一个额外的总线恢复设备,该设备专门用于监视和恢复I2C总线状态。当I2C总线出现异常现象时,外部通过复位主设备和从设备中、控制I2C总线工作的处理器,使得I2C总线重新运行,以解决总线死锁问题。但该方法需要增加额外附加电路,成本高。
发明内容
本发明实施例的目的在于提供一种I2C总线的防死锁系统,旨在解决现有技术通过在I2C总线上增加一个额外的总线恢复设备,来监视和恢复I2C总线状态,该方式成本高的问题。
本发明实施例是这样实现的,一种I2C总线的防死锁系统,所述系统包括寄存器模块和主状态机模块,所述系统还包括:
从状态机启动模块,用于在所述主状态机模块的控制下启动;
采样模块,用于在所述从状态机启动模块的控制下启动,采集I2C总线的串行时钟线上时钟信号跳变沿的计数值信息,以及跳变沿之间的持续时长信息;
异常监控处理模块,用于根据所述计数值信息和所述持续时长信息,并结合第一预设时长、第二预设时长和预设时长范围,判断所述串行时钟线是否出现异常;
处理器模块,用于当所述异常监控处理模块判断所述串行时钟线出现异常时,通过所述寄存器模块中的控制寄存器,控制所述主状态机模块重置所述I2C总线。
本发明实施例的另一目的在于提供一种如上所述的I2C总线的防死锁系统的防死锁方法,所述方法包括:
A1、主状态机模块根据寄存器模块中的控制寄存器,控制I2C总线工作,并控制从状态机启动模块启动;
A2、所述从状态机启动模块启动后,控制采样模块启动;
A3、所述采样模块采集串行时钟线上时钟信号跳变沿的计数值,以及跳变沿之间的持续时长;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于四川迪佳通电子有限公司,未经四川迪佳通电子有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201210593526.6/2.html,转载请声明来源钻瓜专利网。
- 上一篇:近邻搜索方法与系统
- 下一篇:一种电容式触摸屏的测试方法、系统及电子设备