从零开始学S3C2440之时钟

首先S3C2440内部有三个时钟 

     FCLK:主频时钟--主要做为芯片的内核时钟

     HCLK: 总线时钟--主要是作为LCD,USB,DMA时钟信号

     PCLK: 接口时钟--主要是作为串口,GPIO,SPI,ADC等接口时钟信号

 

    2440通过设置引脚OM2和OM3来选择时钟源Fin(外部晶振或外部时钟源),时钟源信号Fin通过2440芯片内部的产生FCLK和HCLK、PCLK时钟信号,这3大时钟信号像动脉一样带动整个芯片的工作。

  

这三个时钟一般成比例关系,通常设置为1:4:8,1:3:6的分频关系,也就说如果主频FLCK是400MHz,按照1:4:8的设置,那么HLCK是100MHz,PLCK是50MHz。

 

说完2440的时钟信号后,下面就是如何设置相应的寄存器来实现我们想要的频率。

2440集成有2个锁相环(MPLL&UPLL),可对输入的Fin=12MHz的 晶振频率进行倍频。S3C2440使用了三个倍频因子MDIV、PDIV和SDIV来设置倍频,通过寄存器MPLLCON&UPLLCON可设置 倍频因子。其中MPLLCON寄存器用于设置处理器内核时钟(主频FCLK),其输入输出频率间的关系为

 

      FCLK=MPLL=(2*m*Fin)/(p*2^s) ,其中m=(MDIV+8), p=(PDIV+2), s=SDIV。

      例如:我们想产生400m的FLCK,而晶振输入是12M,代入上面的公式,可以计算出MDIV、PDIV、SDIV的值,大概是127,2,1。一般来说手册上有个表,可以直接查找得到三个倍频因子的大小。

 

 

      UPLLCON寄存器用于产生48MHz或96MHz,提供USB时钟(UCLK),其输入输出频率间的关系为

      UCLK=UPLL=(m * Fin) / (p * 2^s) ,其中m=(MDIV+8), p=(PDIV+2), s=SDIV。

      三个倍频因子的大小同样可以通过查表得到。

      注意:当你要设置MPLLCON和UPLLCON,要先设置UPLLCON,然后再设置MPLLCON。

 

      设置好锁相环寄存器后,我们还要设置时钟分频控制器CLKDIVN,之前我们说的3大时钟的关系可以通过设置该寄存器来实现。

 

 

      在编写程序设置时钟的步骤是:

      1、设置UPLLCON寄存器(如果需要)

      2、设置MPLLCON寄存器

      3、设置时钟分频控制器CLKDIVN

      4、设置时钟控制寄存器CLKCON(如果需要),这个寄存器主要是打开和关闭外设时钟,以达到降低系统功耗的目的。

 

 

      最后总结一下,其实2440的时钟设置并不麻烦,我之前接触过stm32系列的单片机,所以感觉2440的时钟系统不是很陌生,不同于51的时钟系统。

posted @ 2013-03-17 22:15  顶顶顶顶  阅读(161)  评论(0)    收藏  举报