Verwenden Sie das USB-Kabel um, um I2C zu übertragen

Ich habe mich gefragt, ob es möglich wäre, einen IO-Extender (MCP23017-E/SP) über ein USB-Kabel mit einem ATMega32u4-AU zu verbinden.

Ich dachte mir, wenn Sie den SCL-Pin an Data+ des USB und den SCA-Pin an Data- von USB anschließen, den 4. Pin erden und den 1. mit Strom versorgen, sollte es funktionieren.

Liege ich damit richtig?

Bildbeispiel im Kicad-Schema:

Geben Sie hier die Bildbeschreibung ein

Es sollte für Kurzstreckenkabel funktionieren. Die Buskapazität kann behoben werden, indem die I2C-Geschwindigkeit nach Möglichkeit auf ein Minimum reduziert wird.
@Umar, von wie kurzer Entfernung sprechen wir hier? Haha. Ich hatte vor, es durch ein Kabel von etwa 6 Zoll bis 1 Fuß laufen zu lassen.
Das sollte reichen.

Antworten (2)

Es sollte kein Problem geben. Der ursprüngliche Nunchuk für das Nintendo Wii-Spielsystem, der über ein 1 bis 1,2 m ( 3,5 bis 4 Fuß ) langes Kabel mit der Wii-Fernbedienung verbunden ist, sehr ähnlich einem USB-Kabel (sechspoliger Stecker, aber nur vier wurden verwendet). Der Nunchuk enthielt einen 2-Achsen-Joystick, zwei Tasten und einen 3-Achsen-Beschleunigungsmesser von ±2 g und verwendete eine I2C-Schnittstelle zur Kommunikation mit der Fernbedienung, die mit 100 kHz lief, wie hier und hier dokumentiert . Sparkfun verkauft sogar ein kleines Breakout-Board für Bastler, die ihre eigenen Schnittstellen bauen.

Perfekt! Vielen Dank! Ich werde es verwenden, um eine 5x7-Matrix für eine Tastatur auszuführen :) sollte einfach sein. Könnte komplizierter werden, wenn ich LEDs in einer zukünftigen Charge mache. Aber vielen Dank! :)

Wo sind die Pullup-Widerstände für SDA und SCL?

Das Problem mit I2C ist die Kabelkapazität (bereits erwähnt), das Übersprechen zwischen SDA und SCL, Pullup-Widerstände und Spannungsunterschiede.

Laufen beide mit 5V? Dann ist das in Ordnung. Sie können Pullup-Widerstände am Master von 2k2 für SDA und SCL verwenden.

Es ist nur ein kurzes Kabel, also sollte es möglich sein. Du könntest den MultiSpeed ​​I2C Scanner ausprobieren . Es läuft mit 400 kHz, dann 100 kHz oder ist sehr sicher zu bedienen.

Ich habe es aktualisiert. Pullups-Widerstände hinzugefügt, nur um sicher zu gehen. Es wird bereits bei 5V laufen. Es sollte also überhaupt keine Probleme geben.
Keine Garantie, aber es sollte funktionieren. Führen Sie diesen Test mit 400 kHz durch. Als Backup-Plan kann die Wire.setClock verwendet werden, um die Geschwindigkeit auf 50 kHz zu senken.