Forum: Mikrocontroller und Digitale Elektronik Frage zu SPI


von Fresh (Gast)


Lesenswert?

Hi

Ich habe mal eine kurze Frage zu SPI. Ich habe eine Controller der als 
SPI Master arbeitet und er soll mit einen SPI Slave kommunizieren. Wenn 
ich am Master die Sendefunktion aufrufe bekomme ich einen Takt, er legt 
das CS aus low und sendet die Daten. Wenn ich aber die Readfunktion 
aufrufe bekomme ich keinen Takt raus und daher auch keine Daten vom 
Slave. Die Lib stellt auch noch eine readwrite funktion zur Verfügung 
die zuerst schreibt und dann liest. Muss ich nun bei SPI immer die 
readwrite funktion aufrufen um Daten vom Slave zu erhalten und den Slave 
einfach sinnlose Daten schicken? Danke im Vorhinein für die Antworten.

Mfg Fresh

von Dennis (Gast)


Lesenswert?

Datenblatt des Slaves lesen. Danach sind deine Fragen beantwortet...

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Fresh schrieb:
> Muss ich nun bei SPI immer die readwrite funktion aufrufen um Daten vom
> Slave zu erhalten und den Slave einfach sinnlose Daten schicken?
Wie diese Funktionen implementiert sind, kannst am ehesten du wissen, 
denn nur du weißt ja sonst auch alles: Programmiersprache, Controller, 
Library, usw...

> Ich habe eine Controller der als SPI Master arbeitet und er soll mit
> einen SPI Slave kommunizieren. Wenn ich am Master die Sendefunktion
> aufrufe bekomme ich einen Takt, er legt das CS aus low und sendet
> die Daten.
Und jetzt kommts: weil der SPI nur gekoppelte Schieberegister sind, wird 
in der Hardware gleichzeitig mit dem Senden auch etwas empfangen.
Dort das Bild in der Mitte: 
http://www.lothar-miller.de/s9y/categories/17-SPI

Wie das jetzt in deiner Funktion verknotet ist, kannst am ehesten du 
selber wissen (s.o.)... :-/

von Tobi D. (fanti)


Lesenswert?

passt ja super hier, da muss ich nicht extra ein neues Thema aufmachen

wäre nett, wenn mir da jemand weiterhelfen könnte:

Ich habe die Seite von Ihnen Herr Miller durchgelesen (schöne Seite 
gleich als Lesezeichen gespeichert) sowie den Artikel hier im Forum 
"Porterweiterung mit SPI" angeschaut 
http://www.mikrocontroller.net/articles/Porterweiterung_mit_SPI , da ich 
genau das machen möchte, allerdings ist mir das Prizip noch nicht ganz 
klar.

Ich möchte das ganze für einen PIC in C realisieren.

Wird vom PIC (Master) nur ein Takt gesendet wenn auch Daten zum 
Schreiben vorhanden sind, oder liegt der Takt pausenlos an sobald der 
SPI enabled wurde

Wenn ich im Beispiel oben aus dem Forum ein Schieberegister dranhänge, 
muss ich dann den EN-Pin (SS) beschalten oder kann ich den immer auf 
High-Pegel legen wenn sowieso nur ein Slave am BUS dranhängt?

Muss ich den SS selbst beschalten oder regelt das der PIC sobald Daten 
im Ausgangsregisterpuffer drin stehn?

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Tobi D. schrieb:
> Wird vom PIC (Master) nur ein Takt gesendet wenn auch Daten zum
> Schreiben vorhanden sind,
Ja. Genaueres dazu im Datenblatt.

> Muss ich den SS selbst beschalten oder regelt das der PIC sobald Daten
> im Ausgangsregisterpuffer drin stehn?
Der SS ist nur für einen SPI-Slave interessant (genaueres dazu steht im 
DB). Üblicherweise wird daher dieser Pin von einem uC-SPI-Master nicht 
verwendet. Du selber mußt irgendwelche Portpins als SS-Signale 
verwenden.

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.