S3C2440芯片时钟配置

2019-07-13 01:52发布

        S3C2440A芯片中的时钟控制逻辑可以生成所需的时钟信号,包括用于CPU的FCLK、AHB (Advanced High-performance Bus) 总线外围设备的HCLK,以及APB (Advanced Peripheral Bus)总线外围设备的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]