www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik SPI-EEPROM Zugriffsproblem


Autor: Arne (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Moin zusammen,

habe ein Problem mit SPI-EEPROM AT25020 an einem Cortex-M3 
(STM32F103RB).
Dazu anbei zwei Screenshots vom Oszi - je einen für schreiben und lesen.
Und zwar lese ich vor jedem Schreib-/Lesezugriff auf das EEPROM dessen 
Statusregister (SR) aus, um zu sehen, ob es bereit ist neue Daten 
anzunehmen.
Falls ja, dann schicke ich ein WREN (Write Enable) Command und dann 
einen WRITE Befehl (der auch Adressbit A8 enthält), dann A7 bis A0 und 
am Ende
das Byte, das geschrieben werden soll ($CC bei mir).
Lesen ähnlich: Statusregister checken, dann Read-Commando (enthält auch 
A8) und das untere Adressbyte mit A7 bis A0. Und dann liefert er mir 
nicht $CC - wie ich erwarte - sondern erneut den Inhalt des 
Statusregisters ($02).
Ich habe das Datenblatt rauf und runter, aber sehe nicht, wo der Fehler 
sein könnte. Der /WP (Write protect) Pin hängt über einen 1k gegen 3.3V, 
/HOLD ebenfalls über 1k gegen 3.3V.
Das /CS generiere ich über einen Portpin selbst. Am SPI hängt auch noch 
ein SPI-Flash von Atmel - selbstverständlich mit eigenem /CS.
Hat jemand eine Idee, wo der Fehler liegt?

Thanx, Arne

Autor: René Klepsch (davinci77)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Arne

Hast du daran gedacht das der CS pin auf High muss zum Programieren?

Aus dem Datenblatt:
"to be programmed.
Programming will start after the CS pin is brought high"

Tschö
René

PS: Ok habe gerade in deinen Bildern gesehen das CS auf high geht;-(

Autor: Arne (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Habe eben mal das /CS des zweiten SPI-Devices (AT45DB161 16MBit Flash) 
gecheckt. Da ich in meinem Programm zunächst nur das EEPROM zum Laufen 
kriegen will, hatte ich das /CS für das Flash nicht initialisiert. Das 
lungerte bei 2.5V rum. Initialisiere es jetzt immer, hat aber keine 
Änderung gebracht.
Heute morgen habe ich die Schaltung am Oszi (die Bilder waren von 
gestern) angeschaut: SR ist jetzt nicht mehr $02 sondern immer $00, d.h. 
das WEN Bit im SR ist 0 = "indicates that the device is not write 
enabled". Aber das SR ist immer noch $00 wenn ich ihm ein WREN (Write 
Enable) Kommando schicke. Ich dreh langsam am Rad mit dem Sch....

Autor: Stephan Henning (stephan-)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
das hier wird wohl die Antwort sein:
Beitrag "Problem beim Schreiben eines SPI EEPROM AT25080"

Hatte ähnliche Probleme..

Autor: Arne (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Stephan,

danke für den Link - es geht immer noch nicht :(
Anbei mal der aktuelle Oszi-Screenshot vom Schreibvorgang.
Sowie die SPI-Einheit des uC nicht mehr Busy ist, toggle ich das /CS. 
Der Clock ist dann Low (ich arbeite im SPI-Mode 0).
Gelesen wird immer $00 statt $CC.
In Deinem Thread schriebst Du am Ende des ersten Beitrags, dass Du auf 
Bit0 = 1 im SR wartest.
In meinem Datenblatt zum 25020 heißt es:
"Bit 0 (/RDY) : Bit 0 = "0" indicates the device is ready. Bit 0 = "1" 
indicates the write cycle is in progress."
Also invertiertes Verhalten?

Autor: Stephan Henning (stephan-)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Arne,

wenn Dir 8051 ASM was nützt, kann ich heute Abend mal den Code posten.

Gruß

Autor: Arne (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke - aber das sagt mir dann nix.

thanx, Arne

Autor: Stephan Henning (stephan-)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Schade, wie ich gerade sehe toggle ich das CS zwischen den Befehlen.
Also:

CS=Low
WREN Command
toggle CS
Write Command
Put Adress High
Put Adress Low
Put Data
CS=High

Das muss gehen.

Autor: Stephan Henning (stephan-)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ps. habe noch mal Dein Scope angeschaut.

Du hast definitiv nicht getoggelt zwischen WREN und WRITE !!!!

Diese Frage stellte sich mir auch und wurde vom Dateblatt nicht 
beantwortet. Muss ich zwischen 2 Befehelen das CS toggeln ??

Definititv JA !!!

Autor: Arne (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Stephan,

danke für Deinen Nachtrag. Ich beziehe mich mal auf den Scopescreenshot 
als Anhang meines Beitrags von 9:12h
Da habe ich die Bytes ja mit blauen Linien getrennt. Zunächst frage ich 
ab, ob das EEPROM bereit ist neue Daten entgegenzunehemen - es könnte ja 
noch mit einem vorherigen WRITE beschäftigt sein.
Deine Aussage: "Du hast definitiv nicht getoggelt zwischen WREN und 
WRITE !!!!" ist für mich nicht nachvollziehbar. Da wird doch eindeutig 
/CS getoggelt. - Wie gesagt: der Beitrag von 9:12h! Im Screenshot des 
ersten Beitrags hatte ich das definitiv nicht gemacht.
Was ich aber definitiv (auch) nicht gemacht habe, ist nach dem Lesen des 
SR und vor WREN wieder zu toggeln. Und da liegt jetzt der Fehler: man 
muss NACH JEDEM BEFEHL /CS toggeln. Es tut jetzt!

Danke Stephan!!!
BTW: hast Du auch schon Atmel SPI Flashs angesteuert? Wird nämlich die 
nächste Aufgabe hier... ;)

bye, Arne

Autor: Stephan Henning (stephan-)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
sog i do............topggle me...

Nee Flash habe ich noch nich gemacht.
Ist aber denke ich nicht großartig anders.
Wird schon werden.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.