2021-03-24 04:42 PM
Hi,
The bit [1:0] for STUSB4500 registry CC_STATUS(0x11) is labeled as
CC1_STATE:
(available when CONNECT_result =1)
00: Reserved
01: SNK.Default (Above minimum vRd-Connect)
10: SNK.Power1.5 (Above minimum vRd-Connect)
11: SNK.Power3.0 (Above minimum vRd-Connect)
What is the meaning for SNK.Power1.5 and SNK.Power3.0? What is the meaning for "Above minimum vRd-Connect"?
I found that when I connect to a PC USB-A port, CC_STATUS(0x11) is always 0x11; While when I connect to a lab power supply, CC_STATUS(0x11) is always 0x13. Is it guaranteed?
When USB-C PD is not used, our devices need to be able to power up when connecting to lab power supply(5V, 3A), but not power on when connecting a PC USB-A port. We are trying to find a way to detect the connection type and the CC_STATUS register seems promising.
Thanks,
Winston
Solved! Go to Solution.
2021-03-30 06:39 PM
Hello,
The USB-C specification defines 3 possible currents at 5V provided by the Power Source:
So the CC1_STATE and CC2_STATE bits from STUSB4500 register indicate what is the maximum current at 5V that the USB-C Source can provide to your SINK application.
A legacy USB Type-A will always have the value: SNK.Default because it can only provide the default power before USB-C was created.
However for a USB-C port, you cannot know in advance if it will provide 1.5A or 3.0A maximum. That’s why you need to use the CC1_STATE register to determine if the USB-C source that you are connected to can provide enough current.
You need to implement a minimal boot in your application to at least be able to power the STUSB4500 and the microcontroller with minimal current.
Then use the microcontroller to read the CC1_STATE bits in CC_STATUS register to determine if the attached Source can provide enough current.
If not enough current is available, then you can signal an error to the user by blinking an LED for example.
A simpler way to implement this is to use the STUSB4500L version, which has dedicated GPIO pins (RP_1A5 and RP_3A pins) to tell you if the USB-C can provide 1.5A or 3.0A.
https://www.st.com/en/interfaces-and-transceivers/stusb4500l.html
Regards,
Gregory
2021-03-30 06:39 PM
Hello,
The USB-C specification defines 3 possible currents at 5V provided by the Power Source:
So the CC1_STATE and CC2_STATE bits from STUSB4500 register indicate what is the maximum current at 5V that the USB-C Source can provide to your SINK application.
A legacy USB Type-A will always have the value: SNK.Default because it can only provide the default power before USB-C was created.
However for a USB-C port, you cannot know in advance if it will provide 1.5A or 3.0A maximum. That’s why you need to use the CC1_STATE register to determine if the USB-C source that you are connected to can provide enough current.
You need to implement a minimal boot in your application to at least be able to power the STUSB4500 and the microcontroller with minimal current.
Then use the microcontroller to read the CC1_STATE bits in CC_STATUS register to determine if the attached Source can provide enough current.
If not enough current is available, then you can signal an error to the user by blinking an LED for example.
A simpler way to implement this is to use the STUSB4500L version, which has dedicated GPIO pins (RP_1A5 and RP_3A pins) to tell you if the USB-C can provide 1.5A or 3.0A.
https://www.st.com/en/interfaces-and-transceivers/stusb4500l.html
Regards,
Gregory
2021-07-20 01:33 PM
Hello,
Thanks for the reply. I have follow up questions after testing.
We are using STUSB4500(Not the STUSB4500L version) with external lab supply power. When I set the lab power supply to 5V, for some of our boards, CC_STATUS reads out as 0x13 (which means it provide 3A), but for some boards, CC_STATUS reads out 0x11 (means legacy USB2.0 default power). My question is: based on what condition does STUSB4500 fill out CC_STATUS? How does STUSB4500 know the power source is legacy USB 2.0 or lab power supply?
Another question is that, when I turn up the table power supply voltage, say to 7V, for all our boards, CC_STATUS reads out 0x20. What does it mean and how to make it go out of the state (the last 2 bits are zeros and are reserved)?
Thanks,
Winston
2021-07-28 06:46 PM
The STUSB4500 detects on the CC pin the pull-up resistor value located on the USB-C SOURCE side, and fill the appropriate register.
The VBUS voltage is supposed to start at 5V. If you provide 7V instead, the STUSB4500 will detect an incorrect voltage and won’t establish a correct connection. So it is as if the cable was not properly connected.