0
点赞
收藏
分享

微信扫一扫

I.MX6U 裸机开发11.主频和时钟配置实验



I.MX6U 裸机开发11.主频和时钟配置实验

  • 一、I.MX6U的晶振
  • 1. 32.768KHz晶振
  • 2. 24MHz晶振
  • (1)硬件电路
  • (2)主要作用
  • (3)PLL介绍
  • ARM PLL :
  • System PLL (528PLL):
  • USB1、USB2 PLL :
  • ENET PLL
  • Audio PLL:
  • Video PLL:
  • 二、时钟树
  • 1. 时钟树的概念
  • 2. I.MX6ULL 时钟树结构:
  • 3. 外设找到PLL的方式
  • 三、7路PLL
  • 1. ARM PLL(PLL1)
  • ARM PLL详解
  • 2. SYSTEM PLL(PLL2)
  • 扩频调制
  • PLL2 分出的 PFD 详解
  • 3. USB1 PLL(PLL3)
  • 4. Audio PLL(PLL4)
  • 5. Video PLL(PLL5)
  • 6. ENET PLL(PLL6)
  • 7. USB2 PLL(PLL7)


一、I.MX6U的晶振

前面章节的测试程序,I.MX6ULL都是在以默认主频 396M 速度在运行,而该芯片可以以多种速率运行。本章节介绍如何配置主频。

1. 32.768KHz晶振

I.MX6U 裸机开发11.主频和时钟配置实验_ide

该晶振主要有以下作用:

  • 该晶振供RTC(实时时钟)使用,通常用于驱动RTC模块,以提供准确的时间和日期信息,即使处理器在低功耗时也能保持运行。
  • 在低功耗模式下,32.768KHz的时钟也可以作为系统时钟源,以减少功耗。
  • 32.768KHz的时钟还可以作为其他模块的时钟源,如看门狗定时器(WDT)、低功耗定时器(LPT)。

2. 24MHz晶振

(1)硬件电路

I.MX6U 裸机开发11.主频和时钟配置实验_晶振_02


I.MX6U 裸机开发11.主频和时钟配置实验_嵌入式硬件_03

(2)主要作用

在芯片的T16、T17引脚,接了24MHz的晶振,这个晶振是系统的主要的时钟源,主要有以下作用:

  • 系统时钟源:24MHz 晶振作为主时钟源,为处理器和其他外设提供时钟信号。
  • PLL 输入:24MHz 晶振信号可以作为锁相环(PLL)的输入,PLL 可以将其倍频生成更高频率的时钟信号,用于 CPU 和其他高速外设。
  • 外设时钟:一些外设模块可以直接使用 24MHz 晶振作为时钟源。

I.MX6U 裸机开发11.主频和时钟配置实验_晶振_04

(3)PLL介绍

在 I.MX6ULL 处理器中,PLL(锁相环)用于生成各种频率的时钟信号,以满足不同模块的需求。以下是几种常见的 PLL:

ARM PLL :

用于生成 ARM Cortex-A7 内核的时钟信号。

System PLL (528PLL):

用于生成系统总线和外设的时钟信号。

USB1、USB2 PLL :

用于生成 USB 模块的时钟信号。

ENET PLL
Audio PLL:

用于生成音频模块的时钟信号。

Video PLL:

用于生成视频模块的时钟信号。

二、时钟树

1. 时钟树的概念

I.MX6ULL 的时钟树是一个复杂的时钟分配网络,用于将时钟信号从时钟源分配到处理器内的各个模块和外设。以下是 I.MX6ULL 时钟树的主要组成部分:

  1. 外部时钟源
  • 24MHz 晶振:主要的时钟源,用于生成系统时钟和外设时钟。
  • 32.768KHz 晶振:用于低功耗模式和 RTC(实时时钟)。
  1. PLL(锁相环)
  • PLL1 (ARM PLL):用于生成 ARM Cortex-A7 内核的时钟信号。
  • PLL2 (System PLL):用于生成系统总线和外设的时钟信号,输出频率为 528MHz。
  • PLL3 (USB PLL):用于生成 USB 模块的时钟信号,输出频率为 480MHz。
  • PLL4 (Audio PLL):用于生成音频模块的时钟信号。
  • PLL5 (Video PLL):用于生成视频模块的时钟信号。
  1. 时钟分配
  • CCM(Clock Control Module):时钟控制模块,用于管理和分配时钟信号。
  • 时钟门控:通过启用或禁用时钟信号来控制各个模块的时钟,以节省功耗。
  1. 时钟域
  • 系统时钟域:包括 CPU、总线和内存控制器等。
  • 外设时钟域:包括 UART、I2C、SPI 等外设模块。
  • 低功耗时钟域:包括 RTC 和低功耗定时器等。

2. I.MX6ULL 时钟树结构:

外部时钟源
  ├── 24MHz 晶振
  │    ├── PLL1 (ARM PLL) -> ARM Cortex-A7 内核时钟
  │    ├── PLL2 (System PLL) -> 系统总线和外设时钟 (528MHz)
  │    ├── PLL3 (USB PLL) -> USB 模块时钟 (480MHz)
  │    ├── PLL4 (Audio PLL) -> 音频模块时钟
  │    └── PLL5 (Video PLL) -> 视频模块时钟
  └── 32.768KHz 晶振
       ├── RTC (实时时钟)
       └── 低功耗模式时钟

时钟分配
  ├── CCM (Clock Control Module)
  │    ├── 系统时钟域
  │    │    ├── CPU
  │    │    ├── 总线
  │    │    └── 内存控制器
  │    ├── 外设时钟域
  │    │    ├── UART
  │    │    ├── I2C
  │    │    └── SPI
  │    └── 低功耗时钟域
  │         ├── RTC
  │         └── 低功耗定时器
  └── 时钟门控
       ├── 启用时钟
       └── 禁用时钟

3. 外设找到PLL的方式

在《IMX6ULL参考手册》 P629:

I.MX6U 裸机开发11.主频和时钟配置实验_ide_05


最右侧是外设,顺着线路向左找对应的PLL。

三、7路PLL

1. ARM PLL(PLL1)

ARM PLL详解

ARM PLL (PLL1) 用于生成 ARM Cortex-A7 内核的时钟信号,其主要特点:

  • 输入时钟源:通常为 24MHz 晶振。
  • 输出频率范围:650 MHz 到 1.3 GHz。
  • 输出频率选择:通过 7 位寄存器字段 CCM_ANALOG_PLL_ARM[DIV_SELECT] 进行选择。
  • 频率计算公式:PLL 输出频率 = Fref * DIV_SEL / 2,其中 Fref 为 24MHz。

2. SYSTEM PLL(PLL2)

PLL2 (System PLL) 用于生成系统总线和外设的时钟信号,其主要特点:

  • 输入时钟源:通常为 24MHz 晶振。
  • 输出频率:默认频率为 528MHz。
  • 低抖动时钟:从 24MHz 参考时钟合成低抖动时钟。
  • 输出时钟:一个主输出时钟和四个 PFD(Phase Fractional Divider)输出。
  • 扩频调制:支持扩频调制,用于减少辐射发射。
  • 锁定时间:由于支持扩频调制,PLL 的锁定时间比不支持扩频调制的 PLL 更长。
扩频调制

扩频操作通过配置 CCM_ANALOG_PLL_SYS_SS 寄存器来控制。当启用时,PLL 输出频率将根据 STEP 字段定义的量减少,直到达到 STOP 字段中的限制频率。然后频率将类似地返回到原始标称频率。

  • 扩频范围Spread spectrum range = Fref x CCM_ANALOG_PLL_SYS_SS[STOP] / CCM_ANALOG_PLL_SYS_DENOM[B]
  • 调制频率Modulation frequency = Fref x CCM_ANALOG_PLL_SYS_SS[STEP] / (2 x CCM_ANALOG_PLL_SYS_SS[STOP])

PLL2 分出的 PFD 详解

在 i.MX6ULL 处理器中,PLL2(System PLL)除了提供主输出时钟外,还分出四个 PFD(Phase Fractional Divider)输出。PFD 是一种相位分数分频器,用于生成不同频率的时钟信号,以满足不同模块的需求。

I.MX6U 裸机开发11.主频和时钟配置实验_低功耗_06

3. USB1 PLL(PLL3)

USB1 PLL 用于生成 USB 模块的时钟信号,其主要特点:

  • 输入时钟源:通常为 24MHz 晶振。
  • 输出频率:USB1 PLL 的输出频率为 480MHz。
  • 低抖动时钟:从 24MHz 参考时钟合成低抖动时钟。
  • PFD 输出:USB1 PLL 具有 4 个频率可编程的 PFD(Phase Fractional Divider)输出。
  • 固定频率:尽管 USB1 PLL 具有 DIV_SELECT 寄存器字段,但在正常操作中应始终设置为 480MHz。

I.MX6U 裸机开发11.主频和时钟配置实验_低功耗_07

4. Audio PLL(PLL4)

I.MX6U 裸机开发11.主频和时钟配置实验_低功耗_08


Audio PLL用于生成音频模块的时钟信号。

5. Video PLL(PLL5)

Video PLL主要用于液晶显示之类的外设模块的时钟信号 。

6. ENET PLL(PLL6)

ENET PLL 用于生成特定模块的时钟信号。

7. USB2 PLL(PLL7)

USB2 PLL仅通过直接连接用于 USB UTM 接口。

主要需要初始化的PLL和PFD有:

  • PLL1
  • PLL2、PLL2的PFD0~PFD3
  • PLL3、PLL3的PFD0~PFD3

频率的设置一般按时钟树的值设置,另外可以根据《IMX6ULL参考手册》第641页的表格设置:

I.MX6U 裸机开发11.主频和时钟配置实验_ide_09


I.MX6U 裸机开发11.主频和时钟配置实验_晶振_10


举报

相关推荐

0 条评论