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: locked and then lose the lock

Part Number: LMX2820
Other Parts Discussed in Thread: 4430

Hi team,

I have a customer who is having some issues about LMX2820. Could you please provide some troubleshooting suggestions

When he uses the LMX2820 instant calibration, he finds that sometimes when facl_en=0  at the end, the device loses lock again, and unable to issue a frequency. I would like to ask, what factors can lead to lock and then lose the lock without losing power and changing phase detector frequency?

Any troubleshooting ideas are appreciated

Best Regards

Amy Luo

  • Hi Amy,

    Could you provide a specific configuration and test procedure so that we can verify it in the lab?

  • Hi Noel,

    Thanks for your response. The customer has several replies on the E2E china forum, and I forward them one by one below. If there is any missing information or the information, it is not clear, please do not hesitate to ask.

    1. 0x7A0000,0x790000,0x780000,0x770000,0x760000,0x750000,0x740000,0x730000,0x720000,0x710000,
    0x70FFFF,0x6F0000,0x6E001F,0x6D0000,0x6C0000,0x6B0000,0x6A0000,0x69000A,0x680014,0x670014,
    0x660028,0x6503E8,0x640533,0x6319B9,0x621C80,0x610000,0x6017F8,0x5F0000,0x5E0000,0x5D1000,
    0x5C0000,0x5B0000,0x5A0000,0x590000,0x5803FF,0x57FF00,0x560040,0x550000,0x540040,0x530F00,
    0x520000,0x510000,0x5001C0,0x4F0118,0x4E0000,0x4D0608,0x4C0000,0x4B0000,0x4A0000,0x490000,
    0x480000,0x470000,0x46000E,0x450011,0x440020,0x431000,0x42003F,0x410000,0x400080,0x3FC350,
    0x3E0000,0x3D03E8,0x3C01F4,0x3B1388,0x3A0000,0x390001,0x380001,0x370002,0x360000,0x350000,
    0x340000,0x33203F,0x320080,0x310000,0x304180,0x2F0300,0x2E0300,0x2D0000,0x2C0000,0x2B0000,
    0x2A0000,0x290000,0x280000,0x2703E8,0x260000,0x250500,0x240030,0x233100,0x220010,0x210000,
    0x201081,0x1F0401,0x1EB18C,0x1D318C,0x1C0639,0x1B8001,0x1A0DB0,0x190624,0x180E34,0x171102,
    0x16E2BF,0x151C64,0x14272C,0x132138,0x120000,0x1115C0,0x1017E,0x0F2001,0x0E3001,0x0D0038,
    0x0C0408,0x0B0602,0x0A0000,0x090005,0x08C802,0x070000,0x060a43,0x050032,0x044204,0x030041,
    0x0283E8,0x0157A1,0x004430,数组配置

    2. Configures the output 1200MHZ

    3. 

    uint8_t LMX2820_Vco_InstCal(double Cal_freq)
    {
    uint8_t cnt;
    static uint8_t CalCnt;
    uint16_t ReturnValue;
    uint8_t ReVal_Chan_Fre;
    double T;
    uint32_t Instcal_Dly;//瞬时校准的时间
    uint32_t LmxRtemp;//寄存器中转值;
    uint32_t LmxR2=0,LmxR1=0,LmxR0=0;
    LMX2820_OutPuT_Set(Cal_freq);
    T=2.5*CBIASVCO/4.7;
    if(CAL_CLK_DIV!=0) Instcal_Dly=T*FOSCIN/(2<<CAL_CLK_DIV);
    else Instcal_Dly=T*FOSCIN;
    //1.设置即时校准时间 寄存器R2
    LmxR2|=(0x02<<16)&(0x00ffffff);
    LmxR2|=(0x01<<15);
    LmxR2|=(CAL_CLK_DIV<<12);
    LmxR2|=(Instcal_Dly<<1);
    LmxR2|=(Quick_Recal_En);//快速重校准
    SpiWriteRegisterByte(LmxR2);

    //2.打开即时校准 寄存器R1
    LmxR1|=(0x01<<16)&(0x00ffffff);
    LmxR1|=(Phase_Sync_En<<15);//不打开相位同步
    LmxR1|=(0x15E<<6); //保留位
    LmxR1|=(LD_Vtune_En<<5); //打开即时校准 寄存器R1
    LmxR1|=(0x00<<2); //保留位

    LmxR1|=(Instcal_Dblr_En<<1);//vco double使能时 INSTCAL_DBLR_EN也要使能
    LmxR1|=(Instcal_En);//即时校准使能
    SpiWriteRegisterByte(LmxR1);

    //3.设置频率
    ReVal_Chan_Fre=LMX2820_Pllassign_freq(Cal_freq);

    //4.写入INSTCAL_PLL_NUM
    N_Fraction=((double)Pll_Num)/((double)Pll_Den);
    Instacl_Pll_Num=(0x100000000)*N_Fraction;
    Instacl_Pll_Num_Lsb=(0x2d<<16)|(Instacl_Pll_Num&0x0000ffff);
    Instacl_Pll_Num_Msb=(0x2c<<16)|((Instacl_Pll_Num>>16)&0x0000ffff);

    // SpiWriteRegisterByte(0X4F011E);
    // SpiWriteRegisterByte(0X4E0000);
    // SpiWriteRegisterByte(0X4600FE);

    SpiWriteRegisterByte(Instacl_Pll_Num_Lsb);
    SpiWriteRegisterByte(Instacl_Pll_Num_Msb);
    LMX2820_Freq_Out(Cal_freq);//配置 2b 2a 27 26 24 20 寄存器
    //FCAL_EN=0,写入r0生效校准
    LmxR0|=(0x00<<16)&(0x00ffffff);
    LmxR0|=(1<<14);
    LmxR0|=(INSTCAL_SKIP_ACAL<<13);
    LmxR0|=(0x00<<11);
    LmxR0|=(FCAL_HPFD_ADJ<<9);
    LmxR0|=(FCAL_LPFD_ADJ<<7);
    LmxR0|=(Dblr_Cal_En<<6);
    LmxR0|=(1<<5);
    LmxR0&=~((uint32_t)Fcal_En<<4);
    LmxR0|=(0x00<<2);
    LmxR0|=(Chip_Reset<<1);
    LmxR0|=(Chip_PowerDown);



    SpiWriteRegisterByte(LmxR0); //LMXR0 =0X004420
    //FCAL_EN=1,写入r0锁定
    LmxR0|=((uint32_t)Fcal_En<<4);
    SpiWriteRegisterByte(LmxR0); //LMXR0 =0X004430

    while(((SpiReadRegisterByte(0x4a)&(0xc000))>>14)!=2)
    {

    SpiWriteRegisterByte(Instacl_Pll_Num_Lsb);
    SpiWriteRegisterByte(Instacl_Pll_Num_Msb);
    LMX2820_Freq_Out(Cal_freq);//配置 2b 2a 27 26 24 20 寄存器
    SpiWriteRegisterByte(LmxR2);
    SpiWriteRegisterByte(LmxR1);
    SpiWriteRegisterByte(LmxR0);
    delay_ms(1);//每次检测前需要有个锁定时间延时 根据手册最少1ms

    }
    LmxR0&=~((uint32_t)Fcal_En<<4);
    SpiWriteRegisterByte(LmxR0); //LMXR0 =0X004430
    delay_us(50);

    }

    Configure Instant Calibration

    Some of these frequencies can come out and some cannot

    4. I initialize the configuration first and then set up the instant calibration. In the initial configuration I have already configured an instant calibration, but it doesn't seem to work directly, so I reconfigured it again.

    5. I monitored the rb_LD pin and found that it was locked, but the analog LD pin was not lit.

    Best Regards,
    Amy Luo

  • Hi Noel,

    I'm really sorry, but the customer has some new questions:

    Now I have done the instant calibration with my initial power-up, and then when I modify the frequency, read rb_LD:
    Rb_LD is always invalid when R0 writes 4430;
    When R0 writes to 4420 it is sometimes always valid, but rb_VCO_SEL,rb_VCO_CAPCTRL does not correspond to the target frequency.
    These problems can suddenly disappear for some frequencies and then lock up. At this point, R0 will always be valid whether it writes 4430 or 4420.

    Please give your comments if any.

  • The customer has just said that there may have been a thermal issue causing the chip to fail.