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.

[参考译文] LMK61E07:SWR2PLL、自动启动和 ENCAL 寄存器位有哪些功能?

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

https://e2e.ti.com/support/clock-timing-group/clock-and-timing/f/clock-timing-forum/1196664/lmk61e07-what-are-the-functions-of-the-swr2pll-autostart-and-encal-register-bits

器件型号:LMK61E07
主题中讨论的其他器件:LMK61E2

大家好、

这些寄存器位(SWR2PLL、自动启动和 ENCAL)的功能是什么? 如何使用它们?

自动开始位和 ENCAL 位是否都具有触发 PLL 锁定的功能?

对于 ENCAL 位、什么是软件休息模式?

器件没有 RESETn 引脚和 RESETN_SW 位、 用户如何使用 AUTOSTRT 位?

您是否可以租赁留言? 提前感谢。

此致、

罗美

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

    客户的具体疑问是:

    如果自动启动设置为1、

    修改输出频率125MHz->100MHz:写入 PLL 寄存器配置 OUTDIV ->设置 SWR2PLL=1 ->锁定

    2.修改输出频率100MHz->125MHz:将 PLL 寄存器配置写入 OUTDIV ->设置 SWR2PLL=1 ->输出频率不正确、PLL 失锁->再次设置 SWR2PLL=1 ->锁定  

    3.修改输出频率100MHz->125MHz:写入 PLL 寄存器配置 OUTDIV ->设置 SWR2PLL=1 ->输出频率不正确、PLL 失锁 ->设置 ENCAL=1 ->输出频率不变、PLL 失锁。

    为什么上面的1和2个输出具有不同的锁定状态?

    当自动启动设置为0时、

    修改输出频率 125m->100M:写入 PLL 和 OUTDIV -> SWR2PLL=1 ->无时钟输出->自动启动=1或 ENCAL=1 ->锁定

    2.修改输出频率 100M->125m:写入 PLL 和 OUTDIV -> SWR2PLL=1 ->无时钟输出->自动启动或 ENCAL=1 ->锁定

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

    您好、Amy、

    我看到数据表中有一些奇怪的语句(例如、不存在 RESETn 引脚、即使该器件只有一个 PLL、也提到了两个 PLL)。 可能会弃用包含 ENCAL 和 AUTOSTRT 位的寄存器 R10 (DEV_CTL)、不建议客户使用。 我目前还没有使用工程工具访问 ENCAL 和 AUTOSTRT 的方法、因此现在我无法在实验中测试与这些工具相关的问题。

    SWR2PLL 位复位 VCO 校准和时钟分频器、我认为它应该在对 PLL 设置进行更改后被写入、但我还不知道具体细节。

    我在包含 LMK61E2的 EVM (器件略有不同、但使用相同的寄存器映射)的实验中使用100MHz <--> 125MHz 和 SWR2PLL 测试了该问题。 我无法复制"修改输出频率100MHz->125MHz:使用 OUTDIV 写入 PLL 寄存器配置->设置 SWR2PLL=1 ->输出频率不正确、PLL 失锁->再次设置 SWR2PLL=1 ->锁定"行为。 我注意到、当我写入输出分频器寄存器并在之后触发 SWR2PLL 时、输出频率发生变化、不会打破锁定或产生持续不正确的输出频率。 我确实注意到、在触发 SWR2PLL 后的很短的时间内很少会出现不正确的输出频率、但它会立即自行纠正。

    我正在与我的团队核实 R10寄存器的状态、并查看他们是否对我无法重复的粗体问题有更多想法。 客户是否知道该问题发生的频率?

    谢谢、

    苏伊文

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

    您好 Evan、

    非常感谢。

    以下是我从 客户那里收到的信息:

    这种现象发生在100%频率下、采用特定配置、我在4个芯片上进行了测试、结果都是一样的。 我使用以下配置修改了频率不仅 OUTDIV、而且与 PLL 相关的配置:未标记的寄存器使用数据表中的复位值。 如果需要、我可以提供我配置为使用的 Linux Sheel 脚本。

    100MHz

    地址 21. 23 26
    0x03 0x2E 0x2E

    125MHz

    地址 21. 23 26
    0x03 0x28 0x32

    此致、

    Amy

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

    您好、Amy、

    我了解 到、寄存器 R10继承了旧产品、通常不应有客户对其进行编程的理由。 默认情况下、器件的 EEPROM 具有 AUTOSTRT = 1、因此器件将在上电后以及通过 SWR2PLL 位手动触发软件复位后自动校准其 VCO、这是通常所需的行为。 ENCAL 会手动触发 VCO 校准、但我认为使用 SWR2PLL 更有意义、SWR2PLL 存在于完全支持的寄存器 R72中。

    我今天使用您提供的信息运行了实验室中的一些测试。 首先、我将器件配置为使用0x2e 的 N 分频器(因此 VCO 频率为4600MHz)和0x2e 的输出分频器正确输出100MHz HCSL 信号。 我将0x28写入 R23以更改输出分频器、输出信号如预期的那样变为4600MHz/40=115MHz。 然后我将0x32写入 R26、将 N 分频器更改为十进制的50、输出信号按预期偏离至大约116.42MHz (尚未允许 PLL 重新校准)。 最后、我将0x02写入 R72以触发 SWR2PLL 软件复位、并立即出现125MHz 的正确输出频率。 因此、我再次无法重现此问题、因为我在第一次 SWR2PLL 复位后实现了稳定的125MHz 输出。

    我认为这将有助于为客户提供配置代码、我想检查下一周的初始寄存器配置和后续写入。

    谢谢、

    苏伊文

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

    您好 Evan

    我是 Amy 提到的客户。Linux shell 和 U-boot 驱动程序。都有此问题

    这是我使用的 Linux shell 脚本。您可以将其另存为.sh 文件并使用它。

    默认情况下、它使用 i2c 端口0、您可以配置 i2c_index 环境变量来更改它。

    以下是参数:

    -f $value (100或125):将频率更改为100或125 MHz。

    -r:将寄存器设置为复位值。

    s:将寄存器保存到 EEPROM。

    #!/bin/bash
    
    i2c_index=${I2C_INDEX:="0"}
    dcxo_addr=${DCXO_ADDR:="0x59"}
    
    outdiv_by0_100m='0x2e'
    pll_n_by0_100m='0x2e'
    pll_lf_r2_100m='0x04'
    
    outdiv_by0_125m='0x28'
    pll_n_by0_125m='0x32'
    pll_lf_r2_125m='0x08'
    
    # Reset to default value
    reset() {
        i2ctransfer -y $i2c_index w2@$dcxo_addr 10 0x01
        i2ctransfer -y $i2c_index w3@$dcxo_addr 16 0x00 0x00
        i2ctransfer -y $i2c_index w20@$dcxo_addr 21 0x01 0x00 0x20 0x00 0x00 0x64 0x00 0x00 0x00 0x00 0x00 0x00 0x0c 0x24 0x03 0x08 0x00 0x00 0x00
        i2ctransfer -y $i2c_index w2@$dcxo_addr 42 0x00
        i2ctransfer -y $i2c_index w2@$dcxo_addr 49 0x10
    }
    
    
    # Set output clock
    set() {
        i2ctransfer -y $i2c_index w2@$dcxo_addr 21 0x03
        i2ctransfer -y $i2c_index w2@$dcxo_addr 23 $1
        i2ctransfer -y $i2c_index w2@$dcxo_addr 26 $2
        i2ctransfer -y $i2c_index w2@$dcxo_addr 36 $3
        i2ctransfer -y $i2c_index w2@$dcxo_addr 72 0x02
    }
    
    
    # Save to EEPROM
    save() {
        i2ctransfer -y $i2c_index w2@$dcxo_addr 49 0x50
    
        sleep 0.2s
    
        i2ctransfer -y $i2c_index w2@$dcxo_addr 56 0xbe
        i2ctransfer -y $i2c_index w2@$dcxo_addr 49 0x12
    
        sleep 0.2s
    
        i2ctransfer -y $i2c_index w2@$dcxo_addr 56 0xbe
        i2ctransfer -y $i2c_index w2@$dcxo_addr 49 0x11
    
        sleep 0.2s
    
        i2ctransfer -y $i2c_index w2@$dcxo_addr 56 0x00
    }
    
    while getopts :f:sr argv ; do
        case $argv in 
        f)
            if [ $OPTARG -eq 100 ] ; then
                set $outdiv_by0_100m $pll_n_by0_100m $pll_lf_r2_100m
            elif [ $OPTARG -eq 125 ] ; then
                set $outdiv_by0_125m $pll_n_by0_125m $pll_lf_r2_125m
            else
                echo "Invalid freqency"
    
            fi;;
        s) save;;
        r) reset;;
        [?]) echo "invalid option or miss option argument";;
        esac
    done

    此致、

    张蓝

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

    您好、蓝、

    我们的回应将因美国在2023年2月20日的假期而延迟。 我们将在第二天返回。

    最棒的

    阿西姆

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

    您好、蓝、

    我是假期回来的。 感谢您提供该代码、我正在查看该代码、如果我发现任何异常情况、我将很快通知您。

    顺便说一下、只需更改输出分频器值(寄存器 R23)、就可以在100MHz <--> 125MHz 之间切换。 例如、如果我们将 VCO 配置为仅在5000MHz 下运行(寄存器 R26 = 0x32)、十进制的输出值50会产生100MHz 的输出、十进制的40会产生125MHz 的输出。 这是我在2月16日所做的、避免了更改 VCO 频率、因此不需要进行软件复位来重新校准 VCO。 唯一的潜在缺点是、在 VCO 频率= 5000MHz 时、125MHz 输出的相位噪声性能可能与在 VCO 频率= 4600MHz 时略有不同、但可能适合您的应用。 我仍在调查失锁行为、因为这是奇怪和意外的、但这是一种可能的解决方法。

    谢谢、

    苏伊文

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

    您好 Evan、

    感谢你的答复。

    我向 Blue 推荐了这种解决方案、但他想知道为什么会发生这种异常、以避免将来使用时可能出现的问题。  

    此致、

    Amy

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

    您好 Evan、

    感谢你的答复。

    我编写了 U-boot 驱动程序来配置 LMK61E07、通过该驱动程序、用户可以将 LMK61E07调谐到任何可行的频率、因此我需要避免这种不确定性。

    顺便说一下、芯片 REVID 为0x03。

    此致、

    张蓝

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

    您好、蓝、

    我检查了 set()函数、当在100和125MHz 之间切换时、环路滤波器 R2值(在寄存器 R36中)看起来会发生变化、这是我以前没有意识到的。 这应该是可以的、但我将在明天的实验中尝试它、看看它是否与失锁相关。

    谢谢、

    苏伊文

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

    您好 Evan、

    当我不更改 R36值时、仍然会发生这种情况。

    此致、

    张蓝

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

    您好、蓝、

    我研究了 RESET()函数的代码,并注意到一行代码异常。 它看起来是在向寄存器 R42写入0x00。 R42包含两个 VCO 校准设置。

    R42在我的内部 GUI 中隐藏、因此我假设我们不打算让客户修改它。 将其写入0x00会将模拟闭环稳定时间和 VCO 等待时间设置为其最小值、这不建议这么做、并且可能不会在您启动软件复位后为 VCO 提供足够的时间来正确重新校准。 如果在更改输出频率之前的任何时候运行 reset(),或者如果该寄存器值已写入 EEPROM,则可能是导致您发现问题的原因。

    我认为基于数据表说明的 R42建议/默认值应为0b00001001 = 0x09。 尝试将其写入 R42、并告知我们它是否解决了失锁问题。 如果确实如此、请确保 R42在 EEPROM 中具有正确的0x09值、并避免在将来对其进行编辑。

    谢谢、

    苏伊文

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

    您好 Evan、

    感谢您的支持。

    我测试并更改了 R42值、它解决了问题。

    但是、我发现在数据表中、稳压器映射和稳压器描述具有不同的复位值、两个值都不输出70.656MHz 的默认频率、并且稳压器映射值甚至超过 PLL 输出频率的上限。

    这里是我发现的差异

    |注册|                      17  | 26  | 34  | 36  | 42  |
    |--- |---|---|---|---|---
    |寄存器映射复位 val        | 0x00 | 0x64 | 0x24 | 0x28 | 0x00 |
    |寄存器说明复位 val | 0x80 | 0x32 | 0x28 | 0x08 | 0x09 |

    此致、

    张蓝

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

    您好、蓝、

    很高兴听到 失锁问题已得到解决。 感谢您指出数据表中的矛盾之处、我将着手对其进行审查和修订。 我可能需要研究器件的出厂编程配置。  如果您有兴趣、我还可以生成自定义寄存器映射、以便您使用脚本将器件重置为已知正常状态。

    最棒的

    苏伊文