LTC4281 EEPROM problem

Hello,

we have a problem with LTC4281. In EEPROM stored 0x55, 0xAA, 0x55, 0xAA ..... values, and it can not be changed over i2c.

RAM registers are changing after i2c transactions by MCU just fine, but EEPROM registers ignore it.

We checked WP pin, it is pulled-down.

Could you please explain how to write to EEPROM registers?

  • 0
    •  Analog Employees 
    on Jun 25, 2018 5:20 AM

    Hi Sanal,

    Thank you for your interest in ADI products.

    I will move your question to the Power Community as they can help you more in LTC4281.

    Thank you,

    Aaron

  • 0
    •  Analog Employees 
    on Jun 25, 2018 10:16 PM

    Hi Sanal,

        It sounds like you may be writing too fast for the EEPROM. Note that the EEPROM takes about 2ms to write, during which time the EEPROM_BUSY bit in the STATUS register will be set. You cannot write to other EEPROM registers until the previous write completes.

    Please verify that you are waiting between EEPROM writes.

    Thanks!
      Nathan

  • Hi, Nathan!

    Thanks for your response.

    After each eeprom write operation, there was a 50 ms delay.

    I have checked eeprom_busy bit, it was 0 immediately after start eeprom write operation.

    I was getting ACK after every time I write EEPROM registers but it did not work. 

  • Hi, Nathan,

    1. We have 3 LTC4281s and all of them have the same problem and have 0x55, 0xAA, 0x55, 0xAA default values in eeprom.

    2. We are sure that WP is pulled to GND.

    3. All our chips was shipped with 0x55, 0xAA, 0x55, 0xAA values in eeprom.

    4. We suppose that this "checkerboard pattern" was stored at factory, for eeprom testing.

    5. We are trying to write datasheet default values for all registers, including EE_CONTROL.

    6. All writes to eeprom registers are rejected, including EE_SCRATCH. We tried writing to a single SCRATCH register, and it is rejected too.

    7. For excepted time delay we checked bit eeprom_busy in infinite loop, until it is resetting, but in debug we see that this bit is not setted. So, we changed loop for time delay, but it is still not working.

    8. We writing to one register at time, but we tried block write command as well but it did not help.

    9. We use microcontroller unit stm32 with i2c speed 100 kHz.

    LTC4281 that we have has package marking as following:

    5H

    4281

    N0665     - may be it could help

     

    Thank you

  • 0
    •  Analog Employees 
    on Jun 26, 2018 9:57 PM

    Hi Sanal,

    It sounds like the part is behaving as if WP is active.

    Let me ask some clarifying questions:

    1) Is this a problem with one board or more than one?

    2) Are you sure that the WP pin is soldered well, and actively pulled to GND?

    3) You stated "In EEPROM stored 0x55, 0xAA, 0x55, 0xAA." Does this mean that the part accepted those values and won't change after, or did the part NOT accept those values initially? In other words, have you EVER successfully programmed the EEPROM registers on your board?

    4) Have you tried other bit patterns? Why are you using the checkerboard pattern? It is not a functional state of the part.

    5) What value are you writing to the EE_ADC_CONTROL register? Is it possible that you are causing a reboot with the REBOOT bit?

    6) Are writes to ALL EEPROM registers rejected, including to EE_SCRATCH? Have you tried writing to a single SCRATCH register?

    7) When you say eeprom_busy "was 0 immediately after start eeprom write operation," do you mean you read the STATUS register immediately, or did you wait 50ms before reading STATUS?

    8) Are you writing to one register at a time, or doing a block write command?

    9) What mechanism are you using to program the part (board controller micro, aardvark host, LTpowerPlay, other)?