This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

USB Host Enumeration problem

Hello,

I've never done a USB Host interface before, now I am trying to
enumerate USB Host using NXP's USBHostLite example using LPC1768
controller.

It stuck at "while (!HOST_RhscIntr);"

I got a short serial output followed by flashing

----------------------------
Initializing Host Stack
Host Initialized
Connect a Mass Storage device
-----------------------------

Can anybody tell me why

"LPC_USB->OTGStCtrl = 0x3;" statement is using. And if I use
"LPC_USB->OTGStCtrl = 0x203;" this statement then serial output is
followed as

------------------------------------
Initializing Host Stack
Host Initialized
Connect a Mass Storage device
ERROR: In Host_EnumDev at Line 358 - rc = -1
---------------------------------------------

The line (Line 358 in usbhost_lpc17xx.c) is this block of code:

rc = HOST_GET_DESCRIPTOR(USB_DESCRIPTOR_TYPE_DEVICE, 0, TDBuffer, 8);
if (rc != OK) {
PRINT_Err(rc);
return (rc);
}

Could it be an issue with my USB drive or hardware?

Many thanks in advance,

-Prakash
9886545216

  • 1. If you have any USB snooper, connect and get the log which is ease to debug.
    2. Check your pendrive with PC, whether it is working or not.

    After this basic debugging, we can go further into the code.

    Regards,
    D.

  • I don't have USB snooper.
    I have checked the pendrive. That was working fine with my PC.

  • I have ensured that PORT_FUNC in OTGStCtrl register is 0x3, PWRD, PPWR, POVRCR, USB-D+ and USB-D- are set correctly for USB host in PINSELx.

    Observations are as follow,

    1. It stuck at "while (!HOST_RhscIntr) ;" and If I not initialize UART, then get rc = -1 at
    ------------ --------- --------- ---------
    rc = HOST_GET_DESCRIPTOR (USB_DESCRIPTOR_ TYPE_DEVICE, 0, TDBuffer, 8);
    if (rc != OK) {
    PRINT_Err(rc) ;
    return (rc);
    } ------------ --------- --------- ---------

    because HOST_TDControlStatus = 5.

    2. Before setting of global power bit in OHCI RHStatus,
    HcRhStatus = OR_RH_STATUS_ LPSC; /* Set Global Power */
    voltage at PWRD pin is 4.68v and after setting of global power
    PWRD = 0.8V
    is it correct?