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.

I2C issue between BQ27510 and SGTL5000

Other Parts Discussed in Thread: BQ27510

Hi,

We are using IMX6 processor with winCE7 OS.And two chips (SGTL5000 Audio codec and bq27510 battery monitor IC) are connected  in one I2C channel(I2C cahnnel3).Sometimes, battery monitor initialized first successfully and SGTL initialization failed after that. ( No acknowledge is received for I2C write to SGTL5000 in the audio chip init.). And sometimes we observed that battery monitor chip read(I2C read) failed(error was I2C start cannot generate ).Please help to solve the issue?  Is there any synchronization issue between audio chip and battery monitor chip.

 

  • Hello Aju.

    Are you saying that one chip successfully initialized then the other will NACK?

    Do you have any waveform captures of this failed communication?
  • Hi,

    Yes.battery monitor chip successfully initialized.Audio chip give NACK.

    But sometime audio chip give ACK.

    We cannot capture the waveform of failed communication

  • I am unable to speak to the freescale codec, but I can give some suggestions on what I would do to attempt to debug an I2C failure.

    1) Double check your address that you are sending (note that your processor may use 7-bit right justified instead of 7 bit plus R/W bit). Also make sure that any address pins on the devices are correctly setup. While I don't believe this is an issue in your case, I woudl just double check to make sure that the codec and gas gauge IC do not have the same I2C address.

    2) Try a slower bus speed. If your bus capacitance is too high, or pull-ups too weak, then its possible you are not hitting the VIH required of the codec in time before the next falling edge. If you're close to this point, it would explain why the codec sometimes ACKs but other times doesn't. The easiest way to check this is to slow your bus speed down and see if you have issues still. IE, if you are at 400kHz, set the speed to 100kHz. If you're at 100kHz, go to ~25kHz. Bus capacitance and pull-up resistor strength can cause issues that you are seeing. THese problems are also easily verified with a scope shot of the bus.

    3) If the failure moves from device to device, depending on which one is initialized first, this might be seen in a bus latchup condition. You will need to investigate the bus lines and monitor the I2C transaction to make sure that either the master or the slave device are not holding the bus low. (This is where a scope shot of the bus would be very helpful)

    4) Check if once the battery gas gauge is initialized, and the codec NACKs, are you able to continuously read or write from/to the gas gauge? If yes, then this points to the bus not being held low, which points the issue to the codec.

  • Hi
    Thank for reply.
    Will debug by considering your points.