BlockThrottledPipe timeout issue


I’m trying to implement a fast data acquisition system using a XEM7310 and I have ended up using a FIFO with BT PipeOut to (hopefully) get better performances than the one I currently get with a simple PipeOut before using the DDR3 as large FIFO.

The BT Pipe works fine but I have noticed some issues with timeout:

  1. If during a continuos acquisition (i.e. the function ReadFromBlockPipeOut() is called in loop on a dedicated thread) I call ActivateTriggerIn() or SetWireInValue(), often the BTPipeOut stops reading data from the FIFO even though the ep_ready signal is high! This causes the ReadFromBlockPipeOut() to return a timeour error in any of the subsequent calls.
  2. It looks like there is no way to recover from a Timeout condition of the BTPipeOut once it occurs.

I have understood you don’t recommend using BTPipeOut unless it is strictly necessary, I just wanted to know if the issues I have explained above are well-known issues or if, instead, I might be doing something wrong in my system.

Thank you for your help,

Please see Regarding Device Ownership here:

Notably, device communication is not thread-safe. While you can certainly use threads in your application, access to the device must be mutexed.

Also, the section Handshaking and Protocol Design may be helpful here: