s3c2440的FCLK、HCLK、PCLK

2016-07-11来源: eefocus关键字:s3c2440  FCLK  HCLK  PCLK

1、系统工作时钟频率

在对系统时钟进行提速之前,让我们先来了解下S3C2440上的工作时钟频率,FCLK,HCLK,PCLK,其中FCLK主要为ARM920T内核提供工作频率,如图2-44所示:

图2-44  ARM920T内核结构

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

 

图2-45 S3C2440 AHB总线上挂接硬件

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

 

 图2-46 S3C2440 APB总线挂接硬件

也就是说,对于一些需要时钟工作的硬件,如果切断其时钟源 ,就不会再工作,从而达到降低功耗的目的,这也是便携嵌入式设备里的一个特点。

时钟源:为了减少外界环境对开发板电磁干扰,降低制作成本,通常开发板的外部晶振时钟频率都很低,MINI2440开发板由12MHz的晶振来提供时钟源,要想让CPU运行在更高的频率就要通过时钟控制逻辑单元PLL(锁相环)来提高主频。

S3C2440里有两个PLL:MPLL和UPLL,MPLL用来产生FCLK,HCLK,PCLK的高频工作时钟,UPLL用来为USB提供工作频率。

 

图2-47系统时钟初始化时序

 

开发板上电后,晶振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寄存器(见下表)来设置,由于变频后开发板所有依赖时钟工作的硬件都需要一小段调整时间,该时间计数通过设置LOCKTIME寄存器[31:16]来设置UPLL(USB时钟锁相环)调整时间,通过设置LOCKTIME寄存器 [15:0]设置MPLL调整时间,这两个调整时间数值一般用其默认值即可。

表2-8变频锁定时间寄存器(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-9 MPLL配置寄存器(MPLLCON)

寄存器名

地址

是否读写

描述

复位默认值

MPLLCON

0x4C000004

R/W

MPLL配置寄存器

0x00096030

 

MPLLCON

描述

初始值

MDIV

[19:12]

主分频器控制位

0x96

PDIV

[9:4]

预分频器控制位

0x03

SDIV

[1:0]

后分频器控制位

0x0

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

 

表2-10 官方推荐MPLL

FCLK,HCLK,PCLK三者之间的比例通过CLKDIVN寄存器进行设置,S3C2440时钟设置时,还要额外设置CAMDIVN寄存器,如下表,HCLK4_HALF,HCLK3_HALF分别与CAMDIVN[9:8]对应,下表列出了各种时钟比例:

表2-11 FCLK HCLK PCLK设置比例

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

__asm{ 

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

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

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

关于mrc与mcr指令,请查看MMU与内存保护的实现章节。

表2-12时钟分频器控制寄存器(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

表2-13摄像头时钟分频控制寄存器(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


关键字:s3c2440  FCLK  HCLK  PCLK 编辑:什么鱼 引用地址:http://news.eeworld.com.cn/mcu/article_2016071127451.html 本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。

上一篇:SDRAM工作原理及S3C2410 SDRAM控制器配置方法
下一篇:2440启动代码和中断处理过程

关注eeworld公众号 快捷获取更多信息
关注eeworld公众号
快捷获取更多信息
关注eeworld服务号 享受更多官方福利
关注eeworld服务号
享受更多官方福利

推荐阅读

串口控制FL2440(S3C2440)的LED
开发板:FL2440芯片:S3C2440功能:程序运行时点亮一个LED,然后利用PC机通过串口发送一个数,开发板读到这个数后点亮另外一个LED。最基本的串口控制。代码:Init.sAREA |DATA|,CODE,READONLY ENTRY ldr r13, =0x1000 IMPORT WuqiMain b WuqiMain END include.h 1 #define rUTRSTAT0   (*(volatile unsigned *)0x50000010)    //UART 0 Tx/Rx status 
发表于 2019-11-27
S3C2440串口通信基本功能的代码(注释+学习)
功能:将通过串口接收到的内容再发送出去,在PC机上看到的现象就是在串口通信软件中输入什么就会实时地显示什么。主文件:serial.c 1 //最常用的寄存器是ULCON、UCON、UBRDIV、UTRSTAT、UTXH、URXH这六个寄存器 2 #define ULCON0         (*(volatile unsigned *)0X50000000)     //UART线控制寄存器 3 #define UCON0          (*(volatile unsigned
发表于 2019-11-27
S3C2440串口代码_函数_初始化_发送Byte_发送string_Printf
通常情况下都会将串口的初始化语句写进一个初始化函数Uart_Init()中: 1 void Uart_Init(int baud) 2 { 3     int i; 4     rUFCON0 = 0x0;   //UART FIFO disable 5     rULCON0 = 0x3;   //关闭红外传输模式而用Normal模式,No parity,1 stop,每帧8bits数据位 6     rUCON0  = 0x805; //先看[11:10]=10
发表于 2019-11-27
s3c2440 NAND与NOR启动方式详解+个人验证
一:地址空间的分配1:s3c2440是32位的,所以可以寻址4GB空间,内存(SDRAM)和端口(特殊寄存器),还有ROM都映射到同一个4G空间里.2:开发板上一般都用SDRAM做内存flash(nor、nand)来当做ROM。其中nand flash没有地址线,一次至少要读一页(512B).其他两个有地址线3:nandflash不用来运行代码,只用来存储代码,NORflash,SDRAM可以直接运行代码)4:s3c2440总共有8个内存banks6个内存bank可以当作ROM或者SRAM来使用留下的2个bank除了当作ROM或者SRAM,还可以用SDRAM(各种内存的读写方式不一样)7个bank的起始地址是固定的还有一个灵活的
发表于 2019-11-25
s3c2440 NAND与NOR启动方式详解+个人验证
S3C2440时钟和电源管理
一、时钟1.系统架构时钟源:为了减少外界环境对开发板电磁干扰,降低制作成本,通常开发板的外部晶振时钟频率都很低,TX2440开发板由12MHz的晶振来提供时钟源,要想让CPU运行在更高的频率就要通过时钟控制逻辑单元PLL(锁相环)来提高主频。S3C2440里有两个PLL:MPLL和UPLL,MPLL用来产生FCLK的高频工作时钟(而HCLK和PCLK通过FCLK分频获取),UPLL用来为USB提供工作频率。FCLK为ARM920T内核提供时钟,详见下图HCLK主要为S3C2440 AHB总线(Advanced High performance Bus)上挂接硬件提供工作频率,AHB总线主要挂接有内存,NAND,LCD控制器等硬件
发表于 2019-11-23
S3C2440时钟和电源管理
对STM8S单片机GPIO.C的理解
一、STM8S单片机GPIO.C的组成实际上,STM8S 系列单片机需要使用的stm8s_gpio.c由以下几个部分组成:void GPIO_DeInit(GPIO_TypeDef* GPIOx)void GPIO_Init(GPIO_TypeDef* GPIOx, GPIO_Pin_TypeDef GPIO_Pin, GPIO_Mode_TypeDef GPIO_Mode)void GPIO_Write(GPIO_TypeDef* GPIOx, uint8_t PortVal)void GPIO_WriteHigh(GPIO_TypeDef* GPIOx, GPIO_Pin_TypeDef PortPins)void
发表于 2019-11-21
小广播
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2019 EEWORLD.com.cn, Inc. All rights reserved