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.

TPS65982: I_PP_HV Readings using HI-Utility not accurate with TI-EVM board

Expert 1005 points
Part Number: TPS65982

I have a TI-EVM board connected with switches set = 6. I have a 1.5A sink contract at 12V and am measuring the current with two other external meters, the one on the sink and an inline meter. When I set it up to sink 1.5A, they both say that is what I am sinking.

However, the version 2.4 of the HI-Utility gives a reading of 0.864844A. If I do a reverse calculation (using 1024 instead of 1023 because of a HI utility bug), I get 0.864844 * 1024 / 1.2 = 738 for the ADC value. Since the current reading is so far off, I tried to figure out what would give a 1.5A reading, and it looks like the formula should be:

ADC reading * 2.1 / 1023. This gives 738 * 2.1 / 1023 = 1.515A. This is much closer to the true value. I tried a few other reads, and 2.1 seems to be the correct number, not 1.2.

I then set the TI-EVM board up to a 20V contract so that it would use the I_PP_EXT reading instead. The readings I get with the same 1.5A load are all right around 1.5A. One, for instance was 1.435547. Using the same formula, 1.435547 * 1024 / 1.2 = 1225.

So, either the ADC readings are wrong for the I_PP_HV readings, or they need to be scaled with 2.1 instead of 1.2.

Maybe the TI firmware I used (version 2.15r2 of the App config) is just off.

WST

  • Actually, I don't know the version of the TI firmware used to create the image on the TI-EVM board. It could be older. The version register (0x0F) says it is 0,1,1,0. The device info register 0x2F says it is HW0011 and FW0001.01.00.

    I then checked at the other end, my board, which I set to use the PP_HV path to pass the VBUS to the PP_HV in sink mode and to an external power sink connected to PP_HV. The external sink said it was sinking 1.5A, but the I_PP_HV reading using the HI-utility on my board said that it was only measuring 0.007A. I used my own interface to read the register, and the ADC value = 2. So, for some reason, the I_PP_HV current can't be read when the PP_HV switch is set for input. I didn't think this was a problem, but I had the same problem with the PP_EXT path when it is an input.
    The code on my board is FW00001.12.00, so it is the latest.

    WST

  • Hi WST,

    The FW version on the EVM is most likely dated. Can you load a configuration on the 82-EVM using the 2.15r2 version of the app customization tool and confirm if the error persists?

    Thank you,
    Eric
  • Eric,

      It doesn't look like the flash date has anything to do with the problem. I had some trouble, because I didn't want to lose the original special image on my EVM board. So here are the steps I took:

    1) I used the Aardvark flash utility to read off the current image into a .hex file so that I could put it back later.
    2) I then made an image with Revision 2.15rc2 that was a source with 3 PDOs, the 2nd being the 12V PDO using the I_PP_HV path.

    3) I connected this to my system and made the 12V contract (with my board showing a12V sink / 2000mA contract).
    4) I connected the HI-utility to the EVM board and checked, it said it was sourcing the 12V @ 3A.
    5) I turned on my power supply to sink 1.5A. It said it was doing that and my inline current reader said it was sinking 1.53A.
    6) I then read the ADC using the HI-utility for the I_PP_HV path. It still read very low, 0.878906, 0.882422, 0.889453, 0.885937, 0.871875.

    Converting these back to ADC values (using the HI-utility value of 1024 instead of the correct 1023 and the multiplier of 1.2) I get 750, 753, 759, 756, and 744.
    The formula in the firmware user's guide says:

    The current sense accuracy values I found in the datasheet as:

    If I used this I would get for example 1.2 * 750 / 1023 * 5 = 4.4A, clearly incorrect.

    I then disconnected the contract and changed my board to ask for a 20V contract. I reconnected and loaded it again at 1.5A. I then read the ADC register of the EVM board, this time the I_PP_EXT channel. It read at 1.523438A. Reversing this by answer * 1024 / 1.2 = 1300 for an ADC reading.

    Since they are both supposed to match, I would expect the ADC readings to be about the same, and they aren't.

    Perhaps these values I'm calculating really aren't the ADC readings, so I'll check by looking at register 9 after a read, the DATA1 register...
    I did another I_PP_EXT reading... the HI-Utility said the value was 1.511719A. Working backwards with the flawed 1024, I get ADC = 1.511719*1024/1.2 = 1290.
    Now, assuming a divider of 5, the REAL adc reading should be 258.
    I then used the HI-Utility read command to look at register 9, I get 0x03, 0x02, 0x01. 0x3 = ADC channel #, 0x102 = 258, the ADC value. So, this matches, except the HI-utility should use 1023, so the ADC reading converts to 258 * 1.2/1023 * 5 = 1.513196A.

    So, then I went back to the 12V contract, using the I_PP_HV ADC channel (#5) to see if I could figure out what was going on.
    I now did a I_PP_HV reading, and got 0.868359. Working backwards I get 741.
    I read register 9 and saw 0x05, 0xF7. This works out to 247 from channel 5. If I multiply this by 5, I get 1235, not 741!!
    And 247 * 1.2 / 1023 * 5 = 1.44868A, a much more reasonable value for the current.  741/247 = 3. So that is the problem, the Hi-utility formula is bad.

    Summing up:

    • I spent way too much time debugging this when all I want is the I_PP_EXT sink current reading, which I can't get at this time.
    • I also can't get the I_PP_HV value when in sink mode, the ADC value always reads a 2.
    • The problem had nothing to do with the version of the code on the EVM board, the problem is with the HI-Utility.
    • The I_PP_EXT reading almost uses the correct formula of ADC * 1.2 / 1023 * 5 (It uses 1024 instead).
    • The I_PP_HV reading doesn't use the correct formula, it currently uses a 3 instead of a 5 as a multiplier (and still has the 1024 vs 1023 slight error).
    • The error of 5/3 was close to the 2.1/1.2 that I said I needed to use, it was really 2/1.2.

    I don't work for TI and don't claim any of this as true, but it is my best guess at the problem. Hopefully there will be a fix for the I_PP_EXT and I_PP_HV readings when sinking current (I had another post about the I_PP_EXT problem).

    For now, if you want to use the I_PP_HV value, just multiply it by 5/3. So the last one I listed, 0.868359A -> 1.447A, close enough.

    Warren