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: 锁定了之后,又失锁

Part Number: LMX2820

您好,我在使用LMX2820即时校准时发现,有时候最后facl_en=0时,器件又变会失锁,无法发出频率,我想问问,在不掉电情况,鉴相频不变的情况下,哪些因素会导致锁定后失锁???

  • 您好,

    感谢您对TI产品的关注!为更加有效地解决您的问题,我已将您的问题发布在E2E英文技术论坛上,请更了解这款芯片的TI资深工程师为您解答,一旦得到回复后我会立即回复给您。帖子链接如下,您也可以关注帖子,以方便查看或追问后续疑问。

    英文论坛对应子论坛链接:https://e2e.ti.com/support/clock-timing-group/clock-and-timing/f/clock-timing-forum/1164675/lmx2820-locked-and-then-lose-the-lock

  • 您可以提供具体的配置和测试程序吗,以方便我们进行验证?

  • 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,数组配置

  • 配置输出1200mhz

  • 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);

    }

    配置即时校准

    这个有些频率就可以出来,有些就出不来

  • 我是先初始化配置,再设置即时校准,在初始化配置里我已经配置了一次即时校准,但是直接使用好像不行,所以又重新配置了一次

  • 我监测rb_LD引脚发现,已经锁定了,但是模拟的LD引脚确没有亮

  • 已将您的回复信息反馈给E2E英文论坛工程师,请耐心等待他们的答复