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

一、I.MX6U的晶振

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

1. 32.768KHz晶振

在这里插入图片描述

该晶振主要有以下作用:

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

2. 24MHz晶振

(1)硬件电路

在这里插入图片描述
在这里插入图片描述

(2)主要作用

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

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

在这里插入图片描述

(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(实时时钟)。
  2. PLL(锁相环)

    • PLL1 (ARM PLL):用于生成 ARM Cortex-A7 内核的时钟信号。
    • PLL2 (System PLL):用于生成系统总线和外设的时钟信号,输出频率为 528MHz。
    • PLL3 (USB PLL):用于生成 USB 模块的时钟信号,输出频率为 480MHz。
    • PLL4 (Audio PLL):用于生成音频模块的时钟信号。
    • PLL5 (Video PLL):用于生成视频模块的时钟信号。
  3. 时钟分配

    • CCM(Clock Control Module):时钟控制模块,用于管理和分配时钟信号。
    • 时钟门控:通过启用或禁用时钟信号来控制各个模块的时钟,以节省功耗。
  4. 时钟域

    • 系统时钟域:包括 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:
在这里插入图片描述
最右侧是外设,顺着线路向左找对应的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 是一种相位分数分频器,用于生成不同频率的时钟信号,以满足不同模块的需求。

在这里插入图片描述

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。

在这里插入图片描述

4. Audio PLL(PLL4)

在这里插入图片描述
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页的表格设置:
在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

AI星球

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值