Forum: Mikrocontroller und Digitale Elektronik Wie viele I2c Geräte können gleichzeitig von einem Arduino Nano benutzt werden?


von Captain Bone Spurs (Gast)


Lesenswert?

Bräuchte man nicht für mehr als einem I2C Gerät einen Multiplexer, da es 
wir hier über eine Bus Topologie sprechen? (+Nur eine 0x68 Adresse)

von Einer K. (Gast)


Lesenswert?

Ich verstehe deine Frage nicht!
Befürchte, dass du das wichtigste KO Kriterium unterschlagen hast.

Denn dass um 120 Adressen zur Verfügung stehen (ein paar sind 
reserviert) solltest du wissen.

Ansonsten ist ein Ausschlag gebender Punkt der maximale Sink Strom, 
welcher nicht überschritten werden darf.

von MaWin (Gast)


Lesenswert?

Captain Bone Spurs schrieb:
> Bräuchte man nicht für mehr als einem I2C Gerät einen Multiplexer,
> da es wir hier über eine Bus Topologie sprechen? (+Nur eine 0x68
> Adresse)

Beliebig viele. Schliesslich könnte ein device auf dem Bus mehrere 
'Schwänze' des Busses umschalten. Da gibt es dann kein limit.


Captain Bone Spurs schrieb:
> Bräuchte man nicht für mehr als einem I2C Gerät einen Multiplexer, da es
> wir hier über eine Bus Topologie sprechen? (+Nur eine 0x68 Adresse)

Nein, es sei denn, du hast deine I2C Devices so schlecht ausgewählt, 
dass mehrere dieselben Adressen tragen. Dann brauchst du halt noch 
Select-Leitungen bzw. zusätzliche externe Logik wenn die Devices keinen 
Deselect erlauben.

von Jim M. (turboj)


Lesenswert?

Den I²C Master kann man auch relativ leicht in Software mit je 2 
normalen GPIOs implementieren. Damit liessen sich recht viele Geräte 
anschließen - selbst wenn die auf eine einzige Adresse festgenagelt 
sind.

von PittyJ (Gast)


Lesenswert?

Ich habe schon oft die 0x48er Adresse genommen. Die geht auch.

von Toxic (Gast)


Lesenswert?


von c-hater (Gast)


Lesenswert?

Jim M. schrieb:

> Den I²C Master kann man auch relativ leicht in Software mit je 2
> normalen GPIOs implementieren.

Wenn der das Protokoll vollständig umsetzen soll, also insbesondere auch 
clock-stretching durch die Slaves korrekt berücksichtigen soll, dann ist 
das nicht mehr so ganz trivial sondern im Gegenteil eine ganz 
ordentliche Herausforderung.

von Lutz (Gast)


Lesenswert?

Und es braucht 2 statt eines Pins.

von PittyJ (Gast)


Lesenswert?

c-hater schrieb:
>
> Wenn der das Protokoll vollständig umsetzen soll, also insbesondere auch
> clock-stretching durch die Slaves korrekt berücksichtigen soll, dann ist
> das nicht mehr so ganz trivial sondern im Gegenteil eine ganz
> ordentliche Herausforderung.

Ich hatte schon über ein Dutzend verschiedene Slaves. Alle brauchten 
kein Clock-Stretching. Das ist in der freien Wildbahn eher selten.
Mit normalen Slaves kann man aufs Clock-Stretching verzichten und GPIO 
bitbangen. Dann wählt man eben einen Slave aus, der das nicht macht. Für 
Standardaufgaben kann man unter vielen Modellen wählen.

von Stefan F. (Gast)


Lesenswert?

Captain Bone Spurs schrieb:
> Bräuchte man nicht für mehr als einem I2C Gerät einen Multiplexer

Normalerweise nicht, weil es ein Bus ist. Wie viele Teilnehmer am Bus 
hängen können hängt von vielen Faktoren ab:

- Gewählte Übertragungsrate
- Die kürzeste erforderliche Flanken-Steilheit der Bus-Teilnehmer
- Die "stärke" der Ausgangstreiber vom schwächsten Bus-Teilnhemer
- Die Kapazität/Länge der Leitungen

Diese Punkte sind in der I²C Spezifikation näher erläutert: 
https://www.nxp.com/docs/en/user-guide/UM10204.pdf

Figure 3 zeigt den typischen Anwendungsfall

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.