主题中讨论的其他器件: SysConfig
工具与软件:
您好!
根据标题、我通过经验测量发现、我的 AM2434的 ADC 具有 25MHz 的 SMPL_CLK。 这与提到 60MHz 的文档(数据表)相矛盾。
如何将 SMPL_CLK 设置为60MHz? 我认为需要设置一个片上 PLL。 SDK 中 有关这方面的文档和 ADC 有点儿稀疏、如果需要帮助、那会很有用。
谢谢、Steve
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的 ADC 具有 25MHz 的 SMPL_CLK。 这与提到 60MHz 的文档(数据表)相矛盾。
如何将 SMPL_CLK 设置为60MHz? 我认为需要设置一个片上 PLL。 SDK 中 有关这方面的文档和 ADC 有点儿稀疏、如果需要帮助、那会很有用。
谢谢、Steve
Steve、您好!
您如何确认设备已将25MHz 时钟连接到 ADC?
默认情况下、ADC 仅连接到25MHz 时钟 。
如果上述寄存器值为0x01、则 ADC 时钟必须为60MHz 时钟。
您能否确认您的设置中 ADC 时钟选择多路复用器值的值是多少?
请查看下面的时钟树链接。
此致、
Anil。
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 中也找到了它。
然而、 这引起了新的问题:
感谢您到目前为止的帮助、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"]实际上、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"]是的、当应用程序意外更改值并且无法写入应用程序时、您在锁定后的理解是正确的。
在 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"]是的、在 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"]我将请求在下一个版本中的系统 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