Der Blätterkatalog benötigt Javascript.
Bitte aktivieren Sie Javascript in Ihren Browser-Einstellungen.
The Blätterkatalog requires Javascript.
Please activate Javascript in your browser settings.
20 Elektronik 21 2023 AnAlog Power In Bild 7a ist ein Zeitdiagramm für die DMA-Transaktion im Basic-Modus zu sehen Die Zeitschlitze geben das DRDY-Signal bzw die SPI DMA-Einstellungen und die DMA-Datentransaktion wieder Um die Leerlaufzeiten der CPU besser zu nutzen werden ihr Aufgaben zugewiesen während der Datentransfer selbst vom DMA-Controller abgewickelt wird DMA-Transaktionen im Pingpong-Modus Im Anschluss an die Implementierung des Dummy-Lesebefehls startet der DMA-Controller die Datentransaktion sodass die CPU des Mikrocontrollers keine Aufgaben durchführen muss Wenn es gelingt die CPU und den DMA-Controller gleichzeitig arbeiten zu lassen erfolgt das Task-Handling nicht mehr seriell sondern parallel Damit können die DMA-Konfiguration seitens der CPU und die eigentliche DMA-Datentransaktion seitens des DMA-Controllers zur gleichen Zeit erfolgen Um dieses Konzept zu realisieren muss der DMA-Controller im sogenannten Pingpong-Modus arbeiten In dieser Betriebsart kommen zwei DMA-Strukturen nämlich die primäre und die alternative Struktur zum Tragen und der DMA-Controller wechselt bei jeder DMA-Anforderung automatisch zwischen diesen beiden Strukturen hin und her Die anfangs auf 0 gesetzte Variable p gibt an ob die primäre p 0 oder die alternative DMA-Struktur p 1 aktiv ist Bei p 0 beginnt die primäre DMA-Datentransaktion mit dem Dummy-Lesebefehl Gleichzeitig werden Werte für die alternative DMA-Struktur zugewiesen die im nächsten Interrupt-Zyklus aktiv ist Bei p 1 wechseln die primäre und die alternative Struktur ihre Rollen Die Modifikation der DMA-Struktur kann während einer DMA-Transaktion nur dann fehlschlagen wenn sich die primäre Struktur im Basic-Modus befindet Der Pingpong-Modus ermöglicht es der CPU auf die alternative DMA-Struktur zuzugreifen und zu schreiben während die primäre Struktur vom DMA-Controller gelesen wird und umgekehrt Wie aus Bild 7b hervorgeht kann die DMA-Datentransaktion ausgeführt werden sobald der ADC das DRDY-Signal an die MCU gesendet hat denn das Konfigurieren der DMA-Struktur ist bereits im vorausgegangenen Zyklus erfolgt CPU und DMA-Controller arbeiten jetzt gleichzeitig ohne aufeinander warten zu müssen Da sich die gesamte Verarbeitungszeit hierdurch entscheidend verkürzt dürfte sich die Ausgangsdatenrate des ADC steigern lassen Optimierung des Interrupt-Handlers Das Zeitintervall zwischen den Data-Ready-Signalen enthält nicht nur die Verarbeitungszeit der Befehle in der Callback-Funktion sondern auch der Anweisungen im GPIO-Interrupt-Handler von ADI Bei Aktivierung des Mikrocontrollers arbeitet die CPU die Startup-Datei startup s ab in der sämtliche Event-Handler also auch der GPIO-Interrupt-Handler definiert sind Sobald der GPIO-Interrupt getriggert wird wird die Interrupt-Handler-Funktion also GPIO A INT HANDLER und GPIO B INT HANDLER im GPIO-Treiber von ADI ausgeführt In generischen Interrupt-Handler-Funktionen sucht die CPU sämtliche GPIO-Pins nach demjenigen ab der getriggert wurde löscht dessen Interrupt-Status und führt die hinterlegte Callback-Funktion aus In der hier vorliegenden ADC-MCU-Anwendung ist DRDY aber das einzige Interrupt-Signal sodass es sich anbietet die Funktion insgesamt zu straffen und dadurch schneller zu machen Hierzu kann entweder das Sprungziel in der Startup-Datei verändert oder der ursprüngliche Interrupt-Handler modifiziert werden In der Startup-Datei könnte also ein Verweis auf einen selbst geschriebenen Interrupt-Handler hinterlegt werden Eine Modifikation erfordert allerdings einen selbst definierten GPIO-Treiber weshalb eine Veränderung vorgenommen wird wie sie in Bild 8 gezeigt ist Es wird also nur der Interrupt-Status des mit DRDY verbundenen Pins gelöscht um daraufhin direkt die Callback-Funktion aufzurufen Zusätzlich muss unbedingt der ursprüngliche GPIO-Treiber gesperrt werden indem das entsprechende Häkchen in »include in build target« entfernt wird Ergebnisse im Vergleich Es sei angenommen dass der Anwender gerade die 200 24-bit-Ausgangsdaten des ADCs ausliest Dabei soll die SPI-Bitrate auf 13 MHz eingestellt sein Nun wird der Pin an dem das DRDY-Signal anliegt und SCLK mit einem Oszilloskop verbunden Durch Beobachten des Zeitintervalls zwischen dem DRDY-Signal und dem Beginn der SPI-Datentransaktion bzw der DMA-Transaktion lassen sich die Geschwindigkeitssteigerungen ablesen die mit den zuvor beschriebenen Methoden erzielt werden können Aus Gründen der Einfachheit wird das Intervall zwischen dem DRDY-Signal und dem Beginn des SCLK-Signals als ∆t bezeichnet Bei einer SPI-Bitrate von 13 MHz werden folgende ∆t-Werte gemessen Bild 9 Bild 9 ∆t-Werte im Basic-Modus a im Pingpong-Modus b und im Pingpong-Modus mit optimiertem Interrupt-Handler c Bild Ana lo g De vi ce s