ARM时钟问题

来源:互联网 发布:汽车修理厂服务软件 编辑:程序博客网 时间:2024/05/19 19:33

          在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