7 Replies Latest reply on Sep 21, 2018 1:46 AM by user_274994191

    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.