關於3C2440 FCLK, HCLK, PCLK的關係(轉載)

ADS1.2中關於時鐘的C代碼

ChangeMPllValue((mpll_val>>12)&0xff, (mpll_val>>4)&0x3f, mpll_val&3);

ChangeClockDivider(key, 12);   

1FLCKHCLKPCLK的關係

S3C2440有三個時鐘FLCKHCLKPCLK

s3c2440官方手冊上說P7-8寫到:

FCLK is used by ARM920T內核時鐘,主頻。

HCLK is used for AHB bus, which is used by the ARM920T, the memory controller, the interrupt controller, the LCD controller, the DMA and USB host block. 也就是總線時鐘,包括USB時鐘。

PCLK is used for APB bus, which is used by the peripherals such as WDT, IIS, I2C, PWM timer, MMC interface,ADC, UART, GPIO, RTC and SPI.IO接口時鐘,例如串口的時鐘設置就是從PCLK來的;

那麼這三個時鐘是什麼關係呢?

這三個時鐘通常設置爲1:4:81:3:6的分頻關係,也就說如果主頻FLCK400MHz,按照1:4:8的設置,那麼HLCK100MHzPLCK50MHz

寄存器CLKDIVN表明並設置了這三個時鐘的關係

如果CLKDIVN設置爲0x5,那麼比例即爲1:4:8,前提是CAMDIVN[9]0.

2)輸入時鐘FIN與主頻FCLK的關係

現代的CPU基本上都使用了比主頻低的多的時鐘輸入,在CPU內部使用鎖相環進行倍頻。對於S3C2440,常用的輸入時鐘FIN有兩種:12MHz16.9344MHz,那麼CPU是如何將FIN倍頻爲FCLK的呢?

S3C2440使用了三個倍頻因子MDIVPDIVSDIV來設置將FIN倍頻爲MPLL,也就是FCLK

MPLL=(2*m*FIN)/(p*2^s) where m=(MDIV+8), p=(PDIV+2), s="SDIV"

寄存器MPLLCON就是用來設置倍頻因子的

理論上,你可以通過設置該寄存器來實現不同的頻率,然而,由於實際存在的各種約束關係,設置一個適當的頻率並不容易,手冊上列出了一些常用頻率的表格,

例如,假設輸入時鐘FIN=16.9344MMDIV=110, PDIV="3", SDIV="1"

利用上面的公式,FCLK=2*16.9344*(110+8)/((2+3)*2)=399.65

3)關於USB時鐘

S3C2440有兩個鎖相環,一個主鎖相環MPLL提供給FCLK的,另外一個UPLL是提供給USB時鐘(48MHz),MPLL一樣,UPLL的產生也是通過UPLLCON寄存器設置分頻因子得到,計算公式稍有不同:

UPLL=(m*FIN)/(p*2^s) where m=(MDIV+8), p=(PDIV+2), s="SDIV",同樣,可以通過查表得到一個合適的值。

最後值得一提的是,在CLKDIVN的第三位DIVN_UPLL用來設置USB時鐘UCLKUPLL的關係,如果UPLL已經是48Mhz了,那麼這一位應該設置爲0,表示1:1的關係,否則是12的關係

2410的時鐘和電源管理

概述

時鐘和電源管理模塊由3部分組成:時鐘控制、USB控制、電源控制。

時鐘控制部分產生3種時鐘信號:CPU用的FCLK,AHB總線用的HCLK,APB總線用的PCLK。有2個鎖相環,一個用於FCLK HCLK PCLK,另一個用於48MHzUSB時鐘。可以通過不使能鎖相環來達到慢速省電目的。

電源管理模塊提供了4種模式: Normal模式、Slow模式、Idle模式、Power_Off模式。

Normal Mode

該模式下如果所有外圍設備都打開時電流消耗最大,允許用戶通過軟件關閉外圍設備達到省電目的。

Slow Mode

不採用PLL的模式,能量消耗僅取決於外時鐘的頻率。由外部提供的時鐘源作FCLK

Idle Mode

關掉了給cpuFCLK時鐘,但外圍設備時鐘仍存在,任何到CPU的中斷請求可以將cpu喚醒。

Power_off Mode

這種模式關掉了內部供電,僅有給wake_up部分的供電還存在。可以通過外部中斷或實時時鐘中斷可以喚醒。

功能描述

時鐘結構:主時鐘源來自外部晶振XTlpll或外部時鐘EXTCLK

時鐘源選擇:通過OM[3: 2]的高低電平選擇,現在我們採用00OM[32]的狀態在nRESET的上升沿鎖存。儘管MPLL在上電覆位後就開始工作,但是MPLL輸出不作爲系統時鐘,只有對MPLLCON寫入適當的數值後纔可以。即使用戶不想改變MPLLCON的值,也要重新寫一遍才能使其起作用。

時鐘控制邏輯:時鐘控制邏輯決定要使用的時鐘源,當鎖相環被設置爲一個新的值時,時鐘控制邏輯切斷FCLK直到PLL輸出穩定。時鐘控制邏輯在上電覆位或從power_down狀態啓動時使能。

上電覆位:注意上電後必須通過設置PLLCON才能使PLL作用。

在正常操作狀態下改變PLL設置:通過改變PMS的值來實現。

USB時鐘控制:UCLK不起作用直到UPLL被設置。

FCLK、HCLK、PCLK:可以通過HDIVNPDIVNCLKDIVN來改變3種時鐘的比率,推薦採用124的比率。在設置完PMS的值後,需要設置CLKDIVN寄存器,該寄存器設置的值在PLL鎖定後生效,只需要1.5HCLK即可完成比率的修改。

電源管理:4種模式及特點。

Power_Off模式:外部中斷EINT[15:0]RTC alarm中斷可以從該模式wakeup.

進入PowerOff模式的流程:1。將GPIO端口設置爲適當的狀態; 2。……….

VDDiVDDiarm的控制:在PowerOff模式,僅VDDiVDDiarm通過PWREN管腳控制被關閉。如果PWREN爲高,VDDiVDDiarm被外部電源提供,如果爲低則關閉。 儘管VDDiVDDiarmVDDi_MPLLVDDi_UPLL可能被關閉,其他電源必須被提供。

EINT[15:0]啓動信號: EINTn管腳必須被設置爲中斷管腳,在啓動後,相應的EINTn管腳將不被用作啓動,可以被用作外部中斷請求。

電池故障信號(nBATT_FLT): cpu不在PowerOff模式時,nBATT_FLT將要引起低電平觸發的中斷。當在PowerOff模式時,nBATT_FLT信號將會禁止芯片從PowerOff模式啓動,故所有的wakeup信號被屏蔽,此舉用來保護系統電量低時不出現故障。

時鐘和電源管理部分寄存器

LOCKTIME:   UPLL MPLL 鎖定時間的計數值。

MPLLCON   UPLLCON: 這兩個寄存器都有MDIV PDIV SDIV設置,對於輸入12M的晶振,有相應的推薦值,產生200M和48M的頻率。

CLKCON: 爲各種外圍接口提供時鐘。

CLKSLOW: 是否打開2個PLL。

CLKDIVN: 設置CLK HCLK PCLK比率的寄存器。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章