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.

[参考译文] AM263P4:CLKOUT 频率配置和多 PHY 连接

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1390535/am263p4-clkout-frequency-configuring-and-multi-phy-connection

器件型号:AM263P4
主题中讨论的其他器件:SysConfig

工具与软件:

对于包含多个 DP83826 PHY 的定制 PCB、我想使用 AM263Px.CLKOUT0引脚作为 DP83826.XI (时钟输入)。  

DP83826 数据表摘录1:

DP83826 数据表摘录2

但是、我们不清楚如何配置  AM263Px.CLKOUT0以输出所需的50MHz 时钟。

 a)

似乎有一种方法可以通过 SysConfig 对此进行配置:

{BUILD_CONFIG_OUTPUT_PATH}/syscfg/ti_power_clock_config.c

但是、我看不出要在 GUI 中的什么位置配置它。

是否可以通过 SysConfig 配置时钟?

 b)

还是可以通过驱动程序 API 调用来完成? 我要查找的是该 API 调用吗?

void SOC_rcmCoreApllHSDivConfig (SOC_RcmPllFoutFreqId outFreqId、SOC_RcmPllHsDivOutConfig * hsDivCfg)

…μ A 此处定义:

${COM_TI_MCU_PLUS_SDK_AM263PX_INSTALL_DIR}\SOURCE\DRIVERS\am263px\SoC_RCM.c soc

 

 c)

我还看到可能控制文件中 CLKOUT0的寄存器地址是什么样的:

${COM_TI_MCU_PLUS_SDK_AM263PX_INSTALL_DIR}\\source\drivers\hw_include\am263px\cslr_iomux.h

. 部分:

 /* CLKOUT0_CFG_REG */

 /* PLL_PER_HSDIVIDER_CLKOUT0 */

是否使用直接寄存器写入选项?

请提供建议。

 

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

    Scott、您好!

    您可以使用 SoC_Rcm.c 中的此 API

    /**
     * \brief Set CLKOUT clock frequency
     *
     * \param clkout0FreqHz [in] CLKOUT0 frequency
     * \param clkout1FreqHz [in] CLKOUT1 frequency
     *
     */
    extern void SOC_rcmsetClkoutClock(uint32_t clkout0FreqHz, uint32_t clkout1FreqHz);

    您也可以参考以下摘录 6.4.1.2.3.2.3 从 TRM 编程 CLKOUT 时钟的顺序。

    此致、
    Akshit

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

    您好、 Akshit、

    我尝试了使用 SOC_rcmsetClkoutClock()、但我没有得到预期的结果()。

    为了重申我的目标、我需要使用  此处所示的 CLKOUT0端口:

    我的 SOC 配置了 CLKOUT0、但我不知道如何操作。

    我试着打电话  

    . soc_rcmsetClkoutClock()在初始化期间的不同位置。 然而:

    1)我传递0作为第二个参数,这可能是错误的

    2)当我调用 SOC_rcmsetClkoutClock()时、时钟停止振荡。   

    请提供建议。

    此致、

    Tollman

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

    嘿 Scott、

    道歉! 某些部件可能无法正常工作。 让我尝试找出 API 的问题。

    但是、您可以直接将上述寄存器配置为 CLKOUT0的首选 DIV VAL。

    此致、
    Akshit

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

    您好、 Akshit、

    我尝试通过写入 TOP_RCM_MMR0来更改 CLKOUT0频率。

    1)

    我是通过调试器进行这种操作的、如下所示:

    但是、我无法获得50MHz 信号。

    0x00000222 ==~8MHz、

    0x00000333 =~μ V 6MHz、

    这种方法有什么问题吗?

    2)

    然后 尝试遵循您引用的 TRM 顺序:

     6.4.1.2.3.2.3编程 CLKOUT 时钟的顺序 

    但是、 我找不到该部分(步骤1)中引用的"CLKOU0 GCD 寄存器"。

    请为所需寄存器提供寄存器附录参考。

    此致、

    Tollman

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

    Scott、

    1. 我使用该 API 在50MHz -> SOC_rcmsetClkoutClkoutClock (50000,000,50000000)处配置 CLKOUT[1:0];
    2. 下面是分频器和状态值设置、您可以分别看到为0x999和0x904。
    3. 为了测试波形、我将 CONFIG 引脚多路复用器设置为 HSEC 引脚72上的输出 CLKOUT1、如下所示:

      /*
      * Pinmux
      */
      static void App_pinmuxConfig()
      {
          static Pinmux_PerCfg_t App_PinMuxMainDomainCfg[] = {
          {

              PIN_SDFM0_CLK0,
              ( PIN_MODE(0) | PIN_PULL_DISABLE | PIN_SLEW_RATE_LOW)
          },

          {PINMUX_END, PINMUX_END}
      };
      Pinmux_config(App_PinMuxMainDomainCfg, PINMUX_DOMAIN_ID_MAIN);

      }

    4. 并获得以下输出、验证了我的预期。

    你可以尝试这种方式,让我知道这是否对你有效?

    此致、
    Akshit

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

    您好、Akshit、

    我曾尝试在我的 AM263Px 控制卡上复制您的测试。 但是、我在 HSEC 引脚72上未看到任何振荡。

     

    我的工程基于"hello_world_am263px-cc_r5fss0-0_freertos_ti-arm-clang"。  

    项目已附加。

    .e2e.ti.com/.../hello_5F00_world_5F00_am263px_2D00_cc_5F00_r5fss0_2D00_0_5F00_clkout1.zip

    您看到问题了吗?

    此致、

    Tollman

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

    ...

    您好、Akshit、

    另外、如果您可以同时提供您的项目、那将会很有帮助。

    谢谢!

    Tollman

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

    Scott、您好!

    以下项目对我很有用!

    e2e.ti.com/.../hello_5F00_world_5F00_clkout_5F00_50MHZ.zip

    此致、
    Akshit

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

    您好、Akshit、

    在 DEV_BOOT 模式下运行时(连接了调试器)、我无法使50MHz 正常工作。 复位时、我看到25MHz、但在:
    SoC_rcmsetClkoutClock (50000000, 50000000);

    ...呼叫时、CLKOUT1停止振荡。  

    如果我将 appimage 写入 OSPI、CLKOUT1将 在50MHz 处振荡。 这既适用于  您在 zip 文件中提供的 appimage、也适用于本地构建的版本。

    您能解释一下这种行为吗?

    此致、

    Tollman

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

    Scott、您好!

    您是对的、虽然使用调试器、但我也在 OSPI 模式下进行测试。  
    我可以重现您在 Devboot 模式下未获得任何时钟的问题。

    我想是、由于 devboot 模式没有 SBL、因此未在 GEL 脚本中配置 CLKOUT 时钟。

    让我从合适的人员那里为您提供有关此问题的更多信息。

    谢谢。此致、
    Akshit

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

    您好、Akshit、

    1)

    通常、您建议使用 SBL_NULL 而不是 DEV_BOOT。  

    2)

    我了解到 通过 RBL 生成的与 DEV_boot GEL 脚本用于 将 处理器配置为连接 调试器所需的状态、以及执行由 JTAG 加载的应用程序。  使用 SBL_NULL 时、SBL 负责(通过可执行代码)执行 GEL 脚本与 DEV_BOOT 一同执行的操作。  在应用程序代码执行期间、如果代码不重新配置引导加载程序执行期间完成的操作、这两个过程的差异可能会使处理器处于不同的状态。

    这是准确的吗?

    此致、

    Tollman

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

    Scott、您好!

    我必须与引导专家确认这一点。 让我尽快回复您。

    此致、
    Akshit

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

    您好、Scott

    1) SBL_NULL 将比基于 CCS 的 GEL 脚本更通用。

    2) 2)是的、这些操作会将处理器置于不同的状态、这可能需要由应用程序处理。

    另外、我之前错过了这一点、但这里摘自 TRM、其中指出 PLL 不由 DEVBOOT 配置

    此致、
    Akshit