DMA circolare
Una modalità DMA in cui il trasferimento torna da solo all'inizio del buffer, così l'hardware riempie un buffer ad anello all'infinito senza che la CPU intervenga.
Un normale trasferimento DMA termina e va riarmato. In modalità circolare il canale ricarica da sé indirizzo e conteggio, quindi il flusso non si ferma mai. Si adatta a un ADC che campiona in continuo o a una UART che riceve dati a velocità imprevedibile. La maggior parte dei microcontrollori genera due interrupt per giro: uno a metà e uno alla fine. La CPU elabora una metà mentre il DMA scrive nell'altra, ovvero il double buffering in un unico array.
Il contatore decrescente del canale funge anche da puntatore di scrittura di un buffer ad anello, quindi il firmware può verificare in qualsiasi momento a che punto è arrivato l'hardware. Il problema è che ogni metà va smaltita prima del mezzo giro successivo. Se si fa tardi, i dati vengono sovrascritti in silenzio: nessun errore, nessun interrupt, solo numeri strani.