1.S5PV210時鐘系統
如圖1:
S5PV210中包含3大類時鐘domain:
1) MSYS(主系統時鐘) 用來給cortex a8處理器,dram控制器,3D,IRAM,IROM,中斷控制器等提供時鐘。
2) DSYS(顯示相關的時鐘) 用來給顯示相關的部件提供時鐘,包括FIMC, FIMD, JPEG, and multimedia IPs。
3) PSYS(外圍設備的時鐘) 用來給外圍設備提供時鐘,如i2s, spi,i2c,uart等。
這三個區域都是AMBA總線,AMBA總線分為AHB和APB兩種總線每種總線都有不同的時鐘頻率。如下圖2:
AHB對應HCLK,APB對應PCLK,
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來的。
那么MSYS,DSYS,PSYS最少有6個時鐘(實際上不止6個):HCLK_MSYS/PCLK_MSYS、HCLK_DSYS/PCLK_DSYS、HCLK_PSYS/PCLK_PSYS,再外加一個CPU要用的時鐘ARMCLK,總共7個時鐘頻率。
由圖3可知最后,總共有13個CLK提供出來。
由圖4可以知道S5PV210共有4個倍頻器即PLL,包括APLL,MPLL,EPLL,VPLL.
P448
void clock_init()
{
// 1 設置各種時鐘開關,暫時不使用PLL
CLK_SRC0 = 0x0;
// 2 設置鎖定時間,使用默認值即可
APLL_LOCK = 0x0000FFFF;
MPLL_LOCK = 0x0000FFFF;
// 3 設置分頻
CLK_DIV0 = 0x14131440;
// 4 設置PLL
APLL_CON0 = APLL_VAL;
MPLL_CON = MPLL_VAL;
// 5 設置各種時鐘開關,使用PLL
CLK_SRC0 = 0x10001111;
}
第一步 、設置各種時鐘開關,暫時不使用PLL。
首先我們需要選擇使用外接24MHz晶振,由時鐘系統圖可知,APLL和MPLL的時鐘源由“FINPLL”決定,在芯片手冊中搜索“FINPLL”,可知相關寄存器為CLK_SRC0,
如圖3
在未設置PLL和各種分頻系數之前,我們不能使用PLL,為了保險起見,暫時直接使用頻率較低的外接的24MHz晶振,待設置好PLL和分頻系數后再重新設置各種時鐘開關。所以設置為0x00。
第二步 、設置鎖定時間
設置PLL后,時鐘從Fin提升到目標頻率時,需要一定的時間,即鎖定時間。
第三步 、設置分頻
與分頻相關的寄存器是CLK_DIV0,見下圖4:
第四步 、設置PLL
PLL即倍頻器,用來放大運行頻率。設置好分頻后,我們就需要設置PLL了。APLL/MPLL的啟動是通過設置APLL_CON0/MPLL_CON寄存器,我們逐個來設置。
ALPP_CON0負責設置APLL,FINPLL=24MHz,經過APLL后,我們將輸 出FOUT=1000Mhz的時鐘頻率,FOUT的計算公式如下: FOUT=MDIV*FIN/(PDIV*2^(SDIV-1)) = 1000 MHz ,由于FIN=24MHz,FOUT=1000MHz,我們可以這樣取值: MDIV= 0x7d,PDIV= 0x3,SDIV=1。這3個值并不是固定死的,只要能使FOUT=1000Mhz,任意搭配都是可以的。
MPLL_CON寄存器負責設置MPLL,經過MPLL后,我們將輸出FOUT=667Mhz的時鐘頻率,FOUT的計算公式如下: FOUT=MDIV*FIN/(PDIV*2^SDIV) = 667 MHz 由于FIN=24MHz,FOUT=667MHz,我們可以這樣取值: MDIV=0x29B, PDIV= 0xC,SDIV=1。這3個值并不是固定死的,只要能使FOUT=667Mhz,任意搭配都是可以的。
第五步 設置各種時鐘開關
在時鐘系統圖中,所有的MUX都是用來選擇時鐘的,相關寄存器是CLK_SRC0
參考S5PV210時鐘設置參考圖,設置各種時鐘開關:
APLL_SEL=1,使用FOUTAPLL
MPLL_SEL=1,使用FOUTMPLL
EPLL_SEL=1,使用FOUTEPLL
VPLL_SEL=1,使用FOUTVPLL
MUX_MSYS_SEL=0,使用SCLKAPLL
MUX_DSYS_SEL=0,使用SCLKMPLL
MUX_PSYS_SEL=0,使用SCLKMPLL
ONENAND_SEL=1,使用HCLK_DSYS
所以CLK_SRC0=0x10001111;
上一篇:S5PV210 三個Camera Interface/CAMIF/FIMC的區別
下一篇:libnfc移植到ARM上
推薦閱讀最新更新時間:2025-04-17 10:09





設計資源 培訓 開發板 精華推薦
- 有獎調查|跟泰克一起了解【半導體材料與器件測試知識】(材料科學篇)
- 羅姆有獎直播 | 高輸出功率激光二極管—助力激光雷達性能提升
- 答題贏好禮|英飛凌帶你走進碳化硅 (SiC)世界
- ELEXCON 2022 深圳國際電子展11月6日(新檔期)開幕,速領門票!更有N重好禮等你拿!
- 全民行動,大家一起上干貨!發表,推薦干貨就有禮~
- PI 有獎直播:在無需DC-DC變換器的多路輸出電源設計中實現高效率和出色的輸出調整率
- 安全的革新,全新的驗證方式 下載富士通 《頻譜驗證解決方案 》白皮書 好禮送!
- 泰克 4200A-SCS 帶您走進半導體材料測試世界 下載贏好禮!
- 【ST板卡來了(下)】 品讀STM32實戰經驗,汲取FAE經驗闖關去抽獎
- TI 工業月閱讀打卡計劃