mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik CFI Query Command


Autor: Olli Z. (z80freak)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Ich versuche gerade einem Arduino Due das CFI-Protokoll beizubringen. 
Dazu habe ich das Datenblatt eines Flash Chips gelesen (Micron 
S29GL064N) aber vermutlich nicht verstanden...

Zunächst wollte ich nur den "Unique ASCII string" ("QRY") lesen. Da 
scheite ich bereits. Laut Datenblatt muss sich der Chip im "Read mode" 
befinden und man muss ihm das "CFI Query Command" senden. Zitat: "This 
device enters the CFI Query mode when the system writes the CFI Query 
command, 98h, to address 55h, any time the device is ready to read array 
data."

Den "read mode" hat der Chip nach einem RESET. Nun muss doch eigentlich 
nur auf die Adresse 0x55 das Datenwort 0x0098 geschrieben werden. Den 
Chip betreibe ich im "WORD-Mode", d.h. Pin "BYTE#" hat HIGH-Level.

Den Schreibvorgang ist laut Datenblatt so wie im beigefügten Timing 
Diagramm. Ich mache nun folgendes:
1. Byte-Swop des Daten-Worts (16 Bit) 0x0098 zu 0x9800 (der Chip 
arbeitet intern Little-Endian)
2. CE#, OE# und WE# auf HIGH (Ausgangssituation)
3. Adresse 0x55 an die Adresspins A0-A21 anlegen
4. CE# und WE# auf LOW (Übernahme der Adresse bei fallender Flanke von 
CE oder WE)
5. Daten-Pins auf Ausgang stellen und die Bits laut Daten-Wort anlegen
6. WE# und CE# auf HIGH (übernahme der Daten bei steigender Flanke von 
WE oder CE)
7. Daten-Pins auf Eingang stellen

Dann glaube ich das der Chip die gewünschte Information über einen 
normalen Read-Vorgang an der Adresse 0x10 bereitstellt. Das mache ich 
so:
1. Die Datenpins auf Eingang stellen
2. CE# auf HIGH
3. OE# auf HIGH
4. Die Adresse an die Adresspins anlegen
5. CE# auf LOW (Adresse wird übernommen)
6. OE# auf LOW (Die Daten werden vom Flash bereitgestellt)
7. Datenbits einlesen und in eine 16-Bit Variable speichern
8. OE# auf HIGH
9. CE# auf HIGH
10. Byte-Swob durchführen

Ich erhalte jedoch nur die an der adresse im Flash gespeicherte 
Information.

Was mache ich falsch?

Autor: Olli Z. (z80freak)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Laut CFI-Spezifikation (gibt ja reichlich davon) wird der 
CFI-Query-Command Code in den Lower-Bits D0-D7 übertragen, egal welche 
Busbreite vorliegt. Von daher ist mein Byteswop im 1. Schritt oben 
natürlich Unsinn.

Leider funktioniert es ohne diesen genauso wenig. Ich stehe immer noch 
vor einem Rätsel...

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
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.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.