mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik I2C-Pull-Up-Widerstand wohin?


Autor: Martin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Leute!

Bei meinem Projekt soll der I2C-Bus 4 Meter lang sein. Ein Master und
ein Slave-Gerät hängt dran.
Wo soll man jetzt eigentlich die beiden Pull-Up Widerstände für Clock
und Datenleitung platzieren?
Beim Master-Gerät oder beim Slave?

Danke für eure Antworten

Tschüss

Martin

Autor: Sven Bohner (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
... beim master ...

Autor: dragon (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wie schnell ist deine I2C übertragung? Benutzt du irgendwelche Treiber?

Autor: Martin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo!

Bis jetzt habe ich die I2C-Funktionen benutzt die mit dem
CodeVisionAVR mitgeliefert werden (Softwareansteuerung).
Dort liegt die Frequenz bei ca. 50KHZ - 80KHZ.
Leider kann man das nicht genau sagen. Am Oszi ist zu erkennen,
dass die Clock-Frequenz zu bestimmten Zeitpunkten nicht immer gleich
ist. Sie variiert.
Ich benutze einen ATMEGA128 und steige gerade auf die Hardware-I2C-
Schnittstelle um. Dort passt das mit dem Clock perfekt.
Von der Frequenz her gehe ich auf 30,418KHZ, damit die Übertragung
sicher ist.

Die Strecke wird gerade auf 15 Meter verlängert und ich habe auch
schon Treiberbausteine gefunden - P82B715.
Im Datenblatt steht, dass mit diesen Treibern das Kabel bis zu
50 Meter lang sein darf, aber eine Gesamtkapazität von 3000pF nicht
überschritten werden darf.

In diesen Datenblätter ist auch beschrieben, wie man die Kapazität
berechnet und daraus dann die Pull-Ups.
Bei einem Master-Gerät und einem Slave-Gerät werden zwei
Treiberbausteine benötigt. Von je einem Gerät zum Treiber wird ein
PULL-UP pro Leitung von ca. 33kOhm benötigt. Auf der Second-Seite
werden die Treiber zusammengeschlossen.
Pro Meter Kabel werden hier 50pF - 100pF gerechnet - Bei 15 Meter Kabel
wären dies im schlimmsten Fall 1500pF. Dieser Pull-Up wird jetzt mit der
Formel R2=1µsec/1500pF berechnet (Wenn ich alles richtig verstanden
habe.). Ich erhalte einen Pull-Up-Widerstand von 667 Ohm.

Gibt man jetzt diesen Widerstand pro Leitung zum Master-Treiber oder
wäre es sinnvoll den Widerstanswert zu verdoppeln und jeweils einen
Widerstand zum Master-Treiber und einen zum Slave-Treiber?

Tschüss

Martin

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.