I2C控制器时钟线的时钟调控电路及控制方法与流程

文档序号:23959470发布日期:2021-02-18 20:58阅读:134来源:国知局
I2C控制器时钟线的时钟调控电路及控制方法与流程
i2c控制器时钟线的时钟调控电路及控制方法
技术领域
[0001]
本发明涉及智能机器人技术领域,具体涉及一种i2c控制器时钟线的时钟调控电路及控制方法。


背景技术:

[0002]
i2c(inter integrated circuit)总线是由philips公司开发的两线式串行总线,用于连接微控制器及其外围设备,是微电子通信控制领域广泛采用的一种总线标准。i2c上两根串行总线分别为时钟线(scl)以及数据线(sda)。i2c有三种不同的模式,分别为标准模式、快速模式以及高速模式,在高速模式下比特速率高达3.4 mbit/s ,在标准模式下比特速率最高为100kbit/s,最低没有下限,但是现有大部分i2c控制器的做法只是选择其中几种常见的比特速率比如100kbit/s或者400kbit/s,如果i2c模块只会跟有限几种器件通信的话这样做是可以的,如果需要跟很多支持不同速率的器件通信,这么做明显就有了局限性。


技术实现要素:

[0003]
为解决上述问题,本发明提供了一种i2c控制器时钟线的时钟调控电路及控制方法,使i2c控制器的时钟线在不超过计数时钟频率的情况下,可以做到输出任意频率时钟线。本发明的具体技术方案如下:一种i2c控制器时钟线的时钟调控电路,该调控电路包括第一分频模块、第二分频模块、第一比较器、第二比较器和时钟生成模块,所述第一分频模块通过第一比较器与时钟生成模块相连,所述第二分频模块通过第二比较器与时钟生成模块相连;所述第一分频模块和第二分频模块用于根据接收的计数时钟和检测的时钟线的时钟进行计数,并将计数值分别发送给所述第一比较器和第二比较器;所述第一比较器用于将接收的计数值和高电平比较系数进行比较,并根据比较结果发送高脉冲信号给时钟生成模块,所述第二比较器用于将接收的计数值和低电平比较系数进行比较,并根据比较结果发送低脉冲信号给时钟生成模块;所述时钟生成模块用于根据接收高脉冲信号和低脉冲信号来调整的i2c控制器时钟线的时钟的频率。该调控电路通过接收的高电平比较系数和低电平比较系数生成相应的脉冲信号来有效控制时钟线的频率,结构简单,提高i2c控制器的使用范围。
[0004]
于本发明的一个或多个方案中,所述第一分频模块和第二分频模块与同一个计数时钟相连,所述第一分频模块检测到时钟线的时钟的上升沿后开始计数,并根据计数时钟的上升沿进行计数;所述第二分频模块检测到时钟线的时钟的下降沿后开始计数,并根据计数时钟的上升沿进行计数。通过同一个计数时钟来进行计数,使获取的数值更加准确。
[0005]
于本发明的一个或多个方案中,所述时钟线的时钟频率由高电平比较系数和低电平比较系数决定。通过高电平比较系数和低电平比较系来控制scl的频率,灵活性高。
[0006]
一种i2c控制器的时钟调控电路的控制方法,该方法用于控制上述的i2c控制器时钟线的时钟调控电路,该控制方法具体包括以下步骤:s1:第一分频模块和第二分频模块检
测i2c控制器时钟线的时钟的电平;s2:若时钟线的电平为上升沿,则第一分频模块开始计数并把计数值发送给第一比较器;若时钟线的电平为下降沿,则第二分频模块开始计数并把计数值发送给第二比较器;s3:第一比较器将接收的计数值与预先接收的高电平比较系数进行比较,若计数值大于高电平比较系数,则第一比较器发送高脉冲信号给时钟生成模块;第二比较器将接收的计数值与预先接收的低电平比较系数进行比较,若计数值大于低电平比较系数,则第二比较器发送低脉冲信号给时钟生成模块;s4:时钟生成模块根据接收的高脉冲信号和低脉冲信号来调整i2c控制器时钟线的时钟的频率。通过计数后与高电平比较系数和低电平比较系数进行比较的方式来生成高脉冲信号和低脉冲信号来控制时钟生成模块输出相应的时钟线的时钟,计数简单、快速,使i2c控制器的使用范围扩大。
[0007]
于本发明的一个或多个方案中,步骤s2中,第一分频模块和第二分频模块根据接收的计数时钟来进行计数,第一分频模块接收到计数时钟的上升沿,则第一分频模块的计数值加1;第二分频模块接收到计数时钟的上升沿,则第二分频模块的计数值加1。
[0008]
于本发明的一个或多个方案中,步骤s3中,当第一分频模块的计数值大于高电平比较系数时,第一分频模块的计数值清零;当第二分频模块的计数值大于低电平比较系数时,第二分频模块的计数值清零。通过输出相应的脉冲信号再清零的方式,防止计数值影响第一分频模块和第二分频模块的再次计数。
[0009]
于本发明的一个或多个方案中,步骤s3,所述高脉冲信号的生成时间由计数时钟与高电平比较系数决定;所述低脉冲信号的生成时间由计数时钟与低电平比较系数来决定。
[0010]
于本发明的一个或多个方案中,步骤s4中,若时钟生成模块接收到高脉冲信号,则拉低时钟线;若时钟生成模块接收到低脉冲信号,则拉高时钟线。时钟线的拉低和拉高的时间间隔改变,单位时间内的振荡次数也会改变,而频率就是一个单位时间内振荡的次数,通过频率的特性来实施该方法,使结果更加准确。
[0011]
于本发明的一个或多个方案中,步骤s4中,时钟生成模块输出的时钟线的时钟频率由时钟线被拉高和拉低的时间间隔决定。
[0012]
于本发明的一个或多个方案中,时钟线的时钟频率的计算公式为:时钟线的时钟频率等于计数时钟的频率除以高电平比较系数和低电平比较系数的和。通过计数时钟、高电平比较系数和低电平比系数来获得输出的时钟线的时钟频率,实用性高。
附图说明
[0013]
图1为本发明的i2c控制器时钟线的时钟调控电路的结构示意图;图2为本发明的i2c控制器时钟线的时钟调控电路的控制方法的流程图;图3为本发明的i2c控制器数据线的生成电路的结构示意图;图4为本发明的i2c控制器的时序图;图5为本发明的一个实施例的实施图。
具体实施方式
[0014]
下面详细描述本发明的实施例,所述的实施例示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。
[0015]
在本发明的描述中,需要说明的是,对于方位词,如有术语“中心”,“横向”、“纵向”、“长度”、“宽度”、“厚度”、“上”、“下”、“前”、“后”、“左”、“右”、“竖直”、“水平”、“顶”、“底”、“内”、“外”、“顺时针”、“逆时针”等指示方位和位置关系为基于附图所示的方位或位置关系,仅是为了便于叙述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定方位构造和操作,不能理解为限制本发明的具体保护范围。
[0016]
此外,如有术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或隐含指明技术特征的数量。由此,限定有“第一”、“第二”特征可以明示或者隐含包括一个或者多个该特征,在本发明描述中,“至少”的含义是一个或一个以上,除非另有明确具体的限定。
[0017]
在本发明中,除另有明确规定和限定,如有术语“组装”、“相连”、“连接”术语应作广义去理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;也可以是机械连接;可以是直接相连,也可以是通过中间媒介相连,可以是两个元件内部相连通。对于本领域普通技术人员而言,可以根据具体情况理解上述的术语在本发明中的具体含义。
[0018]
在发明中,除非另有规定和限定,第一特征在第二特征之“上”或之“下”可以包括第一和第二特征直接接触,也可以包括第一特征和第二特征不是直接接触而是通过它们之间的另外特征接触。而且,第一特征在第二特征“之上”、“之下”和“上面”包括第一特征在第二特征正上方和斜上方,或仅仅是表示第一特征水平高度高于第二特征的高度。第一特征在第二特征
ꢀ“
之上”、“之下”和“下面”包括第一特征在第二特征正下方或斜下方,或仅仅表示第一特征水平高度低于第二特征。
[0019]
下面结合说明书的附图,通过对本发明的具体实施方式作进一步的描述,使本发明的技术方案及其有益效果更加清楚、明确。下面通过参考附图描述实施例是示例性的,旨在解释本发明,而不能理解为对本发明的限制。
[0020]
参照附图1可知,一种i2c控制器时钟线的时钟调控电路,该调控电路包括第一分频模块、第二分频模块、第一比较器、第二比较器和时钟生成模块,所述第一分频模块通过第一比较器与时钟生成模块相连,所述第二分频模块通过第二比较器与时钟生成模块相连;所述第一分频模块和第二分频模块用于根据接收的计数时钟和检测的时钟线的时钟进行计数,并将计数值分别发送给所述第一比较器和第二比较器;所述第一比较器用于将接收的计数值和高电平比较系数进行比较,并根据比较结果发送高脉冲信号给时钟生成模块,所述第二比较器用于将接收的计数值和低电平比较系数进行比较,并根据比较结果发送低脉冲信号给时钟生成模块;所述时钟生成模块用于根据接收高脉冲信号和低脉冲信号来调整的i2c控制器时钟线的时钟的频率。该调控电路通过接收的高电平比较系数和低电平比较系数生成相应的脉冲信号来有效控制时钟线的频率,结构简单,提高i2c控制器的使用范围。
[0021]
作为其中一种实施例,所述第一分频模块和第二分频模块与同一个计数时钟相连,所述第一分频模块检测到时钟线的时钟的上升沿后开始计数,并根据计数时钟的上升沿进行计数;所述第二分频模块检测到时钟线的时钟的下降沿后开始计数,并根据计数时钟的上升沿进行计数。通过同一个计数时钟来进行计数,使获取的数值更加准确。所述时钟线的时钟频率由高电平比较系数和低电平比较系数决定。通过高电平比较系数和低电平比较系来控制时钟线的频率,灵活性高。不需要用到i2c控制器时,i2c控制器的数据线和时钟
线都处于高电平状态,输入高电平比较系数和低电平比较系数(假设shpg=slpg=63)。当需要用到i2c控制器时,数据线生成模块就会把时钟线拉低从而产生一个start,这时时钟生成模块会把时钟线拉低,第二分频模块就会检测到时钟线产生一个下降沿从而开始工作,第二分频模块的计数器会不断计数,当计数值等于64时(大于63),第二比较器就会产生一个脉冲信号,时钟线生成模块就会把时钟线拉高,第二分频模块的计数器就会清零。这时候第一分频模块检测到了时钟线产生了一个上升沿,第一分频模块就会开始工作,工作的原理和前面的类似。
[0022]
参照附图2可知,一种i2c控制器的时钟调控电路的控制方法,该方法用于控制上述的i2c控制器时钟线的时钟调控电路,该控制方法具体包括以下步骤:s1:第一分频模块和第二分频模块检测i2c控制器时钟线的时钟的电平;s2:若时钟线的电平为上升沿,则第一分频模块开始计数并把计数值发送给第一比较器;若时钟线的电平为下降沿,则第二分频模块开始计数并把计数值发送给第二比较器;s3:第一比较器将接收的计数值与预先接收的高电平比较系数进行比较,若计数值大于高电平比较系数,则第一比较器发送高脉冲信号给时钟生成模块;第二比较器将接收的计数值与预先接收的低电平比较系数进行比较,若计数值大于低电平比较系数,则第二比较器发送低脉冲信号给时钟生成模块;s4:时钟生成模块根据接收的高脉冲信号和低脉冲信号来调整i2c控制器时钟线的时钟的频率。通过计数后与高电平比较系数和低电平比较系数进行比较的方式来生成高脉冲信号和低脉冲信号来控制时钟生成模块输出相应的时钟线的时钟,计数简单、快速,使i2c控制器的使用范围扩大。
[0023]
作为其中一种实施例,第一分频模块和第二分频模块根据接收的计数时钟来进行计数,第一分频模块接收到计数时钟的上升沿,则第一分频模块的计数值加1;第二分频模块接收到计数时钟的上升沿,则第二分频模块的计数值加1。当第一分频模块的计数值大于高电平比较系数时,第一分频模块的计数值清零;当第二分频模块的计数值大于低电平比较系数时,第二分频模块的计数值清零。通过输出相应的脉冲信号再清零的方式,防止计数值影响第一分频模块和第二分频模块的再次计数。所述高脉冲信号的生成时间由计数时钟与高电平比较系数决定;所述低脉冲信号的生成时间由计数时钟与低电平比较系数来决定。
[0024]
作为其中一种实施例,若时钟生成模块接收到高脉冲信号,则拉低时钟线;若时钟生成模块接收到低脉冲信号,则拉高时钟线。时钟线的拉低和拉高的时间间隔改变,单位时间内的振荡次数也会改变,而频率就是一个单位时间内振荡的次数,通过频率的特性来实施该方法,使结果更加准确。时钟生成模块输出的时钟线的时钟频率由时钟线被拉高和拉低的时间间隔决定。
[0025]
作为其中一种实施例,时钟线的时钟频率的计算公式为:时钟线的时钟频率等于计数时钟的频率除以高电平比较系数和低电平比较系数的和。通过计数时钟、高电平比较系数和低电平比系数来获得输出的时钟线的时钟频率,实用性高。
[0026]
时钟线生成电路结构图如图3所示。时钟线生成电路的计数器的输出和比较器的一个端口相连,比较器的另一个端口和一个时钟线比较系数(hdt_dat)相连。
[0027]
当下降沿检测电路检测到scl产生一个下降沿时,计数器就会开始计数,计数器不断把计数结果送给比较器的一端进行比较,直到计数值大于比较系数时才停止计数,此时
将会输出时钟线的数据。通过调整时钟线比较系数(hdt_dat)的值就可以调整时钟线数据输出时的相位。相位调整公式如下所示:holdtime = 1/fclk
ꢀ×ꢀ
(hdt_dat)
ꢀꢀ
公式4holdtime是时钟线数据要保持的时间,fclk是clk的频率。
[0028]
图4是一个i2c的时序图,传输地址或者数据的时候,时钟线只会在scl的低电平期间变化,并且通过调整时钟线比较系数就可以调整holdtime的时间,从而调整了时钟线的相位。而scl_ht和scl_lt分别为scl高电平持续时间和scl低电平持续时间。
[0029]
时序图如图5所示,通过调整高电平比较系数和低电平比较系数的值可以输出不同频率的时钟线,频率计算公式如下所示:fscl = fclk
ꢀ÷ꢀ
(shpg + slpg)
ꢀꢀ
公式1fscl为时钟线的频率,fclk为时钟的频率,当高电平比较系数(shpg)和低电平比较系数(slpg)不同时即可调整占空比。占空比的公式如下所示:n = shpg /( shpg + slpg)
×
100%
ꢀꢀ
公式2根据公式1,还可以推出时钟线高电平的持续时间以及低电平的持续时间,如公式3,4所示;scl_ht = tclk
ꢀ×ꢀ
shpg
ꢀꢀ
公式3scl_lt = tclk
ꢀ×ꢀ
slpg
ꢀꢀ
公式4tclk是clk的周期,也就fclk的倒数,scl_ht是时钟线高电平的持续时间,scl_lt是时钟线低电平的持续时间。
[0030]
假设时钟clk的频率fclk为50mhz,那么tclk的时间是1/fclk,也就是20ns。此时要求scl的频率为400khz,占空比为50%。占空比为50%,根据公式2,shpg要等于slpg,再根据公式1可以算出shpg=slpg=63。再根据公式3和4就可以算出scl的高电平持续时间和低电平持续时间为scl_ht=scl_lt = 20ns
ꢀ×ꢀ
63 = 1260ns。验证:scl_ht和scl_lt都等于1260ns,所以scl的周期为1260
×
2=2520ns,所以频率为1/2520ns = 397khz,和要求的400khz的差距在误差的可接受范围内。
[0031]
在说明书的描述中,参考术语“合一个实施例”、“优选地”、“示例”、“具体示例”或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点,包含于本发明的至少一个实施例或示例中,在本说明书中对于上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施例或者示例中以合适方式结合。说明书的描述中连接的所述连接方式具有明显的效果和实用效力。
[0032]
通过上述的结构和原理的描述,所属技术领域的技术人员应当理解,本发明不局限于上述的具体实施方式,在本发明基础上采用本领域公知技术的改进和替代均落在本发明的保护范围,应由各权利要求限定之。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1