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.

[参考译文] AM2434:AM234x ADC SMPL_CLK 为25MHz -文档显示为60MHz

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1387043/am2434-am234x-adc-smpl_clk-is-25mhz---documentation-says-60mhz

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

工具与软件:

您好!

根据标题、我通过经验测量发现、我的 AM2434的 ADC 具有 25MHz 的 SMPL_CLK。  这与提到 60MHz 的文档(数据表)相矛盾。

如何将 SMPL_CLK 设置为60MHz? 我认为需要设置一个片上 PLL。   SDK 中 有关这方面的文档和 ADC 有点儿稀疏、如果需要帮助、那会很有用。

谢谢、Steve  

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

    Steve、您好!

    我正在查看您的问题,您可能会在一两天内得到回复。

    此致、

    Anil。

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

    Steve、您好!

    您如何确认设备已将25MHz 时钟连接到 ADC?

    默认情况下、ADC 仅连接到25MHz 时钟  。

    如果上述寄存器值为0x01、则 ADC 时钟必须为60MHz 时钟。

    您能否确认您的设置中 ADC 时钟选择多路复用器值的值是多少?

    请查看下面的时钟树链接。

    https://dev.ti.com/sysconfig/#/config/?args=--product%20%2Fmnt%2Ftirex-content%2Fsitara_ctt_1_1_1%2F.metadata%2Fproduct.json%20--device%20AM64x%20--part%20Default%20--package%20ALV%20--context%20system

    此致、

    Anil。

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

    尊敬的 Anil:

    寄存器为0x00 -与您的示例相同。

    我将使用电子表格计算延迟 计数、以便达到所需的 ADC 更新速率(当前5个通道为1kHz)。 我可以让理论与测量的实验速率相匹配的唯一方法是使用25MHz 而不是60MHz:

    因此、我得出结论、SMPL_CLK 必须为25MHz。

    如何检查时钟树设置?

    谢谢、Steve

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

    作为一项实验、我 在 ADC 上电之前将地址0x43008510设置为0x01、假设这与 MAIN_PLL1_HSDIV6_CLKOUT 等效。

    现在、采样明显更快(2.4倍)、即 SMPL_CLK 现在为60MHz。

    尽管进行了大量的搜索、但在 SYSCFG 中我找不到任何可以让我处理此问题的内容。

    是否直接正确设置寄存器?

    谢谢、Steve

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

    Steve、您好!

    是的、您的理解是正确的。

    如果将多路复用器选择值更改为1、则 ADC 将仅以60MHz 运行。

    我已经更新了上述注释、如果多路复用器选择为0、则时钟为25MHz、如果多路复用器选择为1、则 ADC 时钟为60MHz。

    抱歉、出现拼写错误。

    请看下面的图片。

    多路复用器时钟选择寄存器是 CTRL MMR。 因此、该存储器位置具备锁定和解锁机制。

    锁定 CTRL_MMR 后、用户将无法更改多路复用器选择。

    因此、 我们可以使用锁定机制来更改时钟选择、您  可以尝试下面的代码。

      有关锁保护的详细信息、请参阅以下章节。

        /* set ADC clock source */
        SOC_controlModuleUnlockMMR(SOC_DOMAIN_ID_MAIN, 2);
        *(volatile uint32_t*)AddrTranslateP_getLocalAddr(0x43008510U) = 0x01;
        SOC_controlModuleLockMMR(SOC_DOMAIN_ID_MAIN, 2);

    此致、

    Anil。

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

    感谢您提供这些信息 Anil -我在 TRM 中也找到了它。

    然而、 这引起了新的问题:

    • 我可以设置寄存器而无需启动它-是否有驾驶员将其解锁? (我怀疑是 EtherCAT 工业通信团队)
    • 作为最佳做法、我是否应该在启动后手动锁定 CTRL 寄存器以防止意外更改?
    • 为什么默认多路复用器 输入未设置为 HSDIVE 6?
    • 为什么这不是 SysConfig 中的 ADC 设置? (尤其是 SDK 文档反复敦促我使用 SysConfig 时)
    • 寄存器地址和设置是否有 SDK 常量?

    感谢您到目前为止的帮助、Anil。

    Steve

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

    Steve、您好!

    [报价 userid="317967" url="~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1387043/am2434-am234x-adc-smpl_clk-is-25mhz---documentation-says-60mhz/5311218 #5311218"]
    • 我可以设置寄存器而无需启动它-是否有驾驶员将其解锁? (我怀疑是 EtherCAT 工业通信团队)
    [报价]

    实际上、ADC 时钟选择寄存器不受 EtherCAT 或 IND 通信协议控制。

    没有人使用这个寄存器,没有锁定,所以你可以写入它。

    [报价 userid="317967" url="~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1387043/am2434-am234x-adc-smpl_clk-is-25mhz---documentation-says-60mhz/5311218 #5311218"]
    • 作为最佳做法、我是否应该在启动后手动锁定 CTRL 寄存器以防止意外更改?
    [报价]

    是的、当应用程序意外更改值并且无法写入应用程序时、您在锁定后的理解是正确的。

    在 AM64X 器件中、我们在控制 CTRL_MMR 寄存器时使用此方法。

    因此、请使用相同的方法。

    [报价 userid="317967" url="~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1387043/am2434-am234x-adc-smpl_clk-is-25mhz---documentation-says-60mhz/5311218 #5311218"]
    • 为什么默认多路复用器 输入未设置为 HSDIVE 6?
    [报价]

    是的、在 MCU+SDK 中、大多数时钟选择属于 HFOSC、因为 HFOSC 直接来自晶体输入。

    [报价 userid="317967" url="~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1387043/am2434-am234x-adc-smpl_clk-is-25mhz---documentation-says-60mhz/5311218 #5311218"]
    • 为什么这不是 SysConfig 中的 ADC 设置? (尤其是 SDK 文档反复敦促我使用 SysConfig 时)
    • 寄存器地址和设置是否有 SDK 常量?
    [报价]

    我将请求在下一个版本中的系统 cfg 中添加该设置。

    是的、无论我上面给出的代码都可以在 MCU+SDK 中获得。

    您可以直接在应用中使用它。

    此致、

    Anil。

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

    你好 Anil -感谢回复。 对于完整性:

    [报价 userid="525901" url="~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1387043/am2434-am234x-adc-smpl_clk-is-25mhz---documentation-says-60mhz/5311879 #5311879"]

    实际上、ADC 时钟选择寄存器不受 EtherCAT 或 IND 通信协议控制。

    没有人使用这个寄存器,没有锁定,所以你可以写入它。

    [报价]

    我知道 EtherCAT 不会触及 ADC MUX 寄存器-我的注释更笼统地说 CTRL 存储器映射寄存器保持解锁状态。 TRM 指出、所有 MMR 都具有脚踢保护寄存器、表明它们在上电时已锁定-某些内容必须解锁并将其置于解锁状态、ERGO 是一个编程错误。

    我们将 把它们锁定在我们的 应用代码中。  是否有任何其他 MMR 应锁定?

    仅供参考、我找到了 ADC 输入多路复用器控制寄存器的定义:

        *(volatile uint32_t*)AddrTranslateP_getLocalAddr(CSL_CTRL_MMR0_CFG0_BASE + SDL_MAIN_CTRL_MMR_CFG0_ADC0_CLKSEL) = ADC_CLOCK_SOURCE;

    但我没有找到任何关于 MUX 设置 值本身的内容-因此我最后 写出了我自己的:

    // ADC Clock inputs (from am243x TRM Table 5-338. CTRLMMR_ADC0_CLKSEL Register Field Descriptions)
    #define HFOSC0_CLKOUT               (0x00)  // 25MHz
    #define MAIN_PLL1_HSDIV6_CLKOUT     (0x01)  // 60MHz
    #define MAIN_PLL1_HSDIV8_CLKOUT     (0x02)  // undefined
    #define EXT_REFCLK1                 (0x03)  // external
    

    是的、请将控制 ADC 时钟源的功能添加到 SysConfig。

    谢谢、Steve