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
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
vielen dank! würde mich sehr freuen wenn auch noch andere ihr wissen einbringen könnten
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.
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.
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.