查看: 6591|回复: 0

[分享] i.MXRT1050 SDRAM 的时钟配置

[复制链接]
  • TA的每日心情
    开心
    2025-7-11 08:53
  • 签到天数: 301 天

    连续签到: 2 天

    [LV.8]以坛为家I

    3938

    主题

    7559

    帖子

    0

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    40222
    最后登录
    2025-9-9
    发表于 2020-6-9 17:10:39 | 显示全部楼层 |阅读模式
    i.MXRT1050 SDRAM 的时钟配置

    1. 时钟树中 SDRAM 时钟的路径
    根据 I.MXRT1050 参考手册中的 CCM 的时钟树,我们可以提取 SDRAM 时钟的一部分,画出如下的框图。
    1.png
    1. 图一的介绍
    (1)PLL2 PFD2
    2.png
    ① 与 PLL2 PFD2 相关的寄存器
    ---- CCM_ANALOG_PLL_SYSn(参考手册第 767 页)
    地址:0x400D_8030h
    重要的控制位:
    bit[15:14]---- 选择时钟源
    Bit[13] ----- 使能 PLL 输出
    Bit[0]------- 此部分控制 PLL 环路分频器. 0 - Fout=Fref*20; 1 - Fout=Fref*22.
    ---CCM_ANALOG_PLL_SYS_NUM (参考手册第 768 页)
    地址: 0x400D_8050h
    重要的控制位:
    bit[29:0]--- 分数环路分频器的 30 位分子(A) (有符号整数)
    ---CCM_ANALOG_PLL_SYS_DENOM (参考手册第 769 页)
    地址: 0x400D_8060h
    重要的控制位:
    bit[29:0]---- 分数环路分频器的 30 位分母(B) (无符号整数).
    ---CCM_ANALOG_PFD_528n (参考手册第 769 页)
    地址: 0x400D_8100h
    重要的控制位:
    bit[21:16]----- 此部分控制(分频器)分数的除数值,即 PFD2_FRAC,它的数值在 12-35
    之间,由此得到的频率应为 528*18/PFD2_FRAC。
    ②计算公式
    PLL2_PFD2_OUT=(External 24MHz)*(Fout + A/B) * 18/ PFD2_FRAC
    ③PLL2_PFD2_OUT 计算示例
    CCM_ANALOG_PLL_SYSn[0] = 1 // Fout=Fref*22
    CCM_ANALOG_PLL_SYS_NUM[29:0] = 56 // A = 56
    CCM_ANALOG_PLL_SYS_DENOM[29:0] = 256 // B=256
    CCM_ANALOG_PFD_528n[21:16] = 29 // PFD2_FRAC=29
    PLL2_PFD2_OUT = 24 * (22 + 56/256)*18/29 = 331MHz (330.98MHz)
    (2)时钟选择寄存器:CCM_CBCDR
    地址: 0x 400F_C014h
    重要的控制位: SEMC_ALT_CLK_SEL & SEMC_CLK_SEL & SEMC_PODF
    bit[7] --- bit[SEMC_ALT_CLK_SEL]
    0---PLL2 PFD2 将被选为 SEMC 根时钟的替代时钟
    1---PLL3 PFD1 将被选为 SEMC 根时钟的替代时钟
    3.png
    Bit[6] --- bit[SEMC_CLK_SEL]
    0----Periph_clk 输出将被用作 SEMC 时钟根
    1----SEMC 替代时钟将被用作 SEMC 时钟根
    4.png
    Bit[18:16] --- bit[SEMC_PODF]
    SEMC 时钟的后分频器
    注意: 此分频器的任何变化都可能影响与 EMI 模块的握手信号。 有关握手信号的忙标志位,
    请参阅 CDHIPR 寄存器。
    000 除以 1
    001 除以 2
    010 除以 3
    011 除以 4
    100 除以 5
    101 除以 6
    110 除以 7
    111 除以 8

    5.png
    2. 2. SDRAM 时钟配置示例
    示例:166 MHz 的 SDRAM 时钟
    ---- 0x400D8030 = 0x00002001 // 写 0x00002001 至 CCM_ANALOG_PLL_SYSn
    ---- 0x400D8050 = 0x00000038 // 写 0x00000038 至 CCM_ANALOG_PLL_SYS_NUM
    ---- 0x400D8060 = 0x00000100 // 写 0x00000100 至 CCM_ANALOG_PLL_SYS_DENOM
    ---- 0x400D8100 = 0x001d0000 // 写 0x001d0000 至 CCM_ANALOG_PFD_528n
    ---- 0x400FC014 = 0x00010D40 // 写 0x00010D40 至 CCM_CBCDR, 除以 2



    qiandao qiandao
    回复

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /3 下一条

    Archiver|手机版|小黑屋|恩智浦技术社区

    GMT+8, 2025-9-9 23:26 , Processed in 0.083187 second(s), 20 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

    快速回复 返回顶部 返回列表