新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > s3c2440的FCLK、HCLK、PCLK

s3c2440的FCLK、HCLK、PCLK

作者: 時間:2016-11-09 來源:網絡 收藏

1、系統(tǒng)工作時鐘頻率

在對系統(tǒng)時鐘進行提速之前,讓我們先來了解下S3C2440上的工作時鐘頻率,FCLK,HCLKPCLK,其中FCLK主要為ARM920T內核提供工作頻率,如圖2-44所示:

本文引用地址:http://m.butianyuan.cn/article/201611/317609.htm

圖2-44 ARM920T內核結構

HCLK主要為S3C2440 AHB總線(Advanced High performance Bus)上掛接硬件提供工作頻率,AHB總線主要掛接有內存,NAND,LCD控制器等硬件,如圖2-45所示:

圖2-45 S3C2440 AHB總線上掛接硬件

PCLK主要為APB總線提供工作頻率,由圖2-46所示,APB總線主要掛接UART串口,Watchdog等硬件控制器。

圖2-46 S3C2440 APB總線掛接硬件

也就是說,對于一些需要時鐘工作的硬件,如果切斷其時鐘源 ,就不會再工作,從而達到降低功耗的目的,這也是便攜嵌入式設備里的一個特點。

時鐘源:為了減少外界環(huán)境對開發(fā)板電磁干擾,降低制作成本,通常開發(fā)板的外部晶振時鐘頻率都很低,MINI2440開發(fā)板由12MHz的晶振來提供時鐘源,要想讓CPU運行在更高的頻率就要通過時鐘控制邏輯單元PLL(鎖相環(huán))來提高主頻。

S3C2440里有兩個PLL:MPLL和UPLL,MPLL用來產生FCLK,HCLK,PCLK的高頻工作時鐘,UPLL用來為USB提供工作頻率。

圖2-47系統(tǒng)時鐘初始化時序

開發(fā)板上電后,晶振OSC開始提供晶振時鐘,由于系統(tǒng)剛剛上電,電壓信號等都還不穩(wěn)定,這時復位信號(nRESET)拉低,這時MPLL雖然默認啟動,但是如果不向MPLLCON中寫入值,那么外部晶振則直接作為系統(tǒng)時鐘FCLK,過幾毫秒后,復位信號上拉,CPU開始取指運行,這時可以通過代碼設置啟動MPLL,MPLL啟動需要一定鎖定時間(LockTime),這是因為MPLL輸出頻率還沒有穩(wěn)定,在這期間FCLK都停止輸出,CPU停止工作,過了LockTime后時鐘穩(wěn)定輸出,CPU工作在新設置的頻率下,這時可以通過設置FCLK,HCLK和PCLK三者的頻率比例來產生不同總線上需要的不同頻率,下面詳細介紹開啟MPLL的過程:

l 設置LockTime變頻鎖定時間

l 設置FCLK與晶振輸入頻率(Fin)的倍數

l 設置FCLK,HCLK,PCLK三者之間的比例

LockTime變頻鎖定時間由LOCKTIME寄存器(見下表)來設置,由于變頻后開發(fā)板所有依賴時鐘工作的硬件都需要一小段調整時間,該時間計數通過設置LOCKTIME寄存器[31:16]來設置UPLL(USB時鐘鎖相環(huán))調整時間,通過設置LOCKTIME寄存器 [15:0]設置MPLL調整時間,這兩個調整時間數值一般用其默認值即可。

表2-8變頻鎖定時間寄存器(LOCKTIME)

寄存器名

地址

是否讀寫

描述

復位默認值

LOCKTIME

0x4C000000

R/W

變頻鎖定時間寄存器

0xFFFFFFFF

LOCKTIME

描述

初始值

U_TIME

[31:16]

UPLL對UCLK的鎖定時間值

(U_TIME:300us)

0xFFFF

M_TIME

[15:0]

MPLL對于FCLK,HCLK,PCLK的鎖定時間值(M_TIME:300us)

0xFFFF

FCLK與Fin的倍數通過MPLLCON寄存器設置,三者之前有以下關系:

MPLL(FCLK) = (2*m*Fin)/(p*2^s)

其中:m = MDIV + 8, p = PDIV + 2, s = SDIV

當設置完MPLL之后,就會自動進入LockTime變頻鎖定期間,LockTime之后,MPLL輸出穩(wěn)定時鐘頻率。

表2-9 MPLL配置寄存器(MPLLCON)

寄存器名

地址

是否讀寫

描述

復位默認值

MPLLCON

0x4C000004

R/W

MPLL配置寄存器

0x00096030

MPLLCON

描述

初始值

MDIV

[19:12]

分頻器控制位

0x96

PDIV

[9:4]

預分頻器控制位

0x03

SDIV

[1:0]

后分頻器控制位

0x0

通過上述算法比較難以找到合適的PLL值,下表給出了官方推薦的一些MPLL參考設置:

表2-10 官方推薦MPLL

FCLK,HCLK,PCLK三者之間的比例通過CLKDIVN寄存器進行設置,S3C2440時鐘設置時,還要額外設置CAMDIVN寄存器,如下表,HCLK4_HALF,HCLK3_HALF分別與CAMDIVN[9:8]對應,下表列出了各種時鐘比例:

表2-11 FCLK HCLK PCLK設置比例

如果HDIV設置為非0,CPU的總線模式要進行改變,默認情況下FCLK = HCLK,CPU工作在fast bus mode快速總線模式下,HDIV設置為非0后, FCLK與HCLK不再相等,要將CPU改為asynchronous bus mod異步總線模式,可以通過下面的嵌入匯編代碼實現:

__asm{

mrc p15, 0, r1, c1, c0, 0 /* 讀取CP15 C1寄存器 */

orr r1, r1, #0xc0000000 /* 設置CPU總線模式 */

mcr p15, 0, r1, c1, c0, 0 /* 寫回CP15 C1寄存器 */

}

關于mrc與mcr指令,請查看MMU與內存保護的實現章節(jié)。

表2-12時鐘分頻器控制寄存器(CLKDIVN)

寄存器名

地址

是否讀寫

描述

復位默認值

CLKDIVN

0x4C000014

R/W

時鐘分頻器控制寄存器

0x00000000

CLKDIVN

描述

初始值

DIV_UPLL

[3]

UCLK選擇寄存器(UCLK必須對USB提供48MHz)

0:UCLK=UPLL clock

1:UCLK=UPLL clock/2

0

HDIVN

[2:1]

00:HCLK = FCLK/1

01:HCLK = FCLK/2

10:HCLK = FCLK/4,當CAMIVN[9]=0

HCLK = FCLK/8,當CAMIVN[9]=1

11: HCLK = FCLK/3,當CAMIVN[8]=0

HCLK = FCLK/6,當CAMIVN[8]=1

0

PDIVN

[0]

0:PCLK是和HCLK/1相同時鐘

1:PCLK是和HCLK/2相同時鐘

0

表2-13攝像頭時鐘分頻控制寄存器(CAMDIVN)

寄存器名

地址

是否讀寫

描述

復位默認值

CAMDIVN

0x4C000018

R/W

攝像頭時鐘分頻控制寄存器

0x00000000

CAMDIVN

描述

初始值

HCLK4_HALF

[9]

HDIVN分頻因子選擇位(當CLKIVN[2:1]位為10b時有效)

0: HCLK=FCLK/4

1: HCLK=FCLK/8

0

HCLK3_HALF

[8]

HDIVN分頻因子選擇位(當CLKIVN[2:1]位為11b時有效)

0: HCLK=FCLK/3

1: HCLK=FCLK/6

0




關鍵詞: s3c2440FCLKHCLKPCL

評論


技術專區(qū)

關閉