CN103365336A - Usb设备***时钟的校准方法及装置 - Google Patents
Usb设备***时钟的校准方法及装置 Download PDFInfo
- Publication number
- CN103365336A CN103365336A CN2013102536714A CN201310253671A CN103365336A CN 103365336 A CN103365336 A CN 103365336A CN 2013102536714 A CN2013102536714 A CN 2013102536714A CN 201310253671 A CN201310253671 A CN 201310253671A CN 103365336 A CN103365336 A CN 103365336A
- Authority
- CN
- China
- Prior art keywords
- system clock
- usb device
- count value
- timer
- clock
- 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.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 15
- 238000009434 installation Methods 0.000 claims description 6
- 239000013078 crystal Substances 0.000 abstract description 8
- 101000617541 Danio rerio Presenilin-2 Proteins 0.000 description 6
- 101150086396 PRE1 gene Proteins 0.000 description 6
- 101150065808 pre3 gene Proteins 0.000 description 6
- 230000009286 beneficial effect Effects 0.000 description 5
- 238000004891 communication Methods 0.000 description 2
- 238000001514 detection method Methods 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000007613 environmental effect Effects 0.000 description 2
- 230000007257 malfunction Effects 0.000 description 2
- 238000006243 chemical reaction Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
Images
Landscapes
- Synchronisation In Digital Transmission Systems (AREA)
Abstract
本发明公开一种USB设备***时钟的校准方法及装置,通过利用USB设备定时器的计数功能和捕捉功能,将USB设备的***时钟分频后作为所述USB设备定时器计数功能的时钟源,将所述USB设备的低速时钟作为所述USB设备定时器捕捉功能的触发源;捕捉触发源的跳变沿,获取对应捕捉区间的***时钟实际计数值;根据获取的实际计数值、预设的理论计数值及所允许的误差范围,校准USB设备的***时钟频率的方法,具有在USB设备的***时钟频率出现偏差时,及时对该***时钟频率进行校准的有益效果,进而使USB设备能够正常使用;进一步地,由于该USB设备仅使用HSI晶振,因此,降低了USB设备的成本。
Description
技术领域
本发明涉及USB技术,尤其涉及一种USB设备***时钟的校准方法及装置。
背景技术
USB(Universal Serial Bus,通用串行总线)设备的引擎时钟来源于***时钟分频,***时钟来源于HSE(High speed external clock signal,高速外部时钟信号)或者HSI(High speed internal clock signal,高速内部时钟信号)。USB设备利用HSE晶振产生的***时钟不需要进行校准,但该方案需要增设HSE晶振,增加了USB设备中PCB(Printed Circuit Board,印刷电路板)的尺寸空间,同时也增加了USB设备的成本;对于直接使用HSI晶振的USB设备,在常温下,该USB设备可以正常工作,但是在恶劣环境下,由于USB设备的HSI晶振易受环境温度的影响,因此将导致USB设备的***时钟偏差超过USB协议可允许的误差范围,然而,目前并没有对产生较大偏差的USB设备的***时钟进行有效校准的方案,从而导致***时钟偏差较大的USB设备不能正常使用。
发明内容
本发明实施例的主要目的是提供一种USB设备***时钟的校准方法及装置,旨在USB设备的***时钟频率出现偏差时,对该***时钟频率进行校准。
本发明实施例公开了一种USB设备***时钟的校准方法,包括以下步骤:
利用USB设备定时器的计数功能和捕捉功能,将USB设备的***时钟经第一预设分频系数分频后作为所述USB设备定时器计数功能的时钟源,将所述USB设备的低速时钟作为所述USB设备定时器捕捉功能的触发源;
连续捕捉触发源的跳变沿,分别获取所述定时器的计数值,根据所述定时器的计数值,得到捕捉区间的计数值V;
根据所述第一预设分频系数和捕捉区间的计数值V,获取USB设备的***时钟在所述捕捉区间内的实际计数值T_CNT;
根据所述实际计数值T_CNT、预设的所述***时钟的理论计数值S_CNT以及所述***时钟所允许的误差范围,校准所述***时钟。
优选地,所述USB设备的低速时钟包括:GPIO时钟、LSI或LSE;
所述将所述USB设备的低速时钟作为所述USB设备定时器捕捉功能的触发源包括:将所述低速时钟直接作为所述触发源;
或者,
将所述低速时钟经第二预设分频系数分频后作为所述USB设备定时器捕捉功能的触发源。
优选地,所述连续捕捉触发源的跳变沿,分别获取所述定时器的计数值,根据所述定时器的计数值,得到捕捉区间的计数值V包括:
连续捕捉两次触发源的跳变沿,分别获取所述定时器的计数值V1和V2,计算获取的定时器计数值V2和V1的矢量差值,作为捕捉区间的计数值V;
或者,
连续捕捉N+1次触发源的跳变沿,分别获取N+1个对应的定时器计数值V1至VN+1,计算获取的定时器计数值V1至VN+1每相邻两个计数值的矢量差值,得到N个捕捉区间的矢量差值;其中,所述N为大于3的整数;
去除获取的N个所述矢量差值的最高值和最低值,计算并获取剩余的(N-2)个捕捉区间的矢量差值的平均值,将所述矢量差值的平均值作为捕捉区间的计数值V。
优选地,所述根据所述实际计数值T_CNT、预设的所述***时钟的理论计数值S_CNT以及所述***时钟所允许的误差范围,校准所述***时钟之后还包括:
将校准后的USB设备的***时钟频率与所述***时钟所允许的误差范围对应的***时钟频率范围进行比较;
当校准后的USB设备的***时钟频率仍不满足所述***时钟频率范围时,继续校准所述USB设备的***时钟。
优选地,所述USB设备***时钟的校准方法还包括:
在校准次数达到预设校准次数时,若USB设备的***时钟频率仍不满足所述***时钟频率范围,则将误差最小的***时钟频率作为校准后的所述***时钟频率,同时发出校准出错的提示信息。
优选地,所述根据所述实际计数值T_CNT、预设的所述***时钟的理论计数值S_CNT以及所述***时钟所允许的误差范围,校准所述***时钟之后还包括:
根据校准后的USB设备的***时钟频率,校准USB设备硬件引擎时钟频率。
本发明实施例还公开一种USB设备***时钟的校准装置,包括:
时钟设置模块,利用USB设备定时器的计数功能和捕捉功能,将USB设备的***时钟经第一预设分频系数分频后作为所述USB设备定时器计数功能的时钟源,将所述USB设备的低速时钟作为所述USB设备定时器捕捉功能的触发源;
数值获取模块,用于连续捕捉触发源的跳变沿,分别获取所述定时器的计数值,根据所述定时器的计数值,得到捕捉区间的计数值V;根据所述第一预设分频系数和捕捉区间的计数值V,获取USB设备的***时钟在所述捕捉区间内的实际计数值T_CNT;
时钟校准模块,用于根据所述实际计数值T_CNT、预设的所述***时钟的理论计数值S_CNT以及所述***时钟所允许的误差范围,校准所述***时钟。
优选地,所述USB设备的低速时钟包括:GPIO时钟、LSI或LSE;
所述时钟设置模块还用于:
将所述低速时钟直接作为所述触发源;或者,
将所述低速时钟经第二预设分频系数分频后作为所述USB设备定时器捕捉功能的触发源。
优选地,所述数值获取模块还用于:
连续捕捉两次触发源的跳变沿,分别获取所述定时器的计数值V1和V2,计算获取的定时器计数值V2和V1的矢量差值,作为捕捉区间的计数值V;
或者,
连续捕捉N+1次触发源的跳变沿,分别获取N+1个对应的定时器计数值V1至VN+1,计算获取的定时器计数值V1至VN+1每相邻两个计数值的矢量差值,得到N个捕捉区间的矢量差值;其中,所述N为大于3的整数;
去除获取的N个所述矢量差值的最高值和最低值,计算并获取剩余的(N-2)个捕捉区间的矢量差值的平均值,将所述矢量差值的平均值作为捕捉区间的计数值V。
优选地,所述时钟校准模块还用于:
将校准后的USB设备的***时钟频率与所述***时钟所允许的误差范围对应的***时钟频率范围进行比较;
当校准后的USB设备的***时钟频率仍不满足所述***时钟频率范围时,继续校准所述USB设备的***时钟。
优选地,所述时钟校准模块还用于:
在校准次数达到预设校准次数时,若USB设备的***时钟频率仍不满足所述***时钟频率范围,则将误差最小的***时钟频率作为校准后的所述***时钟频率,同时发出校准出错的提示信息。
优选地,所述时钟校准模块还用于:
根据校准后的USB设备的***时钟频率,校准USB设备硬件引擎时钟频率。
本发明实施例通过利用USB设备定时器的计数功能和捕捉功能,将USB设备的***时钟分频后作为所述USB设备定时器计数功能的时钟源,将所述USB设备的低速时钟作为所述USB设备定时器捕捉功能的触发源;捕捉触发源的跳变沿,获取对应捕捉区间的***时钟实际计数值;根据获取的实际计数值、预设的理论计数值及所允许的误差范围,校准USB设备的***时钟频率的方法,具有在USB设备的***时钟频率出现偏差时,及时对该***时钟频率进行校准的有益效果,进而使USB设备能够正常使用;进一步地,由于该USB设备仅使用HSI晶振,因此,降低了USB设备的成本。
附图说明
图1是本发明USB设备***时钟的校准方法第一实施例流程示意图;
图2是本发明USB设备***时钟的校准方法第二实施例流程示意图;
图3是本发明USB设备***时钟的校准装置一实施例功能模块示意图。
本发明实施例目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
以下结合说明书附图及具体实施例进一步说明本发明的技术方案。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
以USB设备中的USB Key为例,USB Key是一种USB接口的硬件设备,属于从设备,通过USB接口与PC进行数据交互。USB Key内置单片机或智能卡芯片,有一定的存储空间,可以存储用户的私钥以及数字证书,利用USB Key内置的公钥算法实现对用户身份的认证。USB总线接口是由带有USB模块的芯片实现,通常情况下,USB硬件引擎模块时钟为48Mhz,该USB硬件引擎时钟偏差允许范围为正负0.25%。当该USB硬件引擎时钟偏差超过此范围,将会导致USB接口通信不稳定,甚至出现错误,导致USB Key不能正常工作。
USB硬件引擎的时钟来源于单片机***时钟PLL(Phase Locked Loop,锁相环)倍频后,再进行分频为48Mhz。为了节省成本和电路板空间,USB设备中的单片机采用HSI片内时钟作为***时钟的时钟源,该HSI片内时钟特点是精度低、易受环境温度影响。因此必须对HSI时钟进行适当的校准,否则当环境温度变化剧烈时,HSI将产生较大的漂移,导致USB引擎时钟源偏差过大,从而使USB Key不能正常工作。本发明实施例USB设备***时钟的校准原理是通过定时器捕捉功能和计数功能,将USB设备的***时钟分频后作为所述USB设备定时器计数功能的时钟源,将所述USB设备的低速外部时钟分频后作为所述USB设备定时器捕捉功能的触发源;捕捉触发源的跳变沿,获取对应捕捉区间的***时钟实际计数值,根据获取的实际计数值、预设的理论计数值及所允许的误差范围,找出当前***时钟最适合的补偿值,对时钟源进行补偿,达到稳定USB硬件引擎时钟源的效果。该方案主要应用于USBKey相关设备,同时涵盖其他基于USB总线数据通信的USB终端主从设备。
参照图1,图1是本发明USB设备***时钟的校准方法第一实施例流程示意图;如图1所示,本发明USB设备***时钟的校准方法包括以下步骤:
步骤S01、利用USB设备定时器的计数功能和捕捉功能,将USB设备的***时钟经第一预设分频系数分频后作为所述USB设备定时器计数功能的时钟源,将所述USB设备的低速时钟作为所述USB设备定时器捕捉功能的触发源;
USB设备按照预设时间周期,检测***时钟是否超出了USB设备正常工作所允许的最大偏差范围。本实施例中,预设时间周期可以根据USB设备所处的实际环境进行设置,也可以按照实际需要进行设置,比如,在正常环境温度下设置该检测周期为10秒,在恶劣环境下,设置该检测周期为1秒;本实施例对预设时间周期的具体时间长度不做限定。
在检测时,利用USB设备定时器的计数功能和捕捉功能对USB设备的***时钟进行校准。将USB设备的***时钟经第一预设分频系数进行分频后作为USB设备定时器计数功能的时钟源;将USB设备的低速时钟作为USB设备定时器捕捉功能的触发源。
所述USB设备的低速时钟包括:GPIO时钟、LSI或LSE;本实施例中,将USB设备的LSE(Low Speed External clock signal,低速外部时钟)经第二预设分频系数进行分频后作为USB设备定时器捕捉功能的触发源。根据所述USB设备所处的实际环境和具体情况,所述第一预设分频系数和第二预设分频系数可以相同也可以不同。本实施例对所述第一预设分频系数和第二预设分频系数的具体取值范围不做限定。
在一优选的实施例中,也可以直接将未分频的所述USB设备的低速外部时钟作为所述USB设备定时器捕捉功能的触发源。
步骤S02、连续捕捉触发源的跳变沿,分别获取所述定时器的计数值,根据所述定时器的计数值,得到捕捉区间的计数值V。
USB设备利用定时器的捕捉功能通过连续捕捉两次触发源的跳变沿,分别获取对应的定时器计数值V1和V2,再计算两次矢量差值,得到捕捉区间的计数值V;此时,若V2大于V1,则V的值为V2与V1的差值;若V2小于V1,则表示定时器进行计数值溢出后,又重新计数得到V2,则此时V的值为(0xffff –V1 + V2 +1)。
步骤S03、根据所述第一预设分频系数和捕捉区间的计数值V,获取USB设备的***时钟在所述捕捉区间内的实际计数值T_CNT;
步骤S04、根据所述实际计数值T_CNT、预设的所述***时钟的理论计数值S_CNT以及所述***时钟所允许的误差范围,校准所述***时钟。
根据第一预设分频系数和捕捉区间的计数值V,获取USB设备***时钟在所述捕捉区间内的实际计数值T_CNT为计数值V和第一预设分频系数的乘积。根据计算得到实际计数值T_CNT和预设的所述***时钟的理论计数值S_CNT以及所述***时钟所允许的误差范围,校准所述***时钟。
在一优选的实施例中,为了获取更为准确的定时器实际计数值T_CNT,USB设备获取内部定时器的实际计数值T_CNT还可以采用如下方式:
连续捕捉N+1次触发源的跳变沿,分别获取N+1个对应的定时器计数值V1至VN+1,计算获取的定时器计数值V1至VN+1每相邻两个计数值的矢量差值,得到N个捕捉区间的矢量差值;其中,所述N为大于3的整数;去除获取的N个所述矢量差值的最高值和最低值,计算并获取剩余的(N-2)个捕捉区间的矢量差值的平均值,得到定时器计数值的平均值;根据获取的定时器计数值的平均值和第一预设分频系数,获取USB设备***时钟的实际计数值T_CNT。
在一优选的实施例中,USB设备将校准后的***时钟频率与所述***时钟所允许的误差范围对应的***时钟频率范围进行比较;当校准后的USB设备的***时钟频率仍不满足上述***时钟频率范围时,重复所述步骤S02至S04,继续校准所述USB设备的***时钟。
在一优选的实施例中,若USB设备在校准次数达到预设校准次数时,其***时钟频率仍在预设的***时钟频率范围之外,则停止继续校准,将误差最小的***时钟频率作为校准后的所述***时钟频率,同时发出校准出错的提示信息。
下面将以具体的使用场景再次描述本实施例USB设备***时钟的校准方法的实施过程。
USB设备采用定时器计数功能和捕捉功能对***时钟进行校准,定时器的计数功能时钟源来源于***时钟SYSCLK,经过AHB/APB分频(片上***时钟分频)和定时器分频,启用0~0xffff循环计数。SYSCLK时钟经AHB/APB和定时器分频,其分频系数分别为PRE1和PRE2,则定时器计数功能时钟源TIMERCLK值为:
TIMERCLK = SYSCLK/(PRE1*PRE2);
USB设备定时器捕捉功能的触发源可以是GPIO(General Purpose Input Output,通用输入/输出)或者LSI或者LSE,此处选择LSE的RTC时钟源作为捕捉功能的触发源;将LSE按照第二预设分频系数PRE3进行分频,经过分频后得到更低频率的信号,通过连续捕捉两次触发源的跳变沿,分别获取对应的定时器计数值V1和V2,再计算两次矢量差值,得到捕捉区间的计数值V;此时,若V2大于V1,则 V 的值为V2与V1的差值;若V2小于V1,则表示定时器进行计数值溢出后,又重新计数得到V2,则此时V的值为(0xffff –V1 + V2 +1)。根据得到定时器的计数值V,以及第一预设分频系数(PRE1*PRE2),获取USB设备定时器的实际计数值。
在一优选的实施例中,为了得到更平滑和稳定的数据,可加入滤波功能,比如,连续捕捉N+1次触发源的跳变沿,分别获取N个区间对应的定时器计数值V1至VN+1,计算获取的定时器计数值V1至VN+1每相邻两个计数值的矢量差值,得到N个捕捉区间的矢量差值;此时,对得到的N个计数值进行排序,去除最高值和最低值,再对剩下的(N-2)个数值取平均值得到平均值。本实施例中,所述N的取值为大于3的整数。
此时,得到的***时钟SYSCLK实际计数值T_CNT为:
以RTC时钟源RTCCLK为32.768Khz为例,则经第二预设分频系数PRE3分频后作为捕捉功能的触发源CAPCLK的值为:
CAPCLK =RTCCLK / PRE3;
在一个捕捉区间内,定时器理论计数值S_CNT为:
S_CNT = 32Mhz/CAPCLK;
若USB设备***时钟允许的最大偏差为X%,则该捕捉区间的计数值上下限值H_CNT和L_CNT分别为:
H_CNT = S_CNT *(1+ X%);
L_CNT = S_CNT *(1- X%);
捕捉区间实际计数值T_CNT处于理论计数值上下限之内(L_CNT<T_CNT< H_CNT),则***时钟在USB允许的最大偏差范围之内;否则超出误差范围,就要对HSI时钟进行校准补偿,补偿后再重复上述步骤,计算校准后的时钟源是否满足要求。若达到预设校准次数(比如5次),USB设备的***时钟频率仍不能满足预设的***时钟频率范围,则将误差最小的***时钟频率作为校准后的所述***时钟频率,同时USB设备发出校准出错的提示信息。
在一优选的实施例中,USB设备也可以根据实际需求不断地进行***时钟校准,直到该USB设备***时钟频率满足预设的***时钟频率范围。
本实施例通过利用USB设备定时器的计数功能和捕捉功能,将USB设备的***时钟分频后作为所述USB设备定时器计数功能的时钟源,将所述USB设备的低速时钟作为所述USB设备定时器捕捉功能的触发源;捕捉触发源的跳变沿,获取对应捕捉区间的***时钟实际计数值;根据获取的实际计数值、预设的理论计数值及所允许的误差范围的方法,具有在USB设备的***时钟频率出现偏差时,及时对该***时钟频率进行校准的有益效果,进而使USB设备能够正常使用;进一步地,由于该USB设备仅使用HSI晶振,因此,降低了USB设备的成本。
请参照图2,图2是本发明USB设备***时钟的校准方法第二实施例流程示意图;本实施例与图1所述实施例的区别是,仅增加了“步骤S05、根据校准后的USB设备的***时钟频率,校准USB设备硬件引擎时钟频率”;本实施例仅对步骤S05作具体描述,有关本发明USB设备***时钟的校准方法所涉及的其他步骤请参照相关实施例的具体描述,在此不再赘述。
如图2所示,本发明USB设备***时钟的校准方法在“步骤S04、根据所述实际计数值T_CNT、预设的所述***时钟的理论计数值S_CNT以及所述***时钟所允许的误差范围,校准所述***时钟”之后还包括:
步骤S05、根据校准后的USB设备的***时钟频率,校准USB设备硬件引擎时钟频率。
USB设备根据校准的***时钟频率,校准HSI;并以校准后的HSI为基准,校准USB设备硬件引擎时钟频率。
本实施例中,USB设备以HSI作为时钟源,经USB设备内部锁相环倍频后再进行分频,可调制成一定频率值的信号作为***时钟SYSCLK,及另一频率值的信号作为USB硬件引擎的时钟源USBCLK;以16Mhz的HSI为例,经USB设备内部锁相环倍频后再进行分频,可调制成32Mhz的信号作为***时钟SYSCLK,及48Mhz的信号作为USB硬件引擎的时钟源USBCLK。SYSCLK和USBCLK均来源于HSI时钟源倍频再分频,HSI时钟偏差值即为SYSCLK和USBCLK时钟的偏差值。计算SYSCLK时钟偏差值,即可得到HSI时钟偏差值和USBCLK时钟偏差值。同理,对HSI时钟源进行时钟偏差补偿,即可达到SYSCLK和USBCLK进行补偿,达到USBCLK的稳定性。
本实施例通过根据校准后的USB设备的***时钟频率校准HSI,并以校准后的HSI为基准校准USB设备硬件引擎时钟频率的方法,具有校准USB设备各时钟频率的有益效果,进一步地,使USB设备的USB接口能够以更加准确的频率工作。
请参照图3,图3是本发明USB设备***时钟的校准装置第一实施例功能模块示意图;如图3所示,本发明USB设备***时钟的校准装置包括:时钟设置模块01、数值获取模块02和时钟校准模块03。
时钟设置模块01,用于利用USB设备定时器的计数功能和捕捉功能,将USB设备的***时钟经第一预设分频系数分频后作为所述USB设备定时器计数功能的时钟源,将所述USB设备的低速时钟作为所述USB设备定时器捕捉功能的触发源;
USB设备按照预设时间周期,检测***时钟是否超出了USB设备正常工作所允许的最大偏差范围。本实施例中,预设时间周期可以根据USB设备所处的实际环境进行设置,也可以按照实际需要进行设置,比如,在正常环境温度下设置该检测周期为10秒,在恶劣环境下,设置该检测周期为1秒;本实施例对预设时间周期的具体时间长度不做限定。
在检测时,USB设备利用内部定时器的计数功能和捕捉功能对USB设备的***时钟进行校准。时钟设置模块01将USB设备的***时钟经第一预设分频系数进行分频后作为USB设备定时器计数功能的时钟源;将USB设备的低速时钟作为USB设备定时器捕捉功能的触发源。
所述USB设备的低速时钟包括:GPIO时钟、LSI或LSE;本实施例中,时钟设置模块01将USB设备的LSE经第二预设分频系数进行分频后作为USB设备定时器捕捉功能的触发源。根据所述USB设备所处的实际环境和具体情况,所述第一预设分频系数和第二预设分频系数可以相同也可以不同。本实施例对所述第一预设分频系数和第二预设分频系数的具体取值范围不做限定。
在一优选的实施例中,时钟设置模块01也可以直接将未分频的所述USB设备的低速外部时钟作为所述USB设备定时器捕捉功能的触发源。
数值获取模块02,用于连续捕捉触发源的跳变沿,分别获取所述定时器的计数值,根据所述定时器的计数值,得到捕捉区间的计数值V;根据所述第一预设分频系数和捕捉区间的计数值V,获取USB设备的***时钟在所述捕捉区间内的实际计数值T_CNT;
时钟校准模块03,用于根据所述实际计数值T_CNT、预设的所述***时钟的理论计数值S_CNT以及所述***时钟所允许的误差范围,校准所述***时钟。
数值获取模块02利用定时器的捕捉功能通过连续捕捉两次触发源的跳变沿,分别获取对应的定时器计数值V1和V2,再计算两次矢量差值,得到捕捉区间的计数值V;此时,若V2大于V1,则V的值为V2与V1的差值;若V2小于V1,则表示定时器进行计数值溢出后,又重新计数得到V2,则此时V的值为(0xffff –V1 + V2 +1)。
数值获取模块02根据第一预设分频系数和捕捉区间的计数值V,获取USB设备***时钟在所述捕捉区间内的实际计数值T_CNT为计数值V和第一预设分频系数的乘积。根据数值获取模块02计算得到实际计数值T_CNT和预设的所述***时钟的理论计数值S_CNT以及所述***时钟所允许的误差范围,时钟校准模块03校准所述***时钟。
在一优选的实施例中,为了获取更为准确的定时器实际计数值T_CNT,数值获取模块02以LSE作为校准的基准,获取USB设备定时器的实际计数值T_CNT还可以采用如下方式:
数值获取模块02连续捕捉N+1次触发源的跳变沿,分别获取N+1个对应的定时器计数值V1至VN+1,计算获取的定时器计数值V1至VN+1每相邻两个计数值的矢量差值,得到N个捕捉区间的矢量差值;其中,所述N为大于3的整数;去除获取的N个所述矢量差值的最高值和最低值,计算并获取剩余的(N-2)个捕捉区间的矢量差值的平均值,得到定时器计数值的平均值;根据获取的定时器计数值的平均值和所述第一预设分频系数,获取USB设备***时钟的实际计数值T_CNT。
时钟校准模块03根据根据所述实际计数值T_CNT、预设的所述***时钟的理论计数值S_CNT以及所述***时钟所允许的误差范围,校准USB设备的***时钟。
在一优选的实施例中,时钟校准模块03将校准后的***时钟频率与所述***时钟所允许的误差范围对应的***时钟频率范围进行比较;当校准后的USB设备的***时钟频率仍不满足上述***时钟频率范围时,利用所述数值获取模块02获取的相应数据,继续校准所述USB设备的***时钟。
在一优选的实施例中,若USB设备在校准次数达到预设校准次数时,其***时钟频率仍在预设的***时钟频率范围之外,则时钟校准模块03停止继续校准,将误差最小的***时钟频率作为校准后的所述***时钟频率,同时发出校准出错的提示信息。
下面将以具体的使用场景再次描述本实施例USB设备***时钟的校准方法的实施过程。
时钟校准模块03采用定时器计数功能和捕捉功能对***时钟进行校准,定时器的计数功能时钟源来源于***时钟SYSCLK,经过AHB/APB分频(片上***时钟分频)和定时器分频,启用0~0xffff循环计数。SYSCLK时钟经AHB/APB和定时器分频,其分频系数分别为PRE1和PRE2,则定时器计数功能时钟源TIMERCLK值为:
TIMERCLK = SYSCLK/(PRE1*PRE2);
USB设备定时器捕捉功能的触发源可以是GPIO(General Purpose Input Output,通用输入/输出)或者LSI或者LSE,此处选择LSE的RTC时钟源作为捕捉功能的触发源;时钟设置模块01将LSE按照第二预设分频系数PRE3进行分频,经过分频后得到更低频率的信号,数值获取模块02通过连续捕捉两次触发源的跳变沿,分别获取对应的定时器计数值V1和V2,再计算两次矢量差值,得到捕捉区间的计数值V;此时,若V2大于V1,则数值获取模块02获取的 V值为V2与V1的差值;若V2小于V1,则表示定时器进行计数值溢出后,又重新计数得到V2,则此时数值获取模块02获取的V值为(0xffff –V1 + V2 +1)。时钟校准模块03根据得到定时器的计数值V,以及第一预设分频系数(PRE1*PRE2),获取USB设备定时器的实际计数值。
在一优选的实施例中,为了得到更平滑和稳定的数据,可加入滤波功能,比如,数值获取模块02连续捕捉N+1次触发源的跳变沿,分别获取N个区间对应的定时器计数值V1至VN+1,计算获取的定时器计数值V1至VN+1每相邻两个计数值的矢量差值,得到N个捕捉区间的矢量差值;此时,数值获取模块02对得到的N个计数值进行排序,去除最高值和最低值,再对剩下的(N-2)个数值取平均得到平均值。本实施例中,所述N的取值为大于3的整数。
此时,数值获取模块02得到的***时钟SYSCLK实际计数值T_CNT为:
以RTC时钟源RTCCLK为32.768Khz为例,则经第二预设分频系数PRE3分频后作为捕捉功能的触发源CAPCLK的值为:
CAPCLK =RTCCLK / PRE3;
在一个捕捉区间内,数值获取模块02得到定时器理论计数值S_CNT为:
S_CNT = 32Mhz/CAPCLK;
若USB设备***时钟允许的最大偏差为X%,则该捕捉区间的计数值上下限值H_CNT和L_CNT分别为:
H_CNT = S_CNT *(1+ X%);
L_CNT = S_CNT *(1- X%);
捕捉区间实际计数值T_CNT处于理论计数值上下限之内(L_CNT<T_CNT< H_CNT),则***时钟在USB允许的最大偏差范围之内;否则超出误差范围,时钟校准模块03就要对HSI时钟进行校准补偿,补偿后再重复上述步骤,计算校准后的时钟源是否满足要求。若达到预设校准次数(比如5次),USB设备的***时钟频率仍不能满足预设的***时钟频率范围,则将误差最小的***时钟频率作为校准后的所述***时钟频率,同时时钟校准模块03发出校准出错的提示信息。
在一优选的实施例中,时钟校准模块03也可以根据实际需求不断地进行***时钟校准,直到该USB设备***时钟频率满足预设的***时钟频率范围。
本实施例通过利用USB设备定时器的计数功能和捕捉功能,将USB设备的***时钟分频后作为所述USB设备定时器计数功能的时钟源,将所述USB设备的低速时钟作为所述USB设备定时器捕捉功能的触发源;捕捉触发源的跳变沿,获取对应捕捉区间的***时钟实际计数值;根据获取的实际计数值、预设的理论计数值及所允许的误差范围,校准USB设备的***时钟频率,具有在USB设备的***时钟频率出现偏差时,及时对该***时钟频率进行校准的有益效果,进而使USB设备能够正常使用;进一步地,由于该USB设备仅使用HSI晶振,因此,降低了USB设备的成本。
基于图3所述实施例的具体描述,请再次参照图3。如图3所示,本发明USB设备***时钟的校准装置中,时钟校准模块03还用于:
根据校准后的USB设备的***时钟频率,校准USB设备硬件引擎时钟频率。
时钟校准模块03根据校准的***时钟频率,校准HSI;并以校准后的HSI为基准,校准USB设备硬件引擎时钟频率。
本实施例中,USB设备以HSI作为时钟源,经USB设备内部锁相环倍频后再进行分频,可调制成一定频率值的信号作为***时钟SYSCLK,及另一频率值的信号作为USB硬件引擎的时钟源USBCLK;以16Mhz的HSI为例,经USB设备内部锁相环倍频后再进行分频,可调制成32Mhz的信号作为***时钟SYSCLK,及48Mhz的信号作为USB硬件引擎的时钟源USBCLK。SYSCLK和USBCLK均来源于HSI时钟源倍频再分频,HSI时钟偏差值即为SYSCLK和USBCLK时钟的偏差值。时钟校准模块03计算SYSCLK时钟偏差值,即可得到HSI时钟偏差值和USBCLK时钟偏差值。同理,时钟校准模块03对HSI时钟源进行时钟偏差补偿,即可达到SYSCLK和USBCLK进行补偿,达到USBCLK的稳定性。
本实施例通过根据校准后的USB设备的***时钟频率校准HSI,并以校准后的HSI为基准校准USB设备硬件引擎时钟频率,具有校准USB设备各时钟频率的有益效果,进一步地,使USB设备的USB接口能够以更加准确的频率工作。
以上所述仅为本发明的优选实施例,并非因此限制其专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。
Claims (12)
1.一种USB设备***时钟的校准方法,其特征在于,包括以下步骤:
利用USB设备定时器的计数功能和捕捉功能,将USB设备的***时钟经第一预设分频系数分频后作为所述USB设备定时器计数功能的时钟源,将所述USB设备的低速时钟作为所述USB设备定时器捕捉功能的触发源;
连续捕捉触发源的跳变沿,分别获取所述定时器的计数值,根据所述定时器的计数值,得到捕捉区间的计数值V;
根据所述第一预设分频系数和捕捉区间的计数值V,获取USB设备的***时钟在所述捕捉区间内的实际计数值T_CNT;
根据所述实际计数值T_CNT、预设的所述***时钟的理论计数值S_CNT以及所述***时钟所允许的误差范围,校准所述***时钟。
2.如权利要求1所述的方法,其特征在于,所述USB设备的低速时钟包括:GPIO时钟、LSI或LSE;
所述将所述USB设备的低速时钟作为所述USB设备定时器捕捉功能的触发源包括:将所述低速时钟直接作为所述触发源;
或者,
将所述低速时钟经第二预设分频系数分频后作为所述USB设备定时器捕捉功能的触发源。
3.如权利要求1所述的方法,其特征在于,所述连续捕捉触发源的跳变沿,分别获取所述定时器的计数值,根据所述定时器的计数值,得到捕捉区间的计数值V包括:
连续捕捉两次触发源的跳变沿,分别获取所述定时器的计数值V1和V2,计算获取的定时器计数值V2和V1的矢量差值,作为捕捉区间的计数值V;
或者,
连续捕捉N+1次触发源的跳变沿,分别获取N+1个对应的定时器计数值V1至VN+1,计算获取的定时器计数值V1至VN+1每相邻两个计数值的矢量差值,得到N个捕捉区间的矢量差值;其中,所述N为大于3的整数;
去除获取的N个所述矢量差值的最高值和最低值,计算并获取剩余的(N-2)个捕捉区间的矢量差值的平均值,将所述矢量差值的平均值作为捕捉区间的计数值V。
4.如权利要求1或3所述的方法,其特征在于,所述根据所述实际计数值T_CNT、预设的所述***时钟的理论计数值S_CNT以及所述***时钟所允许的误差范围,校准所述***时钟之后还包括:
将校准后的USB设备的***时钟频率与所述***时钟所允许的误差范围对应的***时钟频率范围进行比较;
当校准后的USB设备的***时钟频率仍不满足所述***时钟频率范围时,继续校准所述USB设备的***时钟。
5.如权利要求4所述的方法,其特征在于,还包括:
在校准次数达到预设校准次数时,若USB设备的***时钟频率仍不满足所述***时钟频率范围,则将误差最小的***时钟频率作为校准后的所述***时钟频率,同时发出校准出错的提示信息。
6.如权利要求1、2、3或5所述的方法,其特征在于,所述根据所述实际计数值T_CNT、预设的所述***时钟的理论计数值S_CNT以及所述***时钟所允许的误差范围,校准所述***时钟之后还包括:
根据校准后的USB设备的***时钟频率,校准USB设备硬件引擎时钟频率。
7.一种USB设备***时钟的校准装置,其特征在于,包括:
时钟设置模块,利用USB设备定时器的计数功能和捕捉功能,将USB设备的***时钟经第一预设分频系数分频后作为所述USB设备定时器计数功能的时钟源,将所述USB设备的低速时钟作为所述USB设备定时器捕捉功能的触发源;
数值获取模块,用于连续捕捉触发源的跳变沿,分别获取所述定时器的计数值,根据所述定时器的计数值,得到捕捉区间的计数值V;根据所述第一预设分频系数和捕捉区间的计数值V,获取USB设备的***时钟在所述捕捉区间内的实际计数值T_CNT;
时钟校准模块,用于根据所述实际计数值T_CNT、预设的所述***时钟的理论计数值S_CNT以及所述***时钟所允许的误差范围,校准所述***时钟。
8.如权利要求7所述的装置,其特征在于,所述USB设备的低速时钟包括:GPIO时钟、LSI或LSE;
所述时钟设置模块还用于:
将所述低速时钟直接作为所述触发源;或者,
将所述低速时钟经第二预设分频系数分频后作为所述USB设备定时器捕捉功能的触发源。
9.如权利要求7所述的装置,其特征在于,所述数值获取模块还用于:
连续捕捉两次触发源的跳变沿,分别获取所述定时器的计数值V1和V2,计算获取的定时器计数值V2和V1的矢量差值,作为捕捉区间的计数值V;
或者,
连续捕捉N+1次触发源的跳变沿,分别获取N+1个对应的定时器计数值V1至VN+1,计算获取的定时器计数值V1至VN+1每相邻两个计数值的矢量差值,得到N个捕捉区间的矢量差值;其中,所述N为大于3的整数;
去除获取的N个所述矢量差值的最高值和最低值,计算并获取剩余的(N-2)个捕捉区间的矢量差值的平均值,将所述矢量差值的平均值作为捕捉区间的计数值V。
10.如权利要求7或9所述的装置,其特征在于,所述时钟校准模块还用于:
将校准后的USB设备的***时钟频率与所述***时钟所允许的误差范围对应的***时钟频率范围进行比较;
当校准后的USB设备的***时钟频率仍不满足所述***时钟频率范围时,继续校准所述USB设备的***时钟。
11.如权利要求10所述的装置,其特征在于,所述时钟校准模块还用于:
在校准次数达到预设校准次数时,若USB设备的***时钟频率仍不满足所述***时钟频率范围,则将误差最小的***时钟频率作为校准后的所述***时钟频率,同时发出校准出错的提示信息。
12.如权利要求7、8、9或11所述的装置,其特征在于,所述时钟校准模块还用于:
根据校准后的USB设备的***时钟频率,校准USB设备硬件引擎时钟频率。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310253671.4A CN103365336B (zh) | 2013-06-24 | 2013-06-24 | Usb设备***时钟的校准方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310253671.4A CN103365336B (zh) | 2013-06-24 | 2013-06-24 | Usb设备***时钟的校准方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103365336A true CN103365336A (zh) | 2013-10-23 |
CN103365336B CN103365336B (zh) | 2016-09-28 |
Family
ID=49366899
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310253671.4A Expired - Fee Related CN103365336B (zh) | 2013-06-24 | 2013-06-24 | Usb设备***时钟的校准方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103365336B (zh) |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104679639A (zh) * | 2015-03-02 | 2015-06-03 | 北京全路通信信号研究设计院有限公司 | 一种时钟晶振频率监测方法和装置 |
CN104850170A (zh) * | 2015-06-04 | 2015-08-19 | 万高(杭州)科技有限公司 | 一种无晶体计量SoC芯片及其时钟获取方法 |
CN104901687A (zh) * | 2015-05-20 | 2015-09-09 | 珠海市杰理科技有限公司 | 时钟频率校准方法和*** |
CN110308762A (zh) * | 2019-06-21 | 2019-10-08 | 广芯微电子(广州)股份有限公司 | 一种芯片内部时钟源的时钟频率校准方法 |
CN110324026A (zh) * | 2019-06-21 | 2019-10-11 | 广芯微电子(广州)股份有限公司 | 一种芯片内部时钟源的时钟频率检测方法 |
CN112015691A (zh) * | 2020-08-20 | 2020-12-01 | 中国科学院微电子研究所 | 一种串行总线设备的时钟校准方法、校准电路和电子设备 |
CN114900263A (zh) * | 2022-05-30 | 2022-08-12 | 合肥美的暖通设备有限公司 | 设备及其校准方法、装置、可读存储介质和空调*** |
CN115083137A (zh) * | 2022-07-19 | 2022-09-20 | 珠海格力电器股份有限公司 | 红外补偿的处理*** |
CN117938154A (zh) * | 2024-02-20 | 2024-04-26 | 广芯微电子(广州)股份有限公司 | 一种芯片内部时钟源频率的校准方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050268143A1 (en) * | 2004-04-09 | 2005-12-01 | Fujitsu Limited | Information processing system and method for timing adjustment |
CN101013934A (zh) * | 2007-02-17 | 2007-08-08 | 北京航空航天大学 | 一种适用于分布式仿真的多路同步时钟分配器 |
CN102331979A (zh) * | 2011-09-28 | 2012-01-25 | 成都市芯锐微电子有限公司 | 应用于usb设备的动态时钟频率校准方法 |
-
2013
- 2013-06-24 CN CN201310253671.4A patent/CN103365336B/zh not_active Expired - Fee Related
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050268143A1 (en) * | 2004-04-09 | 2005-12-01 | Fujitsu Limited | Information processing system and method for timing adjustment |
CN101013934A (zh) * | 2007-02-17 | 2007-08-08 | 北京航空航天大学 | 一种适用于分布式仿真的多路同步时钟分配器 |
CN102331979A (zh) * | 2011-09-28 | 2012-01-25 | 成都市芯锐微电子有限公司 | 应用于usb设备的动态时钟频率校准方法 |
Cited By (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104679639A (zh) * | 2015-03-02 | 2015-06-03 | 北京全路通信信号研究设计院有限公司 | 一种时钟晶振频率监测方法和装置 |
CN104901687A (zh) * | 2015-05-20 | 2015-09-09 | 珠海市杰理科技有限公司 | 时钟频率校准方法和*** |
CN104901687B (zh) * | 2015-05-20 | 2018-04-24 | 珠海市杰理科技股份有限公司 | 时钟频率校准方法和*** |
CN104850170A (zh) * | 2015-06-04 | 2015-08-19 | 万高(杭州)科技有限公司 | 一种无晶体计量SoC芯片及其时钟获取方法 |
CN110308762A (zh) * | 2019-06-21 | 2019-10-08 | 广芯微电子(广州)股份有限公司 | 一种芯片内部时钟源的时钟频率校准方法 |
CN110324026A (zh) * | 2019-06-21 | 2019-10-11 | 广芯微电子(广州)股份有限公司 | 一种芯片内部时钟源的时钟频率检测方法 |
CN112015691A (zh) * | 2020-08-20 | 2020-12-01 | 中国科学院微电子研究所 | 一种串行总线设备的时钟校准方法、校准电路和电子设备 |
CN112015691B (zh) * | 2020-08-20 | 2022-02-08 | 中国科学院微电子研究所 | 一种串行总线设备的时钟校准方法、校准电路和电子设备 |
CN114900263A (zh) * | 2022-05-30 | 2022-08-12 | 合肥美的暖通设备有限公司 | 设备及其校准方法、装置、可读存储介质和空调*** |
CN114900263B (zh) * | 2022-05-30 | 2023-11-21 | 合肥美的暖通设备有限公司 | 设备及其校准方法、装置、可读存储介质和空调*** |
CN115083137A (zh) * | 2022-07-19 | 2022-09-20 | 珠海格力电器股份有限公司 | 红外补偿的处理*** |
CN115083137B (zh) * | 2022-07-19 | 2023-08-11 | 珠海格力电器股份有限公司 | 红外补偿的处理*** |
CN117938154A (zh) * | 2024-02-20 | 2024-04-26 | 广芯微电子(广州)股份有限公司 | 一种芯片内部时钟源频率的校准方法 |
Also Published As
Publication number | Publication date |
---|---|
CN103365336B (zh) | 2016-09-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103365336A (zh) | Usb设备***时钟的校准方法及装置 | |
CN106209093B (zh) | 一种全数字小数分频锁相环结构 | |
KR101167023B1 (ko) | 저전력용 비동기식 고속 위상 편이 복조 방법 | |
CN102045062B (zh) | 一种基于Cordic算法的数字锁相环 | |
CN103490775B (zh) | 基于双环结构的时钟数据恢复控制器 | |
CN103281052A (zh) | 极坐标传送器以及极坐标传送方法 | |
CN102916679B (zh) | 提供精准低频时钟信号的电路及其控制方法 | |
CN109687867A (zh) | 一种无晶振usb设备时钟校准方法及校准电路 | |
CN104485954B (zh) | 一种时间设备的控制方法及时间设备 | |
CN112015691B (zh) | 一种串行总线设备的时钟校准方法、校准电路和电子设备 | |
US20130103969A1 (en) | Clock generation device for usb device | |
CN105024701B (zh) | 一种用于杂散抑制的分频比调制器 | |
CN103149970A (zh) | 时钟校准的方法和*** | |
CN105406838B (zh) | 数字倍频电路及修正时钟占空比的方法 | |
CN203166873U (zh) | 一种原子频标 | |
CN111124363B (zh) | 一种真随机数生成方法及真随机数发生器 | |
CN102931969B (zh) | 数据提取的方法与装置 | |
TWI477129B (zh) | 可調式振盪器之頻率調整方法 | |
CN106998310B (zh) | 二相相移键控解调器 | |
CN113037667B (zh) | 一种基于fpga的数据信号恢复方法 | |
CN104270095B (zh) | 基于cpld的单片方波信号倍频器及输出任意倍频信号的方法 | |
US20120110365A1 (en) | Method for locking frequency of usb device and usb frequency locking device | |
CN103107796B (zh) | 时脉数据恢复电路 | |
CN110299915A (zh) | 时钟恢复电路 | |
CN206270489U (zh) | 一种测速测距的雷达频率合成装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20160928 |