2 Replies Latest reply on May 5, 2016 4:59 PM by Madhu Lakshmipathy

    DMA channel / GPIF reset problem in super speed mode

    stefan.ziegenbalg
              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?