详细的实验代码请查看这里:
一、 概念解析
1. 时钟脉冲信号:按照一定的电压富都,一定的时间间隔连续发出的脉冲信号,是时序逻辑的基础。
2. 时钟脉冲频率:一秒钟内产生的时钟脉冲个数(Hz)。
3. 信号产生源:
3.1 晶振:晶体振荡器,也就是石英晶体经切割、镀上电极后加电。
优点:结构简单、噪声低。缺点:频率越高,价格越高,交货期长
3.2 PPL(锁相环)合成器+外部晶振
外加一个对晶体的特定频率加倍分频的集成PPL电路。如通过对12MHz的加倍,可以获得120MHz的频率,以及分频,分成60MHz和30MHz两个频率。
二、 关于S3C2440的时钟体系(参考S3C2440芯片手册中的Setion 7)
1. 晶振频率:12MHz
2. PPL个数为两个: MPLL,UPLL
3. 时钟个数:MPLL(HCLK,FCLK,PCLK),UPLL(UCLK)
4.
时钟 | 应用场合 | 应用举例 | 所属PLL |
FCLK | 处理器 | arm920T | MPLL |
HCLK | AHB | LCD,DMA | MPLL |
PCLK | APB | Uart,GPIO | MPLL |
UCLK | USB | USB(host,sever) | UPLL |
三、 时钟初始化流程(参考S3C2440芯片手册图7-4)
1. 原理: 上电后,ARM核频率为12MHz,利用软件配置PLL,提高CPU速度,配置后进入LockTime,CPU提升
2. 步骤:
2.1 配置LockTime
2.2 配置分频系数为1:4:8(参考U-boot源码)
2.3 根据手册243页的NOTE,把CPU切换为异步工作模式
2.4 配置FCLK
四、 实验代码:
#define CLKDIVN 0x4c000014
#define MPLLCON 0x4c000008
#define MPLL_405MHZ ((127<<12)|(2<<4)|(1<<0))
clock_init:
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