Im vorherigen Teil der Beitrags-Serie ging es um die verschiedenen Umwandlungs-Modi des A/D-Wandlers. Im Single-Conversion-Modus liegt nach jedem Triggern des ADC nur ein Satz an umgewandelten Daten vor. In den üblichen MCU-Systemen haben Sie zwei Möglichkeiten, Daten von einer Speicheradresse zur anderen zu übertragen, nämlich mithilfe der CPU (Bild 2a) oder mit dem DMA-Controller (Bild 2b). Die zweite Option hat den Vorzug, dass der Datentransfer ohne Zutun der CPU erfolgt. Die CPU muss nicht einmal ‚geweckt‘ werden, sodass man Energie sparen kann, indem der DMA-Controller in einer Low-Power-Betriebsart mit deaktivierter CPU genutzt wird.
Bei geringeren Datenmengen ist die DMA-Funktion nicht unbedingt notwendig, aber nach wie vor als Option verfügbar. Bei jeder ADC-Messung hat man die Wahl, die CPU oder den DMA-Controller zum Transferieren der Daten zu verwenden. Für den Transfer größerer Datenmengen (zum Beispiel bei der Übertragung aller während eines Tages erfassten Daten in eine Cloud oder an einen externen Speicher) sollten Sie die Nutzung des DMA-Controllers erwägen.
Beim Konfigurieren des DMA-Controllers muss man den richtigen DMA-Transfermodus einstellen. Dabei ist zwischen der Übertragung eines einzelnen Datensatzes oder eines ganzen Datenblocks zu unterscheiden und es muss entschieden werden, ob es zulässig ist, dass der Block-Transfer mit zwischengeschalteten CPU-Aktivitäten erfolgt.
Geben Sie beim Konfigurieren den Umfang und die Breite (Byte, Wort, Langwort) der zu übertragenden Daten sowie die Quell- und Zieladresse des Transfers an. Nachdem Sie anschließend noch das Signal ausgewählt haben, das den DMA-Transfer triggern soll, sind Sie startbereit.
In einer Temperaturüberwachungs-Anwendung werden im Zuge einer Messung in der Regel mehrere Datenpunkte gemittelt. In diesem Fall können Sie den DMA-Controller zur Übertragung der Daten verwenden, aus denen Sie den Durchschnitt bilden wollen, um danach, also erst nach der Übertragung aller Einzeldaten, die CPU zu wecken.