Skip to main content
Visitor II
March 24, 2021
Solved

What is meaning for bit[1:0] for CC_STATUS(0x11) in STUSB4500?

  • March 24, 2021
  • 3 replies
  • 1540 views

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

    This topic has been closed for replies.
    Best answer by Gregory Go.

    Hello,

    The USB-C specification defines 3 possible currents at 5V provided by the Power Source:

    • Default power (i.e. legacy from USB2.0)
    • 1.5A
    • 3.0A

    0693W000008yLo9QAE.png 

    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.

    • 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?

    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.

    • 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.

    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

    0693W000008yLoEQAU.png 

    Regards,

    Gregory

    3 replies

    Visitor II
    March 31, 2021

    Hello,

    The USB-C specification defines 3 possible currents at 5V provided by the Power Source:

    • Default power (i.e. legacy from USB2.0)
    • 1.5A
    • 3.0A

    0693W000008yLo9QAE.png 

    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.

    • 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?

    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.

    • 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.

    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

    0693W000008yLoEQAU.png 

    Regards,

    Gregory

    WGao.1Author
    Visitor II
    July 20, 2021

    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

    Visitor II
    July 29, 2021
    • How does STUSB4500 know the power source is legacy USB 2.0 or lab power supply?

    The STUSB4500 detects on the CC pin the pull-up resistor value located on the USB-C SOURCE side, and fill the appropriate register.

    0693W00000D0w2vQAB.png 

    • 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)?

    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.