
1-Wire – szeregowa, półdupleksowa magistrala komunikacyjna opracowana przez przedsiębiorstwo Dallas Semiconductor. Umożliwia przesyłanie danych między jednym urządzeniem nadrzędnym (ang. master) a wieloma urządzeniami podrzędnymi (ang. slave) z wykorzystaniem pojedynczej linii danych oraz masy[1]. Sieć złożona z urządzeń 1-Wire określana jest również jako MicroLAN.
Magistrala nie ma osobnej linii zegarowej. Synchronizacja transmisji odbywa się na podstawie zmian stanu linii danych inicjowanych przez urządzenie nadrzędne. Linia ma zwykle strukturę typu otwarty dren i w stanie spoczynku jest utrzymywana na wysokim poziomie za pomocą rezystora podciągającego. Dane przesyłane są przez okresowe zwieranie linii do masy przez nadające urządzenie[2].
Część urządzeń 1-Wire może pobierać energię bezpośrednio z linii danych, korzystając z tzw. zasilania pasożytniczego. Pozwala to ograniczyć okablowanie do dwóch przewodów: linii danych i masy. Inne urządzenia wymagają osobnego źródła zasilania albo mogą pracować w obu konfiguracjach[1].
Technologia jest stosowana między innymi w cyfrowych czujnikach temperatury, układach identyfikacyjnych, pamięciach nieulotnych, rejestratorach danych, monitorach akumulatorów i układach uwierzytelniających. Szczególną formą urządzeń 1-Wire są układy umieszczane w odpornych obudowach ze stali nierdzewnej, znane jako iButton[1].
Standard 1-Wire został opracowany przez Dallas Semiconductor w 1989 roku w celu ograniczenia liczby styków wymaganych do komunikacji z przenośnymi modułami przechowującymi dane. Jednym z rezultatów prac było opracowanie urządzeń iButton, wyposażonych w metalową obudowę umożliwiającą zarówno kontakt elektryczny, jak i mechaniczną ochronę układu[3].
Technologia była następnie rozwijana przez przedsiębiorstwo Maxim IC. W 2021 roku Maxim IC zostało przejęte przez Analog Devices[4].
Typowa magistrala 1-Wire składa się z:
W stanie bezczynności rezystor podciągający utrzymuje linię danych w stanie wysokim. Urządzenia komunikujące się na magistrali wymuszają stan niski za pomocą wyjść typu otwarty dren. Dzięki temu wiele urządzeń może współdzielić jedną linię bez bezpośredniego wymuszania na niej przeciwnych stanów logicznych. Takie połączenie realizuje funkcję logicznego iloczynu (ang. wired-AND)[2].
Typowa wartość rezystora podciągającego w prostych układach wynosi 4,7 kΩ, ale właściwa wartość zależy od napięcia zasilania, długości i pojemności przewodów, liczby urządzeń oraz cech zastosowanego kontrolera. Dopuszczalne napięcie magistrali również zależy od zastosowanych urządzeń i powinno być ustalane na podstawie ich dokumentacji technicznej[1].
Urządzenia 1-Wire mogą być zasilane z osobnego wyprowadzenia albo pasożytniczo z linii danych. W przypadku zasilania pasożytniczego urządzenie pobiera energię, gdy linia danych znajduje się w stanie wysokim, i magazynuje ją w wewnętrznym układzie zasilania. Zgromadzona energia umożliwia podtrzymanie pracy podczas krótkotrwałego wymuszenia na magistrali stanu niskiego[5].
Niektóre operacje, takie jak wykonywanie pomiaru temperatury lub zapis do pamięci nieulotnej, mogą wymagać większego prądu, niż może dostarczyć zwykły rezystor podciągający. Stosuje się wówczas tzw. silne podciąganie (ang. strong pull-up), polegające na czasowym połączeniu linii danych ze źródłem zasilania przez układ o małej rezystancji. Szczegółowe wymagania zależą od konkretnego urządzenia.
Wszystkie operacje na magistrali inicjuje urządzenie nadrzędne. Podstawowymi operacjami protokołu są:
Typowa sekwencja komunikacyjna rozpoczyna się od impulsu zerującego (restartującego). W trybie standardowym urządzenie nadrzędne wymusza stan niski przez co najmniej 480 µs, a następnie zwalnia linię. Podłączone urządzenia podrzędne sygnalizują swoją obecność przez wymuszenie na linii stanu niskiego[2].
Poszczególne bity przesyłane są w określonych przedziałach nazywanych szczelinami czasowymi (ang. time slots). Każda szczelina rozpoczynana jest przez urządzenie nadrzędne wymuszeniem stanu niskiego.
Podczas wysyłania przez urządzenie nadrzędne zwiera ono linię do masy na krótko przy nadawaniu jedynki a dłużej przy nadawaniu zera bitowego.
Podczas odczytu przez urządzenie nadrzędne, zwiera linię krótkim impulsem stanu niskiego, a następnie zwalnia linię i odczytuje jej stan. Urządzenie podrzędne nadając zero przez utrzymuje stan niski linii, a nadając jedynkę pozostawia linię w stanie wysokim[2].
W trybie standardowym pojedyncza szczelina czasowa trwa co najmniej około 60 µs, co pozwala osiągnąć szybkość transmisji rzędu 16 kbit/s. Część urządzeń obsługuje również tryb overdrive, wykorzystujący krótsze szczeliny i umożliwiający transmisję z szybkością rzędu 100 kbit/s. Dokładne parametry czasowe zależą od konkretnych urządzeń oraz warunków panujących na magistrali[2].
Urządzenia 1-Wire są wyposażone w fabrycznie zaprogramowany, niepowtarzalny 64-bitowy numer identyfikacyjny zapisany w pamięci ROM. Identyfikator składa się z:
W 1-Wire stosowany jest 8-bitowy algorytm CRC oparty na wielomianie x8 + x5 + x4 + 1.
Identyfikator umożliwia urządzeniu nadrzędnemu wybranie jednego urządzenia spośród wielu podłączonych do tej samej linii. Jeżeli identyfikatory nie są znane, można je wykryć przy użyciu polecenia wyszukiwania ROM. Algorytm przeszukuje identyfikatory w postaci drzewa binarnego i rozstrzyga kolejne rozbieżności między bitami wysyłanymi równocześnie przez urządzenia[6].
Podstawowe polecenia dotyczące adresowania urządzeń obejmują:
Dostępność i sposób działania poszczególnych poleceń mogą zależeć od zastosowanego urządzenia.
Interfejs 1-Wire został pierwotnie zaprojektowany do komunikacji na niewielkich odległościach, na przykład między układami na jednej płytce drukowanej. Przy odpowiednim doborze kontrolera, przewodów i topologii może być również stosowany w bardziej rozległych sieciach czujników[7].
Nie istnieje jedna uniwersalna maksymalna długość magistrali. Jej niezawodność zależy między innymi od:
Długie przewody zwiększają pojemność magistrali, spowalniają narastanie napięcia i mogą powodować odbicia sygnału. W rozległych instalacjach korzystne jest prowadzenie przewodów w układzie liniowym z możliwie krótkimi odgałęzieniami. Topologia gwiazdy z długimi odgałęzieniami może prowadzić do odbić i błędów transmisji[7].
Do wykonywania dłuższych połączeń może być używana skrętka, na przykład przewód kategorii 5e. Rozległe sieci wymagają jednak indywidualnego doboru kontrolera, okablowania i topologii oraz sprawdzenia jakości sygnałów w rzeczywistym układzie. Tryb overdrive, ze względu na krótsze przedziały czasowe, przeznaczony jest przede wszystkim do krótkich połączeń[7].
Funkcja urządzenia nadrzędnego może być realizowana programowo przez mikrokontroler wyposażony w dwukierunkowe wyprowadzenie wejścia-wyjścia. Rozwiązanie takie, nazywane bit-banging, wymaga programowego generowania i pomiaru impulsów z dokładnością odpowiednią dla parametrów czasowych protokołu[2].
W bardziej rozbudowanych systemach stosowane są wyspecjalizowane kontrolery i mostki sprzętowe, między innymi:
Układy te mogą sprzętowo generować przebiegi czasowe, wykrywać obecność urządzeń, realizować silne podciąganie oraz ograniczać obciążenie procesora systemu nadrzędnego.
Do zastosowań technologii 1-Wire należą między innymi:
Niewielka liczba wymaganych połączeń oraz fabrycznie zaprogramowane identyfikatory pozwalają stosować urządzenia 1-Wire w czujnikach, wyposażeniu przemysłowym, systemach identyfikacyjnych oraz urządzeniach wymagających rozpoznawania podłączonych akcesoriów.