Forum: Mikrocontroller und Digitale Elektronik AT32AP7000 - SDRAM Initialisierung


von N. J. (foces)


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!

von MatthiasB (Gast)


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

von N. J. (foces)


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

von gen4ik (Gast)


Angehängte Dateien:

Lesenswert?

sdram_test(); ist zum installieren von sdram
habe aber noch nicht RAS und CAS und so weiter eingestellt
reicht bei mir mit
  |(1<<AVR32_PM_PLL0_PLLDIV_OFFSET)
  |(5<<AVR32_PM_PLL0_PLLMUL_OFFSET)

20mhz*5=100 mhz

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.