Forum: Mikrocontroller und Digitale Elektronik SPI oder I2C


von peter_klein (Gast)


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

von rene (Gast)


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

von Peter (Gast)


Lesenswert?

vielen dank!

würde mich sehr freuen wenn auch noch andere ihr wissen einbringen 
könnten

von KlaRaw (Gast)


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.

von antworter (Gast)


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.

von Peter D. (peda)


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

von Andreas H. (andreas1993)


Lesenswert?

Guten Tag,

ich hätte damal eine Frage. Ich bin am überlegen, ob ich einen SPI oder 
I2C-Schnittstelle nehmen soll. Hab schon viel über die Vor- bzw. 
Nachteile gelesen.

Meine Frage wäre jetzt, warum ist die I2C-Schnittstelle 
störempindlicher?

Gruss
Andreas

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.