www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Frage zu SPI


Autor: Fresh (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Dennis (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Datenblatt des Slaves lesen. Danach sind deine Fragen beantwortet...

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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.)... :-/

Autor: Tobi D. (fanti)
Datum:

Bewertung
0 lesenswert
nicht 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/Porterweit... , 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?

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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.

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.