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

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 用的
下边的这两张图看着更清楚:

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">

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

JZ2440:时钟设置的更多相关文章

  1. 韦东山教程ARM的时钟设置出现的问题及其解决方法

    时钟设置是一个非常重要的环节,如果系统没有合适的时钟,根本无法工作.   S3C2440的时钟复杂,分为FCLK,HCLK,PCLK.    在程序测试中,曾出现这样一个错误.系统当前FCLK为400 ...

  2. PIC单片机之时钟设置

    PIC单片机之时钟设置 http://blog.csdn.net/superanters/article/details/8541650 内部时钟和外部时钟? PIC单片机有许多型号可以设置成 用外部 ...

  3. 第三章、Tiny4412 U-BOOT移植三 时钟设置【转】

    本文转自:http://blog.csdn.net/eshing/article/details/37521789 这一章说明配置时钟频率基本原理 OK,接着说,这次先讲讲CPU的系统时钟.U-BOO ...

  4. STM32的系统时钟设置SystemClock_Config()探究

    一.首先了解几个硬件名词: stm32有多种时钟源,为HSE.HSI.LSE.LSI.PLL,对于L系统的,还有一个专门的MSI 1.HSE是高速外部时钟,一般8M的晶振,精度比较高,比较稳定. 2. ...

  5. STM32内部时钟设置-寄存器版

    STM32寄存器版本——内部时钟设置 同时要记得把延时初始化函数设置好 //系统时钟初始化函数 //pll:选择的倍频数,从2开始,最大值为16 //pll:选择的倍频数,这里使用内部时钟,PLL为4 ...

  6. 合宙AIR105(二): 时钟设置和延迟函数

    目录 合宙AIR105(一): Keil MDK开发环境, DAP-Link 烧录和调试 合宙AIR105(二): 时钟设置和延迟函数 Air105 的时钟 高频振荡源 芯片支持使用内部振荡源, 或使 ...

  7. RTC硬件时钟设置修改【转】

    转自:http://os.chinaunix.net/a2008/0526/981/000000981211.shtml 这两天一直在做i2c设备驱动的理解,所以很少更新文章. 由于对于表计来说,RT ...

  8. msp时钟设置程序

    吐槽一下MSP430需要明白的东西: 在430中,一个时钟周期 = MCLK晶振的倒数.如果MCLK是8M,则一个时钟周期为1/8us: 一个机器周期 = 一个时钟周期,即430每个动作都能完成一个基 ...

  9. S3C2440 时钟设置分析(FCLK, HCLK, PCLK)

    时钟对于一个系统的重要性不言而喻,时钟决定了系统发送数据的快慢,高性能的芯片往往能支持更快速度的时钟,从而提供更好的体验. S3C2440的输入时钟频率是12MHZ,对于这款芯片,显然速度是不够的,所 ...

随机推荐

  1. Django 千锋培训的学习笔记(2)

    Django 千锋培训读书笔记 https://www.bilibili.com/video/av17879644/?p=1 切换到创建项目的目录 cd C:\Users\admin\Desktop\ ...

  2. LCD驱动分析(三)时序分析

    参考:S3C2440 LCD驱动(FrameBuffer)实例开发<一>   S3C2440 LCD驱动(FrameBuffer)实例开发<二>

  3. Luogu 2569 [SCOI2010]股票交易 (朴素动规转移 + 单调队列优化)

    题意: 已知未来 N 天的股票走势,第 i 天最多买进 as [ i ] 股每股 ap [ i ] 元,最多卖出 bs [ i ] 股每股 bp [ i ] 元,且每天最多拥有 Mp 股,且每两次交易 ...

  4. PAT Basic 1055

    1055 集体照 拍集体照时队形很重要,这里对给定的 N 个人 K 排的队形设计排队规则如下: 每排人数为 N/K(向下取整),多出来的人全部站在最后一排: 后排所有人的个子都不比前排任何人矮: 每排 ...

  5. re--模块【转】

    为什么要学正则表达式 实际上爬虫一共就四个主要步骤: 明确目标 (要知道你准备在哪个范围或者网站去搜索) 爬 (将所有的网站的内容全部爬下来) 取 (去掉对我们没用处的数据) 处理数据(按照我们想要的 ...

  6. Java-在JVM关闭前调用的函数

    参考:http://qtlkw.iteye.com/blog/1018872 package com.tj; import java.text.SimpleDateFormat; import jav ...

  7. 【04】Math图解

    [04]Math知识图    

  8. Codeforces Round #432 (Div. 2, based on IndiaHacks Final Round 2017)

    昨晚打得小号,虽然很菜,可是还是涨了些rating A. Arpa and a research in Mexican wave time limit per test 1 second memory ...

  9. MySQL主从复制报错一致性问题解决

    当MySQL主从复制中因为不一致报错的情况,我们第一时间想到的就是使用pt-table-checksum来进行检查主从一致并进行修复,但是使用此工具的前提是主从复制线程都为on状态, 所以这种情况下可 ...

  10. 如何解决 错误code signing is required for product type 'xxxxx' in SDK 'iOS 8.2'

    如何解决 错误code signing is required for product type 'xxxxx' in SDK 'iOS 8.2' 大家在做真机调试的时候,或许会遇到这样的问题,那如何 ...