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!
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
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.