ADF5902 cannot be locked

Hello: When I configure 18 registers on the ADF5902 board with a 50MHz crystal oscillator, the SPI data cannot be locked. The following are the register values I configured:

   parameter r0  = 32'h02000007;  // R7

   parameter r1  = 32'h0000002B;  // R11

   parameter r2  = 32'h0000000B;  // R11

   parameter r3  = 32'h0018000D;  // R13

   parameter r4  = 32'h1D32A64A;  // R10

   parameter r5  = 32'h2A20B929;  // R9

   parameter r6  = 32'h40003E88;  // R8

   parameter r7  = 32'h800FE520;  // R0

    // #10us

   parameter r8  = 32'h01800027;  // R7

   parameter r9  = 32'h00000006;  // R6

   parameter r10 = 32'h01E28005;  // R5

   parameter r11 = 32'h00000004;  // R4

   parameter r12 = 32'h01897803;  // R3

   parameter r13 = 32'h00020642;  // R2

   parameter r14 = 32'hFFF7FFE1;  // R1

   parameter r15 = 32'h800FE720;  // R0

    // #1200us

   parameter r16 = 32'h800FE560;  // R0

   parameter r17 = 32'h800FED60;  // R0

    // #500us

   parameter r18 = 32'h800FE5A0;  // R0

   parameter r19 = 32'h800FF5A0;  // R0

    // #500us

   parameter r20 = 32'h00000011;  // R17

   parameter r21 = 32'h00000010;  // R16

   parameter r22 = 32'h0000120F;  // R15

   parameter r23 = 32'h0200012F;  // R15

   parameter r24 = 32'h0400120F;  // R15

   parameter r25 = 32'h0600012F;  // R15

   parameter r26 = 32'h012038EE;  // R14

   parameter r27 = 32'h033C720E;  // R14

   parameter r28 = 32'h052038EE;  // R14

   parameter r29 = 32'h073C720E;  // R14

   parameter r30 = 32'h0018050D;  // R13

   parameter r31 = 32'h0018052D;  // R13

   parameter r32 = 32'h0018054D;  // R13

   parameter r33 = 32'h0018056D;  // R13

   parameter r34 = 32'h004F000C;  // R12

   parameter r35 = 32'h2800B929;  // R9

   parameter r36 = 32'h0100A027;  // R7

   parameter r37 = 32'h00000006;  // R6

   parameter r38 = 32'h01E28005;  // R5

   parameter r39 = 32'h00002004;  // R4

   parameter r40 = 32'h0189F803;  // R3

   parameter r41 = 32'h801FE560;  // R0

   // #100us

   parameter r42 = 32'h0000110B;  // R11

   parameter r43 = 32'h01E28005;  // R5

The center frequency is 24.125GHz,no doubler or no divider.

Can anyone help me check where the problem is, thank you.

  • 0
    •  Analog Employees 
    on Apr 27, 2021 4:41 PM

    R5 should be programmed to 0x01E38005 (parameter r10 in your sequence) during the VCO calibration. This is to ensure that the full frequency range (24 - 24.25 GHz) can be generated without having to recalibrate the VCO.

    Are you trying to lock the PLL to a single output frequency (24.125GHz) or trying to use the frequency ramping feature? If you are locking to a single frequency, you should omit the writes to setup the ramp (steps 22 - 34 in datasheet init sequence) and replace with a write to R13 to turn the clock divider off (0x0000000D).

    If using the frequency ramping feature, the start frequency should be programmed (parameters r37, r38 in your sequence), not the centre frequency. The ramp registers as programmed in your sequence will attempt to ramp 200MHz in frequency from 24.125 GHz to 24.325GHz, which is not possible.

  • +1
    •  Analog Employees 
    on Apr 28, 2021 6:45 PM in reply to wlz

    Apologies, I should have pointed out that you still need to write to R13 during the VCO calibration setup to enable the clock divider (step 4 in datasheet init sequence). You should omit the later writes to setup the ramp divider (steps 31 - 34 in datasheet init sequence) and replace with a write to R13 to turn the clock divider off (0x0000000D).

    Try the following sequence which should lock the device to 24.125GHz with REFIN=50MHz. TX1 output enabled, TX2 disabled.

    02000007
    0000002B
    0000000B
    0018000D
    1D32A64A
    2A20B929
    40003E88
    800FE520
    // wait 10us
    01800027
    00000006
    01E38005
    00000004
    01897803
    00020642
    FFF7FFE1
    800FE720
    // wait 1200us
    800FE560
    800FED60
    // wait 500us
    800FE5A0
    800FF5A0
    // wait 500us
    801FE560
    00000011
    0000000D
    004F000C
    2800B929
    0100A027
    00000006
    01E28005    // part should lock after this write
    00002004    // may be unnecessary
    0189F803    // may be unnecessary
    // wait 100us
    0000010B    // may be unnecessary