找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 3612|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

單片機(jī)超頻之PLL鎖相環(huán)設(shè)置

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:105323 發(fā)表于 2016-3-4 16:51 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式

什么是鎖相環(huán)呢?
    MCU的支撐電路一般需要外部時(shí)鐘來(lái)給MCU提供時(shí)鐘信號(hào),而外部時(shí)鐘的頻率可能偏低,為了使系統(tǒng)更加快速穩(wěn)定運(yùn)行,需要提升系統(tǒng)所需要的時(shí)鐘頻率。這就得用到鎖相環(huán)了。例如MCU用的外部晶振是16M的無(wú)源晶振,則可以通過(guò)鎖相環(huán)PLL把系統(tǒng)時(shí)鐘倍頻到24M,從而給系統(tǒng)提供更高的時(shí)鐘信號(hào),提高程序的運(yùn)行速度。51單片機(jī),AVR單片機(jī)內(nèi)部沒(méi)有鎖相環(huán)電路,其系統(tǒng)時(shí)鐘直接由外部晶振提供。而XS128內(nèi)部集成了鎖相環(huán)電路,其系統(tǒng)時(shí)鐘既可由外部晶振直接提供,也可以通過(guò)鎖相環(huán)倍頻后提供,當(dāng)然,還有由XS128內(nèi)部的時(shí)鐘電路來(lái)提供(當(dāng)其它來(lái)源提供的系統(tǒng)時(shí)鐘不穩(wěn)定時(shí),內(nèi)部時(shí)鐘電路就起作用了,也就是自時(shí)鐘模式)。
    鎖相環(huán)作為一個(gè)提供系統(tǒng)時(shí)鐘的模塊,是一個(gè)基本的模塊,幾乎每次編程序都得用到。下面記一下怎樣配置鎖相環(huán)來(lái)設(shè)定想要的系統(tǒng)時(shí)鐘。
    鎖相環(huán)PLL、自時(shí)鐘模式和前面說(shuō)的實(shí)時(shí)中斷RTI、看門(mén)狗COP都屬于系統(tǒng)時(shí)鐘與復(fù)位CRG中的模塊,固前面用到的寄存器,這里有些會(huì)再用到。
    在程序中配置鎖相環(huán)的步驟如下:
    第一、禁止總中斷;
    第二、寄存器CLKSEL的第七位置0,即CLKSEL_PLLSEL=0。選擇時(shí)鐘源為外部晶振OSCCLK,在PLL程序執(zhí)行前,內(nèi)部總線(xiàn)頻率為OSCCLK/2。
    CLKSEL_PLLSEL=0時(shí),系統(tǒng)時(shí)鐘由外部晶振直接提供,系統(tǒng)內(nèi)部總線(xiàn)頻率=OSCCLK/2(OSCCLK為外部晶振頻率)。CLKSEL_PLLSEL=1時(shí),系統(tǒng)時(shí)鐘由鎖相環(huán)提供,此時(shí)系統(tǒng)內(nèi)部總線(xiàn)頻率=PLLCLK/2(PLLCLK為鎖相環(huán)倍頻后的頻率)。
   第三、禁止鎖相環(huán)PLL,即PLLCTL_PLLON=0。
    當(dāng)PLLCTL_PLLON=0時(shí),關(guān)閉PLL電路。當(dāng)PLLCTL_PLLON=1時(shí),打開(kāi)PLL電路。
    第四、根據(jù)想要的時(shí)鐘頻率設(shè)置SYNR和REFDV兩個(gè)寄存器。
    SYNR和REFDV兩個(gè)寄存器專(zhuān)用于鎖相環(huán)時(shí)鐘PLLCLK的頻率計(jì)算,計(jì)算公式是:
                     PLLCLK=2*OSCCLK*(SYNR+1)/(REFDV+1)
   其中,PLLCLK為PLL模塊輸出的時(shí)鐘頻率;OSCCLK為晶振頻率;SYNR、REFDV分別為寄存器SYNR、REFDV中的值。這兩個(gè)寄存器只有在PLLSEL=0時(shí)才能夠?qū)懭耄ㄟ@里就是第二步的設(shè)置原因所在了)。
   第五、打開(kāi)PLL,即PLLCTL_PLLON=1。
    第六、CRGFLG_LOCK位,確定PLL是否穩(wěn)定。
    當(dāng)鎖相環(huán)PLL電路輸出的頻率達(dá)到目標(biāo)頻率的足夠小的誤差范圍內(nèi)時(shí),LOCK位置1,此時(shí)說(shuō)明PLLCLK已經(jīng)穩(wěn)定,可以作為系統(tǒng)的時(shí)鐘了。該位在正常情況下為只讀位。
    第七、PLLCLK穩(wěn)定后,允許鎖相環(huán)時(shí)鐘源PLLCLK為系統(tǒng)提供時(shí)鐘,即CLKSEL_PLLSEL=1。
    到這里,鎖相環(huán)的設(shè)置就完畢了。
    如果想更靈活地配置系統(tǒng)時(shí)鐘,就還得用到下面的寄存器了,下面逐一說(shuō)說(shuō):
    1、CRGFLG_LOCKIF鎖相環(huán)的中斷標(biāo)志位。當(dāng)系統(tǒng)時(shí)鐘因?yàn)榉(wěn)定或不穩(wěn)定而導(dǎo)致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停止位。當(dāng)CLKSEL_PLLWAI=1時(shí),系統(tǒng)進(jìn)入等待模式時(shí),鎖相環(huán)PLL停止工作。當(dāng)CLKSEL_PLLWAI=0時(shí),系統(tǒng)進(jìn)入等待模式時(shí),鎖相環(huán)PLL仍然工作。
   下面順便說(shuō)一下與自時(shí)鐘模式相關(guān)的幾個(gè)寄存器:
    CRGFLG_SCMIF自時(shí)鐘模式中斷標(biāo)志位。當(dāng)SCM位變化時(shí),該位置1。此時(shí),如果CRGINT_SCMIE=1,則產(chǎn)生中斷。
    CRGFLG_SCM    自時(shí)鐘模式狀態(tài)位。當(dāng)晶振頻率不穩(wěn)定時(shí),該位置1,系統(tǒng)會(huì)進(jìn)入自時(shí)鐘模式,系統(tǒng)的時(shí)鐘將由自時(shí)鐘模式下的時(shí)鐘提供。
    CRGINT_SCMIE自時(shí)鐘模式中斷的使能位。當(dāng)CRGINT_SCMIE=1時(shí),允許產(chǎn)生自時(shí)鐘模式中斷。當(dāng)CRGINT_SCMIE=0時(shí),不能產(chǎn)生自時(shí)鐘模式中斷。
    PLLCTL_SCME自時(shí)鐘模式使能位。在自時(shí)鐘模式下,該位不能被清0。PLLCTL_SCME=1時(shí),晶振時(shí)鐘失靈系統(tǒng)將強(qiáng)制進(jìn)入自時(shí)鐘模式。當(dāng)PLLCTL_SCME=0時(shí),晶振失靈將導(dǎo)致時(shí)鐘監(jiān)控器復(fù)位。
   下面附一條鎖相環(huán)的初始化程序;
void MCUInit()
{
      DISABLE_INTERRUPTS;          //(1)禁止總中斷
       CLKSEL&= 0x7f;            //(2)CLKSEL的第7位置0,選擇系統(tǒng)時(shí)鐘源為OSCCLK
      PLLCTL &=0xbf;             //(3)禁止PLL   ,  PLLCTL.6(pllon)設(shè)為0;先關(guān)閉PLL
       SYNR =0x01;              //(4)根據(jù)需要的時(shí)鐘頻率設(shè)置SYNR和REFDV寄存器
       REFDV =0x00;            
      PLLCTL |=(1<<6);         //(5)打開(kāi)PLL    ,PLLCTL.6(pllon)設(shè)為1;開(kāi)PLL
      while (( CRGFLG&0x08) ==0x00);         //(6)通過(guò)判斷LOCK位,
                                                      //確定PLL是否穩(wěn)定
      CLKSEL |=(1<<7);        //(7)時(shí)鐘頻率穩(wěn)定后,允許鎖相環(huán)時(shí)鐘源作為系統(tǒng)時(shí)鐘源;
                                         //本句執(zhí)行后:BusClock=PLLCLK/2
    }         
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表