Mein Ziel ist es, einen DPST an Pullup-Widerständen durch etwas Einfaches, Billiges und sehr Kleines zu ersetzen, das mit der I2C-Busspannung aktiviert werden kann. Ich dachte, dass dies eine häufig genug erforderliche Anforderung sein könnte, um einen einfachen IC für diese Aufgabe zu finden, aber nach stundenlangem Durchsuchen von Datenblättern finde ich keine Lösung, die so ideal ist, wie es mein Darm vorschlägt.
Die Frage, wie GPIO für umschaltbare Pullups von I2C verwendet werden kann, enthält die Grundlagen dessen, was ich auf einer sehr kleinen Leiterplatte erreichen möchte . Ich möchte nicht unbedingt ein GPIO verwenden, um die Klimmzüge ein- und auszuschalten. Mein Ziel ist die Flexibilität des Designs, damit die Klimmzüge von einem einzelnen Jumper oder einem GPIO eingeschaltet werden können.
simulieren Sie diese Schaltung - Schema erstellt mit CircuitLab
Inspiriert durch den Bus Pirate das macht etwas ähnliches unter Verwendung eines CD4066BC, Quad bilaterale Schaltern ich das gefunden TC7W66F, Dual bilateralen Schalter , die meinen Preis und Raum Ziele vage passen aber ich dachte , etwas ähnlich wie bei einem SOT-23 - Gehäuse.
Die oben erwähnte Frage hat eine Antwort, die die Verwendung von FETs vorschlägt, und ich habe einige Dual-FET-Pakete mit bereits zusammengebundener Quelle gefunden , die anscheinend funktionieren könnten, aber ich bin in erster Linie ein Software-Typ und muss zugeben, dass ich mich mit so etwas nicht 100% wohl fühle ohne weiteren Rat, oder ob es weitere Komponenten erfordern würde, die meine Raumwünsche erfüllen?
Antworten:
Ich würde "vorgespannte" BJTs vorschlagen
Dual-MOSFETs haben in der Regel eine hohe Drain-Source-Kapazität, was sich auf die Anstiegszeit Ihres I2C-Busses auswirkt. BJT-Schalttransistoren haben tendenziell weniger. Zum Beispiel haben diese einen Cob von nur 3pF, normalerweise bei 10 V (bei Niederspannung ist er 2-3 mal höher, was sie Ihnen nicht sagen und Sie sollten es wissen), aber das ist immer noch ziemlich bescheiden. Fügen Sie die Pullup-Widerstände zu den Kollektoren, die Emitter zu Vdd hinzu und verbinden Sie die Basen mit Ihrer / enable-Leitung, und fertig (ein Teil plus die Widerstände, und das Gehäuse ist nur 2,0 x 2,1 mm groß). Sehr billig im Volumen und nicht viel Sorge um ESD.
simulieren Sie diese Schaltung - Schema erstellt mit CircuitLab
Warum also nicht MOSFETs?
Sie haben einen geringeren Widerstand, oder? Nun, die gesättigten BJTs fallen höchstwahrscheinlich bei den Strömen, die Sie verwenden, um 50 bis 100 mV ab (im Vergleich zu 4066-Schaltern) und vergleichen die Ausgangskapazität eines FDS6312P-MOSFET (Coss) - typischerweise mehrere hundert pF in der Nähe von 0 V. Fast so hoch wie das Maximum von 400 pF für alle Geräte am Bus.
quelle
Eine Option sind zwei P-Kanal-MOSFETs. Diese können wie folgt angeschlossen werden:
simulieren Sie diese Schaltung - Schema erstellt mit CircuitLab
Wenn Sie MOSFETs mit Logikpegel verwenden, können Sie das Signal EN_n (nicht aktivieren) grundsätzlich mit + V Volt versorgen, um die Pull-up-Widerstände zu deaktivieren, und mit 0 V, um sie zu aktivieren. Wenn deaktiviert, sind die Widerstände im Wesentlichen nicht vorhanden. Sie haben Body-Dioden von den I2C-Leitungen zu V +, aber diese sollten keine Probleme verursachen.
Wie @bitsmack hervorhebt, können Sie dem EN_n-Pin auch einen optionalen Pull-up-Widerstand (R3) hinzufügen, der die MOSFETS deaktiviert, wenn der Pin schwebend bleibt. Dies würde es ermöglichen, dass der Eingang offen ist - einfach kurz nach Masse, um ihn zu aktivieren, oder schwebend, um ihn zu deaktivieren.
Es ist möglich, sehr kleine (SOT23-6 oder SOT23-5) Gehäuse zu erhalten, die zwei P-Ch-MOSFETs (z. B. diese ) enthalten, die dann wie oben gezeigt verdrahtet werden können - normalerweise sind sie so angeordnet, dass das Routing recht einfach ist. Sie können die Tore und Quellen zusammenfügen, um ein sehr kleines, im Wesentlichen 4-poliges Gehäuse zu erhalten. Selbst wenn Sie den Pull-up-Widerstand wie beispielsweise einen 0603 einwerfen, wäre die gesamte Schaltung wahrscheinlich kleiner als ein 2x2pin 0,1 "-Jumper.
quelle
Praktischer Ansatz
Halte es einfach. Ziehen Sie die I2C-Pull-up-Widerstände von jedem Breakout-Board heraus, das Sie haben. Installieren Sie Pull-up-Widerstände mit angemessenen Werten auf der Mikrocontroller-Platine.
Der Versuch, die Anzahl der Springer von 2 auf eins zu reduzieren, geht weit über die Verringerung der Rendite hinaus, wenn ich es selbst sagen darf.
Wenn ein praktischer Ansatz nicht anspricht
Sie können etwas in der Art einer aktiven Konstantstrom-Pull-up-Schaltung tun.
Jeder Allzweck-Kleinsignal-PNP-Transistor würde dies tun.
quelle
Wie wäre es einfach mit einem I2C-Busbeschleuniger mit einer Freigabe wie dem LTC4300A-1
Dies kann Teile des Busses isolieren und soll dies tun. Der Nachteil ist, dass Sie Ihre Klimmzüge auf beiden Seiten benötigen. Der Vorteil ist, dass Sie sich nicht wundern müssen!
quelle