1-Wire
Interfejs 1-Wire to prosty system komunikacji umożliwiający dwukierunkową, asynchroniczną komunikację typu half duplex (nadawanie i odczyt danych nie mogą odbywać się jednocześnie), między sterownikiem głównym (master) i jednym lub wieloma układami podrzędnymi (slave). Jak sama nazwa wskazuje, transmisja danych odbywa się za pośrednictwem pojedynczej linii, która jednocześnie może służyć do zasilania układów podrzędnych. Wszystkie układy w magistrali muszą być podłączone do wspólnej masy.
Magistrala 1-Wire jest obwodem z tzw. otwartym drenem, w którym napięcie bliskie 0 V (logiczne 0) jest stanem aktywnym. W stanie bezczynności magistrala jest podciągana do napięcia zasilającego, zwykle 3…5 V, za pomocą rezystora (pull-up). Układy podrzędne są wyposażone w kondensatory o pojemności ok. 800 pF, ładowane napięciem z linii danych – zgromadzona energia jest następnie używana do zasilania tych układów. Opadające zbocza impulsów są strome i wyraźne, zaś narastające – ze względu na znaczne wartości rezystorów pull-up i pojemności – mogą być dość powolne.
Według specyfikacji, do linii danych najlepiej przyłączyć rezystor podciągający o rezystancji rzędu 5 kΩ (4,7 kΩ). Jeśli wartość rezystancji będzie zbyt mała, podrzędne urządzenia nie będą w stanie obniżyć napięcia do 0 V, zaś jeżeli zbyt duża – do układów nie zostanie doprowadzony wymagany prąd. W praktyce bardzo często, zwłaszcza w przypadku długich połączeń, stosuje się mniejsze wartości rezystancji pull-up (nawet rzędu 1 kΩ) oraz układy aktywnego podciągania.
Aktywne podciąganie
Urządzenia podłączane do magistrali 1-Wire, które zasilane są poprzez linię danych, korzystają z tzw. trybu zasilania pasożytniczego (parasite power). Jednak niektóre układy mogą wymagać więcej energii – np. czujnik temperatury w trakcie procesu konwersji czy też pamięć EEPROM, w trakcie operacji kasowania lub realizacji zadań kryptograficznych. Należy wtedy stosować aktywne podciąganie linii danych, czyli metodę, która w odpowiednich momentach omija rezystor podciągający obwodem o niskiej impedancji. Może to być port mikrokontrolera skonfigurowany jako wyjście typu push-pull lub dodatkowy obwód.
Komunikacja po 1-Wire
Dwukierunkowa wymiana danych poprzez interfejs 1-Wire jest realizowana za pomocą czterech prostych sekwencji, opierających się na mechanizmie slotów czasowych:
- inicjalizacja magistrali,
- nadanie logicznej jedynki,
- nadanie logicznego zera,
- odczyt bitu danych.
Bazując na powyższych czterech operacjach, możemy zrealizować kompletne funkcje adresowania urządzeń, przesyłania i odczytu pojedynczych bitów oraz całych bajtów danych. Dokładny opis sposobu komunikacji można znaleźć na stronie https://t.ly/eCqDR.
1-Wire Overdrive
Overdrive to specjalny tryb działania interfejsu 1-Wire, w którym wszystkie czasy trwania impulsów są skracane, co zwiększa prędkość transmisji z ok. 16 kbps do około 140 kbps. Działa tylko wtedy, gdy zarówno układ master, jak i slave obsługują ten tryb – urządzenia komunikują się szybciej, ale wymagają szybkiej reakcji i precyzyjniejszego odmierzania czasu.
Zastosowania 1-Wire
Układy 1-Wire to przede wszystkim czujniki temperatury (DS18B20), pamięci EEPROM (DS2430, DS2431), układy bezpiecznego uwierzytelniania, tzw. iButton (DS1990, DS1963S), układy z unikalnym numerem identyfikacyjnym (DS2401).
Typowe zastosowania tych układów obejmują identyfikację i uwierzytelnianie komponentów do drukarek, materiałów medycznych, akcesoriów i urządzeń peryferyjnych, ochronę własności intelektualnej, zapobieganie klonowaniu i bezpieczne sterowanie funkcjami urządzenia.
Mostki 1-Wire
Układy z interfejsem 1-Wire to nie tylko urządzenia typu slave. Firma Analog Devices (która przejęła markę Maxim) produkuje szeroką gamę urządzeń 1-Wire typu master, które mogą być stosowane do niezawodnego kontrolowania sieci z urządzeniami 1-Wire slave. Są to tzw. mostki 1-Wire, ponieważ pośredniczą pomiędzy hostem – mikrokontrolerem, układem FPGA, czy komputerem PC – a urządzeniem podrzędnym 1-Wire. Dzięki takiemu rozwiązaniu procesor hosta nie komunikuje się bezpośrednio z urządzeniem podrzędnym 1-Wire, a więc nie musi generować krytycznych czasowo sekwencji tego protokołu. Procesor hosta komunikuje się z urządzeniem mostkującym za pomocą interfejsu, który jest mniej wymagający pod względem zasobów lub został już fabrycznie zaimplementowany jako gotowy blok sprzętowy – zwykle jest to interfejs UART lub I²C. W efekcie całą aplikację można tworzyć w języku wysokiego poziomu i niekiedy działa ona nawet bardziej stabilnie.
Przykładowy układ tego typu – DS2480B – pełni funkcję mostka UART-1-Wire. Wśród jego zadań warto wymienić:
- aktywny obwód podciągania (APU), który jest uruchamiany automatycznie po przekroczeniu określonych napięć na zboczach narastających sekwencji 1-Wire i umożliwia bezproblemowe sterowanie wieloma urządzeniami znajdującymi się na magistrali,
- zintegrowany akcelerator wyszukiwania, dzięki któremu sekwencja wyszukiwania urządzeń jest łatwiejsza do zaimplementowania w oprogramowaniu,
- możliwość programowania urządzeń 1-Wire EPROM (Erasable Programmable Read Only Memory), jeśli będzie dostępne napięcie 12 V,
komunikacja poprzez interfejs UART lub RS232 w standardzie 5 V, - prędkość komunikacji do 115,2 kbps.