一、整體架構
S3C2440的主時鐘源可以是外部諧振器(XTIpll),或者外部輸入時鐘(EXTCLK),經過鎖相環MPLL、UPLL產生高頻時鐘信號,并經由分配傳輸給AHB總線,APB總線,USB設備,以及內核使用。其中UPLL是USB專用的PLL。以下是時鐘體系的總體框架:
二、控制邏輯
時鐘控制邏輯的主要內容為時鐘的開啟、配置過程。首先是時鐘的上電開啟時序:
上圖來自于芯片手冊,是時鐘的上電開啟過程,經上電與復位,諧振器開始輸入信號,此時PLL根據默認配置啟動,進入LockTime,由于上電后PLL工作不穩定,其輸出信號并不會接入FCLK等,而是接入諧振器輸入頻率信號,只有在軟件配置PLL后才會接入到FCLK等,即使想要使用PLL默認配置,也要用軟件重新配置一下。配置PLL即配置PLL CONTROL REGISTER ,配置完成后,PLL會自動進入鎖定狀態,此時FCLK等保持一段低電平,之后接入修改后的時鐘信號。
三、工作模式
圍繞著時鐘設備,S3C2440的工作模式分為NORMAL mode、SLOW mode、IDLE mode、SLEEP mode,屬于Power Management block。
NORMAL mode:該模式下,允許內核和所有外設使用對應的時鐘。
SLOW mode:Non-PLL模式,鎖相環關閉,芯片工作在外部時鐘下,頻率取決于外部時鐘。
IDLE mode:僅斷開內核的工作時鐘,外設可正常工作,中斷可喚醒。
SLEEP mode:休眠狀態,內核和外設均斷開時鐘,時鐘僅連接喚醒邏輯,使用該模式需要兩個獨立的時鐘源,其中一個要保持喚醒程序始終活躍,以便喚醒CPU。
下圖為Power Management block在時鐘體系中的定位,可以看到,最終的FCLK等輸出時鐘信號需要Power Management的配合。
模式切換:以下是芯片手冊中對于模式切換的圖解:
其中SLEEP mode以及IDLE mode需要通過中斷來返回NORMAL mode,著重記錄NORMAL與SLOW模式間的切換問題:NORMAL==>SLOW:SLOWmode有專門的寄存器(CLOCK SLOW CONTROL (CLKSLOW) REGISTER)用于開啟、配置和關閉,從NORMAL模式轉換到SLOW模式時,需要首先配置SLOW_BIT再配置MPLL_OFF關閉MPLL,這時轉換為SLOW模式,可以通過配置該寄存器的SLOW_VAL來控制分頻,如下圖:
其他模式可以參考芯片手冊,當然我也是搬運工。
四、配置方法
1、在NORMAL模式下,修改PMS更改PLL配置,當然這會使PLL重新進入LoadTime,在此期間FCLK等持續低電平。
2、在NORMAL模式下,臨時開啟SLOW模式,并在SLOW期間關閉PLL,這期間FCLK等以SLOW模式下的頻率輸出,可以更改PLL配置而不至于使內核和外設停止工作。
五、寄存器說明
1、LOCK TIME COUNT REGISTER (LOCKTIME)
PLL的LockTime由該寄存器設置。
2、PLL CONTROL REGISTER (MPLLCON & UPLLCON)
對應上文PMS,可以參照一些經典值來設置PLL輸出的頻率。
3、CLOCK CONTROL REGISTER (CLKCON)
對應外設、內核的時鐘使能等。
4、CLOCK SLOW CONTROL (CLKSLOW) REGISTER
SLOWmode的控制寄存器,可以配置SLOW_VAL,可以使能SLOWbit位,以及開關PLL。
5、CLOCK DIVIDER CONTROL (CLKDIVN) REGISTER
配置分頻因子。
6、CAMERA CLOCK DIVIDER (CAMDIVN) REGISTER
上一篇:S3C2440 SPI驅動框架
下一篇:S3C2440開發環境搭建(Ubuntu)
推薦閱讀最新更新時間:2025-04-17 10:27




