S3C2440時(shí)鐘設置詳解
S3C2440A的主時(shí)鐘源由外部時(shí)鐘(EXTCLK)或者外部晶振(XTIPll)提供,輸入時(shí)鐘源由模式控制引腳OM3和OM2控制選擇,在復位信號的上升沿參考OM3和OM2的引腳將OM[3:2]的狀態(tài)在內部鎖定,如圖1所示
本文引用地址:http://dyxdggzs.com/article/201611/321671.htm圖1 引導啟動(dòng)時(shí)的時(shí)鐘源選擇
選擇不同輸入時(shí)鐘源時(shí)連接方式如圖2所示:
圖2 時(shí)鐘連接參考
通過(guò)在片內集成的2個(gè)鎖相環(huán):MPLL和UPLL,可對輸入的Fin=12MHz的晶振頻率進(jìn)行倍頻。S3C2440使用了三個(gè)倍頻因子MDIV、PDIV和SDIV來(lái)設置倍頻,通過(guò)寄存器MPLLCON和UPLLCON可設置倍頻因子。其中MPLLCON寄存器用于設置處理器內核時(shí)鐘主頻FCLK,其輸入輸出頻率間的關(guān)系為
FCLK=MPLL=(2*m*Fin)/(p*2^s)
其中m=(MDIV+8), p=(PDIV+2), s=SDIV。
其中UPLLCON寄存器用于產(chǎn)生48MHz或96MHz,提供USB時(shí)鐘(UCLK),其輸入輸出頻率間的關(guān)系為
UCLK=UPLL=(m * Fin) / (p * 2^s)
其中m=(MDIV+8), p=(PDIV+2), s=SDIV。
手工計算相對復雜些,我們可以根據欲得到的主頻FCLK大小,直接通過(guò)查表來(lái)獲知各倍頻因子的設置參數,詳見(jiàn)。
S3C2440的數據手冊中提供了一個(gè)表格來(lái)查詢(xún)各個(gè)輸出頻率和輸入頻率所對應的MPLL中參數m、p和s的值,使用的時(shí)候最好只使用該表格中推薦的數值。
圖3 PLL真值表
通過(guò)圖3的真值表,我們可以得到如果輸入時(shí)鐘為12MHz,輸出時(shí)鐘FCLK為405MHz,可以選擇MDIV為127,PDIV為2,SDIV為1。輸出48MHz和96MHz是UPLLCON使用的。
除了可設置內核時(shí)鐘FCLK,還需要設置AHB總線(xiàn)設備使用的HCLK和APB總線(xiàn)設備使用的PCLK。通過(guò)CLKDIVN和CAMDIVN這兩個(gè)寄存器可設置三者的分頻關(guān)系,如圖4 為CLKDIVN的說(shuō)明,可以通過(guò)設置CLKDIVN和CAMDIVN的相關(guān)位來(lái)設置這三個(gè)時(shí)鐘。
圖4 FCLK、HCLK和PCLK關(guān)系
具體可參觀(guān)數據手冊中對此的說(shuō)明。即若主頻FLCK是400MHz,如果按照1:4:8的設置,可以先設置CLKDIVN為0101,然后設置CAMDIVN的第9位為0(不設置的時(shí)候該位默認為0),此時(shí)HLCK是100MHz,PLCK是50MHz。
可將該頻率映射到CLKOUT0引腳,對其測試驗證。
在我們搭建好2440的硬件平臺后,我們在調試硬件的時(shí)候,通常需要將系統的時(shí)鐘測試引腳引出來(lái)測試,以確認系統是否達到設計的要求。2440提供了CLKOUT0和CLKOUT1這兩個(gè)引腳用于測試時(shí)鐘??梢酝ㄟ^(guò)設置MISCCR寄存器的CLKSEL0和CLKSEL1位來(lái)選擇CLKOUT0和CLKOUT1的時(shí)鐘源。其時(shí)鐘源分別有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
測試沒(méi)錯的話(huà)就Okay了
評論