I'm working on a design which is a UFP. When it is connected to a Samsung Galaxy S9 smart phone, I see the TPS65981 negotiate for the phone to be the power source based on my Sink PDO, as expected:
I get the Source_Capabilities, Request, Accept, and PS_RDY, all with GoodCRC.
However, when I connect the same board to a Google Pixel 3 phone, I get into a strange loop:
The phone sends out the Source_Capabilities message, then the TPS65981 responds with a GoodCRC, followed by a Request, followed by what appears to be a spurious GoodCRC? The phone never issues a GoodCRC, but it does attempt to send an Accept message, which is never acknowledged by the TPS65981. Since the Accept doesn't get a GoodCRC response, the phone starts generating Source_Capabilities messages and the whole process repeats for potentially thousands of messages. The fifth column is the message id; it keeps cycling between 0 and 1.
Eventually, somebody triggers a hard reset of the interface. I'm not sure if it's the phone or the TPS65981. After that, the negotiation works as expected:
It can take up to a minute for the phone to successfully establish a connection. Any ideas on what could be causing this?
I'm using version 4.01 of the Application Customization Tool.