10.3.5.8 Transfer Without DMA

Important: When not used, the DMA should be disabled to make sure it cannot be left enabled by a previous USB transfer session. If this occurred, the DMA could process data before an interrupt without the user’s knowledge.

The recommended procedure to disable the DMA is as follows:

// Reset IP UDPHS 
  BASE_UDPHS->UDPHS_CTRL &= ~UDPHS_EN_UDPHS;
  BASE_UDPHS->UDPHS_CTRL |= UDPHS_EN_UDPHS;// 
With OR without DMA !!!
  for( i=1; i<=DMA_CHANNEL_NBR); i++ )
// RESET endpoint canal DMA:
    // DMA stop channel command    
   BASE_UDPHS->UDPHS_DMA[i].UDPHS_DMACONTROL = 0; // STOP
command
// Disable endpoint
  BASE_UDPHS->UDPHS_EPT[i].UDPHS_EPTCTLDIS |= 0XFFFFFFFF;
// Reset endpoint config
  BASE_UDPHS->UDPHS_EPT[i].UDPHS_EPTCTLCFG = 0;
// Reset DMA channel (Buff count and Control field)
  BASE_UDPHS->UDPHS_DMA[i].UDPHS_DMACONTROL = 0x02; // NON
STOP command
// Reset DMA channel 0 (STOP) 
  BASE_UDPHS->UDPHS_DMA[i].UDPHS_DMACONTROL = 0; // STOP
command
// Clear DMA channel status (read the register for clear it)
  BASE_UDPHS->UDPHS_DMA[i].UDPHS_DMASTATUS =  
  BASE_UDPHS->UDPHS_DMA[i].UDPHS_DMASTATUS;
}