• JZ2440:时钟设置


    这一节的目标是对板子上的时钟有一个初步的了解。而且能通过初步设置。为我们接下来的程序做准备。

    1. 板子上的基本资源

    • 板载晶振12M
    • 主时钟源和 USB 时钟源都是晶振

     
    2. 手冊中的相关项(按时钟进入的方向)

    2.1 时钟的总体结构

    2.2 OM[ 3:2 ]

    从图中我们能够看到OM[] 起到可选择的作用(效果同三八译码器):

    模式 OM[3:2]

    MPLL状态

    UPLL 状态

    主时钟源

    USB 时钟源

    00

    开启

    开启

    晶振

    晶振

    01

    开启

    开启

    晶振

    外部时钟

    10

    开启

    开启

    外部时钟

    晶振

    11

    开启

    开启

    外部时钟

    外部时钟

    注意:

    1. 尽管MPLL在复位后就開始, MPLL输出 (Mpll) 并没有作为系统时钟, 直到软件写入有效值来设置MPLLCON

    寄存器。

    在设置此值之前, 是将外部晶振或外部时钟源提供的时钟直接作为系统时钟。 即使用户不想改变MPLLCON

    寄存器的默认值,用户也应当写入与之同样的值到MPLLCON寄存器寄存器中。

    2. OM[3:2]是用于当OM[1:0]为 11 时决定一个測试模式。

     


    上电一瞬间时钟的状态:

    须要注意 OM[3:2] 是引脚,不是寄存器,看原理图得知 OM[3:2] = 00 。从前边的图中能够得到结论是主时钟源和 USB 的时钟源都是从外部晶振得到的。

    2.3 MPLL 

    寄存器

    地址

    R/W

    描写叙述

    复位值

    MPLLCON

    0x4C000004

    R/W

    MPLL的配置寄存器

    0x00096030

    UPLLCON

    0x4C000008

    R/W

    UPLL的配置寄存器

    0x0004d030


    PLLCON

    Bit

    描写叙述

    复位值

    MDIV

    [19:12]

    Main divider control

    0x96 / 0x4d

    PDIV

    [9:4]

    Pre-divider control

    0x03 / 0x03

    SDIV

    [1:0]

    Post divider control

    0x0 / 0x0

    这里有点须要说明:

        当你设置MPLL 和UPLL的值时,你必须首先设置UPLL值再设置MPLL 值。 (大约须要7个 NOP的间隔) 


    普通情况下,pll不会关闭,这里包含上电。

    对于pll的取值官方称非常困难,给出了推荐值


    假设你想私人定制你的时钟,公式例如以下:

    MPLL Control Register 
        Mpll = (2 * m * Fin) / (p * 2^s) 
    当中:
        m = (MDIV + 8)
        p  = (PDIV + 2)
        s   = SDIV 
    UPLL Control Register 
        Upll = (m * Fin) / (p * 2S) 
    当中:
        m = (MDIV + 8)
        p  = (PDIV + 2)
        s   = SDIV 
    PLL值选择向导(MPLLCON) 
    1.  Fout = 2  × m  × Fin / ( p*2s ),Fvco = 2  × m  × Fin / p  
        此处:m =MDIV+8, p=PDIV+2, s=SDIV 
    2.  600MHz  ≤ FVCO  ≤ 1.2GHz 
    3.  200MHz  ≤ FCLKOUT  ≤ 600MHz 
    4.  不要设置P 或M的值为0,这是由于设置P=000000,M=00000000 将会引起PLL的故障。

     

    5.  P 和M的合理范围为:1  ≤ P  ≤ 62,1  ≤ M  ≤ 248
    6.  pll稳定的最高频率是400MHZ

    时钟计算举例:
        ldr r0, =0x4c000014    //CLKDIV
        mov r1, #3
        str r1, [r0]
        ...
        ldr r0, =0x4c000004    //MPLLCON
        ldr r1, =((0x5c<<12)|(0x01<<4)|(0x02))    //MDIV=0x5c PDIV=0x01 SDIV=0x02
        str r1, [r0]

        m = (MDIV + 8) = 100
        p  = (PDIV + 2) = 3
        s   = SDIV  = 2
    Mpll = (2 * m * Fin) / (p * 2^s) = (2*100*12)/12MHz = 200MHz
    从最開始的那张图能够看到,FCLK 直接用的是 Mpll 之后的时钟频率,中间没有分频。

    从以下这张图中我们能看到UPLL 的频率仅仅能有两个取值。而且给固定的单元供应频率:


    2.4 FCLK。HCLK和 PCLK 介绍

    • FCLK 是给 ARM920T 内核使用的
    • HCLK 是给 AHB总线使用的,详细涉及的硬件包含: memory 控制器,中断控制器。LCD控制器,DMA 和 USB 主机模式的AHB总线时钟 
    • PLK 是给 APB 总线使用的,详细涉及的硬件包含:看门狗,iis,i2c,pwm的定时器,mmc接口,ADC,UART。GPIO,RTC 和 SPI。
    • UCLK 是给 USB 用的
    下边的这两张图看着更清楚:

    S3C2440能够对他们三个的比例进行设定:(当中的 HDIVN 和 PDIVN 属于 CLKDIVN 寄存器

    相关寄存器:

    寄存器

    地址

    R/W

    描写叙述

    复位值

    CLKDIV

    0x4C000014

    R/W

    Clock divider control register 

    0x00000000 


    CLKDIV

    Bit

    描写叙述

    复位值

    DIVN_UPLL

    [3]

    UCLK select register(UCLK must be 48MHz for USB)

    0: UCLK = UPLL clock  

    1: UCLK = UPLL clock / 2

    Set to 0, when UPLL clock is set as 48MHz

    Set to 1. when UPLL clock is set as 96MHz.  

    0

    HDIVN

    [2:1]

    00 : HCLK = FCLK/1.

    01 : HCLK = FCLK/2.

    10 : HCLK = FCLK/4 when CAMDIVN[9] = 0.

    HCLK= FCLK/8 when CAMDIVN[9] = 1.

    11 : HCLK = FCLK/3 when CAMDIVN[8] = 0.

    HCLK = FCLK/6 when CAMDIVN[8] = 1. 

    00

    PDIVN

    [0]

    0: PCLK has the clock same as the HCLK/1.

    1: PCLK has the clock same as the HCLK/2. 

    0


    2.5 时钟要想到达详细的硬件(比方spi。i2c)还须要开启他们之间的开关

    寄存器

    地址

    R/W

    描写叙述

    复位值

    CLKCON

    0x4C00000C

    R/W

    Clock generator control register

    0xFFFFF0

     

    CLKCON

    Bit

    描写叙述

    复位值

    AC97

    [20]

    Control PCLK into AC97 block.  

    0 = Disable,   1 = Enable  

    1

    Camera

    [19]

    Control HCLK into Camera block.  

    0 = Disable,   1 = Enable

    1

    SPI

    [18]

    Control PCLK into SPI block.  

    0 = Disable,   1 = Enable  

    1

    IIS 

    [17]

    Control PCLK into IIS block.  

    0 = Disable,   1 = Enable 

    1

    IIC
    [16] 
    Control PCLK into IIC block.  
    0 = Disable,   1 = Enable 
    1
    ADC(&Touch Screen) 
    [15]
    Control PCLK into ADC block.
    0 = Disable,   1 = Enable 
    1
    RTC 
    [14] 
    Control PCLK into RTC control block.
    Even if this bit is cleared to 0, RTC timer is alive.0 = Disable,   1 = Enable 
    1
    GPIO
    [13]
    Control PCLK into GPIO block.
    0 = Disable,   1 = Enable 
    1
    UART2
    [12] 
    Control PCLK into UART2 block.
    0 = Disable,   1 = Enable 
    1
    UART1 
    [11]
    Control PCLK into UART1 block.
    0 = Disable,   1 = Enable 
    1
    UART0
    [10]
    Control PCLK into UART0 block.
    0 = Disable,   1 = Enable
    1
    SDI 
    [9]
    Control PCLK into SDI interface block.
    0 = Disable,   1 = Enable
    1
    PWMTIMER
    [8]
    Control PCLK into PWMTIMER block.
    0 = Disable,   1 = Enable
    1
    USB device
    [7]
    Control PCLK into USB device block.  
    0 = Disable,   1 = Enable
    1
    USB host
    [6]
    Control HCLK into USB host block.  
    0 = Disable,   1 = Enable
    1
    LCDC 
    [5]
    Control HCLK into LCDC block.
    0 = Disable,   1 = Enable  
    1
    NAND Flash Controller
    [4]
    Control HCLK into NAND Flash Controller block.0 = Disable,   1 = Enable
    1
    SLEEP 
    [3]
    Control SLEEP mode of S3C2440A.
    0 = Disable,   1 = Transition to SLEEP mode
    0
    IDLE BIT
    [2] 
    Enter IDLE mode. This bit is not cleared automatically.
    0 = Disable,   1 = Transition to IDLE mode
    0
    Reserved 
    [1:0] 
    Reserved
    0

  • 相关阅读:
    【bzoj5180】[Baltic2016]Cities 斯坦纳树
    【BZOJ1859】【ZJOI2006】碗的叠放
    【bzoj4589】Hard Nim FWT+快速幂
    【BZOJ1502】【NOI2005】月下柠檬树 simpson 积分
    【loj6437】 【PKUSC2018】 PKUSC 计算几何
    【PKUSC2018】【loj6433】最大前缀和 状压dp
    【pkuwc2018】 【loj2537】 Minmax DP+线段树合并
    多项式求逆元详解+模板 【洛谷P4238】多项式求逆
    【bzoj3684】 大朋友和多叉树 生成函数+多项式快速幂+拉格朗日反演
    【codeforces 623E】dp+FFT+快速幂
  • 原文地址:https://www.cnblogs.com/mfmdaoyou/p/7215775.html
Copyright © 2020-2023  润新知