lpcware

Problems with LPC1837 USB in High Speed

Discussion created by lpcware Employee on Jun 15, 2016
Latest reply on Sep 19, 2018 by Nick Guzzardo
Content originally posted in LPCWare by MX21 on Fri Jun 13 10:26:55 MST 2014
I'm trying to test if the LPC1837 will work in our application using high speed mode.

The uC firmware is based on the USB_ROM_HID_GENERIC example project.  I modified the interrupt endpoints to use 64 byte reports and bInterval=1.

For the PC side, I'm using the hidapi (http://www.signal11.us/oss/hidapi/) example to write 64 byte reports to the board.

It seems that I'm limited to 64 byte reports.  Anything beyond that and it doesn't work (PC reports bad parameters, which is what it does when the buffer length I send doesn't match the endpoint.

Questions:

1) Can the LPC18xx USB ROM do high speed with larger reports (1024)?  There's a value USB_MAX_PACKET0 defined as 64 with a comment saying DO NOT CHANGE!

2) Even though the reports are set for 64 bytes and I'm sending 64 from the PC, it only receives the first byte of each report in call to USBD_API->hw->ReadEP.  Why is it only 1?  It works going the other way (USBD_API->hw->WriteEP to PC).

3) The call USBD_API->hw->ReadEP always returns 0.  It should return the number of bytes copied, yet I can see the first byte change in the buffer as expected.  Any ideas why?

4) The 64 byte report limit seems to be because it needs to first connect at full speed, so the example sets up two config descriptors for full speed and high speed.  But there is only one report descriptor that defines the report sizes, so how can I specify a different report size for high speed?

Thanks

Outcomes