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.

LMX2820: lmx2820 INSTANT CALIBRATION

Part Number: LMX2820

I need to use the instant calibration function of lmx2820. After initialization according to the following steps, I turned the POWERDOWN up to reduce power consumption, and then changed the frequency, but the frequency could not be locked.  Is POWERDOWN not able to be pulled up after instant calibration initialization  ?  I tried not using instant calibration, then pulling up the POWERDOWN,changing frequencies,the frequency can be locked.

  1. Power up device Normally.
  2. Program INSTCAL_DLY = tDLY × f OSC (in MHz)/ 2CAL_CLK_DIV. tDLY is the required timeout count for instant calibration and is based on the bias capacitor at pin 3.
  3. Program register R1 for Instant Calibration.

  4. Program the device to output 5.65 GHz.
  5. Program INSTCAL_PLL_NUM = 232 × (PLL_NUM / PLL_DEN).
  6. Write R0 with FCAL_EN = 1 to generate the calibration settings.
  7. Write R0 with FCAL_EN = 0 to have the device lock to 5.65 GHz
  8. Wait for Lock Detect to go high.
  • 您好,我们可以直接使用中文沟通。

    您的这个现象应该是正常的。在instant calibration介绍这里,有说只要power supply 电压不掉的话,配置是保持的。

    但是power down 模式下 内部LDO是power down的。LDO是给内部power supply pin引脚供电的。

  • 我还尝试过CE引脚,后续改变频率也无法锁上,也是跟这个相同的原理吗?如果是,初始化之后或者我不使用2820出频率时也不能够断开2820吗?

  • 您好,稍后给您答复。

  • CE只是输出使能信号。 改变它的高低,只是改变了输出是否enable。

    初始化之后或者我不使用2820出频率时也不能够断开2820吗?

    您这里是什么意思,初始化后,CE 拉低,输出disable吗?

    根据数据手册中的描述,即时校准,前提条件就是不移除电源。

    在不移除电源的前提下, 初始化后如果需要改变频率,需要以下两个步骤:

    1. Write the values for INSTCAL_PLL_NUM, PLL_N, PLL_NUM, PLL_DEN.

    2. Write R0 to trigger Calibration (with DBLR_CAL_EN = 0, FCAL_EN = 0).

  • 感谢你的答复,我按照步骤初始化写了这些寄存器,使用的整数模式,初始化2820的频率为1Ghz,没有用到output doubler,这时我把DBLR_CAL_EN和INSTCAL_DBLR_EN设为0。

    //lmx2080频率1Ghz
    Set_AD9910(69.26406926406926,1000,1,id);
    lmx2820_WD(id,0x0286D6);//reg2
    lmx2820_WD(id,0x0157a1);//reg1
    lmx2820_WD(id,0x4e0000);//REG78
    lmx2820_WD(id,0x240021);//REG36
    lmx2820_WD(id,0x233000);//REG35
    lmx2820_WD(id,0x201081);//REG32
    lmx2820_WD(id,0x0e3002);//REG14
    lmx2820_WD(id,0x0d0038);//REG13
    lmx2820_WD(id,0x0c1c08);//REG12
    lmx2820_WD(id,0x0b0602);//REG11
    lmx2820_WD(id,0x2D0000);//INSTCAL_PLL_NUM
    lmx2820_WD(id,0x2C0000);//INSTCAL_PLL_NUM
    lmx2820_WD(id,0x004630);//
    lmx2820_WD(id,0x004620);

    然后我改变频率,一直保持使用整数模式,任然要用到即时校准,如果用到了output doubler,INSTCAL_DBLR_EN是不是需要写成1?寄存器我是下面这样写的,有时候就锁不上。

    lmx2820_WD(id,reg78);//OUTA_MUX
    lmx2820_WD(id,reg36);//PLL_N
    lmx2820_WD(id,reg32);//CHDIVA
    lmx2820_WD(id,reg1);//INSTCAL_EN = 1,INSTCAL_DBLR_EN = 1
    lmx2820_WD(id,reg0);//DBLR_CAL_EN = 1,FCAL_EN =1
    reg0 =reg0 & 0xffffffaf;
    lmx2820_WD(id,reg0);//DBLR_CAL_EN = 0,FCAL_EN =0

    如果我不使用即时校准,就不会出现这些问题,频率都能锁住,是不是我有什么寄存器没有写到,或者顺序不对,手册上也写得比较简略。

  • 如果用到了output doubler,INSTCAL_DBLR_EN是不是需要写成1

    是的。

    您上面先配置的,初始化2820的频率为1Ghz,没有用到output doubler没有使用即时校准是吗?

    即时校准的目的是为了VCO能快速校准,datasheet中给出了使用即时校准的配置步骤。

    1. Power up device Normally.

    2. Program INSTCAL_DLY = tDLY × fOSC (in MHz)/ 2CAL_CLK_DIV. tDLY is the required timeout count for instant calibration and is based on the bias capacitor at pin 3。

    3. Program register R1 for Instant Calibration.

    Set INSTCAL_EN = 1. The action of toggling INSTCAL_EN from 0 to 1 resets the instant calibration settings and sets the part up to generate settings the next time that register R0 is programmed with FCAL_EN = 1.

    If the output doubler is used set INSTCAL_DBLR_EN = 1, otherwise set it to 0。

    4. Program the device to output 5.65 GHz.

    5. Program INSTCAL_PLL_NUM = 232 × (PLL_NUM / PLL_DEN).

    6. Write R0 with FCAL_EN = 1 to generate the calibration settings. 7. Write R0 with FCAL_EN = 0 to have the device lock to 5.65 GHz

    8. Wait for Lock Detect to go high.

    那如果需要更改频率,前提首先电源不断电,其次需要加上下面两步。

    这两步应该放在上述配置顺序中的第4步之前。也就是第三步即时校准之后,黑色字体下面。

    1. Write the values for INSTCAL_PLL_NUM, PLL_N, PLL_NUM, PLL_DEN.

    2. Write R0 to trigger Calibration (with DBLR_CAL_EN = 0, FCAL_EN = 0)

  • 自始至终,我都需要用到即时校准和整数模式。

    我初始化2820的频率为1Ghz,没有用到output doubler,使用了即时校准。

    后续我改变频率,有时会用到output doubler。

    初始化我频率能锁住,后续我改变频率,会改变以下寄存器的对应位(有注释),按顺序写了以下寄存器,就无法锁住,我觉得我是按照即时校准步骤写的,为什么后续改变频率就锁不住了?如果后续改变频率,我把INSTCAL_EN写为0(不使用即时校准),频率就能锁住。

    lmx2820_WD(id,reg1);//INSTCAL_EN = 1,INSTCAL_DBLR_EN = 1

    lmx2820_WD(id,reg78);//OUTA_MUX
    lmx2820_WD(id,reg36);//PLL_N
    lmx2820_WD(id,reg32);//CHDIVA
    lmx2820_WD(id,reg0);//DBLR_CAL_EN = 1,FCAL_EN =1
    reg0 =reg0 & 0xffffffaf;
    lmx2820_WD(id,reg0);//DBLR_CAL_EN = 0,FCAL_EN =0

  • 您好,datasheet中的描述确实有些模糊。

    对于即时校准配置顺序, 以及改变VCO频率的配置,我看资深的时钟工程师给了具体的配置顺序,您参考下面的帖子,看下是否能解决您的问题。

    如果不能,我会进一步去确认这个问题:

    https://e2e.ti.com/support/clock-timing-group/clock-and-timing/f/clock-timing-forum/1047349/lmx2820-register-programming-order-for-applying-instacal-data

  • 感谢回复,我参照这个帖子做了一些修改,频率还是有时候锁不上。我改变频率是按以下步骤(始终使用整数模式和即时校准):

    由最终频率,计算出OUTA_MUX、CHDIVA、PLL_N。OSC_2X、PLL_R_PRE、MULT为固定值。

    然后计算出所需频率需要的OSCIN(60Mhz-70Mh之间),通过调整OSCIN,OUTA_MUX,CHDIVA,PLL_N来产生需要的频率。

    难道使用即时校准不能改变OSCIN吗?还是说不能随便改变OUTA_MUX,CHDIVA,PLL_N?

  • 您好,是锁不上还是偶尔锁不上?我看您提到有时候锁不上,您的意思是能锁上,但是不稳定是吗?

    另外,在应用中,改变频率的输出,不是只调整了PLL_N, PLL_NUM和PLL_DEN,如下步骤中的5,输入频率OSCIN也改变了是吗?

    根据数据手册中的介绍,当在即时校准前提下改变频率的时候,需要添加的两个步骤基本上也是根据输出频率的改变,那么相应的PLL_N, PLL_NUM和PLL_DEN也会做调整,然后再写R0 触发校准。 

    1. Write the values for INSTCAL_PLL_NUM, PLL_N, PLL_NUM, PLL_DEN.

    2. Write R0 to trigger Calibration (with DBLR_CAL_EN = 0, FCAL_EN = 0).

    您是否可以验证下,OSCin不变,改变PLL_N, PLL_NUM和PLL_DEN。是否能lock?

    使用TICSPro工具比较方便,改变ROUTA,PLL_N, PLL_NUM和PLL_DEN这几个都是自动配置的。

  • 您好,初始化后我只改变了PLL_N,发现有的频率点能锁上,有的频率点锁不上,失锁后我再重新写之前能锁上的频率点那个频率点也能锁上。以下是我的步骤。

    //初始化可以锁住
    Set_AD9910(70,1000,1,id);
    lmx2820_WD(id,0x0286D6);//reg2
    lmx2820_WD(id,0x0157a1);//reg1
    lmx2820_WD(id,0x4e0000);//REG78
    lmx2820_WD(id,0x24001f);//REG36 PLL_N
    lmx2820_WD(id,0x233000);//REG35
    lmx2820_WD(id,0x201001);//REG32
    lmx2820_WD(id,0x0e3002);//REG14
    lmx2820_WD(id,0x0d0038);//REG13
    lmx2820_WD(id,0x0c1c08);//REG12
    lmx2820_WD(id,0x0b0602);//REG11
    lmx2820_WD(id,0x2D0000);//INSTCAL_PLL_NUM
    lmx2820_WD(id,0x2C0000);//INSTCAL_PLL_NUM
    lmx2820_WD(id,0x004620);
    lmx2820_WD(id,0x004630);
    lmx2820_WD(id,0x004620);
    usleep(10000);


    Set_AD9910(70,1000,1,id);//不可以
    lmx2820_WD(id,0x4e0000);//REG78
    lmx2820_WD(id,0x24001e);//REG36 PLL_N
    lmx2820_WD(id,0x201001);//REG32
    lmx2820_WD(id,0x004620);
    usleep(10000);


    Set_AD9910(70,1000,1,id);//可以
    lmx2820_WD(id,0x4e0000);//REG78
    lmx2820_WD(id,0x24001f);//REG36 PLL_N
    lmx2820_WD(id,0x201001);//REG32
    lmx2820_WD(id,0x004620);
    usleep(10000);


    Set_AD9910(70,1000,1,id);//可以
    lmx2820_WD(id,0x4e0000);//REG78
    lmx2820_WD(id,0x240028);//REG36 PLL_N
    lmx2820_WD(id,0x201001);//REG32
    lmx2820_WD(id,0x004620);
    usleep(10000);


    Set_AD9910(70,1000,1,id);//不可以
    lmx2820_WD(id,0x4e0000);//REG78
    lmx2820_WD(id,0x24001a);//REG36 PLL_N
    lmx2820_WD(id,0x201001);//REG32
    lmx2820_WD(id,0x004620);
    usleep(10000);


    Set_AD9910(70,1000,1,id);//可以
    lmx2820_WD(id,0x4e0000);//REG78
    lmx2820_WD(id,0x240026);//REG36 PLL_N
    lmx2820_WD(id,0x201001);//REG32
    lmx2820_WD(id,0x004620);
    usleep(10000);

  • 好的,我再看下这个问题。

  • 我发现跟PLL_N有关。当我后续频率的PLL_N小于初始化时的PLL_N时,就锁不上,大于或者等于就可以

  • 当我后续频率的PLL_N小于初始化时的PLL_N时,就锁不上,大于或者等于就可以

    PLL_N是有要求的,PLL_N必须大于等于12, 是不是初始化时的PLL_N配置12? 

  • 我的PLL_N都是大于12的,初始化我是24。

  • 恩看到了,初始化您配置的是001f,即为31.后面我看了下配置大于31的都能lock。

    应该不是因为大于31能lock,只改了 PLL_N引起的其他参数的变化是不是不满足要求?比如小于31之后,VCO的频率范围是否还大于5650Mhz?

  • 比如我设1e,vco是大于5650的,但还是锁不上

  • 我觉得您可以直接将配置在TICSpro上设置一下,比如输入输出多少,输出倍频enable勾选上,工具可以自动计算一些分频系数以及VCO频率等。配置和您的对比下。

  • 我刚看了下数据手册,确实没有提到即时校准条件下,如果改变频率,PLL_N的值必须要大于等于初始值的要求,所以我想可能是因为改变了PLL_N从而改变了其他参数不符合要求导致锁不上。

  • 好的,我再看看,谢谢

  • 不客气,有什么问题再跟进吧。