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.

TPS65987D: SPI Flash

Part Number: TPS65987D
Other Parts Discussed in Thread: TPS65987,

Tool/software:

Hi,

I made another PCB based on your EVM circuit (USB-C-PD-DUO-EVM).I am currently trying to connect the PCB I designed to the FTDI interface on your EVM and use the tps6598x application customization tool to burn the software into the TPS65987D on my PCB.

But currently I encounter the problem that SPI cannot read region, as shown below:

From what I understand, there is a SPI CS Header (J202) on the EVM. By shorting one end, the CS pin of the FTDI can be connected to the CS pin of the Source or Sink SPI Flash(U6 or U201) on the EVM, and then we can read its region through the tool. So I thought that if I connected the J2 Header on the EVM to the SPI Flash on the PCB I designed and J202 of EVM was not shorted at either end, the FTDI on the EVM should recognize the TPS65987D on my PCB and be able to read or burn it through the tool, but it doesn't seem to work. I'm not sure where I went wrong.

Does the TPS65987D need to be pre-programmed before it can be read SPI region via FTDI with the application tool, or does the SPI Flash have any specification requirements?

Below is my circuit:

  •  TPS65987D

  • SPI Flash

  • SPI/I2C Header

Basically, the design is similar to the source PD controller on the EVM, but some parts have been simplified and some components are selected with different specifications but similar functions, and P3V3 is powered by an external power supply.

  • Hi Jun-Wei,

    But currently I encounter the problem that SPI cannot read region, as shown below:

    That is fine, an empty SPI Flash will not have region pointers, as the SPI flash has not been formatted yet. You should use the defaults.

    Does the TPS65987D need to be pre-programmed before it can be read SPI region via FTDI with the application tool, or does the SPI Flash have any specification requirements?

    Correct, you need a pre-programmed flash to read the regions.

    BUT, you should be able to flash an empty flash from the GUI. All this is telling you is that the flash you are currently using has invalid pointers (as it is empty) so the GUI will use the default pointers (which is recommended).

    Have you tried selecting ok at this step? Does the GUI attempt to flash the SPI flash?

    Thanks and Regards,

    Chris

  • Hi Chris,

    Thanks for reply.

    Yes, I tried that at first, but it gets stuck at Erasing Device, as shown below:

    Later I found that the CS pin of my PCB was not connected to the CS pin of the FTDI on the EVM, but to the CS pin on the Source SPI flash on the EVM. After the correction, it worked fine. 

    I would like to confirm with you whether the software burning process is correct. Suppose I want to change some settings, that is, adjust the specific register in the figure below.

    After adjusting and saving the project, can I just burn it through Flash from current project and restart the PCB? Are there any other steps required?

    I would also like to ask if the USB connection can still be established when the PD controllers on both sides of the device and the PCB are communicating via the PD protocol? Because my PCB is designed with a transfer path, the type-C DP and DM are not connected to the PD controller, but to the mini-USB. The purpose is to allow my test device to be connected to the computer at the same time under the PD protocol. But I tried it today and it seems that the USB cannot be recognized.

  • Hi Jun-Wei

    After adjusting and saving the project, can I just burn it through Flash from current project and restart the PCB? Are there any other steps required?

    Correct, provided the flash is burned properly, on the next power up, the PD controller will read the new image and run with the latest configuration. There are no other steps required.

    I would also like to ask if the USB connection can still be established when the PD controllers on both sides of the device and the PCB are communicating via the PD protocol? Because my PCB is designed with a transfer path, the type-C DP and DM are not connected to the PD controller, but to the mini-USB. The purpose is to allow my test device to be connected to the computer at the same time under the PD protocol. But I tried it today and it seems that the USB cannot be recognized.

    PD communication happens on the CC lines and should not interfere electrically the the USB data. The PD controller may need to negotiate the correct data roles(DFP/UFP) for the far end device to connect over USB, but otherwise, the PD controller should not impact the USB communication.

    Thanks and Regards,

    Chris

  • Hi Chris,

    Thanks for reply.

    The main purpose of designing this PCB is to enable our device to carry out the PD protocol, and the test will need to be connected to the computer USB, so I currently disconnect the DP, DM path connected to the PD controller (remove R3014 & R3015), because I am afraid that it will conflict with the computer connection.

    But I currently have tried various devices with Type-C connectors. Those that do not support PD can be connected to the computer USB, while those that support PD cannot recognize USB, which makes me think that the PD controller is not set up properly. If I want the device to be able to use the PD protocol (VBUS above 5V) and also connect to the computer via USB, is there a way to achieve this through the GUI interface settings? Currently I use this project settings to burn. Then add a 9V source PDO on the Transmit Source Capabilities page to increase the device charging voltage to 9V.

    test5.pjt

    And you said 'The PD controller may need to negotiate the correct data roles (DFP/UFP) for the far end device to connect over USB', does this mean that I need to connect the PD controller DP, DM path back(add R3014 & R3015 back)?

    Thanks,

    Leo

  • Thanks,

     We will get back to you soon.

  • Hi Leo,

    The main purpose of designing this PCB is to enable our device to carry out the PD protocol, and the test will need to be connected to the computer USB, so I currently disconnect the DP, DM path connected to the PD controller (remove R3014 & R3015), because I am afraid that it will conflict with the computer connection.

    That is fine, the DP/DM connection to the PD controller is only used for BC1.2, a legacy charging scheme. It's removal will not affect PD negotiation and should not affect USB negotiation and enumeration.

    And you said 'The PD controller may need to negotiate the correct data roles (DFP/UFP) for the far end device to connect over USB', does this mean that I need to connect the PD controller DP, DM path back(add R3014 & R3015 back)?

    No, the data roles negotiate over the CC lines.

    Your issue may be related to this setting. By setting this to DFP, you are initially connecting to the computer with the TPS65987 as the DFP (similar to host) and the computer as the UFP (similar to device).

    Typically PCs want to be the DFP, not the UFP.

    In this pjt, I changed that field to UFP and also disabled process swap to DFP in the "Port Control" register.

    test5_UFPonly.pjt

    Please try this and see if it behaves differently.

    Thanks and Regards,

    Chris

  • Hi Chris,

    Thank you very much for your reply!

    I tried to install your file, but the PD didn't seem to communicate. It seems that the Port Configuration still needs to be set to DFP for the PD to communicate.
    But later I found that the reason for the failure to connect to the USB was due to the PCB I designed. The DP and DM were affected by the grounded TVS diode and could not connect normally. After removing them, I could connect to the computer normally.

    I have encountered a strange problem. When the device communicates with the PD controller, the VBUS power will switch between the default 5V and 9V cycle by cycle. Through the GUI debug mode, it seems that the PP switch will suddenly open and close. I am still trying to figure it out. It seems that overcurrent is triggered, which causes the switch to close. However, what confuses me is that the current should not exceed. The only difference from the EVK design should be the DC/DC converter. I use the RT8290 model.

    In addition, I would like to ask if I can see the Iocc setting value through the GUI interface?

    Thanks,

    Leo

  • Hi Leo,

    I tried to install your file, but the PD didn't seem to communicate. It seems that the Port Configuration still needs to be set to DFP for the PD to communicate.

    Oh interesting, it could be that the far end is UFP/Sink only so would not connect to another UFP port.

    But later I found that the reason for the failure to connect to the USB was due to the PCB I designed. The DP and DM were affected by the grounded TVS diode and could not connect normally. After removing them, I could connect to the computer normally.

    Ok

    In addition, I would like to ask if I can see the Iocc setting value through the GUI interface?

    Iocc is set in the fw and is not configurable in the GUI as it is based off of the negotiated PD contract, which can have variable current depending on what Source PDOs are offered and what the sink requests from the source. It can be affected by setting the max current in the Source PDOs and increasing the peak current field.

    I have encountered a strange problem. When the device communicates with the PD controller, the VBUS power will switch between the default 5V and 9V cycle by cycle. Through the GUI debug mode, it seems that the PP switch will suddenly open and close. I am still trying to figure it out. It seems that overcurrent is triggered, which causes the switch to close. However, what confuses me is that the current should not exceed. The only difference from the EVK design should be the DC/DC converter. I use the RT8290 model.

    Do you have a PD analyzer? Could you share logs of this cycling behavior?

    Could you obtain a scope capture of the VBUS, CC1, and CC2 voltages during this behavior? I'm interested in seeing if the voltage is drooping at all or if it is reaching the correct voltage.

    If you read register 0x40, PD Status, after the toggling, do you see any soft reset or hard reset details?

    Thanks and Regards,

    Chris

  • Hi Chris,

    Unfortunately, I don't have PD Analyzer to see what communication is going on between them.

    Here are the waveforms on the VBUS and CC pins on the oscilloscope when the device is connected to the EVM and the PCB I designed :

    •  Two of Bank 0 Source PDOs (5V, 9V)

              

    • Three of Bank 0 Source PDOs (5V, 9V, 15V)

              

    I use this project setup, only change number of source PDOs to let VBUS can pull up to 9V or 15V.

    7384.test5.pjt

    Judging from the behavior of VBUS, it seems that the Source PD controller does not allow VBUS to be pulled up to a higher voltage for some reason.

    I looked at register 0x40 and sometimes the following description appears in the Soft Reset Details section, and sometimes it changes to "Reset value, no soft reset.", but this is also seen when connecting to EVM.

    In addition, I have noticed a phenomenon that when I connect to the device, the value of the Register will suddenly change from time to time (as shown in the video). I am not sure if this is normal.

    Thanks,

    Leo

  • Hi Leo,

    Yeah, this may be fairly difficult without a PD analyzer, but let's continue to see what we can discover.

    From the scope captures you shared, it seems like the initial 5-V is negotiating as expected which is good, but we are not seeing 9-V. It is not possible to tell if the negotiation completes properly or not without the analyzer, but for now let's assume it is negotiating properly.

    It may be that the power supply is either (1) not being told to transition to 9-V or (2) not transitioning properly.

    Could you test and share scope captures of the following?

    1. Test with only a 5-V source PDO and see if it is stable. If you see a stable 5-V, read the Status and Active RDO registers and report the values.
      1. We are just looking to see if a 5V PD contract is negotiated
    2. With the 5-V and 9-V PDO project, could you recapture the scope log and also add the PDO1 GPIO and the output of the DC-DC that you are using (should be connected to PPHV)
      1. We want to confirm that (assuming a 9-V contract is properly negotiated) the GPIO is triggering and the DC-DC is attempting to transition voltages.

    Thanks for reporting the 0x40 registers, unfortunately it does not clear up too much, but I don't think you are seeing an OCP event, as the register would trigger one.

    The changing settings are unusual and I'm not too sure what they indicate. I am a little surprised to see the port role as sink for a moment, as your config does not seem to ever support that.

    Just to confirm, are you powering the PD controller through a stable 3.3V rail on VIN3V3?

    Thanks and Regards,

    Chris

  • Hi Chris,

    The following are the measurement results:

    • Only 5V Source PDO

    It seems that when the Source PDO is set to only 5V, the PD can communicate normally.

    • 5V, 9V, 15V Source PDOs

    I found that sometimes when I set enable 5V, 9V source PDOs, the PD would work normally, so I changed the setting to enable 5V, 9V, 15V. Under this condition, abnormalities would definitely occur. It seems that the PD protocol of both PD controller has been communicated well, because PDO_2 is turned on, but for some reason PDO_2 is turned off immediately, and strangely, the voltage does not increase but decreases. I use an external power supply for P3V3, and it seems to be stable.

    I am not sure if this is related to the design of the DC/DC converter. The following figure shows the output of my DC/DC converter. Since I used the reference design in the RT8290 datasheet, the output capacitor value and configuration are different from the EVM. I am not sure if this is the reason that affect the PD controller.

    Today I noticed that the debug register value suddenly changed in the debug mode of the GUI interface. It seems to be related to the configuration register setting suddenly changing by itself, but the reason is unknown.

    Thanks,

    Leo

  • Hi Leo,

    I'm not exactly sure why it is happening, but the PPHV voltage dropping from the output of the DC-DC definitely seems to be the issue here.

    When the 9-V PD contract is negotiated, the corresponding GPIO does appear to be triggering which indicates that the PD negotiation has completed.

    But, because the DCDC stops regulating instead of transitioning to the higher voltage(9-V), the PD controller sees a fault (probably UVP), breaks the connection and tries to reconnect.

    The GPIO pulse appears short, but it looks to be at least a couple ms. The PD controller will break the connection once the voltage drops below a certain threshold, as it is expecting the voltage to increase here.

    I may not be able to help you here too much as it seems to be an issues with the DC-DC, not the PD controller, but I think you need to look into why the feedback circuit and GPIOs are not changing the voltage as expected.

    Thanks and Regards,

    Chris

  • Hi Chris,

    I am curious to confirm whether there are differences in the firmware setup of TPS65987D with different codes?

    Thanks,

    Leo

  • Hi Leo,

    Can you elaborate more on what you mean by "difference in the firmware setup of TPS65987D with different codes"?

    What are the different codes you are mentioning?

    If you are talking about FW versions, then yes, there are likely differences between FW version. If using the TPS65987DH, you should be using FW versions where the first 3 numbers are 707(i.e. 707.10.10). For TPS65987DDK, the first three should be 907.

    Thanks and Regards,

    Chris

  • Hi Chris,

    Each IC seems to have an OTP setting. My understanding is that some parameter settings, such as Iocc, are written into the IC before it leaves the factory and cannot be changed afterwards. I'm just curious, is it possible that different numbers on the IC package have different parameter settings? Or are they basically the same because they all use the same FW version?

    The different codes I mentioned refer to the numbers on the IC package, as shown below(On the right is the PD controller used by the EVM):

    The reason I ask this is because the PD controller on the EVM damaged due to some unexpected reasons, so I replaced it with my own PD controller and re-burned the software. Then I found that the behavior of the EVM after connecting to the device became a bit like the PCB I designed. So, just would like to confirm it.

    In addition, the PCB I designed can work normally after some adjustments. It may be that the resistor value of my DC/DC converter does not make the feedback voltage within the specification range. Also, after the PD agrees on a higher voltage, it will turn on the MOSFET switch to change the resistor ratio to output higher voltage. It seems that the DC/DC converter will work abnormally because the switching time is too fast. 

    Thanks,

    Leo

  • Hi Leo,

    Each IC seems to have an OTP setting. My understanding is that some parameter settings, such as Iocc, are written into the IC before it leaves the factory and cannot be changed afterwards. I'm just curious, is it possible that different numbers on the IC package have different parameter settings? Or are they basically the same because they all use the same FW version?

    That should just be a lot number for tracking. There should not be any significant differences in behavior. The two top markings would be the ones to indicate that.

    The reason I ask this is because the PD controller on the EVM damaged due to some unexpected reasons, so I replaced it with my own PD controller and re-burned the software. Then I found that the behavior of the EVM after connecting to the device became a bit like the PCB I designed. So, just would like to confirm it.

    Interesting. I'm not sure what exactly is happening here, but as mentioned above, as long as the chip is the same TPS65987 DH, it should have the same behavior.

    In addition, the PCB I designed can work normally after some adjustments. It may be that the resistor value of my DC/DC converter does not make the feedback voltage within the specification range. Also, after the PD agrees on a higher voltage, it will turn on the MOSFET switch to change the resistor ratio to output higher voltage. It seems that the DC/DC converter will work abnormally because the switching time is too fast. 

    Understood, yes this sounds like a limitation on the DC/DC side. The DC/DC on the TPS65987EVM should work correctly as it has been used for awhile for this application, but unfortunately I do not have many other recommendations here.

    Thanks and Regards,

    Chris