Forum: Mikrocontroller und Digitale Elektronik I2C Reichweite bei geringem Buspegel


von Lennart G. (Firma: fleissige Studenten GmbH) (le_nerd)


Lesenswert?

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

von Holger (Gast)


Lesenswert?

Bei 100kHz eher unkritisch, ggf. Takt absenken

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

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?

von Lennart G. (Firma: fleissige Studenten GmbH) (le_nerd)


Lesenswert?

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!

von HildeK (Gast)


Lesenswert?

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.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

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?

von Lennart G. (Firma: fleissige Studenten GmbH) (le_nerd)


Lesenswert?

@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 ^^

von spontan (Gast)


Lesenswert?

Wie wärs denn mit aufbauen und messen?

von Ulrich H. (lurchi)


Lesenswert?

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.

von Lennart G. (Firma: fleissige Studenten GmbH) (le_nerd)


Lesenswert?

@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 ^^

von Schlumpf (Gast)


Lesenswert?

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.

von Schlumpf (Gast)


Lesenswert?

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...

von Lennart G. (Firma: fleissige Studenten GmbH) (le_nerd)


Lesenswert?

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?

von Schlumpf (Gast)


Lesenswert?

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.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

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.

von Lennart G. (Firma: fleissige Studenten GmbH) (le_nerd)


Lesenswert?

@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!

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

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
Noch kein Account? Hier anmelden.