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.

BQ76930: Problem with communication. Can't Write in registers.

Part Number: BQ76930

Hello, 

I am working with the bq76930 AFE for a BMS project, and have a problem communicating with it.

I have followed the typical application given in the datasheet for the said AFE ,  and am using an Arduino Mega2560 to communicate with it on I2C. 

The pins in BMS receives the correct voltage and I can read the registers only-read with the correct cell voltage, pack voltage and temperature but I can't write in registers like SYS_STAT, SYS_CRTL1 and 2 and PROTECT1, 2 and 3. In this moment I can't discharge the batteries using the BMS because the bit DSG_ON ist in 0 and LOAD_PRESENT ist in 0 too. 

Is there any special condition for me to be able to write in registers?

Thanks!

  • Hi Thayna,
    I suspect you have used a CRC version of the bq76930 such as bq7693003. With the CRC version each byte read will be interspersed with a CRC value, see section 7.3.1.4 in the data sheet. When reading a register as a single byte the value will be correct and the MCU can ignore the CRC byte. When reading a voltage register it may not be obvious that the second byte is the wrong value (CRC byte). When trying to write to the part it will reject the write if the CRC is not sent or incorrect.
    If your MCU is sending CRC, the bq76930 must not be accepting the value. Check the calculation of the CRC by the MCU.
    If your part is not a CRC version, check the I2C signaling and be sure that the command on the bus has the write bit set and that the data byte is transferred to and ACK'd by the bq76930.
  • Thank you for your answer.
    I have used a CRC version (exactly bq7693003). Now i'm sending the CRC byte but still can't write in register. I'm using a library to CRC in Arduino and checking the calculation. It's the first time I use CRC test....

    Thanks again!