ARM裸机程序研究 - S3C2440时钟初始化

来源:互联网 发布:mac下载的系统在哪 编辑:程序博客网 时间:2024/06/11 00:00

    2440内部的时钟主要有3个, FCLK, HCLK, PCLK。 FCLK 提供给ARM920T内核使用, HCLK主要提供给高速外设使用,如显示接口,内存控制器, PCLK提供给低速外设使用,如串口,SPI, GPIO 等。另外还有一个UCLK, 只提供给USB Host 和USB Device使用。

    2440的时钟来源有两种,外部时钟和通过外接晶振提供时钟。时钟源的选择通过引脚OM2和OM3来决定。因此,在芯片上电的时刻,就已经确定了时钟源。典型的时钟源配置是外界一个12M的无源晶振。

    时钟源确定后,下面就是进一步确定各个时钟得频率。2440内部有一个PLL来合成频率,该PLL称为MPLL。它利用前面选择的时钟源,合成需要得FCLK。然后FCLK经过分频就可以得到HCLK和PCLK。查阅2440的手册可知,FCLK的最高频率是400MHz, HCLK和PCLK的最高频率分别是136MHz和68MHz。FCLK,HCLK,PCLK间的有效分频比也可以查询2440的手册,并不是任意一个分频比都是有效的。

    刚开始,我决定将FCLK设定在400MHz, FCLK:HCLK:PCLK的分频比为1:4:8。这样HCLK和PCLK分别运行在100MHz和50MHz。分频比还可以设置为1:3:6,这样,HCLK和PCLK则分别运行在133MHz和66MHz。不过刚开始,还是选择稍低点的频率。以免后面初始化SDRAM控制器时发生问题。等稍作稳定后,可以尝试调高频率。

    频率决定后就可以开始实际的配置过程。其实很简单,就两个寄存器, MPLLCON和CLKDIVN。MPLLCON用来设置MPLL的输出频率,也就是FCLK。CLKDIVN用来设置FCLK,HCLK,PCLK的分频比。实际设置时,建议先设置CLKDIVN, 然后再设置MPLLCON。因为CLKDIVN的默认值是0x00000000,这样FCLK:HCLK:PCLK的比是1:1:1,如果将FCLK设置在400MHz,则HCLK和PCLK会超出其正常工作范围。

    为了将分频比设置为1:4:8,查阅2440手册,知道要将CLKDIVN设置为0x00000005。至于MPLLCON,2440手册上有一个表,列出了在外接12MHz晶振得情况下,为了得到不同的频率需要得值。比如,为了得到400MHz的输出频率,则要将其值设为0x0007F021。


原创粉丝点击