Question of USB and Streaming Data | Cypress Semiconductor
Question of USB and Streaming Data
I have an application were I am receiving data over RF at a "constant" rate of 500 Kbps for some hours and I need to get that data to a Linux machine so that it can store the data into bulk non-volatile memory. Right now on the Linux machine I am using libusb-1.0 to read the data that is received from the PSoC.
For simplicity, I have started by doing a simple bulk transfer with one endpoint after I receive a given packet; however, this clearly can not work since the shortest polling interval for a bulk transfer is 10 ms. Also I am not sure what throughput I could expect if I were to gather 512 bytes worth of data then send that data with a bulk transfer.
I did some quick math and it should take ~8 ms to receive 512 bytes worth of data over RF so a 10 ms transfer interval, so a bulk transfer solution with a single end point might not work.
Failing the bulk transfer, I was thinking about setting the transfer up to look like usbuart and just clock the data out far faster than normal uart data rates. If I were to do this, is there a good way to receive this data over usb in a Linux environment since the data rate wouldn't be a standard uart baude rate?
Mutant usb uart would be a great way to handle the data transfer if there was a nice easy way to receive it on Linux.
Finally, as a last resort, I was thinking about going with an isochronous transfer. I downloaded the an56377 and it has an example that does this with DMA and can apparently hit data rates up to 800 KB/s which would be more than plenty of course; however, I would like to avoid the added programming complexity Linux side.
As always, I appreciate all and any advice, and I look forward to our discussion.