AT32AP7000 - SDRAM Initialisierung

OP #1065630
Lesenswert?
• ▲
▼
Hallo!

Hat jemand vielleicht schon Erfahrung im Umgang mit den AP7000 und 
Speicherzugriff auf externen SDRAM?
Ich beschäftige mich seit 2 Tagen mit dem AT32AP7000 und versuche einen 
externen SDRAM anzusprechen. Aber schon bei der Initialisierung des 
SDRAM (MT48LC2M32B2 - 512K x 32 x 4 banks) komme ich nicht so recht 
weiter.
Die Anleitung für die SDRAM-Init ist meiner Meinung nach nicht eindeutig 
geschreiben.
In der Initialisierungsdoku für den T32AP7000
wird beschrieben, das Mode Register muss zuerst gesetzt werden. Im 
Anschluss daran soll ein Schreibzugriff auf alle Adressen abgesetzt 
werden, der das Mode Register wirksam werden läßt.
(siehe Dokumentation AT32AP7000.pdf Seite 537, Punkt 5).

Kann ich einen beliebigen Schreibzugriff starten damit der Mode-Befehl 
ausgeführt wird? z.B. "AVR32_PIOE.IER = 0x0".
Oder, wie kann ich einen Schreibzugiff überhaupt generieren?
Das Schreiben ist ja nur mit den Befehlen der Userschnittstelle möglich.
also: MR,TR,CR,HSR,LPR,IER,IDR und MDR

Auch der Punkt 7 ist das mir unklar.
Ich stelle wieder das Mode Register auf 3 mit "AVR32_PIOE.mr = 0x3" und 
lade somit die benötigten Daten (CAS latency) aus dem Configuations 
Register.  Wie kann ich die Adressen BA0 und BA1 einstellen? Selbst mit 
dem Configuration Register ist es nur möglich CAS einstellen aber nicht 
die burst length und BA[1:0].

Kann mir das mal jenmand erklären?
Danke schon mal im voraus!
Gast #1066025
Lesenswert?
• ▲
▼
Ich kenne deinen AP7000 überhaupt nicht, aber vielleicht hilft dir diese 
Anleitung für den AT91SAM7. Die SDRAM Initialisierung sollte ja gleich 
sein (nur Prozessor Register, Addressen, usw. unterschiedlich) und du 
kannst es auf deinen umschreiben. Sie benutzen auch einen Microm MT48...

"Using SDRAM on AT91SAM7SE Microcontrollers"
http://www.atmel.com/dyn/resources/prod_documents/doc6287.pdf

Matthias
OP #1068149
Lesenswert?
• ▲
▼
Ich danke Dir Matthias für Deine schnelle Anwort. Das Softwarebeispiel 
hat
mir schon weitergeholfen. Ich habe jetzt auch das Beispiel auf meinen µC 
angepasst. Jedoch habe ich ein Problem mit der Bezeichnung 
"AT91C_BASE_SDRC" Seite 11 , 2. Zeile der Funktion

AT91PS_SDRC psdrc = AT91C_BASE_SDRC;

Für den AP7000 kann ich keine Bezeichnung dieser Art finden.
Wofür steht diese Bezeichnung?
Auch den Pointer *AT91C_SDRAM_BASE" kann ich für den AT32AP7000 nicht 
finden.
es gibt:
              AVR32_SDRAMC_MR_MODE_NOP                    0x00000001
              AVR32_SDRAMC_NOP                            0x00000001
              AVR32_SDRAMC_MODE_NOP                       0x00000001

Jetzt weiss ich nicht welchen ich anwenden soll, um den Befehl
"*AT91C_SDRAM_BASE = 0x00000000;" nachzubauen.
Hast Du mit die Initalisierungroutine bei dem AT91SAM7 schon zum Laufen 
bekommen? Kannst Du mir vielleicht sagen für was das BASE steht?
Dann kann ich möglicherweise einen Bezug zum AP7000 herstellen.

MfG Nico

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.