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.

[参考译文] LMK03318:通过 I2C 对寄存器进行编程和从 EEPROM 读取相同值时、行为不同

Guru**** 2470380 points
Other Parts Discussed in Thread: LMK03318, LMK03318EVM, USB2ANY

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

https://e2e.ti.com/support/clock-timing-group/clock-and-timing/f/clock-timing-forum/955485/lmk03318-behavior-is-different-between-programming-registers-over-i2c-and-reading-the-same-values-from-eeprom

器件型号:LMK03318
Thread 中讨论的其他部件:USB2ANY

我计划在双通道160MSPS ADC 数据采集板上使用 LMK03318,并且我想使用内置的 LMK03318 EEPROM 对时钟设置进行编程。

我使用 TICS Pro 实用程序进入时钟配置(输出0为160MHz 平衡、输出7为25MHz 单端平衡)、并将寄存器设置导出到文件中。  然后,我使用了一个带有 I2C 的家庭固定装置将这些寄存器值编程到 LMK03318中(我使用的是为外部 I2C 连接配置的 LMK03318EVM)。  我非常确信固定装置 I2C 通信能够正常工作,因为我可以访问只读寄存器并找到它们的正确值,对 R/W 寄存器进行编程并读回正确的更改值。

当我在 HW_SW_CTRL=1和 GPIO0-5=0的情况下启动 LMK03318EVM 时、根据 ROM 第0页的设置、我在输出0上获得一个干净的时钟。  然后、如果我使用固定装置对保存的寄存器设置进行编程、我会在输出0上获得干净的160 MHz 时钟。 到目前为止都很好。  然而、OUTPUT7上应该有的25MHz 时钟应该是83.33MHz

接下来,如果我使用编程步骤将这些寄存器设置保存到 EPROM 第0页,然后在 HW_SW_CTRL=0 GPIO0-5=0的情况下重启电源,则不会在输出0上获得干净的时钟。  相反、它看起来很嘈杂、并且是可变的。  据我所知、正确的寄存器值已从 EEPROM 页面读回。  在这种状态下、我尝试同时切换 PDN 和 R12.7、两者都没有什么区别。

在这种情况下、通过 I2C 对寄存器进行编程的顺序是否有所不同?  我已附加保存的寄存器文件。

总而言之、我有两个问题。  1) 1)在"工作"情况下25MHz 输出错误;2)从 EEPROM 读回看似正确的寄存器值时、不起作用。

e2e.ti.com/.../HexRegisterValues_5F00_lmk33018_5F00_160.txt

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

    尊敬的 Eric:

    您可以改为通过.TCS 文件发送吗? 您可以执行"文件"->"保存"。 如果无法上传.TCS 文件、请将其压缩。

    此致、
    Hao

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

    e2e.ti.com/.../adc160.tcs

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

    尊敬的 Eric:

    对于第一个问题、配置对我来说是正确的。 您能否检查手动更改 OUT7分频器是否会使输出频率为160MHz?

    按照以下步骤将寄存器内容写入 EEPROM 页0:

    此致、
    Hao

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

    作为您的第一点、我尝试将 R44从96手动更改为15、但它没有明显的区别。  OUT7_N 和 OUT7_P 上的输出仍然是有噪声的且可变的。  OUT_0仍为160MHz。

    您对 EEPROM 编程的评论似乎是指应用程序通过 USB 与目标器件通信的情况。  我没有这种情况(我有硬件、但无法使其正常工作)。  相反、我有自己的固定装置、通过 I2C 与 LMK03318进行通信。  正如我在上面说过的,我成功地将修改后的寄存器设置保存到 EEPROM 中--当它们被读回时,它不起作用。

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

    尊敬的 Eric:

    首先、检查 PLL 是否已锁定。 为此、测量引脚 STAT1上的电压。 在您发送的配置中、STAT1为高电平有效、这意味着如果电压为3.3V、则"LOL"状态为有效。 LOL 表示失锁。 因此、高电平表示未锁定、低电平表示已锁定。

    如果 PLL 被锁定、请检查其他输出是否能够成功生成一个时钟。 由于只有一个 PLL、因此所有输出共享同一个源。 如果一个输出无法生成时钟、则该输出存在问题。

    尝试禁用输出同步、看看这是否有助于:

    关于 EEPROM 编程、为了验证 EEPROM 是否成功写入、建议使用"直接访问"方法。 您可以通过单击以下按钮从 Ticspro 生成 EEPROM 映像:

    您还可以直接从芯片读回 EEPROM 映像。 如果您无法访问 USB2ANY、则可以尝试根据数据表自行实现。 目标是比较两个 EEPROM 映像(写入和读取)。 前10个字节受到保护、因此它们是不同的、这是可以的。 其余字节应完全相同。

    之所以需要这样做、是因为并非所有寄存器都存储在 EEPROM 中。 有只读寄存器和一些其他寄存器不需要存储。 因此、如果您读回寄存器、您可能会得到不同的值。

    此致、
    Hao

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

    进度!

    首先、是的、我通过查看 STAT1检查了 PLL 锁定、它始终良好、这意味着如果关闭则丢失锁定。

    您关于关闭 PLL_SYNC 的建议已有所改进。  现在、当我使用 HW_SW_CTRL=0引导并从 EEPROM 读回最新设置时、我现在在 OUT0上获得良好的160MHz。  PLL 失锁关闭。  但是、无论我只是通过 I2C 写入寄存器还是使它们从 EEPROM 读取、我都从未在 OUT7上实现良好的时钟。

    因此、解决了两个问题中的一个。

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

    尊敬的 Eric:

    这可能是因为预分频器设置。 通常、如果需要输出同步、则预分频器不应设置为2 (数据表中已提到)。 因此、您可以保持同步或选择另一个预分频器不等于2的解决方案。

    关于 OUT7、您能否从 EVM 默认配置(在 Ticspro 工具栏->默认配置中)开始并查看默认配置是否起作用? 以防您意外编辑某些寄存器。 如果默认配置有效、则分步查看 OUT7的消失位置。

    此致、
    Hao