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.

LMX2492: LMX loses lock during programming of ramp settings

Part Number: LMX2492
Other Parts Discussed in Thread: LMX2491

Dean,

I have finally written my own controller for the LMX2492.  I can write to the device and read back correct values in the registers.  I have the system connected to my Spectrum Analyzer and I see the signal in the correct location for all settings except ramp functions.  The way I load things is with 1,2, or 3 registers at a time (instead of the long write of all registers).  This works fine for multiple register settings, like fastlock reg's and setting N (which is spread over multiple registers).  

But when I program ramp settings (reg141 - reg 86), the PLL loses lock.  I am trying to make a sawtooth, just have 2 legs.  I can watch it happen, I load, say, all ramp0 reg's, and by the time I'm done, the PLL output is down at the bottom rail.  The registers have been written correctly, I can read them back.  But the loop is not locked.  It happens everytime.  I can do a reset command, to load in a .txt file of settings saved from TCS, where all the ramp reg's are filled with 0s.  After this reset I am locked on at the right frequency.  But I'll try to program the ramp again and have the same problem.  I have checked that the RAMP_EN is low before and during the loading of ramp registers. It really is.  I have also tried to program things while the LMX is off, thinking maybe the loop won't drift if the output is off during the register writing.  But this didn't work either.

How can I load the ramp registers without losing lock?  

Thanks,

Darren

  • Darren,

    Sounds sort of mysterious as you have RAMP_EN=0 and you are reading back the registers, and there are no test bits in the ramping registers. These would be the first two things I would have suspected.

    So I would say this:

    1.  Program registers in reverse order, so R141-R86 should be programmed before the PLL locks

    2. Make sure the ramp limits RAMP_LIMIT_HIGH and RAMP_LIMIT_LOW are not constraining this.

    3. Not sure of your setup, could be something off.  Have you tried making RAMP0_INC=RAMP1_INC=0 to make sure it does not cause the issue for debug purposes

    4.  Try just programming some of the regsiters at a time to find the culprit, as this makes no sense to me why this would happen.

    5. If RAMP_EN=1 while you are programming the ramping registers, this is probably the issue, but you say you are not doing that.

    Regards,
    Dean

    Regards,
    Dean

  • Dean

    Nothing I do helps.  I followed each of your suggestions.   I always, on start up, program from a valid .txt hex file that I got from TICS Pro.  I program in reverse order: R141-R0.  I check the limits and they are not exceeded.  Then I try and make ramping work.  I make sure the the RAMP_EN is low.  Then set a simple up/down, 

    set R92 - R86 with 0x21 0x27 0x10 0x00 0x00 0x09 0xd5:

    this translates to 

    LMX Controller: Ramp 0 Settings:
    INC: 2517 FL: 0 DELAY: 0 LEN: 10000 FLAG: 1 RESET: 0 NXT_TRIG: 0 NXT_RMP: 1

    Then

    set R99- R93 with 0x02 0x27 0x10 0x3f 0xff 0xff 0x2B

    which translates to 

    LMX Controller: Ramp 1 Settings:
    INC: 1073739307 FL: 0 DELAY: 0 LEN: 10000 FLAG: 2 RESET: 0 NXT_TRIG: 0 NXT_RMP: 0

    Everything is fine until here.  Then I set R58 to on, as 0x01.  At this point the PLL rails to some ramp action at the high frequency limit.

    I have also tried these register loads in reverse order, with no difference.

    I tried item 3 and in that case, i see no change, the CW stays where it was.  This is interesting perhaps.  What should it tell us?  

    I am stumped at what to do next.  

    Thanks,

    Darren

  • Dean,

    I was able to get a 1-leg ramp to work.  I use the "reset" bit and then set the next_ramp to 0, so only 1 set of 7 registers is used to create the ramp.  

    The settings that work are [0, 100, 0, 0, 10000, 1, 1, 0, 0], which is [id, inc, fl, dly, leng, flag, rst, n_trig, next_ramp].  Then I send ramp_on, which sets the r58 register bit 0.  Then I finally get some ramping working.  

    I tried to make a 2-leg version, this time using the 'reset' bit on each leg.  It may be working, I'm not connected to a VSA to see the modulation domain.  But I can at least now see ramping in the intended frequency range.

    What does the reset bit do?  Is it possible that this is my problem?

    Thanks,

    Darren

  • Section 9.2.4 of the datasheet seems to show that 'reset' should be 1 for ramp 0 and then 0 for all later ramps.  When I try this, it seems to work.  But I still don't understand what the function of reset is.

  • Hi darren,

    We have some usage examples in LMX2492 EVM user's guide and LMX2491 datasheet, would you please check if these examples help?

    The RST is required when the start frequency of next ramp is not equal to the end frequency of the current ramp.