To reset your USB Pipe:
1) Call CyU3PGpifDisable (CyTrue); (in case you are transferring data between USB and GPIF)
2) Call CyU3PUsbSetEpNak (EndPoint Number, CyTrue); //To Set the endpoint in Nack condition
3) Put a small delay : CyU3PBusyWait (100);
4) Reset the DMA Channel (or channels) assosicated with USB
5) Flush the endpoint and release the nack
CyU3PUsbSetEpNak (EndPointNumber, CyFalse);
When again starting the streaming again, please ensure that the CyU3PDmaChannelSetXfer, CyU3PGpifLoad and CyU3PGpifSMStart are called in the order.
There is also a warm reset in FX3 in which the firmware is loaded from the beginning again.
You need to call CyU3PDeviceReset (CyTrue); Before calling this, you need to de-initialize all the blocks that are enabled.
For example CyU3PConnectState (0,0); // for disabling USB
CyU3PUartDeInit (), CyU3PPibDeInit () to de-initialize UART, PIB Blocks etc.
- Madhu Sudhan