在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提供。
设置每个时钟的思路都如下所示:
(以APLL为例子)
1:设置锁相环的锁定时间。(即图中的lock time)
2:设置从上上图最左边到最右边的各种选择器:
(假如要设置HCLK的时钟,则通过设置CLK_SRC【1】,OTHERS【6】(这一位控制同步或异步模式,1为同步模式,即下面的时钟都使用前面的ARMCORE使用的时钟源。0为异步模式,使用自己的时钟源,或为外时钟,或为MPLL提供的时钟),等等的选择器)
3:最后设置分频值。
通过设置CLK_DIV寄存器的值来设置分频,有如下公式
等,可自行查阅datasheet
4,最后要设置锁相环的配置
通过设置xPLL_CON的寄存器来达到此目的。
♥正确的做法应该是将所有设置设置好以后再将对应时钟的时钟源选择从晶振提供的频率过渡到锁相环提供的频率!即最后设置CLK_SRC这个寄存器
所以最后简单总结设置时钟的方法为:
1:设置锁定时间 一般使用reset值。也可以不设置
2:设置锁相环的配置,即设置xPLL_CON寄存器
3:设置分频值,设置CLK_DIV寄存器
4:设置沿路的选择器的值,即设置CLK_SRC寄存器
通过这几步便可以将时钟设置好啦。
设置好了时钟,接下来就可以使用串口通信了。