7th.关于系统时钟的设置

摘要:
打开MPLL以设置LOCKTIME寄存器(设置锁定时间)、设置MPLLCON寄存器(设置主频与FCLK之间的关系)、设置CLKDIVN寄存器(设置FCLK与UCLK的多重关系),MPLLCON可以参考官方参数配置。整个开发板在12MHz晶体振荡器上运行,开发板主板上的外围设备和CPU也有频率限制。

 言简意赅版本:

开启MPLL

  1. 设置LOCKTIME寄存器 (设置锁定时间)
  2. 设置MPLLCON寄存器(设置主频与FCLK的关系)
  3. 设置CLKDIVN寄存器(设置FCLK,HCLK,UCLK的倍数关系)

 MPLLCON参照官方提供参数配置即可。

 

 7th.关于系统时钟的设置第1张

 

详细情况

 

开发板在没有开启时钟前,整个开发板全靠一个12MHz的晶振提供频率来运行,当MPLLCON存入初值,并开始生效后,S3C2440A可以正常工作在400MHz下。开发板的主板上的外设和CPU也有一个频率限度,ARM920T内核的S3C2440的最高正常工作频率如下:

      FCLK:400MHz

      HCLK:100MHz

      PCLK:50MHz

那如何让时钟由12MHZ提高到400MHZ呢?

答案是通过PLL(锁相环)

一、S3C2440上的工作时钟频率

     S3C2440上的高频工作时钟频率有FCLK,HCLK,PCLK,由MPLL产生。USB提供工作频率(48MHZ)由UPLL产生。

     FCLK主要为ARM920T内核提供工作频率,即我们常说的CPU主频。

     HCLK主要为S3C2440 AHB总线(Advanced High performance Bus)上挂接硬件提供工作频率,AHB总线主要挂接有内存,NAND,LCD控制器等硬件,如图1-1所示:

7th.关于系统时钟的设置第2张

 

      PCLK主要为APB总线提供工作频率,由图1-2所示,APB总线主要挂接UART串口,Watchdog等硬件控制器。

7th.关于系统时钟的设置第3张

 

FCLK,HCLK,PCLK之间存在一定的关系。

当HDIV=0时,HCLK=FCLK;当HDIV=1时,HCLK=FCLK/2;

当PDIV=0时,PCLK=HCLK;当PDIV=1时,PCLK=HCLK/2;

三者关系通过CLKDIVN寄存器进行设置,S3C2440时钟设置时,还要额外设置CAMDIVN(0X4C000018,照相机时钟分割寄存器),寄存器如下表,HCLK4_HALF,HCLK3_HALF分别与CAMDIVN[9:8]对应,下表列出了各种时钟比例:

 

 7th.关于系统时钟的设置第4张

如果HDIV设置为非0,CPU的总线模式要进行改变,默认情况下FCLK = HCLK,CPU工作在fast bus mode快速总线模式下,HDIV设置为非0后, FCLK与HCLK不再相等,要将CPU改为asynchronous bus mod异步总线模式(S3C2440无同步总线模式),可以通过下面的嵌入汇编代码实现:

__asm{ 

mrc p15, 0, r1, c1, c0, 0        /* 读取CP15 C1寄存器 */ 

orr r1, r1, #0xc0000000        /* 设置CPU总线模式 */ 

mcr p15, 0, r1, c1, c0, 0        /* 写回CP15 C1寄存器*/

注意:如果HDIVN不为0,且CPU总线模式为Fast Bus mode,CPU的时钟为HCLK.,这种方式可以用在将CPU频率降低,但是却又不改变HCLK和PCLK.

 

表1-3时钟分频器控制寄存器(CLKDIVN)

寄存器名

地址

是否读写

描述

复位默认值

CLKDIVN

0x4C000014

R/W

时钟分频器控制寄存器

0x00000000

 

CLKDIVN

描述

初始值

DIV_UPLL

[3]

UCLK选择寄存器(UCLK必须对USB提供48MHz)

0:UCLK=UPLL clock

1:UCLK=UPLL clock/2

0

HDIVN

[2:1]

00:HCLK = FCLK/1

01:HCLK = FCLK/2

10:HCLK = FCLK/4,当CAMIVN[9]=0

HCLK = FCLK/8,当CAMIVN[9]=1

11: HCLK = FCLK/3,当CAMIVN[8]=0

HCLK = FCLK/6,当CAMIVN[8]=1

0

PDIVN

[0]

0:PCLK是和HCLK/1相同时钟

1:PCLK是和HCLK/2相同时钟

0

表1-4摄像头时钟分频控制寄存器(CAMDIVN)

寄存器名

地址

是否读写

描述

复位默认值

CAMDIVN

0x4C000018

R/W

摄像头时钟分频控制寄存器

0x00000000

 

CAMDIVN

描述

初始值

HCLK4_HALF

[9]

HDIVN分频因子选择位(当CLKIVN[2:1]位为10b时有效)

0: HCLK=FCLK/4

1: HCLK=FCLK/8

0

HCLK3_HALF

[8]

HDIVN分频因子选择位(当CLKIVN[2:1]位为11b时有效)

0: HCLK=FCLK/3

1: HCLK=FCLK/6

0

 

二、MPLL工作过程

       开发板上电后,晶振OSC开始提供晶振时钟,由于系统刚刚上电,电压信号等都还不稳定,这时复位信号(nRESET)拉低,这时MPLL虽然默认启动,但是如果不向MPLLCON中写入值,那么外部晶振则直接作为系统时钟FCLK,过几毫秒后,复位信号上拉,CPU开始取指运行,这时可以通过代码设置启动MPLL,MPLL启动需要一定锁定时间(LockTime),这是因为MPLL输出频率还没有稳定,在这期间FCLK都停止输出,CPU停止工作,过了LockTime后时钟稳定输出,CPU工作在新设置的频率下,这时可以通过设置FCLK,HCLK和PCLK三者的频率比例来产生不同总线上需要的不同频率,下面详细介绍开启MPLL的过程:

l  设置LockTime变频锁定时间

l  设置FCLK与晶振输入频率(Fin)的倍数

l  设置FCLK,HCLK,PCLK三者之间的比例

LockTime变频锁定时间由LOCKTIME寄存器(见下表)来设置,由于变频后开发板所有依赖时钟工作的硬件都需要一小段调整时间,即MPLL设置生效的等待时间。该时间计数通过设置LOCKTIME寄存器[31:16]来设置UPLL(USB时钟锁相环)调整时间,通过设置LOCKTIME寄存器 [15:0]设置MPLL调整时间,这两个调整时间数值一般用其默认值即可。

注意:

       在系统正常工作时,如果要改变FCLK,写入新值到MPLLCON后,系统也会插入一个PLL LOCK TIME,300us后FCLK就变成新的频率。当退出慢时钟模式时,要先启动MPLL,这时,即使从新装载初值,也要有一定的稳定时间LOCKTIME。

 

表2-1变频锁定时间寄存器(LOCKTIME)

寄存器名

地址

是否读写

描述

复位默认值

LOCKTIME

0x4C000000

R/W

变频锁定时间寄存器

0xFFFFFFFF

 

LOCKTIME

描述

初始值

U_TIME

[31:16]

UPLL对UCLK的锁定时间值

(U_TIME:300us)

0xFFFF

M_TIME

[15:0]

MPLL对于FCLK,HCLK,PCLK的锁定时间值(M_TIME:300us)

0xFFFF

FCLK与Fin的倍数通过MPLLCON寄存器设置,三者之前有以下关系:

MPLL(FCLK) = (2*m*Fin)/(p*2^s)

其中:m = MDIV + 8, p = PDIV + 2, s = SDIV

当设置完MPLL之后,就会自动进入LockTime变频锁定期间,LockTime之后,MPLL输出稳定时钟频率。

 表2-2MPLL配置寄存器(MPLLCON)

寄存器名

地址

是否读写

描述

复位默认值

MPLLCON

0x4C000004

R/W

MPLL配置寄存器

0x00096030

 

MPLLCON

描述

初始值

MDIV

[19:12]

主分频器控制位

0x96

PDIV

[9:4]

预分频器控制位

0x03

SDIV

[1:0]

后分频器控制位

0x0

通过上述算法比较难以找到合适的PLL值,下表给出了官方推荐的一些MPLL参考设置:

   表2-3:

 7th.关于系统时钟的设置第5张

免责声明:文章转载自《7th.关于系统时钟的设置》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Android常见问题1:窗体泄露(1)Tab Separated Values (TSV): a format for tabular data exchange下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

数字音频接口

概述 数字音频接口DAI,即Digital Audio Interfaces,顾名思义,DAI表示在板级或板间传输数字音频信号的方式。相比于模拟接口,数字音频接口抗干扰能力更强,硬件设计简单,DAI在音频电路设计中得到越来越广泛的应用。图1和图2对比传统的音频信号和数字音频信号链的区别。 在传统的音频电路(图1)中有麦克风、前置放大器、模/数转换器ADC...

精确时间协议PTP研究【转】

转自:http://www.coinv.com/page/pid/492.html 摘要:PTP(Precision Time Protocol)协议基于以太网,能够达到亚微妙级的对时精度,在模态分析和振动测试等领域将有着广阔的应用前景。首先介绍了PTP协议的基本原理及工作流程,接着剖析了关键数据结构及模块,最后给出了测试结果和下一步要作的工作。 关键词...

scan chain的原理和实现——8.AT SPEED Test & OCC

AT SPEED Test last_shift launch mode (低速测试) system_clock launch mode ( launch on capture) 1.at speed test structure and OCC Controller 2.OCC Controller 当使用set_dft_configuration...

STM32 MCO时钟输出配置实验

 STM32的PA.8引脚具有复用功能——时钟输出(MCO), 该功能能将STM32内部的时钟通过PA.8输出.   操作流程: 1)、设置PA.8为复用AF模式。 RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA, ENABLE); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8;...

GD32F330 | 内部时钟配置

GD32 内部时钟配置   有时候,在IO引脚资源紧张的情况下,我们可能需要将 OSCIN 、 OSCOUT 引脚作为普通的GPIO使用。   而有些情况下,芯片默认使用的是外部8M时钟,这就需要先切换到内部时钟,然后再配置 OSCIN 、 OSCOUT 引脚,才能实现普通 GPIO 的功能。   下面以 GD32F330G8U6 为例,使用的GD官方开...

SPI通信协议(非原创,转载他人,用于学习)

SPI通信协议:1、SPI主从模式;2、数据信号的相位与极性;3、数据帧的格式。 一、什么是SPI? SPI是串行外设接口(Serial Peripheral Interface)的缩写。是 Motorola 公司推出的一 种同步串行接口技术,是一种高速的,全双工,同步的串行通信总线。 二、SPI优点支持全双工通信通信简单数据传输速率块 三、缺点没有指定的...