微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > S3C6410 时钟初始化

S3C6410 时钟初始化

时间:11-20 来源:互联网 点击:

ldrr0, =CLOCK_BASE;0x7e00f000
ldrr1, [r0, #OTHERS_OFFSET];选择MPLL的时钟源
movr2, #0x40
orrr1, r1, r2
strr1, [r0, #OTHERS_OFFSET]
nop
nop
nop
nop
;选择CPU的同步工作模式
ldrr2, =0x80
orrr1, r1, r2
strr1, [r0, #OTHERS_OFFSET]

;测试是否已经工作在同步模式下
check_syncack
ldrr1, [r0, #OTHERS_OFFSET]
ldrr2, =0xf00
andr1, r1, r2
cmpr1, #0xf00
bnecheck_syncack


2.设置变频锁定时间,当系统时钟修改之后要经过段LOCK时间

;设置变频锁定时间
movr1, #0xff00
orrr1, r1, #0xff
strr1, [r0, #APLL_LOCK_OFFSET]
strr1, [r0, #MPLL_LOCK_OFFSET]
strr1, [r0, #EPLL_LOCK_OFFSET]


3.设置ARMCLK, HCLKX2, HCLK, PCLK的分频
各种频率的关系如图1-3所述:
APLL或MPLL产生的输出频率经过OTHER[6]选择之后再经过MISC_CON[19]选择是否被1/5分频,产生的输出频率进入div_HCLKx2,根据CLK_div0的不同位设置HCLKX2,HCLK,PCLK,CLKJPEG,CLKSECUR的输出频率。其值设置情况如CLK_div0寄存器描述内容所述。

l我们将MPLL选择DOUT_APLL,MISC_ON[19]不进行分频,DOUT_APLL产生的时钟(533MHz)直接进入到div_HCLKX2分频器中。
l根据硬件手册可知,HCLKX2的频率固定为266MHz,所以HCLKX2_RATIO设置为0b1
lHCLK上挂接有内存,Mobile DDR内存最高工作在133MHz,所以HCLK最高主频设置为HCLKX2的1/2,即:HCLK_RATIO = 0b1
l设置PCLK上的工作频率为66.5MHz,即:PCLK_RATIO = 0b11
l设置ARM内核工作频率为553MHz,即:ARM_RATIO = 0b0
l设置DOUT_MPLL为266MHz,为后面UART提供时钟源,即:MPLL_RATIO = 0b0
l其它时钟频率保持默认值

; MPLL_RATIO = 0<4, ARM_RATIO = 0
; DOUT_MPLL = MOUT_MPLL/(MPLL_RATIO + 1)
;即ARMCLK = DOUT_APLL / (ARM_RATIO + 1)
;即ARMCLK = 533MHz, DOUT_MPLL = 266MHz
; HCLKX2_RATIO = 1<9 , HCLK_RATIO = 1<8,PCLK_RATIO = 3<12, HCLKX2IN = 533
;即HCLKX2 = HCLKX2IN / (HCLKX2_RATIO + 1) = 266
;即HCLK = HCLKX2 / (HCLK_RATIO + 1) = 133
;即PCLK = HCLKX2 / (PCLK_RATIO + 1) = 66.5
ldrr1, [r0, #CLK_div0_OFFSET]
bicr1, r1, #0xff00
bicr1, r1, #0xff
ldrr2, =0x3300
orrr1, r1, r2
strr1, [r0, #CLK_div0_OFFSET]


4.设置UART工作时钟
由图1-6可知,通过设置CLK_SRC[1]选择DOUT_MPLL的工作时钟是否进行倍频,通过设置CLK_div0[4]对时钟进行分频,再通过CLK_SRC[13]选择UART的工作时钟源,设置CLK_div2[19:16]位用于分频UART工作时钟。由前面可知DOUT_MPLL = 266MHz,UART选择其作为自己工作时钟源,则对其进行1/4分频可以得到66.5MHz。
如下表可知:设置寄存器CLK_div2[19:16] = 0b11,同时还要设置CLK_SRC[13] = 0b1即可。

;设置UART串口的分频数寄存器CLK_div2
ldrr1, [r0, #CLK_div2_OFFSET]
bicr1, r1, #0x70000
orrr1, r1, #0x30000;设置其值为3,即CLKUART = CLKUARTIN / 4
strr1, [r0, #CLK_div2_OFFSET]


5.使能APLL,EPLL锁相环
根据硬件手册上的说明设置APLL, EPLL的M,D,S分频数。
APLL产生533MHz的FOUT_APLL
EPLL产生266MHz的MOUT_EPLL

;使能APLL锁相环,配置M,D,S分频数, according to Datasheet FOUT_APLL = 533 then
; APLL_EN = 1<31, Mdiv = 266<16, Pdiv = 3<8, Sdiv = 1
ldrr1, = 0x810a0301
strr1, [r0, #APLL_CON_OFFSET]

;使能MPLL锁相环,配置M,D,S分频数
; MPLL_EN = 1<31, Mdiv = 266<16, Pdiv = 3<8, Sdiv = 2
ldrr1, = 0x810a0302
strr1, [r0, #MPLL_CON_OFFSET]


6.设置对应时钟源寄存器,为各种外设提供时钟频率

; UART_SEL = 0b1
; MPLL_SEL = 0b1, APLL_SEL = 0b1

ldrr1, [r0, #CLK_SRC_OFFSET]
ldrr2, =0x2005;同时设置UART的时钟源来自MPLL
orrr1, r1, r2
strr1, [r0, #CLK_SRC_OFFSET]


Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top