1-Wire
![](http://upload.wikimedia.org/wikipedia/commons/thumb/5/56/I-button.jpg/220px-I-button.jpg)
1-Wire – interfejs 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
[edytuj | edytuj kod]Wysyłanie danych przez urządzenie master
[edytuj | edytuj kod]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
[edytuj | edytuj kod]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
[edytuj | edytuj kod]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[potrzebny przypis].
Współpraca z innymi interfejsami
[edytuj | edytuj kod]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
[edytuj | edytuj kod]- 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.)