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.

TPS929120-Q1: Eeprom programming

Part Number: TPS929120-Q1
I have to program the eeprom of the device TPS929120-Q1.
I'm using the mode with Ref pin high, address 0x0
but when I write the register "conf_misc7" with the value 0x1 this register remains 0x0. If I try to write 0x2, it works, but to enable the eeprom writing I must write 0x1.
Follow my sequence:
    'write 0x09 to conf_eepgate
    If fRegisterWrite(0, &H65, &H9) <> 0 Then
      MsgBox("ricezione 1: FAIL")
      Return (1)
    End If

    'write 0x02 to conf_eepgate
    If fRegisterWrite(0, &H65, &H2) <> 0 Then
      MsgBox("ricezione 5: FAIL")
      Return (1)
    End If

    'write 0x09 to conf_eepgate
    If fRegisterWrite(0, &H65, &H9) <> 0 Then
      MsgBox("ricezione 10: FAIL")
      Return (1)
    End If

    'write 0x01 to conf_eepgate
    If fRegisterWrite(0, &H65, &H1) <> 0 Then
      MsgBox("ricezione 15: FAIL")
      Return (1)
    End If

    'write 0x02 to conf_eepgate
    If fRegisterWrite(0, &H65, &H2) <> 0 Then
      MsgBox("ricezione 20: FAIL")
      Return (1)
    End If

    'write 0x00 to conf_eepgate
    If fRegisterWrite(0, &H65, &H0) <> 0 Then
      MsgBox("ricezione 25: FAIL")
      Return (1)
    End If

    'set bit conf_eepmode (registro conf_misc7)
    If fRegisterWrite(0, &H63, 1) <> 0 Then
      MsgBox("ricezione 30: FAIL")
      Return (1)
    End If
If I try to use the mode with Ref pin low I have the register 0x71 (Flag1) = 0x1 (flag_eepcrc).
To solve this error I tried to read the register 0x77 (Flag7) and write the register 0xCF (Eepm15) with the number returned from register 0x77 but the register 0xCF doesn't update.
Could you help to solve these issues?
Thank you, regards.
  • 0x2

    Not sure what happened. Please check if Conf_lock is unlocked before starting program sequence. 

    While entering the EEPROM programming mode, the sequential command writing cannot be interrupted. Otherwise the device will not enter EEPROM programming mode successfully.

    Also, please make sure that All EEPROM shadow registers be written to target value before burning. 

    There is EEPROM configuration tool in product folder that might helps. 

    TPS92912x-Q1 EEPROM Configuration Tool (Rev. A)

    You can clear CRC flag error with CLR_FAULT. To program Eepm15, you need to run into programming mode 

  • Hello,

    I try to explain me better:

    problem 1 - Ref pin High - I cannot write 0x1 into the register 0x63. I always unlock the register, follow my write register sequence:

    'unlock registro
    rValue = fRegisterRead(pDeviceAddress, &H61)
    rTxByte(0) = &H55 'sync
    rTxByte(1) = CByte(pDeviceAddress + 128) 'device address + bit di write
    rTxByte(2) = &H61 'register address (conf_lock)
    rTxByte(3) = &H0 'dato
    rTxByte(4) = CByte(Crc8Tps(Chr(rTxByte(1)) & Chr(rTxByte(2)) & Chr(rTxByte(3)), 3))
    rpRs232Port1.Write(rTxByte, 0, 5)
    rRxByte = fRs232RxString(100)
    rRxByte = fStringToHex(rRxByte)
    If Len(rRxByte) <> 4 Then Return (1)
    rValue = fRegisterRead(pDeviceAddress, &H61)
    If rValue <> 0 Then
    MsgBox("unlock register: FAIL")
    Return (1)
    End If

    'write registro
    rValue = fRegisterRead(pDeviceAddress, pRegAddress)
    rTxByte(0) = &H55 'sync
    rTxByte(1) = CByte(pDeviceAddress + 128) 'device address + bit di write
    rTxByte(2) = CByte(pRegAddress)
    rTxByte(3) = CByte(pByteToWrite)
    rTxByte(4) = CByte(Crc8Tps(Chr(rTxByte(1)) & Chr(rTxByte(2)) & Chr(rTxByte(3)), 3)) 'crc
    rpRs232Port1.Write(rTxByte, 0, 5)
    rRxByte = fRs232RxString(100)
    rRxByte = fStringToHex(rRxByte)
    If Len(rRxByte) <> 4 Then Return (1)
    rValue = fRegisterRead(pDeviceAddress, pRegAddress)
    sFileTxtAppend("rRegAddress = " & pRegAddress & " - pByteToWrite = " & CStr(pByteToWrite))
    sFileTxtAppend("rRegAddress = " & pRegAddress & " - rRxByte = " & rRxByte)
    If rValue <> pByteToWrite Then
    MsgBox("write register: FAIL")
    Return (1)
    End If

    Which is the time out to run the eeprom programming sequence?

    problem 2 - Ref pin Low - I have the eeprom crc error flag high and I cannot set it to zero. I tried to clear the error and write the new crc into eeprom without success.

    Thank you, regards.

  • For problem 1, I wonder if you can offer data stream on TPS929120 RX/TX pin captured by digital analyzer?  It may help verify if sequence is correct. 

    For problem 2, do you mean that with External Device address, you can successfully program EEPROM although CRC is not correct? When you write the new crc into eeprom, do you also follow program sequence? 

    I attach program sequence as below,  While entering the EEPROM programming mode, the sequential command writing cannot be interrupted. Otherwise the device will not enter EEPROM programming mode successfully. 

    EEPROM Programming with Chip Select (Left) and with External Address (Right)

  • tps comunication.pdf

    Hi, Attached you can find the log of my communication. I tried a new device but I have same problem, cannot set bit conf_eepmode (register conf_misc7).

    Thank you, regards.

  • It seems that the log is not attached. please check 

  • 7723.tps comunication.pdf

    I attached again the file, regards.

  • Please exactly follow the sequence listed in the datasheet and the sequential command writing cannot be interrupted. Otherwise the device will not enter EEPROM programming mode successfully. 

    For example, after writing 09h to CONF_EEPGATE, next frame you need to write 02h to CONF_EEPGATE .  

    The file you shared shows that the sequence was interrupted by other command