Les 17
DMA
Direct Memory Access op de RP2040: DMA-kanalen, transfers van ADC naar geheugen, interrupts bij voltooiing en de valkuilen.
🎯 Na deze les kun je
- uitleggen wat DMA is en wanneer het de CPU ontlast
- een DMA-kanaal configureren voor een transfer van een peripheral naar een buffer
- een interrupt gebruiken als een transfer klaar is, met dubbele buffers
- de klassieke DMA-valkuilen herkennen: volatile, cache en buffers die te vroeg hergebruikt worden
Je meetstation leest de ADC uit door een meting te starten, te wachten en het resultaat op te halen. Bij één meting per seconde prima. Bij 50 000 metingen per seconde (geluid, trillingen) is de CPU alleen nog maar bytes aan het verplaatsen. DMA (Direct Memory Access) is een apart hardwareblok dat gegevens verplaatst tussen peripherals en geheugen, terwijl de CPU iets anders doet of slaapt.
De ATmega328P heeft geen DMA. Voor deze les stappen we over op de RP2040 (de chip van de Raspberry Pi Pico): een 32-bit ARM Cortex-M0+ met 264 KB RAM, 12 DMA-kanalen en een officiële C-SDK (pico-sdk). De ideeën gelden voor elke chip met DMA (STM32, ESP32, nRF52); alleen de registernamen verschillen. Het lab draait in een RP2040-simulator.
🔒 Deze les zit in het betaalde deel van de cursus
De eerste 5 lessen zijn gratis; de rest van de cursus, de live labs en het certificaat koop je eenmalig (€ 29,00). Geen abonnement. Online afrekenen komt binnenkort beschikbaar.
Wil je een seintje als het zover is?