1-Wire

1-Wire – Interfejs i Protokół Komunikacyjny

1-Wire to zarówno interfejs elektroniczny, jak i protokół komunikacyjny stosowany do wymiany danych pomiędzy różnymi urządzeniami. Nazwa tego systemu pochodzi od faktu, że do przesyłania informacji wykorzystywana jest tylko jedna linia danych oraz dodatkowa linia zerowa. Odbiorniki mogą być zasilane bezpośrednio z tej linii danych, co umożliwia wykorzystanie zasilania pasożytniczego, co stanowi jedną z kluczowych zalet tego rozwiązania. Odbiornik zawiera kondensator o pojemności 800 pF, który ładowany jest z linii danych, a zgromadzona w nim energia wykorzystana jest do zasilania urządzenia.

Protokół 1-Wire został stworzony przez firmę Dallas Semiconductor. Oferuje on stosunkowo niską przepustowość transmisji danych, wynoszącą standardowo 16 kbps w trybie regular oraz do 115,2 kbps w trybie overdrive.

1-Wire jest podobny do interfejsu I²C, jednak ze względu na pojedynczą linię komunikacyjną, jest zarówno wolniejszy, jak i bardziej ekonomiczny. Interfejs 1-Wire znajduje zastosowanie w komunikacji z niewielkimi urządzeniami, takimi jak: termometry cyfrowe, instrumenty metrologiczne, sterowniki ładowania akumulatorów, zamki elektroniczne typu iButton i inne. Urządzenia te zazwyczaj są umieszczane w solidnych obudowach, często większych niż same komponenty elektroniczne.

Zasady Transmisji Danych

Wysyłanie Danych przez Urządzenie Master

Cały system zazwyczaj zasilany jest napięciem stałym o wartości 5 V. Linia danych jest podłączona do zasilania przez rezystor (tzw. pull-up), co jednocześnie zasilają odbiorniki.

Inicjowanie przesyłania każdego bitu informacji odbywa się przez urządzenie master. Rozpoczyna ono transmisję sekwencji bitów, generując impuls resetujący, polegający na zwarciu linii danych do masy na 480 μs. To powoduje zresetowanie wszystkich podłączonych urządzeń typu slave. Następnie każde urządzenie slave potwierdza swoją obecność, emitując impuls obecności, który zwiera linię danych do masy na 60 μs.

Przesyłanie logicznej jedynki na magistralę polega na wygenerowaniu przez mastera krótkiego impulsu niskiego (od 1 do 15 μs), a następnie wysokiego trwającego 60 μs. Logiczną zerą jest impuls niski trwający 60 μs. Opadające zbocze aktywuje przerzutnik astabilny w urządzeniu slave, który uruchamia wewnętrzny mikroprocesor, pozwalając na odczyt danych z linii około 30 μs po pojawieniu się zbocza rosnącego. Ze względu na wewnętrzne opóźnienia w urządzeniu slave, czas trwania pojedynczego impulsu musi wynosić dokładnie 60 μs (a impuls startowy nie może przekraczać 15 μs), co zapewnia poprawność odczytu danych w każdej sytuacji.

Odbieranie Danych przez Urządzenie Master

Przed odbiorem każdego bitu danych, master wysyła niski impuls startowy (od 1 μs do 15 μs), po czym przechodzi do stanu wysokiego na linii danych. Jeżeli urządzenie slave wysyła logiczną jedynkę, nie wykonuje żadnych działań, pozostawiając linię w stanie wysokim. W przypadku wysyłania zera, slave zwiera linię danych do masy na 60 μs. Po przesłaniu 8 bitów następuje wysłanie komendy (rozkazu) ośmiobitowej. Ewentualne błędy w transmisji mogą być wykrywane dzięki wbudowanemu algorytmowi CRC-8.

Dodatkowe Informacje

Na jednej linii danych można podłączyć wiele urządzeń, z których każde posiada unikatowy 64-bitowy numer identyfikacyjny (adres). Najmniej znaczący bajt adresu określa typ urządzenia, a najbardziej znaczący bajt przechowuje sumę kontrolną CRC dla wcześniejszych 56 bitów.

Współpraca z Innymi Interfejsami

Urządzenia 1-Wire mogą być również podłączane do innych interfejsów, takich jak port szeregowy, równoległy czy USB. W takim przypadku często wymagane są specjalistyczne oprogramowanie oraz układy pośredniczące. Przy poprawnej konfiguracji, przesyłanie sygnałów za pomocą 1-Wire może odbywać się na odległościach przekraczających 100 m.

Linki Zewnętrzne

1-Wire API SDK. maxim-ic.com. [zarchiwizowane z tego adresu (2012-08-09)]. – zestaw klas obsługujących magistralę 1-Wire z poziomu języka Java (ang.)

USB 1-Wire Drivers. maxim-ic.com. [zarchiwizowane z tego adresu (2012-08-06)]. – sterowniki 1-Wire do USB pod Windows (ang.)

1-Wire Temperature Control. 1wire.info. [zarchiwizowane z tego adresu (2017-12-21)]. – projekt pomiaru temperatury (ang.)

OWFS 1-Wire File System – system plików urządzeń 1-Wire (ang.)