Content originally posted in LPCWare by waltwallach on Sun Mar 16 16:23:55 MST 2014
I am extending the LPC USB stack to support hubs and multiple devices. As a start, I am configuring the Mass Storage demo to use pipe 1 as its EP0, and pipes 2 and 3 as its data pipes (pipe 0 remains for the host control endpoint).
I set the device address to 1, and pipe 1 to EP0 for device 1. I can get the device descriptor and config descriptors.
However, when I get the string descriptor, or set the configuration, the request never completes. Here is the stack for USB_Host_GetDeviceStringDescriptor:
ngx_xplorer_1830_lpcusblib_DualDeviceAudioMSC Debug (1) [C/C++ (NXP Semiconductors) MCU Application]
ngx_xplorer_1830_lpcusblib_DualDeviceAudioMSC.axf
Thread [1] <main> (Suspended : Signal : SIGINT:Interrupt)
HcdQHD() at EHCI.c:857 0x1a00f472
WaitForTransferComplete() at EHCI.c:797 0x1a00f314
HcdControlTransfer() at EHCI.c:317 0x1a00deac
USB_Host_SendControlRequest() at HostStandardReq.c:56 0x1a00a7d8
USB_Host_GetDeviceStringDescriptor() at HostStandardReq.c:281 0x1a00aa46
EVENT_USB_Host_DeviceEnumerationComplete() at MassStorageHost.c:372 0x1a004abe
USB_Host_ProcessNextHostState() at Host.c:181 0x1a00a610
USB_HostTask() at USBTask.c:91 0x1a00b8aa
USB_USBTask() at USBTask.c:62 0x1a00b800
main() at DualDevice.c:181 0x1a00421a
gdb
HcdQHD
Since the device descriptor calls out string descriptor indexes, I wopuild expect the device will support get string descriptor requests. In any case, as the demo stack is delivered (with USB_SetDeviceAddress stubbed out), all device communication is using device address 0 and these calls work.
Is there some issue using non-zero device addresses with the LPC1837 and the LPCUSB stack?