s3c2440的系统时钟

下面内容是《ARM处理器裸机开发实战—机制而非策略》里的,以s3c2440开发板为例

 

系统时钟是整个电路的心脏。

总体来说,与s3c2440处理器有关的时钟主要有4种:Fin、FCLK、HCLK和PCLK。

Fin:  外部输入的晶振频率

FCLK: 主要用于CPU核

HCLK: 主要用在与AHB总线互连的设备上(存储器控制器、lcd控制器、dma)

PCLK: 主要用在与APB总线互连的低速设备上(uart adc 定时器)

 

S3c2440系统时钟概述

S3c2440处理器的系统时钟分为两部分,外部有时钟输入引脚,内部有2个锁相环将外部输入时钟倍频到处理器工作所需要的时钟。锁相环相当于一个时钟变换电路,低频晶振输入即可得到处理器所使用的较高频的时钟。

锁相环示意图如下:

其中,MPLLCON和CLKDIVN是两个控制寄存器,分别用于控制分频比。

MPLLCON控制FCLK和Fin的比例关系

CLKDIVN用于控制FCLK、HCLK和PCLK之间的比例关系

此外,s3c2440内部还有一个锁相环UPLL,用于将外部时钟倍频到USB设备正常工作所需要的时钟频率。

 

系统时钟初始化

其流程图如图所示:

S3c2440系统时钟初始化流程如下:

(1) 系统刚上电几毫秒后,FCLK等于外部晶振的振荡频率,即FCLK=Fin

(2) 当复位信号nReset恢复高电平后,锁相环按照寄存器MPLLCON和CLKDIVN设定的倍频比例开始生成所需要的时钟频率。从锁相环开始工作到输出新的稳定的频率值需要一定的时间(lock time 即锁相环的捕获时间),经过这段时间后,锁相环输出新的频率值,这是FCLK等于锁相环的输出。

 

 

FCLK、HCLK和PCLK与Fin的关系

如何控制锁相环PLL的输出频率?s3c2440处理器内部有两个寄存器:MPLLCON寄存器用于控制FCLK和Fin的比例关系,CLKDIVN寄存器用于控制FCLK、HCLK和PCLK之间的比例关系。

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

其中,m=MDIV+8,p= PDIV +2,,s=SDIV。MDIV, PDIV, SDIV是MPLLCON寄存器中的数据。

 

例如,已知系统外部晶振输入为12MHz,要求FCLK输出为200MHz,经过计算可以得到MDIV=92,PDIV=4,SDIV=1

可以用下面的指令进行初始化

M_MDIV  EQU  92

M_PDIV   EQU  4

M_SDIV   EQU  1

ldr  r0 , =MPLLCON

ldr  r1 , =((M_MDIV<<12)+(M_PDIV<<4)+M_SDIV)

str  r1,[r0]



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值