S3C2440時鐘詳細描述

2021-05-25 18:01:43 字數 1734 閱讀 6208

s3c2440 cpu預設的工作主頻為12mhz或16.9344mhz,這裡使用最多的是12m。使用pll電路可以產生更高的主頻供cpu及外圍器件使用。

s3c2440有兩個pll:mpll和upll,upll專用與usb裝置。mpll用於cpu及其他外圍器件。

通過mpll會產生三個部分的時鐘頻率:fclk、hclk、plck。fclk用於cpu核,hclk用於ahb匯流排的裝置(比如sdram),pclk用於apb匯流排的裝置(比如uart)。從時鐘結構圖中可以檢視到使用不同時鐘頻率的硬體。

(注:這裡要注意從圖中看出,uart使用的是pclk,後面uart實驗會用到)

下面介紹mpll的啟動流程: 下圖

展示了上電後mpll啟動的過

請跟隨fclk的影象了解啟動過程:

1、上電幾毫秒後,晶振輸出穩定,fclk=晶振頻率,nreset訊號恢復高電平後,

cpu開始執行指令。

2、我們可以在程式開頭啟動mpll,在設定mpll的幾個暫存器後,需要等待一段時間(lock time),mpll的輸出才穩定。在這段時間(lock time)內,fclk停振,cpu停止工作。lock time的長短由暫存器locktime設定。

3、lock time之後,mpll輸出正常,cpu工作在新的fclk下。

設定s3c2440的時鐘頻率就是設定mpll的幾個暫存器:

1、locktime:設為0x00ffffff

前面說過,mpll啟動後需要等待一段時間(lock time),使得其輸出穩定。位[23:12]用於upll,位[11:0]用於mpll。使用確省值0x00ffffff即可。

2、clkdivn:用來設定fclk:hclk:pclk的比例關係,預設為1:1:1

這裡值設為0x03,即fclk:hclk:pclk=1:2:4

clkdivn不同的設定及對應的時鐘比例關係如下圖:

3、mpllcon:設為(0x5c << 12)|(0x04 << 4)|(0x00),即0x5c0040

對於mpllcon暫存器,[19:12]為mdiv,[9:4]為pdiv,[1:0]為sdiv。有如下計算公式:

mpll(fclk) = (m * fin)/(p * 2^s)

其中: m = mdiv + 8, p = pdiv + 2

fin 即預設輸入的時鐘頻率12mhz。mpllcon設為0x5c0040,可以計算出fclk=200mhz,再由clkdivn的設定可知:hclk=100mhz,pclk=50mhz。

到這裡我們應該徹底弄清楚了程式中經常出現的幾個clk:

fin,mpll,upll,fclk,hclk,pclk.

fin指cpu外圍接的晶振本身的頻率,通常為12mhz。

mpll和upll分別指的是用於供整機系統的pll和專用於usb的upll。

fclk = mpll = (m * fin)/(p + 2^s);

hclk,pclk受clkdivn暫存器的影響,即當fclk確定後,clkdivn決定了hclk和pclk,具體如上表。

這裡uart使用pclk,要想串列埠列印資訊正常顯示,這裡是關鍵!

通常我們將如上時鐘初始化的過程寫成clock_init函式供其他函式呼叫,**如下:

void clock_init(void)

S3C2440時鐘描述

1 上電幾毫秒後,晶振輸出穩定,fclk 晶振頻率,nreset訊號恢復高電平後,cpu開始執行指令。2 我們可以在程式開頭啟動mpll,在設定mpll的幾個暫存器後,需要等待一段時間 lock time mpll的輸出才穩定。在這段時間 lock time 內,fclk停振,cpu停止工作。loc...

S3C2440 時鐘計算

s3c2440有兩個pll phase locked loop 乙個是mpll,乙個是upll。mpll用於cpu及其他外圍器件,upll用於usb。s3c2440a 中的時鐘控制邏輯可以產生必須的時鐘訊號,包括cpu 的fclk,ahb 匯流排外設的hclk 以及 apb 匯流排外設的pclk。s...

S3C2440時鐘計算

關於mpll的計算方法 1.u32 mpll val 0 mpll val 92 12 1 4 2 算得mpll val 的二進位制 0101 1100 0000 0001 0010 注意 92 12 中的92 為十進位制數,轉換為二進位制為 0x5c。2.changempllvalue mpll ...