版权归原作者所有,如有侵权,请联系我们

[科普中国]-主时钟

科学百科
原创
科学百科为用户提供权威科普内容,打造知识科普阵地
收藏

定义

主时钟是用于控制其他时钟频率的时钟,是产生准确定时信号用以控制其他时钟及可能还有设备的时钟。这种时钟的长期频率偏差应该小于,在国内数字网中,在由单一参考时钟控制所有时钟以取得完全同步网的情形,这个控制时钟一般称为主时钟,在具有两个以上参考时钟的完全同步网,其间通过国内链路互相同步的情形,其中应有一参考时钟的精度和稳定度最高,作为主控时钟,安装在某一数字交换中心作为网的频率控制中心。1

主时钟可由以下来源得到:(1)一个外部产生的时钟信号;(2)带有外部连接晶体的片内振荡器;(3)一个内片PLL或频率合成器,它由外部时钟信号产生一个主时钟。DSP处理器的主时钟通常以100MHz或更高速率产生时钟信号。2

最佳主时钟算法最佳主时钟算法(Best Master Clock,BMC)指明了一种方法,该方法使得本地时钟能够决定它所能看到的所有时钟,包括自身,哪一个时钟是最好的。该算法独立于每个PTP端口,在端口选择出比较好的时钟之后,又将这些较好的时钟进行比较,最后确定出一个最好的时钟,指定它作为系统中的最佳主时钟。3

最佳主时钟算法由两个部分组成,数据集比较算法和状态决定算法。其中,数据集比较算法计算一个二元关系数据集,该数据集分别和两个时钟端口相关联。其中的某个数据集可能代表本地时钟的缺省特性,而另一个则是建立在接收到的同步报文中所包含的信息的基础上。状态决定算法的作用时根据被选择出来的主时钟的数据集来更新本地的数据集以及更新每个时钟的PTP状态。3

系统主时钟组成单元系统主时钟比较复杂,主要有以下三部分组成单元

(1)有两个振荡器:内部8MHz的高速RC振荡器HSI和外部高速振荡器HSE;

(2)有三个时钟源:HIS、HSE和锁相环PLL;

(3)有一个倍频器PLLMUL和一个AHB分频器。

这些单元为系统提供了很宽范围内的选择的可能性。4

时钟源的选择内部8MHz的高速RC振荡器HSI在上电复位后自动打开,但精度不高,在要求不高的场合可以直接使用。如果精度不能满足要求,则可以使用外部4~16MHz的外部振荡器(晶振)。4

外部高速振荡器HSE打开的方法如下:

(1)打开/关断高速外部振荡器使用RCC_CR寄存器中的HSEON位;

(2)判断外部高速振荡器是否一进就绪,使用RCC_CR寄存器中的HSERDY位;

(3)使能高速外部振荡器中断,使用RCC_CIR寄存器中的HSERDYIE位;

(4)高速外部振荡器中断标志位HSERDYF在RCC_CIR寄存器中;

(5)高速外部振荡器中断清除位HSERDYC在RCC_CIR寄存器中。

内部高速RC振荡器HIS在上电复位后自动打开,但如果系统使用HSE作为时钟源,HIS也可以关闭(只是为了低功耗,也可以不关闭)。事实上,HIS的设置方法也和HSE一样:

(1)打开/关断高速内部振荡器使用RCC_CR寄存器中的HSION位;

(2)判断内部高速振荡器是否一进就绪,使用RCC_CR寄存器中的HSIRDY位;

(3)使能高速内部振荡器中断,使用RCC_CIR寄存器中的HSIERDYIE位;

(4)高速内部振荡器中断标志位HSIRDYF在RCC_CIR寄存器中;

(5)高速内部振荡器中断清除位HSIRDYC在RCC_CIR寄存器中。4

内部高速振荡器因为精度较低,所以系统设计了一套校准方法:高速内部时钟校准,使用时钟控制寄存器RCC_CR中的HSITRIM位域。4

锁相环锁相环PLL在上电复位后是关闭的,如果使用的话需要打开。第一步是选择一个关于HSE的PLL入口信号,在这个入口PLLXTPRE处有两个HSE的时钟源:一个是HSE,另一个是二频分的HSE。设置PLLTPRE的方法如下:二分频HSE将RCC_CFGR寄存器中的PLLXTPRE位置1,不分频则清零(默认状态)。

通过这个入口之后时钟振荡源进入PLL时钟源选择器PLLSRC,该选择器主要选择使用哪一个振荡器作为时钟源。从HIS进来的信号是一个二分频的信号。该选择器设置方法如下:设置PLLSRC使用RCC_CFGR寄存器中的PLLSRC位域。4

上电复位后,这个PLLSRC=0,选择二分频的内部RC振荡器HIS作为时钟源。经过该选择器之后,时钟信号进入PLL倍频器PLLMUL,倍频器可以把输入时钟进行2~6倍倍频,选择范围比较宽。该倍频器没有 (不倍频)的选择,因为如果不希望倍频,可以使时钟源不通过PLLSRC选择器。PLLMUL的使用方法如下:设置PLLMUL使用RCC_CFGR寄存器中的PLLMUL位域。该PLLMUL共有15种选择。4

如果以上都设置完毕,PLL还不能运行,还需要打开PLL和进行以下设置:

(1)打开/关断PLL,用RCC_CR寄存器中的PLLON位;

(2)判断PLL是否已经就绪,使用RCC_CR寄存器中的PLLRDY位;

(3)使能PLL中断,使用RCC_CIR寄存器中的PLLRDYIE位;

(4)PLL中断标志位PLLRDYF在RCC_CIR寄存器中;

(5)PLL中断清除位PLLRDYC在RCC_CIR寄存器中。

通过以上设置过程可以打开时钟锁相环PLL,也可以使PLL中断。4

USB时钟从倍频器出来的时钟信号经过一个USB分频器直接输出到USB接口。要求其输出时钟是48MHz。分频使用方法如下:设置USB分频器使用RCC-CFGR寄存器中的USBPRE位。

USB分频器只有不分频或1/1.5分频两种选择。4

时钟选择开关SW和AHB分频器共有三个时钟源进入时钟切换开关,SW。分别是来自HSI和HSE的不分频时钟以及来自PLL的时钟。切换开关SW选择其中的一个,方法如下:

(1)设置SW时钟切换开关,使用时钟配置寄存器RCC-CFGR中的SW域;

(2)观察时钟切换开关SW的状态,使用RCC-CFGR中的SWS域;

从SW出去的时钟称为系统时钟,最大可以达到72MHz。该系统时钟供给系统,作为整个系统的时钟源。系统时钟首先驱动总线AHB时还可以再分频,即经过AHB分频器。AHB分频器使用方法如下:

(1)设置AHB分频器使用时钟配置寄存器RCC-CFGR中的HPRE域;

(2)AHB分频有9种选择,从1分频到512分频,可选范围非常大。经过这个选择器后,时钟进入AHB总线系统。4

三个时钟开关三个时钟开关与内部存储器有关。进入AHB的时钟信号,在进入存储器和DMA之前还有三个开关,它们是Flash存储器时钟开关、SRAM时钟开关和DMA时钟开关。前两个开关只和睡眠模式有关。

(1)睡眠模式时,打开/关断Flash存储器时钟,使用RCC-AHBENR寄存器中的FLITF位;

(2)睡眠模式时,打开/关断SRAM存储器时钟,使用RCC-AHBENR寄存器中的SRAMEN位;

(3)打开/关断DMA时钟,使用RCC-AHBENR寄存器中的DMAEN位。4

时钟控制寄存器和时钟中断寄存器时钟控制寄存器(RCC-CR)可以打开/关断振荡器和时钟。寄存器的地址是0x4002 1000,复位值是0000 0083。

时钟中断寄存器(RCC-CIR)可以设置时钟中断,寄存器的地址是0x4002 1008,复位值是0000 0000。4