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.

AM335X USB

hi

My schematic design will be like this picture:

 My expectation would be like this:

        USB0 designed  for usb boot, USB0_DRVBUS used as GPIO;

        USB1 as a host , is designed for program update, USB1_DRVBUS used as GPIO too.

Since usb connector is far away from the chip, so i connect USBx_VBUS  directly to system power supply VCC+5V0, and VCC+5V0 is also connect to the power pin of USB1's connector.

Will the design as the picture described satisfy my expectation? thanks.

  • Hi Eric,
     
    For USB0 you must take the USB0_VBUS sigmal from the USB connector VBUS. For USB1 I strongly recommend that you use a power switch driven by USB1_DRVVBUS. USB1_VBUS should be taken again from the USB connector. You can check the GP EVM schematic (http://processors.wiki.ti.com/images/d/d0/AM335X_gpevm_ZCZBASEBOARD_3H0002_REV1_4A.zip, page 12, bottom of page) for the proper connections.
  • hi, Biser,

          I really need pin USB1_DRVBUS/GPIO3_13 used as GPIO3_13, and  for cost-down , there will be

    only a PTC instead of a usb power switch. what should i do then? thanks

  • In Host mode the USB PHY switches on VBUS through the USB_DRVVBUS pin, then expects a valid voltage on the USB_VBUS pin. This is hardware controlled. There may be software workarounds but I'mm not a software expert and cannot say if/how this can be done.
  • You can use the following patch if USB1_VBUS is directly tied to 5V for host-only mode.

    diff --git a/arch/arm/mach-omap2/omap_phy_internal.c b/arch/arm/mach-omap2/omap_phy_internal.c
    index 13bfef3..e41b224 100644
    --- a/arch/arm/mach-omap2/omap_phy_internal.c
    +++ b/arch/arm/mach-omap2/omap_phy_internal.c
    @@ -288,8 +288,17 @@ void ti81xx_musb_phy_power(u8 id, u8 on , bool wkup)
                                                    TI816X_USBPHY0_NORMAL_MODE;
                            usbphycfg &= ~TI816X_USBPHY_REFCLK_OSC;
                    } else if (cpu_is_am33xx()) {
    -                       usbphycfg &= ~(USBPHY_CM_PWRDN | USBPHY_OTG_PWRDN);
    -                       usbphycfg |= (USBPHY_OTGVDET_EN | USBPHY_OTGSESSEND_EN);
    +                       usbphycfg &= ~(USBPHY_CM_PWRDN | USBPHY_OTG_PWRDN | USBPHY_OTGVDET_EN);
    +
    +                       /* HACK: EVM USB1 port is in host-only mode, clear its
    +                        * USBPHY_OTGVDET_EN bit to ignore first VBUS sensing.
    +                        * Change 1 to 0 if USB0 port is in host-only mode.
    +                        */
    +                       if (id == 1)
    +                               usbphycfg |= USBPHY_OTGSESSEND_EN;
    +                       else
    +                               usbphycfg |= (USBPHY_OTGVDET_EN | USBPHY_OTGSESSEND_EN);
    +
                            usbwkupctrl = AM33XX_USB_WKUP_CTRL_DISABLE;
                    }
            } else {