I²C - Wer ist Master?

Gast #625694
Lesenswert?

Hallo,

ich habe ein Verständnisproblem bei I²C.
Wer legt denn fest wer der Master bei I²C ist?

Z.B. mein VIA Epia Board hat einen I²C Connector. Wenn ich da jetzt was 
dran anshcließe, dann schließe ich ja einen Slave an... ist das richtig?
Also sitzt der Master irgendwo auf dem Board und wird von einem Treiber 
gesteuert?
Was ist aber, wenn ich selbst einen Master stellen wöllte?

Danke für eure Hilfe!
#625702
Lesenswert?

@ Martin (Gast)

>Wer legt denn fest wer der Master bei I²C ist?

Der Entwickler des Boards.

>Z.B. mein VIA Epia Board hat einen I²C Connector. Wenn ich da jetzt was

Was ist das für ein Board? Ein Mainboard von nem PC? Oder ein 
Evaluationboard mit einem uC?

>dran anshcließe, dann schließe ich ja einen Slave an... ist das richtig?

Kann auch ein Master sein, I2C ist multimasterfähig.

>Also sitzt der Master irgendwo auf dem Board und wird von einem Treiber
>gesteuert?

Hoffentlich.

>Was ist aber, wenn ich selbst einen Master stellen wöllte?

Dann tu das doch einfach.

MfG
Falk
#625719
Lesenswert?

Falk Brunner wrote:
>>Wer legt denn fest wer der Master bei I²C ist?
>
> Der Entwickler des Boards.

Der Master hat die Aufgabe das Clock-Signal zu liefern und Adressen 
rauszusenden.
Bei einem uC wird das beim I2C-Modus angegeben.
Der herkömmliche Slave bekommt nur mit, ob etwas an seine Adresse 
gesendet wurde.
Gast #625942
Lesenswert?

Dasjenige der ICs, das sich durch Abgabe der Stopbedingung an den 
bereiten Bus schaltet, wird zum Master und liefert den Takt des Systems. 
Nach der Stopbedingung kann jedes andere IC sich als Master ins System 
einklinken.
Gast #626004
Lesenswert?

@peter-neu-ulm

Ganz komische Aussage...

Es können jederzeit mehrere Master auf den I2C Bus zugreifen. Der jenige 
Master, der ein langsameres Taktsignal erzeugt, oder über SDA mehr 
Nullen auf den Bus legt gewinnt und kann seine Datenübertragung 
fortsetzen. Der zweite Master muss sein Senden sofort unterbrechen. 
Deswegen überprüfen die Hardware-I2C-Implementation in UCs immer auch 
wenn sie senden, welcher Pegel auf SDA und SCL anliegt.

Es gibt auch manche Single-Master-Devices die obigen Algo nicht 
verstehen und so für unvorhersehbare Ereignisse auf dem Bus sorgen.

Derjenige Master der eine START-Bedinung erzeugt und obige Bedingung 
gewinnt, kann den Bus belegen.

Z.B. kann es passieren, dass zwei Master gleichzeitig auf ein EEPROM 
zugreifen wollen, der eine lesend, der andere schreibend. Bei gleicher 
Geschwindigkeit wird der Master, der schreiben will gewinnnen, da er 
eine 0 als letztes Bit in der Adresse sendet. Der zweite Master merkt 
dies erst beim letzen Byte uns muss hier seine Datenübertragung 
unterbrechen.

Das ganze funktioniert, da alle I2C auf Open-Kollektor bzw. Open-Drain 
basieren. Deswegen ist dieser Bus auch nicht der schnellste. Ladezeit 
zwischen Pull-Up und Kapazität...

Der Slave kann zusätzlich im System für "Clock-Stretching" sorgen, wenn 
ihm das Taktsignal zu "schnell" ist...
Gast #626103
Lesenswert?

> Was ist aber, wenn ich selbst einen Master stellen wöllte?

Wenn du dich hier auf das VIA-Board beziehst hast du schlechte
Karten. Das Board ist der Master und es duldet auch keine anderen
neben sich.

Generell solltest du diese 'multiple master' Sache meiner Meinung
nach vergessen. Das ist zu anfällig. Viele Chip-Hersteller haben
bereits mit dem einfachen, 7-bit, single-master Bus Schwierigkeite
(z.B. TI).

Also: Ein Master und ein oder mehrere Slaves.

 - Michael
Gast #626142
Lesenswert?

@Miu
Jo, ich habe mich verschrieben: Das IC, das eine START-Bedingung auf den 
Bus gibt, macht sich zum Master. Um Kollisionen zu vermeiden, sollte 
natürlich jedes andere IC vorher prüfen, ob der Bus frei ist.

Anders gesagt: Jedes IC kann sich zum  Master machen. Dass es dabei 
keine Konflikte im Ablauf gibt, muss der Programmierer des IC oder des 
Prozessors Sorge tragen.

-Peter

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren