JZ2440 系统时钟

时钟控制逻辑给整个芯片提供了三种时钟
FCLK:用于CPU内核
HCLK:用于AHB总线上设备,比如cpu核,存储控制器,中断控制器,lcd控制器,DMA控制器,和USB主机模块,主要用于高性能模块
PCLK:用于APB总线上设备,比如WATCHDOG,IIS,I2C,PWM定时器,MMC接口,ADC,UART,GPIO,RTC和SPI。

S3C2410 CPU 工作电压1.8v 主频200MHZ
工作电压2.0v 主频266MHZ

S3C2440 CPU 工作电压1.2v 主频300MHZ
工作电压1.3v 主频400MHZ

S3C2410/S3C2440外接的晶振频率通常都很低,一般为12MHZ。

通过时钟控制逻辑的PLL提高系统时钟,S3C2410/S3C2440的PLL有两种
MPLL(Main PLL):由于设置FCLK,HCLK,PLCK。
UPLL:专用于USB设备

开发板上电时,由于PLL并没有启动,故而FCLK即等于外部的晶振时钟,12MHZ,要提高系统的时钟,需要手动开启PLL。

MPLL的三个寄存器:LOCKTIME、MPLLCON、CLKDIVN.
(1)LOCKTIME:启动MPLL时,设置MPLL的几个寄存器后,需要等待一段时间,MPLL的输出才稳定,在这段时间内FCLK停震,CPU停止工作。而停止时间由LOCKTIME设定
通常采取默认值即可,即使用时可不设定LOCKTIME寄存器。

(2)MPLLCON:用于设置FCLK和外部晶振Fin的倍数。
[19:12]部分的值称为MDIV
[9:4]部分的值称为PDIV
[1:0]部分的值称为SDIV
对于S3C2410来说
MPLL(FCLK)=(m*Fin)/(p*2^s)
对于S3C2440来说
MPLL(FCLK)=(2*m*Fin)/(p*2^s)
在两种单板上均有 m=MDIV+8,P=PDIV+2,S=SDIV;

(3)CLKDIVN:用于设置FCLK,HCLK,PCLK的比例
S3C2410
HDIVN1 [2]位:0表示保留,此位通常设置为0,
1表示FCLK:HCLK:PCLK=1:4:4,此时[1][0]必须为为00
HDIVN [1]位:0表示HCLK=FCLK
1表示HCLK=FCLK/2
PDIVN [0]位:0表示PCLK=HCLK
1表示PCLK=HCLK/2
S3C2440
HDIVN1 [3]:通常为0
HDIVN [2:1]:通常为01,HCLK=FCLK/2
PDIVN [0]:通常为1,PCLK=HCLK/2

相比S3C2410开发板,S3C2440开发板还多了一个CAMDIVN寄存器,此寄存器用于提供摄像头的时钟控制。

常用设置代码:
# define CLKDIVN 0x4C000014 /* clock divisor register */
ldr r0, =CLKDIVN
mov r1, #3 //[2][1][0]=011 FCLK:HCLK:PCLK=1:2:4 ,对于S3C2410和S3C2440均成立
str r1, [r0]

当HDIVN不为0时(通常情况下确实不为0),需将CPU总线模式从快速总线模式改为异步总线模式,更改代码如下
mrc p15,0,r0,c1,c0,0
orr r0,r0,#R1_nF:OR:R1_iA
mcr p15,0,r0,c1,c0,0
如果在DIVN不为0时,没有将cpu总线模式改为异步总线模式,则cpu工作频率自动变为HCLK,而不是FCLK
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值