Forum: Mikrocontroller und Digitale Elektronik W25Q32JV SPI Flash liest immer 0xFF von geschriebener Adresse


von LausigerLötkolben (Gast)


Lesenswert?

Ich versuche gerade, die Verbindung zu einem W25Q32JV SPI Flash 
aufzunehmen.

Hier ist das Datenblatt: 
https://www.mouser.de/datasheet/2/949/w25q32jv_revg_03272018_plus-1489806.pdf

Ich kann die ID auslesen, d.h. nach diesem Befehl:
1
9F 00 00 00

bekomme ich diese Ausgabe:
1
00 EF 40 16

Das stimmt mit den Werten auf Seite 21 überein.

Mein Vorgehen ist nun, folgende Befehle abzuschicken:
1
06 (Write Enable)
2
20 0F 00 00 (Sector Erase 0x0F0000)
3
02 0F 00 00 5A (Page Program 0x0F0000 => 0x5A)
4
03 0F 00 00 00 (Read Data 0x0F0000)

Zwischen jedem Befehl liegen 1s Pause, d.h. um das BUSY-Bit auf Seite 35 
mache ich mir keine großen Sorgen.

Ich bekomme anstatt der erwarteten 0x5A allerdings den Wert 0xFF.

Was mich etwas verwundert ist die Beschreibung von Read Data auf Seite 
28:
1
The code and address bits are latched on the rising edge of the
2
CLK pin. After the address is received, the data byte of the addressed memory location will be shifted out
3
on the DO pin at the falling edge of CLK with most significant bit (MSB) first.

Bedeutet das nun, dass ich mittendrinn den SPI-Modus von Rising-Edge auf 
Falling-Edge umschalten muss (also CPHA von 0 auf 1)?

von Oliver R. (Gast)


Lesenswert?

Versuche bitte vor dem Page Program nochmal ein Write Enable. Es ist gut 
möglich, dass dieses nach dem Sector Erase automatisch wieder 
deaktiviert wird.

von Oliver R. (Gast)


Lesenswert?

Siehe Datenblatt Punkt: 7.1.2:

A write disable state occurs upon power-up or after any of the following 
instructions: Write Disable, Page Program, Quad Page Program, Sector 
Erase, Block Erase, Chip Erase, Write Status Register, Erase Security 
Register and
Program Security Register.

von Stefan F. (Gast)


Lesenswert?

"A Write Enable instruction must be executed before the device
will accept the Page Program Instruction"

Braucht der Chip eventuell (wie SD Karten) zudem einige Takte um die 
Kommandos auszuführen?

"while the memory is being programmed or erased, or when the Status 
Register is being written, all instructions except for Read Status 
Register will be ignored until the program or erase cycle has completed"

"As with the write and erase instructions, the /CS pin must be driven 
high after the eighth bit of the last byte has been latched. If this is 
not done the Page Program instruction will not be executed. After /CS is 
driven high, the self-timed Page Program instruction will commence for a 
time duration of tpp (See AC Characteristics)."

Page Program Time tPP 0.4 .. 3 ms

Scheint unabhängig vom Takt zu laufen, aber sicher bin ich mir da nicht.

von mitlesa (Gast)


Lesenswert?

Stefan ⛄ F. schrieb:
> Scheint unabhängig vom Takt zu laufen

Ja isso, das Programieren des Flash ist "self-ge-timed". Wenn
man die Maximalzeit abwartet ist man schon auf der sicheren
Seite.

Stefan ⛄ F. schrieb:
> zudem einige Takte um die Kommandos auszuführen?

Jedenfalls braucht es keine von aussen zugeführte (SPI-)Takte.

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.