在移植Nboot時,發現串口輸出亂碼,檢查串口配置沒問題後,覺得應該是時鐘配置沒配好,修改後果然ok,所以補習一下!
2440時鐘配置詳細說明,以上電為順序講述:
一、S3C2440A時鐘概述
1、S3C2440A的電源管理有4種模式:NORMAL,SLOW,IDLE,SLEEP。
2、 有4種時鐘:FCLK,HCLK,PCLK,UCLK具體分工如下:
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.
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.
UCLK專門為USB供電,有UPLL輸出。
3、有兩個鎖相環,一個MPLL負責FCLK,HCLK,PCLK,一個UPLL負責USB的48MHz,通過三個倍頻因子MDIV、PDIV和SDIV來 設置倍頻。
二、S3C2440A時鐘上電過程
1、主時鐘源可以由外部時鐘(EXTCLK)或者外部晶振(XTIPll)提供,時鐘源由模式控制引腳OM3和OM2選擇,在復位信號
的上升沿檢測OM3和OM2引腳狀態並鎖定在OM[3:2]中。
2、我們可以在程序開頭啟動MPLL,在設置MPLL的幾個寄存器後,需要等待一段時間(Lock Time),MPLL的輸出才穩定。在這段
(Lock Time)時間內,FCLK停振,CPU停止工作。Lock Time的長短由寄存器LOCKTIME設定。Lock Time之後,MPLL輸出平
穩。在上電沒有設置MPLL時,系統時鐘為晶振時鐘。
三、S3C2440A時鐘配置流程和樣例
1、設置S3C2440A的時鐘頻率需要配置4個寄存器:LOCKTIME(0x4C000000)、CLKDIVN (0x4C000014)、MPLLCON
( 0x4C000004)、UPLLCON(0x4C000008)。
2、時鐘配置順序如上:LOCKTIME => CLKDIVN => MPLLCON => UPLLCON。注意:UPLL的設置要先於MPLL,切超前7個時鐘
設置。
3、時鐘樣例:
(1)、LOCKTIME:位[31:16]用於UPLL,位[15:0]用於MPLL。確省值為0xFFFFFFFF
(2)、CLKDIVN:DIVN _UPLL[3]:HDIVN [2:1]:PDIVN [0]用來設置FCLK:HCLK:PCLK的比例關系,默認為1:1:1。
CLKDIVN不同的設置及對應的時鐘比例關系如下圖:
圖HDIVN 和PDIVN對應的比例,HCLK4_HALF和HCLK3_HALF在攝像頭CAMDIVN寄存器中。