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.

USB-PD-CHG-EVM-01: USB-PD-CHG-EVM-01-Different Current Results with Different Adapters

Part Number: USB-PD-CHG-EVM-01
Other Parts Discussed in Thread: BQ25798, TPS25751, TPS25730EVM, BQ25758, , TPS26750

Tool/software:TPS25751 、BQ25798

I prepared two batteries (single-cell 4.2V each) for a simple charging test. I’ve already switched to JP1 and used the following bin file for the setup. However, I’m observing different results depending on the adapter, even with the same settings.

Specifically, at 20V, many adapters only output 0.08A of current.

Later, I tested each adapter by using it to charge a laptop, and I found that at 20V, the current could reach 2.3A to 2.4A. This leads me to believe that there is no issue with the adapters themselves.

I’m not sure what could be causing this behavior.
Could someone help clarify this issue?

 1541.bin file.zip

  • Hi L,

    Can you share the .json you are using? I can't retrieve config settings from the bin file.

    How are you testing this system? Are the batteries fully charged? Are you keeping them in the fast charge window of the charge profile? If you get too close to the max battery/charge voltage, the charger may hit the termination current window and limit charging speed.

    Do you have the ability to capture USB-C PD logs?

    If yes, please provide a PD log of all 3 adapters at 20-V contracts

    Do you have a way to read registers from the PD controller?

    If yes, please read and report the active RDO register on the PD controller

    Can you sniff I2C?

    If yes, please read and report the I2C communication between the PD controller and BQ device when each adapter is plugged in (for the 20-V case).

    Thanks and Regards,

    Chris

  • Hi L,

    I removed the previous responses and we can continue correspondence here. If you need to share anything confidential, we can share it through the "private message" function of E2E

    Here is a summary of what is missing:

    Testing process: Windows platform writes bin via FT232H, after writing battery is reinserted to make sure PD reads newly flashed settings. During charging, a USB ammeter is used to observe current, setup is left idle for 10-15 seconds.

    Battery voltage is around 6.9V during testing, battery model is INR21700M50T.

    Main difference between JSON are sink voltage and charging current values. Chart was generated by same CHG-EVM, only difference being the charger.

    Current measurement is taken at the charger.

    Thanks and Regards,

    Chris

  • Hi L,

    From the chart, the projects do appear to be working properly, and it seems like you are having issues with specific charger. With the clarification that the measured current is from the wall adapter (not the charge current), it does appear like you are drawing current and voltages respective of the settings in the project. This is primarily seen in the data from the first wall adapter (Apple 61W)

    For the other two, is the 20-V contract negotiating properly? I see you can only draw .08-A or it is only drawing load at .08-A. Can you measure the VBUS voltage and report it's exact value? Do you see a stable VBUS, or do you see any disconnecting? It seems like you do see the 20-V contract working properly in one case, but not for the other adapters, so we need to determine how/why the behavior is different for those adapters.

    Sniffing I2C will allow us to see if the PD controller is programming the BQ to limit input or charge current, which would limit the input type-C current.

    Reading registers over I2C could provide information on the PD contract negotiated and confirm or deny if the issue is adapter related.

    A PD log provides similar information to the registers.

    Thanks and Regards,

    Chris

  • Hi Chris

    Thank you very much for your help, and I sincerely apologize for any inconvenience caused by my carelessness.

    Regarding the VBUS you mentioned, are you referring to the VBUS pin on the RQ25798 , or the VBUS pin on the 25751?
    If it is the VBUS from the RQ25798, the voltage I measured at TP1 is approximately 20V.
    However, if it is the VBUS pin on the 25751, the circuit diagram does not show any pin for measurement.

    Below is a photo showing the USB voltage and current readings during charging.


    As for the other methods(I2C signal) , my colleagues and I are already working on how to proceed with the operation and analysis.

    Today is our last working day before the holiday, so if you reply, we will not be able to see your message until after February 3rd

    Thanks and best Regards

    L

  • HI L,

    The BQ25798 VBUS and the USB Voltage should be enough, the USB voltage should reflect VBUS on the TPS25751.

    Thanks, looking forward to the I2C results.

    To outline the system, where things might break down, and what we are looking for:

    On boot, the PD controller will program some initial configuration values to the BQ device like charge current, term current, and some operating configuration.

    When a sink contract is negotiated on the PD port, the PD controller should program some information regarding the input current limit that should reflect the negotiated contract on the PD port. There may be a couple reasons why things are failing:

    1. The PD contract is not negotiating full power -> check the active RDO register on the PD controller to see what current was negotiated

    2. The PD controller did not program the right charge current or input current to the BQ and the BQ is limiting power draw -> check I2C traffic between ICs during connection to adapter to confirm

    3. other reasons may include, battery is fully charged, issue with adapter and limiting power draw

    Thanks and Regards,

    Chris

  • Hi Chris

    Thank you for explaining the workflow between the PD controller and the BQ device, as well as the key points to check.

    I currently have a few questions that I would like to ask:

    1. Can the I2C signals between the PD controller and the BQ device be captured through J5 or J7?
      Today, I obtained a logic analyzer: Saleae Logic16, and I used the Logic 2 software to capture some signals. These signals were collected from Pin 1 and Pin 3 of J5. I have attached the captured data for reference.

      PD and BQ i2c.zip

    2. A colleague suggested another approach: capturing CC1/CC2 signals using Saleae Logic16 for decoding. I have seen some relevant discussions about this extension on the Saleae forum, but I am not sure if you have any experience with this method.

    3. Regarding reading the RDO register, I am using an Aardvark along with the official Control Center software, but I am not getting any response. I believe I might be doing something wrong. Do you have any recommended forum posts I can refer to, or could you share your experience with this?


    Thanks and best Regards

    L

  • Hi L,

    Can the I2C signals between the PD controller and the BQ device be captured through J5 or J7?

    From the schematic, the two look connected and have the same signals, so either should be good.

    For reference, all of the writes to address 0x6B are writes to the battery charger from the PD controller. I'm a bit concerned about the logs you have shared with me. I only expect I2C writes on that bus to addresses 0x50(EEPROM) or 0x6B(BQ device). 

    • All of them have some writes to 0x00 and stuff that looks like noise. I'm a little hesitant to provide too much feedback on these logs as I'm not sure if they are correct, but here are some comments
      • APPLE 61W - There do seem to be some writes to 0x6B, which is good. Still a lot of random looking writes.
      • Apple 67W - I see some writes to 0x6B which is good, but a lot of other writes as well. There is a write to the IINDPM register that looks too large, and may be causing issues.
      • Gan_65W - Nothing conclusive here
    • Could you try retaking the captures to see if they can be improved in any way?
      • Could you also add a capture of VBUS during this time? If you are going up to 20-V, you might want to halve the signal. This will help with understanding plug timing
    • I attached an example log from the CHG-EVM. It looks cleaner with only writes to 0x50 and 0x6B and captures the power up I2C sequence of the EVM.

    https://e2e.ti.com/cfs-file/__key/communityserver-discussions-components-files/196/Example-Power-up.sal

    Also, could you re-share the json? I deleted it earlier in the thread and forgot to save it.

    A colleague suggested another approach: capturing CC1/CC2 signals using Saleae Logic16 for decoding. I have seen some relevant discussions about this extension on the Saleae forum, but I am not sure if you have any experience with this method.

    I have not used the Saleae CC-line decoder in the past, so cannot comment here. It may be worth trying, but I am not sure how good the tool is.

    Regarding reading the RDO register, I am using an Aardvark along with the official Control Center software, but I am not getting any response. I believe I might be doing something wrong. Do you have any recommended forum posts I can refer to, or could you share your experience with this?

    For I2C reading from the PD controller, you need to connect to the I2Ct pins, which come from the J3 jumper.

    See the TPS25751 TRM section 1.3.1 for specifics on the I2Cw and I2Cr format.

    Here is an example of what an I2Cw and I2Crmight look like from the Control Center view.

    Make sure you have the correct slave Address set. It should be 0x21

    when you use the I2Cr, the second byte is the num data bytes, so if you want to read a register with data size 4, you need to set the "Number of Data Bytes" in control center to 5 (data byte + data size).

    Thanks and Regards,

    Chris

  • Hi Chris

    Thank you for providing the example and the explanation for using Aardvark. I will provide the JSON again.

    4745.json.zip

    I’ve reviewed the example you provided, and there seems to be a significant difference in the results for both SDA and SCL. It might be that there’s an issue with the way the capture was performed.

    I will reattempt the signal capture. Just to clarify, here’s the process I followed during the first I2C signal capture:

    1. Opened Logic2 software and started the capture.
    2. Waited for 2-3 seconds before powering on the adapter.
    3. After about 7 seconds, I stopped the capture (while the adapter remained power on).

    Could you let me know if you think any adjustments are needed to this process? If so, I will apply them during the next capture.

    I will continue working on the VBUS and RDO measurements as well, but it may take a few more days.

    Thank you again for your assistance!

    Thanks and best Regards

    L

  • And I performed a simple additional test with the TPS25730EVM today.

    The settings were as follows:

    • Minimum voltage: 5V
    • Maximum voltage: 20V
    • Operating current: 1.5A
    • Maximum current: 3A

    The electronic load was set to CRH mode with a resistance of 10Ω.

    As a result, the system operated normally.

  • Hi L,

    Thanks for the Jsons and the Logs, I have a hypothesis on what may be causing the issues.

    In your JSONs, for the 20-V configurations, you have selected the 100-W(20V) configs. This means that we would accept 20V >3A contracts.

    The BQ25798 has a maximum input current of 3.3-A, so if a PD contract is accepted that is near or greater than 3.3-A, it will attempt to program the input current limit register of the BQ25758 at or above that value. This gets worse when you factor in the INDPM percentage increase into the current calculation.

    I'm thinking this is why the slightly higher power adapters are seeing failures, as they are negotiating slightly higher current currents.

    When the BQ register for IINDPM gets written with a value that is too large, the write is ignored. By default, the PD controller programs the IINDPM to a safe low current value, and will update it on connection. If we update it with the out of range value on connection, the first safe low current value remains.

    There are a couple ways to fix this and a couple settings to keep in mind.

    1. Choose the 60-W option for Sink capabilities.

    2. You can manually set the max current for 20-V contracts in the Advanced Config->Transmit Sink Capabilities->SinkPDO4.

    3. Question 12 will add margin to the current write to the BQ IINDPM register. i.e. if we negotiate a 3-A contract, it will program 3*1.05 = 3.15. You need to make sure the max current you will sink * this percentage does not exceed 3.3-A. You can set it to 0% to be safe as well.

    Try these out (I would recommend with just 1 first) and let me know how it goes.

    Thanks and Regards,

    Chris

  • Hi Chris

    Thank you for your setup suggestions. I followed the first and third recommendations and made the adjustments accordingly. The final current value now matches expectations, and everything seems to be functioning normally.

    However, I have a question I’d like to clarify:

    If the issue was due to the 20V->3A current being too close to the BQ25798’s maximum limit, causing the register write to fail, why is it that changing to 60W (20V) allows the write to succeed, but 100W (20V) results in failure? Is it because the theoretical maximum current for 60W (20V) is 3A (60W / 20V), and even with IINDPM set to 5%, it will never exceed 3.3A, which is why the write succeeds?

    If that’s the case, then when selecting 100W (20V), IINDPM is set to 0%, and it should also succeed. How should we understand this behavior?

    I’m sharing the updated JSON files: one for 60W (20V) / IINDPM -5%, and another for 100W (20V) / IINDPM 0%

    update json.zip


    Thanks and best Regards

    L


  • Hi L,

    If the issue was due to the 20V->3A current being too close to the BQ25798’s maximum limit, causing the register write to fail, why is it that changing to 60W (20V) allows the write to succeed, but 100W (20V) results in failure? Is it because the theoretical maximum current for 60W (20V) is 3A (60W / 20V), and even with IINDPM set to 5%, it will never exceed 3.3A, which is why the write succeeds?

    I am not 100% sure here as we would need a PD log or "Active RDO" register read to confirm, but it seems very likely. Yes, your understanding is correct for my reasoning for this issue.

    A max value of 3-A with the 5% setting should result in a worst case 3*1.05 = 3.15-A which should be less than 3.3-A and should be safe.

    If that’s the case, then when selecting 100W (20V), IINDPM is set to 0%, and it should also succeed. How should we understand this behavior?

    It could work, but the best way to confirm would be to check the PD log and the I2C writes. These seem to be right on the edge of not working. If the 65-W adapter allows for 65W/20V = 3.25-A max, then this one should be fine, but the 67-W adapter would program 3.35 which would be too large. You should not have the setting ever set to 100-W, as this will allow >3.3-A 20-V contracts to be accepted. The safest option would be to selection the 60-W contract. If you do want the additional .2-.3-A, you can go into advanced settings and manually set the 20-V PDO current to a slightly higher current than 3-A, but be careful setting it too close to 3.3-A.

    Thanks and Regards,

    Chris

  • Hi Chris

    I checked the advanced settings (Transmit Sink Capabilities) for both 100W (INDPM 0%) and 100W (INDPM 5%), and I found that Sink PDO4 is set to 5A by default.I have never changed this setting.

    Does this mean that even if my charger and battery support higher power(ex 100W、140W、240W), the USB-PD-CHG-EVM-01 cannot sink 5A (100W/20V) and is limited to 3A (60W/20V) due to the BQ25798’s maximum input current of 3.3A?

    I will continue running additional experiments and will post again if I encounter any further issues.

    Thank you for your detailed explanations and assistance over the past few days!



    Thanks and best Regards

    L

  • Hi L,

    The sink power questionnaire actually sets those settings in advanced config. By selecting 100-W in the questionnaire, it sets the 20-V PDO to 20-V 5-A in the background. (60-W makes it 3-A). This is expected and is something to keep in mind when using the GUI. If you do make modifications to advanced config, be careful changing the questionnaire responses as they will automatically configure/change advanced config settings.

    Does this mean that even if my charger and battery support higher power(ex 100W、140W、240W), the USB-PD-CHG-EVM-01 cannot sink 5A (100W/20V) and is limited to 3A (60W/20V) due to the BQ25798’s maximum input current of 3.3A?

    Correct. The 60-W (primarily the ~3-A) is a limitation of the BQs input current. The TPS25751 only supports SPR power ranges (100-W max), so it is limited to 100-W. If you want EPR(Extended Power Range, which is the >100-W options), you need to use a different ic, specifically the TPS26750.

    You're welcome! Closing this thread for now. Feel free to re-open to continue the topic or submit a new thread with any new questions.

    Thanks and Regards,

    Chris