新聞中心

        s3c2440的FCLK、HCLK、PCLK

        作者: 時(shí)間:2016-11-09 來(lái)源:網(wǎng)絡(luò) 收藏

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

        在對(duì)系統(tǒng)時(shí)鐘進(jìn)行提速之前,讓我們先來(lái)了解下S3C2440上的工作時(shí)鐘頻率,FCLK,HCLK,PCLK,其中FCLK主要為ARM920T內(nèi)核提供工作頻率,如圖2-44所示:

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

        圖2-44 ARM920T內(nèi)核結(jié)構(gòu)

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

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

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

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

        也就是說(shuō),對(duì)于一些需要時(shí)鐘工作的硬件,如果切斷其時(shí)鐘源 ,就不會(huì)再工作,從而達(dá)到降低功耗的目的,這也是便攜嵌入式設(shè)備里的一個(gè)特點(diǎn)。

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

        S3C2440里有兩個(gè)PLL:MPLL和UPLL,MPLL用來(lái)產(chǎn)生FCLK,HCLK,PCLK的高頻工作時(shí)鐘,UPLL用來(lái)為USB提供工作頻率。

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

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

        l 設(shè)置LockTime變頻鎖定時(shí)間

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

        l 設(shè)置FCLK,HCLK,PCLK三者之間的比例

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

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

        寄存器名

        地址

        是否讀寫

        描述

        復(fù)位默認(rèn)值

        LOCKTIME

        0x4C000000

        R/W

        變頻鎖定時(shí)間寄存器

        0xFFFFFFFF

        LOCKTIME

        描述

        初始值

        U_TIME

        [31:16]

        UPLL對(duì)UCLK的鎖定時(shí)間值

        (U_TIME:300us)

        0xFFFF

        M_TIME

        [15:0]

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

        0xFFFF

        FCLK與Fin的倍數(shù)通過(guò)MPLLCON寄存器設(shè)置,三者之前有以下關(guān)系:

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

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

        當(dāng)設(shè)置完MPLL之后,就會(huì)自動(dòng)進(jìn)入LockTime變頻鎖定期間,LockTime之后,MPLL輸出穩(wěn)定時(shí)鐘頻率。

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

        寄存器名

        地址

        是否讀寫

        描述

        復(fù)位默認(rèn)值

        MPLLCON

        0x4C000004

        R/W

        MPLL配置寄存器

        0x00096030

        MPLLCON

        描述

        初始值

        MDIV

        [19:12]

        分頻器控制位

        0x96

        PDIV

        [9:4]

        預(yù)分頻器控制位

        0x03

        SDIV

        [1:0]

        后分頻器控制位

        0x0

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

        表2-10 官方推薦MPLL

        FCLK,HCLK,PCLK三者之間的比例通過(guò)CLKDIVN寄存器進(jìn)行設(shè)置,S3C2440時(shí)鐘設(shè)置時(shí),還要額外設(shè)置CAMDIVN寄存器,如下表,HCLK4_HALF,HCLK3_HALF分別與CAMDIVN[9:8]對(duì)應(yīng),下表列出了各種時(shí)鐘比例:

        表2-11 FCLK HCLK PCLK設(shè)置比例

        如果HDIV設(shè)置為非0,CPU的總線模式要進(jìn)行改變,默認(rèn)情況下FCLK = HCLK,CPU工作在fast bus mode快速總線模式下,HDIV設(shè)置為非0后, FCLK與HCLK不再相等,要將CPU改為asynchronous bus mod異步總線模式,可以通過(guò)下面的嵌入?yún)R編代碼實(shí)現(xiàn):

        __asm{

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

        orr r1, r1, #0xc0000000 /* 設(shè)置CPU總線模式 */

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

        }

        關(guān)于mrc與mcr指令,請(qǐng)查看MMU與內(nèi)存保護(hù)的實(shí)現(xiàn)章節(jié)。

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

        寄存器名

        地址

        是否讀寫

        描述

        復(fù)位默認(rèn)值

        CLKDIVN

        0x4C000014

        R/W

        時(shí)鐘分頻器控制寄存器

        0x00000000

        CLKDIVN

        描述

        初始值

        DIV_UPLL

        [3]

        UCLK選擇寄存器(UCLK必須對(duì)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,當(dāng)CAMIVN[9]=0

        HCLK = FCLK/8,當(dāng)CAMIVN[9]=1

        11: HCLK = FCLK/3,當(dāng)CAMIVN[8]=0

        HCLK = FCLK/6,當(dāng)CAMIVN[8]=1

        0

        PDIVN

        [0]

        0:PCLK是和HCLK/1相同時(shí)鐘

        1:PCLK是和HCLK/2相同時(shí)鐘

        0

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

        寄存器名

        地址

        是否讀寫

        描述

        復(fù)位默認(rèn)值

        CAMDIVN

        0x4C000018

        R/W

        攝像頭時(shí)鐘分頻控制寄存器

        0x00000000

        CAMDIVN

        描述

        初始值

        HCLK4_HALF

        [9]

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

        0: HCLK=FCLK/4

        1: HCLK=FCLK/8

        0

        HCLK3_HALF

        [8]

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

        0: HCLK=FCLK/3

        1: HCLK=FCLK/6

        0




        關(guān)鍵詞: s3c2440FCLKHCLKPCL

        評(píng)論


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

        關(guān)閉
        主站蜘蛛池模板: 育儿| 和硕县| 图片| 云和县| 甘德县| 蓬莱市| 清水县| 上饶县| 海丰县| 五大连池市| 米林县| 麦盖提县| 德昌县| 延吉市| 揭阳市| 独山县| 丰县| 丽水市| 吉安县| 太湖县| 博白县| 柘荣县| 芜湖县| 克山县| 宕昌县| 洱源县| 应城市| 巴彦淖尔市| 中西区| 岳阳县| 汽车| 即墨市| 巍山| 天长市| 新安县| 阳朔县| 筠连县| 湟中县| 台东市| 邢台县| 磴口县|