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

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