1-Wire ist ein von Dallas Semiconductor Corp. entwickeltes Bussystem zur Gerätekommunikation , das Daten, Signale und Leistung mit niedriger Geschwindigkeit (16,3 kbit/s) über einen einzigen Leiter bereitstellt.
1-Wire ähnelt im Konzept I²C, jedoch mit geringeren Datenraten und größerer Reichweite. Es wird normalerweise verwendet, um mit kleinen, kostengünstigen Geräten wie digitalen Thermometern und Wetterinstrumenten zu kommunizieren. Ein Netzwerk von 1-Wire-Geräten mit einem zugehörigen Master-Gerät wird als MicroLAN bezeichnet. Das Protokoll wird auch in kleinen elektronischen Schlüsseln verwendet, die als Dallas-Schlüssel oder iButton bekannt sind.
Eine Besonderheit des Busses ist die Möglichkeit, nur zwei Adern – Daten und Masse – zu verwenden. Um dies zu erreichen, enthalten 1-Wire-Geräte einen 800- pF- Kondensator, um Ladung zu speichern und das Gerät während der Zeiträume zu versorgen, in denen die Datenleitung aktiv ist.
1-Wire-Geräte sind in verschiedenen Gehäusen erhältlich: integrierte Schaltkreise, ein Transistor im TO-92- Stil und eine tragbare Form namens iButton oder Dallas-Schlüssel, bei der es sich um ein kleines Edelstahlgehäuse handelt, das einer Uhrenbatterie ähnelt. Hersteller produzieren auch komplexere Geräte als eine einzelne Komponente, die den 1-Wire-Bus zur Kommunikation verwenden.
1-Wire-Geräte können an verschiedenen Stellen in einem System Platz finden. Es kann eine von vielen Komponenten auf einer Leiterplatte innerhalb eines Produkts sein. Es kann sich auch um eine einzelne Komponente innerhalb eines Geräts handeln, z. B. ein Temperaturfühler. Es könnte an ein überwachtes Gerät angeschlossen werden. Einige Laborsysteme werden über Kabel mit modularen Steckern oder CAT-5- Kabel an 1-Wire-Geräte angeschlossen. In solchen Systemen sind RJ11 (6P2C- oder 6P4C- Modularstecker, die üblicherweise für Telefone verwendet werden) beliebt.
Durch das Zusammenschalten vieler 1-Wire-Komponenten können Systeme aus Sensoren und Aktoren aufgebaut werden. Jede 1-Wire-Komponente enthält die gesamte Logik, die für den Betrieb auf dem 1-Wire-Bus erforderlich ist. Beispiele sind Temperaturlogger, Timer, Spannungs- und Stromsensoren, Batteriemonitore und Speicher. Diese können über einen Buskonverter an einen PC angeschlossen werden. USB-, RS-232- Seriell- und Parallelport- Schnittstellen sind beliebte Lösungen für den Anschluss eines MicroLan an den Host-PC. 1-Wire-Geräte können auch direkt an Mikrocontroller verschiedener Hersteller angeschlossen werden.
Die Anbindung der iButtons an 1-Wire Bussysteme erfolgt über Buchsen mit Kontakten, die „Deckel“ und „Boden“ des Kanisters berühren. Alternativ kann die Verbindung semipermanent mit einer Buchse erfolgen, in die der iButton einrastet, aber leicht wieder entfernt werden kann.
Jeder 1-Wire-Chip verfügt über einen eindeutigen Identifikationscode. Diese Eigenschaft macht die Chips, insbesondere iButtons, zu geeigneten elektronischen Schlüsseln. Einige Anwendungen umfassen Schlösser, Einbruchmeldeanlagen, Computersysteme, vom Hersteller zugelassenes Zubehör und Zeitschaltuhren. iButtons wurden als Smart-Tickets von Akbil für den öffentlichen Nahverkehr in Istanbul verwendet.
Netzteile, Displays und Mac-Laptops mit Apple MagSafe- und MagSafe 2-Anschluss verwenden das 1-Wire-Protokoll zum Senden und Empfangen von Daten an und von dem angeschlossenen Mac-Laptop über den mittleren Pin des Anschlusses. Zu den Daten gehören Netzteilmodell, Wattleistung und Seriennummer; und Laptop-Befehle, um volle Leistung zu senden und die roten oder grünen Leuchtdioden im Anschluss zu beleuchten.
Original Dell Laptop-Netzteile verwenden das 1-Wire-Protokoll, um Daten über Leistung, Strom und Nennspannung über das dritte Kabel an den Laptop-Computer zu senden. Der Laptop verweigert dann den Ladevorgang, wenn der Adapter die Anforderungen nicht erfüllt.
In jedem MicroLan gibt es immer einen Master mit Gesamtverantwortung, der ein Personal Computer oder ein Mikrocontroller sein kann. Der Master initiiert Aktivitäten auf dem Bus, was die Vermeidung von Kollisionen auf dem Bus vereinfacht. In die Software des Masters sind Protokolle eingebaut, um Kollisionen zu erkennen. Nach einer Kollision versucht der Master die erforderliche Kommunikation erneut.
Ein 1-Wire-Netzwerk ist ein einzelner offener Beidraht mit einem einzelnen Pull-up-Widerstand. Der Pull-Up-Widerstand zieht den Draht auf 3 oder 5 Volt. Das Master-Gerät und alle Slaves haben jeweils eine einzelne Open-Drain-Verbindung zum Ansteuern des Kabels und eine Möglichkeit, den Zustand des Kabels zu erfassen. Trotz der Bezeichnung „1-Wire“ müssen alle Geräte zusätzlich noch eine zweite Ader, einen Masseanschluss, haben, damit ein Rückstrom durch die Datenleitung fließen kann. Die Kommunikation erfolgt, wenn ein Master oder Slave den Bus kurzzeitig auf Low zieht, dh den Pullup-Widerstand über seinen Ausgangs-MOSFET mit Masse verbindet. Die Datenleitung ist im Leerlauf hoch und kann daher auch eine begrenzte Anzahl von Slave-Geräten mit Strom versorgen. Es können Datenraten von 16,3 kbit/s erreicht werden. Außerdem gibt es einen Overdrive-Modus, der die Kommunikation um den Faktor 10 beschleunigt.
Ein kurzer 1-Wire-Bus kann von einem einzelnen digitalen I/O-Pin auf einem Mikrocontroller betrieben werden. Ein universeller asynchroner Empfänger-Sender (UART) kann ebenfalls verwendet werden. Spezifische 1-Wire- Treiber und Bridge- Chips sind verfügbar. Universal Serial Bus- "Bridge"-Chips sind ebenfalls erhältlich. Brückenchips sind besonders nützlich, um Kabel mit einer Länge von mehr als 100 m zu fahren. Bis zu 300 Meter verdrillte Doppelleitungen, also Telefonkabel, wurden vom Hersteller geprüft. Diese extremen Längen erfordern Anpassungen der Pull-Up-Widerstände von 5 bis 1 kΩ.
Der Master startet eine Übertragung mit einem Reset- Impuls, der die Leitung für mindestens 480 µs auf 0 Volt zieht. Dadurch wird jedes Slave-Gerät am Bus zurückgesetzt. Danach zeigt jedes Slave-Gerät, falls vorhanden, seine Existenz mit einem "Präsenz"-Impuls an: Es hält den Bus für mindestens 60 µs auf Low, nachdem der Master den Bus freigegeben hat.
Um eine Binärzahl "1" zu senden, sendet der Busmaster einen sehr kurzen ( 1–15 µs) Low-Puls. Um eine Binärzahl "0" zu senden, sendet der Master einen 60 µs Low-Puls. Die fallende (negative) Flanke des Impulses wird verwendet, um eine monostabile Kippstufe im Slave-Gerät zu starten. Die Multivibrator im Slave liest die Datenleitung ca. 30 µs nach der fallenden Flanke. Der interne Timer des Slaves ist ein preiswerter analoger Timer. Es hat analoge Toleranzen, die seine Timing-Genauigkeit beeinflussen. Daher werden die Impulse so berechnet, dass sie innerhalb der Grenzen liegen. Daher müssen die "0"-Impulse 60 µs lang sein und die "1"-Impulse dürfen nicht länger als 15 µs sein.
Beim Empfangen von Daten sendet der Master einen 0-Volt-Impuls von 1–15 µs, um jedes Bit zu starten. Wenn die sendende Slave-Einheit eine "1" senden möchte, tut sie nichts und der Bus geht auf die hochgezogene Spannung. Will der sendende Slave eine „0“ senden, zieht er die Datenleitung für 60 µs auf Masse.
Die Grundsequenz ist ein Reset-Impuls gefolgt von einem 8-Bit-Befehl, und dann werden Daten in Gruppen von 8 Bit gesendet oder empfangen.
Bei der Übertragung einer Datenfolge können Fehler mit einem 8-Bit- CRC (schwacher Datenschutz) erkannt werden.
Viele Geräte können sich denselben Bus teilen. Jedes Gerät am Bus hat eine 64-Bit-Seriennummer, von der 8 Bit als Prüfsumme verwendet werden, wodurch ein "Universum" von 2 56 (über 7,2 × 10 16) eindeutigen Geräteidentitäten ermöglicht wird. Das niedrigstwertige Byte der Seriennummer ist eine 8-Bit-Zahl, die den Gerätetyp angibt. Das höchstwertige Byte ist ein Standard (für den 1-Wire-Bus) 8-Bit-CRC.
Es gibt mehrere Standard-Broadcast-Befehle sowie Befehle, die verwendet werden, um ein bestimmtes Gerät zu adressieren. Der Master kann einen Auswahlbefehl senden, dann die Adresse eines bestimmten Geräts. Der nächste Befehl wird nur vom adressierten Gerät ausgeführt.
Das 1-Wire-Bus-Aufzählungsprotokoll ist wie andere Vereinzelungsprotokolle ein Algorithmus, mit dem der Master die Adresse jedes Geräts am Bus liest. Da die Adresse den Gerätetyp und einen CRC enthält, erzeugt die Wiederherstellung der Adressenliste auch eine zuverlässige Bestandsaufnahme der Geräte am Bus. Um die Geräte zu finden, sendet der Master einen Aufzählungsbefehl und dann eine Adresse, wobei er nach jedem Bit einer Adresse "hört". Stimmt die Adresse eines Slaves mit allen bisher gesendeten Adressbits überein, gibt er eine 0 zurück. Der Master sucht mit diesem einfachen Verhalten systematisch nach gültigen Folgen von Adressbits. Der Vorgang ist viel schneller als eine Brute-Force-Suche aller möglichen 56-Bit-Zahlen, denn sobald ein ungültiges Bit erkannt wird, sind alle nachfolgenden Adressbits als ungültig bekannt. Der 56-Bit-Adressraum wird als binärer Baum durchsucht, sodass bis zu 75 Geräte pro Sekunde gefunden werden können. Die Reihenfolge, in der Geräteadressen von diesem Aufzählungsprotokoll ermittelt werden, ist deterministisch und hängt nur vom Gerätetyp und der Seriennummer ab. Die Bitumkehrung dieser 56 Bits ergibt die Erkennungsreihenfolge für Geräte, die den veröffentlichten Algorithmus von Maxim verwenden (Algorithmus definiert in Application Note 187). Der Suchalgorithmus kann in einer alternativen Form implementiert werden, indem zunächst Pfade mit Adressbits gleich 1 statt 0 gesucht werden. In diesem Fall ergibt das Invertieren der 56 Adressbits und dann deren Umkehrung die Erkennungsreihenfolge.
Die Position von Geräten am Bus ist manchmal von Bedeutung. Für diese Situationen kann ein Mikrocontroller mehrere Pins verwenden, oder der Hersteller hat ein 1-Wire-Gerät, das den Bus abschalten oder weiterleiten kann. Software kann daher sequenzielle erkunden Bus - Domänen.
Die folgenden Signale wurden von einem FPGA, welches der Master für die Kommunikation mit einem DS2432 ( EEPROM ) Chip war, erzeugt und mit einem Logikanalysator gemessen. Ein logisches High am 1-Wire-Ausgang bedeutet, dass sich der Ausgang des FPGA im Tri-State-Modus befindet und das 1-Wire-Gerät den Bus auf Low ziehen kann. Ein Low bedeutet, dass das FPGA den Bus herunterzieht. Der 1-Wire-Eingang ist das gemessene Bussignal. Bei hoher Eingangsabtastzeit tastet das FPGA den Eingang ab, um die Geräteantwort zu erkennen und Bits zu empfangen.
Bei der Entwicklung und/oder Fehlersuche am 1-Wire-Bus kann die Untersuchung von Hardwaresignalen sehr wichtig sein. Logikanalysatoren und Busanalysatoren sind Werkzeuge zum Sammeln, Analysieren, Decodieren und Speichern von Signalen, um die Anzeige der Hochgeschwindigkeitswellenformen zu vereinfachen.