ARM 时钟管理的学习

一。时钟源

ARM要正常运行,需要提供时钟,该时钟可能是晶振也可能是外部时钟。除了USB外,其他模块的时钟源,“一定”为同一时钟源,而USB和其他模块是否为同一时钟源呢?是由OM2,OM3引脚决定的,即有硬件设置决定的。分为同是外部时钟,同为晶振,分别为外部时钟和晶振共四种情况。

 

二。变频

时钟源具有一定的固定频率,并不意味着其他模块的时钟频率就一定为该固定频率,有时候需要改变频率。这一工作便是由“锁相环”完成的。“锁相环”的主要目的就是变频。

由于USB的特殊性,进而系统中也就有了两个“锁相环”,一个专门为USB服务,另一个为其他模块服务。只要向“锁相环”相关的寄存器中软件写入相应的值,便可实现输出频率的改变。

 

三。变频流程

由于两个“锁相环”工作原理一样,现在拿专门问系统内部模块服务的“锁相环”来说明,变频的过程。

可大体分为两种情况的变频:1.上电复位变频  2.在正常工作状态下变频

1,上电复位变频:上点复位后,在软件配置“PLLCON”锁定时间前,FCLK用的是时钟源。复位后,系统就根据软件写入寄存器PLLCON和LOCKTIME进行时钟配置了。配置好后,此时进入LOCKTIME阶段,此阶段下,FCLK的值变为0,同时锁相环的输出频率向Mpll的值(即配置好后的频率)靠近。等到LCOKTIME结束,输出频率为配置后的频率。此时FCLK的值变为Mpll的值。

2。 正常工作状态下变频:在正常工作状态下,改变频率,改变相关寄存器中值,然后,系统就会经过LOCTIME 然后正常运行,在LOCTIME期间,FCLK为0。配置好的频率,只有在LOCKTIME后方起作用。

 

四。关于分频

在主频MPS值设置好后,要马上设置CLKDIVN寄存器即分频系数寄存器中的值,以此设定HCLK和PCLK的值。CLKDIVN的值的改变也是在LOCKTIME后才起作用。

 

五。时钟管理相关的寄存器

LOCKTIME寄存器   默认值0xFFFFFFFF,其中低16位用于配置主模块的,高16位用于配置USB的

MPLLCON寄存器   配置主模块输出频率的 【1:0】名称为SDIV用于设置后分频,【9:4】名称为PDIV用于设置预分频,【19:12】主分频MDIV用于设置主分频。

UPLLCON寄存器   配置USB模块输出频率的 其中各位如MPLLCON寄存器一样。

 

那么输出频率和输入频率的关系式什么呢?如下公式所示: 

Mpll=(2*m*Fin)/(p*2s(s此方))           m=MDIV+8,p=PDIV+2,s=SDIV

Mpll=(m*Fin)/(p*2s(s此方))           m=MDIV+8,p=PDIV+2,s=SDIV

注:在我们进行程序设计的时候,只需要将MDIV,PDIV,SDIV的值写入相应MPLLCON或UPLLCON寄存器相应位中即可。

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值