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.

BQ25155: BQ25155:

Part Number: BQ25155

Tool/software:

I am using I2C to read out the Vbat value on register 0x42. I can get 2 bytes out of the read MSB followed by LSB. When reading the register 0x43 that suppose to contain LSB it does not match the first reading LSB.

The PG is down to block for A/D converter to change the vbat-value.

Multi reading sets (with a time pause of 30sec) shows a repeated log with the same readouts.

As the LSB value is slightly making just little difference I cant decide what value of LSB to use. The right measured value is in between the 2 sets.

Log from Saleae logic analyzer:

name type start_time duration ack address read data
I2C address 20.8408064 0.00008864 true 0x6B false
I2C data 20.84090016 0.00008848 true 0x42              Asking for register 0x42
I2C stop 20.84104928 0.00000016
I2C start 20.84113408 0.00000016
I2C address 20.84114416 0.00008864 true 0x6B true
I2C data 20.84123792 0.00008848 true 0xA5             reading VBat MSB/LSB
I2C data 20.84133152 0.00008864 false 0x81            Is this VBat LSB?
I2C stop 20.84143072 0.00000016
I2C start 20.8448 0.00000016
I2C address 20.84481008 0.00008864 true 0x6B false
I2C data 20.84490384 0.00008848 true 0x43             Asking for register 0x43
I2C stop 20.84505296 0.00000016
I2C start 20.84513776 0.00000016
I2C address 20.84514784 0.00008864 true 0x6B true
I2C data 20.8452416 0.00008864 true 0x7D         Reading 0x43  -> VBat-LSB
I2C data 20.8453352 0.00008864 false 0x53

  • Hi,

    Can you please share your ADC Settings Register values? 

    Best Regards,

    Juan Ospina

  • Hi Juan

    Thanx for the quick respond.

     

    I suppose you request the value of register 0x40 and 0x41

     

    The register 0x40 is upon start set to 0x03 meaning comperator-1 needs to make me a VBat calculation.

    I set the register 0x40 to 0x23 to start a manual comparison (PG Power is not good)

    I after 2ms ask on the register and get the value for register 0x40 as 0x02 (the bit 5 has vanished but should have been hold on for the comparison period that supposed to be 24ms (highest accuracy) This seems to me that the measurement has not been started – problem?.

     

    After 40ms I readout the VBat value. Both as a word and as 2 single bytes. I expect the t values to be the same on atleast the first 12 bits but they are not the same. Only the MSB is the same. Calculating the VBat value on the word and as a result of the 2 single value bytes I get values above and under the right value measured by a multi-tester. My question is: what is the right way of getting the VBat value. If single byte read is the correct way, what is the byte 2 in a word read then representing?

     

    The value of ADCCTRL1 register 0X41 is 0x40 (checked this today) is this should mean comperator-2 is for TS ? This should have no influence.

     

    Be

    Henning

  • Hi Henning,

    Based on your configured register value (0x23) it should be configured for manual reads at 24mS, with COMP1 set to VBAT. Is your adapter present at this time or is this only with a battery present? It is also unexpected for you to reading back 0x02, since that would indicate the COMP1 channel value was changed. 

    You're not wrong in your understanding of the register values, reading 2 bytes at register 0x42 vs reading 1 byte at reg 0x43 both should read back the same point in memory, reg 0x43 is read in both those scenarios. If you continue reading 0x43 repeatedly, do you find that the values continue to change?

    Best Regards,

    Juan Ospina

  • Hi Juan. I found out to make the A/D converter work in no PG mode. What I needed to hear is that the register 0x58 needs to contain the datatype that is needed. When this register is 0x00 there is no work for the A/D converter and the bity 5 of 0x40 is cleared and no interrupt is send - also the red 0x05 is not telling the A/D conversion has been done. Setting the register 0x58 for measuring the VBat the system takes in the ADC_CONV_START bit and does the measure.

    I think this should have been mentioned in the BQ252155 datasheet chapter 99.3.3.1 "ADC Operation in Active Battery Mode and Low Power Mode" but it is not. The bit I need "EN_VBAT_READ" is only mentioned once and not explained. But now it works for me.

    Now I only need information what value to trust. Reading 2 bytes from register 0x42 compared to reading 2 times on reg 0x42 and 0x43 delivers different values. Without running the A/D converter once, the result reading both ways on 3 times delivers: ( real battery value is 4.16V)

     socAction: power is not good 842442909
    reg_content 0x05 = 0x80 status7 0
    reg_content 0X58 = 0x8 Time 842447727
    reg_content 0x58 set to =0x8
    reg_content 0X58 = 0x8 Time 842453663
    reg_content 0X40 = 0x2 Time 842459890
    reg_content 0x40 set to =0x22
    reg_content 0X40 = 0x22
    reg_content 0x05 = 0x0 status8 0 Time 842469679
    VBat as 2 single bytes 0xB1 0xB1 vbatMeasurement =0xB1B1 VBat value: 4164
    VBat reading as 1 single word vbat =0x8CB1 4161
    VBat as 2 single bytes 0xB1 0xB1 vbatMeasurement =0xB1B1 VBat value: 4164
    VBat reading as 1 single word vbat =0x8CB1 4161
    VBat as 2 single bytes 0xB1 0xB1 vbatMeasurement =0xB1B1 VBat value: 4164
    VBat reading as 1 single word vbat =0x8CB1 4161

    What is the correct value?

  • Hi Henning,

    VBat as 2 single bytes 0xB1 0xB1 vbatMeasurement =0xB1B1 VBat value: 4164

    It looks like in this case 0xB1 twice seems very unlikely. Can you confirm this isn't 0x42 being read twice?

    VBat reading as 1 single word vbat =0x8CB1 4161

    I believe in this scenario the endianness of the VBAT value is flipped, but the bits are correct. 0xB18C should correspond to 4.16125 mV which seems close to your expected value.

    Best Regards,

    Juan Ospina

  • Yes I understand your worries that the same byte "B1" is comming out twice, but it is from register 42  -43

    Here is another example with another battery value:

    I also included the log from the logic analyzer to take my code/printf out of the questions. Please see my comments.

    There is only a small difference in the readings but how come there is a difference at all. The A/D converter has not been running and repeated readings (3 times) shows the same.

    The battery in is driven by a lap power supply. The right steady value is 3.80 V


    socAction: power is not good 32443865
    reg_content 0x05 = 0x80 status7 0
    reg_content 0X58 = 0x0 Time 32449468
    reg_content 0x58 set to =0x8
    reg_content 0X58 = 0x8 Time 32455474
    reg_content 0X40 = 0x2 Time 32461701
    reg_content 0x40 set to =0x22
    reg_content 0X40 = 0x22
    reg_content 0x05 = 0x0 status8 0 Time 32469552
    VBat as 2 single bytes 0xA2 0xC6 vbatMeasurement =0xA2C6 VBat value: 3814
    VBat reading as 1 single word vbat =0xA222 3799
    VBat as 2 single bytes 0xA2 0xC6 vbatMeasurement =0xA2C6 VBat value: 3814
    VBat reading as 1 single word vbat =0xA222 3799
    VBat as 2 single bytes 0xA2 0xC6 vbatMeasurement =0xA2C6 VBat value: 3814
    VBat reading as 1 single word vbat =0xA222 3799
    socAction: Vbat 3799 [mV]
    socAction: soc (capacity) 80%

    socAction: power is not good 62443614
    reg_content 0x05 = 0x80 status7 0
    reg_content 0X58 = 0x8 Time 62448541
    reg_content 0x58 set to =0x8
    reg_content 0X58 = 0x8 Time 62454443
    reg_content 0X40 = 0x2 Time 62460672
    reg_content 0x40 set to =0x22
    reg_content 0X40 = 0x22
    reg_content 0x05 = 0x0 status8 0 Time 62470461
    VBat as 2 single bytes 0xA2 0xC6 vbatMeasurement =0xA2C6 VBat value: 3814
    VBat reading as 1 single word vbat =0xA222 3799
    VBat as 2 single bytes 0xA2 0xC6 vbatMeasurement =0xA2C6 VBat value: 3814
    VBat reading as 1 single word vbat =0xA222 3799
    VBat as 2 single bytes 0xA2 0xC6 vbatMeasurement =0xA2C6 VBat value: 3814
    VBat reading as 1 single word vbat =0xA222 3799
    socAction: Vbat 3799 [mV]
    socAction: soc (capacity) 80%

    socAction: power is not good 92443805
    reg_content 0x05 = 0x80 status7 0
    reg_content 0X58 = 0x8 Time 92449408
    reg_content 0x58 set to =0x8
    reg_content 0X58 = 0x8 Time 92455414
    reg_content 0X40 = 0x2 Time 92461641
    reg_content 0x40 set to =0x22
    reg_content 0X40 = 0x22
    reg_content 0x05 = 0x0 status8 0 Time 92469492
    VBat as 2 single bytes 0xA2 0xC6 vbatMeasurement =0xA2C6 VBat value: 3814
    VBat reading as 1 single word vbat =0xA22B 3800
    VBat as 2 single bytes 0xA2 0xC6 vbatMeasurement =0xA2C6 VBat value: 3814
    VBat reading as 1 single word vbat =0xA22B 3800
    VBat as 2 single bytes 0xA2 0xC6 vbatMeasurement =0xA2C6 VBat value: 3814
    VBat reading as 1 single word vbat =0xA22B 3800
    socAction: Vbat 3800 [mV]
    socAction: soc (capacity) 80%

    Logic (saleae)

    name type start_time duration ack address read data
    I2C start 38.86625696 0.00000016
    I2C address 38.86626704 0.0000888 true 0x6B false
    I2C data 38.86636096 0.0000888 true 0x05
    I2C stop 38.8665104 0.00000016
    I2C start 38.8666352 0.00000016
    I2C address 38.86664528 0.00008896 true 0x6B true
    I2C data 38.8667392 0.00008896 true 0x80
    I2C data 38.86683328 0.0000888 true 0x00
    I2C data 38.8669272 0.0000888 true 0x5C
    I2C data 38.86713104 0.0000888 false 0x2F
    I2C stop 38.86723056 0.00000016
    I2C start 38.86993024 0.00000016
    I2C address 38.86994032 0.00008896 true 0x6B false
    I2C data 38.8700344 0.0000888 true 0x58
    I2C stop 38.87018384 0.00000016
    I2C start 38.87026864 0.00000016
    I2C address 38.87027872 0.0000888 true 0x6B true
    I2C data 38.87037264 0.0000888 true 0x08
    I2C data 38.87046656 0.0000888 false 0xFF
    I2C stop 38.87056608 0.00000016
    I2C start 38.87165744 0.00000016
    I2C address 38.87166752 0.00008896 true 0x6B false
    I2C data 38.8717616 0.0000888 true 0x58
    I2C data 38.87185552 0.0000888 true 0x08
    I2C data 38.87194944 0.0000888 true 0x00
    I2C stop 38.87204896 0.00000016
    I2C start 38.87501056 0.00000016
    I2C address 38.8750208 0.0000888 true 0x6B false
    I2C data 38.87511472 0.0000888 true 0x58
    I2C stop 38.87526416 0.00000016
    I2C start 38.87534896 0.00000016
    I2C address 38.87535904 0.0000888 true 0x6B true
    I2C data 38.87545296 0.0000888 true 0x08
    I2C data 38.87554688 0.00008896 false 0xFF
    I2C stop 38.8756464 0.00000016
    I2C start 38.8791632 0.00000016
    I2C address 38.87917328 0.0000888 true 0x6B false
    I2C data 38.8792672 0.0000888 true 0x40
    I2C stop 38.87941664 0.00000016
    I2C start 38.87950144 0.00000016
    I2C address 38.87951152 0.0000888 true 0x6B true
    I2C data 38.87960544 0.00008896 true 0x02
    I2C data 38.87969936 0.00008896 true 0x00
    I2C data 38.87979344 0.0000888 true 0xA2
    I2C data 38.88000736 0.0000888 false 0x22
    I2C stop 38.88010688 0.00000016
    I2C start 38.88356784 0.00000016
    I2C address 38.88357792 0.0000888 true 0x6B false
    I2C data 38.88367184 0.0000888 true 0x40
    I2C data 38.88376576 0.0000888 true 0x22
    I2C data 38.88385968 0.00008896 true 0x00
    I2C stop 38.8839592 0.00000016
    I2C start 38.88702368 0.00000016
    I2C address 38.88703376 0.00008896 true 0x6B false
    I2C data 38.88712784 0.0000888 true 0x40
    I2C stop 38.88727728 0.00000016
    I2C start 38.88736208 0.00000016
    I2C address 38.88737216 0.0000888 true 0x6B true
    I2C data 38.88746608 0.0000888 true 0x22
    I2C data 38.88756 0.0000888 false 0x00
    I2C stop 38.88765952 0.00000016
    I2C start 38.89102976 0.00000016
    I2C address 38.89103984 0.00008896 true 0x6B false
    I2C data 38.89113392 0.0000888 true 0x05
    I2C stop 38.89128336 0.00000016
    I2C start 38.89136816 0.00000016
    I2C address 38.89137824 0.0000888 true 0x6B true
    I2C data 38.89147216 0.0000888 true 0x00
    I2C data 38.89156608 0.0000888 false 0x00
    I2C stop 38.8916656 0.00000016
    I2C start 38.92791664 0.00000016
    I2C address 38.92792672 0.0000888 true 0x6B false
    I2C data 38.92802064 0.00008896 true 0x42                  Reading VBat msb byte
    I2C stop 38.92817024 0.00000016
    I2C start 38.92825488 0.00000016
    I2C address 38.92826512 0.0000888 true 0x6B true
    I2C data 38.92835904 0.0000888 true 0xA2                       <- content of reg 0x42
    I2C data 38.92845296 0.0000888 false 0x22                        For some reason I get 2 bytes in the answer detected by the analyzer even I request one - this is an error in my driver, but anyhow. Why do I get another value when requesting 0x43 (LSB of VBat)
    I2C stop 38.92855248 0.00000016
    I2C start 38.93106736 0.00000016
    I2C address 38.93107744 0.00008896 true 0x6B false
    I2C data 38.93117136 0.00008896 true 0x43                  Reading VBat LSB byte
    I2C stop 38.93132096 0.00000016
    I2C start 38.9314056 0.00000016
    I2C address 38.93141584 0.0000888 true 0x6B true
    I2C data 38.93150976 0.0000888 true 0xC6                      <- content of reg 0x43
    I2C data 38.93160368 0.0000888 false 0x54
    I2C stop 38.9317032 0.00000016
    I2C start 38.9338176 0.00000016
    I2C address 38.93382768 0.0000888 true 0x6B false
    I2C data 38.9339216 0.0000888 true 0x42                  Reading VBat word
    I2C stop 38.93410112 0.00000016
    I2C start 38.93417584 0.00000016
    I2C address 38.93418592 0.00008896 true 0x6B true
    I2C data 38.93428 0.0000888 true 0xA2                      <- content of reg 0x42
    I2C data 38.93437392 0.0000888 false 0x22               <- content of reg 0x43   or what   0x22 != 0xc6    ?????
    I2C stop 38.93447344 0.00000016
    I2C start 38.93707344 0.00000016
    I2C address 38.93708352 0.0000888 true 0x6B false
    I2C data 38.93717744 0.0000888 true 0x42
    I2C stop 38.93732688 0.00000016
    I2C start 38.93741168 0.00000016
    I2C address 38.93742176 0.00008896 true 0x6B true
    I2C data 38.93751568 0.00008896 true 0xA2
    I2C data 38.93760976 0.0000888 false 0x22
    I2C stop 38.93770912 0.00000016
    I2C start 38.94107744 0.00000016
    I2C address 38.94108752 0.0000888 true 0x6B false
    I2C data 38.94118144 0.0000888 true 0x43
    I2C stop 38.94133088 0.00000016
    I2C start 38.94141568 0.00000016
    I2C address 38.94142576 0.00008896 true 0x6B true
    I2C data 38.94151984 0.0000888 true 0xC6
    I2C data 38.94161376 0.0000888 false 0x54
    I2C stop 38.94171312 0.00000016
    I2C start 38.94382736 0.00000016
    I2C address 38.94383744 0.00008896 true 0x6B false
    I2C data 38.94393152 0.0000888 true 0x42
    I2C stop 38.94411088 0.00000016
    I2C start 38.94418576 0.00000016
    I2C address 38.94419584 0.0000888 true 0x6B true
    I2C data 38.94428976 0.0000888 true 0xA2
    I2C data 38.94438368 0.0000888 false 0x22
    I2C stop 38.9444832 0.00000016
    I2C start 38.94708304 0.00000016
    I2C address 38.94709328 0.0000888 true 0x6B false
    I2C data 38.9471872 0.0000888 true 0x42
    I2C stop 38.94733664 0.00000016
    I2C start 38.94742144 0.00000016
    I2C address 38.94743152 0.0000888 true 0x6B true
    I2C data 38.94752544 0.0000888 true 0xA2
    I2C data 38.94761936 0.0000888 false 0x22
    I2C stop 38.94771888 0.00000016
    I2C start 38.95108736 0.00000016
    I2C address 38.95109744 0.0000888 true 0x6B false
    I2C data 38.95119136 0.00008896 true 0x43
    I2C stop 38.95134096 0.00000016
    I2C start 38.9514256 0.00000016
    I2C address 38.95143584 0.0000888 true 0x6B true
    I2C data 38.95152976 0.0000888 true 0xC6
    I2C data 38.95162368 0.0000888 false 0x54
    I2C stop 38.9517232 0.00000016
    I2C start 38.95383776 0.00000016
    I2C address 38.95384784 0.0000888 true 0x6B false
    I2C data 38.95394176 0.0000888 true 0x42
    I2C stop 38.95412128 0.00000016
    I2C start 38.954196 0.00000016
    I2C address 38.95420608 0.00008896 true 0x6B true
    I2C data 38.95430016 0.0000888 true 0xA2
    I2C data 38.95439408 0.0000888 false 0x22
    I2C stop 38.95449344 0.00000016
    I2C start 68.8665344 0.00000016
    I2C address 68.86654448 0.00008896 true 0x6B false
    I2C data 68.8666384 0.00008896 true 0x05
    I2C stop 68.866948 0.00000016
    I2C start 68.86703264 0.00000016
    I2C address 68.86704288 0.0000888 true 0x6B true
    I2C data 68.8671368 0.0000888 true 0x80
    I2C data 68.86723072 0.0000888 false 0x00
    I2C stop 68.86733024 0.00000016
    I2C start 68.87021328 0.00000016
    I2C address 68.87022336 0.0000888 true 0x6B false
    I2C data 68.87031728 0.0000888 true 0x58
    I2C stop 68.87046672 0.00000016
    I2C start 68.87055152 0.00000016
    I2C address 68.8705616 0.0000888 true 0x6B true
    I2C data 68.87065552 0.0000888 true 0x08
    I2C data 68.87074944 0.00008896 false 0xFF
    I2C stop 68.87084896 0.00000016
    I2C start 68.87268032 0.00000016
    I2C address 68.8726904 0.0000888 true 0x6B false
    I2C data 68.87278432 0.00008896 true 0x58
    I2C data 68.87287824 0.00008896 true 0x08
    I2C data 68.87297232 0.0000888 true 0x00
    I2C stop 68.87307184 0.00000016
    I2C start 68.8762184 0.00000016
    I2C address 68.87622848 0.0000888 true 0x6B false
    I2C data 68.8763224 0.00008896 true 0x58
    I2C stop 68.876472 0.00000016
    I2C start 68.87655664 0.00000016
    I2C address 68.87656688 0.0000888 true 0x6B true
    I2C data 68.8766608 0.0000888 true 0x08
    I2C data 68.87675472 0.0000888 false 0xFF
    I2C stop 68.87685408 0.00000016
    I2C start 68.88022176 0.00000016
    I2C address 68.88023184 0.0000888 true 0x6B false
    I2C data 68.88032576 0.0000888 true 0x40
    I2C stop 68.8804752 0.00000016
    I2C start 68.88056 0.00000016
    I2C address 68.88057008 0.00008896 true 0x6B true
    I2C data 68.88066416 0.0000888 true 0x02
    I2C data 68.88075808 0.0000888 false 0x00
    I2C stop 68.8808576 0.00000016
    I2C start 68.8846952 0.00000016
    I2C address 68.88470528 0.0000888 true 0x6B false
    I2C data 68.8847992 0.00008896 true 0x40
    I2C data 68.88489312 0.00008896 true 0x22
    I2C data 68.8849872 0.0000888 true 0x00
    I2C stop 68.88508672 0.00000016
    I2C start 68.88815328 0.00000016
    I2C address 68.88816336 0.00008896 true 0x6B false
    I2C data 68.88825744 0.0000888 true 0x40
    I2C stop 68.88840688 0.00000016
    I2C start 68.88849168 0.00000016
    I2C address 68.88850176 0.0000888 true 0x6B true
    I2C data 68.88859568 0.0000888 true 0x22
    I2C data 68.8886896 0.0000888 false 0x00
    I2C stop 68.88878912 0.00000016
    I2C start 68.89100624 0.00000016
    I2C address 68.89101632 0.0000888 true 0x6B false
    I2C data 68.89111024 0.0000888 true 0x05
    I2C stop 68.89125968 0.00000016
    I2C start 68.89134448 0.00000016
    I2C address 68.89135456 0.00008896 true 0x6B true
    I2C data 68.89144864 0.0000888 true 0x00
    I2C data 68.89154256 0.0000888 false 0x00
    I2C stop 68.89164192 0.00000016
    I2C start 68.92819568 0.00000016
    I2C address 68.92820576 0.0000888 true 0x6B false
    I2C data 68.92829968 0.0000888 true 0x42
    I2C stop 68.92844912 0.00000016
    I2C start 68.92853392 0.00000016
    I2C address 68.928544 0.00008896 true 0x6B true
    I2C data 68.92863808 0.0000888 true 0xA2
    I2C data 68.928732 0.0000888 false 0x2B
    I2C stop 68.92883136 0.00000016
    I2C start 68.93105392 0.00000016
    I2C address 68.931064 0.0000888 true 0x6B false
    I2C data 68.93115792 0.0000888 true 0x43
    I2C stop 68.93130736 0.00000016
    I2C start 68.93139216 0.00000016
    I2C address 68.93140224 0.00008896 true 0x6B true
    I2C data 68.93149632 0.0000888 true 0xC6
    I2C data 68.93159024 0.0000888 false 0x54
    I2C stop 68.9316896 0.00000016
    I2C start 68.93302128 0.00000016
    I2C address 68.93303136 0.0000888 true 0x6B false
    I2C data 68.93312528 0.0000888 true 0x42
    I2C stop 68.9333048 0.00000016
    I2C start 68.93337952 0.00000016
    I2C address 68.9333896 0.00008896 true 0x6B true
    I2C data 68.93348368 0.0000888 true 0xA2
    I2C data 68.9335776 0.0000888 false 0x2B
    I2C stop 68.93367696 0.00000016
    I2C start 68.9361368 0.00000016
    I2C address 68.93614704 0.0000888 true 0x6B false
    I2C data 68.93624096 0.0000888 true 0x42
    I2C stop 68.9363904 0.00000016
    I2C start 68.9364752 0.00000016
    I2C address 68.93648528 0.0000888 true 0x6B true
    I2C data 68.9365792 0.0000888 true 0xA2
    I2C data 68.93667312 0.0000888 false 0x2B
    I2C stop 68.93677264 0.00000016
    I2C start 68.9401424 0.00000016
    I2C address 68.94015248 0.00008896 true 0x6B false
    I2C data 68.94024656 0.0000888 true 0x43
    I2C stop 68.940396 0.00000016
    I2C start 68.9404808 0.00000016
    I2C address 68.94049088 0.0000888 true 0x6B true
    I2C data 68.9405848 0.0000888 true 0xC6
    I2C data 68.94067872 0.00008896 false 0x54
    I2C stop 68.94077824 0.00000016
    I2C start 68.94276784 0.00000016
    I2C address 68.94277792 0.0000888 true 0x6B false
    I2C data 68.94287184 0.00008896 true 0x42
    I2C stop 68.94327136 0.00000016
    I2C start 68.94335616 0.00000016
    I2C address 68.94336624 0.0000888 true 0x6B true
    I2C data 68.94346016 0.00008896 true 0xA2
    I2C data 68.94355408 0.00008896 false 0x2B
    I2C stop 68.9436536 0.00000016
    I2C start 68.94614832 0.00000016
    I2C address 68.9461584 0.0000888 true 0x6B false
    I2C data 68.94625232 0.0000888 true 0x42
    I2C stop 68.94640176 0.00000016
    I2C start 68.94648656 0.00000016
    I2C address 68.94649664 0.00008896 true 0x6B true
    I2C data 68.94659072 0.0000888 true 0xA2
    I2C data 68.94668464 0.0000888 false 0x2B
    I2C stop 68.94678416 0.00000016
    I2C start 68.95015376 0.00000016
    I2C address 68.95016384 0.00008896 true 0x6B false
    I2C data 68.95025792 0.0000888 true 0x43
    I2C stop 68.95040736 0.00000016
    I2C start 68.95049216 0.00000016
    I2C address 68.95050224 0.0000888 true 0x6B true
    I2C data 68.95059616 0.0000888 true 0xC6
    I2C data 68.95069008 0.0000888 false 0x54
    I2C stop 68.9507896 0.00000016
    I2C start 68.95277824 0.00000016
    I2C address 68.95278832 0.0000888 true 0x6B false
    I2C data 68.95288224 0.0000888 true 0x42
    I2C stop 68.95328176 0.00000016
    I2C start 68.95336656 0.00000016
    I2C address 68.95337664 0.0000888 true 0x6B true
    I2C data 68.95347056 0.0000888 true 0xA2
    I2C data 68.95356448 0.0000888 false 0x2B
    I2C stop 68.953664 0.00000016
    I2C start 98.86651952 0.00000016
    I2C address 98.8665296 0.00008896 true 0x6B false
    I2C data 98.86662352 0.00008896 true 0x05
    I2C stop 98.86677312 0.00000016
    I2C start 98.86689776 0.00000016
    I2C address 98.866908 0.0000888 true 0x6B true
    I2C data 98.86700192 0.0000888 true 0x80
    I2C data 98.86709584 0.0000888 true 0x00
    I2C data 98.86718976 0.0000888 true 0x5C
    I2C data 98.86740368 0.0000888 false 0x2F
    I2C stop 98.8675032 0.00000016
    I2C start 98.87019056 0.00000016
    I2C address 98.87020064 0.0000888 true 0x6B false
    I2C data 98.87029456 0.00008896 true 0x58
    I2C stop 98.87044416 0.00000016
    I2C start 98.8705288 0.00000016
    I2C address 98.87053904 0.0000888 true 0x6B true
    I2C data 98.87063296 0.0000888 true 0x08
    I2C data 98.87072688 0.0000888 false 0xFF
    I2C stop 98.87082624 0.00000016
    I2C start 98.87192128 0.00000016
    I2C address 98.87193152 0.0000888 true 0x6B false
    I2C data 98.87202544 0.0000888 true 0x58
    I2C data 98.87211936 0.0000888 true 0x08
    I2C data 98.87221328 0.0000888 true 0x00
    I2C stop 98.8723128 0.00000016
    I2C start 98.87527376 0.00000016
    I2C address 98.87528384 0.00008896 true 0x6B false
    I2C data 98.87537776 0.00008896 true 0x58
    I2C stop 98.87552736 0.00000016
    I2C start 98.875612 0.00000016
    I2C address 98.87562224 0.0000888 true 0x6B true
    I2C data 98.87571616 0.0000888 true 0x08
    I2C data 98.87581008 0.0000888 false 0xFF
    I2C stop 98.8759096 0.00000016
    I2C start 98.8794232 0.00000016
    I2C address 98.87943328 0.00008896 true 0x6B false
    I2C data 98.87952736 0.0000888 true 0x40
    I2C stop 98.8796768 0.00000016
    I2C start 98.8797616 0.00000016
    I2C address 98.87977168 0.0000888 true 0x6B true
    I2C data 98.8798656 0.0000888 true 0x02
    I2C data 98.87995952 0.0000888 true 0x00
    I2C data 98.88005344 0.0000888 true 0xA2
    I2C data 98.88026752 0.00008864 false 0x2B
    I2C stop 98.88036688 0.00000016
    I2C start 98.88382704 0.00000016
    I2C address 98.88383712 0.0000888 true 0x6B false
    I2C data 98.88393104 0.0000888 true 0x40
    I2C data 98.88402496 0.0000888 true 0x22
    I2C data 98.88411888 0.00008896 true 0x00
    I2C stop 98.8842184 0.00000016
    I2C start 98.8872848 0.00000016
    I2C address 98.88729504 0.0000888 true 0x6B false
    I2C data 98.88738896 0.0000888 true 0x40
    I2C stop 98.8875384 0.00000016
    I2C start 98.8876232 0.00000016
    I2C address 98.88763328 0.00008896 true 0x6B true
    I2C data 98.8877272 0.00008896 true 0x22
    I2C data 98.88782128 0.0000888 false 0x00
    I2C stop 98.88792064 0.00000016
    I2C start 98.89128752 0.00000016
    I2C address 98.8912976 0.00008896 true 0x6B false
    I2C data 98.89139152 0.00008896 true 0x05
    I2C stop 98.89154112 0.00000016
    I2C start 98.89162576 0.00000016
    I2C address 98.891636 0.0000888 true 0x6B true
    I2C data 98.89172992 0.0000888 true 0x00
    I2C data 98.89182384 0.0000888 false 0x00
    I2C stop 98.89192336 0.00000016
    I2C start 98.9281784 0.00000016
    I2C address 98.92818848 0.0000888 true 0x6B false
    I2C data 98.9282824 0.0000888 true 0x42
    I2C stop 98.92843184 0.00000016
    I2C start 98.92851664 0.00000016
    I2C address 98.92852672 0.00008896 true 0x6B true
    I2C data 98.9286208 0.0000888 true 0xA2
    I2C data 98.92871472 0.0000888 false 0x23
    I2C stop 98.92881408 0.00000016
    I2C start 98.93132752 0.00000016
    I2C address 98.9313376 0.0000888 true 0x6B false
    I2C data 98.93143152 0.0000888 true 0x43
    I2C stop 98.93158096 0.00000016
    I2C start 98.93166576 0.00000016
    I2C address 98.93167584 0.00008896 true 0x6B true
    I2C data 98.93176976 0.00008896 true 0xC6
    I2C data 98.93186384 0.0000888 false 0x54
    I2C stop 98.9319632 0.00000016
    I2C start 98.93407792 0.00000016
    I2C address 98.934088 0.0000888 true 0x6B false
    I2C data 98.93418192 0.0000888 true 0x42
    I2C stop 98.93436144 0.00000016
    I2C start 98.93443616 0.00000016
    I2C address 98.93444624 0.00008896 true 0x6B true
    I2C data 98.93454032 0.0000888 true 0xA2
    I2C data 98.93463424 0.0000888 false 0x23
    I2C stop 98.93473376 0.00000016
    I2C start 98.9373336 0.00000016
    I2C address 98.93734384 0.0000888 true 0x6B false
    I2C data 98.93743776 0.0000888 true 0x42
    I2C stop 98.9375872 0.00000016
    I2C start 98.937672 0.00000016
    I2C address 98.93768208 0.0000888 true 0x6B true
    I2C data 98.937776 0.0000888 true 0xA2
    I2C data 98.93786992 0.0000888 false 0x23
    I2C stop 98.93796944 0.00000016
    I2C start 98.94133776 0.00000016
    I2C address 98.94134784 0.00008896 true 0x6B false
    I2C data 98.94144176 0.00008896 true 0x43
    I2C stop 98.94159136 0.00000016
    I2C start 98.941676 0.00000016
    I2C address 98.94168624 0.0000888 true 0x6B true
    I2C data 98.94178016 0.0000888 true 0xC6
    I2C data 98.94187408 0.0000888 false 0x54
    I2C stop 98.9419736 0.00000016
    I2C start 98.94408784 0.00000016
    I2C address 98.94409792 0.00008896 true 0x6B false
    I2C data 98.944192 0.0000888 true 0x42
    I2C stop 98.94437136 0.00000016
    I2C start 98.94444624 0.00000016
    I2C address 98.94445632 0.0000888 true 0x6B true
    I2C data 98.94455024 0.0000888 true 0xA2
    I2C data 98.94464416 0.0000888 false 0x23
    I2C stop 98.94474368 0.00000016
    I2C start 98.94734368 0.00000016
    I2C address 98.94735376 0.0000888 true 0x6B false
    I2C data 98.94744768 0.00008896 true 0x42
    I2C stop 98.94759728 0.00000016
    I2C start 98.94768192 0.00000016
    I2C address 98.94769216 0.0000888 true 0x6B true
    I2C data 98.94778608 0.0000888 true 0xA2
    I2C data 98.94788 0.0000888 false 0x23
    I2C stop 98.94797936 0.00000016
    I2C start 98.95134768 0.00000016
    I2C address 98.95135776 0.00008896 true 0x6B false
    I2C data 98.95145168 0.00008896 true 0x43
    I2C stop 98.95160128 0.00000016
    I2C start 98.95168592 0.00000016
    I2C address 98.95169616 0.0000888 true 0x6B true
    I2C data 98.95179008 0.0000888 true 0xC6
    I2C data 98.951884 0.0000888 false 0x54
    I2C stop 98.95198352 0.00000016
    I2C start 98.95409808 0.00000016
    I2C address 98.95410816 0.0000888 true 0x6B false
    I2C data 98.95420208 0.0000888 true 0x42
    I2C stop 98.9543816 0.00000016
    I2C start 98.95445632 0.00000016
    I2C address 98.9544664 0.00008896 true 0x6B true
    I2C data 98.95456032 0.00008896 true 0xA2
    I2C data 98.9546544 0.0000888 false 0x23
    I2C stop 98.95475376 0.00000016
    I2C start 128.86679264 0.00000016

  • Hi Henning,

    I was able to recreate your behavior. Based on lab behavior the most accurate reading should be reading register 0x42 as two consecutive bytes. It appears there is an issue when reading back register 0x43, reading back register 0x43 seems to provide TS ADC data with flipped bits. I recommend using only the 0x42 2-byte reads for your calculations. Thank you for bringing this to our attention.

    Best Regards,

    Juan Ospina

  • Hi Juan thanx for clearing out. I will go for a word reading of VBatt. I hope for coming customers you will request to add to the BQ25155 data sheet chapter 9.3.3.1 something about the need to set the register 0x58 to select the work requested. This I think is totally left-out and costed me 4 days of frustration. 

    With this I thanx again and close the issue. Br Henning Carlsen GN