S3C2440A中的时钟操控逻辑能够发生有必要的时钟信号,包括CPU的FCLK,AHB总线外设的HCLK以及APB总线外设的PCLK。S3C2440A包括两个锁相环(PLL):一个供给给FCLK、HCLK和PCLK,另一个专用于USB模块(48MHz)。时钟操控逻辑能够不运用PLL来减慢时钟,而且能够由软件衔接或断开各外设模块的时钟,以降低功耗。
S3C2440A的主时钟源由外部时钟(EXTCLK)或许外部晶振(XTIPll)供给,输入时钟源由形式操控引脚OM3和OM2操控挑选,在复位信号的上升沿参阅OM3和OM2的引脚将OM[3:2]的状况在内部确定,如图1所示
图1 引导启动时的时钟源挑选
挑选不同输入时钟源时衔接方法如图2所示:
图2 时钟衔接参阅
经过在片内集成的2个锁相环:MPLL和UPLL,可对输入的Fin=12MHz的晶振频率进行倍频。S3C2440运用了三个倍频因子MDIV、PDIV和SDIV来设置倍频,经过寄存器MPLLCON和UPLLCON可设置倍频因子。其间MPLLCON寄存器用于设置处理器内核时钟主频FCLK,其输入输出频率间的联系为
FCLK=MPLL=(2*m*Fin)/(p*2^s)
其间m=(MDIV+8), p=(PDIV+2), s=SDIV。
其间UPLLCON寄存器用于发生48MHz或96MHz,供给USB时钟(UCLK),其输入输出频率间的联系为
UCLK=UPLL=(m * Fin) / (p * 2^s)
其间m=(MDIV+8), p=(PDIV+2), s=SDIV。
手艺核算相对杂乱些,咱们能够依据欲得到的主频FCLK巨细,直接经过查表来获悉各倍频因子的设置参数,详见。
S3C2440的数据手册中供给了一个表格来查询各个输出频率和输入频率所对应的MPLL中参数m、p和s的值,运用的时分最好只运用该表格中引荐的数值。
图3 PLL真值表
经过图3的真值表,咱们能够得到假如输入时钟为12MHz,输出时钟FCLK为405MHz,能够挑选MDIV为127,PDIV为2,SDIV为1。输出48MHz和96MHz是UPLLCON运用的。
除了可设置内核时钟FCLK,还需要设置AHB总线设备运用的HCLK和APB总线设备运用的PCLK。经过CLKDIVN和CAMDIVN这两个寄存器可设置三者的分频联系,如图4 为CLKDIVN的阐明,能够经过设置CLKDIVN和CAMDIVN的相关位来设置这三个时钟。
图4 FCLK、HCLK和PCLK联系
详细可观赏数据手册中对此的阐明。即若主频FLCK是400MHz,假如依照1:4:8的设置,能够先设置CLKDIVN为0101,然后设置CAMDIVN的第9位为0(不设置的时分该位默以为0),此刻HLCK是100MHz,PLCK是50MHz。
可将该频率映射到CLKOUT0引脚,对其测验验证。
在咱们搭建好2440的硬件平台后,咱们在调试硬件的时分,一般需要将体系的时钟测验引脚引出来测验,以承认体系是否到达规划的要求。2440供给了CLKOUT0和CLKOUT1这两个引脚用于测验时钟。能够经过设置MISCCR寄存器的CLKSEL0和CLKSEL1位来挑选CLKOUT0和CLKOUT1的时钟源。其时钟源别离有000=MPLL输出,001为UPLL输出,010为RTC输出,011为HCLK,100为PCLK,101为DCLK1/0,11X为保存的。
测验用的汇编程序如下:
AREA Example,CODE,READONLY;声明代码段Example
ENTRY ;标明程序进口
CODE32 ;声明32位ARM指令
START LDR R0, =0x0005C011 ;FCLK=400MHz
LDR R1, =0x4C000004 ;MPLLCON寄存器
STR R0,[R1]
LDR R0, =0x00000005 ;FCLK:HCLK:PCLK=1:4:8
LDR R1, =0x4C000014 ;CLOCK DIVIDER control
STR R0,[R1]
LDR R0, =(0xa<<18)
LDR R1, =0x56000070 ;端口H操控寄存器
STR R0,[R1]
;CLKOUT0、CLKOUT1引脚复用(挑选GPH10-9的功能为CLKOUT0和1)
LDR R0, =(0x86<<3)
;CLKOUT0和CLKOUT1别离输出HCLK及PCLK
LDR R1, =0x56000080 ;MISCCR寄存器
STR R0,[R1]
END
测验没错的话就Okay了