掌桥专利:专业的专利平台
掌桥专利
首页

I2C接口规避错误起始和停止条件的电路结构及方法

文献发布时间:2024-04-18 19:58:30


I2C接口规避错误起始和停止条件的电路结构及方法

技术领域

本发明涉及I2C(Inter-Integrated Circuit,集成电路总线)总线技术领域,尤其涉及一种I2C接口规避错误起始条件和停止条件的电路结构及方法。

背景技术

近年来,随着集成电路行业高速发展,芯片的集成度越来越高。几乎所有的消费电子、通信电子系统都集成有:智能控制电路(比如MCU)、通用电路(比如LCD驱动器、I/O口、RAM、EEPROM或数据转换器)、面向应用电路(比如数字调谐或信号处理电路、音频拨号电话的DTMF发生器)。为了使硬件效益最大、电路最简单化,Philips公司开发了一个简单、开放的双向两线I2C总线,包括数据线SDA和时钟线SCL,来实现有效的器件控制。所有符合I2C总线的器件组合了一个片上接口,使器件之间直接通过I2C总线通信,这使得IC(IntegratedCircuit,集成电路)可以很容易形成模块化和标准化,便于重复利用。

I2C总线解决了很多在设计数字控制电路时遇到的接口问题,极大地简化了硬件电路和PCB布线,降低了系统成本,提高了系统的可靠性。I2C总线是一个真正的多主机总线,多个主机初始化数据传输的时候,可以通过冲突检测和仲裁防止数据破坏,任何设备都可以作为主机或者从机,但同一时刻只有一个主机,这使得I2C总线非常灵活,总线上的电路增加和删除不会影响别的单元工作。I2C总线可以通过外部连线进行在线监测,便于系统调试和故障诊断,有利于模块化和标准化软件,极大地缩短了研发周期;总线上挂载的I2C设备数目由总线的最大电容决定且具有极低的电流消耗。

I2C总线的SDA数据线和SCL时钟线都是双向线路,通过一个电流源或上拉电阻连接到正的电源电压,当总线空闲时这两条线路都是高电平,当SCL线为高电平时SDA线由高电平向低电平切换表示起始条件。当SCL线为高电平时SDA线由低电平向高电平切换表示停止条件。总线在起始条件后被认为处于忙的状态,然后就可以开始传输数据位、响应位、停止位。在停止条件的某段时间后总线被认为再次处于空闲状态,如果产生重复起始条件而不产生停止条件总线会一直处于忙的状态。如图1所示为I2C总线起始条件和停止条件检测时序图。其中,左侧虚线框为停止条件检测时序图,右侧为起始条件检测时序图,SCL上升沿到SDA边沿为Setup时间,即协议规定的建立时间,SDA边沿到SCL下降沿为Hold时间,即协议规定的保持时间,主机需要保证总线时序是满足协议规定的建立时间和保持时间要求的。起始条件和停止条件检测严重影响数据传输正确性,因此在设计中涉及到I2C总线时,起始条件和停止条件检测一直是着重要考虑的部分。

实际应用中,受工作环境和电路本身延迟的影响,I2C的时钟信号和数据信号会发生抖动,产生毛刺,时钟信号和数据信号的时序发生错位、起始条件或停止条件的建立时间、保持时间不符合I2C协议规定,这些情况都可能会导致设备检测到错误的起始条件或停止条件。而现有技术中,还没有针对各种导致设备检测到错误的起始条件或停止条件的通用解决方案,比如中国专利CN112540943B中,通过过滤毛刺的方法解决了起始条件检错错误的问题,但是没有给出其它情况下检测到错误的起始条件和停止条件的解决办法。

发明内容

本发明要解决的技术问题在于,针对现有技术中I2C接口可能出现的各种起始条件和错误条件检测错误的问题,提供一种I2C接口规避错误起始条件和停止条件的电路结构及方法。

本发明解决其技术问题所采用的技术方案是:

本发明提供了一种I2C接口规避错误起始条件的电路结构,包括:第一D触发器、第一SCL高电平延迟单元、第一SDA延迟单元,其中:

所述第一SCL高电平延迟单元的输入端与I2C时钟总线SCL连接,输出端经过一个反相器后连接所述第一D触发器的复位端,用于对I2C时钟总线SCL上的时钟信号上升沿进行延迟;

所述第一SDA延迟单元的输入端与I2C数据总线SDA连接,输出端经过一个反相器后连接所述第一D触发器的时钟端,用于对I2C数据总线SDA上的数据信号进行延迟;

所述第一D触发器的数据输入端接高电平,输出端输出起始条件检测信号,用于根据延迟后的SCL信号和SDA信号输出起始条件检测结果;

所述第一SDA延迟单元的延迟时间设置为预计的起始条件保持时间;

所述第一SCL高电平延迟单元的延迟时间设置为预计的起始条件保持时间和预计的起始条件建立时间之和。

本发明还提供了一种I2C接口规避错误起始条件的方法,基于所述的I2C接口规避错误起始条件的电路结构实现,包括以下步骤:

S1A,确定起始条件保持时间,将第一SDA延迟单元的延迟时间设置为预计的起始条件保持时间;

S1B,确定起始条件建立时间,将第一SCL高电平延迟单元的延迟时间设置为预计的起始条件保持时间和预计的起始条件建立时间之和;

S1C,由所述的I2C接口规避错误起始条件的电路结构进行起始条件检测。

本发明还提供了一种I2C接口规避错误停止条件的电路结构,包括:第二D触发器、第二SCL高电平延迟单元、第二SDA延迟单元,其中:

所述第二SCL高电平延迟单元的输入端与I2C时钟总线SCL连接,输出端经过一个反相器后连接所述第二D触发器的复位端,用于对I2C时钟总线SCL上的时钟信号上升沿进行延迟;

所述第二SDA延迟单元的输入端与I2C数据总线SDA连接,输出端连接所述第二D触发器的时钟端,用于对I2C数据总线SDA上的数据信号进行延迟;

所述第二D触发器的数据输入端接高电平,输出端输出停止条件检测信号,用于根据延迟后的SCL信号和SDA信号输出停止条件检测结果;

所述第二SDA延迟单元的延迟时间设置为预计的停止条件保持时间;

所述第二SCL高电平延迟单元的延迟时间设置为预计的停止条件保持时间和预计的停止条件建立时间之和。

本发明还提供了一种I2C接口规避错误停止条件的方法,基于I2C接口规避错误停止条件的电路结构实现,包括以下步骤:

S2A,确定停止条件保持时间,将第二SDA延迟单元的延迟时间设置为预计的停止条件保持时间;

S2B,确定停止条件建立时间,将第二SCL高电平延迟单元的延迟时间设置为预计的停止条件保持时间和预计的停止条件建立时间之和;

S2C,由I2C接口规避错误停止条件的电路结构进行停止条件检测。

本发明还提供了一种I2C接口规避错误起始条件和停止条件的电路结构,包括:第三D触发器、第四触发器、第三SCL高电平延迟单元、第三SDA延迟单元:

所述第三SCL高电平延迟单元的输入端与I2C时钟总线SCL连接,输出端经过一个反相器后分别连接所述第三D触发器和第四触发器的复位端,用于对I2C时钟总线SCL上的时钟信号上升沿进行延迟;

所述第三SDA延迟单元的输入端与I2C数据总线SDA连接,输出端经过一个反相器后连接所述第三D触发器的时钟端,所述第三SDA延迟单元的输出端还与所述第四D触发器的时钟端连接,用于对I2C数据总线SDA上的数据信号进行延迟;

所述第三D触发器的数据输入端接高电平,输出端输出起始条件检测信号,用于根据延迟后的SCL信号和SDA信号输出起始条件检测结果;

所述第四D触发器的数据输入端接高电平,输出端输出停止条件检测信号,用于根据延迟后的SCL信号和SDA信号输出停止条件检测结果;

所述第三SDA延迟单元的延迟时间设置为预计的起始条件保持时间,所述预计的起始条件保持时间和预计的停止条件保持时间相等;

所述第三SCL高电平延迟单元的延迟时间设置为预计的起始条件保持时间和预计的起始条件建立时间之和,所述预计的起始条件建立时间和预计的停止条件建立时间相等。

本发明还提供了一种I2C接口规避错误起始条件的方法,基于所述的I2C接口规避错误起始条件和停止条件的电路结构实现,包括以下步骤:

S3A,确定起始条件保持时间,停止条件保持时间和起始条件保持时间相等,将第三SDA延迟单元的延迟时间设置为预计的起始条件保持时间;

S3B,确定起始条件建立时间,停止条件建立时间和起始条件建立时间相等,将第三SCL高电平延迟单元的延迟时间设置为预计的起始条件保持时间和预计的起始条件建立时间之和;

S3C,由所述电路结构进行起始条件和停止条件检测。

本发明基于I2C协议,提出了一种规避错误识别起始条件和停止条件的电路结构,该电路结构主要由D触发器和延迟单元组成,通过分别延迟I2C总线的时钟线和数据线,增加了起始条件和停止条件的建立时间和保持时间检测窗口,确保了起始条件和停止条件正常产生,避免了外部因素导致的检测到错误的起始条件和停止条件的情况。因为加入了延迟单元,检测电路也具备了一定的毛刺过滤功能,减少了由毛刺而产生的检测错误。对于I2C时钟线和数据线错位的情况,也能通过调节延迟单元的延迟时间来避免检测错误。本发明所述方法,结构简单,易于集成,所用资源较少,且检测准确性高,容错性强,非常适用于各种集成了I2C总线协议的电子产品控制器。

附图说明

此处所说明的附图用来提供对本发明的进一步理解,构成本发明的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。

图1是I2C起始条件和停止条件检测时序图。

图2是I2C起始条件检测电路图和停止条件检测电路图。

图3是延迟后产生的起始条件检测窗口示意图。

图4是延迟后产生的停止条件检测窗口示意图。

图5是I2C起始条件和停止条件检测电路图。

具体实施方式

为了便于理解本发明,下面将参照相关附图对本发明进行更全面的描述。附图中给出了本发明的典型实施例。但是,本发明可以以许多不同的形式来实现,并不限于本文所描述的实施例。相反地,提供这些实施例的目的是使对本发明的公开内容更加透彻全面。应当理解本发明实施例以及实施例中的具体特征是对本申请技术方案的详细的说明,而不是对本申请技术方案的限定,在不冲突的情况下,本发明实施例以及实施例中的技术特征可以相互组合。

如图2所示为本发明实施例提供的I2C总线的起始条件检测电路和停止条件检测电路示意图。本发明实施例提供了一种I2C接口规避错误起始条件的电路结构,包括:第一D触发器、第一SCL高电平延迟单元、第一SDA延迟单元,其中:

所述第一SCL高电平延迟单元的输入端与I2C时钟总线SCL连接,输出端经过一个反相器后连接所述第一D触发器的复位端,用于对I2C时钟总线SCL上的时钟信号上升沿进行延迟;

I2C时钟总线SCL上的时钟信号高电平期间,第一D触发器的复位信号无效,低电平期间,第一D触发器复位信号有效,第一D触发器处于复位状态,输出被清零。

所述第一SDA延迟单元的输入端与I2C数据总线SDA连接,输出端经过一个反相器后连接所述第一D触发器的时钟端,用于对I2C数据总线SDA上的数据信号进行延迟;

当I2C数据总线SDA经延迟后出现下降沿时,触发第一D触发器进行采样。

所述第一D触发器的数据输入端接高电平,输出端输出起始条件检测信号Start_chk,用于根据延迟后的SCL信号和SDA信号输出起始条件检测结果;

当复位无效,即I2C时钟总线SCL经延迟后出现高电平,I2C数据总线SDA经延迟后出现下降沿时,触发第一D触发器进行采样,第一D触发器输出端跟随数据输入端,输出高电平,表示检测到起始条件信号。

所述第一SDA延迟单元的延迟时间设置为预计的起始条件保持时间;

所述第一SCL高电平延迟单元的延迟时间设置为预计的起始条件保持时间和预计的起始条件建立时间之和。

其中,预计的起始条件保持时间和预计的起始条件建立时间的取值根据应用的实际需求和I2C协议规定设置。

如图3所示为本发明实施例延迟后产生的起始条件检测窗口示意图。其中,SCL表示I2C时钟总线SCL上的时钟信号,SCL_d表示SCL信号经第一SCL高电平延迟单元延迟之后的输出,SDA表示I2C时钟总线SDA上的数据信号,SDA_d表示SDA信号经第一SDA延迟单元延迟之后的输出。SCL信号在A点出现上升沿,B点出现下降沿,A点和C点之间是起始建立时间检测窗口Start Setup Time,D点和B点之间是起始保持时间检测窗口Start Hold Time,Start Setup Time和Start Hold Time的取值根据应用的实际需求和I2C协议规定设置;SDA延迟表示第一SDA延迟单元设定的延迟时间,其取值为起始建立时间Start Hold Time,SCL延迟表示第一SCL高电平延迟单元设定的延迟时间,其取值为起始建立时间+起始保持时间,即Start Hold Time+Start Setup Time。

如图3所示,SCL中的上升沿A点经过延时后,对应为SCL_d中的A1点,因为第一SCL高电平延迟单元只对上升沿进行延迟,SCL中的下降沿B点经过第一SCL高电平延迟单元之后,位置不变,B1点与B点的位置相同,A1、B1两点之间,SCL_d为高电平,第一D触发器的复位无效,在此期间,如果SDA_d出现下降沿,第一D触发器的Q输出端会跟随输入端,输出高电平,表示检测到起始条件。当SCL_d信号为低电平,第一D触发器的复位有效,起始条件检测信号将被清零。

SDA的下降沿如果在C点,经过延迟之后到达C1点,C1点的位置与A1平齐;SDA的下降沿如果在D点,经过延迟之后到达D1点,D1点的位置与B1平齐。因此,在SCL_d中A1和B1期间,如果SDA_d的下降沿出现在C1和D1之间,则对应的SDA信号既满足建立时间检测窗口的要求,又满足保持时间检测窗口的要求,就都能触发第一D触发器输出高电平。若SCL上升沿到SDA下降沿小于建立时间检测窗口要求的建立时间时,即SDA的下降沿出现在C点的左边,或SDA下降沿到SCL下降沿小于保持时间检测窗口要求的保持时间时,即SDA的下降沿出现在D点的右边,延迟后的SDA_d边沿会落在SCL_d低电平期间,触发器还处于复位状态,产生不了停止条件。

本发明实施例还提供了一种I2C接口规避错误停止条件的电路结构,包括:第二D触发器、第二SCL高电平延迟单元、第二SDA延迟单元,其中:

所述第二SCL高电平延迟单元的输入端与I2C时钟总线SCL连接,输出端经过一个反相器后连接所述第二D触发器的复位端,用于对I2C时钟总线SCL上的时钟信号上升沿进行延迟;

所述第二SDA延迟单元的输入端与I2C数据总线SDA连接,输出端连接所述第二D触发器的时钟端,用于对I2C数据总线SDA上的数据信号进行延迟;

所述第二D触发器的数据输入端接高电平,输出端输出停止条件检测信号Stop_chk,用于根据延迟后的SCL信号和SDA信号输出停止条件检测结果;

所述第二SDA延迟单元的延迟时间设置为预计的停止条件保持时间;

所述第二SCL高电平延迟单元的延迟时间设置为预计的停止条件保持时间和预计的停止条件建立时间之和。

其中,预计的停止条件保持时间和预计的停止条件建立时间的取值根据应用的实际需求和I2C协议规定设置。

如图4所示为本发明实施例延迟后产生的停止条件检测窗口示意图。其检测原理与图3类似,在此不再赘述。

具体的,通过调整不同的延迟单元配置,可以调整起始条件和停止条件的建立时间和保持时间检测窗口。建立时间和保持时间检测窗口的时间需要适合产品应用,既要小于I2C协议规定的起始条件和停止条件的建立、保持时间,也要保留一定的防错误检测的能力,优选地,可以设定为I2C协议规定时间的一半。例如,I2C快速模式下起始条件和停止条件的建立、保持时间规定为600ns,那么建立、保持时间检测窗口的时间需求可以设置为300ns,对应的,SCL高电平延迟单元的延迟时间为600ns,SDA延迟单元的延迟时间为300ns。

本发明实施例还提供了一种I2C接口规避错误起始条件的方法,基于I2C接口规避错误起始条件的电路结构实现,所述方法包括:

S1A,确定起始条件保持时间,将第一SDA延迟单元的延迟时间设置为预计的起始条件保持时间;

起始条件保持时间根据应用实际需要和I2C协议的规定来设计,比如,如果系统输出的I2C时钟信号和数据信号符合I2C标准要求,就参照I2C协议标准设置保持时间,如果因为系统电路设计原因,数据线上的信号总是提前于时钟线信号,就适当减小保持时间设置。

S1B,确定起始条件建立时间,将第一SCL高电平延迟单元的延迟时间设置为预计的起始条件保持时间和预计的起始条件建立时间之和;

起始条件建立时间根据应用实际需要和I2C协议的规定来设计,比如,如果系统输出的I2C时钟信号和数据信号符合I2C标准要求,就参照I2C协议标准设置建立时间,如果因为系统电路设计原因,数据线上的信号总是提前于时钟线信号,就适当增大建立时间设置。

S1C,由I2C接口规避错误起始条件的电路结构进行起始条件检测。

本发明实施例还提供了一种I2C接口规避错误停止条件的方法,基于I2C接口规避错误停止条件的电路结构实现,所述方法包括:

S2A,确定停止条件保持时间,将第二SDA延迟单元的延迟时间设置为预计的停止条件保持时间;

S2B,确定停止条件建立时间,将第二SCL高电平延迟单元的延迟时间设置为预计的停止条件保持时间和预计的停止条件建立时间之和;

S2C,由I2C接口规避错误停止条件的电路结构进行停止条件检测。

其中,停止条件保持时间和建立时间的设置可以参照起始条件进行。

实际应用时,一般都需要同时规避起始条件和停止条件的检测错误,需要同时用到上述的I2C接口规避错误起始条件的电路和规避错误停止条件的电路,一般设置起始条件和停止条件的保持时间相同,起始条件和停止条件的建立时间相同,此时,可以将图2中的两部分电路合并,变成图5所示的电路图,该电路可同时进行起始条件和停止条件检测。

如图5所示,本发明实施例提供了一种I2C接口规避错误起始条件和停止条件的电路结构,包括:第三D触发器、第四触发器、第三SCL高电平延迟单元、第三SDA延迟单元:

所述第三SCL高电平延迟单元的输入端与I2C时钟总线SCL连接,输出端经过一个反相器后分别连接所述第三D触发器和第四触发器的复位端,用于对I2C时钟总线SCL上的时钟信号上升沿进行延迟;

所述第三SDA延迟单元的输入端与I2C数据总线SDA连接,输出端经过一个反相器后连接所述第三D触发器的时钟端,所述第三SDA延迟单元的输出端还与所述第四D触发器的时钟端连接,用于对I2C数据总线SDA上的数据信号进行延迟;

所述第三D触发器的数据输入端接高电平,输出端输出起始条件检测信号Start_chk,用于根据延迟后的SCL信号和SDA信号输出起始条件检测结果;

所述第四D触发器的数据输入端接高电平,输出端输出停止条件检测信号Stop_chk,用于根据延迟后的SCL信号和SDA信号输出停止条件检测结果;

所述第三SDA延迟单元的延迟时间设置为预计的起始条件保持时间,所述预计的起始条件保持时间和预计的停止条件保持时间相等;

所述第三SCL高电平延迟单元的延迟时间设置为预计的起始条件保持时间和预计的起始条件建立时间之和,所述预计的起始条件建立时间和预计的停止条件建立时间相等。

相应地,本发明实施例提供了一种I2C接口规避错误起始条件和停止条件的方法,基于上述I2C接口规避错误起始条件和停止条件的电路结构实现,所述方法包括:

S3A,确定起始条件保持时间,停止条件保持时间和起始条件保持时间相等,将第三SDA延迟单元的延迟时间设置为预计的起始条件保持时间;

S3B,确定起始条件建立时间,停止条件建立时间和起始条件建立时间相等,将第三SCL高电平延迟单元的延迟时间设置为预计的起始条件保持时间和预计的起始条件建立时间之和;

S3C,由所述电路结构进行起始条件和停止条件检测。

采用本发明实施例的技术方案,可以对I2C总线起始条件和停止条件的建立时间和保持时间进行设置,不满足设置的,不产生对应的起始条件或者停止条件,减少了因为建立时间和保持时间不满足要求而导致的检测错误。

本发明实施例在I2C数据总线加入了延迟单元,经延迟之后,不符合检测窗口时序要求的毛刺信号也被滤除,减少了由毛刺而产生的检测错误。

因为可以根据实际情况灵活设置延迟单元的延迟时间,本发明实施例的技术方案对于因为主机I2C时钟线和数据线错位的情况也能进行调节,以防止起始条件和停止条件误判。比如,因为电路设计原因,主机I2C数据线总是比时钟线提前一定的时间范围,那么就可以适当减小起始条件和停止条件检测电路中保持时间的设置,增大起始条件和停止条件检测电路中的建立时间的设置。通过适应性调整,减少了因为I2C时钟线和数据线错位造成的起始条件和停止条件检测错误。

采用本发明的技术方案,I2C总线上只有满足建立、保持时间检测窗口设定的建立时间和保持时间要求时才产生起始和停止条件,保证了起始条件和停止条件时序的正确性,避免了由外部因素导致的检测错误。

本发明基于I2C协议,提出了一种规避错误识别起始条件和停止条件的电路结构,该电路结构主要由D触发器和延迟单元组成,通过分别延迟I2C总线的时钟线和数据线,增加了起始条件和停止条件的建立时间和保持时间检测窗口,确保了起始条件和停止条件正常产生,避免了外部因素导致的检测到错误的起始条件和停止条件的情况。因为加入了延迟单元,检测电路也具备了一定的毛刺过滤功能,减少了由毛刺而产生的检测错误。对于I2C时钟线和数据线错位的情况,也能通过调节延迟单元的延迟时间来避免检测错误。本发明所述方法,结构简单,易于集成,所用资源较少,且检测准确性高,容错性强,非常适用于各种集成了I2C总线协议的电子产品控制器。

除非另有定义,本文所使用的所有的技术和科学术语与属于本发明的技术领域的技术人员通常理解的含义相同。本文中在本发明的说明书中所使用的术语只是为了描述具体的实施例的目的,不是旨在于限制本发明。

本说明书中使用的“第一”、“第二”等包含序数的术语可用于说明各种构成要素,但是这些构成要素不受这些术语的限定。使用这些术语的目的仅在于将一个构成要素区别于其他构成要素。例如,在不脱离本发明的权利范围的前提下,第一构成要素可被命名为第二构成要素,类似地,第二构成要素也可以被命名为第一构成要素。两个实体之间的“相连”或“连接”,不仅仅包括将两个实体直接相连,也包括通过具有有益改善效果的其他实体间接相连。

上面结合附图对本发明的实施例进行了描述,但是本发明并不局限于上述的具体实施方式,上述的具体实施方式仅仅是示意性的,而不是限制性的,本领域的普通技术人员在本发明的启示下,在不脱离本发明宗旨和权利要求所保护的范围情况下,还可做出很多形式的变形,这些均属于本发明的保护之内。

相关技术
  • 一种防止I2C接口错误唤醒SOC系统的电路结构及方法
  • 一种防止I2C接口错误唤醒SOC系统的电路结构及方法
技术分类

06120116500513