首页 > 代码库 > PLL锁相环
PLL锁相环
转载请注明原文出处,http://www.cnblogs.com/flyingcloude/p/6992482.html
S3C6410芯片有3路PLL, APLL用于ARM时钟操作,MPLL用于主时钟操作(用于操作AXI、AHB、APB总线操作),EPLL用于特殊用途。当OM[0]=0,表示使用晶振,CLK_SRC[0]=1表示选择APLL。
时钟设置的过程根据6410芯片手册的说明,可以总结为如下过程:
(1)设置锁定时间,对0x7E00F000,0x7E00F004,0x7E00F008进行操作。
(2)设置异步模式,对0x7E00F900进行操作,使用bic清除功能。
(3)循环等待,读取0x7E00F900。
(4)设置PLL, 0x7E00F020
(5)设置APLL,0x7E00F00C
(6)设置MPLL,0x7E00F010
(7)切换时钟源(0x7E00F01C)
具体的代码如下:
.globl _start_start:/*硬件相关的设置-该设置是ARM11中特有的,告诉CPU外围设备的基地址*/ ldr r0, =0x70000000 orr r0, r0, #0x13/*设置协寄存器,在ARM11内核手册中有说明*//*r0 = 0x70000013 表示 长度为256M*/ mcr p15, 0, r0, c15, c2, 4/*关看门狗*//*WTCON(0X7E004000) = 0*/ ldr r0, =0x7E004000 mov r1, #0 str r1, [r0]/*设置PLL*//*设置APLL_LOCK MPLL_LOCK S3C6410手册的在139页*/ ldr r0, =0x7E00F000 ldr r1, =0x0000FFFF str r1, [r0] ldr r0, =0x7E00F004 ldr r1, =0x0000FFFF str r1, [r0]/*设置异步模式 OTHERS s3c6410手册169页*/ ldr r0, =0x7E00F900 ldr r1, [r0] bic r1, r1, #0xc0 str r1, [r0]/*循环等待 syncack [11:8] SYNC mode acknowledge(Read Only) 0x0*/loop1: ldr r0, =0x7E00F900 ldr r1, [r0] and r1, r1, #0xf00 cmp r1, #0 bne loop1/*设置CLK_DIV0 参考手册125页*/#define ARM_RATIO 0#define HCLKX2_RATIO 1#define HCLK_RATIO 1#define PCLK_RATIO 3#define MPLL_RATIO 0 ldr r0, =0x7E00F020 ldr r1, =(ARM_RATIO) | (MPLL_RATIO << 4) | (HCLK_RATIO << 8) | (HCLKX2_RATIO << 9) | (PCLK_RATIO << 12) str r1, [r0]/*设置APLL 参考手册142页*/#define APLL_ENABLE 1#define MDIV 266#define PDIV 3#define SDIV 1 ldr r0, =0x7E00F00C ldr r1, =(APLL_ENABLE << 31) | (MDIV << 16) | (PDIV << 8) | (SDIV) str r1, [r0]/*设置MPLL 参考手册*/ ldr r0, =0x7E00F010 ldr r1, =(APLL_ENABLE << 31) | (MDIV << 16) | (PDIV << 8) | (SDIV) str r1, [r0]/*时钟源选择*/ ldr r0, =0x7E00F01C ldr r1, =0x03 str r1, [r0]/*设置GPKCON0让 GPK4,GPK5,GPK6,GPK7作为输出引脚*/ ldr r0, =0x7F008800 ldr r1, =0x11110000 str r1, [r0]/*设置GPKDAT让 GPK4 = 0, GPK5 = 1, GPK6 = 0, GPK7 = 1*//*即LED1亮,LED2暗,LED3亮,LED4暗*/ ldr r0, =0x7F008808 mov r1, #0x00A0 str r1, [r0]loop: mov r1, #0x00A0 str r1, [r0] bl delay mov r1, #0x0080 str r1, [r0] bl delay b loopdelay: ldr r2, =0xF4240delay_loop: sub r2, r2, #1 cmp r2, #0 bne delay_loop mov pc, lrhalt: b halt
通过编译,将bin文件焼入之后,会发现LED灯的闪烁速度明显比http://www.cnblogs.com/flyingcloude/p/3172654.html的要快很多
转载请注明原文出处,http://www.cnblogs.com/flyingcloude/p/6992482.html
PLL锁相环
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。