其中pll 包含兩種: MPLL 主要應(yīng)用于各種設(shè)備時鐘的提供,將重點討論
UPLL 應(yīng)用于USB時鐘頻率應(yīng)用,為48M
其中MPLL的設(shè)置主要依靠使用各種鎖相環(huán)和分頻器來改變輸入原始的頻率,經(jīng)過鎖相環(huán)之后可以提升頻率,關(guān)于頻率的選擇主要依靠改變CPU寄存器實現(xiàn),MPLLCON通過改變其中的參數(shù)設(shè)置即可
Mpll = (m * Fin) / (p * 2s)
m = (MDIV + 8), p = (PDIV + 2), s = SDIV
MPLL就是要得到的頻率,我建議用參考手冊給定的頻率設(shè)置即可,標(biāo)準(zhǔn)之際。
接下來該設(shè)置各種設(shè)備的頻率:
我所認(rèn)為的MPLL分出三種模式:FCLK、HCLK、PCLK
這三種也應(yīng)用于不同的場合,F(xiàn)CLK應(yīng)用于CPU的時鐘,HCLK用于AHB bus各種外圍設(shè)備,PCLK 用于APB bus各種接口設(shè)備。
其中FCLK 應(yīng)用就是MPLL的頻率,一樣的,不用設(shè)置的。
HCLK 可以設(shè)置為FCLK或FCLK/2 ,即通過設(shè)置相應(yīng)得寄存器CLKDIVN中的對應(yīng)位HDIVN即可,其中HDIVN為0時對應(yīng)FCLK,為1時對應(yīng)FCLK/2
PCLK可以設(shè)置為HCLK或HCLK/2 ,即通過設(shè)置相應(yīng)得寄存器CLKDIVN中的對應(yīng)位PDIVN即可,其中PDIVN為0時對應(yīng)HCLK,為1時對應(yīng)HCLK/2
If HDIVN=1, the CPU bus mode has to be changed from the fast bus mode to the asynchronous bus mode using following instructions.
MMU_SetAsyncBusMode
mrc p15,0,r0,c1,c0,0
orr r0,r0,#R1_nF:OR:R1_iA
mcr p15,0,r0,c1,c0,0
If HDIVN=1 and the CPU bus mode is the fast bus mode, the CPU will operate by the HCLK. This feature can be used to change the CPU frequency as a half without affecting the HCLK and PCLK.
以上這段文字也是講關(guān)于寫協(xié)處理器來控制協(xié)調(diào)內(nèi)部總線和外部總線的關(guān)系,不過原文有點不太明白,又不敢把錯的意思表達出來,貽害眾生,只好原文照搬后談點看法,我感覺是當(dāng)HCLK中設(shè)置為FCLK/2 時必須協(xié)調(diào)與內(nèi)部總線關(guān)系,至于同步非同步還要通過協(xié)處理器來管理,這樣就可以很好的協(xié)調(diào)各種總線的關(guān)系了,當(dāng)出現(xiàn)HDIVN=1和CPU總線被設(shè)為快速非同步模式時,CPU(我認(rèn)為是總線頻率)可以完全依靠HCLK提供頻率,因此將會改變CPU頻率時不會影響到其它的變化。
今天看數(shù)據(jù)手冊時有發(fā)現(xiàn)了幾點沒有發(fā)現(xiàn)的東西,主要是關(guān)于協(xié)處理器的。
ARM920T 竟然有兩種輸入時鐘方式,F(xiàn)CLK 和BCLK ,其中BCLK 主要提供給AMBA
Bus的,也可以通過選擇協(xié)處理器的R1的NF,iA位來選擇是否供是時鐘給核ARM920T,才明白上面所述的