Because of the holidays, TI E2E™ design support forum responses will be delayed from Dec. 25 through Jan. 2. Thank you for your patience.

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.

LMK61E2: See above

Part Number: LMK61E2
Other Parts Discussed in Thread: CODELOADER, LMK61E0M, LMX2592

I have downloaded and used the software to create the registers. I am using CodeLoader V4.20.2 off-line. The program works fine. I am using a PIC32MK1024GPK064 I2C3 port to drive the LMK61E2 with my own software.

I am querying the programming of the oscillator LMK61E2. I am using document SNAS674B-SEPETEMBER 2015 REVISED FEBRUARY 2017.

 When I bought some LMK61E IC’s from Digikey, I was shocked to find out they were not programmed, they output nothing! Surely Ti should ship them to output some frequency?

  1. Page 21, 8.5.4 WRITE SRAM.

“To successfully program the SRAM, the complete base array and at least one page should be written.” How do you define base array and one page? I cannot find any definition anywhere?

To what register addresses would these correspond? Please give many examples.

  1. When I read the registers with an MCU continuous block read function, of course I end up reading many in-between ‘non-program’ registers, e.g. reg 04 to 07 and 11 to 15. How do I deal with these in-between registers when I write?

Do I write 00 – 02; stop; then write 08-09; stop; write 16-17; stop; write 21-39; stop. Etc. What is a base array and a page?

 Any more application notes other than the on-line documents would be greatly appreciated.

Thank-you in advance for any replies.

  • Hi Deryck, 

    The factory programming of the LMK61E2 should output 156.25 MHz LVPECL by default. Can you provide a schematic of the circuit? 

    The recommended sequence to program the device is to write all the registers, issuing a stop command to skip all of the non-program registers as you described if you're using the block write feature. At this point, you can verify that the output of the device is behaving as expected. After this, you can write a "1" to bit 6 of R49 to copy the register contents into SRAM and follow the steps in section 8.5.5 to finally write the SRAM contents into the EEPROM for the final programming of the device.  I can double check with our team what exactly is meant by the base array and page, but I don't think that should be an issue as long as you write all the user programmable registers before writing the SRAM. 

    One other note is that CodeLoader has been replaced with the LMK61xx Oscillator programming tool for LMK61E02, and TICSPro for LMK61E0M. However, as long as you generating a valid register configuration it shouldn't be an issue to use CodeLoader. 

    Regards, 

    Connor 

  • Dear Connor,

    Second reply. (My first reply email was returned, file size too large.)

    Let’s try again.

    Dear Connor,

    Thank-you for the prompt reply, it makes such a good impression!

     

    Yes, I can supply the schematic and more. Please open RFOsc1-Synth.pdf:

     

    Please note:

    1. LMK61E is U5 on left hand side.
    2. Total schematic is part of a bigger project. Separately, not shown is the control PCB with the PIC32MK1024GPK064 connected to P1 at bottom.

    U3 LMX2592 is not yet soldered in. All passives surrounding U5 are soldered. All power supply regulators are fitted and measured.

    All digital voltages are 3.3V. U5-6 was measured 3.3V. Most passives are 0402. Decoupling capacitors are 0603 or Tantalums, local adjacent decoupling 0.1uF capacitors eg C23, C27, C42 are 0402.

    R30 (12K) was replaced with a link to GND. ADD (U5-2) is now grounded, connect U5-2 to U5-3.

    Not shown are the I2C3 connections SDA and SCL from P1-19 and 20, to U5-7 and 8. Connection is made at I2C3 SCL >= 100KHz (~106KHz).

    1. The I2C3 connections all work fine because I managed to read the LMK61E2 registers R0 – R73 using my PIC32MK. Handshake acknowledges from LMK61E2 (I2C3 slave) and PIC32MK (I2C3 master) all good and tested with a 16 channel logic analyser.
    2. Please open the Excel spread sheet TiData.xlsx

    Address

    Pic-Read

    Ti-Gen

    Ti-Gener; 156M25

    RESET

    dataC[0]

    0x10

    0x10

    0x10

    0x10

    VNDRID[15:8]

    dataC[1]

    0x0B

    0x0B

    0x0B

    0x0B

    VNDRID[7:0]

    dataC[2]

    0x33

    0x33

    0x33

    0x33

    ProdID[7:0]

    dataC[3]

    0x02

    0x00

    REVID[7:0]

    dataC[4]

    0x83

    dataC[5]

    0x1E

    dataC[6]

    0x0B

    dataC[7]

    0x00

    dataC[8]

    0xB0

    0xB0

    0xB0

    0xB0

    SLAVEADR[7:1]

    dataC[9]

    0x00

    0x00

    0x00

    0x00

    EEREV[7:0]

    dataC[10]

    0x01

    0x01

    R;PLL;R;EN;AUT

    dataC[11]

    0x00

    dataC[12]

    0x42

    dataC[13]

    0xA3

    dataC[14]

    0x20

    dataC[15]

    0x05

    dataC[16]

    0x03

    0x00

    0x00

    0x00

    R;XO

    dataC[17]

    0x8C

    0x80

    0x80

    0x00

    XO

    dataC[18]

    0x00

    dataC[19]

    0x19

    dataC[20]

    0x00

    dataC[21]

    0x01

    0x01

    0x01

    0x01

    DIF

    dataC[22]

    0x00

    0x00

    0x00

    0x00

    R;OUTDIV

    dataC[23]

    0x20

    0x20

    0x20

    0x20

    OUTDIV

    dataC[24]

    0x00

    0x00

    0x00

    dataC[25]

    0x00

    0x00

    0x00

    0x00

    R;PLLN

    dataC[26]

    0x32

    0x32

    0x32

    0x64

    PLL_NDIV

    dataC[27]

    0x00

    0x00

    0x00

    0x00

    R;PLLNUM

    dataC[28]

    0x00

    0x00

    0x00

    0x00

    PLLNUM

    dataC[29]

    0x00

    0x00

    0x00

    0x00

    PLLNUM[7:0]

    dataC[30]

    0x00

    0x00

    0x00

    0x00

    R;PLLDEN[21:16]

    dataC[31]

    0x00

    0x00

    0x00

    0x00

    PLL_DEN[15:8]

    dataC[32]

    0x00

    0x01

    0x01

    0x00

    PLL_DEN[7:0]

    dataC[33]

    0x0C

    0x0C

    0x0C

    0x0C

    R;PLL_D[1:0];PLL_OR[1:0]

    dataC[34]

    0x28

    0x28

    0x28

    0x24

    R;PLL_D;R;PLLCP[3:0]

    dataC[35]

    0x03

    0x03

    0x03

    0x03

    R;PLL_CP

    dataC[36]

    0x08

    0x08

    0x08

    0x28

    PLL_LF_R2[7:0]

    dataC[37]

    0x00

    0x00

    0x00

    0x00

    R;PLL_LF_C1[2:0]

    dataC[38]

    0x00

    0x00

    0x00

    0x00

    R;PLL_LF_R3[6:0]

    dataC[39]

    0x00

    0x00

    0x00

    0x00

    R;PLL_LF_C3[2:0]

    dataC[40]

    0x08

    dataC[41]

    0x29

    dataC[42]

    0x05

    0x00

    R;

    dataC[43]

    0x10

    dataC[44]

    0x10

    dataC[45]

    0x10

    dataC[46]

    0x10

    dataC[47]

    0xDB

    0x00

    0x00

    0x00

    dataC[48]

    0x01

    0x00

    0x00

    0x00

    dataC[49]

    0x10

    0x10

    0x10

    0x10

    dataC[50]

    0xDB

    0x00

    0x00

    0x00

    dataC[51]

    0x00

    0x00

    0x00

    0x00

    dataC[52]

    0x00

    0x00

    0x00

    0x00

    dataC[53]

    0xB0

    0x00

    0x00

    0x00

    dataC[54]

    0x00

    dataC[55]

    0x03

    dataC[56]

    0x15

    0x00

    0x00

    0x00

     

    The first column is the LMK61E2 register address.

    The second column “Pic-Read” is the actual data read from the LMK61E2, columns A and B automatically created by MPLAB XIDE emulation. MPLAB and my I2C3 software reads all of the “in-between” registers (e.g R10 – RR15) as zero.

    Columns C (Freq forgotten) and D (Freq = 156.25 MHz) were generated by the Ti APP CodeLoader. I manually spaced the data according to the correct register addresses.

    Column F = “RESET”  are the RESET values according to the datasheet.

    1. In software XC32, I use the SlaveADD (type char) in 8-bit mode, then set or clear bit 0 for Read or write. Software is easier to write. XC32-Software function I2C3_transmit(char) sends 8-bits.
    2. EEREV R9, row 11 all columns are still = 0. No EEPROM writes yet.
    3. R16 and R17 XO_CAPCTRL_BY1 are different. Why?
    4. R21 and R22 are all the same. Outputs all turned on and type LVPECL.
    5. R32 PLL_FRACDEN_BY0 row34 are different. All other frequency control parameters are the same.
    6. R50. (NVMLCRC) The datasheet does not describe R50. Is this an error? Anyhow, there is a difference.
    7. R53. RAMDAT. I am not sure of the significance of this difference?
    8. R56. NVMUNLK. I am not sure of the significance of this difference?
    9. Outputs at R27 and R28 measured with Hantek DSO5202P oscilloscope [200MHz] (10:1 probes.)

     

    Thank-you for your response, in anticipation.

     

    Regards

    Deryck G. Lauf.

  • Hi Deryck, 

    It looks like your schematic (named RFOsc1-Synth.pdf) didn't go through, can you try resending it? Here are a few comments about your register configuration:

    1. R16 and R17 XO_CAPCTRL_BY1: These should be reset to the default values of 0x0 for R16 and 0x80 for R17. It's possible that it's pulling the XO frequency too far and making it difficult for the PLL to lock correctly. Do these values get reset after you write them?

    2. R32: Since you're in integer divide mode this may not be as important, but I would still recommend reprogramming to 0x01 since that's what the tool recommends for the default profile. 

    3. R50: Even though there's a difference, I wouldn't worry since the device is most likely resetting these bits after you write 0x00 for some internal uses.

    4. R53: These are just the last bits that were written into SRAM, most likely not important here 

    5. R56: After an EEPROM write sequence is finished, this should be rewritten to 0x00 to avoid rewriting the EEPROM with unwanted values. I expect this could be causing some unwanted behavior. 

    Besides R16, R17, and R56, I didn't notice anything else that could be causing issues in your register settings. Can you provide the read values of R66 and R72 as well? This can tell us if the PLL is locked or not. If it's not locked, you can try writing a '1' to bit 1 of R72 to reset the PLL. 

    Regards, 

    Connor