1-Wire

Klucz iButton wykorzystujący połączenie typu 1-Wire

1-Wireinterfejs elektroniczny, jak również i protokół komunikacyjny pomiędzy urządzeniami. Jego nazwa wywodzi się z faktu, że do komunikacji używana jest tylko jedna linia danych (oraz linia zerowa). Odbiornik może być zasilany bezpośrednio z linii danych, wykorzystując zasilanie pasożytnicze, co jest zaletą tego interfejsu. Odbiornik wyposażony jest w kondensator o pojemności 800 pF, który jest ładowany z linii danych – następnie energia w nim zgromadzona używana jest do zasilania odbiornika.

Protokół 1-Wire został opracowany przez firmę Dallas Semiconductor. Zapewnia on stosunkowo niewielką przepustowość transmisji danych – standardowo 16 kbps w trybie regular do 115,2 kbps w trybie overdrive.

1-Wire jest podobne do interfejsu I²C, lecz z uwagi na pojedynczą linię komunikacyjną jest zarówno wolniejsze, jak i tańsze. Interfejs 1-Wire jest zazwyczaj używany do komunikacji pomiędzy niewielkimi urządzeniami, takimi jak: termometry cyfrowe, instrumenty metrologiczne, sterowniki ładowania akumulatorów, zamki elektroniczne typu iButton itd. Urządzenia takie są zazwyczaj zamknięte w solidnej obudowie, często znacznie większej niż samo urządzenie elektroniczne.

Zasady transmisji danych

Wysyłanie danych przez urządzenie master

Całość układu jest zazwyczaj zasilana napięciem stałym o wartości 5 V. Linia danych jest podłączona do zasilania przez rezystor (tzw. pull-up), co powoduje jednocześnie zasilanie odbiorników.

Przesłanie każdego bitu informacji jest inicjowane przez urządzenie typu master. Master rozpoczyna transmisję sekwencji bitów poprzez wystawienie impulsu reset, czyli zwarciu linii danych na 480 μs do masy. Powoduje to zresetowanie wszystkich podłączonych odbiorników (urządzeń typu slave). Następnie każde urządzenie slave potwierdza swoją obecność wystawiając na linię danych impuls obecności – zwierając linię danych do masy na 60 μs.

Przesłanie logicznej jedynki na magistralę oznacza wystawienie przez mastera krótkiego (od 1 do 15 μs) impulsu niskiego (zwarcie linii) oraz następnie wysokiego o długości 60 μs. Logiczne zero odpowiada niskiemu impulsowi o długości 60 μs. Opadające zbocze impulsu aktywuje przerzutnik astabilny w urządzeniu slave. Przerzutnik ten taktuje wewnętrzny mikroprocesor, co powoduje odczyt danych z linii po ok. 30 μs od momentu pojawienia się zbocza rosnącego. Z uwagi na wewnętrzne opóźnienia urządzenia slave czas trwania pojedynczego impulsu musi wynosić właśnie 60 μs (a impuls startujący nie może być dłuższy niż 15 μs) – zapewnia to poprawny odczyt danych w każdej sytuacji.

Odbieranie danych przez urządzenie master

Przed odbiorem każdego bitu danych master wysyła niski impuls startu (od 1 μs do 15 μs), po czym wraca do stanu wysokiego na linii danych. Jeśli slave wysyła logiczną jedynkę – nie robi nic, pozostawiając linię w stanie wysokim. Jeśli slave wysyła zero, wówczas zwiera linię danych do masy na 60 μs. Po przesłaniu 8 bitów następuje wysłanie komendy (rozkazu) (również ośmiobitowej). Ewentualne błędy w transmisji mogą być wykryte za pomocą wbudowanego algorytmu CRC-8.

Dodatkowe informacje

Do jednej linii danych może być podpiętych wiele urządzeń. Każde z nich posiada bowiem unikatowy 64-bitowy numer identyfikacyjny (adres). Najmniej znaczący bajt adresu oznacza typ urządzenia. Najbardziej znaczący bajt przetrzymuje sumę kontrolną CRC dla poprzednich 56 bitów.

Obecnie istnieje kilka standardów wysyłania komend i adresów. Master może wysłać nawet całą grupę komend, a następnie adres danego urządzenia – wówczas komendy te zostaną wykonane właśnie przez to urządzenie.

Współpraca z innymi interfejsami

Urządzenia typu 1-Wire mogą być również podłączane bezpośrednio do innych interfejsów: port szeregowy i równoległy, USB itp. – jednak w takim przypadku często wymagane jest nie tylko wyspecjalizowane oprogramowanie, ale również i pośredniczące układy. W przypadku poprawnej konfiguracji przesyłanie sygnałów interfejsem 1-Wire może być wykonywane na odległościach większych niż 100 m.

Linki zewnętrzne

Media użyte na tej stronie

I-button.jpg
Autor: Stan Zurek, Licencja: CC-BY-SA-3.0
I-button