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.

BQ76942: Write FET_CONTROL under I2C

Part Number: BQ76942

Hello TI support team,

I am trying to set the FET states manually, using the FET_CONTROL command. I implemented the following (to allow only the DSG FET to close) but it does not do anything, I would know if my transaction is fine (using communication mode I2C without CRC) :

Thanks for the help,

Robin

  • Hello Robin, 

    It does not seem right, in addition to the FET_CONTROL() command, you have to send the corresponding bits to enable/disable the FETs as described in Table 5-8. FET Control Subcommands of the Technical Reference Manual. Which means after sending FET_CONTROL(), you have to send bits matching the FET Status() register. If a bit is set, it will disable that particular FET.

    In addition to this, after sending the FET_CONTROL() command alongside the corresponding control bits, you have to write to 0x60 with the checksum and length. This is explained in Section 2 - Subcommands of the BQ769x2 Software Development Guide

    0x40 is used for data read, so you do not need it in this command. Also, the device address for the BQ76942 is 0x10, not 0x08.

    So an example sequence to turn all FETs on would be:

    Write[0x10]  <Device Address
    0x3E
    0x97
    0x00
    0x00            <For all FETs on (For all FETs off, this would be 0x05)
    Write[0x10] <For checksum
    0x60
    0x68            <Calculated checksum for all FETs on (This has to be calculated for each FET on/off case)
    0x05            <New length

    I hope this helped.

    Best Regards,

    Luis Hernandez Salomon

  • Hi Luis,

    Thanks for your help,

    How would be the transaction if I not use the CRC on my I2C ? I use the 0x29E7 command to swap to I2C at the beginning of use.

    Best regards,

    Robin

  • Hello Robin,

    The transaction I sent does not use CRC. Sending a checksum is required by some sub-commands like the FET_CONTROL() sub-command. This is mentioned in Section 2 of the BQ769x2 Software Development Guide

    Best Regards,

    Luis Hernandez Salomon

  • Ok understood. Is there any timing to take care on ? I sent your commands but... It is not working. If I use the 0x0096 command, it is directly applied and MOS closed.

    Best regards

  • Hello Robin,

    It seems I had misunderstood the purpose of the command. FET_CONTROL() only disables the FETs whose bits are asserted. If you want to control the FETs, it may be better to send the ALL_FETS_ON() (0x0096) in conjunction with DSG_PDSG_OFF() and CHG_PCHG_OFF() commands, it should be easier to control the FETs this way.

    However, if you want to use FET_CONTROL(), you may achieve the same effect by sending the ALL_FETS_ON() command and then use FET_CONTROL() to turn FETs "on" or off at will.

    I apologize for the confusion.

    Best Regards,

    Luis Hernandez Salomon

  • Hi Luis,

    Ok I understand now

    Thanks for your help !