Breite der SPI-Datenübertragung zu kurz?

Gast #2006477
Lesenswert?
• ▲
▼
Hallo,

ich bin mittlerweile etwas weitergekommen bei meinen Problemchen von 
gestern.
Wie gesagt ich möchte mit einem Mikrocontroller (MC9S12XF512) ein EEPROM 
(M95080) über SPI ansteuern. Hier die Links zu den Datenblättern:
http://www.mikrocontroller.net/attachment/97308/MC9S12XF512.pdf
http://www.mikrocontroller.net/attachment/97306/EEPROM.pdf

Im Prinzip ist mir der Ablauf jetzt klar. Ich muss eigentlich nichts 
anderes machen, als die Kontrollregister SPICR1 und SPICR2 sowie die 
Baudrate in SPIBR geeignet einstellen. Danach kann ich entweder, sobald 
im Statusregister SPISR das Bit SPIF gleich 1 ist das Datenregister 
SPIDR auslesen (Receive), oder sobald im Statusregister SPISR das Bit 
SPTEF gleich 1 ist in das Datenregister SPIDR schreiben (Transmit).

Die Datenübertragung an sich übernimmt dann der Mikrocontroller 
automatisch, sprich ich muss/kann mich z.B. nicht um das Setzen von SS 
kümmern.

Jetzt hab ich nur ein Problem:
Laut Mikrocontrollerdatenblatt S.938 f. umfasst eine Datenübertragung 
entweder 8 oder 16 Bits (je nach gewählter Einstellung im 
Kontrollregister SPICR2 Bit7).
Im Datenblatt des EEPROMS auf S.16 ist der erforderliche Ablauf zum 
Lesen des EEPROMs beschrieben. Hier steht, dass auf dein 8 Bit langen 
Befehl READ eine 16 Bit lange Adresse des zu lesenden Feldes folgen 
muss, woraufhin der Inhalt dieses Feldes übertragen wird. Sprich die 
Datenübertragung muss insgesamt mindestens 32 Bit lang sein. Der 
Mikrocontroller bietet mir aber nur max 16 Bit an. Ich kann das ja 
schlecht aufteilen, da der Mikrocontroller nach 16 Bit ja die 
Übertragung beendet und SS auf High zieht, oder???

Vielleicht ist es mir ja heute gelungen, mich ein wenig präziser 
auszudrücken, sodass sich jemand meiner erbarmt und Hilfe anbietet.

Danke!
Moderator (Firma: Titel) Persönliche Seite #2006491
Lesenswert?
• ▲
▼
Mücke schrieb:
> Ich kann das ja schlecht aufteilen,
> da der Mikrocontroller nach 16 Bit ja die
> Übertragung beendet und SS auf High zieht, oder???
Dann nimmm doch die SS-Leitung selber in die Hand. Das ist die übliche 
Vorgehensweise beim SPI-Master. Denn es könnten ja auch 2 oder mehr 
SS-Leitungen für mehrere SPI-Devices am Bus angeschlossen sein.... :-o
Gast #2006499
Lesenswert?
• ▲
▼
Lothar Miller schrieb:
> Dann nimmm doch die SS-Leitung selber in die Hand. Das ist die übliche
> Vorgehensweise beim SPI-Master.

Soweit ich es im Datenblatt des Mikrocontrollers richtig verstanden 
habe, funktioniert das leider nicht. Zumindest wüsste ich nicht wie. 
Denn wenn ich SPI über das Kontrollregister aktiviere, liegen die Pins 
ja nicht mehr in meiner Hand.
Gast #2006730
Lesenswert?
• ▲
▼
hm, also irgendetwas klappt nicht.

Als Ergebnis bekomme ich nach dem entsprechenden Tastendruck Wert = 0 
und nicht wie erhofft Wert = FF (wie es im Datenblatt steht auf S.18 
steht).

Ich habe mich auch schon an den Befehl fürs schreiben gemacht, aber auch 
nach dem Schreiben bleibt "Wert" auf 0.

Ich habe auch schon ein paar delays eingefügt, aber sicher bin ich mir 
da nicht. Und die Werte, die im Datenblatt angegeben sind, kann ich 
leider nicht wirklich zuordnen.

Wär echt super, wenn ihr über meinen Code drüberschauen könntet. Bin wie 
gesagt noch ziemlich Anfänger und weiß nicht weiter. Danke!!!
Angehängte Dateien:

Antwort schreiben

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.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.