Lese-/Schreib-Problem SST25 Flash-Speicher

Gast #4431747
Hallo,

ich habe hier einen SST25 von Microchip.

Die Lese-Funktion ist Ok,(bestätigt durch ReadChipId()). Die 
Löschfunktion für die Sektoren geht auch (nach jedem Aufruf stehen 0xFF 
im Speicher).

Die Schreib-Funktion geht bei folgendem Szenario (scheinbar):
1. Initialisierung des SPI
2. Löschen des Sektors
3. Schreiben von ein paar Bytes
4. Lesen der Bytes

Danach stehen immer die richtigen Bytes im Lese-Puffer (welcher zuvor 
mit Nullen initialisiert wurde).

Und jetzt wirds merkwürdig:
Wenn ich nun 2. und 3. entferne, das Ganze neu compiliere/linke und 
aufspiele (STM32F107), dann gibt mir die Lese-Funktion nur 0xFF zurück. 
Und das obwohl doch zuvor bereits die richtigen Werte aus dem Flash 
gelesen wurden.

Ich kapier das einfach nicht.

PS: Mit dem Logic-Analyzer sieht man übrigens, wie er zunächst die Bytes 
in den Flash reintaktet und auch wieder korrekt ausliest.
Nach dem Neuerstellen liest er dann nur noch 0xFF, was man dann 
ebenfalls sieht.

Ich könnte hier jetzt den ganzen Mist reinstellen, aber ich fürchte das 
ist dann soviel, dass sich das sowieso keiner ansieht.

Deshalb zunächst mal die Frage, ob jemand mit diesen Flash-Speichern 
schoneinmal ähnliche Probleme hatte und wie er das dann gelöst hat?

Danke und Gruß Pit
Gast #4501448
Es hat sich gezeigt, dass das Chip-Enable Signal bei einem bestimmten 
Kommando an den SST25 'ein paar Takte' zu früh wieder auf High geht.
Dadurch wird das Kommando vom STT25 nicht verarbeitet und die komplette, 
übertragene Kommando-Sequenz somit verfälscht.

Das Ganze ist etwas merkwürdig, da ich den SPI ohne Interrupts verwende 
und die Lese-/Schreibfunktion erst nach erfolgreichem Versand/Empfang 
der Daten wieder zurückkehrt. Und auch erst dann wird Chip-Enable in der 
Firmware wieder zurückgesetzt. Das Beobachtete kann also eigentlich bei 
diesem sequentiellen Verlauf garnicht vorkommen.

Woran das jetzt genau liegt ist mir nicht bekannt.

Als Workaround warte ich einfach 30 Takte bevor ich Chip-Enable auf High 
setzte. Nicht toll, aber es geht.

Gruß Pit

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 10 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

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.