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.

TPS65381A-Q1: TPS65381 was stuck in a safe state when power-on

Part Number: TPS65381A-Q1

Hi expert,

 

To summarize the problem:

 

Background:

Customer wanted the TPS65381A to always work in the diagnostic state instead of the active state, but found that when the power was turned on, the TPS65381A would be stuck in a safe state.

Compared with the previous normal design, the main difference is that IGN wake-up is now used instead of CAN wake-up

 

Progress:

I checked the power on and stuck in a safe state. There are the following possibilities:

  1. Diagnostic Status Timeout          //  Most cars work fine, so this is ruled out
  2. ABIST, LBIST, or both failed to start// It may be the reason that it is stuck in a safe state
  3. SPI failure // Not sure, is there a good way to verify it?

 

  1. DIAGNOSTIC STATE TIME-OUT AND(DIAG_EXIT_MASK or DIAG_EXIT) Was Not Set  //  Most cars work fine, so this is ruled out
  2. (CFG_CRC_ERR = 1 AND CFG_CRC_EN is cleared to 0)
  3. EE_CRC_ERR
  4. ABIST_ERR    // It may be the reason that it is stuck in a safe state, refer the follow test data
  5. LBIST_ERR
  6. (WD_FAIL and ERROR_PIN_FAIL flags were not cleared to 0 before setting DIAG_EXIT)  //It has been set in the client software

 

Please help to comment.

 

The initialization software is as follows:

 

Void TPS65381Init(void)

{

Uint16 Temp  = 0;

 

Temp = ReadData(RD_SAFETY_STAT_5);              

if (Temp  == 0x07)                               //diagnostic state

{

    Temp = ReadData(RD_SAFETY_FUNC_CFG);         // Read register RD_SAFETY_FUNC_CFG value

    Temp = (Temp & 0xF7) | 0x10;                 // Watchdog monitor clear, latch IGN pin

    WriteData(WR_SAFETY_FUNC_CFG, Temp );        // Disable watchdog reset function, latch IGN pin

 

    WriteData(WR_SAFETY_ERR_STAT, 0x00);         // Clear WD_FAIL and ERROR_PIN_FAIL bits

    WriteData(WR_DIAG_CFG_CTRL, 0x82);           //

    EnVSOUT1();                                  // Enable VSOUT1 

    EnDRV();                                     // Enable ENDRV  

    WriteData(WR_DIAG_MUX_SEL, 0x20);            // VBATP

    WDConfig(0x7F,0x1F);      // Configure the time to open the watchdog and close the watchdog of the TPS65381

    Temp = ReadData(RD_SAFETY_CHECK_CTRL);

    WriteData(WR_SAFETY_CHECK_CTRL, Temp | 0x02);      // mask exit diagnostic

}

}

 

The following is the test data, please help to analyze:

  1. Why is it stuck in a safe state? #1, Could this be caused by a faulty watchdog? The details here might be?
  2. Why are the test results of #2 and #3 so different?

 

Register

#1 Test data:

Stuck in a safe state

when powered on

#2 Test data on a

normal Single board

#3 Test data

on a normal car

VMON_STAT_1 Register

0000 0000

0000 0000

0000 0000

VMON_STAT_2 Register

0000 0000

0000 0000

0000 0000

SAFETY_STAT_1 Register

0000 0000

0000 0000

0000 0000

SAFETY_STAT_2 Register

0000 0111

0000 0000

0000 0111

SAFETY_STAT_3 Register

0000 1100

0000 0000

0000 0000

SAFETY_STAT_4 Register

0000 0000

0000 0000

0000 1100

AFETY_STAT_5 Register

0000 0100

0000 0111

0000 0111

SAFETY_ERR_STAT Register

0000 0010

0000 0000

0011 0000

SAFETY_CHECK_CTRL Register

0011 0100

0011 0111

0011 0111

SAFETY_FUNC_CFG Register

1011 0101

1011 1101

1011 0101

SAFETY_BIST_CTRL Register

0000 0000

0000 0000

0000 0000

DIAG_CFG_CTRL Register

1000 0010

1000 0010

1000 0010

DIAG_MUX_SEL Register

0010 0000

0010 0000

0010 0000

SAFETY_CFG_CRC Register

0001 0000

0001 0000

0001 0000

SAFETY_ERR_CFG Register

0000 0000

0000 0000

0000 0000

WD_STATUS Register

0000 0000

0000 0000

0000 0000

WD_TOKEN_FDBK Register

0000 0000

0000 0000

0000 0000

 

For #1,  when an ABIST error occurs and find out why WD_ERR is not set to 1 when the WD_FAIL_CNT count is 7?