当SOC在协调工作时,不同外设包括CPU所需要的外设所需要的工作频率都是不相同的,但是我们提供的外部晶振往往都是固定的,
那么有一种神奇的结构帮助我们完美解决了这种需求那就是——时钟树

1.CCM (Clock Controller Module)时钟控制模块

  1. 时钟树:
    不同于51单片机, IMX有着一套复杂的时钟系统。注意,这里所说的时钟不是指通常意义上的“表”,
    通常意义上的“表”在Soc上被称为RTC(Real Time Clock)外设。这里的时钟指的是系统运行时的频率,我们通常
    所讲的主频,其实指的就是内核运行程序时的速度问题。 1GHz是指1秒钟Soc能够执行10的9次方次指令。 51单
    片机的运行时钟是1MHz (12Mhz / 12)。并且所有的外设都是按照这个时钟运行的,比如定时器、 UART等。
    但是IMX考虑到不同的外设需要的时钟频率是不一样的,给所有外设提供同样的时钟对于低速设备来说是一种
    浪费(功耗更大)。**最好的方法是分离出多个不同的时钟出来,分别加以处理,产生出多路不同频率时钟以提供给
    不同的外设使用。这个概念被称之为时钟树,**这是因为无论哪种Soc通常都是由一个Soc外部的晶体振荡器提供
    最基本的频率,之后通过Soc内部复杂的电路进行分离的。形式上很像一棵树的样子,所以被称为时钟树。

  2. 时钟树核心器件:

1.PLL(Phare lock loop):锁相环电路
功能: 内部存在倍频因子,把一个基准的频率升高N倍,N>= 1,
只能升频不能降频在这里插入图片描述

2.Phase,预分频器
功能:内部存在分频因子,把一个基准的频率降低N倍,N!= 0;
在这里插入图片描述

分类:
1.可调节分频因子的动态分频器:
在这里插入图片描述

  1. 2-bit Divider ,2位分频器:
    分频因子M 00 01 10 11 ( 1 - 4分频);
  2. 3-bit Divider ,3位分频器:
    分频因子M 000 - 111 ( 1 - 8分频);
  3. 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

接下来介绍一下实例

外部时钟初始化:
在这里插入图片描述
在这里插入图片描述

定时器中断:
在这里插入图片描述

定时器实现精准延时:
在这里插入图片描述

Logo

智能硬件社区聚焦AI智能硬件技术生态,汇聚嵌入式AI、物联网硬件开发者,打造交流分享平台,同步全国赛事资讯、开展 OPC 核心人才招募,助力技术落地与开发者成长。

更多推荐