美文网首页嵌入式单片机学习
uboot-step 7 时钟初始化

uboot-step 7 时钟初始化

作者: 2625K | 来源:发表于2016-08-03 23:05 被阅读48次

    uboot-step 7 时钟初始化

    上篇文章已经点亮了led,但是我们所用的时钟频率还只是外部时钟的频率12M,比较慢,这篇文章将会介绍下s3c6410的时钟体系,并对如何配置时钟作详细的说明

    s3c6410 的时钟体系说明

    9.2.png

    如上图所示,s3c6410主要有三个锁相环pll,分别为APLL,MPLL,EPLL

    • APLL :主要为CPU的工作提供工作时钟 ARMCLOCK,也可以配置为对系统总线AHB,APB总线等提供时钟 HCLK2 ,HCLK PCLK
    • MPLL: 主要为系统工作如串口,音频等提供工作时钟,同时也可以配置为对系统总线AHB,APB总线等提供时钟
    • EPLL: 为USB等设备提供特殊的工作时钟
      其中,APLL与MPLL都可以为系统总线AHB,APB提供时钟,这里我们选择了APLL来提供
      如下图所示,是我们所配置的时钟流向,从外部时钟晶体输入12M的工作时钟,经过APLL与MPLL之后,频率提升到了533M(APLL和MPLL的倍频倍数可以更改),其中APLL输出的时钟经过DIVarm(1)到达ARMCLK,为cpu工作提供时钟,APLL的另一支向下经过SYNCMUX和DIVHclk2(1)到达HCKx2为系统总线提供时钟,MPLL输出的时钟则经过DIVmpll来为其它部件如串口和音频等提供工作时钟


      9.1.png

    如何进行时钟的配置

    对处理器任何的设置最终都反映在相应寄存器的读写,对于时钟的配置主要有以下几点:

    • APLL与MPLL 倍频频率的设置,可以通过APLLCON/MPLLCON寄存器来进行配置
    • MUXapll与MUXmpll时钟源的选择,需要配置为选择PLL输出时钟,可以通过CLK_SRC寄存器来配置
    • SYNCMUX选择系统总线时钟的时钟源是APLL还是MPLL,同步还是异步(不懂)模式,可以通过配置OTHERS寄存器来设置
    • 还要配置DIVarm,DIVhclk2,DIVHclk,DIVpclk等分频值,通过配置CLK_DIV0 寄存器来设置
    APLL与MPLL配置
    pllcon0.png
    pllcon.png
    pllcon1.png

    我们设定输出频率为533M,参照上图进行相关的设置就可以了

    CLK_DIV0配置
    clk_div0.png
    clk_div.png

    这里我们的寄存器设置如下:

    • ARM_RATIO=0
      • ARMCLK=533/(0+1)=533M
    • MPLL_RATIO=0
      • DOUTmpll=533/(0+1)=533
    • HCLK_RATIO=1
      • HCLK=HCLKX2/(1+1)=HCLKX2/2=133M
    • HCLKx2_RATIO=1
      • HCLKX2=HCLKX2in(533)/(1+1)=266M
    • PCLK_RATIO=3
      • PCLK=HCLKX2(266)/(3+1)=66.5M

    OTHERS寄存器配置
    others0.png
    others1.png

    这里我们设置为同步模式,选用APLL输出作为系统总线时钟


    CLK_SRC选择时钟源
    clk_src.png clk_src1.png

    设置APLL,EPLL,MPLL输出使能

    代码实现

    #define CLK_DIV0 0x7e00f020
    #define OTHERS 0x7e00f900
    #define MPLL_CON 0x7e00f010
    #define APLL_CON 0x7e00f00c
    #define CLK_SRC 0x7e00f01c
    #define DIV_VAL ((0x0<<0)|(0x1<<9)|(0x1<<8)|(0x3<<12))
    #define PLL_VAL ((1<<31)|(266<<16)|(3<<8)|(1<<0))
    
    init_clock:
    ldr r0, =CLK_DIV0
    ldr r1, =DIV_VAL
    str r1, [r0] 
    
    ldr r0, =OTHERS
    ldr r1, [r0]
    bic r1,r1,#0xc0  @同步模式,总线时钟由APLL提供
    str r1, [r0]
    
    ldr r0, =APLL_CON
    ldr r1, =PLL_VAL @使能pll,输出为533M
    str r1, [r0]
    
    ldr r0, =MPLL_CON
    ldr r1, =PLL_VAL
    str r1, [r0]
    
    ldr r0, =CLK_SRC
    mov r1, #0x3  @配置使用pll时钟输出
    str r1, [r0]
    
    mov pc, lr
    

    此去经年
    zhaiyk@sina.cn
    August 2, 2016

    相关文章

      网友评论

        本文标题: uboot-step 7 时钟初始化

        本文链接:https://www.haomeiwen.com/subject/nyhcsttx.html