Forum: Mikrocontroller und Digitale Elektronik Microcontroller als I2C Master und Slave


von Courtman (Gast)


Lesenswert?

Hi Leute,

ich arbeite derzeit an einem Projekt, wo ich mehrere Sensoren der 
gleichen Baureihe per I2C anschließen will.
Da die Datenrate und die Adressierung für einen einzelnen Bus für 
Probleme sorgen würde, will ich Cluster bilden.
Das heißt von meinem Maincontroller per I2C an andere Microcontroller 
und von dort wieder per I2C an meine Sensoren (pro Cluster jeweils 2 
Sensoren der gleichen Baureihe, da sich das LSB der Sensoren ändern 
lässt).
Im Microcontroller soll dann schon eine Vorverarbeitung der Sensordaten 
stattfinden, so dass die Datenrate im Main-Bus ausreicht.

Nun bin ich auf der Suche nach einem Microcontroller mit zwei I2C 
Schnittstellen, so das dieser als Master mit den Sensoren und als Slave 
mit dem Maincontroller kommunizieren kann.

Was für Microcontroller würden sich denn da anbieten?
Gibt es vielleicht irgendwo eine Seite, wo ich nach meinen Anforderungen 
filtern kann?

Danke und viele Grüße,
Courtman

von Peter D. (peda)


Lesenswert?

Z.B. der ATmega328PB hat 2 I2C-Busse.
Man kann aber auch das HW-I2C für den Slave und ein SW-I2C als Master 
nehmen.

von Helmut -. (dc3yc)


Lesenswert?

Hallo,

da fehlen noch einige Angaben, um dir helfen zu können:
- wieviele Sensoren
- haben alle die gleiche Adresse
- Leitungslänge
- kommen die Daten wirklich so häufig, dass ein Prozessor das nicht 
abkann?

Da würde ich erst mal den I2C-Multiplexer TCA9548A ins Rennen werfen. 
Und Soft-I2C kannst du sooft machen, wie Prozessorpins vorhanden sind. 
Aber da wäre mir das o.g. IC angenehmer.

von A. S. (Gast)


Lesenswert?

Courtman schrieb:
> Nun bin ich auf der Suche nach einem Microcontroller mit zwei I2C
> Schnittstellen, so das dieser als Master mit den Sensoren und als Slave
> mit dem Maincontroller kommunizieren kann.

I2C ist super für einfache Devices die einfach angeschlossen werden 
können.

Für Kaskadierung oder zwischen 2 µC ist es weniger geeignet. Da sind je 
nach Anforderung (Entfernung, Anzahl, Datenaufkommen, Platz, Strom) 
individuelle Verbindungen sinnvoller, da Du ja "eh" alles programmieren 
musst. (Der Vorteil der I2C-ICs ist, dass sie eine handvoll Befehle und 
Funktionen nach Datenblatt perfekt beherrschen)

Für einfache µC-Stern-Kommunikation eignen sich z.B. CAN oder Uart.

von Salerosa (Gast)


Lesenswert?

Vielleicht bringt Dich der weiter:

TCA9548A - 8-channel, bidirectional translating I2C switch

von Christian H. (courtman)


Lesenswert?

Hi,
danke für eure schnellen Antworten.

Die Idee mit dem Multiplexer hatte ich auch bereits. In der Arbeit soll 
ich aber verschiedene Ansätze untersuchen. Daher noch die Idee mit dem 
Microcontroller.

Helmut -. schrieb:
> da fehlen noch einige Angaben, um dir helfen zu können:
> - wieviele Sensoren
> - haben alle die gleiche Adresse
> - Leitungslänge
> - kommen die Daten wirklich so häufig, dass ein Prozessor das nicht
> abkann?

Insgesamt sind es 27 Sensoren, 3 Bauarten. Das heißt jeder Sensor wird 
in dem Netzwerk 9 Mal verwendet (= 9 Sensornodes)
Pro Sensor sind zwei verschiedene Adressen möglich.
Bilden will ich drei Cluster mit jeweils 3 Sensornodes. Eines wird per 
SPI direkt an den Microcontroller angeschlossen und die anderen beiden 
dann per I2C.
Die Leitungslänge ist ausreichend kurz. Maximal 1 Meter von 
Maincontroller bis zum am weitesten entfernten Sensornode.

Pro Sensornode habe ich ein maximales Datenaufkommen von 400 kbps (wird 
vermutlich geringer ausfallen. Auflösung soll aber trotzdem möglichst 
groß gestaltet werden).
Der Maincontroller unterstützt nur I2C Fast Mode (400 kHz).
Durch die Vorverarbeitung in den Microcontrollern soll der Bus zum 
Maincontroller aber mit deutlich geringeren Datenraten arbeiten können.

Edit: Die Wahl ist übrigens auf I2C gefallen, da die Infrastruktur 
möglichst unkompliziert gehalten werden muss und möglichst wenig 
Leitungen verwendet werden sollen. Die Kommunikation zwischen Micro- und 
Maincontroller ließe sich eventuell auch per SPI bewerkstelligen. 
Allerdings würde ich mir auch gerne die reine I2C Lösung näher anschauen

: Bearbeitet durch User
von c-hater (Gast)


Lesenswert?

Courtman schrieb:

> Nun bin ich auf der Suche nach einem Microcontroller mit zwei I2C
> Schnittstellen

AVR128Dyxx

Die haben alle mindestens eine I2C-Einheit, die aber gleichzeitig Master 
und Slave sein kann (die größeren haben zwei dieser Einheiten).

Außerdem haben sie auch genug Rechenpower und RAM, um auch ziemlich 
komplexe "Vorverarbeitungen" vornehmen zu können. Außerdem sind sie auch 
noch relativ günstig und über einen weiten Spannungsbereich einsetzbar.

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.