新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > LPC2478時鐘系統學習筆記

        LPC2478時鐘系統學習筆記

        作者: 時間:2016-11-20 來源:網絡 收藏
        LPC2478芯片有 the Main Oscillator, the Internal RC Oscillator, and the RTC oscillator三個獨立的時鐘系統。下面分別介紹三者:


        上電或任何復位發生時,lpc2478將the Internal RC Oscillator作為時鐘源。此后用戶程序(軟件)選擇是否選用其它兩個時鐘源。

        本文引用地址:http://www.104case.com/article/201611/319017.htm


        對于lpc2478來說,其外部時鐘在1MZ-24MZ之間。the Main Oscillator可以作為CPU的時鐘源,也可以作為或不作為PLL的時鐘源。


        The oscillator(晶振) output is called oscclk。在使用the Main Oscillator作為時鐘源時,其可以工作在兩種模式下:slave mode and oscillation mode.

        其電容的選擇可參考數據手冊。我們通過軟件控制SCS register來啟動the Main Oscillator作為時鐘源(OSCRANGE,OSCEN,OSCSTAT位)。OSCRANGE為0,其頻率為1MZ-20MZ;為1,其頻率為15MZ-24MZ. OSCEN為1使能。OSCSTAT為1說明the Main Oscillator可以作為時鐘源,已經穩定。


        The RTC oscillator(Real-Time Clock)主要用于實時時鐘看門狗定時器,也可以用于驅動PLL和CPU.


        關于使用三種時鐘源時應該注意以下兩點:


        1、the Internal RC Oscillator不能用于USB模塊。


        2、如果CAN模塊的波特率在100K以上時,不能使用the Internal RC Oscillator作為時鐘源。


        The CLKSRCSEL register的前兩位決定使用哪種時鐘源作為驅動PLL的時鐘源。
        00(默認)the Internal RC Oscillator作為驅動PLL的時鐘源。

        01 theMain Oscillator作為驅動PLL的時鐘源。


        10 The RTC oscillator作為驅動PLL的時鐘源。


        11保留。


        PLL (Phase Locked Loop)——鎖相環。LPC2478的PLL可接受32K-24MZ的驅動時鐘源。經過其倍頻后供給CPU和USB等模塊使用.

        LPC2400系列中引導啟動與LPC2000系列稍有不同。其中有關PLL的部分有些需要注意。在ISP模式下,引導代碼會通過IRC時鐘源驅動PLL,從而啟動PLL。


        這就是說在我們的用戶程序開始執行之前PLL已經使能,如果我們選擇其他的時鐘源,必須按照步驟次序斷開PLL.另外,在ISP模式下,引導代碼會改變某些寄存器的值。如the SCS register中的GPIOM位會被置位。用戶必須注意這點,否則可能導致PORT0 and PORT1不能正常使用。


        PLL寄存器主要有以下四個。PLLCON,PLLCFG,PLLSTAT,PLLFEED。

        PLLCON(可讀寫)包括使能和連接位。PLL作為其他模塊的時鐘源之前必須啟動,使能,鎖相達到穩定狀態。


        PLLCFG(可讀寫)為配置寄存器。MSEL設置‘M’的值,NSEL設置‘N’的值。下面為計算公式:FCCO = (2 × M × FIN) / N


        當輸入時鐘FIN在MZ級別上變化時,‘M’取值范圍6-512,當輸入時鐘在低頻變化時,‘M’取特殊的值(參考數據手冊)。 FIN范圍是 32 kHz to 50 MHz。 FCCO范圍是 275 MHz to 550 MHz。


        注意:


        1,如果用戶程序中用到USB接口,FCCO必須為48MZ的整數倍(如96等)。


        2,在選擇CPU的時鐘源,也需要考慮USB的情況,FCCO最好為兩者的公倍數。低頻時功耗消耗也低。


        3,對于驅動PLL時鐘源的選擇上述三者均可,但如果用到USB則必須使用the main oscillator。


        4,通過計算公式得到的‘N’,‘M’值必須減一寫入寄存器中。其中‘N’值最好小一點。最好使用數據手冊中推薦的值。


        舉例:用戶程序中用到USB,期望的FCCO值為288MZ,CPU工作頻率60MZ,外部時鐘為4MZ。


        由以上公式可導出M = (FCCO × N) / (2 × FIN),假設N=1,
        M = 288 × 106 / (2 × 4 × 106) = 36,PLLCFG中位0x23 (N - 1 = 0; M - 1 = 35 = 0x23)。對于CPU,288 × 106 / 60 × 106 = 4.8,取整數5即可,CPU=57.6 MHz。如果要求精確,則FCCO只能去48和60的最小公倍數480MZ,再計算即可。(更多舉例請參考數據手冊)


        PLLSTAT(只讀)狀態寄存器。MSEL, NSEL為當前值比實際使用的值小1.PLLE,PLLC為1表示PLL使能連接。PLOCK為1表示鎖定相位,它可以監視PLL是否達到穩定狀態,可以為下一級使用。PLOCK還連接到了中斷控制器。用戶使用軟件可以控制。當中斷發生,PLL連接使用,中斷失效。


        PLLFEED寄存器通過按順序寫數據保護PLLCON,PLLCFG寄存器中的值。1. 寫 0xAA to PLLFEED.2. 寫 0x55 to PLLFEED.如果次序中任何一步不正確,PLLCON,PLLCFG寄存器中的值不會改變。


        掉電模式下PLL自動關閉。當芯片從掉電模式下被喚醒時,PLL不會自動的連接,必須由軟件完成(由相應的中斷服務程序)。需要注意的是不能簡單的通過向PLLFEED寄存器中依次喂食啟動PLL,如果這樣會出現錯誤。


        PLL的啟動設置順序:此序列非常重要不能出現錯誤。


        1,如果PLL已經連接,通過喂食序列斷開連接。
        2,通過喂食序列斷開使能。
        3,如果需要加快無鎖相時的速度,改變CPU分頻器的設置。
        4,寫The PCLKSRCSEL register以選擇相應的時鐘源驅動PLL。
        5,寫PLLCFG,喂食序列保證生效。此時PLL是不使能狀態。
        6,使能PLL, 喂食序列保證生效。
        7,在使能PLL的條件下,改變CPU分頻器的設置。在連接PLL之前這一點非常重要。
        8,等待PLL穩定。通過監視PLOCK(the PLLSTAT register)是否置位確定。或者通過中斷實現,或者等待固定時間。
        9,連接PLL,喂食序列保證生效。


        PLL輸出的時鐘通過分頻用于CPU和USB等模塊。當USB接口使時,CPU頻率必須大于18MZ。USB接口頻率必須是48MZ的整數倍。


        CPU Clock Configuration register (CCLKCFG ),配置寄存器控制PLL輸出給CPU分頻的大小。當PLL無連接時,CCLKCFG取值為1。CCLKSEL取值為0,1,3,5……255。此值加1為實際分頻大小。


        USB Clock Configuration register (USBCLKCFG),配置寄存器控制PLL輸出給USB分頻的大小。當PLL無連接時,CCLKCFG取值為1。USBCLKCFG取值為0,1,2,3,4,5,6,7。此值加1為實際分頻大小。


        IRC Trim Register (IRCTRIM) 該寄存器是用來調整片內的4 MHz振蕩器。
        Peripheral Clock Selection registers 0 and 1 (PCLKSEL0 and PCLKSEL1)該寄存器用來設置外圍模塊的時鐘。(數據手冊P58)



        評論


        技術專區

        關閉
        主站蜘蛛池模板: 海南省| 班戈县| 鸡西市| 毕节市| 枣阳市| 凤城市| 东兰县| 依兰县| 安阳县| 彝良县| 襄垣县| 广德县| 蒙山县| 阳朔县| 正安县| 新平| 托克逊县| 苏尼特右旗| 海安县| 施秉县| 招远市| 友谊县| 江川县| 吉水县| 酒泉市| 临夏县| 福清市| 泾阳县| 临颍县| 柳林县| 孟村| 宿迁市| 宜君县| 四子王旗| 廊坊市| 枞阳县| 高州市| 岑巩县| 宝鸡市| 崇信县| 塘沽区|