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

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. Linux内核——进程管理之CFS调度器(基于版本4.x)

    <奔跑吧linux内核>3.2笔记,不足之处还望大家批评指正 建议阅读博文https://www.cnblogs.com/openix/p/3262217.html理解linux cfs调 ...

  2. PHP方法之 substr

    简单描述: substr 主要用于字符串的截取,但是不适用于中文字符串,易出现乱码,中文字符串可使用mbstring. 方法申明: substr(string,start,length) string ...

  3. centos7.2 安装nginx

    一.首先检查gcc编译器安装了没 二 首先安装必要的库(nginx 中gzip模块需要 zlib 库,rewrite模块需要 pcre 库,ssl 功能需要openssl库),检查一下是否已经安装了( ...

  4. 查看zookeeper管理的solrcloud配置文件

    进入zookeeper/bin目录下 连接zookeeper sh zkCli.sh -server localhost:2181 查看 ls /configs 结果如下 [zk: localhost ...

  5. 基础训练 Huffuman树

    Huffuman树 /*解法一*/ #include<iostream> #include<queue> using namespace std; int main(){ pr ...

  6. 关于hadoop学习的思考(一) —— 小的知识点的总结

    一.对于CDH的小总结: CDH:是Cloudera公司在Apache开源项目hadoop的基础上发型的,共有五个版本前两个已不再更新,最经的两个分别是CDH4(基于hadoop2.0.0版本演化而来 ...

  7. 【软考2】Java语言的基本知识汇总

    导读:现在对于java这一模块,还没有相应的项目经验,只是通过各种类型的资料,对java有一个面上的了解.现在,对此做一个罗列总结,在以后的学习过程中,逐步完善! 一.语言的发展 1.1,机器语言 在 ...

  8. 集群高可用之lvs

    集群: 随着互联网的发展,大量的客户端的请求,服务器的负载越来越大,单台服务器的负载有限,会导致服务器响应客户端请求的时间越长,甚至产生拒绝服务的情况.目前网站是24小时不间断提供网络服务,仅采用单点 ...

  9. iOS学习笔记19-地图(一)定位CoreLocation

    一.定位介绍 现在很多社交.电商.团购应用都引入了地图和定位功能,似乎地图功能不再是地图应用和导航应用所特有的.的确,有了地图和定位功能确实让我们的生活更加丰富多彩,极大的改变了我们的生活方式.要实现 ...

  10. 洛谷P2351 [SDOi2012]吊灯 【数学】

    题目 Alice家里有一盏很大的吊灯.所谓吊灯,就是由很多个灯泡组成.只有一个灯泡是挂在天花板上的,剩下的灯泡都是挂在其他的灯泡上的.也就是说,整个吊灯实际上类似于[b]一棵树[/b].其中编号为 1 ...