1-wire

Z Wiki.2o.pl

1-Wire - rodzaj interfejsu elektronicznego jak również i protokołu komunikacyjnego pomiędzy dwoma (lub więcej) urządzeniami. Jego nazwa wywodzi się stąd, że do całkowitej komunikacji używana jest tylko jedna linia danych (i jedna linia masy). Dodatkowo, odbiornik może być zasilany bezpośrednio z linii danych, wykorzystując zasilanie pasożytnicze, co jest ogromną zaletą tego interfejsu. Odbiornik wyposażony jest bowiem w kondensator o pojemności 800 pF, który jest ładowany bezpośrednio z linii danych - następnie energia w nim zgromadzona używana jest do zasilania odbiornika.

Połączenie 1-Wire zostało opracowane przez Dallas Semiconductor. Umożliwia ono stosunkowo niewielką przepustowość transmisji danych - standardowo 16 kbps (w trybie overdrive maksymalnie do 142 kbps).[1]

1-Wire jest podobne w zasadzie do interfejsu I²C, ale 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 obudowę, 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.

Urządzenie typu 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 do masy.

Przesłanie logicznego 0 na magistralę oznacza wystawienie przez mastera krótkiego (od 1 do 15 μs) impulsu wysokiego oraz następnie niskiego o długości 60 μs. Logiczna jedynka odpowiada wysokiemu impulsowi o długości 60 μs. Rosnące zbocze impulsu aktywuje przerzutnik monostabilny 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 (1-15 μs), po czym wraca do stanu wysokiego na linii danych. Jeśli slave chce wysłać logiczną jedynką - nie robi nic, pozostawiając linię w stanie wysokim. Jeśli slave chce wysł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 CRC (również ośmiobitowego).

Dodatkowe informacje

Do jednej linii danych może być podpiętych wiele urządzeń. Każde z nich posiada bowiem unikalny 64-bitowy numer identyfikacyjny (adres). Najbardziej znaczący bajt adresu oznacza typ urządzenia. Najmniej znaczący bajt oznacza standard użytego CRC.

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 nawet na odległościach większych niż 100 m.

Linki zewnętrzne