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