Forum: Mikrocontroller und Digitale Elektronik XMega per DMA von EBI zur USART(MSPI)


von Sören (Gast)


Lesenswert?

Hallo zusammen,

ich beschäftige mich mit einem XMega 128A1 auf dem XPlained Board von 
Atmel um Mal in die Welt der XMegas kennen zu lernen. Ich habe auch 
schon viele APP-Note für dieses Board "durchgespielt".
Nun aber zu meinem Problem/Frage. Ich möchte mit einem DMA-Transfer vom 
Daten aus einem Array zur USART (im MSPI-Modus) schicken. Das 
funktionierte alles super, bis ich meine eigentliche Arraygröße (40k) 
eingestellt habe und mir auffiel das der Arbeitsspeicher ja nur 8k ist. 
Also kein Problem dachte ich nutzt du den externen SDRAM auf dem Board. 
APP-Note 1312 durchgespielt und mit dem EBI-Treiber und der dort 
hinterlegten Schreib/lese -Funktion kappt es auch.
ABER wie mache ich das jetzt über DMA?
Welche Adresse stelle ich als DMA Source ein?
Wie deklariere ich eine Variable die im externen Speicher liegt?

Ich habe gelesen, dass der ext. Speicherbereich an das Ende des internen 
Speichers gemapped wird. Der SDRAM hat die Baseadr. 0x8000.

Ich nutze AVR-Studio 5 mit AVR-GCC.

Über jede Hilfe, jedes Beispiel oder Verweis auf andere Quellen wäre ich 
sehr dankbar.

Gruß
Sören

von Kai (Gast)


Lesenswert?

Hallo Sören,

meiner Meinung nach geht das gar nicht (keine Verbindung zwischen EBI 
und DMA).

Gruß
Kai

von ich (Gast)


Lesenswert?

Ich denke schon dass das geht. Immerhin kann man in "DMA Channel Source 
Address" eine 24-Bit Adresse einstellen. Das EBI sollte also per DMA 
funktionieren

von Sören (Gast)


Lesenswert?

Hallo ich,

d.h. ich muss die BaseAdr. angeben? Muss ich dem Compiler eigentlich 
auch mitteilen, dass es externen Speicher gibt?

@UWE
wie übersetzt du das Bild in C-Code? (wenn es so geht)

Grüß
Sören

von Stephan (Gast)


Lesenswert?

Morgen,
zur DMA Steuerung kann ich zwar nichts sagen, aber hier gibs eine kleine 
Hilfe zur Verwaltung des MEMs mit dem GCC.

Beitrag "48KB SDRam für gcc auf xplain"

von Sören (Gast)


Lesenswert?

Hallo Stephan,

vielen Dank für den Link, den hatte ich noch nicht gefunden. Jetzt 
funktioniert es.
Ich habe als DMA Adr. einfach die 0x4000 angegeben.

Vielen Dank.

Grüß
Sören

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.