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.

LMK5B12204: Is it possible to "brick" a device via registers or writing to EEPROM?

Part Number: LMK5B12204


Tool/software:

If so, is there a way to unbrick it?

I've gotten myself into a situation where I now have 3 devices (non EVM) that, regardless of the register settings, just output random bursts of noise.  I can read back the registers and, except for the status registers, they match what was written but the devices still just output noise and the status registers all show basically loss of everything.  This is in ROM mode just writing the registers from a host after each power cycle.

     LOS_FDET_XO false           LOL_PLL2 true           LOL_PLL1 true            LOS_XO true
       LOPL_DPLL true           LOFL_DPLL true               HIST false           HLDOVR true
       REFSWITCH false        LOR_MISSCLK false          LOR_FREQ false          LOR_AMP false
LOS_FDET_XO_INTR false      LOL_PLL2_INTR true      LOL_PLL1_INTR true       LOS_XO_INTR true
  LOPL_DPLL_INTR true      LOFL_DPLL_INTR true          HIST_INTR false      HLDOVR_INTR true
  REFSWITCH_INTR false   LOR_MISSCLK_INTR false     LOR_FREQ_INTR false     LOR_AMP_INTR false
 MUTE_APLL2_LOCK false   MUTE_DPLL_PHLOCK false  MUTE_DPLL_FLLOCK false  MUTE_APLL1_LOCK false
  PLL1_VM_INSIDE true
  SECREF_VALSTAT false     PRIREF_VALSTAT false

Every once in a while I find some unknown combination of settings that restores operation but when I program the EEPROM (write registers, SRAM commit) with those same registers and restart in EEPROM mode, I'm back to the bad state and even going back to ROM mode and writing the exact same registers again fails to restore operation again.

This was working fine last week before and after the TICS Pro upgrade to v1.7.9.0 but started earlier this week after I tried to write the registers that mute the output until DPLL lock to EEPROM.  See LMK5B12204: Can't seem to get outputs to mute before lock

I'm at a loss.  Any insight would be appreciated.

  • Hi George,

    It is not likely to brick the EEPROM as the important calibration registers are write-protected.

    Can you try programming the EEPROM with MUTE disabled? Such as the following tcs file:

    LMK5B12204_XO=12.8M_REF=dontcare_MUTE=disabled.tcs

    Note that the REF in the above tcs file does not match your original settings because all we want to see are stable outputs right now.

    Regards,

    Jennifer

  • Didn't help...  Here's the process I followed...

    • In TICSPro 1.7.9.0, I opened the tcs file then immediately exported the hex register values
    • Power cycled the device to ROM mode (HW_SW_CTRL pulled high)
    • Used my python program to write the file via I2C
      • Masking out register 12 with 0xA7 (val &= ~0xA7)
      • Writing 0x00 for registers 157, 164
      • Skipping registers 353-435
      • Writing 0x80 to register 12
      • Writing 0x00 to register 12

    I still get random noise on OUT3

                RESET_SW false              SYNC_SW false       SYNC_AUTO_DPLL false       SYNC_AUTO_APLL false
               SYNC_MUTE false
             LOS_FDET_XO false             LOL_PLL2 true              LOL_PLL1 true                LOS_XO false
               LOPL_DPLL true             LOFL_DPLL true                  HIST false               HLDOVR true
               REFSWITCH false          LOR_MISSCLK false             LOR_FREQ false              LOR_AMP false
        LOS_FDET_XO_INTR false        LOL_PLL2_INTR true         LOL_PLL1_INTR true           LOS_XO_INTR true
          LOPL_DPLL_INTR true        LOFL_DPLL_INTR true             HIST_INTR false          HLDOVR_INTR true
          REFSWITCH_INTR false     LOR_MISSCLK_INTR false        LOR_FREQ_INTR false         LOR_AMP_INTR false
         MUTE_APLL2_LOCK true      MUTE_DPLL_PHLOCK false     MUTE_DPLL_FLLOCK false      MUTE_APLL1_LOCK true
          PLL1_VM_INSIDE true
          SECREF_VALSTAT false       PRIREF_VALSTAT false
      PRIREF_MISSCLK_DET 29
     PRIREF_EARLYCLK_DET 21
           PLL1_NUM_STAT 0
           

    I'm going to try programming the EEPROM next.

  • Still didn't help...  Here's the process I followed...

    • In TICSPro 1.7.9.0, I opened the tcs file then immediately wen to to the EEPROM page and exported the EEPROM Instructions
    • Power cycled the device to ROM mode (HW_SW_CTRL pulled high)
    • Used my python program to write the file via I2C
      • Masked out register 12 with 0xA7 (val &= ~0xA7)
      • Wrote all other registers in the file.
      • Wrote 0x40 to 157
      • Wrote 0xEA to 164
      • Wrote 0x03 to 157
      • Waited for 157 to clear to 0x00 (happened almost immediately)
      • Wrote 0x00 to 164
      • Powered off
      • Pulled down HW_SW_CTRL
      • Powered on.

    I still get random noise on OUT3

    I'm going to try programming the EEPROM via SRAM next.

  • Writing EEPROM via SRAM worked!

    • In TICSPro 1.7.9.0, I opened the tcs file then immediately wen to to the EEPROM page and exported the EEPROM Map
    • Power cycled the device to ROM mode (HW_SW_CTRL pulled high)
    • Used my python program to write the file via I2C
      • Read all EEPROM_IMG_IDX values into an array from the file
      • Write 0 to 157 and 160
      • Block wrote all 249 values to register 162
      • Wrote 0xEA to 164
      • Wrote 0x03 to 157
      • Waited for 157 to clear to 0x00 (happened almost immediately)
      • Wrote 0x00 to 164
      • Powered off
      • Pulled down HW_SW_CTRL
      • Powered on.

    Got a normal but unsynchronized 10MHz as expected.

    As a test, I programmed the EEPROM again using method 1 above and got the noise output.  Programming again via SRAM brought it back to normal.

    I don't think I got anything wrong in the method 1 sequence.  I followed the instructions in sections 9.5.5 and 9.5.6.1 exactly.  In any case, I've recovered my devices and can program successfully via SRAM.

    Thanks again Jennifer!!