在ARM中要有一个统一的时钟信号,在这个时钟下,各个部件才能有条不紊,按部就班的运行,这个时钟有两种来源,一种是内部晶振,这种晶振频率固定,不利于各个部件的需要,因为不同部件需要的频率可能不相同;另一种是通过外部晶振,这种晶振可以通过锁相环PLL进行控制,在MPLL的控制下,可以分出三种时钟频率,FCLK给CPU,HCLK给高速外设,PCLK给低速外设,在UPLL的控制下,可以得到USB的时钟为UCLK.
通过PLL控制,主要是通过以下三种寄存器来控制
1.LOCKTIME.MPLL启动后需要等待一段时间(LOCK TIME),使得其输出稳定.位[31:16]用于UPLL,位[15:0]用于MPLL.使用缺省值0xffffffff即可.
2.MPLLCON.此寄存器主要是设置FCLK与Fin的关系倍数(Fin是时钟源固有频率)
位[19:12]的值称为MDIV 位[9:4]的值称为PDIV 位[1:0]的值称为SDIV
FCLK与Fin的计算关系式为
MPLL(FCLK)=(2*m*Fin)/(p*2^s)
其中m=MDIV+8;p=PDIV+2;s=SDIV;
3.CLKDIV.此寄存器主要是配置HCLK,PCLK与FCLK的关系,所以应该先配置MPLLCON再配置CLKDIV
HDIVN:位[2:1],用来设置HCLK与FCLK的比例关系
PDIVN:位[0],用来设置PCLK与HCLK比例关系
具体详见我的图书馆http://www.360doc.com/myfiles.aspx?app=7&type=2