新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應用 > LPC2478時鐘系統(tǒng)學習筆記

LPC2478時鐘系統(tǒng)學習筆記

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


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

本文引用地址:http://butianyuan.cn/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.

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


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


關(guān)于使用三種時鐘源時應該注意以下兩點:


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


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


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

01 theMain Oscillator作為驅(qū)動PLL的時鐘源。


10 The RTC oscillator作為驅(qū)動PLL的時鐘源。


11保留。


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

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


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


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

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


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


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


注意:


1,如果用戶程序中用到USB接口,F(xiàn)CCO必須為48MZ的整數(shù)倍(如96等)。


2,在選擇CPU的時鐘源,也需要考慮USB的情況,F(xiàn)CCO最好為兩者的公倍數(shù)。低頻時功耗消耗也低。


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


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


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


由以上公式可導出M = (FCCO × N) / (2 × FIN),假設(shè)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,取整數(shù)5即可,CPU=57.6 MHz。如果要求精確,則FCCO只能去48和60的最小公倍數(shù)480MZ,再計算即可。(更多舉例請參考數(shù)據(jù)手冊)


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


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


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


PLL的啟動設(shè)置順序:此序列非常重要不能出現(xiàn)錯誤。


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


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


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) 該寄存器是用來調(diào)整片內(nèi)的4 MHz振蕩器。
Peripheral Clock Selection registers 0 and 1 (PCLKSEL0 and PCLKSEL1)該寄存器用來設(shè)置外圍模塊的時鐘。(數(shù)據(jù)手冊P58)



評論


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

關(guān)閉