S3C2440時鐘控制邏輯可以產(chǎn)生FCLK、HCLK、PCLK和UCLK。FCLK為CPU時鐘。HCLK為AHB總線外設時鐘,包括存儲控制器、中斷控制器、LCD控制器、DMA控制器等。PCLK為APB總線外設時鐘,包括看門狗、IIS、IIC、PWM定時器、MMC接口、ADC、UART、GPIO、RTC和SPI等等。UCLK專用于USB主機或設備接口時鐘。
時鐘源的選擇:
時鐘源的選擇是通過OM3和OM2管腳控制的,時鐘源可以是外部晶振,也可以是外部時鐘。
S3C2440有兩個鎖相環(huán)(PLL),一個用于FCLK、HCLK和PCLK的MPLL,另一個專用于UCLK的UPLL。
MPLLCON和UPLLCON寄存器用于設置FCLK和UCLK的時鐘頻率,那么最后的時鐘頻率是如何計算的呢,有如下公式:
對于FCLK:
Fout= (2 * m * Fin) / (p * 2S)
m= (MDIV + 8), p = (PDIV + 2), s = SDIV
對于UCLK:
Fout= (m * Fin) / (p * 2S)
m= (MDIV + 8), p = (PDIV + 2), s = SDIV
S3C2440數(shù)據(jù)手冊上也給出了典型值,我們也來驗證一下他給的設置是否正確。比如UCLK為48MHz,他給的MDIV為56,PDIV為2,SDIV為2,那么UCLK為多少呢,依照上面給的公式計算得到如下值:(56+8)*12/((2+2)*22)=48,結果正確。如果我要設置FCLK為400MHz,數(shù)據(jù)手冊上也沒有給出參考,唯一接近的是405MHz,沒有關系,我們自己來計算,下面給出一組參考值:
MDIV= 92、PDIV= 1、SDIV= 1,大家依照上面的公司計算一下,看FCLK是否為400MHz。
前面也只是設定了FCLK和UCLK的時鐘,還有HCLK和PCLK沒有設置,HCLK和PCLK是通過FCLK分頻得來的。通過CLKDIVN寄存器來控制。
也就是說還和CAMDIVN寄存器有關。