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: After eeprom programing stoped responding

Part Number: TPS929120-Q1

Hello

I have issue with my tps929120 on your evalboard.

TPS929120 stoped responding after I tried to made eeprom programing

I wrote function as below

void Unlock_EEPROM_TPS(uint8_t adress)
{
    uint8_t temp1, temp2;

    temp1=Read_data_TPS(adress, CONF_EEPMODE);
    temp2=Read_data_TPS(adress, CONF_STAYINEEP);

  
    Write_data_TPS(adress, CONF_EEPGATE, 0x00);
    Write_data_TPS(adress, CONF_EEPGATE, 0x02);
    Write_data_TPS(adress, CONF_EEPGATE, 0x01);
    Write_data_TPS(adress, CONF_EEPGATE, 0x09);
    Write_data_TPS(adress, CONF_EEPGATE, 0x02);
    Write_data_TPS(adress, CONF_EEPGATE, 0x09);

    Write_data_TPS(adress, CONF_EEPMODE, temp1|0x01);
    Write_data_TPS(adress, CONF_STAYINEEP, temp2|0x80);

}


void Write_EEPROM_TPS(uint8_t adress)
{
    uint8_t temp;

    temp=Read_data_TPS(adress, CONF_EEPPROG);
    Write_data_TPS(adress, CONF_EEPPROG, temp | 0x04);

    delaymsTPS(300);
}


void Lock_EEPROM_TPS(uint8_t adress)
{
    uint8_t temp=Read_data_TPS(adress, CONF_STAYINEEP);
    Write_data_TPS(adress, CONF_STAYINEEP, temp&(~0x80));
}


void EEPROM_FAIL_STATE(uint8_t adress, uint16_t FS0, uint16_t FS1)
{
    Write_data_TPS(adress, 0xC0, (uint8_t)FS0);
    Write_data_TPS(adress, 0xC1, (uint8_t)(FS0>>8));
    Write_data_TPS(adress, 0xC2, (uint8_t)FS1);
    Write_data_TPS(adress, 0xC3, (uint8_t)(FS1>>8));
}

In main function I call this function like below:


               
                        ConFSMode eepstruct;
                         Unlock_EEPROM_TPS(0x00);
                         TIMERUS=2000;
                         while(TIMERUS);
                         EEPROM_FAIL_STATE(0x00, 0xff0, 0xff);

                         for(int i=0; i<12; i++)
                         {
                            if(i%2) eepstruct.EEPI=63; else eepstruct.EEPI=10;
                            eepstruct.OUT=i;
                            TPS_EEP_Setup(0x00, &eepstruct);
                         }
                         TIMERUS=2000;
                                                 while(TIMERUS);
                         Write_EEPROM_TPS(0x00);
                         TIMERUS=2000;
                                                 while(TIMERUS);

                                                 Lock_EEPROM_TPS(0x00);

                         TPS_Force_FS(0x00);
                        

                         while(1);

And after turn off power supply and turn on tps stopped responding.

Did i damage IC and now i have to soldered new TPS929120 or it is  some way to trying reset tps.

I will be glad for respond.

Thank you in advance

  • Hi,

    Can you tell us the register you changed and the new value?

    And we can check about if there are some configuration problem.

    1. Firsty I using external adress. 0x00
    2. I unlocked eeprom so i sent to driver.

    I read register

    0x63 and put value to temp1

    Next i read register 0x62  and put value to temp2

     

    To register 0x65 -> 0x02

    Next         0x65 -> 0x1

    Next          0x65 -> 0x9

    Next         0x65  -> 0x2

    Next         0x65  ->  0x9

     

    Next i wrote

    To 0x63 -> temp1 | 0x01    (temp1 is only for mask previous value)

    Next 0x62 -> temp2 | 0x80  (temp2 is only for mask previous value of register)

    Next I wait 200ms

    Next I sent value for Fail-state0 and fail state1 register for example

    0xC0->0xff

    0xC1->0x00

    0xC2->0x0f

    0xC3 -> 0xf0

     

    Next i fill the EEPI (Starting from 0x80) register for all 12 chanels some value

    Next i fill EEPP (starting from 0xA0) register some value.

     

    delay wail 200ms

    Next i send comand to write to eeprom (program eeprom)

     

    Read register registe 0x64 to temp3 (temp3 is also for mask value of all register)

    Next i sent

    0x64 -> temp3 | 0x04

     

    Delay 300ms

    Delay 200ms

     

    I lock eeprom

    Read 0x62 to temp4 (variable for mask)

    Send 0x62 -> temp4&(~0x80) (so i set MSB bit to 0)

     

     

    After this all i forced to go to fail state

    Read to variable temp5 register 0x60

    And write to register 0x60 -> 0x20|temp5

    While(1);  // stop program for debuging

     

    After I maded this i don’t have any respond from driver. Nothing respond -> no respond Status and CRC. Totaly nothing L

  • I also noticed that on evalboard the red EER led now i lighting continoious

  • I did it. I unlocked tps using REF eeprom metod writing because somehow his address was changed accoroding to that i wrote before. I don't know where is the problem that the tps929120 goes to change his adress. Maybe i shouldn't use this masks and temperoary variables. Please to help and review to what i wrote before. Thank you in advance

  • I resolved my issue. The problem was in that is not allowed to do mask variables like i wrote. Thank you for help. Regards

  • Hi, thank you for you reply. And it is glad to hear that you solve it. I will explain what I will check about this part.

    1) for the address part, actually there 4 bits to decide the value of the 929120, and three can be chosen by ADD pin. the HIGH bit is in the chips as EEPM6(0xC6h)_BIT3. If you change this part the address will be changed.

    2) for EEPM10, it will influence the value of watchdog timer. So please be careful about this part. You may need to change the baud rate after changing it.