天天看點

S3C6410的clock設定

在clock的學習中發現看datasheet是很重要的事情,最不爽的就是datasheet是英文的。看起來非常累。 好 進入clock設定的正題。要設定clock就根據datasheet中給出的圖。(S3C6410x)

根據這幅圖 就能夠設定好APLL以及MPLL兩個鎖相環所提供的時鐘了。 還有一個EPLL的鎖相環在下面沒截出來。 其中APLL産生ARMCLK,供給arm core使用,MPLL産生HCLKX2 HCLK和PCLK,EPLL則産生一些特殊的時鐘,比如為USB提供48MHz的時鐘。

手冊上指明的Arm core可使用的最大時鐘為667MHz,但是實際使用是允許比該頻率偏高的。 HCLKX2主要提供給DDR使用,最大可以達到266MHz HCLK為AXI/AHB總線提供時鐘,而PCLK則為APB提供時鐘頻率。 接AXI和AHB總線的外設可使用的最大時鐘為133MHz,接APB總線的外設最大時鐘頻率為66MHz

UART的時鐘可以由MPLL或者EPLL提供。

S3C6410的clock設定

設定每個時鐘的思路都如下所示: (以APLL為例子) 1:設定鎖相環的鎖定時間。(即圖中的lock time)

S3C6410的clock設定

2:設定從上上圖最左邊到最右邊的各種選擇器:

S3C6410的clock設定

    (假如要設定HCLK的時鐘,則通過設定CLK_SRC【1】,OTHERS【6】(這一位控制同步或異步模式,1為同步模式,即下面的時鐘都使用前面的ARMCORE使用的時鐘源。0為異步模式,使用自己的時鐘源,或為外時鐘,或為MPLL提供的時鐘),等等的選擇器) 3:最後設定分頻值。 通過設定CLK_DIV寄存器的值來設定分頻,有如下公式

S3C6410的clock設定

等,可自行查閱datasheet 4,最後要設定鎖相環的配置 通過設定xPLL_CON的寄存器來達到此目的。

♥正确的做法應該是将所有設定設定好以後再将對應時鐘的時鐘源選擇從晶振提供的頻率過渡到鎖相環提供的頻率!即最後設定CLK_SRC這個寄存器

是以最後簡單總結設定時鐘的方法為: 1:設定鎖定時間 一般使用reset值。也可以不設定 2:設定鎖相環的配置,即設定xPLL_CON寄存器 3:設定分頻值,設定CLK_DIV寄存器 4:設定沿路的選擇器的值,即設定CLK_SRC寄存器

通過這幾步便可以将時鐘設定好啦。

設定好了時鐘,接下來就可以使用序列槽通信了。