在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            新聞中心

            EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 單片機超頻之PLL鎖相環(huán)設(shè)置

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

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


            評論


            技術(shù)專區(qū)

            關(guān)閉