回家吃饭了!!!——ARM架构下时钟及定时器
当SOC在协调工作时,不同外设包括CPU所需要的外设所需要的工作频率都是不相同的,但是我们提供的外部晶振往往都是固定的,
那么有一种神奇的结构帮助我们完美解决了这种需求那就是——时钟树
1.CCM (Clock Controller Module)时钟控制模块
-
时钟树:
不同于51单片机, IMX有着一套复杂的时钟系统。注意,这里所说的时钟不是指通常意义上的“表”,
通常意义上的“表”在Soc上被称为RTC(Real Time Clock)外设。这里的时钟指的是系统运行时的频率,我们通常
所讲的主频,其实指的就是内核运行程序时的速度问题。 1GHz是指1秒钟Soc能够执行10的9次方次指令。 51单
片机的运行时钟是1MHz (12Mhz / 12)。并且所有的外设都是按照这个时钟运行的,比如定时器、 UART等。
但是IMX考虑到不同的外设需要的时钟频率是不一样的,给所有外设提供同样的时钟对于低速设备来说是一种
浪费(功耗更大)。**最好的方法是分离出多个不同的时钟出来,分别加以处理,产生出多路不同频率时钟以提供给
不同的外设使用。这个概念被称之为时钟树,**这是因为无论哪种Soc通常都是由一个Soc外部的晶体振荡器提供
最基本的频率,之后通过Soc内部复杂的电路进行分离的。形式上很像一棵树的样子,所以被称为时钟树。 -
时钟树核心器件:
1.PLL(Phare lock loop):锁相环电路
功能: 内部存在倍频因子,把一个基准的频率升高N倍,N>= 1,
只能升频不能降频
2.Phase,预分频器
功能:内部存在分频因子,把一个基准的频率降低N倍,N!= 0;
分类:
1.可调节分频因子的动态分频器:
- 2-bit Divider ,2位分频器:
分频因子M 00 01 10 11 ( 1 - 4分频); - 3-bit Divider ,3位分频器:
分频因子M 000 - 111 ( 1 - 8分频); - 6-bit Divider ,6位分频器:
分频因子M 000000 - 111111 ( 1 分频 - 64 分频)
2…static Divder ,静态分频器:
分频因子不能改变;
3.PFD(phase Fractional Divder ) , 相位分数分频器
内部既有分频因子也有降频因子,可以升频也可以降频
倍频因子是固定的,分频因子可以自行设定
分频计算公式:
Fout = Fin * div_select/2.0.

在我们学习的这款imx6ll这款开发板上,共有14 种PLL,2种PFD
PLL有系统锁相环电路,音频锁相环,视频锁相环等
PFD主要有PFD_528 和 PFD_480 两种
两者的区别就在于经过PLL2 倍频后的晶振频率不同
- PFD_528 经过PLL2 后的输入晶振频率为528 Mhz
- PFD_480 经过PLL2 后的输入晶振频率为480 Mhz
接下来介绍一下实例
外部时钟初始化:

定时器中断:
定时器实现精准延时:
更多推荐


所有评论(0)