Titelbild Mikrocontroller

16.4. Multi-Master Bussysteme, Abstimmung und Synchronisation

Das Busprotokoll erlaubt Bussysteme mit mehreren Mastern. Spezielle Dinge müssen geregelt werden, damit sichergestellt ist, dass ein Übertragungsprozess auch dann normal abläuft, wenn zwei oder mehrere Master zum gleichen Zeitpunkt eine Übertragung beginnen. Zwei Probleme können in Multi-Master Systemen auftreten:
  • Ein Algorithmus muss implementiert sein, der es nur einem Master erlaubt, seinen Übertragung zu beenden. Alle Master müssen ihre Übertragung aufhören, wenn sie entdecken, dass die den Auswahlprozess verloren haben. Dieser Auswahlprozess wird Arbitration (Schiedsgericht) genannt. Wenn ein unterlegender Master bemerkt, dass er das Schiedsgericht verloren hat, muss er sofort in den Slave-Modus umschalten, um zu überprüfen, ob der durch den gewinnenden Master adressiert wurde. Die Tatsache, dass mehrere Master zur gleichen Zeit eine Übertragung begonnen haben, wird durch die Slaves nicht bemerkt. D.h. die Daten, die über den Bus ausgesandt wurden, müssen nicht unbrauchbar werden.
  • Verschiedene Master können unterschiedliche SCL Frequenzen verwenden. Ein Plan muss erdacht werden, um die Takte aller Master zu synchronisieren um die Übertragung in einer Art Sperrschritt fortzufahren.


Die verdrahtete UND-Funktion der beiden Busleitungen wird verwendet, um diese beiden Probleme aufzulösen. Die seriellen Takte aller Master sind UND verknüpft, woraus sich ein Takt ergibt, dessen High-Periode durch den Master mit der kürzesten High-Periode bestimmt wird und dessen Low-Periode durch den Master mit der längsten Low-Periode bestimmt wird. Man beachte, dass alle Master die SCL Leitung abfragen, indem sie die High und Low Zeiten der Taktleitung SCL auszählen.

SCL Synchromnisation

SCL Synchromnisation


Das Schiedsgericht wird durch alle Master kontinuierlich durchgeführt, indem sie die SDA Leitung überwachen, nachdem sie Daten darauf ausgegeben haben. Wenn der Wert der Datenleitung SDA nicht mit dem Wert übereinstimmt, den ein Master ausgegeben hatte, so hat er das Schiedsgericht verloren. Man beachte, dass ein Master das Schiedsgericht nur dann verlieren kann, wenn er ein High auf die SDA Leitung ausgibt, während ein anderer Master diese Leitung auf Low zieht. Der unterlegene Master muss sofort in den Salve Modus gehen, um zu überprüfen, ob der durch den gewinnenden Master adressiert wurde. Die SDA Leitung sollte High bleiben, allerdings ist des dem unterlegenen Master erlaubt, bis zum Ende des laufenden Daten- oder Adresspaketes weiterhin das Taktsignal zu erzeugen. Das Schiedsgericht wird so lange fortgesetzt, bis nur ein Master übrig bleibt. Das kann viele Bits lang dauern. Wenn mehrere Master zeitgleich den gleichen Slave adressieren, so wird das Schiedsgericht während der Datenpakete fortgesetzt.

Schiedsgericht

Schiedsgericht


Das Schiedsgericht ist nicht möglich zwischen:
  • Einer wiederholten Start Bedingung und einem Datenbit
  • Einer Stopp Bedingung und einem Datenbit
  • Einer wiederholten Start Bedingung und einer Stopp Bedingung


Es ist durch die Software des Anwenders sicherzustellen, dass diese ungültigen Schiedsgericht Bedingungen nicht auftreten können. Das bedeutet, dass in einem Multi-Master System alle Datenübertragungen die gleiche Zusammenstellung von SLA+R/W und den Datenpaketen haben müssen. Mit anderen Worten: Alle Übertragungen müssen die gleiche Anzahl von Datenpaketen haben, da andernfalls das Ergebnis des Schiedsgerichtes undefiniert ist.
Impressum