# 1-Wire

1-Wire bzw. One-Wire oder Eindraht-Bus beschreibt eine serielle Schnittstelle der Firma Dallas Semiconductor Corp. (Maxim Integrated, heute Analog Devices), die mit einer Datenader (DQ) auskommt, die sowohl als Stromversorgung als auch als Sende- und Empfangsleitung genutzt wird. Der Begriff 1-Wire ist irreführend, weil zudem noch eine Masse-Verbindung (GND) erforderlich ist. Diese Masseverbindung wird bei Knopf-förmigen Anordnungen über eine gegenseitige Isolation der Gehäusehälften erreicht. Tatsächlich werden immer zwei physische Leiterverbindungen benutzt (GND, DQ).
Verfügbar sind integrierte Bausteine zur Temperaturmessung, Akkuüberwachung, Echtzeituhr, kleine Speicher etc. Die Technik wurde zur Kommunikation zwischen den Komponenten eines Gerätes entwickelt, z. B. zur Erfassung des Akkuzustandes in einem mobilen Datenerfassungsgerät (MDE).
Die Knopf-förmigen Anordnungen sind verbreitet als mechanisch besonders einfache auf die Trägerperson bezogene Authentisierungsfaktoren vor allem an Kassenterminals.

## Übersicht

* Die Verbindung arbeitet seriell und bidirektional, d. h. mit einer gemeinsamen Datenleitung für Senden und Empfangen.
* Die Datenübertragung erfolgt asynchron, d. h. es wird kein Taktsignal übertragen.
* Übertragen wird im Halbduplexverfahren, d. h. entweder wird ein Block gesendet, oder es wird ein Block empfangen, jedoch nicht beides zugleich.
* Die Übertragung erfolgt nach dem One-Master/Multi-Slave Prinzip, d. h. es können pro Bus nur ein Master (Steuereinheit), aber bis zu 100 Slaves (Sensoren, Speicher etc.) eingesetzt werden.
* Jeder Slave wird durch eine 64-Bit-ROM-ID adressiert. Diese besteht aus einem 8-Bit-Family-Code, einer 48-Bit-Seriennummer (Unique-Device-ID) sowie einer 8-Bit-CRC-Prüfsumme.
* Die Slaves versorgen sich über einen internen Kondensator, der über die Datenleitung aufgeladen wird. Eine externe Spannungsversorgung ist nicht notwendig, kann aber dennoch in der Regel zugeführt werden. Dies ermöglicht eine Erhöhung der Stabilität bei hohen Leitungslängen oder bei sehr vielen Slaves pro Bus.
* 1-Wire ist eine Spannungsschnittstelle. Die Spannung ist geräteabhängig zwischen 2,8 und 6 Volt.

## Elektrische Eigenschaften

Viele 1-Wire-Geräte lassen Betriebsspannungen zwischen 2,8 V und 5,5 V zu. Einige Geräte erlauben hingegen nur 3,0 V bis 3,7 V. Daher sollte unbedingt das Datenblatt beachtet werden. Je nach Baustein liegt die Stromaufnahme der 1-Wire-Geräte zwischen 2 Mikroampere und wenigen Milliampere.
Eine Besonderheit von 1-Wire-Geräten ist die verbundene Spannungsversorgung aus der Gegenstation. Hierbei geschieht die Versorgung der Slaves über die Datenleitung: Bei inaktiver Kommunikation (Idle-State) liegt die Datenleitung auf High-Pegel (+3,3 V oder +5 V) und lädt einen Speicherkondensator, welcher in jedem 1-Wire-Slave integriert ist (Parasite Power). Während der Kommunikation wird der Bus durch die Geräte (Devices) auf Low gepulst. Während der Low-Pulse wird der Slave aus seinem Kondensator gespeist. Je nach Ladezustand kann der Kondensator Low-Zeiten bis ca. 960 μs überbrücken.
Der 1-Wire-Bus wird über einen Pull-up-Widerstand von in der Regel zwischen 1 und 2,2 kΩ, bis 4,7 kΩ, auf High-Pegel gezogen. Die Größe sollte je nach Anzahl der Geräte und Leitungslänge entsprechend angepasst werden. Um Störungen und Probleme zu vermeiden, sind die Werte der Pull-up-Widerstände unbedingt in den Datenblättern nachzulesen.

## Timing

Da der 1-Wire-Bus im Gegensatz zu vielen anderen Bussystemen keine separate Leitung für das Taktsignal besitzt, muss ein vorgegebenes Timing eingehalten werden. Die Synchronisation erfolgt bei jedem Bit mit der vom Master erzeugten fallenden Flanke. Um eine logische 1 zu schreiben, wird der Bus vom Master für 1 bis 15 μs auf Low-Pegel gezogen, bei einer logischen 0 für 60 bis 120 μs. Zum Lesen zieht der Master wie beim „Write 1“ Signal den Bus für 1 bis 15 μs auf Low-Pegel und der Slave hält für die Übertragung einer logischen 0 den Bus darüber hinaus auf Low. Für einen Reset sendet der Master einen Low-Pegel-Puls mit einer Dauer von 480 μs. Ein Slave zeigt seine Anwesenheit an, indem er innerhalb von 60 μs danach den Bus für mindestens 60 μs auf Low zieht.
Die 1-Wire-Geräte besitzen zusätzlich noch einen Overdrive-Modus, der es ermöglicht, weitaus höhere Übertragungsraten zu erzielen. Um im Overdrive-Modus eine logische 1 zu erzeugen, muss nur noch lediglich für 1–2 μs ein Low-Pegel anliegen, für eine logische 0 sind im Overdrive-Modus schon 6 μs ausreichend. Um einen Reset zu erzeugen, reichen schon 48 μs aus. Ist das Reset-Signal länger als 80 μs, so gehen die 1-Wire-Geräte in den regulären Betriebsmodus, ansonsten bleiben sie im Overdrive-Modus.
Im regulären Betriebsmodus sind durch die oben aufgeführten Timingbedingungen Datenraten von bis zu 16,3 KBit/s möglich. Der Overdrive-Modus beschleunigt dies auf bis zu 142 KBit/s.

## Leitungsanforderungen

Die Verkabelung kann über ein einfaches Kabel bzw. eine einzelne Leitung auf einer Platine erfolgen. Mit einem passiven Pull-up-Widerstand sind so Leitungslängen von bis zu 100 m mit 150 1-Wire-Geräten möglich. Durch die Kontrolle der Slew Rate und durch einen aktiven Pull-up-Widerstand ist es sogar möglich, Leitungslängen von bis zu 300 m mit 500 1-Wire-Geräten zu realisieren. Die Qualität der Masseverbindung als Rückleitung über das allgemeine Erdpotential muss unter Betriebsbedingungen geprüft werden.

## Beispiel einer 1-Wire-Kommunikation

Die Signale im folgenden Diagramm wurden von einem FPGA als Master und einem DS2432 (EEPROM) als Slave erzeugt und mit einem Logikanalysator gemessen. Das Signal 1-wire output stellt das isolierte Ausgangssignal des Masters dar; 1-wire input ist das gemessene 1-Wire-Bussignal; bei einem High des Signals input sample time findet die Messung des 1-Wire-Bussignals durch den Master statt.

## Weitere Standards

iButton$^®$: Der registrierte Standard basiert auf der gleichen Technik. Er beschreibt die Kommunikation zu Geräten in Knopfzellengröße.

## Beispiele für 1-Wire-Chips

* DS18B20 Temperatursensor hoher Genauigkeit
* DS2408: 8-Bit I/O-Baustein mit 12 Anschlüssen im 16-Pin-Gehäuse
* DS2417: RTC (Real Time Clock = Echtzeituhr) mit 6 Anschlüssen
* DS2431: 1024-Bit EEPROM
* DS2438: Smart Battery Monitor mit Temperatur-/Spannung-/Strom-/Ladungsmessung, Zeitmesseinheit und 40 Byte EEPROM mit 6 Anschlüssen im 8-Pin-Gehäuse
* DS2756: Smart Battery Monitor mit Temperatur-/Spannung-/Strom-/Ladungsmessung, Zeitmesseinheit, IO-Port/Interruptausgang und 96 Byte EEPROM+8 Byte RAM mit 8 Anschlüssen
* DS28EC20: 20480-Bit EEPROM Speicher mit 3 Anschlüssen