mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik SPI - reichen 3 Pins ?


Autor: Andreas H (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo!

ich möchte 2 AT90S8115 miteinander kommunizieren lassen und habe nur die 
folgenden 3 Pins zur Verfügung:

PB5 (MOSI)
PB6 (MISO)
PB7 (SCK)

reichen diese Pins aus, um die Kommunikation der beiden uC per 
(Hardware-)SPI zu ermöglichen, oder wird PB4 (SS) auch dringend 
benötigt?

Wie läuft die Kommunikation genau ab und wie programmiert man das am 
geschicktesten? Ich hab jetzt schon 2 volle Tage mit rumprobieren 
verloren und bekomme irgendwie nix gescheites hin...

Also im Detail:

Zunächst befindet sich nur ein 8515 in der Schaltung, der in einer 
Schleife darauf wartet, daß der zweite 8515 hinzukommt. Sagen wir, er 
wird während des laufenden Betriebs "angestöpselt".

Der nachträglich hinzugekommene 8515 soll nun erstmal ein (oder mehrere) 
Byte als "Hallo-ich-bin-da" senden.

Meine bisherigen Überlegungen:
1. An beiden uC das Hardware SPI enablen
2. Der zuerst vorhandenen uC wird als Slave eingerichtet und der 
nachträglich "eingestöpselte" uC als Master
3. Der Master (also der zweite 8515) fängt an zu senden
4. der Slave (also der zuerst vorhandene 8515) sollte empfangen

Bekommt denn der Slave auch mit, daß der Master anfängt zu senden? Oder 
wird hierfür dringend die SS-Leitung benötigt? Anhand des Datasheets für 
den 8515 werde ich daraus irgendwie nicht so ganz schlau.

Falls irgendjemand Beispiel-Code (Assembler) hat oder links zum Thema 
kennt, wäre ich auch hierüber Dankbar!

Danke schonmal für Eure Aufmerksamkeit, ich hoffe, ihr könnt mir 
helfen...

ciao,
   Andi

Autor: Rainer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
SPI ist normalerweise eine 3-Draht-Schnittstelle. Kenn die 
AVR-Implementation nicht, aber einen 4. Draht braucht SPI eigentlich 
nicht.

Autor: Andreas H (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Moin!

Mensch, das ging ja fix mit Deiner Antwort, danke!

Das mit der 3-Draht-Schnittstelle hatte ich auch so verstanden. Der SS 
Pin ist wohl irgendein SlaveSelect oder so, wird dann aber zur 
Datenübertragung selber wohl nicht gebraucht.

das heißt also, wenn ein uC als Slave konviguriert ist, dann wartet er 
(im Hintergrund) so lange ab, bis der Master tatsächlich anfängt zu 
senden?

ciao,
   Andi

Autor: Frankl (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Woher kommt die Masse wenn die µ's nicht die gleiche Versorgung haben ?

Autor: Andreas H (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Die beiden uCs haben die gleiche Versorgung. Um die beiden Schaltungen 
zu verbinden, habe ich habe insgesamt 7 Drähte zur Verfügung. Hiervon 
sind bereits folgende vergeben, damit der zweite 8515 überhaupt die 
Arbeit aufnimmt:

1. VCC
2. GND
3. Reset
4. Clk

Bleiben noch 3 Leitungen für die SPI.

ciao,
   Andi

Autor: ERDI - Soft (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

SS brauchst du dann, wenn du zwei µController verbinden willst, die mal 
Master oder mal Slave sein können. Mit diesem Pin wird dann festgelegt, 
welcher Controller was ist, sonst gibts Kollisionen.
Für Peripherie braucht man SS nicht.


Bis denn, ERDI - Soft.

Autor: Stolinski (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Beim Mikrocontroller der AVR-Reihe gelten folgende Konfigurationen beim 
Arbeiten mit der SPI-Schnittstelle:

Pin                Master SPI                  Slave SPI
-----------------------------------------------------------------
MOSI               User Defined                Input
MISO               Input                       User Defined
SCK                User Defined                Input
/SS                User Defined                Input

Mit der in der Tabelle benannten Konfiguration können zwei MC über den 
SPI-Bus Daten senden bzw. empfangen. Dabei ist MC1 MASTER und MC2 SLAVE. 
Der Pin /SS wird als Slave Select Input bezeichnet, damit wählt der 
MASTER den SLAVE aus (LOW-Aktiv).

Bei einem Bussystem mit >1 SALVE reicht nätürlich ein /SS Pin nicht aus. 
Jeder Schaltkreis mit SPI-Schnittstelle hat zusätzlich noch einen /CS 
Eingang (im allgemeinen LOW-Aktiv). Werden Daten über den SPI-Bus 
gesendet erfolgt die Auswahl des Schaltkeises genau über diesen 
Chip-Select Eingang, im Gegnsatz zum I2C-Bus, wo jeder Schaltkreis eine 
eigene Adresse besitzt. Somit müssen weitere Ausgänge des MC für den 
jeweiligen /CS Eingang benutzt werden.

Beim SPI-Bus werden somit immer 4 Pins und natürlich der Masseanschluss 
benötigt.

Bis dann Jens (www.SynaSys.de)

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.