Winbond W25Q64 Problem lesen + c library

Gast #7103340
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 ?!
Angehängte Dateien:
Gast #7103505
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
Gast #7103513
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 :)
Gast #7103521
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 ...
Gast #7103526
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 ...
Gast #7104485
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
Gast #7104486
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.

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