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.

PROCESSOR-SDK-AM335X: AM335X VBUS error

Part Number: PROCESSOR-SDK-AM335X

Tool/software:

Dear expert,

Our customer's board find there is error when use USB. The error log show as following:

Hardware schematic show as following:

What we find on the debug:

  1. We tried to remove the R110 and hang the drvbus. The Q10 and usb1_vbus are disconnected at the same time, and the vbus is connected to the 5V of the SPI port to achieve stable 5V supply to the vbus.
    In the above conditions we tried to plug in the USB device and found that the VBUS stabilized at 5V without dropping, but still reported the following error and the measurement drvbus dropped from 3.3v to 0v. Not recoverable.
  2. When connecting individual USB devices, the VBUS is stable 5V without drop, no error is reported above, the drvbus is measured from 3.3v to 0V, But it can be restored.

SDK version:https://www.ti.com/tool/download/ANDROIDDEVKIT-JB-AM335X/4.0.1 

Linux kernel version: linux3.2.0

  • Hi Kangjia,

    Before we dig deeper for this problem, please first try to replace CAP C16 with 120uF to see it this resolves the VBUS error.

  • Hi,

    I tried replacing the C16 capacitor with 120uF, which can resolve the VBUS error. However, we still have a question: VBUS power supply is a stable 5V, so why does it still report the vbus error? Could there be abnormal detection by the controller causing a misjudgment?

  • Hi Xiongwei,

    The 120uF CAP on VBUS is required by the USB Specifications. Without this CAP, a USB device could cause high in-rush current which causes the VBUS voltage drop in a very short period of time. You would have to use a high precision scope to see this voltage drop on VBUS.

  • Hi Bin,

    There is still some issue here. can you help answer below questions from customer?

    1. In the AM335x TRM manual (see attachment), section 16.3.7 describes a "Vbus error interrupt." This occurs when USBx_VBUSIN is not detected above the threshold voltage 100ms after USBx_DRVVBUS is pulled high. Does USBx_VBUSIN fall below the threshold and an error is reported, or is there a time limit for it to remain below the threshold?
    2. What is the logic within the USB controller that detects the USBx_VBUSIN voltage after USB boots normally?
    3. During testing, I found that when USBx_DRVVBUS is not used to control USBx_VBUSIN power supply, and a DC-DC converter is used to directly supply 5V to USBx_VBUSIN, a "Vbus error interrupt" error is reported when the VBUS voltage fluctuates, causing the USB bus to crash. What is the controller's internal recovery logic after a "Vbus error interrupt" is triggered? Does USBx_VBUSIN need to remain below a certain threshold for a certain period of time before the USB controller's restart logic is triggered?

    4. Connecting a 120µF capacitor in parallel with the VBUS pin partially resolves the issue, but the "Vbus error interrupt" still occurs when a hub device is connected to the USB. Other USB 2.0 platforms do not have this issue without the 120µF capacitor. Is this issue caused by a lack of internal VBUS debounce processing in the controller?
    5. Besides VBUS falling below the threshold, are there other reasons that can trigger a "Vbus error interrupt"?

    BR,

    Biao

  • Hi Biao,

    1. In the AM335x TRM manual (see attachment), section 16.3.7 describes a "Vbus error interrupt." This occurs when USBx_VBUSIN is not detected above the threshold voltage 100ms after USBx_DRVVBUS is pulled high. Does USBx_VBUSIN fall below the threshold and an error is reported, or is there a time limit for it to remain below the threshold?

    The TRM message you referred is not relevant to the VBUS error issue the customer has. The 100ms delay happens when the USB controller is transitioning to host mode and waiting for the VBUS to be stable. When the VBUS error happens, the USB controller is already in host mode, and the controller/PHY expects the VBUS to stay in 5V without any drop, even for a very short period of time.

    2. What is the logic within the USB controller that detects the USBx_VBUSIN voltage after USB boots normally?

    When the USB controller is already in host mode, the VBUS should stay at 5V (actually VBUS_VALID as defined in the USB spec).

    What is the controller's internal recovery logic after a "Vbus error interrupt" is triggered?

    The controller itself doesn't have a recovery logic. When VBUS error happens, the controller generates an interrupt then is no longer in host mode. But software can implement a recovery after received the VBUS error interrupt to let the controller goes back to host mode again.

    Is this issue caused by a lack of internal VBUS debounce processing in the controller?

    Once the USB controller is already in host mode, there is no VBUS debounce, VBUS should stay above VBUS_VALID threshold.

    5. Besides VBUS falling below the threshold, are there other reasons that can trigger a "Vbus error interrupt"?

    No.