Hallo,
ich habe vor mit einer I2C Verbindung mehrere Controller über ca 10m
miteinander zu verbinden.
Dabei soll jeder der Reihe nach Master werden und eigene Daten per
Broadcast an die Anderen senden. Dies ist ein Experiment und der Code
funktioniert soweit schon per direkter I2C Verbindung.
Ich wollte dafür den P82B715 als I2C Extender nehmen.
Laut Datenblatt hätte ich an SCL, SDA sowie LDA und LCL jeweils einen
Pullup a 10kOhm gehängt.
Nun bin ich aber auf diese Platine gestoßen:
http://www.horter.de/i2c/i2c-extender/i2c_extender_1.html <- Übersicht
http://www.horter.de/doku/i2c-extender-testplatine_db.pdf <- Schaltplan
und Board
Wobei mich verwirrt, dass ich dabei entscheiden muss, ob es ein Sender
oder Empfänger sein muss?!
Bei I2C kann doch jeder Teilnehmer senden und empfangen und somit die
Leitungen herunterziehen.
Kann mir das jemand kurz erklären?
Es geht nicht um Sender und Empfänger sondern um, nennen wir es mal
Geräte- und Kabelseite. SDA/SCL ist beim lokalen Gerät, LDA/LCL ist das
Kabel mit einem höheren Pegel.
Achtung! Bei solchen "Extendern".
Wenn der uC der dran hängt nur 3,3V IO-Spannung liefert, dann
funktioniert das laut Datenblatt nur unter "Laborbedingungen" (25°C, und
bei optimaler Streuung der Bauteiltoleranen).
Das Kreuz dabei ist, dass bei I2C der Low-Pegel bis zu 1V sein darf!
Der uC aber i.d.R. für ein Low eine Spannung kleiner (0,3*Vcc) also
unter 0,99V benötigt.
Daher sollte bei sowas der uC am I2C 5V haben!
Wie hoch soll der Takt sein?
10K sind das relativ "sportlich", falls der Takt größer 100 KHz sein
soll.
So als Tip:
Zusätzlich zu den Datenblättern gibt es auch Application Notes und
teilweise
auch typische Applikationsbeispiele in den Datenblättern mit
Hinweisen zu Leitungslänge, Geschwindigkeit und zu verwendenden Pullups.
Leitungskapazitäten und parasitäre Kapazitäten (Leiterbahnen, ...)
sollte man auch berücksichtigen.
C-Tal schrieb:> http://www.horter.de/doku/i2c-extender-testplatine_db.pdf <- Schaltplan> und BoardC-Tal schrieb:> Also der uC läuft mit 5V, mir ist jetzt aber noch nicht ganz klar, ob> ich das so richtig gemacht habe.> Siehe Bild
Manchmal denke ich, dass die Leute einen verarschen wollen. Du hast doch
einen Plan gepostet. Was ist das Problem?!
Da gabs doch mal I2C ICs welche den I2C Bus so aufbereiten, dass es dann
mit einem CAN PHY extendet werden kann.
Das war der P82B96, dieser IC splittet die bidirektionalen I2C Signale
auf in jeweils 2 unidirektionale.
Das kann dann einem CAN PHY "mit automatischer Richtungsumschaltung"
vorgeworfen werden, zB dem PCA82C251
Weis jetzt aber nicht mehr wo ich das aufgeschnappt habe.
>Manchmal denke ich, dass die Leute einen verarschen wollen
Ups.
Da hat wohl der Kaffeepegel die Mindestschwelle unterschritten und ein
Mensch hat leider keinen BOD (Brown Out Detecor) ;-)
aSma>> schrieb:> C-Tal schrieb:>> http://www.horter.de/doku/i2c-extender-testplatine_db.pdf <- Schaltplan>> und Board>> C-Tal schrieb:>> Also der uC läuft mit 5V, mir ist jetzt aber noch nicht ganz klar, ob>> ich das so richtig gemacht habe.>> Siehe Bild>> Manchmal denke ich, dass die Leute einen verarschen wollen. Du hast doch> einen Plan gepostet. Was ist das Problem?!
Also Das Problem ist, wie oben beschrieben, dass bei der Platine die
Widerstände über Jumper eingestellt werden, je nachdem ob es ein
"Sender" oder ein "Empfänger" ist.
Laut Datenblatt hätte ich gesagt, dass quasi alle Jumper gesetzt werden
müssen.
Wenn du auf der Kabelseite mit 12V arbeitest sind 10m selbst mit 400kHz
Busgeschwindigkeit machbar. Ein PCA9600 macht bei mir 20m locker mit nem
Mbits/s.
PS: Schau dir einfach das Datenblatt vom P82B715 an, dann weißt du
endlich wofür die Jumper sind!
Im Zweifelsfall ist immer das richtig, was der Hersteller im Datenblatt
bzw. in der Appnote schreibt.
(Übrigens gibt es beim P82B96 Datenblatt auf S13/S14 eine schönes
Applikationsschaltbild mit Tabelle)
Eine eigene Frage?
Dieser Thread ist über 10 Jahre alt.
Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.