Seite 1 von 1

I²C Multimaster

Verfasst: 26 Jan 2016, 07:36
von ski7777
Hallo,

ich wollte mal wissen ob ich TXT und TX parallel schalten kann(natürlich mit Levelshifter). Also, dass beide als Master fungieren und jeder die vollen Rechte hat.

Raphael

Re: I²C Multimaster

Verfasst: 26 Jan 2016, 14:09
von Markus Burkhardt
Hallo Raphael,

das ist eine sehr gute Frage. Bevor ich dir Quatsch erzähle, mache ich mich lieber schlau. Ich melde mich sobald ich es in Erfahrung gebracht habe.

Viele Grüße
Markus

Re: I²C Multimaster

Verfasst: 26 Jan 2016, 21:51
von jona2004
Hallo Markus,
Da mag ich mich dochmal einmischen.
Eine der Haupteigenschaften des I2C Busses ist die Multimasterfähigkeit. Das ist u.a. der Grund warum beide Leitungen (SCL, SDA) als opendrain betrieben werden und darum pull-ups benoetigt werden (wer low treibt gewinnt). Wenn fischertechnik keine speziellen Schutzschaltungen eingebaut hat, sollte das problemlos gehen. Wenn zwei Master gleichzeitig senden gewinnt derjenige der die niedrigere addresse mehr 0en sendet.
Mich hatte auch die Antwort zum Thema ´clock stretching' gewundert, da diese Eigenschaft normalerweise tief in der Hardware vergraben ist, und laut I2C spec verhanden sein muss.
Daraufhin habe ich mir mal die Spezifikation des laut Hardware Hack von Herrn Boge vorhandenen controllers "AM3352BZCZ60" angeschaut. Dort wird clock stretching explizit erwähnt. Es kann auch nicht per Software configuriert werden. Auch hier gilt natürlich das keine Schaltungen im TXT vorhanden sein dürfen, die die opendrain Eigenschaften aushebeln.
Grüße Joachim

Re: I²C Multimaster

Verfasst: 27 Jan 2016, 09:49
von Markus Burkhardt
Hallo Joachim,

danke für deine Anmerkungen. Ich bezweifele nicht, dass I²C im Allgemeinen multimasterfähig ist. Ich werde hier im Forum aber nicht behaupten, dass es klappt, wenn ich mir nicht sicher bin.

Was das Thema clock-stretching angeht: mein Kenntnisstand ist, dass der TXT clock stretching nicht unterstützt, obwohl die Hardware es, wie du bereits gesagt hast, beherrscht. Und meiner Erfahrung nach sind Spezifikationen leider meist nur Richtlinien (wenn ich mir z.B. anschaue, wie viele Jahre es dauert, bis es einen Compiler gibt, der eine neue C++-Spezifikation komplett umsetzt :roll: ).

Viele Grüße
Markus

Re: I²C Multimaster

Verfasst: 27 Jan 2016, 12:18
von H.A.R.R.Y.
Hallo jona2004,

das mit der HW-Unterstützung für clock-stretching funktioniert natürlich nur, wenn die zugedachte HW des Controllers auch benutzt wird. Falls die Pins des Controllers aber für andere Dinge belegt sind (oder spezielle Schutzschaltungen ihre Auswirkungen zeigen) bleibt nur die SW-Emulation des I²C und dann ist das mit dem clock-stretching ein ganz anderes Thema.

Das mit dem Multimaster ist eine der vielen Betriebsarten des I²C, die in der Spezifikation beschrieben sind. Es wird aber nirgendwo gefordert, daß jeder Busteilnehmer die "Königsdisziplin" Multimaster+Slave beherrschen muß. Üblicherweise ist "Single-Master" ausreichend, bzw. "Slave" für reine Peripheriebausteine.

Und den wirklichen Sachverhalt rund um TX(T) lassen wir jetzt mal Markus in aller Ruhe klären.

Grüße
H.A.R.R.Y.

Re: I²C Multimaster

Verfasst: 27 Jan 2016, 15:41
von Markus Burkhardt
Hallo Raphael,

der TXT unterstützt leider den Multimaster-Betrieb nicht. Wie Rei Vilo bereits in einem anderen Thread geschrieben hat, wird Multimaster zwar von der Hardware unterstützt, jedoch reagiert der TXT zu langsam auf die Freigabe des Slave-Gerätes.

Viele Grüße
Markus