FCLK ->CPU
HCLK->AHB总线
PCLK ->APB总线
两个锁相环(PLL)
MPLL->FCLK HCLK PCLK
UPLL ->USB(48M)
时钟来源
外部晶振->PLL->FCLK->HCLK->PCLK
必须先配置MPLLCON MPLL才会输出系统时钟
在软件重新配置PLLCON 寄存器之前系统时钟使用晶振时钟,即如果不配置PLLCON则系统时钟为晶振时钟(12M)(即上电后要想使用PLL放大晶振频率就要配置 MPLLCON)
CLKDIVN寄存器中HDIVN和 PDIVN 决定FCLK HCLK PCLK之间的比例
HDIVN:1 PDIVN:1 可以使FCLK HCLK PCLK之间的分频比例为1:2:4
但是 如果 HDIVN 不为 0,CPU 总线模式应该使用以下指令使其从快总线模式改变为异步总线模式(S3C2440不支持同步总线模式)。
MMU_SetAsyncBusMode
MRC p15, 0, r0, c1, c0, 0
ORR r0, r0, #R1_nF:OR:R1_iA
MCR p15, 0, r0, c1, c0, 0
不添加此指令的影响
如果 HDIVN 不为 0 并且 CPU 总线模式为快总线模式,CPU 运行在 HCLK
MPLLCON寄存器配置
MDIV [19:12] 主分频器控制
PDIV [9:4] 预分频器控制
SDIV [1:0] 后分频器控制
晶振经过锁相环PLL后时钟计算公式为:
Mpll = ( 2 × m × Fin ) / ( p × 2 s )
m = M(分频器 M 的值)+ 8
p = P(分频器 P 的值)+ 2
s = SDIV
UPLL 控制寄存器
Upll = ( m × Fin ) / ( p × 2 s )
m = ( MDIV + 8 )
p = ( PDIV + 2 )
s = SDIV
当你设置 MPLL 和 UPLL 的值时,你必须首先设置 UPLL 值再设置 MPLL 值。(大约需要 7 个 NOP 的间隔)
如果要设置S3C2440 CPU工作在200MHZ可配置
MDIV = 100
PDIV = 1
SDIV = 2
重点:
即上电后要想使用PLL放大晶振频率就要配置 MPLLCON
先设置 UPLL 值再设置 MPLL 值
CLKDIVN:决定FCLK HCLK PCLK之间的比例
MPLLCON:决定晶振放大后的频率
配置CLKDIVN时注意总线模式切换