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.

BQ79600-Q1: Device not waking up

Part Number: BQ79600-Q1
Other Parts Discussed in Thread: BQ79656-Q1

Hi team,

My customer is using the BQ79600-Q1 and BQ79656-Q1 EVMs in a ring architecture, paired with a Renesas RH850 MCU. They are facing issues bringing up the device, with DVDD not powering up on our EVM itself. The D2 LED is not lighting up either.

What can be the issue here?

Thank you,

Akshar

  • Hi team,

    They have shared the script and their SPI communication scope captures:

    uint8_t u8BQ79600_WakeUp(void)
    {
    uint16_t u16Lp = 0, u16Lp1 = 0;
    uint8_t u8Timer_Count = 0;
    uint8_t u8WakeUp_Flag = 0;

    defBQ79600_nCSPinClear;
    for(u16Lp1 = 0; u16Lp1 < 19; u16Lp1++); // 1 uSec

    defBQ79600_MOSIPinClear;
    vTimer_StartTAUD0_CH0(); // Timer start for 250 uSec

    while(1)
    {
    if(u8Main_Timer_250uS == TRUE)
    {
    u8Timer_Count++;
    u8Main_Timer_250uS = FALSE;
    if(u8Timer_Count >= 12) // 2.75 mSec
    {
    u8WakeUp_Flag = TRUE;
    u8Timer_Count = 0;
    vTimer_StopTAUD0_CH0();
    }
    }

    if(u8WakeUp_Flag == TRUE)
    {
    defBQ79600_MOSIPinSet;
    for(u16Lp1 = 0; u16Lp1 < 19; u16Lp1++); // 1 uSec

    defBQ79600_nCSPinSet;

    for(u16Lp = 0; u16Lp < 5; u16Lp++) // 5 mSec
    for(u16Lp1 = 0; u16Lp1 < 19000; u16Lp1++); // 1 mSec
    u8WakeUp_Flag = FALSE;
    u8Main_Timer_250uS = FALSE;
    vTimer_StartTAUD0_CH0_1mSec();
    return TRUE;
    }
    }

    }

    The scope captures are as below: Green - CS, Yellow - MOSI

    Thank you,

    Akshar Gandhi

  • Hi Akshar,

    From the picture sent, it seems the time division is 500uS per division. If true, then the ping sent is 3mS long. Maybe this is right outside of 3mS? Try reducing this to 2.75mS

    if(u8Timer_Count >= 12) // 2.75 mSec
    {
    u8WakeUp_Flag = TRUE;
    u8Timer_Count = 0;
    vTimer_StopTAUD0_CH0();
    }

    If each count is 250uS, the >= 12 would mean it would stay down 250uS for 0, 1, 2, 3... 11, 12. This would be 13 counts. The first count is most likely for first pulling down RX, and the remaining 12 counts is 12*250uS = 3mS.  Therefore, could this be changed to either 11 or change >= to >   ?

    Regards,

    David