Problems with LPC1837 USB in High Speed

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

Problems with LPC1837 USB in High Speed

723 Views
lpcware
NXP Employee
NXP Employee
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
Labels (1)
0 Kudos
3 Replies

540 Views
lpcware
NXP Employee
NXP Employee
Content originally posted in LPCWare by MX21 on Mon Jun 30 14:35:57 MST 2014
Any help?  Anyone have the USB HID ROM GENERIC example working with more than one byte at a time?
0 Kudos

540 Views
nbgatgi
Contributor IV

Ancient post, but did you find a solution?  I am running example code for LPC54608 and PC code that will send 1k from the PC to the LPC54608 and then echo back to the PC.  Packet size is 1024 bytes using the high-speed PHY.

0 Kudos

540 Views
lpcware
NXP Employee
NXP Employee
Content originally posted in LPCWare by MX21 on Fri Jun 13 16:56:38 MST 2014
Update: I figured out Questions 1 and 4,  but Questions 2 and 3 remain:

2) The reports are set to 1024 bytes, and everything acts as if it is doing that, but only the first byte in my buffer changes after call to USBD_API->hw->ReadReqEP and USBD_API->hw->ReadEP.

3) USBD_API->hw->ReadEP always returns 0.  However, the first byte in my buffer gets through, so I would expect to at least get 1.

Any ideas anyone?
0 Kudos