Hallo, ich habe ein I2C-Bus mit einem Mikrocontroller als Master und mehrere PCF8574 als Slaves. Nun möchte ich dieses bestehende System hardwaremäßig über ein RS485-Bus laufen lassen, wobei ich an einen I2C-RS485-Wandler gedacht habe. Habe irgendwo mal gelesen, daß dies sogar recht einfach ginge ... irgendwie nach jedem I2C-Baustein ein MAX 485 hängen und diese bi-direktional zusammenschalten ... Geht das überhaupt so einfach ? Gruß Mike
:
Gesperrt durch Moderator
Mike B. wrote: > Hallo, > > ich habe ein I2C-Bus mit einem Mikrocontroller als Master und mehrere > PCF8574 als Slaves. Nun möchte ich dieses bestehende System > hardwaremäßig über ein RS485-Bus laufen lassen, wobei ich an einen > I2C-RS485-Wandler gedacht habe. Habe irgendwo mal gelesen, daß dies > sogar recht einfach ginge ... irgendwie nach jedem I2C-Baustein ein MAX > 485 hängen und diese bi-direktional zusammenschalten ... > Geht das überhaupt so einfach ? > > Gruß Mike Nein, so einfach geht das nicht, RS485 und I2C sind vom Aufbau her unterschiedlich: I2C hat eine Daten und eine Clock-Leitung. RS485 ist bidirektional und differenziell. d.H. bei I2C wird ein bit so übertragen das zuerst die Data-Leitung einen Pegel annimmt, dann wird auf die Clock-Leitung auf Null gezogen, und der Empfänger übernimmt den Zustand der Data- Leitung. Bei RS485 wird ein Bit so übertragen, das die Leitung dabei kurz oder lang ein oder ausgeschaltet ist . Differenziell bedeutet hier, das es nicht explizit eine Masse oder GND gibt, sondern das für die Datenleitung eine zweite Leitung existiert. Soll zwischen Null und Eins umgeschaltet werden, so werden die beiden Leitungen umgepolt. Also ist immer eine Leitung Eins und die Andere Null oder umgekehrt. Das kann man nicht so einfach zusammen mixen....
Hallo Frank, ja, das ist im Prinzip schon richtig. Ich habe es so ähnlich noch in Erinnerung : - Pull-up-Widerstände an SCL und SDA belassen. - Danach an SCL und SDA die RS485-Treiber mit ihren Abschluß-Widerständen dran hängen. - Beim SCL ersten Treiber des MAX485 beim Master die Datenrichtung auf "Senden" und beim Slave auf "Empfang" legen. - Beim SDA zweiten Treiber des MAX485 beim Master sowohl Slave jeweils auf "Empfang" und "Senden" legen und beide Datenleitungen bidirektional zusammen zu einer Leitung legen. - Protokoll ist der RS485 eigentlich egal. So ähnlich habs ich damals gelesen ... Vielleicht gehts so oder ähnlich oder ist das totaler Unsinn ? Gruß0 Mike
Mike B. wrote: > Hallo Frank, > > ja, das ist im Prinzip schon richtig. > > Ich habe es so ähnlich noch in Erinnerung : > > - Pull-up-Widerstände an SCL und SDA belassen. > - Danach an SCL und SDA die RS485-Treiber mit ihren > Abschluß-Widerständen dran hängen. > - Beim SCL ersten Treiber des MAX485 beim Master die Datenrichtung auf > "Senden" und beim Slave auf "Empfang" legen. > - Beim SDA zweiten Treiber des MAX485 beim Master sowohl Slave jeweils > auf "Empfang" und "Senden" legen und beide Datenleitungen bidirektional > zusammen zu einer Leitung legen. > - Protokoll ist der RS485 eigentlich egal. > > So ähnlich habs ich damals gelesen ... > > Vielleicht gehts so oder ähnlich oder ist das totaler Unsinn ? > > Gruß0 Mike Könnte gehen, bringt aber nix: 1. Du benötigst 2 Leitungen für die SCL Leitung ( RS485 A und B) 2. Du benötigst 2 Leitungen für die SDA Leitung ( RS485 A und B) 3. Du benötigst 1 Leitung um Sender und / oder Empfänger von Senden auf Empfangen umzuschalten... 4. und wie möchtest Du diese Umschaltung realisieren? Wenn Du unbedingt die Reichweite von I2C verlängern möchtest, dann gibt es dafür extra IC´s (Analog Devices, wenn ich mich nicht irre oder Linear Technology) Wenn Du unbedingt RS485 nehmen möchtest, dann würde ich einen yC dazwischen setzen, der das Protokoll umsetzt. ( RS485 ist das gleiche, wie RS 232, also LT485 oder MAX485 an die RXD und TXD-Leitung des Prozessors anschließen und dann mit zwei Portpins oder integrierter I2C-Funktion "übersetzen" Aber beides Mixen wollen wird nix....leider...
>- Beim SDA zweiten Treiber des MAX485 beim Master sowohl Slave jeweils >auf "Empfang" und "Senden" legen und beide Datenleitungen bidirektional >zusammen zu einer Leitung legen. Der MAX-Baustein braucht eine Steuerleitung für die Richtung. So einfach ist das also nicht. Dazu wäre ein CAN-Transceiver wie PCA82C250 (oder so ähnlich) wesentlich besser geeignet, da damit auf der RS485-Seite keine Kurzschlüsse möglich sind. Auf der TTL-Seite sollte man die Sende- und die Empfangsleitung noch durch einen Open-Kollektor-Baustein in der Empfangsleitung entkoppeln - auch eine Kurzschlußquelle. >- Protokoll ist der RS485 eigentlich egal. Das stimmt.
Stephan S. schrieb: > nimm doch eine I2C Range Extender, z.B. PCA9615 Heisser Tip ..... nach kaum 18 Jahren.
Wastl schrieb: > Stephan S. schrieb: >> nimm doch eine I2C Range Extender, z.B. PCA9615 > > Heisser Tip ..... nach kaum 18 Jahren. Uppps ... :-( "Mit Brille wäre das nicht passiert" ;-)
:
Bearbeitet durch User
Warum willst du denn am I2C festhalten? Suchst du eine RS485-I2C-Bridge? Das ist aber letztendlich sinnlos, weil du die bridge dann an jedem Knoten brauchst. Sowas z.B.: PI7C9X1170 Also gleich RS485 ohne Umweg über I2C. Ah, sorry, habs übersehen, dass das ein alter thread ist. :-(
:
Bearbeitet durch User
Stephan S. schrieb: Hallo Stephan S., kannst du einmal ehrlich erklären wie man auf einen 18 Jahre alten Thread überhaupt antworten kann? Suchst du alte Beiträge um eine Antwort zu geben? Das ist doch überhaupt nicht nachvollziehbar wie man einen uralten Thread ausbuddelt um eine Antwort zu schreiben. Wie geht das? Was machst du? Dafür fehlt jede Logik. Was ist das für eine Schwachsinn? > Uppps ... :-( > "Mit Brille wäre das nicht passiert" ;-) Das kann keine Ausrede sein. Der Thread ist ja nicht in den Top Ten. Du musst ja danach gesucht haben um dann antworten zu wollen. Du hast ja keine Frage gestellt, du hast eine Antwort gegeben. Das macht alles keinen Sinn.
:
Bearbeitet durch User
Veit D. schrieb: > . Du musst ja danach gesucht Man muss aber nicht explizit einen alten Thread suchen, sondern einfach nach einem Thema, an dem man gerade selbst arbeitet oder Fragen hat. Und da guckt man halt nicht immer aufs Datum. Ich sehe keinen Grund, da irgendeine Absicht zu unterstellen.
Veit D. schrieb: > Das macht alles keinen Sinn. Reg dich ab, es muss nicht immer alles einen Sinn ergeben. rhf
Roland F. schrieb: > Veit D. schrieb: >> Das macht alles keinen Sinn. > > Reg dich ab, es muss nicht immer alles einen Sinn ergeben. Den 7. gibts schon mehr als 20 Jahre nicht mehr.
Moin, ich habe mal überlegt einen MAX491 hinter einen I2C Buffer P82B96 zu schalten, um die Reichweite zu erhöhen. Hab ich aber doch nicht getestet. Gruß Carsten
Veit D. schrieb: > Stephan S. schrieb: > > Hallo Stephan S., > > kannst du einmal ehrlich erklären wie man auf einen 18 Jahre alten > Thread überhaupt antworten kann? Suchst du alte Beiträge um eine Antwort > zu geben? Das ist doch überhaupt nicht nachvollziehbar wie man einen > uralten Thread ausbuddelt um eine Antwort zu schreiben. Wie geht das? > Was machst du? Dafür fehlt jede Logik. Was ist das für eine Schwachsinn? > >> Uppps ... :-( >> "Mit Brille wäre das nicht passiert" ;-) > > Das kann keine Ausrede sein. Der Thread ist ja nicht in den Top Ten. Du > musst ja danach gesucht haben um dann antworten zu wollen. Du hast ja > keine Frage gestellt, du hast eine Antwort gegeben. Das macht alles > keinen Sinn. zu Erklärung: ich hatte 2 Fenster offen, das andere war Beitrag "Gibt es Sensoren für Luftfeuchtigkeit über 1-Wire?" und da ist meine Antwort halt ins falsche Fenster gerutscht. Reicht das als Erklärung?