www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik I²C - Wer ist Master?


Autor: Martin (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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!

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Der Micha (steinadler)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: peter-neu-ulm (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Miu (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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...

Autor: let (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: peter-neu-ulm (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.