1-Wire bzw. One-Wire oder Eindraht-Bus beschreibt eine serielle Schnittstelle, die mit einer Datenader auskommt, die sowohl als Stromversorgung als auch als Sende- und Empfangsleitung genutzt wird.
Integrierte Bausteine zur Temperaturmessung, Akkuüberwachung, Echtzeituhr, kleiner Speicher etc. öffnen dem Geräteherstellern eine einfache Integration über eine Ader. Diese Technik kommt daher sehr häufig zur Kommunikation zwischen mehreren Geräten vor, z.B. zwischen einem mobilem Datenerfassungsgerät (PDA) und dessen Akku.
Inhaltsverzeichnis |
Viele 1-Wire-Geräte arbeiten mit einer Betriebsspannung, die zwischen 2,8 V und 5,5 V liegen darf. Bei einigen Geräten sind hingegen nur 3,0 V bis 3,7 V zugelassen, daher sollte unbedingt vorher das Datenblatt beachtet werden. Die Stromaufnahme der 1-Wire-Geräte liegt je nach Baustein zwischen 2 μA und einigen mA.
Eine Besonderheit von 1-Wire-Geräten ist die parasitäre Stromversorgung. Hierbei geschieht die Versorgung der Slaves über die Datenleitung: Bei inaktiver Kommunikation (Idle-State) liegt die Datenleitung auf +5V High-Pegel und lädt einen Speicherkondensator, welcher in jedem 1-Wire-Slave integriert ist. 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. Diese Zeit reicht aus, um mit einem kommerziell erhältlichen DS18S20-Temperatursensor Temperaturen bis ca. 80°C zu messen. Zur Codierung höherer Temperaturen benötigt der DS18S20 eine längere "Conversion-Time" und somit mehr Energie, als vom parasitären Kondensator zur Verfügung gestellt wird. Um den Messbereich von -55 bis +127°C voll auszuschöpfen, ist die permanente Versorgung des Sensors über VDD notwendig.
Der 1-Wire-Bus wird über einen PullUp-Widerstand, der in der Regel zwischen 1,5 und 5 kΩ liegt, auf High-Pegel gezogen. Die Größe sollte je nach Anzahl der Geräte und Leitungslänge entsprechend angepasst werden.
Da der 1-Wire-Bus im Gegensatz zu vielen anderen Bussystemen keine separate Leitung für das Taktsignal besitzt, spielt das Timing eine besondere Rolle. Um eine logische 1 zu erzeugen, wird der Bus für 5 μs auf Low-Pegel gezogen, eine logische 0 entspricht 59 μs. Für einen Reset ist ein Low-Pegel mit einer Dauer von 480 μs erforderlich.
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.
Die Verkabelung kann über ein einfaches Kabel bzw. eine einzelne Leitung auf einer Platine erfolgen. Idealerweise sollte ein Twisted-Pair-Kabel der Kategorie 5 verwendet werden. Mit einem passiven PullUp-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 Pullup-Widerstand ist es sogar möglich, Leitungslängen von bis zu 300 m mit 500 1-Wire-Geräten zu realisieren.
iButton®: Der registrierte Standard basiert auf der gleichen Technik. Er beschreibt die Kommunikation zu Geräten in Knopfzellengröße.