JZ2440 系统时钟

xiaoxiao2021-02-28  77

时钟控制逻辑给整个芯片提供了三种时钟 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
转载请注明原文地址: https://www.6miu.com/read-34354.html

最新回复(0)