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
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
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.