CN112051890B - I2c总线的时钟控制方法、主设备及连接i2c总线的设备系统 - Google Patents

I2c总线的时钟控制方法、主设备及连接i2c总线的设备系统 Download PDF

Info

Publication number
CN112051890B
CN112051890B CN202010878015.3A CN202010878015A CN112051890B CN 112051890 B CN112051890 B CN 112051890B CN 202010878015 A CN202010878015 A CN 202010878015A CN 112051890 B CN112051890 B CN 112051890B
Authority
CN
China
Prior art keywords
scl
level
clock
counting
value
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.)
Active
Application number
CN202010878015.3A
Other languages
English (en)
Other versions
CN112051890A (zh
Inventor
刘伟涛
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Haiguang Information Technology Co Ltd
Original Assignee
Haiguang Information Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Haiguang Information Technology Co Ltd filed Critical Haiguang Information Technology Co Ltd
Priority to CN202010878015.3A priority Critical patent/CN112051890B/zh
Publication of CN112051890A publication Critical patent/CN112051890A/zh
Application granted granted Critical
Publication of CN112051890B publication Critical patent/CN112051890B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/04Generating or distributing clock signals or signals derived directly therefrom
    • G06F1/08Clock generators with changeable or programmable clock frequency
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4282Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
    • G06F13/4291Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus using a clocked protocol
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06MCOUNTING MECHANISMS; COUNTING OF OBJECTS NOT OTHERWISE PROVIDED FOR
    • G06M1/00Design features of general application
    • G06M1/27Design features of general application for representing the result of count in the form of electric signals, e.g. by sensing markings on the counter drum

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Logic Circuits (AREA)

Abstract

本申请实施例提供一种I2C总线的时钟控制方法、主设备及连接I2C总线的设备系统,其中方法包括:获取SCL跳变的高电平时钟数字信号,开始计数SCL的当前时钟周期;当计数值达到高电平计数阈值时,产生传输给SCL的高电平时钟使能信号,并继续计数SCL的当前时钟周期,所述高电平时钟使能信号用于触发SCL的电平状态调整为低电平;当继续计数过程的计数值达到低电平计数阈值时,产生传输给SCL的低电平时钟使能信号,在下一次获取SCL跳变的高电平时钟数字信号时,开始计数SCL的下一次时钟周期,所述低电平时钟使能信号用于触发SCL的电平状态调整为高电平。本申请实施例能够准确实现I2C总线的时钟控制。

Description

I2C总线的时钟控制方法、主设备及连接I2C总线的设备系统
技术领域
本申请实施例涉及设备通讯技术领域,具体涉及一种I2C总线的时钟控制方法、主设备及连接I2C总线的设备系统。
背景技术
I2C(Inter-Integrated Circuit,互连集成电路)总线是一种双向二线制串行总线,其主要包括一条用于传输时钟信号的SCL(Serial Clock Line,串行时钟线)和一条用于在设备之间传输数据的SDA(Serial Data Line,串行数据线),连接于I2C总线上的设备只需要通过该两条线即可有效实现数据传输,因此I2C总线广泛应用于设备间通讯的场景。
I2C总线允许连接多个设备,该多个设备中获得I2C总线控制权的设备可称为主设备,被主设备访问的其他设备可称为从设备;在主设备和从设备利用I2C总线进行数据传输的过程中,主设备可通过控制I2C总线上SCL的时钟,以控制主设备和从设备在SDA上传输数据,因此如何准确实现I2C总线的时钟控制,一直是本领域技术人员研究的问题。
发明内容
有鉴于此,本申请实施例提供一种I2C总线的时钟控制方法、主设备及连接I2C总线的设备系统,以准确实现I2C总线的时钟控制。
为实现上述目的,本申请实施例提供如下技术方案:
一种I2C总线的时钟控制方法,包括:
获取SCL跳变的高电平时钟数字信号,开始计数SCL的当前时钟周期;
当计数值达到高电平计数阈值时,产生传输给SCL的高电平时钟使能信号,并继续计数SCL的当前时钟周期,所述高电平时钟使能信号用于触发SCL的电平状态调整为低电平;
当继续计数过程的计数值达到低电平计数阈值时,产生传输给SCL的低电平时钟使能信号,在下一次获取SCL跳变的高电平时钟数字信号时,开始计数SCL的下一次时钟周期,所述低电平时钟使能信号用于触发SCL的电平状态调整为高电平。
本申请实施例还提供一种主设备,包括:数字逻辑电路;所述数字逻辑电路包括时钟产生电路,记录低电平计数阈值的第一寄存器和记录高电平计数阈值的第二寄存器;所述时钟产生电路包括用于计数的第一计数器;
其中,所述时钟产生电路被配置为:
获取SCL跳变的高电平时钟数字信号,使第一计数器开始计数SCL的当前时钟周期;
当第一计数器的计数值达到第二寄存器记录的高电平计数阈值时,产生传输给SCL的高电平时钟使能信号,并使第一计数器继续计数SCL的当前时钟周期,所述高电平时钟使能信号用于触发SCL的电平状态调整为低电平;
当第一计数器继续计数过程的计数值达到低电平计数阈值时,产生传输给SCL的低电平时钟使能信号,在下一次获取SCL跳变的高电平时钟数字信号时,使第一计数器开始计数SCL的下一次时钟周期,所述低电平时钟使能信号用于触发SCL的电平状态调整为高电平。
本申请实施例还提供一种连接I2C总线的设备系统,包括:I2C总线,连接I2C总线的从设备和如上述所述的主设备。
本申请实施例提供的I2C总线的时钟控制方法,并不以产生低电平时钟使能信号作为SCL的当前时钟周期计数起点,而是在模拟电路经过延时将SCL拉至高电平,可获取到SCL跳变的高电平时钟数字信号时,开始计数SCL的当前时钟周期,从而可以使得SCL的当前时钟周期计数,能够考虑模拟电路拉高SCL至高电平的延时;基于此,在开始SCL的当前时钟周期计数时,本申请实施例先以高电平计数阈值进行计数,在计数值达到高电平计数阈值时,产生高电平时钟使能信号,以触发模拟电路将SCL拉至低电平,由于模拟电路拉低SCL至低电平的延时较小,因此本申请实施例可在产生高电平时钟使能信号后,以低电平计数阈值,继续计数SCL的当前时钟周期;从而在继续计数过程的计数值达到低电平计数阈值时,产生传输给SCL的低电平时钟使能信号,以使模拟电路再次将SCL拉至高电平,为了考虑模拟电路再次拉高SCL至高电平的延时,本申请实施例以下一次获取到SCL跳变的高电平时钟数字信号,作为计数SCL的下一次时钟周期的起点,从而使得SCL的每次时钟周期的计数,均能够考虑模拟电路拉高SCL至高电平的延时,可实现SCL时钟的准确控制。
可见,本申请实施例提供改进的I2C总线的时钟控制方法,可以在SCL的时钟控制过程中,考虑模拟电路拉高SCL至高电平的延时,实现I2C总线时钟的准确控制,保障I2C总线的数据传输实现。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为多个设备使用I2C总线连接的结构示例图;
图2为模拟电路的延时示例图;
图3为本申请实施例提供的多个设备使用I2C总线连接的结构示意图;
图4为本申请实施例提供的I2C总线的时钟控制方法的流程图;
图5为本申请实施例提供的I2C总线的时钟控制示例图;
图6为本申请实施例提供的I2C总线的时钟周期确定示例图;
图7为本申请实施例提供的主设备连接I2C总线的结构示意图;
图8为本申请实施例提供的I2C总线的时钟周期确定的另一示例图;
图9为本申请实施例提供的更新高电平计数阈值和低电平计数阈值的流程图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一电路实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
I2C总线由于接口简单,硬件实现较为容易等优势,已成为一种主流通信标准,并且应用在越来越多的设备间通讯的场景;I2C总线可以工作在三种速率模式下,分别为标准模式、快速模式和高速模式,I2C总线在三种速率模式下的数据传输速率依次升高;I2C总线是以串行的方式进行数据传输,发送方每传送一定量的数据,需要接受方回复响应,发送方从I2C总线上观测到响应后继续传输,若无响应则终止,这种方式保证数据传输的有效性。为便于理解I2C总线的运作原理,图1示出了多个设备使用I2C总线连接的结构示例,如图1所示:
I2C总线包括一条串行时钟线(SCL)和一条串行数据线(SDA),并且SCL和SDA分别通过上拉电阻连接到电源,其中,SCL用于传输时钟信号,SDA用于传输数据;图1中各设备可分别连接SCL和SDA,例如,设备可具有时钟引脚(图中未示出)和数据引脚(图中未示出),设备可通过时钟引脚连接到SCL,通过数据引脚连接到SDA;通过仲裁等方式,多个设备中的一个设备可获得I2C总线的控制权,获得I2C总线控制权的设备可称为主设备(任一时刻只允许一个设备成为主设备),被主设备访问的其他设备可称为从设备;需要说明的是,为便于示例,图1仅示出了一个主设备和一个从设备,而在实际使用过程中,从设备的数量可以为多个;
主设备和从设备在SDA传输数据受SCL的时钟控制,具体的,SDA上的数据仅在SCL处于低电平期间才可改变,而SCL处于高电平期间时,SDA的电平状态改变被用来表示I2C总线传输数据的起始条件和终止条件,如在SCL调整为高电平时,SDA的电平由高至低,满足I2C总线传输数据的起始条件,开始数据传输,而在SCL再次调整为高电平时,SDA的电平由低至高,满足I2C总线终止传输数据的终止条件,终止数据传输;
进一步结合图1所示,主设备可产生传输给SCL的数字形式的时钟使能信号(如图1所示clk_oe),以调整SCL的电平状态,具体的,当时钟使能信号clk_oe为低电平(如clk_oe为0)时,SCL被上拉电阻拉高为高电平,当时钟使能信号clk_oe为高电平(如clk_oe为1)时,SCL被拉低为低电平;为保障主设备和从设备能够检测SCL的电平状态,SCL在接收到时钟使能信号clk_oe并调整电平状态后,可向主设备和从设备传输作为应答的时钟数字信号(如图1所示clk_in),时钟数字信号clk_in可以为数字形式;具体的,在SCL调整为高电平时,SCL可向主设备和从设备传输高电平时钟数字信号(如clk_in为1),在SCL调整为低电平时,SCL可向主设备和从设备传输低电平时钟数字信号(如clk_in为0);同理,主设备也会向SDA传输数字形式的数据使能信号(如图1所示data_oe),从而控制SDA的电平状态调整,SDA在执行电平状态调整后,也会向主设备和从设备传输数据数字信号(如图1所示data_in)。
在更为具体的说明中,时钟使能信号clk_oe由主设备的数字逻辑电路产生,而SCL的电平状态跳变由I2C总线的模拟电路执行,该模拟电路包括上拉电阻,控制电路等,如在拉高SCL的电平时,SCL是被上拉电阻拉高为高电平;本申请的发明人发现:由于模拟电路的内部属性、走线、电容充放电等因素影响,数字逻辑电路产生时钟使能信号clk_oe后,模拟电路并不是立即完成SCL的电平状态跳变,而是在一定的延时后,才完成SCL的电平状态跳变;也就是说,主设备产生时钟使能信号clk_oe至模拟电路完成SCL的电平状态跳变存在延时,这种延时在模拟电路拉高SCL至高电平的情况下尤为明显;
为便于理解上述说明的延时,如图2所示,在产生低电平时钟使能信号(如clk_oe为0),以触发SCL跳变至高电平时,SCL并不是立即输出高电平时钟数字信号(如clk_in为1),而是在一定延时后,输出高电平时钟数字信号;这种情况主要是由模拟电路拉高SCL至高电平的延时所带来,由图2可以看出,模拟电路拉高SCL至高电平的延时非常明显;由图2还可以看出,在产生高电平时钟使能信号(如clk_oe为1),以触发SCL跳变至低电平时,虽然SCL输出低电平时钟数字信号(如clk_in为0)也会存在一定的延时,但模拟电路拉低SCL至低电平的延时相对较小,一般不需考虑。
通过上述描述,可以看出,模拟电路拉高SCL至高电平的延时极为明显,然而目前在对SCL进行时钟控制时,并没有考虑这种延时,这无疑无法准确实现SCL的时钟控制,尤其是在I2C总线的高速模式下,由于高速模式的数据传输速率较快,这种延时在SCL的时钟周期中存在较大的占比,会极大影响SCL的时钟频率和占空比,进而影响I2C总线的数据传输实现。基于此,本申请实施例提供I2C总线的时钟控制方法,以在SCL的时钟控制过程中,考虑模拟电路拉高SCL至高电平的延时,从而准确实现I2C总线的时钟控制,保障I2C总线的数据传输。
在可选实现中,图3示出了本申请实施例提供的多个设备使用I2C总线连接的结构示意,结合图1和图3所示,主设备中设置有数字逻辑电路10,数字逻辑电路10中设置有时钟产生电路11,以产生时钟使能信号clk_oe并传输给SCL,同时,接收SCL电平状态跳变时所应答的时钟数字信号clk_in;
在本申请实施例中,时钟产生电路11中设置有第一计数器111,时钟产生电路11可使用第一计数器111,以数字逻辑电路中的高频时钟作为时间基准进行计数;
如图3所示,主设备的数字逻辑电路10中进一步设置第一寄存器12和第二寄存器13,其中,第一寄存器12用于记录低电平计数阈值lcnt,第二寄存器13用于记录高电平计数阈值hcnt;在可选实现中,数字逻辑电路10可设置寄存器组,第一寄存器12和第二寄存器13可以是寄存器组中的寄存器;
在本申请实施例中,第一寄存器12和第二寄存器13可与时钟产生电路11相通信,以使得时钟产生电路11可读取第一寄存器12记录的低电平计数阈值lcnt,和第二寄存器13记录的高电平计数阈值hcnt;在可选实现中,第一寄存器12和第二寄存器13可通过APB(Advanced Peripheral Bus,先进的外围总线)协议,将低电平计数阈值lcnt和高电平计数阈值hcnt传输至时钟产生电路11;
低电平计数阈值lcnt可以是触发时钟产生电路产生低电平时钟使能信号的计数限值,高电平计数阈值hcnt可以是触发时钟产生电路产生高电平时钟使能信号的计数限值;在本申请实施例中,第一计数器的计数值达到低电平计数阈值lcnt时,时钟产生电路产生低电平时钟使能信号,以触发SCL的电平状态调整为高电平,第一计数器的计数值达到高电平计数阈值时,时钟产生电路产生高电平时钟使能信号,以触发SCL的电平状态调整为低电平,以此重复。
在I2C总线的工作流程中,I2C总线开始启动工作时,第一计数器可先进行低电平计数阈值lcnt的计数,当第一计数器的计数值到达低电平计数阈值lcnt时,时钟产生电路产生低电平时钟使能信号并传输给SCL,以触发SCL的电平状态调整为高电平;如前文所述,低电平时钟使能信号产生后,模拟电路拉高SCL至高电平存在明显的延时,为考虑模拟电路拉高SCL至高电平的延时,在本申请实施例中,第一计数器可以时钟产生电路接收到SCL跳变的高电平时钟数字信号,作为SCL一次时钟周期的计数起点,而不以产生低电平时钟使能信号作为SCL一次时钟周期的计数起点,从而在SCL的时钟控制过程中,考虑模拟电路拉高SCL至高电平的延时,以准确实现I2C总线的时钟控制。
基于上述思路,在可选实现中,图4示出了本申请实施例提供的I2C总线的时钟控制方法的可选流程,可选的,该方法流程可由图3所示的主设备执行实现,如由主设备中的数字逻辑电路基于第一计数器的计数值,实现I2C总线的时钟控制;如图4所示,本申请实施例提供的方法流程可以包括:
步骤S100、启动I2C总线开始工作,产生传输给SCL的低电平时钟使能信号。
可选的,启动I2C总线开始工作时,时钟使能信号clk_oe默认为低电平,从而在启动I2C总线开始工作时,主设备可产生传输给SCL的低电平时钟使能信号;可选的,I2C总线开始工作可由I2C总线开始工作指令触发,从而主设备在获取到I2C总线开始工作指令后,可产生传输给SCL的低电平时钟使能信号(如clk_oe的值为0),以触发SCL的电平状态调整为高电平;在更为具体的可选实现中,由于低电平时钟使能信号由低电平计数阈值lcnt触发,本申请实施例可在主设备获取到I2C总线开始工作指令后进行计数,当计数值达到低电平计数阈值lcnt时,可产生低电平时钟使能信号并传输给SCL,以触发SCL的电平状态调整为高电平。
在可选实现中,步骤S100可由图3所示主设备中的数字逻辑电路实现,例如,数字逻辑电路在获取到I2C总线开始工作指令时,可使第一计数器进行计数,当第一计数器的计数值达到第一寄存器记录的低电平计数阈值lcnt时,数字逻辑电路的时钟产生电路产生低电平时钟使能信号,并传输给SCL。
步骤S110、获取SCL跳变的高电平时钟数字信号,开始计数SCL的当前时钟周期。
SCL接收低电平时钟使能信号时,模拟电路可将SCL的电平状态由低电平拉至高电平,从而在SCL的电平状态跳变至高电平时,SCL的时钟数字信号跳变为高电平(如clk_in为1),此时,SCL可向连接于I2C总线的主设备和从设备传输跳变的高电平时钟数字信号;
如前文所述,SCL在接收低电平时钟使能信号时,模拟电路拉高SCL至高电平存在延时,因此在本申请实施例中,SCL的当前时钟周期计数并不是以产生低电平时钟使能信号为起点,而是以主设备接收到SCL跳变的高电平时钟数字信号作为起点;可以理解的是,由于模拟电路的延时,低电平时钟使能信号在经过一段延时后才能作用于SCL,使得SCL的电平状态出现上升沿,因此模拟电路拉高SCL至高电平的延时可体现在跳变的高电平clk_in上,从而本申请实施例以时钟数字信号clk_in的上升沿(如clk_in跳变为1)作为SCL的当前时钟周期计数的起点,即获取到SCL跳变的高电平时钟数字信号时,开始计数SCL的当前时钟周期,使得SCL的当前时钟周期计数,考虑到模拟电路拉高SCL至高电平的延时。
在可选实现中,步骤S110可由图3所示主设备中的数字逻辑电路实现,例如,数字逻辑电路中的时钟产生电路在获取SCL跳变的高电平时钟数字信号时,可使第一计数器开始计数SCL的当前时钟周期。
步骤S120、当计数值达到高电平计数阈值时,产生传输给SCL的高电平时钟使能信号,并继续计数SCL的当前时钟周期。
在开始计数SCL的当前时钟周期时,本申请实施例可先进行高电平计数阈值的计数,从而在计数值达到高电平计数阈值hcnt时,主设备可产生高电平时钟使能信号(如clk_oe为1)并传输给SCL,以触发SCL的电平状态调整为低电平,从而连接于I2C总线的设备可在SCL处于低电平期间,通过SDA进行数据传输。
在SCL获取高电平时钟使能信号时,SCL可被模拟电路由高电平拉至低电平,并向主设备传输低电平时钟数字信号,由于这个过程中模拟电路拉低SCL至低电平的延时相对较小,因此本申请实施例可不予考虑,从而主设备可在产生高电平时钟使能信号后,继续计数SCL的当前时钟周期。
在可选实现中,步骤S120可由图3所示主设备中的数字逻辑电路实现,例如,数字逻辑电路的时钟产生电路在第一计数器的计数值达到高电平计数阈值时,产生传输给SCL的高电平时钟使能信号,并使第一计数器继续计数SCL的当前时钟周期。
步骤S130、当继续计数过程的计数值达到低电平计数阈值时,产生传输给SCL的低电平时钟使能信号,并在下一次获取SCL跳变的高电平时钟数字信号时,开始计数SCL的下一次时钟周期。
在主设备产生传输给SCL的高电平时钟使能信号后,可以低电平计数阈值继续计数SCL的当前时钟周期,从而继续计数过程的计数值达到低电平计数阈值时,主设备可产生低电平时钟使能信号(如clk_oe为0)并传输给SCL,以触发SCL的电平状态调整为高电平;可以理解的是,主设备再次向SCL传输低电平时钟使能信号,以触发SCL拉至高电平的过程中,仍然存在模拟电路的延时,因此在进行SCL下一次时钟周期的计数时,本申请实施例仍以主设备下一次获取SCL跳变的高电平时钟数字信号作为起点。SCL的下一次时钟周期的计数过程可同理参照本申请实施例的上文描述实现,并以此重复,从而产生准确的SCL时钟。
需要说明的是,继续计数过程的计数值指的是继续计数这一过程所计数的数值,在可能的实现中,本申请实施例在产生高电平时钟使能信号后,可使第一计数器从1开始继续计数SCL的当前时钟周期;在其他可能的实现中,本申请实施例也可在产生高电平时钟使能信号后,使第一计数器在已有计数值的基础上继续计数SCL的时钟周期,从而继续计数过程的计数值指的是去除已有计数值后的计数值。
在可选实现中,步骤S130可由图3所示主设备中的数字逻辑电路实现,例如,数字逻辑电路的时钟产生电路在第一计数器继续计数过程的计数值达到低电平计数阈值时,产生传输给SCL的低电平时钟使能信号,并在下一次获取SCL跳变的高电平时钟数字信号时,使第一计数器计数SCL的下一次时钟周期。
为便于理解,图5示出了本申请实施例提供的I2C总线的时钟控制示例,以使用图3所示结构实现时钟控制,且数值0表示低电平,数值1表示高电平为例,结合图3和图5所示,在I2C总线开始工作时,第一计数器先以低电平计数阈值lcnt进行计数,当计数值达到低电平计数阈值lcnt时,产生数值为0的时钟使能信号clk_oe;由于在数值0的clk_oe传输至SCL后,模拟电路拉高SCL的电平状态存在延时,因此在产生数值0的clk_oe时,不进行SCL的当前时钟周期计数,而是在SCL的时钟数字信号clk_in跳变为数值1时,开始SCL的当前时钟周期的计数;
如图5所示,在SCL的当前时钟周期计数中,先以高电平计数阈值hcnt进行计数,当计数值达到高电平计数阈值hcnt时,产生数值为1的时钟使能信号clk_oe;由于产生数值为1的时钟使能信号clk_oe后,SCL产生数值为0的时钟数字信号clk_in的延时较短,本申请实施例可不予考虑,从而第一计数器的计数值可从1开始,继续以低电平计数阈值lcnt,计数SCL的当前时钟周期;
当第一计数器继续计数过程的计数值达到低电平计数阈值lcnt时,产生数值为0的钟使能信号clk_oe,由于在数值0的clk_oe传输至SCL后,模拟电路拉高SCL的电平状态仍然存在延时,因此在经过模拟电路的延时,SCL的时钟数字信号clk_in跳变为数值1时,第一计数器可开始计数SCL的下一次时钟周期,以此重复,从而准确实现SCL的时钟控制;
可以看出,在本申请实施例中,第一计数器以低电平计数阈值lcnt进行计数可以是在获取到I2C总线开始工作指令时,也可以是在主设备产生高电平时钟使能信号时;也就是说,在I2C总线开始工作时,第一计数器先以低电平计数阈值lcnt进行计数,并在计数值达到低电平计数阈值lcnt时,主设备产生低电平时钟使能信号;而在I2C总线工作后,主设备以获取到高电平时钟数字信号作为SCL的一次时钟周期计数起点,并且第一计数器先以高电平计数阈值hcnt进行计数,如果计数值达到高电平计数阈值hcnt,主设备产生高电平时钟使能信号,且第一计数器以低电平计数阈值lcnt,继续计数SCL的时钟周期,以此重复。
本申请实施例提供的I2C总线的时钟控制方法,并不以产生低电平时钟使能信号作为SCL的当前时钟周期计数起点,而是在模拟电路经过延时将SCL拉至高电平,可获取到SCL跳变的高电平时钟数字信号时,开始计数SCL的当前时钟周期,从而可以使得SCL的当前时钟周期计数,能够考虑模拟电路拉高SCL至高电平的延时;基于此,在开始SCL的当前时钟周期计数时,本申请实施例先以高电平计数阈值进行计数,在计数值达到高电平计数阈值时,产生高电平时钟使能信号,以触发模拟电路将SCL拉至低电平,由于模拟电路拉低SCL至低电平的延时较小,因此本申请实施例可在产生高电平时钟使能信号后,以低电平计数阈值,继续计数SCL的当前时钟周期;从而在继续计数过程的计数值达到低电平计数阈值时,产生传输给SCL的低电平时钟使能信号,以使模拟电路再次将SCL拉至高电平,为了考虑模拟电路再次拉高SCL至高电平的延时,本申请实施例以下一次获取到SCL跳变的高电平时钟数字信号,作为计数SCL的下一次时钟周期的起点,从而使得SCL的每次时钟周期的计数,均能够考虑模拟电路拉高SCL至高电平的延时,可准确实现SCL时钟控制。
可见,本申请实施例提供改进的I2C总线的时钟控制方法,可以在SCL的时钟控制过程中,考虑模拟电路拉高SCL至高电平的延时,可准确实现I2C总线的时钟控制,保障I2C总线的数据传输实现。
上文描述的I2C总线的时钟控制方法中,本申请实施例以SCL跳变的高电平时钟数字信号,作为SCL的当前时钟周期的计数起点,并在SCL的当前时钟周期内,先以高电平计数阈值产生高电平时钟使能信号,再以低电平计数阈值产生低电平时钟使能信号,以此重复,实现了SCL的时钟准确控制;在此基础上,本申请实施例还可提供确定SCL的当前时钟周期值的方案,以在考虑模拟电路延时的情况下,提供SCL当前时钟周期的数值;可选的,一方面,本申请实施例可由图3所示时钟产生电路基于第一计数器的计数,确定SCL的当前时钟周期值,另一方面,本申请实施例可在图3所示数字逻辑电路中增设频率检测电路,该频率检测电路可设置第二计数器,从而频率检测电路可基于第二计数器的计数,确定SCL的当前时钟周期值;下文将对上述两种确定SCL的当前时钟周期值的方案分别进行描述。
由于时钟产生电路的第一计数器可在SCL跳变到高电平时钟数字信号时,开始计数SCL的当前时钟周期,而当计数值达到高电平计数阈值时,产生传输给SCL的高电平时钟使能信号,并且第一计数器继续计数SCL的当前时钟周期,在继续计数过程的计数值达到低电平计数阈值时,产生传输给SCL的低电平时钟使能信号,因此在第一计数器已计数高电平计数阈值的高电平计数时间,低电平计数阈值的低电平计数时间的基础上,本申请实施例只需使得第一计数器继续计数模拟电路拉高SCL至高电平的延时时间,则可通过将第一计数器计数高电平计数阈值的高电平计数时间,计数低电平计数阈值的低电平计数时间,以及计数的所述延时时间相加,得到SCL的当前时钟周期值;
在本申请实施例中,时钟产生电路产生低电平时钟使能信号,以触发SCL调整电平状态为高电平时,模拟电路拉高SCL至高电平的延时时间可以表示为:时钟产生电路产生传输给SCL的低电平时钟使能信号,至获取到SCL跳变的高电平时钟数字信号的时间;
基于此,本申请实施例可在产生传输给SCL的低电平时钟使能信号后,继续计数SCL的当前时钟周期,直至下一次获取到SCL跳变的高电平时钟数字信号;从而在开始计数SCL的当前时钟周期后,确定计数值达到高电平计数阈值的高电平计数时间,继续计数过程的计数值达到低电平计数阈值的低电平计数时间,以及,产生所述低电平时钟使能信号至下一次获取到SCL跳变的高电平时钟数字信号的延时时间;进而将所述高电平计数时间,所述低电平计数时间和所述延时时间相加,得到SCL的当前时钟周期值;
为便于理解上述确定SCL的当前时钟周期值的过程,结合图5和图6所示,时钟产生电路获取到SCL跳变的高电平时钟数字信号,第一计数器开始计数SCL的当前时钟周期,在第一计数器已计数高电平计数阈值hcnt和低电平计数阈值lcnt的基础上,本申请实施例可在时钟产生电路产生低电平时钟使能信号时,由第一计数器继续进行计数,直至获取到SCL跳变到高电平的高电平数字信号时,开始计数下一次时钟周期,从而第一计数器可在时钟产生电路产生低电平时钟使能信号后,继续计数出产生低电平时钟使能信号至SCL跳变产生高电平数字信号的延时时间;进而将高电平计数时间,低电平计数时间和所述延时时间相加,得到SCL的当前时钟周期值;
可以看出,在本申请实施例中,SCL的一次时钟周期可以认为是:在考虑模拟电路延时的情况下,SCL相邻两次跳变至高电平的时间间隔,并且SCL的一次时钟周期以SCL跳变至高电平作为起点进行计数;如图6所示,在考虑模拟电路延时的情况下,SCL的一次时钟周期可以表示为:T=thcnt+tlcnt+tdelay;在计数SCL的一次时钟周期过程中,thcnt表示第一计数器在高电平计数阈值对应的高电平计数时间,tlcnt表示第一计数器在低电平计数阈值对应的低电平计数时间,tdelay表示第一计数器计数的延时时间,即一次时钟周期中,模拟电路拉高SCL至高电平的延时时间,具体可以是一次时钟周期中,产生低电平时钟使能信号至获取到SCL跳变的高电平时钟数字信号的延时时间。需要说明的是,上述的SCL的时钟周期表示公式并不考虑rising time和falling time,需要解释的是,信号翻转时,信号会经过一段时间的爬升或下降才能到跳变,rising time指的是信号翻转时的爬升时间,fallingtime指的是信号翻转时的下降时间。
在另一种可选实现中,本申请实施例可在数字逻辑电路中增设频率检测电路,以由频率检测电路中设置的第二计数器,对SCL的高、低电平跳变进行计数,从而将计数的SCL相邻两次跳变至高电平时钟数字信号的间隔时间,作为SCL的当前时钟周期值;可选的,结合图3和图7所示,本申请实施例提供的主设备的数字逻辑电路10中还设置有频率检测电路14,频率检测电路14中设置有第二计数器141,该第二计数器可以数字逻辑电路中的高频时钟作为时间基准进行计数;从而频率检测电路可被设置为能够检测SCL的时钟数字信号clk_in,进而,频率检测电路可基于高频时钟(即以高频时钟为基准),使用第二计数器对SCL跳变的高电平时钟数字信号,低电平时钟数字信号进行计数,确定出SCL相邻两次跳变至高电平时钟数字信号的间隔时间,得到SCL的当前时钟周期值;
为便于理解上述由频率检测电路确定SCL的当前时钟周期值的过程,如图8所示,在时钟产生电路的第一计数器,基于高电平计数阈值hcnt和低电平计数阈值lcnt,产生高电平时钟使能信号和低电平时钟使能信号,实现SCL的时钟控制的基础上,频率检测电路中的第二计数器可以数字逻辑电路中的高频时钟为基准时间进行计数,从而在检测SCL的时钟数字信号的基础上,计数SCL相邻两次跳变至高电平时钟数字信号的间隔时间,得出SCL的当前时钟周期值。
本申请实施例提供的I2C总线的时钟控制方法,可在考虑模拟电路的延时,实现准确控制SCL的时钟的基础上,提供SCL每次的时钟周期数值,所提供的SCL的时钟周期数值可以具有多种后续应用,本申请实施例并不设限。在其中一种SCL的时钟周期数值的可选应用中,本申请实施例可利用SCL的当前时钟周期值,进行高电平计数阈值hcnt和低电平计数阈值lcnt的更新,以使得SCL的下一次时钟周期值能够更趋于理想状态,下面将对此进行说明。
由于在I2C总线工作后,主设备产生高电平时钟使能信号是由高电平计数阈值触发,产生低电平时钟使能信号是由低电平计数阈值触发,因此准确设置高电平计数阈值和低电平计数阈值,使得SCL保持恒定的占空比和时钟频率,对于进一步可靠稳定的实现I2C总线的时钟控制具有重要意义;基于此,本申请实施例进一步提供更新高电平计数阈值和低电平计数阈值的方案,以使得I2C总线的时钟频率能够自适应调整,以使得SCL保持恒定的占空比和时钟频率;
可选的,图9示出了本申请实施例提供的更新高电平计数阈值和低电平计数阈值的可选流程,该流程可由图3或图7所示主设备执行实现,例如,主设备可通过图9所示流程,对第一寄存器和第二寄存器中记录的低电平计数阈值和高电平计数阈值进行更新,以保持SCL具有恒定的占空比和时钟频率;如图9所示,该流程可以包括:
步骤S200、确定SCL的当前时钟周期值。
确定SCL的当前时钟周期值的方式可以参照前文提供的可能方式,本申请实施例在此不再赘述。
步骤S210、比对当前时钟周期值与预设的时钟周期理想值的差值。
时钟周期理想值可以认为是预先设置的理想的时钟周期数值,可选的,时钟周期理想值可记录在寄存器组中的寄存器中;SCL的时钟周期值达到时钟周期理想值,则认为SCL具有理想的恒定占空比和时钟频率,因此本申请实施例在确定SCL的当前时钟周期值后,可比对当前时钟周期值与时钟周期理想值,确定出当前时钟周期值与时钟周期理想值的差值,从而得到当前时钟周期值与时钟周期理想值之间的差异,该差异主要是由模拟电路的延时带来。在可选实现中,本申请实施例可将当前时钟周期值减去时钟周期理想值,得到所述差值。
可选的,如果本申请实施例由时钟产生电路中的第一计数器,继续计数模拟电路拉高SCL至高电平的延时时间,从而由时钟产生电路确定SCL的当前时钟周期值,则步骤S210可由时钟产生电路执行,即时钟产生电路可在确定SCL的当前时钟周期值后,比对所述当前时钟周期值与时钟周期理想值的差值;如果本申请实施例由频率检测电路通过第二计数器,确定SCL的当前时钟周期值,则本申请实施例可由频率检测电路执行步骤S210,即在频率检测电路确定SCL的当前时钟周期值后,比对所述当前时钟周期值与时钟周期理想值的差值。
步骤S220、根据所述差值,更新高电平计数阈值和低电平计数阈值。
在得到当前时钟周期值与时钟周期理想值的差值后,本申请实施例可基于所述差值,对高电平计数阈值和低电平计数阈值进行更新,以使得基于更新后的高电平计数阈值和低电平计数阈值,所确定的下一次时钟周期的数值可趋近于时钟周期理想值。
在可选实现中,本申请实施例可基于所述差值以及高频时钟的周期确定更新值,从而基于所述更新值,更新高电平计数阈值和低电平计数阈值;在更为具体的可选实现中,本申请实施例可将所述差值除以高频时钟的周期,得到所述更新值,具体公式可如下所示:
Figure BDA0002653219780000161
其中,n表示所述更新值,Ti2c_clk表示高频时钟的周期,Δt表示当前时钟周期值与时钟周期理想值的差值。
在可选实现中,如果所述差值为当前时钟周期值减去时钟周期理想值后的数值,则Δt可以表示为Δt=T-T0,其中,T为当前时钟周期值,T0为时钟周期理想值;可见,所述差值存在正值或者负值的情况,如果所述差值为正值,则说明当前时钟周期值较大,需要降低SCL的时钟周期数值,此时,所述差值可以认为是高电平计数阈值和低电平计数阈值需的总数值,从而本申请实施例可根据所述差值,减少高电平计数阈值和低电平计数阈值的数值,以使得高电平计数阈值和低电平计数阈值减少的总数值等于所述差值,高电平计数阈值和低电平计数阈值各自具体减少的数值可视SCL要求的占空比而定,本申请实施例对此并不设限,只要高电平计数阈值和低电平计数阈值减少的总数值等于所述差值即可;
如果所述差值为负值,说明当前时钟周期值较小,需要升高SCL的时钟周期数值,此时,所述差值可以认为是高电平计数阈值和低电平计数阈值需增加的总数值,从而本申请实施例可根据所述差值,增加高电平计数阈值和低电平计数阈值的数值,以使得高电平计数阈值和低电平计数阈值增加的总数值等于所述差值,高电平计数阈值和低电平计数阈值各自具体增加的数值可视SCL要求的占空比而定,本申请实施例对此并不设限,只要高电平计数阈值和低电平计数阈值增加的总数值等于所述差值即可。
在其他可能的实现中,本申请实施例在确定当前时钟周期值与时钟周期理想值的差值后,并不一定都需要更新高电平计数阈值和低电平计数阈值,例如本申请实施例可设置允许的差值阈值,如果所述差值不大于所述差值阈值,则认为当前时钟周期值与时钟周期理想值的差异较小,SCL在当前时钟周期下已具有较为理想的占空比和时钟频率,可不更新高电平计数阈值和低电平计数阈值;而如果所述差值大于所述差值阈值,则认为当前时钟周期值与时钟周期理想值的差异较大,需对高电平计数阈值和低电平计数阈值进行更新,才能使得SCL具有较为理想的占空比和时钟频率。
在可选实现中,步骤S220可由时钟产生电路执行,时钟产生电路可基于所述差值,对第一寄存器和第二寄存器中记录的低电平计数阈值和高电平计数阈值进行更新;如果是由频率检测电路确定SCL的当前时钟周期值,并比对当前时钟周期值与时钟周期理想值的差值,则频率检测电路可将所述差值传输给时钟产生电路,以由时钟产生电路根据所述差值,更新高电平计数阈值和低电平计数阈值。
本申请实施例在确定当前时钟周期值后,可基于当前时钟周期值与时钟周期理想值的差值,对高电平计数阈值和低电平计数阈值进行更新,由于时钟产生电路的高电平时钟使能信号由高电平计数阈值触发,低电平时钟使能信号由低电平计数阈值触发,因此基于更新后的高电平计数阈值和低电平计数阈值,所确定的下一次时钟周期的数值能够趋近于时钟周期理想值,从而使得SCL的占空比和时钟频率能够保持平衡和理想状态。
当然,在其他可能的实现中,本申请实施例也可人为修改调整高电平计数阈值和低电平计数阈值。
本申请实施例可通过更新高电平计数阈值和低电平计数阈值,对SCL的时钟周期进行自适应调整,从而在准确实现SCL的时钟控制基础上,进一步实现可靠稳定的SCL时钟控制。
本申请实施例还提供一种主设备,该主设备可通过数字逻辑电路,执行本申请实施例提供的I2C总线的时钟控制方法,以准确控制SCL时钟;结合图3所示,该主设备可以包括:数字逻辑电路;所述数字逻辑电路可以包括时钟产生电路,记录低电平计数阈值的第一寄存器和记录高电平计数阈值的第二寄存器;所述时钟产生电路可以包括用于计数的第一计数器;
在本申请实施例中,所述时钟产生电路被配置为:
获取SCL跳变的高电平时钟数字信号,使第一计数器开始计数SCL的当前时钟周期;
当第一计数器的计数值达到第二寄存器记录的高电平计数阈值时,产生传输给SCL的高电平时钟使能信号,并使第一计数器继续计数SCL的当前时钟周期,所述高电平时钟使能信号用于触发SCL的电平状态调整为低电平;
当第一计数器继续计数过程的计数值达到低电平计数阈值时,产生传输给SCL的低电平时钟使能信号,在下一次获取SCL跳变的高电平时钟数字信号时,使第一计数器开始计数SCL的下一次时钟周期,所述低电平时钟使能信号用于触发SCL的电平状态调整为高电平。
可选的,所述时钟产生电路在获取SCL跳变的高电平时钟数字信号之前,还被配置为:
在获取到I2C总线开始工作指令后,使第一计数器进行计数,当第一计数器的计数值达到低电平计数阈值时,产生传输给SCL的低电平时钟使能信号,以触发SCL的电平状态调整为高电平。
可选的,所述时钟产生电路被配置为使第一计数器继续计数SCL的当前时钟周期,具体包括:
使第一计数器的计数值从1开始继续计数SCL的当前时钟周期。
本申请实施例还可提供SCL的当前时钟周期的数值,在一种可选实现中,本申请实施例可由频率检测电路确定SCL的当前时钟周期的数值;可选的,结合图7所示,所述数字逻辑电路还可以包括:频率检测电路;所述频率检测电路包括用于计数的第二计数器;
所述频率检测电路被配置为:基于高频时钟,使用第二计数器计数SCL相邻两次跳变至高电平时钟数字信号的间隔时间,得到SCL的当前时钟周期值。
在另一种可选实现中,本申请实施例可由时钟产生电路确定SCL的当前时钟周期的数值,可选的,所述时钟产生电路还被配置为:
在产生传输给SCL的低电平时钟使能信号后,使第一计数器继续计数SCL的当前时钟周期,直至下一次获取到SCL跳变的高电平时钟数字信号;
在开始计数SCL的当前时钟周期后,确定第一计数器的计数值达到高电平计数阈值的高电平计数时间,第一计数器继续计数过程的计数值达到低电平计数阈值的低电平计数时间,以及,第一计数器在产生所述低电平时钟使能信号至下一次获取到SCL跳变的高电平时钟数字信号的计数过程的延时时间;
将所述高电平计数时间,所述低电平计数时间和所述延时时间相加,得到SCL的当前时钟周期值。
基于所确定的SCL的当前时钟周期值,本申请实施例可对第一寄存器记录的低电平计数阈值和第二寄存器记录的高电平计数阈值进行更新,以实现SCL的时钟频率更新;可选的,如果由频率检测电路确定SCL的当前时钟周期值,则所述频率检测电路还被配置为:比对当前时钟周期值与预设的时钟周期理想值的差值,将所述差值传输给所述时钟产生电路;
如果由时钟产生电路确定SCL的当前时钟周期值,则所述时钟产生电路还被配置为:比对当前时钟周期值与预设的时钟周期理想值的差值。
进而,在时钟产生电路获取到当前时钟周期值与时钟周期理想值的差值后,时钟产生电路还可被配置为:根据所述差值,更新高电平计数阈值和低电平计数阈值。
可选的,所述时钟产生电路被配置为根据所述差值,更新高电平计数阈值和低电平计数阈值,具体包括:
根据所述差值以及高频时钟的周期确定更新值;
根据所述更新值,更新高电平计数阈值和低电平计数阈值。
可选的,所述时钟产生电路被配置为根据所述更新值,更新高电平计数阈值和低电平计数阈值,具体包括:
如果所述差值为正值,根据所述差值,减少所述高电平计数阈值和所述低电平计数阈值的数值,以使所述高电平计数阈值和所述低电平计数阈值减少的总数值等于所述差值;
如果所述差值为负值,根据所述差值,增加所述高电平计数阈值和所述低电平计数阈值的数值,以使得所述高电平计数阈值和所述低电平计数阈值增加的总数值等于所述差值。
本申请实施例提供的主设备可以在SCL的时钟控制过程中,考虑模拟电路拉高SCL至高电平的延时,从而准确实现I2C总线的时钟控制,保障I2C总线的数据传输实现;并且,进一步的,主设备还可提供SCL的当前时钟周期的数值;基于SCL的当前时钟周期值,主设备可基于当前时钟周期值与时钟周期理想值的差值,更新高电平计数阈值和低电平计数阈值,从而对SCL的时钟周期进行自适应调整,以使得SCL的时钟周期趋于理想状态,可进一步实现可靠稳定的SCL时钟控制。
本申请实施例还提供一种连接I2C总线的设备系统,结合图3和图7所示,该设备系统可以包括:I2C总线,连接于I2C总线的从设备和主设备,该主设备可以如上文所述的主设备,本申请实施例不再进一步赘述。本申请实施例提供的设备系统,可在准确控制SCL时钟的基础上,实现数据传输。
上文描述了本申请实施例提供的多个实施例方案,各实施例方案介绍的各可选方式可在不冲突的情况下相互结合、交叉引用,从而延伸出多种可能的实施例方案,这些均可认为是本申请实施例披露、公开的实施例方案。
虽然本申请实施例披露如上,但本申请并非限定于此。任何本领域技术人员,在不脱离本申请的精神和范围内,均可作各种更动与修改,因此本申请的保护范围应当以权利要求所限定的范围为准。

Claims (16)

1.一种I2C总线的时钟控制方法,其特征在于,包括:
获取串行时钟线SCL跳变的高电平时钟数字信号,开始计数SCL的当前时钟周期;
当计数值达到高电平计数阈值时,产生传输给SCL的高电平时钟使能信号,并继续计数SCL的当前时钟周期,所述高电平时钟使能信号用于触发SCL的电平状态调整为低电平;
当继续计数过程的计数值达到低电平计数阈值时,产生传输给SCL的低电平时钟使能信号,在下一次获取SCL跳变的高电平时钟数字信号时,开始计数SCL的下一次时钟周期,使得计数SCL的时钟周期考虑到模拟电路拉高SCL至高电平的延时,以实现SCL时钟的准确控制,所述低电平时钟使能信号用于触发SCL的电平状态调整为高电平;
其中,SCL的时钟数字信号用于控制串行数据线SDA进行数据传输。
2.根据权利要求1所述的I2C总线的时钟控制方法,其特征在于,在获取串行时钟线SCL跳变的高电平时钟数字信号之前,还包括:
在获取到I2C总线开始工作指令后进行计数,当计数值达到低电平计数阈值时,产生传输给SCL的低电平时钟使能信号,以触发SCL的电平状态调整为高电平。
3.根据权利要求1-2任一项所述的I2C总线的时钟控制方法,其特征在于,所述继续计数SCL的当前时钟周期包括:
计数值从1开始继续计数SCL的当前时钟周期。
4.根据权利要求1所述的I2C总线的时钟控制方法,其特征在于,还包括:
确定SCL的当前时钟周期值。
5.根据权利要求4所述的I2C总线的时钟控制方法,其特征在于,还包括:
在产生传输给SCL的低电平时钟使能信号后,继续计数SCL的当前时钟周期,直至下一次获取到SCL跳变的高电平时钟数字信号;
所述确定SCL的当前时钟周期值包括:
在开始计数SCL的当前时钟周期后,确定计数值达到高电平计数阈值的高电平计数时间,继续计数过程的计数值达到低电平计数阈值的低电平计数时间,以及,产生所述低电平时钟使能信号至下一次获取到SCL跳变的高电平时钟数字信号的延时时间;
将所述高电平计数时间,所述低电平计数时间和所述延时时间相加,得到SCL的当前时钟周期值。
6.根据权利要求4所述的I2C总线的时钟控制方法,其特征在于,所述确定SCL的当前时钟周期值包括:
基于高频时钟,计数SCL相邻两次跳变至高电平时钟数字信号的间隔时间,得到SCL的当前时钟周期值。
7.根据权利要求4-6任一项所述的I2C总线的时钟控制方法,其特征在于,还包括:
比对当前时钟周期值与预设的时钟周期理想值的差值;
根据所述差值,更新高电平计数阈值和低电平计数阈值。
8.一种主设备,其特征在于,包括:数字逻辑电路;所述数字逻辑电路包括时钟产生电路,记录低电平计数阈值的第一寄存器和记录高电平计数阈值的第二寄存器;所述时钟产生电路包括用于计数的第一计数器;
其中,所述时钟产生电路被配置为:
获取SCL跳变的高电平时钟数字信号,使第一计数器开始计数SCL的当前时钟周期;
当第一计数器的计数值达到第二寄存器记录的高电平计数阈值时,产生传输给SCL的高电平时钟使能信号,并使第一计数器继续计数SCL的当前时钟周期,所述高电平时钟使能信号用于触发SCL的电平状态调整为低电平;
当第一计数器继续计数过程的计数值达到低电平计数阈值时,产生传输给SCL的低电平时钟使能信号,在下一次获取SCL跳变的高电平时钟数字信号时,使第一计数器开始计数SCL的下一次时钟周期,使得计数SCL的时钟周期考虑到模拟电路拉高SCL至高电平的延时,以实现SCL时钟的准确控制,所述低电平时钟使能信号用于触发SCL的电平状态调整为高电平;
其中,SCL的时钟数字信号用于控制串行数据线SDA进行数据传输。
9.根据权利要求8所述的主设备,其特征在于,所述时钟产生电路在获取SCL跳变的高电平时钟数字信号之前,还被配置为:
在获取到I2C总线开始工作指令后,使第一计数器进行计数,当第一计数器的计数值达到低电平计数阈值时,产生传输给SCL的低电平时钟使能信号,以触发SCL的电平状态调整为高电平。
10.根据权利要求8-9任一项所述的主设备,其特征在于,所述时钟产生电路被配置为使第一计数器继续计数SCL的当前时钟周期,具体包括:
使第一计数器的计数值从1开始继续计数SCL的当前时钟周期。
11.根据权利要求8所述的主设备,其特征在于,所述数字逻辑电路还包括:频率检测电路;所述频率检测电路包括用于计数的第二计数器;
所述频率检测电路被配置为:基于高频时钟,使用第二计数器计数SCL相邻两次跳变至高电平时钟数字信号的间隔时间,得到SCL的当前时钟周期值。
12.根据权利要求11所述的主设备,其特征在于,所述频率检测电路还被配置为:比对当前时钟周期值与预设的时钟周期理想值的差值,将所述差值传输给所述时钟产生电路。
13.根据权利要求8所述的主设备,其特征在于,所述时钟产生电路还被配置为:
在产生传输给SCL的低电平时钟使能信号后,使第一计数器继续计数SCL的当前时钟周期,直至下一次获取到SCL跳变的高电平时钟数字信号;
在开始计数SCL的当前时钟周期后,确定第一计数器的计数值达到高电平计数阈值的高电平计数时间,第一计数器继续计数过程的计数值达到低电平计数阈值的低电平计数时间,以及,第一计数器在产生所述低电平时钟使能信号至下一次获取到SCL跳变的高电平时钟数字信号的计数过程的延时时间;
将所述高电平计数时间,所述低电平计数时间和所述延时时间相加,得到SCL的当前时钟周期值。
14.根据权利要求13所述的主设备,其特征在于,所述时钟产生电路还被配置为:比对当前时钟周期值与预设的时钟周期理想值的差值。
15.根据权利要求12或14所述的主设备,其特征在于,所述时钟产生电路还被配置为:根据所述差值,更新高电平计数阈值和低电平计数阈值。
16.一种连接I2C总线的设备系统,其特征在于,包括:I2C总线,连接I2C总线的从设备和如权利要求8-15任一项所述的主设备。
CN202010878015.3A 2020-08-27 2020-08-27 I2c总线的时钟控制方法、主设备及连接i2c总线的设备系统 Active CN112051890B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010878015.3A CN112051890B (zh) 2020-08-27 2020-08-27 I2c总线的时钟控制方法、主设备及连接i2c总线的设备系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010878015.3A CN112051890B (zh) 2020-08-27 2020-08-27 I2c总线的时钟控制方法、主设备及连接i2c总线的设备系统

Publications (2)

Publication Number Publication Date
CN112051890A CN112051890A (zh) 2020-12-08
CN112051890B true CN112051890B (zh) 2022-07-26

Family

ID=73600500

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010878015.3A Active CN112051890B (zh) 2020-08-27 2020-08-27 I2c总线的时钟控制方法、主设备及连接i2c总线的设备系统

Country Status (1)

Country Link
CN (1) CN112051890B (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112578899B (zh) * 2020-12-10 2023-08-29 海光信息技术股份有限公司 异步数字校正电路、方法、设备、存储介质
CN115657567B (zh) * 2022-11-14 2023-03-21 上海海栎创科技股份有限公司 一种单引脚传输控制信号的方法及控制系统
CN116881090B (zh) * 2023-09-06 2024-01-26 北京壁仞科技开发有限公司 计算装置以及控制计算装置中的计算核的能耗的方法

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101231628A (zh) * 2007-01-23 2008-07-30 三星电子株式会社 控制串行数据线的状态转换的定时的方法和设备
CN101627375A (zh) * 2006-03-31 2010-01-13 Nxp股份有限公司 I2c时钟发生方法和系统
CN102970300A (zh) * 2012-11-29 2013-03-13 苏州瀚瑞微电子有限公司 一种异步通信协议
CN103095855A (zh) * 2011-10-27 2013-05-08 无锡力芯微电子股份有限公司 I2c通信接口装置
CN103092175A (zh) * 2013-01-21 2013-05-08 杭州华三通信技术有限公司 I2c主设备与从设备之间串行时钟线scl控制的方法及装置
CN103777072A (zh) * 2012-10-24 2014-05-07 上海华虹集成电路有限责任公司 对多个时钟源的时钟频率进行监测的方法
CN205959200U (zh) * 2016-06-20 2017-02-15 昆山龙腾光电有限公司 用于i2c总线数据传输的锁存电路
CN110297794A (zh) * 2018-03-23 2019-10-01 鸿富锦精密电子(天津)有限公司 数据通信系统及方法

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101089838A (zh) * 2007-07-28 2007-12-19 中兴通讯股份有限公司 一种实现i2c读写时序的方法
CN101763331B (zh) * 2010-01-18 2014-04-09 中兴通讯股份有限公司 一种实现i2c总线控制的系统及方法
JP2017126850A (ja) * 2016-01-13 2017-07-20 ルネサスエレクトロニクス株式会社 通信インターフェース回路および半導体集積回路

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101627375A (zh) * 2006-03-31 2010-01-13 Nxp股份有限公司 I2c时钟发生方法和系统
CN101231628A (zh) * 2007-01-23 2008-07-30 三星电子株式会社 控制串行数据线的状态转换的定时的方法和设备
CN103095855A (zh) * 2011-10-27 2013-05-08 无锡力芯微电子股份有限公司 I2c通信接口装置
CN103777072A (zh) * 2012-10-24 2014-05-07 上海华虹集成电路有限责任公司 对多个时钟源的时钟频率进行监测的方法
CN102970300A (zh) * 2012-11-29 2013-03-13 苏州瀚瑞微电子有限公司 一种异步通信协议
CN103092175A (zh) * 2013-01-21 2013-05-08 杭州华三通信技术有限公司 I2c主设备与从设备之间串行时钟线scl控制的方法及装置
CN205959200U (zh) * 2016-06-20 2017-02-15 昆山龙腾光电有限公司 用于i2c总线数据传输的锁存电路
CN110297794A (zh) * 2018-03-23 2019-10-01 鸿富锦精密电子(天津)有限公司 数据通信系统及方法

Also Published As

Publication number Publication date
CN112051890A (zh) 2020-12-08

Similar Documents

Publication Publication Date Title
CN112051890B (zh) I2c总线的时钟控制方法、主设备及连接i2c总线的设备系统
JP6612885B2 (ja) シリアルバスのための受信クロック較正
EP1950668B1 (en) Controlling the timing of a state transition of a serial data line in an I2C Controller
EP2976853B1 (en) Multi-wire open-drain link with data symbol transition based clocking
US9684624B2 (en) Receive clock calibration for a serial bus
CN112051889A (zh) I2c总线的时钟频率自适应调整方法、主设备及设备系统
US10579580B2 (en) Start of sequence detection for one wire bus
US8103896B2 (en) Method and system for I2C clock generation
JP2017510006A (ja) インバンド割込みを用いたカメラ制御インターフェース拡張
US20170104607A1 (en) Methods to avoid i2c void message in i3c
US20110239033A1 (en) Bus Interface and Clock Frequency Control Method of Bus Interface
JP4565459B2 (ja) 2つの電子的バス局間でデータをシリアル伝送する方法及び、その方法で使用するバス局
EP1972058B1 (en) Serial data communication system and method
EP3289471B1 (en) Communication between integrated circuits
CN110768778A (zh) 一种单线通信电路、通信方法及通信系统
CN210518362U (zh) 一种单线通信电路及通信系统
US20200285602A1 (en) eUSB2 to USB 2.0 Data Transmission with Surplus Sync Bits
JP2006165992A (ja) スケルチ回路及びこれを用いた通信装置
JP2008236178A (ja) シリアルデータ受信回路
US7159138B2 (en) Method and apparatus for data transfer between at least two modules interconnected by a serial data bus
WO2022264201A1 (ja) 制御・監視信号伝送システム
EP1128272B1 (en) Method for the serial transfer of data between two electronic bus stations and bus station for use in said method
CN117909280A (zh) Spi主机逻辑电路及spi主机
WO2020232429A1 (en) Bidirectional re-driver for half-duplex interfaces
KR100622943B1 (ko) 자동적으로 타이밍 스펙 제어가 가능한 컨트롤러 및 그타이밍 스펙 제어방법

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
CB02 Change of applicant information
CB02 Change of applicant information

Address after: 300384 industrial incubation-3-8, North 2-204, No. 18, Haitai West Road, Tianjin Huayuan Industrial Zone, Binhai New Area, Tianjin

Applicant after: Haiguang Information Technology Co.,Ltd.

Address before: 300384 industrial incubation-3-8, North 2-204, No. 18, Haitai West Road, Tianjin Huayuan Industrial Zone, Binhai New Area, Tianjin

Applicant before: HAIGUANG INFORMATION TECHNOLOGY Co.,Ltd.

GR01 Patent grant
GR01 Patent grant