您的位置:首页 > 其它

JZ2440 系统时钟

2017-05-05 17:37 197 查看
时钟控制逻辑给整个芯片提供了三种时钟

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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: