S3C2440芯片时钟配置

        S3C2440A芯片中的时钟控制逻辑可以生成所需的时钟信号,包括用于CPU的FCLK、AHB总线外围设备的HCLK,以及APB总线外围设备的PCLK。S3C2440A有两个相锁循环(PLLs):一个用于FCLK、HCLK和PCLK,另一个用于USB块(48 Mhz)。时钟控制逻辑可以使用无PLL的慢时钟,并且可以通过软件控制决定将时钟是否连接到外围块,这将减少芯片的功耗。

        1 时钟源的选择

         S3C2440A芯片的时钟来源有两个,一个是外部晶振(XTIpll 和 XTOpll),一个来自外部时钟输入(EXTCLK),用哪一个时钟源取决于引脚  OM3和OM2。时钟源选择如下表所示:

表1.1  时钟源选择




图1.1  相关引脚的硬件连接

      注:

        (1)尽管MPLL在复位之后开始运行,但是MPLL输出(MPLL)不作为系统时钟使用,直到软件将有效的设置写入MPLLCON寄存器。在此有效设置之前,来自外部晶体或EXTCLK源的时钟将直接用作系统时钟。即使用户不想改变MPLLCON寄存器的默认值,用户也应该将相同的值写入MPLLCON寄存器中。

       2 系统时钟框图


        时钟框图说明:首先,OM[3:2]决定哪的外部时钟源作为系统时钟源,接着MPLLCONL寄存器设置P/M/S,以此得到输出时钟Mpll,CLKCNTL寄存器决定那个内部组件接入时钟,系统上电默认是接入的。 CLKDIVN寄存器决定HCLK和PCLK的频率。

   3 上电时,时钟配置时序图(假设外部时钟源已经选择了晶振)

     

    过程解析:1)上电 ,产生复位信号,等待电源稳定才输出高电平。
                     2)在复位信号上升沿检查M[2:3]引脚状态,并锁存。
                     3)在此期间,系统时钟源为外部时钟。
                     4)PLL适应调整自己的参数,CPU停止工作。
                     5)调整完毕,系统时钟配置完成。


      4 如何配置系统时钟

配置顺序:1)检查引脚OM3和OM2引脚的状态
                 2)配置MPLLCON寄存器(0x4C000004),主要是设置M/P/S的值

       官方手册给出了一个参考的配置表:(直接按照手册推荐的几个配置来,不然有可能出问题)


          3)设置分频比,即配置CLKDIVN寄存器(0x4c000014)



     5   实验验证

       笔者所使用的开发平台为JZ2440开发板,通过编程在配置时钟源的情况下和不配置时钟源的情况下观察LED灯的闪烁速度,明显可以看到是两种不同的闪烁速度。

       部分程序:

       /* 设置系统时钟*/
ldr  r0 ,=0x4C000004
        ldr  r1 ,=(92<<12)|(1<<4)|(1<<0)          /*设置mPLL=400MHz*/
        str  r1 ,[r0]   

ldr  r0 ,=0x4C000014
ldr  r1 ,=0x5                                           /*设置HCLK=100MHz,PCLK=50MHZ*/
        str   r1 ,[r0]

猜你喜欢

转载自blog.csdn.net/u014069939/article/details/80632688
今日推荐