Hello, I have a USB3300 board www.waveshare.com/usb3300-usb-hs-board.htm , I want to use it to achieve HS USB, I have configurated the pins and the main activity like this:
void USBULPIPinoutSet(void) { // // Enable all the peripherals that are used by the ULPI interface. // ROM_SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOB); ROM_SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOL); ROM_SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOM); ROM_SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOP); ROM_SysCtlPeripheralEnable(SYSCTL_PERIPH_USB0); // // ULPI Port B pins. // ROM_GPIOPinConfigure(GPIO_PB2_USB0STP); ROM_GPIOPinConfigure(GPIO_PB3_USB0CLK); ROM_GPIOPinTypeUSBDigital(GPIO_PORTB_BASE, GPIO_PIN_2 | GPIO_PIN_3); GPIOPadConfigSet(GPIO_PORTB_BASE, GPIO_PIN_2 | GPIO_PIN_3, GPIO_STRENGTH_12MA, GPIO_PIN_TYPE_STD); // // ULPI Port P pins. // ROM_GPIOPinConfigure(GPIO_PP2_USB0NXT); ROM_GPIOPinConfigure(GPIO_PP3_USB0DIR); ROM_GPIOPinConfigure(GPIO_PP4_USB0D7); ROM_GPIOPinConfigure(GPIO_PP5_USB0D6); ROM_GPIOPinTypeUSBDigital(GPIO_PORTP_BASE, GPIO_PIN_2 | GPIO_PIN_3 | GPIO_PIN_4 | GPIO_PIN_5); GPIOPadConfigSet(GPIO_PORTP_BASE, GPIO_PIN_2 | GPIO_PIN_3 | GPIO_PIN_4 | GPIO_PIN_5, GPIO_STRENGTH_12MA, GPIO_PIN_TYPE_STD); // // ULPI Port L pins. // ROM_GPIOPinConfigure(GPIO_PL5_USB0D5); ROM_GPIOPinConfigure(GPIO_PL4_USB0D4); ROM_GPIOPinConfigure(GPIO_PL3_USB0D3); ROM_GPIOPinConfigure(GPIO_PL2_USB0D2); ROM_GPIOPinConfigure(GPIO_PL1_USB0D1); ROM_GPIOPinConfigure(GPIO_PL0_USB0D0); ROM_GPIOPinTypeUSBDigital(GPIO_PORTL_BASE, GPIO_PIN_0 | GPIO_PIN_1 | GPIO_PIN_2 | GPIO_PIN_3 | GPIO_PIN_4 | GPIO_PIN_5); GPIOPadConfigSet(GPIO_PORTL_BASE , GPIO_PIN_0 | GPIO_PIN_1 | GPIO_PIN_2 | GPIO_PIN_3 | GPIO_PIN_4 | GPIO_PIN_5, GPIO_STRENGTH_12MA, GPIO_PIN_TYPE_STD); // // ULPI Port M pins used to control the external USB oscillator and the // external USB phy on the DK-TM4C129X-DPHY board. // // PM1 - Enables the USB oscillator on the DK-TM4C129X-DPHY board. // PM3 - Enables the USB phy on the DK-TM4C129X-DPHY board. // ROM_GPIOPinTypeGPIOOutput(GPIO_PORTM_BASE, GPIO_PIN_1 | GPIO_PIN_3); ROM_GPIOPinWrite(GPIO_PORTM_BASE, GPIO_PIN_1 | GPIO_PIN_3, GPIO_PIN_1 | GPIO_PIN_3); USBClockEnable(USB0_BASE,1,USB_CLOCK_EXTERNAL); USBULPIEnable(USB0_BASE); // Enable ULPI USBULPIConfig(USB0_BASE, USB_ULPI_EXTVBUS | USB_ULPI_EXTVBUS_IND); // Configure the ULPI USBHighSpeed(USB0_BASE, true); // Enable High Speed } int main(void) { uint32_t ui32SysClock; uint32_t ui32PLLRate; // uint32_t ui32Setting; ui32SysClock = MAP_SysCtlClockFreqSet((SYSCTL_XTAL_25MHZ | SYSCTL_OSC_MAIN | SYSCTL_USE_PLL | SYSCTL_CFG_VCO_480), 120000000); PinoutSet(false, true); g_bUSBConfigured = false; ROM_SysTickPeriodSet(ui32SysClock / SYSTICKS_PER_SECOND); ROM_SysTickIntEnable(); ROM_SysTickEnable(); USBULPIPinoutSet(); USBBufferInit(&g_sTxBuffer); USBBufferInit(&g_sRxBuffer); //SysCtlVCOGet(SYSCTL_XTAL_25MHZ, &ui32PLLRate); ui32PLLRate = 0; USBDCDFeatureSet(0, USBLIB_FEATURE_CPUCLK, &ui32SysClock); USBDCDFeatureSet(0, USBLIB_FEATURE_USBPLL, &ui32PLLRate); uint32_t ui32ULPI = USBLIB_FEATURE_ULPI_HS; USBDCDFeatureSet(0, USBLIB_FEATURE_USBULPI, &ui32ULPI); USBStackModeSet(0, eUSBModeForceDevice, 0); USBDBulkInit(0, &g_sBulkDevice); while(1) { } }
This was made using the usb_dev_bulk example, the problem is that the Host (my PC) does not recognize the device, Is there any problem with the configuration?, some changes must be done on the host side??. Without the external ULPI PHY , everything works fine, the host recognize the device and the Visual Studio example proyect works fine. Someone has worked with this USB3300 board that I have used???