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.

BQ28550-R1 SMBUS communication

Hello,

I'm using a gas gauge BQ28550-R1 connected to the I2C interface of our i.MX6 application processor. The BQ28550-R1 uses the SMBUS serial data interface which is apparently a subset of I2C protocol. The I2C bus is shared with another peripheral (I2C compatible) and this peripheral can be accessed without any issues. 

- First of all, the slave address to identify the BQ28550-R1 on I2C share bus is not specifyied in datasheet. Does it means that this adddress can be changed in the firmware? I found address 0x16 in several threads mail and discussions?

- I don’t know which firmware and configuration has been flashed on my BQ28550-R1,  can I read some internal registers with address 0x16 and default firmware?

Many Thanks in advance for your help.

Jean-Marie

 

 

  • In response to your questions:

    • The bq28550-R1 slave address is 0x16; it is fixed and cannot be changed. 0x16 is the designated SMBus address for the Smart Battery System specifications. (Also, SMBus is derived from I2C but with stricter timings, but the bq28550 'speaks' SMBus but follows the less strict timing requirements of regular I2C.)
    • To read out the chip firmware ID, use the ManufacturerAccess() command 0x0002 (See page 33 of SLUU513). The process of reading out the Data Flash is also described in the previously linked document.
    • You may want to consider putting a revision ID in the ManufacturerData memory so that you can identify what version of the Data Flash information is put on the chip. This data will be read-only when the chip is in the SEALED state.
  • Thanks Jason,

    I'm using u-boot I2C commands ('i2c probe' and 'i2c md') to read register from BQ28550-R1 gas gauge. With 'i2c probe' command normally you can detect all I2C devices connected on the same I2C bus. 'i2c probe' command parse all addresses from 0x00 until 0x7F automatically to detect all I2C devices. 

    By using I2C probe command the BQ28550 is not detected, below is the translation of the capture done with the oscilloscope..

    Startbit 0 0 0 1 0 1 1 R/W(0) NACK --> NACK means that peripheral is not correctly addressed?

    In parallel of the debug phase to talk with the BQ28550-R1, I would like to have your feedback on the hardware implementation to be sure that evrything is correct. I2C2_SDA and I2C2_SCL with 4.7 KOhms PULL-UP are the I2C lines connected to the BQ28550-R1 (VDD_HIGH is 3.15volt and the i2C clock measured is around 85Khertz). Plesae let me know if something is wrong and that could be the reason of the communication issue.

     

     

     

     

  • I would suggest you isolate the gauge and hook a scope probe to the comm lines to see what the wave form looks like. your schematic shows the logic levels are 0.6V and 1.2 V for low and high respectively. You are pushing the limits with those values based on what's stated in the data sheet for the device. Also I would suggest reducing the pull-up resistors to a lesser value like 3.3 K.

    -Onyx

  • Hello Onyx,

    VIL and VIH on schematic are the value from datasheet, this is a reminder from the spec (no interest on schematic), they do not reflect values measured with scope. I will capture waveforms and attach to the discussion.

    PULL-UP value has been reduced to  3.3K and communication issue is the same. Your proposal to isolate the gauge on the bus could be a solution but we need to cut some lines, the other device on the same bus is the PMIC for the application processor.

    Normally beginning of next week we will receive an BQ28550-R1 EVM and EC2300 boards , I hope it will help me to control the gauge on our design.

    I will prepare some captures to have your feedback.

    Thanks,

    Jean-Marie 

  • Hello Onyx,

    Below the waveform captured on smbus interface.

    Bye,

    Jean-Marie