I'm using an MCUXpresso, SDK 2.8.3, LPC55S16 with bulk endpoints, evolved from mass storage example (but no longer mass storage device). Using endpoints 1, 81, 2 and 82, I can transfer data all day long no problem.
I added endpoints 3 and 83 and increased USB buffer size (USB_DEVICE_IP3511_ENDPOINT_RESERVED_BUFFER_SIZE) to 8K. Previous EPs still work fine. Descriptors show up fine in sniffer tools.
Data transfer on EP3 starts at t=0 in attached log, but after a few transfers (see 11.3mS after first), I start to see OUT with no status. So, the host re-sends in the same USB buffer (DATA1) which then gets a NYET as expected. (orphan warnings go away when the device is by itself on a hub)
So, would someone with more experience with USB mind commenting on whether nor not what I'm seeing is a problem or not? It seems that once the PC sees PING-ACK, the OUT should succeed. But it doesn't. It requires another send of the data on the same buffer (either DATA0 or DATA1) to get back a NYET. And this is pervasive in the log. Over and over it's PING-ACK, then OUT (no response), then PING-ACK, then OUT with same data (no response). After 6 of these, finally there's a NYET and it starts all over again.
In the code I'm calling USB_DeviceRecvRequest() when I am ready for another buffer, and in the callback for that I enqueue the buffer in a fifo (FreeRTOS queue) and then call USB_DeviceRecvRequest again from the callback if the fifo isn't too full.
The most succinct question I could formulate at this point is this: Why is there no status response to an OUT after a PING-ACK? But the same OUT 10 uS later succeeds?
Thanks