System Management Bus
Der System Management Bus (abgekürzt SM-Bus, SMBus oder SMB) ist ein Zweileiterbus, der für die Baugruppenkommunikation entwickelt wurde (besonders für Halbleiter-ICs). Er hilft, den Zustand von Komponenten zu erkennen und Hardwareeinstellungen vorzunehmen. Zum Stromsparen in tragbaren Computern (Notebook, PDA, Telefon) ist es etwa sinnvoll, nicht benötigte Erweiterungssteckplätze abzuschalten oder die Anzeige zu dimmen.
Die Bitrate auf dem SMBus beträgt maximal 100 kbit/s. Am SMBus übernimmt jeweils ein Master die Bussteuerung (hauptsächlich die Takterzeugung), wenn er mit einem Slave kommuniziert. Kommunizieren zwei Master miteinander, so übernimmt der angesprochene Master vorübergehend die Rolle eines Slaves.
Da der SMBus in der Regel nur zwei Leitungen (Takt- und Datenleitung) benötigt, kann er sehr platzsparend auf Platinen verlegt werden; ebenso benötigen die angeschlossenen Chips nur zwei Pins und passen deswegen in kleinere Chipgehäuse.
Ein SMBus-Gerät kann z. B. Herstellerinformationen zur Verfügung stellen, die Modell- oder Seriennummer ausgeben, den Status des Energiesparmodus anzeigen, unterschiedliche Arten von Fehlern melden, Steuerparameter annehmen, einen Status zurückgeben oder eine Anzeige steuern. Bei der Nutzung des SMBusses beispielsweise auf PC-Hauptplatinen sind detaillierte Kenntnisse der vorliegenden Hardware Voraussetzung, weshalb er für den Anwender des Computers oft weder konfigurierbar noch zugänglich ist. Auf einigen PC-Hauptplatinen ist er jedoch über eine Stiftleiste erreichbar.
Der Bus wurde 1995 von Intel definiert. Der Standard legt den zeitlichen Ablauf der Bussignale und die elektrischen Anschlussdaten genau fest. Der SMBus basiert auf dem I²C-Busprotokoll von Philips. Die Spannungspegel auf dem Bus dürfen zwischen 3 V und 5 V liegen und sind damit mit denen des I²C-Busses abwärtskompatibel.
Das Protokoll weist einige wenige Unterschiede zum I²C-Protokoll auf. Diese umfassen ein Timeout, das heißt, wenn die Taktleitung für mehr als typisch 35 ms[1] auf Low gehalten wird, so setzen sich die Slave-Teilnehmer zurück. Im Gegenzug ist eine minimale Taktfrequenz von 10 kHz[1] festgelegt. Weiterhin gibt es ein optionales, low-aktives, gemeinsam benutztes Open-Collector-Signal (ALERT#), das die Slaves nutzen können, um beim Controller eine Interrupt-Anforderung auszulösen. Im Zuge der Bearbeitung der Interrupt-Anforderung erfragt der Controller die auslösenden Slaves durch das Alert Response Address Protocol. Dabei identifiziert sich jeder auslösende Slave, indem er versucht, mit seiner Slaveadresse auf einen Lesezugriff von einer speziell dafür reservierten Adresse (0C16) zu antworten. Während des Lesezugriffs führen die auslösenden Slaves eine Arbitrierung ähnlich der I²C-Multimaster-Busarbitierung durch, wobei jeder Slave sein ALERT-Signal erst dann deaktiviert, wenn er mit dem Alert Response Address Protocol seine Adresse erfolgreich an den Controller übermitteln konnte. Dazu muss der Controller das Alert Response Address Protocol solange wiederholen, bis das ALERT-Signal nicht mehr aktiv ist, weil alle Slaves bedient wurden.[2]
Den SMBus unterstützen die Microsoft-Betriebssysteme ab Windows 2000 sowie die Open-Source-Betriebssysteme FreeBSD, OpenBSD, NetBSD und Linux.
SMB1 ist eine gängige Bezeichnung für einen Anschluss des SM-Busses.
Weblinks
- Offizielle SMBus-Website (englisch)
- SBS Forum (englisch)
- Gegenüberstellung von I²C-Bus und SMBus[1] (englisch)
Quelle
- Comparing the I2C Bus to the SMBus, Application Note 476, 1. Dezember 2000
- Datenblatt TMP112x High-Accuracy, Low-Power, Digital Temperature Sensors With SMBus and Two-Wire Serial Interface in SOT563, S. 13, Abschnitt 7.3.2.5 SMBus Alert Function, online (englisch, 1 MB)