久久ER99热精品一区二区-久久精品99国产精品日本-久久精品免费一区二区三区-久久综合九色综合欧美狠狠

新聞中心

EEPW首頁 > 嵌入式系統 > 設計應用 > ARM系列之時鐘模塊詳述及其分頻系數的設定

ARM系列之時鐘模塊詳述及其分頻系數的設定

作者: 時間:2016-11-11 來源:網絡 收藏
S3C2440的時鐘控制單元可以產生如下的時鐘信號:FCLK FOR CPU, HCLK FOR AHB BUS(高速設備,比如內存控制器、中斷控制器、LCD控制器、DMA以及USBhost), PCLK FOR APB BUS(低速設備,比如WTG、I2C,SDI/MMC,GPIO,RTC,UART,PWM,ADC,SPI)和用于USB的UCLK,共四種分頻率,前三種共用一個PLL。 S3C2440有兩個PLL, 一個用于FCLK,HCLK,和PCLK,叫做MPLL; 而另一個用于USB模塊(固定48MHz),叫做UPLL。時鐘控制邏輯還可以沒有PLL來降低時鐘或者不使每個外設連接到時鐘以降低電源能耗。

本文引用地址:http://cqxgywz.com/article/201611/317000.htm

-------------------------------------o---------------------------------------------------------


關于時鐘源選擇的問題,主要時鐘源一個來自于外部晶振(XTlpll),一個來自于外部時鐘(EXTCLK)。時鐘發生器包括一個連接到外部晶振的振蕩器和兩個鎖相環(PLL)。 時鐘源的選擇可以通過芯片引腳的狀態進行配置,即芯片的OM3和OM2引腳。具體分配情況如下表所示:(原理圖中已經將OM3和OM2都接地,即00的情況,用的是外部晶振,而且晶振頻率為12MHz)。.



---------------------------o-----------------------------------------------------


具體分頻寄存器設置時序如下圖所示:(盡管MPLL在系統復位的時候就開始產生,但是只有有效的設置好MPLLCON寄存器后才能用于系統時鐘。在此之前,外部時鐘將直接作為系統時鐘。即使不需要改變MPLLCON寄存器的初值,也必須將同樣的值寫入寄存器。設置完成后,經過LOCKTIME的時間,設置的分頻才能起效果。)


如上圖所示,FCLK的啟動過程:


1、上電幾毫秒后,晶振輸出穩定,FCLK=晶振頻率,nRESET信號恢復高電平后,CPU開始執行指令。


2、我們可以在程序開頭啟動MPLL,在設置MPLL的幾個寄存器后,需要等待一段時間(Lock Time),MPLL的輸出才穩定。在這段時間(Lock Time)內,FCLK停振,CPU停止工作。Lock Time的長短由寄存器LOCKTIME設定。


3、Lock Time之后,MPLL輸出正常,CPU工作在新的FCLK下。LOCKTIME默認時間為200us。



-----------------------------------------o-------------------------------------------------


時鐘分頻流程如下圖所示:(Fin默認為外部晶振時鐘頻率,12MHz。)


位于時鐘信號發生器的內部MPLL用于將輸出信號和相關輸入信號在相位和頻率上同步起來。包括上圖所示的一些基本模塊:根據DC電壓產生相應比例關系頻率的壓控振蕩器VCO,出書P(對輸入頻率Fin進行分頻),除數M(對VCO的輸出頻率進行M分頻,分頻后輸入到相位頻率探測器PFD),除數S(對MPLL輸出頻率Mpll進行分頻),相差探測器,charge pump,loop filter。



----------------------------o------------------------------------------------


時鐘頻率的計算關系:FCLK,HCLK,PCLK.(其中已經知道用于USB的UCLK位48MHz。)


一般情況下,這三個始終之間是存在一定的額比例關系的,默認情況下為1:1:1。但是通常情況下會設置為1:4:8或者1:3:6。寄存器CLKDIVN用于設置這三者之間的比例關系。


也就是說,如果CLKDIVN設置為0x5,那么比例即為1:4:8,前提是CAMDIVN[9]為0.也就說如果主頻FLCK是400MHz,按照1:4:8的設置,那么HLCK是100MHz,PLCK是50MHz。講到這里主題也該突出,說到最后,問題的關鍵就是如何計算FCLK了吧!!!



--------------------------------ooo------------------------------------------


現在的CPU主頻都是通過倍頻的技術實現的,下面就描述下如何個倍頻法:


1. MPLL. 對于S3C2440來說,常用的輸入Fin主要有兩種頻率:12MHz和16.935MHz。CPU通過MDIV、PDIV和SDIV進行倍頻得到MPLL,即FCLK。公式如下所示:


Mpll = (2 * m * Fin) / (p * 2^S)


m = (MDIV + 8), p = (PDIV + 2), s = SDIV; 1<=M<=248,1<=P<=62


理論上,我們可以通過設置任意值而得到我們想要的頻率,然而由于實際存在種種的約束關系,設置一個適當的頻率不容易,手冊中推薦了如下的設置值:


例如,假設輸入時鐘FIN=16.9344M,MDIV=110, PDIV=3, SDIV=1,利用上面的公式,FCLK=2*16.9344*(110+8)/((2+3)*2)=399.65 MHz。


2. UPLL.上面已經詳細的描述了MPLL的設置過程。下面著重描述USB的使用頻率UPLL的設置。需要對UPLLCON寄存器設置,如上上圖所示。同樣也可以通過查表。


Upll = (m * Fin) / (p * 2^S)


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


需要注意的是CLKDIVN寄存器的第三位DIVN_UPLL用來設置USB時鐘UCLK和UPLL的關系,如果UPLL已經是48Mhz了,那么這一位應該設置為0,表示1:1的關系,否則是1:2的關系。由于目標USB只需要48MHz的頻率,所以源頻率,即UPLL只能為48或者96。



--------------------------------ooo------------------------------------------


講到這里,重點都說了哇,不多還有些特別的東西需要提出來下。


1. 在arm的體系中,還存在一個概念,叫做慢時鐘模式的概念,即將時鐘減半或者關閉,以減少能源消耗。可以通過CLKSLOW和CLKDIVN寄存器相互配合實現。如下圖所示:


2. arm體系中很多模塊都需要時鐘,要是能夠將不需要使用時鐘的外設的時鐘共用給關了,也能減少消耗,在arm中提供了這樣的寄存器給予定制,即CLKCON寄存器。


3. 專門用于相機時鐘設定的寄存器CAMDIVN。如下圖所示,在分頻時候用到了HCLK4_HALF、HCLK3_HALF。


沒了~~~


------------over----------------------------------------


樣例程序如下:


[PLL_ON_START; //設置CLKDIVN的值在PLL鎖存時間LOCKTIME之后有效。


;Configure FCLK:HCLK:PCLK
ldrr0,=CLKDIVN
ldrr1,=CLKDIV_VAL;CLKDIV_VAL=7,7=1:3:6. Fclk:Hclk:Pclk
strr1,[r0]



;Configure UPLL //UPLL
ldrr0,=UPLLCON
ldrr1,=((U_MDIV<<12)+(U_PDIV<<4)+U_SDIV) ; //Fin = 12.0MHz, UCLK = 48MHz
strr1,[r0]



;Configure MPLL //MPLL
ldrr0,=MPLLCON
ldrr1,=((M_MDIV<<12)+(M_PDIV<<4)+M_SDIV) ; //Fin = 12.0MHz, FCLK = 400MHz
strr1,[r0]
]



END.!!!



評論


技術專區

關閉