Forum: Mikrocontroller und Digitale Elektronik STM32 mit mehreren I2C Verbindungen zu Sensoren


von I2C_STM32 (Gast)


Lesenswert?

Hallo, gibt es einen STM32 mit mehreren unabhängigen I2C-Pins?

Ich habe eine Vielzahl (4-8) Sensoren, die mittels I2C kommunizieren und 
alle die selbe unveränderliche Adresse haben. Ich frage nur, bevor ich 
einen externen Multiplexer verwende.

mfg
I2C_STM32

von Gebhard R. (Firma: Raich Gerätebau & Entwicklung) (geb)


Lesenswert?

4 I2C  könnte es bei manchen Modellen schon geben(Pinanzahl >100). 8 
sicher nicht.
Du könntest ja das auch "zu Fuß" programmieren mittels Pin toggling. Hab 
ich schon gemacht, hat problemlos funktioniert. Allerdings sollten die 
Datenmengen überblickbar sein, sonst hast du womöglich ein Zeitproblem.
 Grüsse

von Kevin M. (arduinolover)


Lesenswert?

Die meisten haben 3 oder 4 I2C, die sind wenn sonst nicht so viel 
gebraucht wird auch bei kleineren Packages nutzbar. Ansonsten gibt es 
auch I2C multiplexer, PCA9546ARGVR z.B.

: Bearbeitet durch User
von Irgend W. (Firma: egal) (irgendwer)


Lesenswert?

I2C_STM32 schrieb:
> alle die selbe unveränderliche Adresse haben
Sicher? Bei manchen Herstellern gibt es, wenn man Glück hat noch ein 
weiteres Modell mit eigener Modellnummer das aber bis auf die 
I2C-Adresse identisch ist.

von PittyJ (Gast)


Lesenswert?

Bei meinem STM32H7 habe ich 4 mal I2C.
Benutze aber nur einen, denn die 4 benötigten LM73 gehen auch an einem 
Bus. Es gibt Adress-Decoder Pins am LM37, und es gibt noch den LM73-1 
mit geändertem Adressbereich.

Sag einfach mal, was du 8fach benötigst, und wir schauen nach Ersatz, 
der an einem Bus geht.

von Peter D. (peda)


Lesenswert?

I2C single Master läßt sich auch sehr gut in Software machen.
Das läßt sich auch leicht erweitern für mehrere Master, indem man SCK 
gemeinsam verwendet und den aktiven Master per Maskenbyte auswählt.
1
  I2C_SDA_OUT = 0;       // prepare low level
2
  mask = 1<<0;           // select master 0
3
  I2C_SDA_DIR |= mask;   // set SDA0 to low
4
  I2C_SDA_DIR &= ~mask;  // set SDA0 to high impedance
5
  if (I2C_SDA_IN & mask) // read SDA0 in

Sind die Ports 32Bit breit, lassen sich mit einer Maske bis zu 32 I2C 
Master auswählen.

von Axel R. (axlr)


Lesenswert?

Ja genau: ich hatte I2C Lichtsensoren RGB zu verwalten. Drei Stück. alle 
Adresse 0x21. Hab dann, weil ich es nicht besser wusste, einen PCA9548A 
davor geschaltet. Geht ganz gut. Der kann acht verschiedene Bausteine 
mit gleicher Adresse ansprechen. Mutiplexer eben.

Peter D. schrieb:
> Das läßt sich auch leicht erweitern für mehrere Master, indem man SCK
> gemeinsam verwendet und den aktiven Master per Maskenbyte auswählt.

Darauf bin ich nicht gekommen, nice ... ;)

von Bauform B. (bauformb)


Lesenswert?

Mehr als 4 gibt's anscheinend nur beim STM32H7. Aber 4 gibt's auch schon 
im LQFP-48:
L451CET, L452CET, L462CET
G471CCT, G471CET, G473CBT, G473CCT, G473CET, G483CET,
G474CBT, G474CCT, G474CET, G484CET

von Stefan F. (Gast)


Lesenswert?

Ansonsten gibt es noch I²C Multiplexer und Soft-I²C.

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.