Ich entwerfe eine Allzweck-Schnittstellenkarte und möchte möglichst viele der Peripheriegeräte verfügbar und auf einem Erweiterungskopf verwendbar machen, ohne dass dauerhafte (Löt-)Änderungen erforderlich sind.
Ein Problem besteht darin, die I2C-Pullup-Widerstände schaltbar zu machen, sodass sie deaktiviert werden können, wenn sie nicht benötigt werden. Meine ursprüngliche Idee verwendet einfach einen freien GPIO-Ausgang, um die Widerstände hochzuziehen, oder wird deaktiviert (hohe Impedanz), wenn er nicht benötigt wird, wie unten dargestellt. Das spart mir anscheinend einen Schalttransistor. Muss ich irgendwas beachten oder ist das machbar?
Ich weiß, dass die Pullup-Widerstandswerte von der Buslänge und -geschwindigkeit abhängen, aber wir haben festgestellt, dass für unsere Anwendungen 4k7 Ohm im Allgemeinen in Ordnung sind.
Simulieren Sie diese Schaltung – Mit CircuitLab erstellter Schaltplan
Die Verwendung eines GPIO-Pins zum Hochziehen des I2C-Buswiderstands ist eine vernünftige Idee, solange die verwendete MCU über GPIOs verfügt, die einen starken aktiven High-Level-Ausgang haben.
Sie müssen zwei GPIOs verwenden, einen für jeden Widerstand. Wenn nicht, werden die beiden Widerstände 2 x 4,7 kOhm zwischen die beiden Signalleitungen legen.
Sie haben also einen Kompromiss. Verwenden Sie dafür zwei GPIOs oder einen GPIO und zwei kleine Schalt-FETs. Oder Sie könnten jeden Widerstand mit einem zweipoligen Header und einem Jumper ausstatten und überhaupt keine GPIOs verwenden.
Scheint ziemlich vernünftig zu sein (besonders wenn Sie zwei Leitungen verwenden, wie @MichealKaras vorschlägt, aber ich wäre besorgt über die ganze Idee, den I2C-Bus überhaupt schweben zu lassen - natürlich abhängig davon, was Sie mit dem Bus machen. At Zumindest würde ich mich auf mehr Tests und Überprüfungen verlassen, als ich normalerweise tun würde, um sicherzustellen, dass der Bus reibungslos wieder hochfährt.
Natürlich stellt sich die Frage, warum Sie den Bus überhaupt deaktivieren müssen. Wenn es nur darum geht, Strom zu sparen, würde ich in Betracht ziehen, den Bus mit einigen kräftigen Widerständen hochzuziehen, die parallel zu Ihren geschalteten Widerständen permanent hoch geschaltet sind, wenn Sie einige Mikroampere entbehren können. Auf diese Weise bleibt Ihr Bus während der Inaktivität hochgebunden.
Arne
PlasmaHH
Arne