Optionale Pull-up-Widerstände für I²C


7

Ich benötige eine Schaltung, mit der ich einem I²C-Bus optional Pull-up-Widerstände hinzufügen kann. Eine Möglichkeit wäre, zwei Jumper für jeden Pull-up-Widerstand hinzuzufügen. Aber ich dachte an so etwas:

Geben Sie hier die Bildbeschreibung ein

Auf diese Weise wird nur ein Jumper verwendet und SDA stört SCL nicht, wenn J1 nicht montiert ist. IMO sollte das funktionieren, aber vielleicht sehe ich etwas nicht.


2
Warum möchten Sie Pull-up-Widerstände trennen? Was ist der Grund?
Chupacabras

3
Weil die Schaltung, die mit dieser verbunden wird, sie haben könnte. Falls er es nicht tut, kann ich diese trennen. Andernfalls tritt ein Parallelwiderstand auf. Das ist aber wirklich nicht der Fall. Für mich ist es wichtiger, dass diese Art von Schaltung betriebsbereit ist.
Łukasz Przeniosło

2
Warum können Sie nicht einfach den Platzbedarf auf der Leiterplatte behalten, sondern sie entweder anpassen oder nicht anpassen?
MCG

1
Welche Chips verwenden Sie übrigens auf diesem I²C-Bus? Ich frage, weil die meisten modernen Mikrocontroller programmierbare Pullups haben und Sie nicht einmal mehr externe benötigen!
Marcus Müller

1
@ MarcusMüller Dies ist eine Anwendung, in der ich P82B96DP verwende. Ohne auf viele Details einzugehen, muss ich ein Gerät an die "lokale" i2c-Leitung anschließen, ohne dass ein Gerät mit eigenen Klimmzügen an externes i2c angeschlossen ist. In diesem Fall benötigen die LCL- und LDA-Leitungen Pullups, da sonst die Leitungen nicht hoch Z sind. Somit ist dieser Widerstandstrick.
Łukasz Przeniosło

Antworten:


15

Obwohl ich denke, dass dies funktionieren würde, würde ich nicht den unmittelbaren Vorteil sehen, nicht trennbare Klimmzüge zu haben. Ich bin sicher, Sie haben einen guten Grund!

Sei ein bisschen vorsichtig:

Eine Diode in Sperrrichtung ist ein Kondensator. Nehmen wir an, 3,3 V Ihres Busses bei geöffnetem Jumper. Wenn beispielsweise SDA niedrig ist und SCL hoch wird, befindet sich eine der Dioden in Vorwärts- und eine in Rückwärtsrichtung. Das Datenblatt sagt mir, dass es dann eine Kapazität von ungefähr 8pF hat. Der äquivalente Widerstand bei 400 kHz × 5 (eine Harmonische, die Sie benötigen, um minimal schöne und saubere Taktflanken zu erhalten) ist12106×810- -12=1/.16M.Ω- ziemlich nahe an Ihren Pull-up-Widerstandswerten! Möglicherweise führen Sie dann eine unfreiwillige Kreuzkopplung zwischen SDA und SCL ein. Es wird nicht schlecht, aber auf SDA klingelt ein bisschen SCL.

Nun, wie @TonyM hervorhebt, sind 200 pF Kapazität für I²C spezifisch in Ordnung, und das hat er schon seit Jahren getan. Machen Sie sich also keine Sorgen um dieses Übersprechen.


Die Pin- und Track-Kapazitäten eines durchschnittlichen I2C-Busses liegen jedoch wahrscheinlich deutlich über 8 pF. Die I2C-Spezifikation ermöglicht 200 pF mit Widerstands-Klimmzügen. Ich wäre sehr überrascht, wenn dies tatsächlich ein Problem verursachen würde, MM. Etwas näher am Staunen, da wir diesen Transistor / Diode / Widerstand ohne Probleme auf Platinen verwendet haben, die wir seit Jahren herstellen und betreiben :-) Ein sehr falscher Alarm, fürchte ich, muss abgewählt werden.
TonyM

@ TonyM ah! Sie sehen, Erfahrung wie Ihre ist eine Stärke! Ich freue mich sehr über Ihre Ablehnung :) Ich werde das in einer Minute beheben.
Marcus Müller

Schmeichelei hat Sie überall hin, guter Herr, ebenso wie die Überarbeitung der Antwort. Es ist jetzt eine sehr seltsame und etwas widersprüchliche Antwort, aber ich habe die Ablehnung entfernt :-)
TonyM

1
Die Beschreibung, die zu meiner Antwort geprägt wurde, trifft ziemlich gut auf mich selbst zu, daher nehme ich das auch als Kompliment :)
Marcus Müller

Meine Knie-Ruck-Lösung wären zwei separate Jumper anstelle eines Jumpers und eines Diodenpaares. Verwandte vorherige Frage: Umgang mit mehreren Pull-up-Widerständen an Modulen .
Nick Alexeev

7

Es ist wichtig, dass die an die Busleitungen angeschlossenen externen Pull-up-Geräte angepasst werden, um die kürzere maximal zulässige Anstiegszeit (oder Abfallzeit) für den Fast-Mode-I²C-Bus zu berücksichtigen. Es sollte weniger als 300 ns sein.

Die empfohlene Methode zum Umschalten eines Pull-Ups in der I²C-Spezifikation lautet wie folgt:

Geschaltete Pull-up-Schaltung

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.