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.
21 2023 Elektronik 19 AnAlog Power übertragenen Bytes Da jede DMA-Transaktion nur die fest vorgegebene Zahl von 16 bits übertragen kann muss SPI CNT stets ein Vielfaches von 2 sein Im vorliegenden Fall wird SPI CNT 4 gewählt um die Ausgangsdatenbreite von 24 bit des ADC abzudecken Das SPI DMA-Register ist die SPI-DMA-Freigabe »SPI DMA 0x5« gibt die DMA-Empfangsanforderung frei »pADI DMA0->EN SET 1<<5 « aktiviert die DMA-Funktionalität des fünften DMA-Kanals SPI0 RX Jeder DMA-Kanal besitzt ein DMA-Strukturregister Tabelle 3 Zu beachten ist dass das Ende der Quelladresse SPI0 Rx in diesem Fall während der gesamten Operation nicht inkrementiert werden muss da das Rx-FIFO die Daten automatisch aus dem Register herausschiebt Das Ende der Zieladresse hingegen wird gemäß dem SPI-Treiber von ADI berechnet Funktion Ziel - adresse + SPI CNT - 2 Bei der aktuellen Adresse handelt es sich in unserem Fall um die Adresse eines internen Array-Puffers Die DMA-Kontrol ldatenkonf igurat ion umfasst das Einstellen der Quelldatengröße die Inkrementierung der Quelladresse und der Zieladresse die Zahl der verbleibenden Transfers und den DMA-Kontrollmodus Der Wert »0x4D000011« stellt die Konfiguration ein wie in Tabelle 4 beschrieben Mit dem Dummy-Lesebefehl »SPI SPI0 -> RX« wird das Takten von SCLK gestartet und die Ausgangsdaten werden über die MISO-Leitung vom ADC zur MCU übertragen Hinzu kommen einige hier nicht weiter relevante Datentransfers auf der MOSI-Leitung Sobald der Rx-FIFO gefüllt ist wird der DMA-Request generiert wodurch der DMA-Controller angewiesen wird die Daten von der DMA-Quelle d h vom Rx-FIFO des DMA-Kanals SPI0 an das DMA-Ziel also den internen Array-Puffer zu übertragen Es wird darauf hingewiesen dass der TX-Request bei SPI DMA 0x3 erzeugt wird Abschließend erhält man die Zieladresse für die nächste 4-Byte-Übertragung indem der Wert 4 zur aktuellen Zieladresse addiert wird Wichtig ist ebenfalls dass sowohl »pADI DMA0->DSTADDR CLR« als auch »pADI DMA0->RMSK CLR« für den DMA-Kanal »SPI0« in der Hauptfunktion gesetzt werden müssen bevor der erste Interrupt erfolgt Das vorherige Register ist »DMA Channel Destination Address Decrement Enable Clear« das die Verschiebung der Zieladresse nach jedem DMA-Transfer im Inkrement-Modus vorgibt die Funktion zum Berechnen der Zieladresse ist nur im Inkrement-Modus wirksam Das letzte Register »DMA Channel Request Mask Clear« löscht den DMA-Request-Status für den Kanal Tabelle 4 DMA-Konfiguration für die Kontrolldaten-Konfiguration 0x4D00011 Register Beschreibung Wert DST INC Inkrement Zieladresse 2 Byte SRC INC Inkrement Quelladresse 0 SRC SIZE Inkrement Quelladresse 2 Byte Nminus 1 Gesamtzahl Transfers im aktuellen DMS-Zyklus – 1 1 N 2 Cycle ctrl Betriebsart des DMA-Zyklus Basic-Modus Bild 7 Zeitdiagramm für den DMA-Betrieb im Basic-Modus a und im Pingpong-Modus b Bild 8 Ein Nested Vectored Interrupt Controller NVIC Bild Analog Devices Bild Ana lo g De vi ce s