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.

[参考译文] LMX2592EVM:更改频率适用于TIC Pro,但不适用于SPI上的MCU

Guru**** 2542740 points
Other Parts Discussed in Thread: LMX2592, USB2ANY, LMX2592EVM

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

https://e2e.ti.com/support/clock-timing-group/clock-and-timing/f/clock-timing-forum/642912/lmx2592evm-changing-frequency-works-with-tics-pro-but-not-with-mcu-over-spi

部件号:LMX2592EVM
线程中讨论的其他部件:TMS320F2.8027万,LMX2592 USB2ANY

您好,

我正在尝试通过SPI使用TI TMS320F2.8027万 LaunchPad更改LMX2592EVM上的频率。  LMX2592使用100 MHz内部振荡器。  我可以让MCU将所有寄存器值发送到LMX2592并以5800 MHz开始传输。  当我尝试使用用户指南第7.5 2节(SNAS646E,2017年7月版)中所示的步骤更改频率时,PLL不会更改为目标频率。  而是从原始频率更改为+48 MHz。  如果我更改起始频率,它将继续更改为大约+48 MHz,而不是第二个目标频率。  是否需要启用/禁用某个位字段才能使PLL接受新频率?  使用直接连接到LMX2592EVM的USB2ANY更改频率时,我遵循了TIC Pro执行的寄存器值更改。

Rob

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

    如果您的频率更改仅涉及N分频器,PLL分子和分母的更改,则数据表中描述的过程是正确的。
    您希望从5800MHz更改哪个频率? 您能否提供TIC Pro的屏幕截图?
    您是否在使用MCU对设备进行编程时遇到问题,但使用USB2ANY编程时没有问题?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好,Noel,

    正确;我可以使用USB2ANY/TIC Pro成功更改频率,但不能使用MCU成功更改频率。  我附上了所有TIC Pro频率更改的拼贴屏幕截图。

    对于第一个更改,我尝试从5800.2 MHz更改为5824.2 MHz,然后更改为5745.8 MHz,因此唯一更改的寄存器值是R38 (在57xx和58xx之间更改时)和R45。  我使用的频率范围介于5725 MHz和5850 MHz之间(实施跳频),因此如果从58xx MHz变为57xx MHz,我需要同时更改R45和R38。  PLL分母(R40和R41)对我的hopset来说从未改变。  即使R44从未改变(我的集频率范围始终为0),我仍在寄存器中写入0,因为这是TIC Pro执行的一个步骤。  我还让MCU以与TIC Pro相同的顺序写入寄存器(步骤2只显示R45和R44;TIC Pro特别更改R44,然后是R45)。

    在使用USB2ANY进行故障排除时,我注意到使用TICS Pro更改频率时出现了另一个问题。  从58xx到58xx MHz的更改只需要更改RFoutA字段,并且输出频率正确。  在加载所有寄存器之前,从58xx到57xx或从57xx到58xx的任何更改都不会输出正确的频率(请参阅所附屏幕截图中的红色文本)。

    非常感谢您提供的任何帮助。

    Rob

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Rob,您好!
    在我看来,您忘记了在更改N分频器和PLL分子后按魔术键-写入R0 (FCAL_EN位= 1)。 魔术键用于启动VCO校准。
    从5800.2 到5824.2MHz,频率变化很小,新频率使用相同的VCO内核。 因此,无论您是否进行VCO校准,都没有什么区别,这就是您将其锁定的原因。
    但是,从5824.2 到5745.8MHz的更改足够大,如果未执行VCO校准,您可能无法将其锁定到正确的频率。
    我们建议每次更改频率时启动VCO校准,无论更改大小。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Noel,

    我取消选中FCAL_EN,然后在从5824.2 MHz切换到5745.8 MHz后重新选中它,然后LMX2592传输正确的频率(结果与"负载寄存器"相同)。 对于FCAL_EN,TIC Pro将R0写入0x2214,然后将R0写入0x221C。 当我尝试使用TMS320F2.8027万复制此数据时,我得到的结果与我一直收到的结果相同。 LMX2592开始传输5800.2 MHz的初始频率,然后当F2.8027万发送新寄存器值以传输5824.2 MHz (包括R0 0x2214和R0 0x221C)时,LMX2592传输5849 MHz,即使F2.8027万继续发送更新的寄存器值(5800.2 -- > 5824.2 --> 5745.8 --> 5800.2 -->....)。

    除了FCAL_EN之外,我还能忽略其他内容吗?

    更改顺序代码如下。 注意,F2.8027万具有16位寄存器,LMX2592具有24位寄存器,因此PLL_register (LMX2592的8位寄存器地址),PLL_data1 (LMX2592的MS 8位)和PLL_data2 (LMX2592的LS 8位)。 我之前有一条IF语句用于循环,它根据我希望LMX2592传输的下一个频率更新寄存器值(存储在F2.8027万中)。

    Rob


    对于(change_step =0;change_step <7;change_step ++)

    IF (CHANGE_STE==0)//频率变更步骤1:设置新的N分隔符

    sdata[0]= PLL_register[14];//写入R38=0x2600
    sdata[1]= pll_data1[14]; //写入R38值(MS 8位)
    sdata[2]= pll_data2[14]; //写入R38值(LS 8位)
    }
    IF (CHANGE_STE=1)//频率变更步骤2:设置新PLL分母

    sdata[0]= PLL_REGISTER[12];//写入R40=2800
    sdata[1]= pll_data1[12]; //写入R40值(MS 8位)
    sdata[2]= pll_data2[12]; //写入R40值(LS 8位)
    }
    IF (CHANGE_STE==2)//频率变更步骤2:设置新的PLL分母

    sdata[0]= PLL_register[11];//写入R41=2900
    sdata[1]= pll_data1[11]; //写入R41值(MS 8位)
    sdata[2]= pll_data2[11]; //写入R41值(LS 8位)
    }
    IF (CHANGE_STE=3)//频率更改步骤2:设置新的PLL分子

    sdata[0]= PLL_register[8];// write R44=2C00
    sdata[1]= pll_data1[8]; //写入R44值(MS 8位)
    sdata[2]= pll_data2[8]; //写入R44值(LS 8位)
    }
    IF (CHANGE_STE=4)//频率更改步骤2:设置新的PLL分子

    sdata[0]= PLL_register[7];// write R45=2D00
    sdata[1]= pll_data1[7]; //写入R45值(MS 8位)
    sdata[2]= pll_data2[7]; //写入R45值(LS 8位)
    }
    IF (CHANGE_STE=5)//频率更改步骤3:频率校准禁用

    PLL_data2[42]= 0x1400; // 4=0100,C=1100,D=1101,E=1110,F=1111
    sdata[0]= PLL_register[42];//写入R0[3]=0
    sdata[1]= pll_data1[42];
    sdata[2]= pll_data2[42];
    }
    IF (CHANGE_STE=6)//频率更改步骤3:启用频率校准

    PLL_data2[42]= 0x1C00; // 4=0100,C=1100,D=1101,E=1110,F=1111
    sdata[0]= PLL_register[42];//写入R0[3]=1
    sdata[1]= pll_data1[42];
    sdata[2]= pll_data2[42];
    change_step =7;
    }
    //传输数据
    对于(i=0;i<3;i++)

    SpiaRegs.SPITXBUF=sdata[I];//发送数据
    }
    }
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Noel,

    我在原始寄存器模式下使用USB2ANY和TIC Pro一次手动更改一个寄存器(通过屏幕右上角的数据字段)以更改频率。 我注意到在更改R0时,TIC Pro在我删除'C'后将0221写入寄存器,然后在我删除'4'后再次写入0221,然后再写入0x221C到寄存器以重新启用FCAL_EN。 其他寄存器不会将此临时步骤写入LMX2592。 我尝试将此0x0221写入回路的更改序列中,但我仍然得到相同的结果(频率从5800.2 MHz更改为~5849,即使在校准后也保持在5849;尝试更改为5824.2 MHz)。

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

    我们忽略在TIC Pro中的操作,更改频率的编程过程实际上非常简单-编程新的N分频器值,然后编程R0以校准VCO。 例如,假设您被锁定到5824.2MHz,现在您要更改为5745.8MHz:
    1.将R38编程为0x26.0038万。 这将更改N分压器值。
    2.将R45编程为0x2D02D9。 这将更改分子值。
    3.将R0编程为0x0.0221万C。 此寄存器没有更改,但再次编程此寄存器将启动VCO校准。
    4.您应该能够锁定到5745.8MHz。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好,Noel,

    我采纳了您的建议,修改了TMS320F2.8027万代码,只对R38,R45和R0进行了编程,以便进行校准。  我将PLL从5824.2 MHz开始,然后更改为5745.8 MHz,然后返回到5824.2 等。 当我在for循环插入断点并逐步完成每个寄存器的写入时,PLL将更改频率并传输; 但是,当我尝试在没有断点的情况下运行代码时,LMX2592EVM会传输初始5824.2 MHz,然后在for循环更改过程执行(切换到5745.8)时停止传输。  

    到目前为止,我尝试在每个寄存器写入步骤之间引入时钟周期,但没有成功。  对于为什么流程使用断点而不是不使用断点,有什么其他想法或建议?

    Rob

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

    我在写了每个寄存器之后探索了for循环延迟,发现一个860个周期的for循环是我能做的最低的,同时仍运行代码并更改频率而不中断。

    如果您有任何见解,了解为什么使用MCU更改频率时需要环路延迟。

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

    Rob,您好!

    在每个寄存器写入之间需要一个CSB (锁存启用)信号。 确保您的代码生成如下所示的类似波形。 R0编程后,VCO将立即校准,然后进行模拟回路锁定。 这两个操作都需要时间。 VCO校准时间约为100us,具体取决于配置。 模拟锁定时间取决于您的环路带宽。 因此,您应等待足够的时间,让回路锁定到新频率,然后再更改频率。