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.

Some frequency of LMX2581E didn't unlocked.

Other Parts Discussed in Thread: LMX2581E, LMX2581

Hi, everybody
I had used LMX2581E in my project.

The reference fsoc is 20.000MHz/1ppm. And the pase frequency is 20MHz.

I had divide the vco output from 50MHz~1000MHz,1KHz each step. When I changed the frequency by written register #0  R0, The PLL_N[11..0] 's value near 138 and above 168, the output frequency is unlock.

But when I changed the LMX2581's frequency by Coder loader, there didn't have the appearance. I don't know why.

As follow is my test code for LMX2581, the value of the register is produced by Coder Loader.

#define R5_INT 0x40870010
#define R15 0x021FE80F
#define R13 0x4082C10D
#define R10 0x210050CA
#define R9 0x03C7C039
#define R8 0x207DDBF8
#define R7 0x000A2317
#define R6 0x000004C6
#define R5 0x0000E885
#define R4 0x00000004
#define R3 0x20465BE3
#define R2 0x0FD09002
#define R1 0xC2002011
#define R0 0x40870000

void Lmx2581RegInit(void)
{
Lmx2581_register_lo.r15=Lmx2581_register_rf.r15= R15>>4;
lmx2581writeonedata(Lmx2581_register_rf.r15,Lmx2581_register_lo.r15,LMX2581_REG_R15);
Lmx2581_register_lo.r13=Lmx2581_register_rf.r13= R13>>4;
lmx2581writeonedata(Lmx2581_register_rf.r13,Lmx2581_register_lo.r13,LMX2581_REG_R13);
Lmx2581_register_lo.r10=Lmx2581_register_rf.r10= R10>>4;
lmx2581writeonedata(Lmx2581_register_rf.r10,Lmx2581_register_lo.r10,LMX2581_REG_R10);
Lmx2581_register_lo.r9=Lmx2581_register_rf.r9= R9>>4;
lmx2581writeonedata(Lmx2581_register_rf.r9,Lmx2581_register_lo.r9,LMX2581_REG_R9);
Lmx2581_register_lo.r8=Lmx2581_register_rf.r8= R10>>4;
lmx2581writeonedata(Lmx2581_register_rf.r8,Lmx2581_register_lo.r8,LMX2581_REG_R8);
Lmx2581_register_lo.r7=Lmx2581_register_rf.r7= R7>>4;
lmx2581writeonedata(Lmx2581_register_rf.r7,Lmx2581_register_lo.r7,LMX2581_REG_R7);
Lmx2581_register_lo.r6=Lmx2581_register_rf.r6= R6>>4;
lmx2581writeonedata(Lmx2581_register_rf.r6,Lmx2581_register_lo.r6,LMX2581_REG_R6);
Lmx2581_register_lo.r5=Lmx2581_register_rf.r5= R5>>4;
lmx2581writeonedata(Lmx2581_register_rf.r5,Lmx2581_register_lo.r5,LMX2581_REG_R5);
Lmx2581_register_lo.r4=Lmx2581_register_rf.r4= R4>>4;
lmx2581writeonedata(Lmx2581_register_rf.r4,Lmx2581_register_lo.r4,LMX2581_REG_R4);
Lmx2581_register_lo.r3=Lmx2581_register_rf.r3= R3>>4;
lmx2581writeonedata(Lmx2581_register_rf.r3,Lmx2581_register_lo.r3,LMX2581_REG_R3);
Lmx2581_register_lo.r2=Lmx2581_register_rf.r2= R2>>4;
lmx2581writeonedata(Lmx2581_register_rf.r2,Lmx2581_register_lo.r2,LMX2581_REG_R2);
Lmx2581_register_lo.r1=Lmx2581_register_rf.r1= R1>>4;
lmx2581writeonedata(Lmx2581_register_rf.r1,Lmx2581_register_lo.r1,LMX2581_REG_R1);
Lmx2581_register_lo.r0=Lmx2581_register_rf.r0= R0>>4;
lmx2581writeonedata(Lmx2581_register_rf.r0,Lmx2581_register_lo.r0,LMX2581_REG_R0);
}

// Initial the LMX2581

uint8_t Lmx2581Initial(void)
{
Lmx2581GpioInitial();

Lmx2581RegInit();
Lmx2581RfPowerDown();
for(uint32_t i=0;i<0xfffff;i++){};
Lmx2581RfPowerOn();
for(uint32_t i=0;i<0xfffff;i++){};

Lmx2581RegInit();

}

the Test Task Coder:

else if(cmpara0 == 1)
{
plln+=1;
if(plln<94)plln=194;
if(plln>194)plln=94;
 reg_dat = 0x405E000&(~(0xfff<<12));
 reg_dat = reg_dat|(plln<<12);
lmx2581writeonedata(reg_dat,reg_dat,LMX2581_REG_R0);
DRV_PRINT("plln:%d\r\n",plln);
}

Thank you very much.

  • Can Anybody explain this appearance?
    When change PLL_N between 134 and 139, above 164. The PLL unlock, and the vtune is 0.0V or 3.15V.
    When PLL_N above 170 , the PLL is unlock forever. Lmx2581 is out of work.
    But when change the PLL_N by coderlaoder, there didn't have the appearance.
    Can anybody explain for me?