Hier wird höchstwahrscheinlich DMA verwendet, damit der DAC ein gewisses Zeitintervall hat und eine Wellenform erzeugt, indem der Analogausgang in einem bekannten Intervall geändert wird.
Ja, wenn es sich um einen geteilten Bus handelt, müssen Sie diesen teilen.
Die CPU benutzt nicht immer den Bus, daher ist es manchmal eine gute Idee, sie mit einer DMA-Engine zu teilen. Und das bedeutet natürlich, dass Prioritäten involviert werden, manchmal ist es nur derjenige, der zuerst da war (zum Beispiel haben Sie ein Befehl-FIFO vor der Ressource und FIFO-Anfragen in der Reihenfolge, in der sie ankommen, ja, das wäre nicht unbedingt deterministisch ). In einem solchen Fall möchten Sie möglicherweise, dass das DMA Vorrang vor der CPU hat, damit zeitkritische Dinge wie DACs oder ADCs ein deterministisches Timing haben. Kommt darauf an, wie sie es umgesetzt haben.
Leute haben manchmal diese oft falsche Annahme, dass DMA kostenlos ist. Es ist nicht so, dass es immer noch Buszeit verbraucht. Wenn es mit der CPU geteilt wird (was es schließlich ist, wenn es mit einer Ressource spricht, mit der die CPU sprechen kann), dann wird die CPU und / oder der DMA ausgeschaltet, so dass die CPU immer noch etwas warten muss Zeit, in einigen Implementierungen (wahrscheinlich nicht Ihr Mikrocontroller) ist die CPU vollständig ausgeschaltet, bis die DMA abgeschlossen ist, CPU wird für die Dauer gestoppt. Kommt halt auf die Umsetzung an. Der freie Teil davon ist, dass die CPU nicht ständig unterbrochen oder abgefragt oder angehalten werden muss, damit ein Ereignis Daten einspeist. Es kann einige Zeit dauern, bis der nächste Puffer für die DMA erstellt ist. Es muss darauf achten, dass die DMA-Übertragung abgeschlossen ist und damit umgeht, aber anstatt zu sagen, dass jedes Byte jetzt mehrere Bytes sind, einige Datenblöcke.
Es gibt keine universelle Antwort. "Es kommt darauf an" ... auf das spezifische Design des von Ihnen verwendeten Gegenstands. Selbst innerhalb eines Chip / Board / System-Designs können mehrere DMA-Engines vorhanden sein, und es gibt keinen Grund anzunehmen, dass sie alle auf die gleiche Weise funktionieren. Für jeden Fall muss man es herausfinden, und leider dokumentieren sie es oft nicht oder nicht gut genug. Daher müssen Sie möglicherweise einige Experimente erstellen, wenn Sie Bedenken haben.