SPI oder I2C

Gast #441837
Lesenswert?

hallo!

mir gefällt euer forum sehr gut und hoffe ihr könnt mir weiterhelfen:

ich benötige in einem projekt ein kleines uC netzwerk aus 2-3 uC.
ich möchte eine sehr einfache übertragung von daten realisieren
(master sendet zB 10001 - slave empfängt dies und ruft dementsprechendes 
unterprogramm auf..)

meine frage ist nun:
was soll ihc machen, I2C oder SPI?

da dieses projekt sehr kritisch beurteilt wird bitte ich um pro und 
kontra für beide varianten 
(preis,verkabelung,einfachheit,"reichtweite"....)

wäre sehr sehr dankbar für informationen und tipps.

liebe grüße,
peter
Gast #441843
Lesenswert?

SPI ist (Clock, DataIn, DataOut und ChipSelect), waehrend I2C aus (Data, 
Clock und Direction) besteht. Dh I2C schaltet die Richtung des Datenpins 
um. SPI ist daher sehr viel schneller. Davon abgesehen haben die meisten 
Controller ein SPI port.

rene
Gast #442071
Lesenswert?

Hallo Peter,
SPI ist wohl schneller als I2C aber nur etwas für kurze Strecken.
I2C kann bis 100 KHz, bzw. 400 KHz, über einige Meter betrieben werden. 
Wird ein CAT5-Kabel verwendet geht es auch noch weiter. Mit Repeatern 
und Extendern kann man noch höhere Reichweiten erzielen.
Wird der Takt z.B. von 100 KHz auf 10 KHz verringert, so erhöht sich 
ebenfalls die Reichweite, hier um den Faktor 10.
Die I2C-Bausteine haben alle eine Adresse, so dass der Bus mit SDA und 
CLK auskommt. SPI benötigt, so glaube ich, je Client eine 
Select-Leitung.

Zum I2C-Bus siehe auch http://www.cc2net.de/Tips/tips.html, I²C als 
Feldbus (I²C-Bus mit langer Leitung). Hier gibt es auch einigen 
qualifizierten Support.

Gruss Klaus.
Gast #442078
Lesenswert?

Ich würde definitiv SPI bevorzugen - gerade für längere Strecken.
I2C/TWI benutzt Pull-Ups, da Master- und Slavegeräte den Pegel senken 
können müssen (OpenCollector).

Meiner Meinung nach ist SPI deutlich störunempfindlicher (da "Push-Pull" 
und extra Takt).

Dazu kommt noch, daß SPI deutlich einfacher als die TWI/I2C zu 
programmieren und debuggen ist (bei SPI sieht man mit dem Osci, wer 
gerade sendet).

Ach ja... SPI runtertakten geht dank ClockPrescaler auch.
#442160
Lesenswert?

Welche Entfernung ?
Was für MCs ?


Bei >1m würde ich das gute alte RS-485 als single Master nehmen, ist am 
einfachsten.


Bei den AVRs würde ich das SPI nicht nehmen, ist leider ungepuffert.
D.h. Du kriegst massive Schwierigkeiten im Slavemode mehrere Bytes zu 
senden, wenn Du nicht ellenlange Wartezeiten oder ein cleveres Handshake 
einbaust.

Z.B. die AT89LP4052 (8051-Derivat) haben dagegen gepuffertes SPI und 
Interruptprioritäten, damit kriegt man dann full-Speed-Slaves hin.


Peter

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