Forum: Mikrocontroller und Digitale Elektronik I2C im µC durchschleifen


von mcmoto (Gast)


Angehängte Dateien:

Lesenswert?

Hallo,

gibt es einen Mikrocontroller der zwei I2C Schnittstellen hat und diese 
für einen speziellen Fall einfach durchschleifen kann?
Der Mikrocontroller soll als Master Daten von 3 Slaves sammeln und im 
Haupsystem als Slave eingebunden werden.
Es gibt jetzt den Spezialfall das ein Slave manchmal ein Firmware-Update 
braucht. Da ich dies nicht im µC nachbauen will ist meine Frage eben ob 
es diese Funktion gibt, wenn nicht gibt es einen Baustein der mir die 
I2C Leitungen brücken kann?

Danke und Gruß

von Peter D. (peda)


Lesenswert?


von Peter R. (pnu)


Lesenswert?

Da hast Du wohl den Zweck eines I2C-Bus nicht begriffen. An dem hängen 
viele Teilnehmer. Wenn einer dieser Teilnehmer etwas zu sagen hat, gibt 
er als master den Takt aus und stellt die Verbindung zu einem slave her.
Zwei Master gleichzeitig gibts nicht. Mehrere slaves gleichzeitig 
könnten evtl. funktonieren, nur fällt das acknowlegment aus, die 
wichtigeste Kontrolle zur Richtigkeit des Busmanagments, also wie master 
und slave zu-bzw. weggeschaltet werden.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Peter R. schrieb:
> Zwei Master gleichzeitig gibts nicht.

Prinzipiell schon, die müssen dann aber multimaster -fähig sein.

http://www.i2c-bus.org/multimaster/

Beitrag "TWI-Multi-Master für ATMEGA in C"

: Bearbeitet durch User
von Chriss (Gast)


Lesenswert?

Das macht nur Sinn, wenn vielleicht der "Zwischen-uC" die Daten buffern 
oder sonstwas mit machen soll... Und der Bus zum "Haupmaster" sollte 
dann eine höhere Baudrate haben...

Anderenfalls, richtige vernünftige Architektur bauen. Dann reicht 1x 
IIC.

Und wenn's zum Spass doch mit 2 IIC gemacht werden soll... Infineon 
XMC's haben bis zu 6 USIC's, da kann man das mit machen.

von Juergen R. (rothy)


Lesenswert?

Wenn die CPU schnell genug ist könnte ich mir einen selbst gebastelten
BYPASS-Mode nach folgendem Pseudocode-Ansatz vorstellen:
1
while (BYPASS_MODE_PIN)
2
{
3
  if (SDA_SLAVE_PIN == LOW) {
4
    SDA_MASTER_PIN_DIR = OUTPUT;
5
    SDA_MASTER_PIN = LOW;
6
  }
7
  else {
8
    SDA_MASTER_PIN_DIR = INPUT; //mit pull up Logik falls Schaltung keine hat
9
  }
10
  if (SCL_SLAVE_PIN == LOW) {
11
    SCL_MASTER_PIN_DIR = OUTPUT;
12
    SCL_MASTER_PIN = LOW;
13
  }
14
  else {
15
    SCL_MASTER_PIN_DIR = INPUT; //mit pull up Logik falls Schaltung keine hat
16
  }
17
}

von Falk B. (falk)


Lesenswert?

Leicht verspäteter Beitrag, außerdem Unsinn. Wenn jemand einen I2C Bus 
trennen und durchschleifen will, nimmt er dazu passende I2C MUX. Fertig.

von NichtWichtig (Gast)


Lesenswert?

Schau Dir mal den PDA9540 an, ein 2 way Multiplexer.
Damit wäre sowas machbar.

von NichtWichtig (Gast)


Lesenswert?

Mist, vertipt.
PCA9540

Beitrag #5273641 wurde von einem Moderator gelöscht.
von M. K. (sylaina)


Lesenswert?

Peter R. schrieb:
> Zwei Master gleichzeitig gibts nicht. Mehrere slaves gleichzeitig
> könnten evtl. funktonieren, nur fällt das acknowlegment aus, die
> wichtigeste Kontrolle zur Richtigkeit des Busmanagments, also wie master
> und slave zu-bzw. weggeschaltet werden.

Zwei Master im I2C gibts schon, ist aber selten. Mehrer Slaves sind 
nicht die Ausnahme in I2C sondern die Regel, IMO gibts nämlich keinen 
(bzw. kaum einen) Grund I2C mit nur einem Master und einem Slave zu 
betreiben.
ACK und NACK sind für die Kommunikation zwar wichtig aber noch wichtiger 
ist die Adresse, damit auch jeder im Bus weis, wer gemeint ist wenn der 
Master fragt.

von Juergen R. (rothy)


Lesenswert?

Falk B. schrieb:
> Leicht verspäteter Beitrag, außerdem Unsinn. Wenn jemand einen I2C Bus
> trennen und durchschleifen will, nimmt er dazu passende I2C MUX. Fertig.

Ich gebs ja zu, UNSINN.
zu dem ich mich habe hinreissen lassen,
weil ich auf diese Art mal erfolgreich einen UART-Bypass für bestehende 
Hardware implementiert hab.

Mein Ansatz berücksichtigt auf keinste Weise die Bidirektionalität der 
I2C-Leitungen. Eine dumme Pegelweitereichung wie beim UART funktioniert 
hier nicht.
Schon ein ACK oder von Slave getriebene Daten bei Lesevorgänegen kämen 
hier nicht durch. Und dann noch Clock-Stretching .... OMG

Schäm :(

: Bearbeitet durch User
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.