鎖相環(huán)控制及初始化簡(jiǎn)析
MCU的支撐電路一般需要外部時(shí)鐘來(lái)給MCU提供時(shí)鐘信號,而外部時(shí)鐘的頻率可能偏低,為了使系統更加快速穩定運行,需要提升系統所需要的時(shí)鐘頻率。這就得用到鎖相環(huán)了。例如MCU用的外部晶振是16M的無(wú)源晶振,則可以通過(guò)鎖相環(huán)(PLL)把系統時(shí)鐘倍頻到24M,從而給系統提供更高的時(shí)鐘信號,提高程序的運行速度。 51單片機,AVR單片機內部沒(méi)有鎖相環(huán)電路,其系統時(shí)鐘直接由外部晶振提供。而XS128內部集成了鎖相環(huán)電路,其系統時(shí)鐘既可由外部晶振直接提供,也可以通過(guò)鎖相環(huán)倍頻后提供,當然,還有由XS128內部的時(shí)鐘電路來(lái)提供(當其它來(lái)源提供的系統時(shí)鐘不穩定時(shí),內部時(shí)鐘電路就起作用了,也就是自時(shí)鐘模式)。
本文引用地址:http://dyxdggzs.com/article/148380.htm鎖相環(huán)作為一個(gè)提供系統時(shí)鐘的模塊,是一個(gè)基本的模塊,幾乎每次編程序都得用到。下面記一下怎樣配置鎖相環(huán)來(lái)設定想要的系統時(shí)鐘。
鎖相環(huán)(PLL)、自時(shí)鐘模式和前面說(shuō)的實(shí)時(shí)中斷RTI、看門(mén)狗COP都屬于系統時(shí)鐘與復位CRG中的模塊,固前面用到的寄存器,這里有些會(huì )再用到。
在程序中配置鎖相環(huán)的步驟如下:
第一、禁止總中斷;
第二、寄存器CLKSEL的第七位置0,即CLKSEL_PLLSEL=0。選擇時(shí)鐘源為外部晶振OSCCLK,在鎖相環(huán)程序執行前,內部總線(xiàn)頻率為OSCCLK/2。CLKSEL_PLLSEL=0時(shí),系統時(shí)鐘由外部晶振直接提供,系統內部總線(xiàn)頻率=OSCCLK/2(OSCCLK為外部晶振頻率)。CLKSEL_PLLSEL=1時(shí),系統時(shí)鐘由鎖相環(huán)提供,此時(shí)系統內部總線(xiàn)頻率=PLLCLK/2 (PLLCLK為鎖相環(huán)倍頻后的頻率)。
第三、禁止鎖相環(huán)(PLL),即PLLCTL_PLLON=0。當PLLCTL_PLLON=0時(shí),關(guān)閉PLL電路。當PLLCTL_PLLON=1時(shí),打開(kāi)PLL電路。
第四、根據想要的時(shí)鐘頻率設置SYNR和REFDV兩個(gè)寄存器。
SYNR和REFDV兩個(gè)寄存器專(zhuān)用于鎖相環(huán)時(shí)鐘PLLCLK的頻率計算,計算公式是:PLLCLK=2*OSCCLK*(SYNR+1)/(REFDV+1)其中,PLLCLK為PLL模塊輸出的時(shí)鐘頻率;OSCCLK為晶振頻率;SYNR、REFDV分別為寄存器SYNR、REFDV中的值。這兩個(gè)寄存器只有在PLLSEL=0時(shí)才能夠寫(xiě)入(這里就是第二步的設置原因所在了)。
第五、打開(kāi)PLL,即PLLCTL_PLLON=1。
第六、CRGFLG_LOCK位,確定PLL是否穩定。當鎖相環(huán)PLL電路輸出的頻率達到目標頻率的足夠小的誤差范圍內時(shí),LOCK位置1,此時(shí)說(shuō)明PLLCLK已經(jīng)穩定,可以作為系統的時(shí)鐘了。該位在正常情況下為只讀位。
第七、PLLCLK穩定后,允許鎖相環(huán)時(shí)鐘源PLLCLK為系統提供時(shí)鐘,即CLKSEL_PLLSEL=1。到這里,鎖相環(huán)的設置就完畢了。
如果想更靈活地配置系統時(shí)鐘,就還得用到下面的寄存器了,下面逐一說(shuō)說(shuō):
1、CRGFLG_LOCKIF 鎖相環(huán)的中斷標志位。當系統時(shí)鐘因為穩定或不穩定而導致LOCK位(上面已提到)變化時(shí),該位置1。此時(shí),如果CRGINT_LOCKIE=1,則產(chǎn)生中斷。CRGINT_LOCKIE=1時(shí),則允許產(chǎn)生鎖相環(huán)鎖定中斷。CRGINT_LOCKIE=0時(shí),則不允許。
2、CLKSEL_PLLWAI是等待模式PLL停止位。當CLKSEL_PLLWAI=1時(shí),系統進(jìn)入等待模式時(shí),鎖相環(huán)PLL停止工作。當CLKSEL_PLLWAI=0時(shí),系統進(jìn)入等待模式時(shí),鎖相環(huán)PLL仍然工作
下面順便說(shuō)一下與自時(shí)鐘模式相關(guān)的幾個(gè)寄存器:CRGFLG_SCMIF 自時(shí)鐘模式中斷標志位。當SCM位變化時(shí),該位置1。此時(shí),如果CRGINT_SCMIE=1,則產(chǎn)生中斷。 CRGFLG_SCM 自時(shí)鐘模式狀態(tài)位。當晶振頻率不穩定時(shí),該位置1,系統會(huì )進(jìn)入自時(shí)鐘模式,系統的時(shí)鐘將由自時(shí)鐘模式下的時(shí)鐘提供。CRGINT_SCMIE 自時(shí)鐘模式中斷的使能位。當CRGINT_SCMIE=1時(shí),允許產(chǎn)生自時(shí)鐘模式中斷。當CRGINT_SCMIE=0時(shí),不能產(chǎn)生自時(shí)鐘模式中斷。PLLCTL_SCME 自時(shí)鐘模式使能位。在自時(shí)鐘模式下,該位不能被清0。PLLCTL_SCME=1時(shí),晶振時(shí)鐘失靈系統將強制進(jìn)入自時(shí)鐘模式。當PLLCTL_SCME=0時(shí),晶振失靈將導致時(shí)鐘監控器復位。
晶振相關(guān)文章:晶振原理 鎖相環(huán)相關(guān)文章:鎖相環(huán)原理 鎖相放大器相關(guān)文章:鎖相放大器原理
評論