您的位置:首页 > 其它

ok6410时钟初始化

2016-03-18 20:35 309 查看
ok6410时钟体系需要懂得事:

1.晶振多少赫兹

2.有多少锁相环(PLL)

3.锁相环产生哪些时钟

4.时钟是干什么的

ok6410时钟初始化要做的事:

1.配置locktime

2.设置分频系数

3.配置FCLK

4.如果FCLK ≠ HCLK,设置CPU到异步模式

平台

晶振

锁相环

时钟

应用场合

举例

6410

12M

APLL

ACLK

处理器

ARM11内核

MPLL

HCLK

AHB总线

LCD、DMA

PCLK

APB总线

Uart、GPIO

EPLL

SCLK

USB总线

USB主从口

首先看6410的时钟体系图,根据此图来进行配置



lock time设置为默认即可,如有需要在进行设置,所以第一步可跳过,直接进行第二步设置分频系数。





由这两张图可得以下关系:

ARMCLK=APLL/(DIVARM+1);

HCLKX2=MPLL/(DIVHCLKX2+1);

HCLK=HCLKX2/(DIVHCLK+1);

PCLK=HCLKX2/(DIVPCLK+1);

由此设置分频系数

#define CLK_DIV0 0X7E00F020

#define DIV_VAL ((0x0 << 0)|(0x1 << 9)|(0x1 << 8)|(0x3 << 12))

ldr r0, =CLK_DIV0

ldr r1, =DIV_VAL

str r1,[r0]

设置flock只需设置APLL、MPLL





由此可设置MPLL、APLL,代码如下

#define MPLL_CON 0x7e00f010

#define APLL_CON 0x7e00f00c

#define PLL_VAL ((1 << 31) | (266 << 16) |(3 << 8)|(1 << 0))

;设置APLL、MPLL

ldr r0, =APLL_CON

ldr r1, =PLL_VAL

str r1, [r0]

ldr r0, =MPLL_CON

ldr r1, =PLL_VAL

str r1, [r0]

然后设置异步模式,2440中,通过CP15协处理器设置,而ok6410中有专门寄存器来进行设置



0:异步模式

1:同步模式

;设置异步模式

ldr r0, =OTHERS

ldr r1, [r0]

bic r1,r1,#0xc0 ;6、7位都需设置为0,由时钟图和上图可得

最后,0k6410还需设置OTHERS的时钟来源,





#define CLK_SRC 0x7e00f01c

ldr r0, =CLK_SRC

mov r1, #0x3

str r1, [r0]

到此所有设置已完,总代码如下:

init_clock:

;设置分频系数

ldr r0, =CLK_DIV0

ldr r1, =DIV_VAL

str r1,[r0]

;设置异步模式

ldr r0, =OTHERS

ldr r1, [r0]

bic r1,r1,#0xc0 ;6、7位设置为0

;设置APLL、MPLL

ldr r0, =APLL_CON

ldr r1, =PLL_VAL

str r1, [r0]

ldr r0, =MPLL_CON

ldr r1, =PLL_VAL

str r1, [r0]

ldr r0, =CLK_SRC

mov r1, #0x3

str r1, [r0]

mov pc, lr

参考资料:《S3C6410用户手册》
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: