USB Bulk XACT Error
I'm creating a new USB device with a custom USB class on an STM32F779NIH. We have previously developed a fully operational device doing the same thing with USB full speed, now we're trying to do the same with USB highspeed using an external ULPI. I'm reasonably certain the issue is firmware not hardware.
The overall scheme is using bulk transfers to send data out at a periodic rate, say 1ms for example, so 8 microframes will elapse before data is sent back to a read request. The PC read function will blocks until it receives that data which creates a timing loop that turns out is quite resilient compared to Windows timers. Anyway, back to this device, when I run my user application, it will generate a read request for which the device will return a response after 1ms with a set of data which is correctly decoded. This is repeated 8 times, but on the 8th packet, my device returns no data and a status of 0xC0000011 (which is a USBD_STATUS_XACT_ERROR) according to WireShark:

According to page 34 of this PDF: https://www.intel.com/content/dam/www/public/us/en/documents/technical-specifications/ehci-specification-for-usb.pdf it may mean:
Set to a one by the Host Controller during status update in the case where the host did not receive a valid
response from the device (Timeout, CRC, Bad PID, etc.). This bit may only be set for isochronous IN transactions.
However, 1) this definition is for isochronous, 2, the bit position doesn't align with the data in the image above, and 3) as far as I can tell, this is being set somewhere in the device firmware rather than from the host. This is the first time I'm using a ULPI, so I'm uncertain if perhaps it is generating this directly. I'm am, however, fairly certain this isn't a timeout issue (at least from the device side) as the PC blocks until it receives the data. I can run the device as fast as one packet per 125us, or slow it down to slow it down to 2ms and it always throws the error on the 8th packet.
The closest explanation I've found elsewhere was this link:
Which has the same hex error code, but again, it refers to isochronous rather than bulk which is throwing me.
If anyone can point me in the direction of what to look for it would be greatly appreciated!
