1、2440时钟产生模块
S3C2440可以使用外部晶振(XTIpll)(默认为12MHZ)
和外部时钟(EXTCLK)两种方式输入时钟信号。它由跳
线OM[3:2]决定。
S3C2440 默认的工作主频为12MHz
(晶振频率),S3C2440有两个PLL:MPLL和UPLL。通
过MPLL会产生三个部分的时钟频率:FCLK、HCLK、
PLCK。UPLL则负责产生USB所需时钟UCLK。
2、2440有两个锁相环PLL(MPLL和UPLL)
3、时钟初始化流程
4、时钟工作流程
1、上电几毫秒后,晶振输出稳定,FCLK=晶振频率,nRESET信号恢复高电平后,CPU开始执行指令。
2、我们的程序开头启动MPLL,设置MPLL的寄存器
3、在设置MPLL的寄存器后,需要等待一段时间(LockTime),MPLL的输出才稳定。在这段时间(Lock Time)内,FCLK停振,CPU停止工作。Lock Time的长短 由寄存器LOCKTIME设定。
4、Lock Time之后,MPLL输出正常,CPU工作在新的FCLK下。
1、设置locktime(LOCKTIME 寄存器)
2、设置分频系数(CLKDIVN 寄存器)
3、如果FCLK != HCLCK (即CLKDIVN 寄存器 PDIVN 位不为0)应设置CPU至异步模式。
4、设置UCLK与FCLK频率(UPLLCON 寄存器、MPLLCON 寄存器)
5、NOTE: When you set MPLL&UPLL values, you have to set the UPLL value first and then the MPLL value. (Needs intervals
approximately 7 NOP)
#define CLKDIVN 0x4c000014
#define MPLLCON 0x4c000004
#define MPLL_405MHZ ((127<<12)|(2<<4)|(1<<0))
init_clock:
ldr r0, =CLKDIVN
mov r1, #0x5
str r1, [r0]
mrc p15,0,r0,c1,c0,0
orr r0,r0,#0xc0000000
mcr p15,0,r0,c1,c0,0
ldr r0, =MPLLCON
ldr r1, =MPLL_405MHZ
str r1, [r0]
mov pc, lr