This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] 如何将 PLL0 Clkout 配置为输出引脚

Guru**** 2553450 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/609682/how-to-configure-pll0-clkout-to-output-pin

Thread 中讨论的其他器件:OMAPL138

大家好、我正在使用入门软件(bootloader_armv5_omapl138_lcdkOMAPL138)中的引导加载程序设计

并更改了456MHz 时启动 DSP 的工作频率、还添加了在 clkout 引脚上启用12MHz 时钟的设置。 但出于某种原因,当我添加以下 inst.时,它无法启动。

//在 CLKout 引脚上添加12MHz 时钟
HWREG (SOC_PLLC_0_regs + PLLC_OCSEL)= PLLC_OCSEL_OCSCC_CLKIN;
HWREG (SOC_PLLC_0_regs + PLLC_OSCDIV)= PLLC_OSCDIV_OD1EN | 0x01;
HWREG (SOC_PLLC_0_regs + PLLC_CKEN)= PLLC_CKEN_OBSEN;

请告诉我是否需要更多设置。

PS:上述设置适用于 GEL 文件、但不适用于引导加载程序。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我正在使用 OMAPL138_StarterWare_1_10_04_01
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!

    我们将对此进行研究。 反馈将直接发布在此处。

    此致、
    Yordan
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您能否指出您在代码中添加了这些代码行的位置、以及在引导加载应用程序时为何需要在 CLockout 引脚上使用此12MHz。

    时钟输出引脚仅用于调试。 有关时钟输出引脚、请参阅数据表中表3-6下的脚注。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Rahul、
    我在函数 PLL0Init()的末尾添加了
    我将该时钟用作 FPGA 输入同步时钟。 我不确定不建议将 clkout 引脚用作时钟源。
    FPGA 在 DSP 可以启动之前使用时钟、因此希望在启动期间加载该时钟。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    静态空 PLL0Init (unsigned char clk_src、unsigned char pllm、
    unsigned char prediv、unsigned char postdiv、unsigned char div1、
    unsigned char Div3、unsigned char div7)

    HWREG (SOC_SYSCFG_0_regs + SYSCFG0_CFGCHIP0)&=
    ~SYSCFG_CFGCHIP0_PLL_MASTER_LOCK;
    /*必须先清除 PLLENSRC、PLLEN 位才会产生任何影响*/
    HWREG (SOC_PLLC_0_regs + PLLC_PLLCTL)&=~PLLC_PLLCTL_PLLENSRC;

    /* PLLCTL.EXTCLKSRC 位9应保持为0 */
    HWREG (SOC_PLLC_0_regs + PLLC_PLLCTL)&=~PLLC_PLLCTL_EXTCLKSRC;

    /*PLLEN=0将 PLL 置于旁路模式*/
    HWREG (SOC_PLLC_0_regs + PLLC_PLLCTL)&=~PLLC_PLLCTL_PLLEN;

    /*等待2个计数将 PLL 切换到旁路模式*/
    延迟(2);

    /*选择时钟模式位8作为外部时钟或片上振荡器*/
    HWREG (SOC_PLLC_0_regs + PLLC_PLLCTL)&=~PLLC_PLLCTL_CLKMODE;
    HWREG (SOC_PLLC_0_regs + PLLC_PLLCTL)|=(clk_src << 8);
    /*清除 PLLRST 以复位 PLL */
    HWREG (SOC_PLLC_0_regs + PLLC_PLLCTL)&=~PLLC_PLLCTL_PLLRST;

    /*禁用 PLL 输出*/
    HWREG (SOC_PLLC_0_regs + PLLC_PLLCTL)|= PLLC_PLLCTL_PLLDIS;

    /* PLL 初始化序列、为 PLL 加电*/
    HWREG (SOC_PLLC_0_regs + PLLC_PLLCTL)&=~PLLC_PLLCTL_PLLPWRDN;

    HWREG (SOC_PLLC_0_regs + PLLC_PLLCTL)&=~PLLC_PLLCTL_PLLDIS;

    /*等待300次计数*/
    延迟(300);

    HWREG (SOC_PLLC_0_regs + PLLC_PLLM)= PLlm;

    /*编程所需的乘法器值*/
    HWREG (SOC_PLLC_0_REGS + PLLC_PREDIV)= PLLC_PREDIV_PREDEN | PRDIV;
    HWREG (SOC_PLLC_0_regs + PLLC_POSTDIV)= PLLC_POSTDIV_POSTDEN | postdiv;
    /*检查 PLLSTAT 中的 GOSTAT 位是否清零以表示这一点
    当前无 GO 操作正在进行中*/
    while (HWREG (SOC_PLLC_0_regs + PLLC_PLLSTAT)& PLLC_PLLSTAT_GOSTAT);
    /*分配分频器值*/
    HWREG (SOC_PLLC_0_regs + PLLC_PLLDIV1)= PLLC_PLLDIV1_D1EN | DIV1;
    HWREG (SOC_PLLC_0_regs + PLLC_PLLDIV2)
    = PLLC_PLLDIV2_D2EN |(((DIV1 + 1)* 2)- 1);
    HWREG (SOC_PLLC_0_regs + PLLC_PLLDIV4)
    = PLLC_PLLDIV4_D4EN |(((DIV1 + 1)* 4)- 1);
    HWREG (SOC_PLLC_0_regs + PLLC_PLLDIV6)
    = PLLC_PLLDIV6_D6EN | DIV1;
    HWREG (SOC_PLLC_0_regs + PLLC_PLLDIV3)= PLLC_PLLDIV3_D3EN | Div3;
    HWREG (SOC_PLLC_0_regs + PLLC_PLLDIV7)= PLLC_PLLDIV7_D7EN | DIV7;

    HWREG (SOC_PLLC_0_regs + PLLC_PLLCMD)|= PLLC_PLLCMD_GOSET;
    /*等待 PLLSTAT 中的 Gostat 位清零
    (完成相位对齐)*/
    while (HWREG (SOC_PLLC_0_regs + PLLC_PLLSTAT)和 PLLC_PLLSTAT_GOSTAT);

    /*等待40次计数*/
    延迟(40);
    /*将 PLLCTL 中的 PLLRST 位设置为1、使 PLL 脱离复位状态*/
    HWREG (SOC_PLLC_0_regs + PLLC_PLLCTL)|= PLLC_PLLCTL_PLLRST;

    /*等待300次计数*/
    延迟(300);

    /*从旁路模式中删除 PLL */
    HWREG (SOC_PLLC_0_regs + PLLC_PLLCTL)|= PLLC_PLLCTL_PLLEN;

    HWREG (SOC_SYSCFG_0_regs + SYSCFG0_KICK0R)= SYSCFG_KICK0R_UNLOCK;
    HWREG (SOC_SYSCFG_0_regs + SYSCFG0_KICK1R)= SYSCFG_KICK1R_UNLOCK;

    //在 CLKout 引脚上添加12MHz 时钟
    HWREG (SOC_PLLC_0_regs + PLLC_OCSEL)= PLLC_OCSEL_OCSCC_CLKIN;
    HWREG (SOC_PLLC_0_regs + PLLC_OSCDIV)= PLLC_OSCDIV_OD1EN | 0x01;
    HWREG (SOC_PLLC_0_regs + PLLC_CKEN)= PLLC_CKEN_OBSEN;

    /*设置 PLL 锁定位*/
    HWREG (SOC_SYSCFG_0_regs + SYSCFG0_CFGCHIP0)|=
    (0x01 <<SYSCFG_CFGCHIP0_PLL_MASTER_LOCK_SHIFT)
    & SYSCFG_CFGCHIP0_PLL_MASTER_LOCK;

    HWREG (SOC_SYSCFG_0_regs + SYSCFG0_CFGCHIP3)&= CLK_PLL0_SYSCLK3;
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Mitesh

    因此,如果我理解正确 ,如果您从引导代码中注释掉以下代码,引导工作正常吗?

    //在 CLKout 引脚上添加12MHz 时钟
    HWREG (SOC_PLLC_0_regs + PLLC_OCSEL)= PLLC_OCSEL_OCSCC_CLKIN;
    HWREG (SOC_PLLC_0_regs + PLLC_OSCDIV)= PLLC_OSCDIV_OD1EN | 0x01;
    HWREG (SOC_PLLC_0_regs + PLLC_CKEN)= PLLC_CKEN_OBSEN;

    您的引导模式是什么? 是否确定 CLKOUT 引脚或其替代函数在引导过程中不会在任何位置使用(与将其与 CCS/GEL 等结合使用相比)?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    是的、如果我对这些行进行注释、则引导工作正常。 我使用 NAND 闪存启动选项。  

    我认为该引脚不用于任何其他功能。 我在 GEL 文件中添加了类似的代码、它起作用。  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    你好,Mukul,好像我把代码更改为这个,它是有效的!!!

    //在 CLKout 引脚上添加12MHz 时钟
    HWREG (SOC_PLLC_0_regs + PLLC_OCSEL)|= PLLC_OCSEL_OCSCC_CLKIN;
    HWREG (SOC_PLLC_0_regs + PLLC_OSCDIV)|=(PLLC_OSCDIV_OD1EN | 0x00000001);
    HWREG (SOC_PLLC_0_regs + PLLC_CKEN)|= PLLC_CKEN_OBSEN;

    谢谢。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、建议不要在生产设计中使用 clkout 引脚吗? 是因为它不够稳定吗?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好 Mitesh
    正确,如果您尝试使用 CLKOUT 来获取另一个板载外设,则不建议这样做,正如数据表的脚注中所说明的那样。
    您还可以在 OMAPL1x 原理图检查清单上查看有关这一点的进一步说明

    processors.wiki.ti.com/.../_AM1x_Schematic_Review_Checklist

    搜索 CLKOUT。

    此致
    Mukul
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    谢谢。 那么、我是否可以从 DSP 输出任何其他时钟?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    可能不会。 您尝试使用它的目的是什么?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    哦、目前我使用 CLKOUT 同步 FPGA FW。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    好的、我和 Rahul 的原始回答包含了有关 CLKOUT 的免责声明和建议。 CLKOUT 纯粹用作调试等的观测时钟