DMA channel / GPIF reset problem in super speed mode

Tip / Sign in to post questions, reply, level up, and achieve exciting badges. Know more

cross mob
Anonymous
Not applicable
        In my application I implemented this data data path using an DMA-AUTO channel: CY_U3P_UIB_SOCKET_PROD_2 -> CY_U3P_PIB_SOCKET_1 -> GPIF thread 1 Resetting this path in order to change clock settings and GPIF waveform works in high speed mode, but only sometimes at super speed. The sequence is:   
// Step 1 CyU3PPibInit(... CyU3PSetEpConfig(...            // with epCfg.enable = CyTrue CyU3PUsbFlushEp(... CyU3PUsbResetEp(...             //seems to be obsolete CyU3PDmaChannelCreate(... CyU3PGpifLoad(... CyU3PGpifSMStart(... CyU3PGpifSocketConfigure(1, ...   // this works after I found out that PIB_SOCKET_1 must be connected to GPIF thread 1 // but PIB_SOCKET_4.. can be connected to any thread ...  // reset CyU3PGpifDisable(CyTrue); CyU3PUsbFlushEp(... // also tried CyU3PDmaChannelReset here, but this should be obbsolete CyU3PDmaChannelDestroy(... CyU3PSetEpConfig(...            // with epCfg.enable = CyFalse CyU3PPibDeInit(...  // Step 2 CyU3PPibInit(...                 // diferent clock settings CyU3PSetEpConfig(...            // same as in step 1 CyU3PUsbFlushEp(... CyU3PUsbResetEp(...             // seems to be obsolete CyU3PDmaChannelCreate(...       // same as in step 1 CyU3PGpifLoad(...               // different waveform CyU3PGpifSMStart(... CyU3PGpifSocketConfigure(1, ...   // this works in USB 2.0 mode and only rarely in USB 3.0 mode // whether it works in super speed mode seems to depend on how much data // are sent in step 1
SDK version is 1.3.3 Is there something I'm missing?   
0 Likes
2 Replies
Anonymous
Not applicable

Hi,

   

The 
CyU3PGpifSocketConfigure API must be called before the SMStart API.

   

Regards,

   

- Madhu Sudhan

0 Likes
Anonymous
Not applicable
        Hi, I changed it, but behavior is the same: 1st step works always, 2nd step only in high speed mode.   
0 Likes