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.

BQ76PL455A-Q1: Questions concerning a custom implementation of the software

Part Number: BQ76PL455A-Q1
Other Parts Discussed in Thread: BQ76PL455A

Dear all,

My name is Miguel and I am trying to make a custom implementation of the BQ76PL455A chip. I have developed several electronic boards and the latest version has already been tested with the battery packs we will be using and connecting to the GUI everything looks to be working, even after connecting several of the boards in daisy cahin (using only the sensing and balancing of 8 cells per board and IC).

I will then be using an STM32 microcontroller to control the whole BMS system including the communications with the chips. I have already looked at the several example codes that are available for this IC, but I have several questions that are not too clear when comparing the code to the datasheet.

1. In the sys_main.c file of the simplest example code you provide, there's the following sequence of functions within the main function

WakePL455();
CommClear();
CommReset();

// The wake tone will awaken any device that is already in shutdown and the pwrdown will shutdown any device
// that is already awake. The least number of times to sequence wake and pwrdown will be half the number of
// boards to cover the worst case combination of boards already awake or shutdown.
for(nDev_ID = 0; nDev_ID < TOTALBOARDS>>1; nDev_ID++) {
	nSent = WriteReg(nDev_ID, 12, 0x40, 1, FRMWRT_ALL_NR);	// send out broadcast pwrdown command
	delayms(5); //~5ms
	WakePL455();
	delayms(5); //~5ms
}

Q.1. Could you develop a bit more on this pwrdown command, why is it needed and why there's also a Wakeup call every time and for every board used in the system?

2. Also, concerning the Wake-Up procedure, it is stated in the datasheet and in some other posts here at E2E that the wakeup pulse should be a 0-1-0 100us pulse. Nevertheless, in the provided code the definition of this function is as follows ...

void WakePL455()
{
	// toggle wake signal
	gioSetBit(gioPORTA, 0, 0); // assert wake (active low)
	delayus(10);
	gioToggleBit(gioPORTA, 0); // deassert wake
}

Q.2. ... and I don't understand why. Also, and concerning Q.1. I thought that a single wakeup tone in the bottom most board (master) would be enough to send the wakeup command through the COMM+/- automatically to the slave boards. Is this so?

Q.3. Could you also provide a bit of a summary of all the power states of the IC? I understand the three (SHUTDOWN,IDLE,AWAKE) but given the many possible states that lead to passing from one to another it is quite unclear as an overall picture. Is it possible to pass from SHUTDOWN to AWAKE directly and ignore IDLE? Is IDLE used just while setting up values in the registers upon initialization? 


Thank you very much for your help,

Miguel Quero

  • HI Miguel,

    Here is my responds.

    Q.1. Could you develop a bit more on this pwrdown command, why is it needed and why there's also a Wakeup call every time and for every board used in the system?

    TI: One wakeup is good enough. It says the WORST case.

    Q.2. ... and I don't understand why. Also, and concerning Q.1. I thought that a single wakeup tone in the bottom most board (master) would be enough to send the wakeup command through the COMM+/- automatically to the slave boards. Is this so?

    TI: Yes, you are right.... One is good enough.


    Q.3. Could you also provide a bit of a summary of all the power states of the IC? I understand the three (SHUTDOWN,IDLE,AWAKE) but given the many possible states that lead to passing from one to another it is quite unclear as an overall picture. Is it possible to pass from SHUTDOWN to AWAKE directly and ignore IDLE? Is IDLE used just while setting up values in the registers upon initialization?

    TI: Shutdown is when device is shutdown. You need to wake up before you do communication and etc....
    Idle and awake is basically same mode.

    Let us know if my answers are not clear.

    Roger
  • Dear Roger, thanks for your answers.

    In general pretty clear yes, Just concerning Q.2. I didn't see a reply for the first part of the question, why is the code like that if the datasheet says that the wakeup signal should be a 0-1-0 100us pulse.

    Thanks a lot,

    Miguel
  • Hi Miguel,

    The code is not fully optimized so one wakeup pulse is good enough.

    Regards,

    Taylor