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.

INA219: Cannot read from the INA219

Part Number: INA219

Hello,

I'm using an EFR32BG22 host from Silabs and I wrote a driver to communicate with the INA219 with a lot of inspiration from the Adafruit driver for Arduino.

It seems I'm able to write, because the INA219 is acknowledging my data. But when I read, it's always 0. I checked the datasheet and, from my point of view, my I2C communication seems OK.

Here is a process to reproduce the issue:

I write 0x8399 (to reset the device) in the configuration register (0x00)

Then I read the same register and I expect to find 0x399 but I read 0x0000.

Please find below the write sequence and then the read sequence.

Do you see any issue?

Thanks for your help

  • Hello,

    It seems that after you communicate a read to the INA219 you are holding the SDA line down with the master. Is this the case? When trying to read the data from the device you will need to let the slave drive the SDA line.

    Regards,

    Castrense

  • Hello Castrense, thanks for your reply.

    I"m using the low level I2C API from Silabs to make the read transfer. The read sequence was copied from another driver which is working and it set a "read" flag before starting the transfer. I don't think the SDA line is held low by the master. But it worth to try with another sensor on the same bus and make sure we can read actual data with this low level API. I'll keep you posted.

  • I found the issue, I'm not proud of it...

    I'm using the Thunderboard from Silabs and the I2C bus is already used by 3 sensors. I knew this but I supposed it didn't worth to check the addresses of these sensors. I decided to check and the Si7021 sensor's default address is 0x40...

    I changed the INA219 address to 0x41 and everything works well now.