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.

bq27541 I2C communication problem

Other Parts Discussed in Thread: BQ27541

We are designing a stand-alone device that our customers can use to track the health of their batteries. We are trying to interface with a battery that uses a bq27541 as its fuel gauge. We have had difficulties in getting any data off the fuel gauge. Using I2C, we are able to get an ACK back from the battery when we write out the address 0xAA. When we then write out, for example, 0x08 (first byte of  Voltage() cmd) we get a NACK. Any data we send after the address gets NACKed. I have tried multiple clock frequencies (100kHZ, 400Khz, <100kHZ) without any change. I know the I2C is working because I can and have read data from other devices. Is there something I need to do to gain access to these registers. I only need to be able to read the registers which shouldn't be protected even if the battery is SEALED. Any help on this would be appreciated.

 

Thanks

Chris J.

  • You shouldn't have to do anything special to read the RAM registers like that.

    To help debug, do you happen to have a bq27541 EVM or just a standalone EV2300?  You could use the EV2300 and the bq27541 EVSW (downloadable) to try talking to the batteries to make sure they can talk.

  • I do have an EV2300. Sadly our office has been completely upgraded to Win 7 and the EV2300 is useless. (another plug for Win 7 64-bit support on this device) I was afraid that this was going to be the case so I guess I need to start digging through some old computers and find something that can talk to the EV2300.
  • I was able to find a win XP computer and test with the EV2300. The EV2300 never could detect the bq27541. I connected a scope up to the bus and saw traffic and it looked as if the data was being ACKed by the battery but the SW said the device was unsupported. I have contaced the battery manufacturer to see if they have changed anything that would cause this to behave in this way. We will see what they say.

  • The EV2300 doesn't have pull-ups on the I2C pins, so if you are talking directly to a battery (which probably doesn't have pull-ups, either) then you can connect some 3-10k pull-ups between SDA/SCL and the VCC pin in the HDQ port of the EV2300.  Do that and you should be able to talk to the battery.

  • So after some work I stumbled apon part of my solution. I had to REALLY slow down the clock rate (<<<100K) to get it communicating. Don't know if this because of my MCU or poor implementation of the bq27541 in this battery.  Now I have a problem that it seems like the bq27541 isn't letting go of the bus after the stop bit has been sent. I have to wait nearly 2 seconds to get the bus active again. Any idea on what could be the problem?

  • The bq27541 can easily handle >100kHz I2C communication, and also has capability for 400kHz.  Have you looked at your I2C signals on a scope to see what the waveforms look like?

    You mentioned that you can read I2C data from other devices with no problem.  Can you confirm that those are on the same bus as the bq27541?

  • Hi Chris,

    I also encountered the same problem, the problem is how to solve?

    Thanks

  • I'm having a similar I2C communication problem. I am using EV2300 units that we use with other bq20zxx parts with no problems and have for years. However, they don't communicate with the bq20z27541 V200. I did install the EVSW software for the bq20z275xx, and the software lists the parts on launch, but it never recognizes said part and gives the legandary "unable to communicate with part; proceed at your own risk" message.

    SLUU273 for the bq27541 EVM states in section 1.1 Kit Contents, "EV2300 (specifically labeled as only to be used with bq27541 EVMs) PC interface board." I suspect this is where the problem stems from. What is different about the EV2300 included in the bq27541EVM? Is there a way I can make our EV2300s talk to the bq27541 V200 parts?

    Do I need to add pull-ups to the SDA and SCL lines to use the I2C of the EV2300 we are using?

    Thanks!