Guten Tag, 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
Andreas Hoffmann schrieb: > Meine Frage wäre jetzt, warum ist die I2C-Schnittstelle > störempindlicher? 1. SCL und SDA sind bidirektional, dadurch wird es schwerer, Treiberbausteine dahinter zu schalten. 2. SPI arbeitet mit Push-Pull-Ausgängen, d.h. das Signal wird aktiv auf 1 oder 0 getrieben. Bei I2C können die Ausgänge nur nach 0 treiben, der 1-Zustand wird durch einen Pullup realisiert, der natürlich nicht so stark sein darf, denn sonst würde der 0-Zustand nicht erreicht werden oder zu viel Energie verbrauchen. 3. Das Zeitverhalten zwischen SCL und SDA (wer wird zuerst 0) ist empfindlicher, bei Störungen kann der Bus hängen bleiben. SPI ist einfacher und robuster. Das maximale, was passieren kann, sind Übertragungsfehler. fchk
Andreas Hoffmann schrieb: > Meine Frage wäre jetzt, warum ist die I2C-Schnittstelle > störempindlicher? Wobei sich die Frage m.E. nur bei sehr langen Leitungen stellt oder vielleicht bei sehr schlechten PCB-Layouts. Warum fragst Du?
Mal auch ein bisschen was für I²C und gegen SPI: * Bei SPI brauchst du pro Slave eine Select-Slave(SS)-Leitung, bei I²C reichen für alle Slave einmalig zwei Leitungen. SPI: 3 Leitungen(MOSI,MISO,SCK) + 1 für jeden Slave I²C: 2 Leitungen (SDA,SCL) * Bei SPI ist nicht viel festgelegt. Mehrere Bausteine können zueinander inkompatibel sein. Der Master muss dann öfter seine SPI-Einstellungen ändern. Üblicherweise gibt es 4 Modi.
Andreas Hoffmann schrieb: >Meine Frage wäre jetzt, warum ist die I2C-Schnittstelle >störempindlicher? Wenn die Schnittstellen so betrieben werden, wie sie mal vorgesehen waren (I2C als Bus zwischen IC auf Leiterplatten und nicht über lange Leitungen, wie es manche "Spezialisten" tun), dann ist die Störempfindlichkeit gar kein Thema. Wie ist denn Deine Aufgabenstellung??????
Frank K. schrieb: > 1. SCL und SDA sind bidirektional, SCL ist doch nur unidirektional und wird vom Master vorgegeben? Und bei SPI kann man auch eine Daisy Chain betreiben, womit die unzähligen CS Leitungen entfallen.
Naja SCL sehe ich schon als bidirektional an da der Slave auch "Clock Stretching" betreiben könnte. Angenommen er braucht noch mal ein wenig Zeit um Daten zu sortieren zieht er SCL weiter auf "low". So lange steht der Bus. In der I2C-Spezifikation sind keine Maximalzeiten für das "Clock Stretching" angegeben.
Es geht ja hier nicht darum zum 1000sten Mal die Unterschiede und Spezifikationen zu diskutieren, sondern ausschließlich um die Störempfindlichkeit. Torsten C. schrieb: > Warum fragst Du? spontan schrieb: > Wie ist denn Deine Aufgabenstellung? Ich bin gespannt auf die Antwort von Andreas Hoffmann, bis dahin ist m.E. alles gesagt. Oder?
Guten Abend, ich hab keine Aufgabenstellung. Ich will nur mich mit Schnittstellen beschäftigen und langsam anfangen sie in mein Programm mit ein zubeziehen. mfg andreas
Dann solltest Du Dich mit beiden Schnittstellen befassen. Denn evtl. kannst Du Dir bei einem IC nicht aussuchen, welche Schnittstelle es hat. Gruß Jobst
Jobst M. schrieb: > Dann solltest Du Dich mit beiden Schnittstellen befassen. Macht er ja, er hat ja nach beiden gefragt. @Andreas: Und wenn man aus dem Gerät heraus will, gib's noch RS485, CAN, LIN usw., die könnten Dich auch interessieren.
Torsten C. schrieb: > Macht er ja, er hat ja nach beiden gefragt Andreas Hoffmann schrieb: > Ich bin am überlegen, ob ich einen SPI oder I2C-Schnittstelle nehmen > soll. Das oder macht mich da etwas skeptisch ...
Hallo, ich schreibe das hier rein, da ich nciht extra einen neuen beitrag machen möchte. Ich muss jetzt auch zum ersten mal den I2C Bus auf meiner Platine verwenden. Er ist ca 7cm lang. auf Bottom führt eine 8mm Breite Leiterbahn die eine Spannung von 24V DC und eine max Stromstärke von 4A hat. Auf der gesamten Innenlage darüber fließt der Strom wieder zurück ( GND Potential ) auf der 2. Innenlage sind nun Signalleitungen und auch der I2C Bus. Nun verläuft der I2C-Bus leider zeitweise parallel zu der 24V 4A Leiterbahn von Bottom und schneidet sie dann schließlich. Ich kann das absolut nicht einschätzen, ob das zu störungen/ dem ausfall des I2C Buses führen kann. Es ist leider sogut wie nicht möglich den Bus anderst zu Routen/ extrem aufwändlig und er verlängert sich extrem. Gruß
spontan schrieb: > Wenn die Schnittstellen so betrieben werden, wie sie mal vorgesehen > waren (I2C als Bus zwischen IC auf Leiterplatten und nicht über lange > Leitungen, wie es manche "Spezialisten" tun) Selbst der Erfinder des I²C (Philips/NXP) zählt sich zu den "Spezialisten" und veröffentlicht in seiner Application Note AN10658 Hinweise zur Buspufferung und den Betrieb bis 120m Buslänge www.nxp.com/documents/application_note/AN10658.pdf
Michael S. schrieb: > Platine verwenden. Er ist ca 7cm lang. auf Bottom führt eine 8mm Breite > Leiterbahn die eine Spannung von 24V DC und eine max Stromstärke von 4A > hat. Auf der gesamten Innenlage darüber fließt der Strom wieder zurück ( > GND Potential ) auf der 2. Innenlage sind nun Signalleitungen und auch > der I2C Bus. Die 4A über die Ground-Plane können unangenehm werden, weil Du Dir dann Potentialunterschiede durch den Spannungsabfall einhandeln kannst. Versuche, die Rückleitung der 4A-Leiterbahn nicht über den Ground Layer zu realisieren, sondern über einen anderen Layer, und zwar so, dass der Abstand zwischen Hin- und Rückleitung an jedem Punkt minimal ist. Dann nämlich heben sich die Felder der beiden Leiterbahnen nahezu auf. Die Rückleitung verbindest Du an EINER Stelle mit der Ground Plane. Dann dürfte Dir kein Ungemach drohen. Signale sollten die 4A-Leiterbahnen außerhalb des von Hin- und Rückleiter aufgespannten Fläche kreuzen. Eventuell musst Du die Layer umsortieren. Das sind alles Vorsichtsmaßnahmen. Ich kann nicht sagen, ob die Maßnahmen in Deinem Fall unbedingt notwendig sind, sie schaden aber keinesfalls. fchk
Michael S. schrieb: > Ich kann das absolut nicht einschätzen, ob das zu störungen/ dem ausfall > des I2C Buses führen kann. Das kommt drauf an, wie hoch die Stromänderungen auf deiner 4A Leitung sein können und ob während der Änderungen I2C-Kommunikation stattfindet soll.
Michael S. schrieb: > Stromstärke von 4A > hat. Auf der gesamten Innenlage darüber fließt der Strom wieder zurück Das macht man nicht. Hohe Ströme und auch Schutzerde führt man an den Planes vorbei (z.B. Split-Plane) und verbindet sie an einer Stelle mit einem Net-Tie.
Mike schrieb: > spontan schrieb: >> Wenn die Schnittstellen so betrieben werden, wie sie mal vorgesehen >> waren (I2C als Bus zwischen IC auf Leiterplatten und nicht über lange >> Leitungen, wie es manche "Spezialisten" tun) > Selbst der Erfinder des I²C (Philips/NXP) zählt sich zu den > "Spezialisten" und veröffentlicht in seiner Application Note AN10658 > Hinweise zur Buspufferung und den Betrieb bis 120m Buslänge In der AN10216 geht's auch bis 1km ;)
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.