Hallo alle miteinander, ich habe mal wieder eine der schon oft beantworteten Fragen. Leider haben mir die alten Threads nicht wirklich viel weitergeholfen und ich mache mir ein wenig sorgen, ob ich die mögliche Reichweite meiens I2C-Busses nicht grade etwas an die Grenzen treibe. Ich habe eine 1.8V starken I2C vom Beagleboard auf meiner Platine. Auf dem Beagleboard xM legt dieser bereits 6,5cm zurück. Hinter den Stiftleisten wäre es auf meiner Platine aktuell nochmal ca. 13cm bei o.3mm breiter Leitung. Um die Leiterbahnen ist immer ein min. 1mm breiter Massestreifen (meistens eher mehr). Was sagt ihr dazu? Kein Problem? Schon kritisch oder geht auf garkeinen Fall? Bustakt darf laut Datenblatt des Empfängers max. 100kHz haben. Besten Dank schonmal an alle die drüber Nachdenken ;) Gruß, Lenni
Du könntest einen Pegelwandler (PCA9517) verwenden und auf der "anderen" Seite mit höherem Pegel arbeiten. Bringt natürlich nur dann was, wenn die an Deinem I2C-Bus angeschlossenen anderen Geräte etwas mit dem höheren Pegel anfangen können. Hast Du denn da Bauteile verwendet, die auch nur 1.8V Betriebsspannung haben?
Der Empfänger könnte auch mit 3.3V arbeiten. Einen Pegelwandler habe ich sowieso schon in der Schaltung ... Das wäre tatsächlich ne Möglichkeit. Allerdings ist der Pegelwandler auch schon ganz schön weit weg. Wahrscheinlich nochmal so ... 8cm hinter der Stiftleiste. Das würde allerdings die Anzahl der Leitungen die durch den Pegelwandler müssen immer größer und das Leitungsverknote wird wieder schlimmer. Hoffe da lieber noch auf mehr Leute die sagen "Passt scho" ^^ Danke euch beiden schonmal für eure Einschätzung!
Lennart G. schrieb: > Was sagt ihr dazu? Kein Problem? Zunächst kein Problem - aber wie groß sind denn die Pull-Up-Widerstände am Bus? Du kannst bis zu 3mA Strom ziehen, also 1k bei 1.8V sind noch weit innerhalb der Spec. Ich kann mir aber kaum vorstellen, dass deine Leitungsstrecke so stark kapazitiv belastet ist, dass du soweit runter gehen musst.
Lennart G. schrieb: > Das würde allerdings die Anzahl der Leitungen die durch den Pegelwandler > müssen immer größer und das Leitungsverknote wird wieder schlimmer Was für ein Pegelwandler ist das denn? Eignet sich der überhaupt für I2C?
@HildeK: Die PullUps haben 4,7k Ohm. Sonst kann ich dir nicht ganz folgen. Ich entnehme dem mal, dass bei kapazitiver Belastung mehr Strom gebraucht wird? Woran mache ich denn eine kapazitive Belastung fest? Dadurch, dass recht viel Masse drum herum ist, bildet sich doch quasi eine kapazitive Last oder? Oder meinst du eher kapazitive Last in Form von 2m geschirmtes Kabel? @Rufus: Der Pegelwandler ist ein TI SN74AVC16T245. Jetzt wo ich drüber nachdenke, fällt mir wieder ein, dass I2C ja open drain ist. Denke das kann der tatsächlich nicht. Würde aber so oder so nur höchst ungern den Pegel noch wandeln. Wie gesagt: Ich hoffe noch darauf überschüssig paranoid zu sein ^^
Gut 20 cm Leitungslänge sollten noch kein Problem sein, vor allem nicht bei Geräten die nur 100kHz mögen. Die niedrige Spannung ist sogar eher ein Vorteil, weil der Pullup kleiner werden darf und Kapazitäten weniger wirksam werden.
@Spontan: Darauf wird es vermutlich hinaus laufen. Würden jetzt größere Bedenken kommen, wäre mir die Platine zu komplex, aber ich werde sie dann wohl mal fertigen lassen, nur einen Bruchteil der Bauteile bestücken und mal sehen was obs ankommt oder eben nicht ^^
Nehmen wir mal an, deine Leitung und der Empfänger haben zusammen eine Kapazität von 50pF. Dann macht das mit 4k7 ein Tau von 250ns. Deine Flanke wird also "verschliffen", das Signal sollte aber deutlich unter 1 us von L nach H gewechselt haben.. 100kHz (nehme an, du meinst kBit/s) bedeutet aber, dass ein Bit 10 us lang ist. Die Zeit, die der Signalwechsel braucht, wäre also unter 10% der Bitzeit. Reflexionen werden auftreten, aber bei 20cm Leitungslänge werden die im einstelligen Nanosekundenbereich abgeklungen sein. Ich würde erwarten, dass die Flanke beim Wechsel L->H etwa 1 us benötigt und eventuell ganz "unten" ein kleiner Zappler zu sehen ist. Die Flanke von H->L wird deutlich schneller sein und auch hier könnte in der Flanke, oder wenn sie sehr schnell ist, nach der Flanke ein Zappler üder Schwinger erkennbar sein. Aber ich gehe davon aus, dass das Signal in beiden Fällen für ca 9ns stabil und sauber anliegt.
Schlumpf schrieb: > Aber ich gehe davon aus, dass das Signal in beiden Fällen für ca 9ns > stabil und sauber anliegt. Ähh 9us natürlich...
Ahh sehr gut. Habe wegen der 9ns grade schon nen Schock bekommen ^^ Vielen Dank für die ausführliche Erklärung. Ich hoffe mal das deine Annahmen stimmen :P 50pF halte sogar für relativ hoch gegriffen, demnach sollte sich also alles noch weiter zum besseren wenden oder?
Das sind natürlich nur übeschlagsmäßige Gedanken, die man sich bei so ner Sache machen kann. In der Realität kommen dann sicher auch noch andere Effekt zum Tragen wie Groundbounce etc. Aber rein von Seiten der Signalintegrität sollten die paar cm kein Problem sein. Und du hast recht.. wenn die Kapazität kleiner ist, dann werden die von mir beschriebenen Effekte auch geringer. Aus dem Bauch heraus und mit den überschlagsmäßigen Rechnungen würde ich aber sagen, dass du gute Chancen hast, dass das problemlos funktionieren wird.
Lennart G. schrieb: > Der Pegelwandler ist ein TI SN74AVC16T245. Jetzt wo ich drüber > nachdenke, fällt mir wieder ein, dass I2C ja open drain ist. Denke das > kann der tatsächlich nicht. I2C ist vor allem nicht nur open drain, sondern auch noch bidirektional. Wie hattest Du Dir das mit der Richtungsumschaltung gedacht? Dein Pegelwandler ist daher ganz sicher völlig ungeeignet. Für SPI kannst Du so etwas verwenden, aber nicht für I2C. Nimm als Pegelwandler für I2C einen PCA9517. Der ist dafür gedacht und funktioniert. Und als 8beiner auch nicht gerade groß oder aufwendig in die Schaltung einzubauen.
@Rufus: Stimmt das hab ich ganz vergessen. Da hatte ich auch schon einige gesehen die das können, als ich den SN74... gesucht habe. Denke ich werde es tatsächlich erstmal so ausprobieren. Im Zweifellsfall um selber mal Erfahrungswerte zu sammeln ;) Aber danke für den Tipp. Wenns dann nicht klappt, werd ich drauf zurück kommen!
Lennart G. schrieb: > Denke ich werde es tatsächlich erstmal so ausprobieren. Das ist sinnlos. Ein Bustreiber, den man mit einem Steuersignal umschalten muss, kann keinen I2C-Bus übertragen. Das geht nicht. I2C ist bidirektional, d.h. ändert ständig die Richtung des Datenflusses. Und das nicht nur auf der Daten- sondern potentiell auch auf der Taktleitung ("clock stretching" durch langsamere Slaves). Es ist daher müßig, einen '245 als Pegelwandler zu verwenden, ganz abgesehen davon, daß der keine Open-Drain-Ausgänge verwendet.
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.