ARM中各始终之间的关系,FCLK HCLK PCLK的关系
ChangeMPllValue((mpll_val>>12)&0xff, (mpll_val>>4)&0x3f, mpll_val&3);
ChangeClockDivider(key, 12);
1)FLCK、HCLK和PCLK的關系
S3C2440有三個時鐘FLCK、HCLK和PCLK
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:8,1:3:6的分頻關系,也就說如果主頻FLCK是400MHz,按照1:4:8的設置,那么HLCK是100MHz,PLCK是50MHz
寄存器CLKDIVN表明并設置了這三個時鐘的關系
如果CLKDIVN設置為0x5,那么比例即為1:4:8,前提是CAMDIVN[9]為0.
2)輸入時鐘FIN與主頻FCLK的關系
現代的CPU基本上都使用了比主頻低的多的時鐘輸入,在CPU內部使用鎖相環進行倍頻。對于S3C2440,常用的輸入時鐘FIN有兩種:12MHz和16.9344MHz,那么CPU是如何將FIN倍頻為FCLK的呢?
S3C2440使用了三個倍頻因子MDIV、PDIV和SDIV來設置將FIN倍頻為MPLL,也就是FCLK
MPLL=(2*m*FIN)/(p*2^s) where m=(MDIV+8), p=(PDIV+2), s="SDIV"
寄存器MPLLCON就是用來設置倍頻因子的
理論上,你可以通過設置該寄存器來實現不同的頻率,然而,由于實際存在的各種約束關系,設置一個適當的頻率并不容易,手冊上列出了一些常用頻率的表格,
例如,假設輸入時鐘FIN=16.9344M,MDIV=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時鐘UCLK和UPLL的關系,如果UPLL已經是48Mhz了,那么這一位應該設置為0,表示1:1的關系,否則是1:2的關系
2410的時鐘和電源管理
概述
時鐘和電源管理模塊由3部分組成:時鐘控制、USB控制、電源控制。
時鐘控制部分產生3種時鐘信號:CPU用的FCLK,AHB總線用的HCLK,APB總線用的PCLK。有2個鎖相環,一個用于FCLK HCLK PCLK,另一個用于48MHz的USB時鐘??梢酝ㄟ^不使能鎖相環來達到慢速省電目的。
電源管理模塊提供了4種模式: Normal模式、Slow模式、Idle模式、Power_Off模式。
Normal Mode
該模式下如果所有外圍設備都打開時電流消耗最大,允許用戶通過軟件關閉外圍設備達到省電目的。
Slow Mode
不采用PLL的模式,能量消耗僅取決于外時鐘的頻率。由外部提供的時鐘源作FCLK。
Idle Mode
關掉了給cpu的FCLK時鐘,但外圍設備時鐘仍存在,任何到CPU的中斷請求可以將cpu喚醒。
Power_off Mode
這種模式關掉了內部供電,僅有給wake_up部分的供電還存在??梢酝ㄟ^外部中斷或實時時鐘中斷可以喚醒。
功能描述
時鐘結構:主時鐘源來自外部晶振XTlpll或外部時鐘EXTCLK。
時鐘源選擇:通過OM[3: 2]的高低電平選擇,現在我們采用00。OM[3:2]的狀態在nRESET的上升沿鎖存。盡管MPLL在上電復位后就開始工作,但是MPLL輸出不作為系統時鐘,只有對MPLLCON寫入適當的數值后才可以。即使用戶不想改變MPLLCON的值,也要重新寫一遍才能使其起作用。
時鐘控制邏輯:時鐘控制邏輯決定要使用的時鐘源,當鎖相環被設置為一個新的值時,時鐘控制邏輯切斷FCLK直到PLL輸出穩定。時鐘控制邏輯在上電復位或從power_down狀態啟動時使能。
上電復位:注意上電后必須通過設置PLLCON才能使PLL作用。
在正常操作狀態下改變PLL設置:通過改變PMS的值來實現。
USB時鐘控制:UCLK不起作用直到UPLL被設置。
FCLK、HCLK、PCLK:可以通過HDIVN、PDIVN、CLKDIVN來改變3種時鐘的比率,推薦采用1:2:4的比率。在設置完PMS的值后,需要設置CLKDIVN寄存器,該寄存器設置的值在PLL鎖定后生效,只需要1.5個HCLK即可完成比率的修改。
電源管理:4種模式及特點。
Power_Off模式:外部中斷EINT[15:0]或RTC alarm中斷可以從該模式wakeup.
進入PowerOff模式的流程:1。將GPIO端口設置為適當的狀態; 2?!?
VDDi和VDDiarm的控制:在PowerOff模式,僅VDDi和VDDiarm通過PWREN管腳控制被關閉。如果PWREN為高,VDDi和VDDiarm被外部電源提供,如果為低則關閉。 盡管VDDi,VDDiarm,VDDi_MPLL,VDDi_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比率的寄存
?
本文來自CSDN博客,轉載請標明出處:http://blog.csdn.net/orchisan/archive/2010/11/05/5989628.aspx
總結
以上是生活随笔為你收集整理的ARM中各始终之间的关系,FCLK HCLK PCLK的关系的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 第一季3:HI3518E方案整体架构介绍
- 下一篇: ELF文件详解