新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 關(guān)于S3C2440時(shí)鐘設(shè)置的理解

關(guān)于S3C2440時(shí)鐘設(shè)置的理解

作者: 時(shí)間:2016-11-11 來源:網(wǎng)絡(luò) 收藏
關(guān)于S3C2440時(shí)鐘設(shè)置的理解

1)FLCK、HCLK和PCLK的關(guān)系

本文引用地址:http://butianyuan.cn/article/201611/316755.htm

S3C2440有三個(gè)時(shí)鐘FLCK、HCLK和PCLK

手冊(cè)上說P7-8寫到:

FCLK is used by ARM920T,內(nèi)核時(shí)鐘,主頻。

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.也就是總線時(shí)鐘,包括USB時(shí)鐘。

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接口時(shí)鐘,例如串口的時(shí)鐘設(shè)置就是從PCLK來的;

那么這三個(gè)時(shí)鐘是什么關(guān)系呢?

這三個(gè)時(shí)鐘通常設(shè)置為1:4:8,1:3:6的分頻關(guān)系,也就說如果主頻FLCK是400MHz,按照1:4:8的設(shè)置,那么HLCK是100MHz,PLCK是50MHz

寄存器CLKDIVN表明并設(shè)置了這三個(gè)時(shí)鐘的關(guān)系

如果CLKDIVN設(shè)置為0x5,那么比例即為1:4:8,前提是CAMDIVN[9]為0.

2)輸入時(shí)鐘FIN與主頻FCLK的關(guān)系

現(xiàn)代的CPU基本上都使用了比主頻低的多的時(shí)鐘輸入,在CPU內(nèi)部使用鎖相環(huán)進(jìn)行倍頻。對(duì)于S3C2440,常用的輸入時(shí)鐘FIN有兩種:12MHz和16.9344MHz,那么CPU是如何將FIN倍頻為FCLK的呢?

S3C2440使用了三個(gè)倍頻因子MDIV、PDIV和SDIV來設(shè)置將FIN倍頻為MPLL,也就是FCLK

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

寄存器MPLLCON就是用來設(shè)置倍頻因子的

相應(yīng)的對(duì)MPLLCON和UPLLCON的操作,C語言程序如下:

void ChangeMPllValue(int mdiv,int pdiv,int sdiv)
{
rMPLLCON = (mdiv<<12) | (pdiv<<4) | sdiv;
}

void ChangeUPllValue(int mdiv,int pdiv,int sdiv)
{
rUPLLCON = (mdiv<<12) | (pdiv<<4) | sdiv;
}

對(duì)于MPLL和UPLL,賦值方式是相同的,不同的是預(yù)計(jì)算,如下:

MPLL Control Register
Mpll = (2 * m * Fin) / (p * 2s
)
m = (MDIV + 8), p = (PDIV + 2), s = SDIV
UPLL Control Register
Upll = (m * Fin) / (p * 2s
)
m = (MDIV + 8), p = (PDIV + 2), s = SDIV

理論上,你可以通過設(shè)置該寄存器來實(shí)現(xiàn)不同的頻率,然而,由于實(shí)際存在的各種約束關(guān)系,設(shè)置一個(gè)適當(dāng)?shù)念l率并不容易,手冊(cè)上列出了一些常用頻率的表格,

例如,假設(shè)輸入時(shí)鐘FIN=16.9344M,MDIV=110, PDIV=3, SDIV=1,

利用上面的公式,F(xiàn)CLK=2*16.9344*(110+8)/((2+3)*2)=399.65

3)關(guān)于USB時(shí)鐘

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

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

最后值得一提的是,在CLKDIVN的第三位DIVN_UPLL用來設(shè)置USB時(shí)鐘UCLK和UPLL的關(guān)系,如果UPLL已經(jīng)是48Mhz了,那么這一位應(yīng)該設(shè)置為0,表示1:1的關(guān)系,否則是1:2的關(guān)系

4)最后,給出我的BCNG2440開發(fā)板的時(shí)鐘設(shè)置

FIN=16.9344

MDIV:110 HDIV:3 SDIV:1,比例為1:4:8

CLKDIVN: 5

因此,F(xiàn)CLK=399.65MHZ HCLK=99.91MHZ PCLK=49.95MHZ



關(guān)鍵詞: S3C2440時(shí)鐘設(shè)

評(píng)論


技術(shù)專區(qū)

關(guān)閉