新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > S3C2440時鐘設置詳解

        S3C2440時鐘設置詳解

        作者: 時間:2016-11-26 來源:網絡 收藏
        S3C2440A中的時鐘控制邏輯可以產生必須的時鐘信號,包括CPU的FCLK,AHB總線外設的HCLK以及APB總線外設的PCLK。S3C2440A包含兩個鎖相環(PLL):一個提供給FCLK、HCLK和PCLK,另一個專用于USB模塊(48MHz)。時鐘控制邏輯可以不使用PLL來減慢時鐘,并且可以由軟件連接或斷開各外設模塊的時鐘,以降低功耗

        S3C2440A的主時鐘源由外部時鐘(EXTCLK)或者外部晶振(XTIPll)提供,輸入時鐘源由模式控制引腳OM3和OM2控制選擇,在復位信號的上升沿參考OM3和OM2的引腳將OM[3:2]的狀態在內部鎖定,如圖1所示

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

        圖1 引導啟動時的時鐘源選擇

        選擇不同輸入時鐘源時連接方式如圖2所示:

        圖2 時鐘連接參考

        通過在片內集成的2個鎖相環:MPLL和UPLL,可對輸入的Fin=12MHz的晶振頻率進行倍頻。S3C2440使用了三個倍頻因子MDIV、PDIV和SDIV來設置倍頻,通過寄存器MPLLCON和UPLLCON可設置倍頻因子。其中MPLLCON寄存器用于設置處理器內核時鐘主頻FCLK,其輸入輸出頻率間的關系為

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

        其中m=(MDIV+8), p=(PDIV+2), s=SDIV。

        其中UPLLCON寄存器用于產生48MHz或96MHz,提供USB時鐘(UCLK),其輸入輸出頻率間的關系為

        UCLK=UPLL=(m * Fin) / (p * 2^s)

        其中m=(MDIV+8), p=(PDIV+2), s=SDIV。

        手工計算相對復雜些,我們可以根據欲得到的主頻FCLK大小,直接通過查表來獲知各倍頻因子的設置參數,詳見。

        S3C2440的數據手冊中提供了一個表格來查詢各個輸出頻率和輸入頻率所對應的MPLL中參數m、p和s的值,使用的時候最好只使用該表格中推薦的數值。

        圖3 PLL真值表

        通過圖3的真值表,我們可以得到如果輸入時鐘為12MHz,輸出時鐘FCLK為405MHz,可以選擇MDIV為127,PDIV為2,SDIV為1。輸出48MHz和96MHz是UPLLCON使用的。

        除了可設置內核時鐘FCLK,還需要設置AHB總線設備使用的HCLK和APB總線設備使用的PCLK。通過CLKDIVN和CAMDIVN這兩個寄存器可設置三者的分頻關系,如圖4 為CLKDIVN的說明,可以通過設置CLKDIVN和CAMDIVN的相關位來設置這三個時鐘。

        圖4 FCLK、HCLK和PCLK關系

        具體可參觀數據手冊中對此的說明。即若主頻FLCK是400MHz,如果按照1:4:8的設置,可以先設置CLKDIVN為0101,然后設置CAMDIVN的第9位為0(不設置的時候該位默認為0),此時HLCK是100MHz,PLCK是50MHz。

        可將該頻率映射到CLKOUT0引腳,對其測試驗證。

        在我們搭建好2440的硬件平臺后,我們在調試硬件的時候,通常需要將系統的時鐘測試引腳引出來測試,以確認系統是否達到設計的要求。2440提供了CLKOUT0和CLKOUT1這兩個引腳用于測試時鐘。可以通過設置MISCCR寄存器的CLKSEL0和CLKSEL1位來選擇CLKOUT0和CLKOUT1的時鐘源。其時鐘源分別有000=MPLL輸出,001為UPLL輸出,010為RTC輸出,011為HCLK,100為PCLK,101為DCLK1/0,11X為保留的。

        測試用的匯編程序如下:

        AREA Example,CODE,READONLY;聲明代碼段Example

        ENTRY ;標示程序入口

        CODE32 ;聲明32位ARM指令

        START LDR R0, =0x0005C011 ;FCLK=400MHz

        LDR R1, =0x4C000004 ;MPLLCON寄存器

        STR R0,[R1]

        LDR R0, =0x00000005 ;FCLK:HCLK:PCLK=1:4:8

        LDR R1, =0x4C000014 ;CLOCK DIVIDER control

        STR R0,[R1]

        LDR R0, =(0xa<<18)

        LDR R1, =0x56000070 ;端口H控制寄存器

        STR R0,[R1]

        ;CLKOUT0、CLKOUT1引腳復用(選擇GPH10-9的功能為CLKOUT0和1)

        LDR R0, =(0x86<<3)

        ;CLKOUT0和CLKOUT1分別輸出HCLK及PCLK

        LDR R1, =0x56000080 ;MISCCR寄存器

        STR R0,[R1]

        END

        測試沒錯的話就Okay了



        關鍵詞: S3C2440時鐘設

        評論


        技術專區

        關閉
        主站蜘蛛池模板: 遵义市| 霸州市| 利辛县| 兴隆县| 康保县| 凤山县| 鸡西市| 青川县| 子长县| 宁化县| 永顺县| 合阳县| 于田县| 湟中县| 银川市| 锡林郭勒盟| 历史| 德庆县| 柳江县| 龙川县| 龙口市| 汕头市| 北海市| 苍梧县| 潜山县| 花莲市| 华阴市| 开平市| 宁陵县| 陈巴尔虎旗| 盖州市| 且末县| 大冶市| 南和县| 潍坊市| 阜平县| 抚顺县| 县级市| 沧州市| 泰顺县| 上饶市|