SST25VF010A Flash

Gast #5503252
Lesenswert?

Ich versuche gerade einen SST25VF010A Flash zu schreiben. Die Hersteller 
ID erhalte ich Korrekt also SPI funktioniert perfekt. Auch das auslesen 
des Status Register funktioniert (0x0C). Zum Schreiben in den Speicher 
müssen die Protect BP0 + BP1  auf 0 gesetzt werden, das erledige ich mit 
SPI_Erase_Block_Prot(); lese ich danach das Status register erhalte ich 
nach wie vor 0xC0.  Über SPI_Write_Data(0x0000,10); werden nun versucht 
den Speicher (10 Zeichen) aus TxBuffer in den Flash zu Speichern. Leider 
ohne erfolg. Auch Google hilft in diesem Fall eider nicht.

Hat jemand Erfahrung mit dem Baustein.
Im Anhang der Programmcode.
Microcontroller Atmega64, Quarz 8 MHZ

grüssle
Angehängte Dateien:
Gast #5503322
Lesenswert?

Versuchs mal so:
1
//=================================================
2
// Block Protection Aus
3
//=================================================
4
void SPI_Erase_Block_Prot()
5
{
6

7
SPI_Write_Enable();
8

9
CHIP_SELECT // _S Low
10
DELAY
11
SPI_Write_Byte(WRITE_EWSR);
12
CHIP_UNSELECT // _S High
13
DELAY
14

15
SPI_Write_Enable(); //<-------------------------
16

17
//Entferne BlogProtection
18
CHIP_SELECT // _S Low
19
DELAY
20
SPI_Write_Byte(WRITE_WRSR);
21
SPI_Write_Byte(0x00);
22
CHIP_UNSELECT // _S High
23
DELAY
24

25
SPI_Write_Disable();
26

27
WaitUntilDone();
28

29
}
Gast #5503510
Lesenswert?

>>Mache ich doch SPI_Write_Enable();
>
>Du machst es aber nur einmal.

Hmm, das zweite ist laut der Sequenz im Datenblatt nicht
notwendig bzw. sogar komplett falsch. Lass das erste doch mal weg.
Das braucht man wohl auch nicht. Vieleicht stört das ja sogar.
Gast #5503519
Lesenswert?

User schrieb:
> Ich habe es 2x gemacht und geht auch nicht wenn ich den status nach dem
> ersten mal lese steht 0x0E also ist es gesetzt auch wenn ich es vor
> SPI_Write_Disable(); lese ist es 0x0E

Das WREN ist fürs Schreiben ins Status-Register überflüssig, da reicht 
das EWSR. Und das WRDI ist eigentlich immer überflüssig, da es nach 
einer Schreiboperation automatisch zurückgesetzt wird.

Hm, wenn es immer 0x0E bzw. 0x0C bleibt, und WP und HOLD sicher auf VCC 
liegen, bleibt eigentlich nur ein Hardware-Problem. Takt zu hoch wird es 
ja wohl auch nicht sein. Kaputt?!

Ähm, nur zur Sicherheit: VCC ist durchgehend sauber im Bereich 2,7 bis 
3,6V? Keine kurzen Einbrüche oder so???
Gast #5507169
Lesenswert?

Ich hab den Fehler gefunden.
Hier falls jemand das gleiche Problem hat.

Der CE gemessen mit Osz ging auf GND, das reicht aber nicht aus 
vermutlich zu langsam. ein 100K Wiederstand von CE auf Masse und alles 
läuft perfekt.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren