Forum: Mikrocontroller und Digitale Elektronik Flash: Datentleitungen werden nicht runtergezogen


von Bernd S. (mms)


Lesenswert?

Hallo,

ich (be)arbeite gerade einen externen Flash. Die Adressen etc. liegen 
auch richtig an, jedoch nicht die Daten. An den Datenleitungen kann ich 
lediglich ein kurzes Zucken (von 3.3V auf 3.0V) 2x sehen... ich weiß 
leider nicht warum, die Datenleitungen nicht auf Null Volt 
heruntergezogen werden können.

Der Flash-IC ist der einzige IC am EBI so dass die Datenleitungen etc. 
auch sehr kurz sind. Als Controller hab ich den AT91RM9200 im Einsatz. 
Die anderen Signale sind ok. Der Flash selbst hat keine internen 
Pullups.

Die Kommunikation erfolgt ja nur in eine Richtung beim Schreiben von 
Daten in den Flash, oder? D.h. selbst wenn der Flash IC defekt wäre, 
müssten die Datensignale einwandfrei am Flash anliegen?

Bernd

von Dirk B. (sharandac)


Lesenswert?

Hallo,

leider ist die Glaskugel kaputt, welchen Controllerbenutzt du? Aber so 
wie du es beschreibst hast du einen vollen Adress und Datenbus. Bei 
Adressen werden die I/O Pins des Controllers als Ausgönge geschaltet. 
Bei Datenleitungen wechselt das je nach dem ob du lesen oder schreiben 
willst. Hast die das Speicherinterface richtig initialisiert? Es sieht 
so aus als wenn die Datenleitungen gegeneinander arbeiten. Vielleicht 
auch WR und RD vertauscht? Oder brauchst du Pullup Widerstände?

von Bernd S. (mms)


Lesenswert?

>>leider ist die Glaskugel kaputt, welchen Controllerbenutzt du?
sorry, hab ich mitten in den text reingeschrieben - den AT91RM9200 von 
Atmel.

NRD und NRW sind richtig beschaltet - beide funktionieren auch. Die 
Datenleitungen habe ich mir noch einmal genau angeschaut. Das Zucken ist 
vorhanden, bevor überhaupt der Schreibvorgang erfolgt. Wenn dieser 
erfolgt, sehe ich lediglich die Impulse vom NRW Pin aber an den 
Datenleitungen passiert gar nichts (sind die ganze Zeit auf 3.3V).


>>Hast die das Speicherinterface richtig initialisiert? Es sieht so aus >>als wenn 
die Datenleitungen gegeneinander arbeiten.

Was genau verstehst du unter "Datenleitungen gegeneinander arbeiten"? 
Beim Controller gibt es ein entsprechendes Register, durch das die CS 
Leitungen freigeschaltet werden. Des Weiteren muss man den PIO 
Controller enablen auf Peripherie-Mode. Eigentlich betreffen alle 
Einstellungen den kompletten Daten- und Adressbus, da sie beide im 
gleichen PIO Controller enthalten sind (bei der TQFP-Version).

Bernd

von Dirk B. (sharandac)


Lesenswert?

> NRD und NRW sind richtig beschaltet - beide funktionieren auch. Die
> Datenleitungen habe ich mir noch einmal genau angeschaut. Das Zucken ist
> vorhanden, bevor überhaupt der Schreibvorgang erfolgt. Wenn dieser
> erfolgt, sehe ich lediglich die Impulse vom NRW Pin aber an den
> Datenleitungen passiert gar nichts (sind die ganze Zeit auf 3.3V).

Das zucken läßt drauf schliessen das die Datenleitungen nicht richtig 
arbeiten. Das Problem ist das wenn du z.b. schreiben möchtest der 
Controller seine Datenleitungen auf Ausgang stellt und der Flash seine 
auf Eingang. Das geschied mit hilfe des CS und NRD/NWR signals. Wenn der 
Flash das aber nicht macht aus welchen gründen auch immer und seine 
Datenleitungen auch auf ausgang setzt, treiben zwei ausgänge die 
Leitung, und das geht logischerweise nicht. Erzeugst du das CS-Signal 
selber oder hast du es fest am Flash verdrahtet?

Jetzt hilft nur noch ein blick in die Datenblätter des Controllers und 
des Flash. Übernimmt der Controller die komplette Steuerung des Busses?

Dirk

von Bernd S. (mms)


Lesenswert?

>>Erzeugst du das CS-Signal selber oder hast du es fest am Flash >>verdrahtet?

Wie kann man das CS-Signal am Flash fest verdrahten? Bei mir ist es so, 
dass die CS-Leitung zwischen Flash-CS-Eingang und Controller-CS-Ausgang 
gelegt ist - sprich der Controller erzeugt den CS-Impuls.


>>Übernimmt der Controller die komplette Steuerung des Busses?

Beim Flash gibt es das RY/BY Signal, welches normalerweise mit dem 
Controller über den NWAIT Pin verbunden wird. Leider ist dieser beim 
Controller defekt (Erata Sheet). So ist keine Kontroller seitens des 
Controllers möglich, ob das Flash auch schon wieder bereit ist.

Der Controller übernimmt die komplette Steuerung für den EBI. Hab zwar 
im Datenblatt nichts gelesen bezüglich Master und Slave - aber über NCS0 
soll es auch möglich sein zu Booten, somit muss der Controller ja von 
sich aus auch dort nachschauen können, ob eine entsprechend Hardware 
(Flash) + Bootprogramm vorhanden ist.

Das Flash befindet sich im Slave-Modus.
http://pdf1.alldatasheet.com/datasheet-pdf/view/102740/SPANSION/S29GL032A90TFIR10.html
(auf Seite 43 sowie Seite 19)

Gruß
Bernd

von Markus J. (doc_database)


Lesenswert?

Bernd Schuster wrote:
>>>Erzeugst du das CS-Signal selber oder hast du es fest am Flash >>verdrahtet?
>
> Wie kann man das CS-Signal am Flash fest verdrahten? Bei mir ist es so,
> dass die CS-Leitung zwischen Flash-CS-Eingang und Controller-CS-Ausgang
> gelegt ist - sprich der Controller erzeugt den CS-Impuls.

Dirk meint, ob du den Flash über einen Pin am µC selektierst, oder ob du 
dir das sparst und den CS-Pin am Flash über einen Pull-Down auf Ground, 
respektive auf die Versorgungsspannung gelegt hast, OHNE das der µC an 
dem Zustand etwas ändern könnte.

von Bernd S. (mms)


Lesenswert?

>>Dirk meint, ob du den Flash über einen Pin am µC selektierst

ja genau so hab ich es installiert; direkte verbindung zwischen 
Controller und Flash IC + einem 4.7k Pullup-Widerstand.

Bernd

von Dirk B. (sharandac)


Lesenswert?

Hallo,

also wenn ich mir das datenblatt zum Flash und dem von Controller ansehe 
würde ich sagen das die nicht zusammen passen. Der Flash hat eine viel 
zu komplexe steuerung als wie er an das Speicherinterface des 
Controllers passen würde. Da beim Flash über dieverse Impulsfolgen und 
etc. bestimmte aktionen ausgelöst werden. Ich denke mal du hast versucht 
das Flash mit den Burst-Flash-Interface des Controller betrieben, aber 
dein Flash unterstützt das nicht so wirklich. An deiner stelle solltest 
du ein Flashbaustein suchen der ein Interface ähnlich eines SRAM hat und 
ihn auch so betreiben. Dann ist es auch erst vernünftig möglich von ihn 
zu booten oder aus ihn programm laufen zu lassen ohne sie erst in das 
RAM zu kopieren per internen Bootloader.

von Bernd S. (mms)


Lesenswert?

>also wenn ich mir das datenblatt zum Flash und dem von Controller ansehe

vielen Dank das du dir die zeit genommen hast...

>>Da beim Flash über dieverse Impulsfolgen und etc. bestimmte aktionen >>ausgelöst 
werden

du meinst DQ1 etc. mit denen z.B. signalisiert werden können, ob ein 
Zugriff auf den Flash erfolgreich oder unterbunden worden ist etc?

Ich kenn lediglich ein Board, welches mit einem ähnlichen Flash 
ausgestattet ist und läuft (von Taskit verkauft wird).

http://www.spansion.com/datasheets/s29gl-m_00_b8_e.pdf

Laut Datenblatt ist dieses sehr ähnlich zu dem von mir ausgewählten 
Flash.

Bernd

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.