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.

BQ77PL900: BQ77PL900 SDA line becomes low ??

Part Number: BQ77PL900
Other Parts Discussed in Thread: CC3200, BQ76925

Hi,

I'm using cc3200 and Bq77pl900 interfaced with I2c when i'm reading the registers the sda line become low, i'm not getting from which side the sda line is becoming low.How do I release the sda line from low to high.

Please help me asap.

Regards,

Prudhvi

  • Hi Prudhvi,
    To identify which side is pulling down the bus it can be helpful to have a small resistance between the host and the slave. A scope probe at the pullup resistor should show a lower value for low when driven by the device on that side of the series resistor.
    Generally if the slave is holding the data line low it is waiting for a clock to send data. The common method to clear the bus in this condition is to send up to 9 clocks until the slave releases the data line.
    Unless there is noise or conflict on the bus a slave error should be unusual. Check the pull up resistors, look for crosstalk and check the setup of the MCU's peripheral.
  • Thanks for reply,
    The problem is solved by reducing the I2C speed to standard mode(100Kbps)before it was fast mode(400Kbps).
    One problem from BQ77PL900 how can we read the total battery voltage with cc3200,in datasheet it has given Vout(Amplifier output for cell voltage measurement) it should connect to adc pin of cc3200 or directly from registers it will give the battery voltage as digital in standalone mode.

    Regards,
    Prudhvi.

  • Hi Prudhvi,
    Good tip on the bus speed, I did not think to suggest that check.
    The bq77PL900 is an analog device, it does not have internal ADC to give voltages in a register value. VOUT is the analog measurement point for the voltages, it should go to a MCU ADC input. VOUT can select from 4 modes as shown in the "Cell Voltage Measurement" section of page 30 of the bq77PL900 data sheet. See register FUNCTION_CONTROL (0x03) for the selection bits for battery or pack. Note that the bat and pack monitor is a positive characteristic vs the negative one for the cell voltages.
  • Thanks for reply,

    I didn't get this point "Note that the bat and pack monitor is a positive characteristic vs the negative one for the cell voltages".Please can you explain me in detail.
    And one more question i have that when i write 0x08 into the function control register (0x03),after this how can i read the values in Vout .what i'm doing is writing 0x08 into function control register and then seeing the voltage at vout terminal with multimeter,i'm not getting any value at Vout terminal.
    Can you please suggest me how the sequence of writing the registers are required to get the values at vout terminal.Please help me ASAP.

    Regards,
    Prudhvi
  • Hi Prudhvi,
    The cell voltage monitor has a negative characteristic or slope, when the cell voltage increases VOUT goes down. The BAT and PACK have positive characteristics or slopes, when the BAT or PACK voltage increases the VOUT increases (when selected).
    Host monitoring including VOUT only work in host mode, so the STATE_CONTROL register HOST bit must be set (reg 0x02 to 0x02 or other). Also the amplifier output must be enabled by VAEN. PACK takes priority over cell measurement, and BAT takes priority over both cell and PACK. So to measure the pack voltage set FUNCTION_CONTROL to 0x09 (with the host bit already set), or to measure the bat voltage set it to 0x11. Since you are in host mode be sure to turn the FETs on or you will likely measure ~ 0V on pack unless there is a charger connected.
  • Thanks for reply,
    What i did is first i have written into STATE_CONTROL register(0x02) to 0x02 it means that i'm in host control mode.
    Then i have written 0x09 to FUNCTION_CONTROL register and checked the Vout terminal on board with multimeter i got 0.4V and then i have written 0x11 to FUNCTION_CONTROL (0x03)register i'm getting 0.5V at vout terminal.
    I should get 24V because i have configured for 8Cells.
    Please can you explain in detail for configuration of registers i'm using cc3200 for I2C communication.Please help ASAP.
    Regards,
    Prudhvi
  • Hi Prudhvi,
    The bq77PL900 is designed to interface to MCUs with low voltage inputs and has low voltage output buffers.
    For bat and pack measurement the "input is divided by 50" as described in the register bit definition. The page 30 "Cell Voltage Measurement" section shows "× 0.02" which is dividing by 50, and the Electrical Characteristics table "Cell Voltage Monitor" section shows the tolerance of 5% on the divide by 50. So for a 24V battery you should expect to measure 24/50 = 0.48V Be sure to build in a calibration factor and method in your code if needed to compensate for the scale factor and any ADC tolerances.
    Please read through the data sheet. It is not perfect but the author has tried to describe the part in several ways, it should answer most of your questions.
  • thanks,

    1)Is there any code that measure the voltage from MCU with I2C
    2)Should i use stand alone mode or host control mode, as per the datasheet in standalone mode inbuilt algorithm is there,if i use in host control mode all the things MCU should handle ??
    3) Just i want to read a total voltage and individual batteries voltages how should i do ?? please share any code
    Regards,
    Prudhvi
  • Hi Prudhvi,
    1. I don't know of code examples for the bq77PL900. The bq76925 is an analog output AFE with some reference code available, the part function and register definitions are different but the concepts may be useful. See the tools and software tab of its product folder.
    2. To measure the voltages the part must be in host mode. If you set the FET control bits on before entering host mode the part will still protect if there is a fault, or you can protect at earlier thresholds based on your measurements. See the table. The balancing algorithm is built in for standalone but must be done in the MCU for host mode. Some users will switch between modes.
    3. You might operate in standalone mode until you want to measure voltages, then with the FET bits set on go to host mode, make measurements and switch back to standalone. You will need to calibrate voltages both for the battery level as mentioned above and the cell level to account for the common mode tolerance.
  • Thanks for reply,

    When i write 0x11 to function control register(0x03) then i'm getting 0.582 on vout terminal,what i think is total voltage is divided by 50 if VAEN=1

    So what i did 0.582*50 = 29.1 i'm getting the total voltage, is it correct method of calculating total voltage??. 

    Regards,

    Prudhvi

  • Please can you give me reply

    Regards,

    Prudhvi

  • Hi Prudhvi,
    Yes, the part divides the voltage by 50 so multiplying by 50 should give the battery voltage, subject to tolerance.