Forum: Mikrocontroller und Digitale Elektronik Winbond W25Q64 Problem lesen + c library


von Tuffi (Gast)


Angehängte Dateien:

Lesenswert?

Hallo,

ich habe eine c lib für die Winbond w25q64 geschrieben (da ich keine 
gefunden haben? Kurios irgendwie).

Jedenfalls klappt das irgendwie nicht richtig. Mache ich vll. noch was 
falsch von der init her? SPI läuft, da hängen noch andere Sachen dran, 
die funktionieren.

Ich kann löschen, das scheint zu funktionieren weil das Statusflag 
gesetzt wird. Was aber nicht geht ist alles andere (schreiben kann ich 
zumindest so nicht kontrollieren).

Wenn ich die festen IDs lese bekomme ich immer 0xDF - bzw. ALLES was ich 
versuche zu lesen endet mit 0xDF ?!

von Tuffi (Gast)


Lesenswert?

Es kommt nur FF raus, nicht DF.

SPI Mode 0 mit 32MHZ /4 ohne Double Speed und mit MSB First.
Das sollte ja passen?

von Tuffi (Gast)


Lesenswert?

Ich habe den Fehler lokalisieren können.

Ich hoffe jemand hat da einen guten Rat.
Am SPI Bus hängt wie gesagt noch mehr (NRF24, Graphik Display).
Sobald ich eine Schreibaktion auf das Graphik oder NRF mache, geht der 
Flash nicht mehr (gibt immer FF zurück). Schicke ich einmal ein Reset, 
geht er wieder.

Wie kann das sein. Garantiert wird CS richtig behandelt und ist HIGH 
wärend ich mit anderen Geräten spreche. Der NRF hat dieses Problem 
nicht, ebenso wie das Display auch nicht.

Anschluss vom W25Q64 ist gemäß Datenblatt Seite 5 3.1 Figure
https://datasheet.lcsc.com/lcsc/1810301427_Winbond-Elec-W25Q64JVSSIQ_C83140.pdf

1 = SS Xmega
2 = MISO
3 = VCC
4 = GND
5 = MOSI
6 = SCK Xmega
7 = VCC
8 = VCC

von Tuffi (Gast)


Lesenswert?

Tuffi schrieb:
> Ich habe den Fehler lokalisieren können.
>
> Ich hoffe jemand hat da einen guten Rat.
> Am SPI Bus hängt wie gesagt noch mehr (NRF24, Graphik Display).
> Sobald ich eine Schreibaktion auf das Graphik oder NRF mache, geht der
> Flash nicht mehr (gibt immer FF zurück). Schicke ich einmal ein Reset,
> geht er wieder.
>
> Wie kann das sein. Garantiert wird CS richtig behandelt und ist HIGH
> wärend ich mit anderen Geräten spreche. Der NRF hat dieses Problem
> nicht, ebenso wie das Display auch nicht.
>
> Anschluss vom W25Q64 ist gemäß Datenblatt Seite 5 3.1 Figure
> https://datasheet.lcsc.com/lcsc/1810301427_Winbond-Elec-W25Q64JVSSIQ_C83140.pdf
>
> 1 = SS Xmega
> 2 = MISO
> 3 = VCC
> 4 = GND
> 5 = MOSI
> 6 = SCK Xmega
> 7 = VCC
> 8 = VCC

Fehler gefunden. Da war statt einen PullUp ein 100nF auf der CS Leitung 
bestückt. Genial !

Also, läuft alles. Bibliothek funtkioniert :)

von uff basse (Gast)


Lesenswert?

Klingt banal, aber der Schaltplan und der Aufbau wäre doch
wichtig zu kennen. Manche Flashbausteine funktionieren
schon nicht wenn sie keinen Abblock-Kondensator haben oder
anderweitig "schlecht" versorgt werden.

Nachdem die Bausteine ja auch schnell sind werden sie auch
empfindlich auf "klingelnde" SPI-Signale reagieren.

Daher: Schaltplan und Aufbau ....

Da du dein SPI_MasterTransceiveByte(...) nicht zeigst ist
diese Funktion offensichtlich über alle Kritik erhaben,
nicht wahr? Ich finde es übrigens doof immer, bei jedem
Aufruf, den Pointer auf die SPI-Einheit zu übergeben.
Was für ein Overhead ....

Tuffi schrieb:
> da hängen noch andere Sachen dran, die funktionieren.

Kann eine schlechte Bus-Topologie erzeugen  ...

... meine 2ct ...

von uff basse (Gast)


Lesenswert?

uff basse schrieb:
> ... meine 2ct ...

Habe mir zu viel Zeit gelassen.

von A. B. (Gast)


Lesenswert?

Tuffi schrieb:
> ich habe eine c lib für die Winbond w25q64 geschrieben (da ich keine
> gefunden haben? Kurios irgendwie).

Wozu soll das gut sein? Das Ding ist wirklich ein "Wald-und-Wiesen" 
SPI-Nor-Flash, rein gar nichts Besonderes, da braucht man keine 
spezielle Bibliothek, so etwas macht keinen Sinn und findet man daher 
auch wohl nicht ...

von Tuffi (Gast)


Lesenswert?

A. B. schrieb:
> Tuffi schrieb:
>> ich habe eine c lib für die Winbond w25q64 geschrieben (da ich keine
>> gefunden haben? Kurios irgendwie).
>
> Wozu soll das gut sein? Das Ding ist wirklich ein "Wald-und-Wiesen"
> SPI-Nor-Flash, rein gar nichts Besonderes, da braucht man keine
> spezielle Bibliothek, so etwas macht keinen Sinn und findet man daher
> auch wohl nicht ...

Ich finde es macht schon Sinn. Wenn man es braucht, runterladen einfügen 
und los. Nicht erst nach Datenblatt das erzeugen, das spart Zeit und 
Geld

von Tuffi (Gast)


Lesenswert?

uff basse schrieb:
> Da du dein SPI_MasterTransceiveByte(...) nicht zeigst ist
> diese Funktion offensichtlich über alle Kritik erhaben,
> nicht wahr? Ich finde es übrigens doof immer, bei jedem
> Aufruf, den Pointer auf die SPI-Einheit zu übergeben.
> Was für ein Overhead ....

Ja richtig. Aber der Xmega hat genug Speicher und zum anderen nutze ich 
2 SPIs getrennt.

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.