Powrót

Interfejs 1-wire

Do komunikacji między mikrokontrolerami a przyłączonymi do nich komponentami zostało wymyślonych wiele różnych rozwiązań. Jednym z nich jest interfejs 1-wire. Mimo dosyć dużej popularności, większość mikrokontrolerów nie posiada dedykowanego, sprzętowego kontrolera 1-wire.

1-wire to dwukierunkowy protokół komunikacji elektronicznej, który pozwala na przesyłanie danych oraz zasilanie za pomocą tylko jednego przewodu sygnałowego (i wspólnej masy). Jego historia sięga końca lat 80. ubiegłego wieku i była związana z minimalizacją zasobów wymaganych do obsługi przyłączonych komponentów. Zaczęło się w firmie Dallas Semiconductor od prostego pomysłu na minimalizowanie kosztów okablowania do połączenia z mikrokontrolerem. Rozwiązaniem okazała się linia, w której pojedynczy przewód potrafił jednocześnie zasilać układ i przesyłać dane dwukierunkowo. Sukcesem komercyjnym technologii 1-wire były układy z serii DS199x zamknięte w stalowych, okrągłych obudowach przypominających baterie pastylkowe, znane jako iButton (fotografia tytułowa prezentuje iButton, plik udostępnił Stan Zurek na licencji Creative Commons). Stalowa obudowa stanowiła masę (GND), a odizolowane wieczko – linię danych (DQ). Elementy te stały się hitem w systemach kontroli dostępu, rejestracji czasu pracy. Wymagały jedynie dwóch styków elektrycznych. Pamiętając, że jednym musi być potencjał odniesienia (GND), pozostaje jeden przewód do zasilania i przesyłania danych. Oprócz komponentów iButton, popularnym elementem wykorzystującym ten typ komunikacji jest wręcz kultowy cyfrowy termometr DS18B20. W 2001 roku doszło do przejęcia Dallas Semiconductor przez firmę Maxim Integrated, która jednocześnie nabyła prawa autorskie do standardu. W tej firmie doszło do znaczącego rozwinięcia koncepcji 1-wire – poprawienia stabilności na długich liniach. Obecnie właścicielem praw do tej technologii jest gigant branży analogowej – Analog Devices po przejęciu w 2021 roku firmy Maxim Integrated. Mimo że protokół istnieje już kilkadziesiąt lat, nadal ma zastosowanie w prostych realizacjach, gdzie nie jest wymagana duża prędkość transmisji.

Idea działania interfejsu 1-wire

Naturalnym jest, że realizując komunikację z elementem 1-wire musi on mieć zasilanie (przykładowo pastylka iButton z tytułowej fotografii). Elementy w tej sieci można zasilać na dwa sposoby. Wybór metody zależy od liczby czujników, długości kabla oraz pożądanej stabilności systemu. Możliwy jest wariant zasilania pasożytniczego (jak przykładowo w iButton). To unikalna cecha standardu 1-wire. Układy są zasilane bezpośrednio z linii danych (DQ), co pozwala na fizyczne użycie tylko dwóch przewodów: DQ i GND. Linia DQ w tym standardzie działa w konfiguracji otwartego drenu lub otwartego kolektora. Oznacza to, że żadne urządzenie przyłączone do magistrali (slave) nie potrafi samodzielnie wymusić na linii stanu wysokiego. Urządzenia mogą jedynie aktywnie „ściągać” linię do masy (wymusić stan zera logicznego) lub przejść do stanu wysokiej impedancji (odciąć się), pozwalając linii swobodnie uzyskać jedynkę logiczną. Prowadzi to do konieczności zastosowania rezystora włączonego między linię DQ a zasilanie VCC. Każdy układ 1-wire ma wbudowaną diodę oraz wewnętrzny kondensator o małej pojemności. Gdy na linii DQ panuje stan wysoki, prąd przepływa przez diodę i ładuje kondensator. Gdy strona master ściąga linię do stanu niskiego (0 V), aby realizować komunikację, dioda blokuje rozładowanie, a układ działa dzięki energii zgromadzonej w kondensatorze. W trybie pasożytniczym stosowany jest rezystor pull-up (między VCC a DQ). Zaletą tego wariantu jest prostota instalacji (wystarczy zwykły dwużyłowy kabel). Wadą jest wolniejsza komunikacja oraz ryzyko niestabilności na długich liniach (powyżej kilkunastu metrów).

Niektóre układy z interfejsem 1-wire wymagają bardziej „energetycznego” zasilania (takim jest przykładowo czujnik temperatury DS18B20), gdyż zasilanie pasożytnicze jest niewystarczające. Takie układy mają dodatkowy przewód zasilający (VCC/VDD). Nie zwalnia to z konieczności stosowania rezystora pull-up (ze względu na konfigurację typu otwartego drenu/kolektora). W tym wariancie przyłączony układ 1-wire nie musi „podkradać” prądu z linii sygnałowej by ładować wewnętrzne kondensatory. Linia DQ jest używana jedynie do wymiany danych.

Komunikacja w standardzie 1-wire jest asynchroniczna, półdupleksowa (ang. half-duplex) i opiera się na ścisłej relacji master – slave. Oznacza to, że dane mogą płynąć w obu kierunkach, ale w danym momencie nadaje tylko jedna strona, a całą komunikację zawsze kontroluje strona master (mikrokontroler). Brak w fizycznym połączeniu przewodu zegarowego wymusza sytuację, że synchronizacja opiera się na bardzo precyzyjnych zależnościach czasowych (szczelinach czasowych) mierzonych w mikrosekundach.

Każda transakcja na magistrali musi rozpocząć się od inicjalizacji (przez stronę master). Jest to operacja resetu i testu obecności układu slave. Strona master wymusza na linii DQ stan zera logicznego na czas minimum 480 µs, a następnie ją zwalnia. Rezystor podciągający przywraca stan wysoki. Wszystkie obecne na linii elementy slave odczekują chwilę, po czym jednocześnie ściągają linię do stanu niskiego na czas od 60 do 240 µs. Dla mastera oznacza to, że na magistrali występuje jeden lub więcej komponentów 1-wire (rysunek 1).

Rysunek 1

Dalsza komunikacja odbywa się poprzez szczeliny czasowe (ang. time slots) trwające od 60 do 120 µs. W każdym takim slocie przesyłany jest dokładnie jeden bit. Strona master wymusza stan zera logicznego lub jedynki (różnią się czasem trwania impulsu). Po odpowiednim czasie (w zależności od przesyłanego zera lub jedynki) master przechodzi do „stanu odcięcia”. ——— 08 —————
(…)

——– ciach! ——–

To jest tylko fragment artykułu, którego pełna wersja ukazała się w sierpniowym numerze czasopisma Zrozumieć Elektronikę (ZE 8/2026). Pełną wersję czasopisma znajdziesz pod tym linkiem. Natomiast niepełna, okrojona wersja, pozwalająca zapoznać się z zawartością numeru ZE 8/2026 znajduje się tutaj.

Andrzej Pawluczuk
apawluczuk@vp.pl

Uwaga! Wskazówki, jak nabyć pełne wersje dowolnych numerów ZE znajdują się na stronie:
https://piotr-gorecki.pl/n11.