Other Parts Discussed in Thread: , HD3SS460
Despite what the datasheet says and the user's manual says I don't think that the I_PP_EXT is readable if the external path is set up for SINK sensing.
I have a board with the TPS65982 on it and an external 5mOhm sense resistor. I have the SENSEP line of the TPS connected to the VBUS side of the resistor and the SENSEN line connected to the PP_EXT side. I then made a connection to SINK 1.5A into a power supply/sink with a 20V contract with the TI-EVM board. My connections match Figure 29 below, except that I am using a 5mOhm R. I set the TI-EVM board to switches = 6 so that it could supply 3A/5A @ 20V. I connected a external 20V laptop supply so that it could supply the 1.5A.
When I make the connection and use the Aardvark and the TI-Utilitiy to read the I_PP_EXT ADC channel, I read 0.000A on my board. If I connect the Aardvark to the TI-EVM board, I read anywhere from 1.35A - 1.65A (it isn't very accurate, but good enough to know the current is flowing, and I can take multiple readings and average them). The TI-EVM is connected as in the HVL117D schematic below:
R5 & R3 are loaded, so it is connected as a source, with the SenseP on the PP_EXT side. The ADC read works on the TI-EVM board. I read the STATUS register on both boards, and they both said that the PP_EXT path was being used, one as an input and one as an output.
So, I wondered if there was something wrong with the ADC trying to do a SINK reading and it was ok doing source reading, since that is what I found. I verified that HI-Utility said that the TI-EVM board was in source mode and my board was in sink mode when I moved the Aardvark between them and read the registers. So, I should have been able to read the same values as the TI-EVM board when I connected the Aardvark to my board, but all I get is 0.00000A. I have my own application that alternatively reads the ADC through the I2C bus and the ADC channel 3 gives an ADC reading of 0 from my board when operating as sink. I did an experiment by changing the System Config register to pretend that my sense resistor was 10mOhms and the contract quit, since this would look like an overload. So I know that the TPS65982 could check the current limit in sink mode, even it I couldn't get an ADC reading. I changed the System register back. I also wondered if the ADC readings don't work in SINK mode with a 5mOhm resistor.
To check, I then changed my board and the EVM board. I soldered wires on my board to connect SENSEP to the PP_EXT side of the 5mOhm sense R and SENSEN to the VBUS side of the sense R, so it was in a source configuration. I then moved the R5 and R3 0ohm resistors on my TI-EVM board to R2 and R6, to connect it to read current when operating as SINK. I changed the contract on my board to be a source and set up the PP_EXT supply for 20V/3A. I changed the TI-EVM board to switch setting = 7, so that it would be a SINK.
After making the contract and verifying that it connected with my board as the PD source and the TI-EVM as the PD sink, I connected the Aardvark to each board and read the I_PP_EXT channel of the ADC (#3). The I_PP_EXT ADC reading from my board said that it was sourcing about 40mA (the TI-EVM board doesn't have a big load, just the LEDs) and it had made the 20V contract. So, even with the 5mOhm resistor, I was now able to get a I_PP_EXT reading on my board, but this was with the source connection. HOWEVER, the I_PP_EXT reading on the TI-EVM board was 0.00000A! This board has the 10mOhm resistor (at least that is what the schematic says and what the System Config register says). But it wouldn't read the 40mA of current despite multiple readings of the ADC, it always reads 0.00000A. Multiple readings of my board with the source connection, range from 0.011A - 0.050A (which again, I can average). I changed the contract and supply to 12V instead of 20V since the TI-EVM in sink mode always uses the PP_EXT path, but the readings on the TI-EVM I_PP_EXT path were still 0.0A.
I couldn't think of any more experiments and I don't have an explanation for this behavior, since it seems like the SENSEP would be higher than the SENSEN connected as in Fig20 or 29 in the datasheet when in the source/sink modes. It isn't the fact that I'm using a 5mOhm sense resistor, since the TI-EVM board has the same problem when re-wired and it has a 10mOhm resistor.
All I can figure is that the ADC doesn't work properly for the ADC reading of channel 3 when PP_EXT < VBUS and SENSEP > SENSEN, but that is just a guess.
In all my measurements above, I had both the external power supply and an in-line current meter showing the current flowing, as well as the TPS65982 at the source end giving good readings from its ADC.
Is there another register I need to set to make this work? I couldn't see anything in the System Config bits that would affect this.
Can you repeat the experiments with the TI-EVM board in sink mode and using R2/R6 and get a reading?
It looks like others have had this problem, see the discussion (TPS65982: TPS65982 Sink Current read from ADC).
Perhaps the I_PP_EXT ADC value is only available when connected as in Figure 20, as referenced in section 8.3.3.11 of the Datasheet.
Thanks for any answers,
WST