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


von Andreas H (Gast)


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

von Rainer (Gast)


Lesenswert?

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

von Andreas H (Gast)


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

von Frankl (Gast)


Lesenswert?

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

von Andreas H (Gast)


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

von ERDI - Soft (Gast)


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.

von Stolinski (Gast)


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)

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.