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.

BQ27Z746: I2C Read failure

Part Number: BQ27Z746
Other Parts Discussed in Thread: EV2400, BQSTUDIO

Dear TI,


We are able to flash bq.fs on FG chip with the help of BqStudio and EV2400 board. We have written a basic linux driver which reads the Voltage Register.
But , we are not able to receive the data from the chip.


Below is the error log we are getting:
[ 4.119304] [4: init: 1] exynos5-hsi2c 138f0000.hsi2c: Filter cycle: 1
[ 4.119308] [4: init: 1] bq27xxx-battery 3-0055: error reading voltage
[ 4.119311] [4: init: 1] bq27xxx_battery_i2c_probe: volt ret = -6

Linux Errno 6 : ENXIO No such device or address

As we think, slave address of the chip is 0x55, we have configured the same in dtsi. Would you please confirm if slave address is correct ?
If yes, what could be the possible cause of I2c Read Failure ?

  • Some systems use 0xAA as the address ( address shifted by 1). Also make sure that the code is mapping to the correct physical bus.

  • Hello,

    By using 0xAA as slave address, device is not getting registered in linux kernel. It is getting registered using 0x55.

    We are not able to communicate with TI FG using I2C. ACK is not getting received in Ap side from slave.

    Error Logs:

    [ 4.227174]I[0: swapper/0: 0] exynos5-hsi2c 138f0000.hsi2c: HSI2C Error Interrupt occurred(IS:0x00000400, TR:0x00080001)
    [ 4.227193]I[0: swapper/0: 0] exynos5-hsi2c 138f0000.hsi2c: HSI2C NO ACK occured
    [ 4.227244] [5: init: 1] exynos5-hsi2c 138f0000.hsi2c: ack was not received at write
    [ 4.227258] [5: init: 1] exynos5-hsi2c 138f0000.hsi2c: exynos5_i2c_set_timing IPCLK = 200000000 OP_CLK = 400000 DIV = 31 Timing FS1 = 0x1F0FF00 TIMING FS2 = 0x30003E0 TIMING FS3 = 0x1F0000
    [ 4.227263] [5: init: 1] exynos5-hsi2c 138f0000.hsi2c: Filter cycle: 1
    [ 4.227267] [5: init: 1] bq27xxx_battery_i2c_probe: write ret = -6
    [ 4.227270] [5: init: 1] bq27xxx-battery 3-0055: bq27xxx_battery_i2c_read: Client Address: 85

    So, can you please help to determine what can be the possible cause?

    Also please help to answer below queries.

    1) What is the voltage level thresholds for slave to determine I2C high and I2C low?

    2) From which register we can check whether FG IC is in sealed, unsealed or full access mode?

    Please help to reply urgently.

    Thank You

  • Hello Mayank,

    The levels are specified in the datasheet. Check the frequency.

    You may need to capture the waveform on the bus to make sure everything lines up.

  • Sealed state can be checked by reading register OperationStatusA()