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.

LMX2582: How to use it ?

Part Number: LMX2582

I use  MCU to write the registers of LMX2582 according to TICS pro. But no output is found. I need help.

I use 26MHz signal to get 920MHz signal, this is code i write. The register map of LMX2582 is got from TCIS pro.

int main(void)
{
uint32_t registers[44] = {0x00221A,0x010808,0x020500,0x041943,0x0728B2,0x081084,0x090302,0x0A10D8,
                                           0x0B0018,0x0C7001,0x0D4000,0x0E0FFF,0x130965,0x14012C,0x162300,0x178842,
                                           0x180509,0x190000,0x1C2924,0x1D0084,0x1E0434,0x1F0601,0x204210,0x214210,
                                           0x22C3F0,0x23001B,0x240C10,0x254000,0x260046,0x278404,0x280000,0x2900D0,
                                           0x2A0000,0x2B0000,0x2C0000,0x2D0051,0x2E0F24,0x2F00CF,0x3003FC,0x3B0000,
                                           0x3D0001,0x3E0000,0x4003AF,0x00221C};
SystemInit();
GPIOInit();

GPIOSetDir(PORT0,9,1); //CSB
GPIOSetDir(PORT2,2,1);// CLK
GPIOSetDir(PORT0,6,1);//DATA
LMX2582_SPI_Wdata(registers,44);

}

LMX2582_WR_byte(uint32_t da) 
{
int j;

for(j=0;j<24;j++)
{
GPIOSetValue(PORT0,6,(da&0x800000));
GPIOSetValue(PORT2,2,1);
da = da<<1;
GPIOSetValue(PORT2,2,0);
}
}

void LMX2582_SPI_Wdata(uint32_t *Tdata,uint32_t size) 
{
int i;
GPIOSetValue(PORT2,2,0);
GPIOSetValue(PORT0,9,1);
for(i = 0;i < size;i++)
{
GPIOSetValue(PORT0,9,0);
ADF4351_WR_byte(Tdata[i]); 
GPIOSetValue(PORT0,9,1);

}
}

WHY I FAIL?

THANKS!

  • Hi Tao,

    Just wanted to go over the history, you programmed an EVM with TICS Pro no problem, then switched to using your programming module and then this fails?
  • I do not have a EVM board, and I am directly using MCU to write registers of LMX2582.
    According to the datasheet of LMX2582:

    " Recommended Initial Power on Programming Sequence
    When the device is first powered up, the device needs to be initialized and the ordering of this programming is
    very important. After this sequence is completed, the device should be running and locked to the proper
    frequency.
    1. Apply power to the device and ensure the VCC pins are at the proper levels
    2. Ensure that a valid reference is applied to the OSCin pin
    3. Soft reset the device (write R0[1] = 1)
    4. Program the remaining registers
    5. Frequency calibrate (write R0[3] = 1) "

    I tried two methods :

    First:
    1) write R0 = 0x000002;(Soft reset the device)

    2) write other registers;

    3) write R0 = 0x000004; (Frequency calibrate)

    Second :
    1) Write R0 = 0x002216; (Soft reset the device, R0 [1] = 1, other bits set to default)

    2) write other registers;

    3) Write R0 = 0x00221C; (Frequency calibrate, R0 [1] = 0, R0 [3] = 1, other bits are set to default)

    And I still failed. I don't know why.
  • Tao,

    I exported a new set of default registers, OSCin=100MHz and RFout is 1800MHz. Please try programming this set and see if this works.

    R64	0x400077
    R62	0x3E0000
    R61	0x3D0001
    R59	0x3B0000
    R48	0x3003FC
    R47	0x2F00CF
    R46	0x2E0FA3
    R45	0x2D0000
    R44	0x2C0000
    R43	0x2B0000
    R42	0x2A0000
    R41	0x2903E8
    R40	0x280000
    R39	0x278204
    R38	0x260036
    R37	0x254000
    R36	0x240411
    R35	0x23021F
    R34	0x22C3EA
    R33	0x212A0A
    R32	0x20210A
    R31	0x1F0401
    R30	0x1E0034
    R29	0x1D0084
    R28	0x1C2924
    R25	0x190000
    R24	0x180509
    R23	0x178842
    R22	0x162300
    R20	0x14012C
    R19	0x130965
    R14	0x0E018C
    R13	0x0D4000
    R12	0x0C7001
    R11	0x0B0018
    R10	0x0A10D8
    R9	0x090302
    R8	0x081084
    R7	0x0728B2
    R4	0x041943
    R2	0x020500
    R1	0x010808
    R0	0x00221C
    

  • Brian,
    I tried your file, but I get RFout which is 3500MHz.