Opis warstwy fizycznej interfejsu 1-wire.pdf

(511 KB) Pobierz
217694244 UNPDF
http://www.easy-soft.tsnet.pl
Aktualizacja: 2004-12-29
Magistrala 1-Wire:
Opis warstwy fizycznej interfejsu.
Oryginalnie, skonstruowany przez firmę DALLAS SEMICONDUCTOR, interfejs 1-Wire (One Wire)
przeznaczony był do komunikacji na bardzo małe odległości. Został opracowany w celu podłączenia
układu peryferyjnego do mikrokontrolera z użyciem tylko jednego wyprowadzenia. Miał być odpowiedzią
na pytanie: co zrobić, gdy pamięć RAM mikrokontrolera jest za mała aby pomieścić wszystkie zmienne i
jednocześnie zbyt trudno jest zmienić mikrokontroler na inny albo też brak w linii produkcyjnej takiego,
który spełniałby wymagania?
Podstawy protokołu komunikacyjnego 1-Wire
Początkowo protokół komunikacyjny opracowany z tą myślą, był bardzo podatny na zakłócenia transmisji
i w związku z tym układy mogły być podłączane wyłączenie lokalnie. Wkrótce jednak klienci, używający
produktów z interfejsem 1-Wire, zaczęli domagać się rozwiązań umożliwiających wydłużenie połączenia.
Wówczas to opracowano zupełnie nowe protokoły transmisji danych uwzględniające większe długości
połączeń, pracę w sieci i mechanizmy kontroli przesyłanych danych.
Podobnie jak w większości interfejsów szeregowych, również i w 1-Wire transmisja przebiega w
konfiguracji master – slave. Układ master wyszukuje i adresuje układ slave, steruje przepływem danych,
wysyła sygnał zegarowy. Dane przesyłane są synchronicznie z prędkością od bliskiej 0 do 16,3 kbps w
trybie standard oraz do 115 kbps w trybie overdrive. Każde opadające zbocze sygnału inicjuje i
synchronizuje przesyłany bit. Czas trwania bitu jest ściśle określony i wynosi 60 µs + 1 µs na tak zwany
recovery time . Wyznacza on maksymalną prędkość transmisji w trybie standard (1 / 61 µs = 16,3 kbps).
Po opadającym zboczu sygnału musi upłynąć czas potrzebny na „upewnienie się”, że nie jest to
zakłócenie pojawiające się na linii. Później następuje już właściwa dla przesyłanego bitu zmiana stanu linii
interfejsu. Na rysunkach 1 i 2 przedstawiają sposób przesłania bitu o wartości logicznej „0” i „1”.
Praktycznie różnią się one od siebie czasem trwania stanu niskiego. Przesyłane są słowa jednobajtowe.
Jako pierwszy transmitowany jest bit mniej znaczący.
Pewną trudność w implementacji, jak również podstawową zaletę, stanowi fakt, że dane i zasilanie
przesyłane są z wykorzystaniem wspólnego przewodu, toteż do połączenia nawet skomplikowanych sieci
układów z interfejsem 1-Wire wymagana jest tylko jedna para przewodów, z których jeden wiedzie masę
a drugi napięcie zasilania i dane. Typowo linia interfejsu 1-Wire znajduje się w stanie wysokim a układy
zasilanie są przez rezystor pull-up. Zbyt długie utrzymywanie stanu niskiego powoduje brak zasilania i
może być przyczyną wadliwej pracy. Tak więc stan niski na linii powinien się pojawiać tylko wtedy, gdy
jest on niezbędny do przesłania bitu informacji.
Protokół transmisyjny oraz wymagania układów pracujących pod kontrolą magistrali 1-Wire są na tyle
skromne, że obsługą transmisji może się zajmować typowy mikrokontroler wyposażony w typową linię
portu wejścia / wyjścia. Zazwyczaj jednak wartość rezystorów pull-up podłączonych wewnątrz
mikrokontrolera sięga 100 k W i dlatego też prąd płynący przez ten rezystor jest zbyt mały, aby zasilić
urządzenia podłączone do linii interfejsu. Podłącza się więc, równolegle z wewnętrznym rezystorem
mikrokontrolera albo też wówczas, gdy port jest typu otwarty kolektor lub otwarty dren, rezystor pull-up
o wartości około 5 k W pomiędzy linię 1-Wire i dodatnie napięcie zasilania. Jednak dla niektórych układów i
ten prąd jest za mały. Stosuje się wówczas zwieranie rezystora pull-up na przykład przez równolegle
połączony z nim tranzystor na czas konwersji przesłanej próbki, czy też zewnętrznych danych.
Czasami układy pamięci EEPROM wymagają wyższego niż 5V napięcia programującego. W takich
sytuacjach przeważnie stosowane jest napięcie 12V załączane na czas programowania bitu danych.
Należy jednak uważać, aby w czasie zapisu pamięci EEPROM nie uszkodzić innych, podłączonych do
wspólnego przewodu układów.
start następnego
cyklu
Rysunek 1. 1-Wire, przesłanie „1”
J.Bogusz „Magistrala 1-Wire”, Strona 1 z 9
217694244.028.png 217694244.029.png
http://www.easy-soft.tsnet.pl
start następnego
cyklu
Rysunek 2. 1-Wire, przesłanie „0”
sygnał reset wysłany przez master
zgłoszenie obecności
przez układ slave
Rysunek 3. 1-Wire, sekwencja „reset” wysłana przez układ master oraz następujące po niej zgłoszenie
układu slave
Opis
Symbol
Wartość
minimalna maksymalna
Jednostka
Czas trwania pojedynczego bitu
t SPON
60
120
µs
Czas odtwarzania warunków zasilania
t REC
1
µs
Czas trwania przesyłanego bitu „0”
t LOW0
60
120
µs
Czas trwania przysyłanego bitu „1”
t LOW1
1
15
µs
Czas trwania ważnego bitu danych
t RDV
15
µs
Czas trwania stanu wysokiego sekwencji „reset” t RSTH
480
µs
Czas trwania stanu niskiego sekwencji „reset”
t RSTL
480
µs
Czas trwania stanu wysokiego do zgłoszenia
układu slave po „reset”
t PDHIGH
15
60
µs
Czas trwania stanu niskiego – zgłoszenie
obecności przez slave
t PDLOW
60
240
µs
Tabela 1 . Zestawienie czasów charakterystycznych dla transmisji w standardzie 1-Wire.
Jedną z cech urządzeń z interfejsem 1-Wire jest unikatowy, ośmiobajtowy kod zapisany w pamięci ROM.
Producent gwarantuje, że kod ten jest niepowtarzalny i właściwy tylko i wyłącznie pojedynczemu
układowi scalonemu. Trzeba przyznać, że liczba dostępnych kombinacji jest bardzo duża. Najmniej
znaczący bajt zawiera kod grupy układów. W związku z tym, że więcej niż jeden układ może należeć do
danej grupy, młodsza część identyfikatora może być taka sama dla różnych układów. Następne 6 bajtów
zawiera unikatowy kod, ustalany w czasie produkcji. Ten unikatowy numer stanowi rodzaj adresu dla
każdego z układów z interfejsem 1-Wire – będzie się nim posługiwał układ master odwołując się do
konkretnego układu slave. Najbardziej znaczący bajt zawiera sumę kontrolną, tak zwane CRC (Cyclic
Redundancy Check). Jest ona wyliczana na podstawie poprzednich siedmiu bajtów i została ustalona w
czasie produkcji układu oraz na stałe zapisana w pamięci ROM. Podobnie przesyłane są wszystkie dane
odbierane czy też wysyłane przez układ master. Dla upewnienia się, że dane są prawdziwe, musi on
porównać wyliczoną sumę kontrolną CRC z otrzymaną od slave. Jeśli obie te wartości są identyczne,
oznacza to poprawność transmisji.
Typowo, układy wyposażone w interfejs 1-Wire, wyliczają sumę kontrolną na podstawie słowa
jednobajtowego – oznacza się ją jako CRC8. Produkowane są jednak również układy pamięci wyliczające
J.Bogusz „Magistrala 1-Wire”, Strona 2 z 9
217694244.030.png 217694244.031.png 217694244.001.png 217694244.002.png 217694244.003.png 217694244.004.png 217694244.005.png
http://www.easy-soft.tsnet.pl
sumę kontrolną na podstawie słowa dwubajtowego – oznacza się ją jako CRC16. Metoda wyliczenia jest
bardzo podobna, chociaż przeprowadzana jest dla różnej liczby bitów.
Konstrukcja portów interfejsu
Linią interfejsu 1-Wire może być typowy port mikrokontrolera. Najlepiej jest aby był on typu otwarty
dren, jednak nie jest to warunek konieczny. Typowo używa się rezystora pull-up o wartości około 5 k W ,
ustalającego poziom logiczny linii oraz zasilającego układy 1-Wire.
Pojemność montażowa przewodów ma bezpośredni wpływ na kształt zboczy sygnałów sterujących. Może
się jednak zdarzyć, że układy peryferyjne 1-Wire znajdują się w dosyć dużej odległości od urządzenia
master. Wówczas zaleca się albo stosowanie przełączanej rezystancji pull-up (może ona wręcz być
zwierana przez tranzystor), albo też poprowadzenie zasilania przy pomocy osobnego przewodu, co jest
możliwe dla wielu układów z tej rodziny, na przykład czujników temperatury.
Rysunek 3. Wygląd portów układu master (najczęściej jest nim mikrokontroler) oraz slave
Zarówno port układu master jak i układu slave, są liniami dwukierunkowymi. Dodatkowo linia portu slave
spełnia jeszcze funkcję doprowadzenia napięcia zasilania. Warto tutaj wspomnieć, że stan niski linii 1-
Wire przez okres dłuższy niż 480 µs powoduje faktyczne wyłączenie układu slave a ponowne pojawienie
się stanu wysokiego, powoduje wywołanie funkcji reset po załączeniu napięcia zasilania ( power on reset ).
Rysunek 4. Przykład rozwiązania dynamicznego przełączania rezystancji pull-up
J.Bogusz „Magistrala 1-Wire”, Strona 3 z 9
217694244.006.png 217694244.007.png 217694244.008.png 217694244.009.png 217694244.010.png 217694244.011.png 217694244.012.png 217694244.013.png 217694244.014.png 217694244.015.png 217694244.016.png
http://www.easy-soft.tsnet.pl
Rysunek 5. Sterowanie przełączeniem zasilania linii 1-Wire przez „ominięcie” rezystora pull-up przy
pomocy tranzystora MOS
Jakkolwiek wielokrotnie już wspomniałem o wartości rezystora pull-up rzędu 5 k W nie należy się zbyt
mocno tym sugerować. Wartość ta jest poprawna dla małych pojemności połączeń prowadzonych
lokalnie. W praktyce bardzo często, zwłaszcza dla długich połączeń, stosuje się dużo mniejsze wartości
rezystancji pull-up, nawet rzędu 1 k W .
1-Wire a budowa sieci.
Szeroka gama produktów – zwłaszcza wszelkiego rodzaju układów pomiaru temperatury, wilgotności, czy
innych wielkości fizycznych - wyposażonych w interfejs 1-Wire oraz prostota ich łączenia przy
jednocześnie bardzo małej liczbie przewodów interfejsu, zachęcają wielu konstruktorów do budowy sieci
różnorodnych czujników. Można w ten sposób mierzyć na przykład temperaturę w pomieszczeniach aby
sterować układami klimatyzacji i ogrzewania. Można budować stacje pogodowe z niewielką liczbą
połączeń. Zastosowań jest bardzo dużo. Sieć układów 1-Wire jest bardzo często mieszaniną różnych
czujników i układów funkcjonalnych, różnego rodzaju przewodów i topologii ich połączeń. Rzadko kiedy
spotyka się dwie identyczne sieci – każda z nich jest inna, składa się z innych urządzeń, inaczej i innymi
przewodami poprowadzone są połączenia. Jak w takich warunkach zapewnić poprawne przesyłanie
sygnału?
Budowę należy rozpocząć od warstwy fizycznej, od połączeń. Tak samo, jak każdy sygnał zmienny
przesyłany przez przewody, również sygnały interfejsu 1-Wire podlegają prawom fizyki i chociaż jest to
sygnał raczej o niewielkiej szybkości zmian, również i tutaj bardzo ważnym jest aby zwrócić szczególną
uwagę na jakość połączeń elektrycznych, doprowadzeń i rozgałęzień sygnału i także, co jest bardzo
ważne, na jednorodność kabla przesyłowego. Najlepiej jeśli jest nim kabel telekomunikacyjny - skrętka
kategorii 5. Lepiej do tego celu nie używać kabli energetycznych. Mają one zbyt dużą pojemność, co
może mieć negatywny wpływ na transmisję danych.
Jakkolwiek połączenia pomiędzy układami 1-Wire mogą być poprowadzone w formie zupełnie dowolnej, to
zazwyczaj mieszczą się one w jednej z trzech przedstawionych niżej typowych topologii, właściwych
również innego rodzaju połączeniom:
1) topologia linearna: linia interfejsu 1-Wire to skręcona para przewodów, zaczynająca się od układu
master i prowadzone od niego do układu slave a następnie od układu slave do układu slave; połączenie
kończy się na ostatnim w szeregu układzie slave,
J.Bogusz „Magistrala 1-Wire”, Strona 4 z 9
217694244.017.png 217694244.018.png 217694244.019.png 217694244.020.png 217694244.021.png 217694244.022.png 217694244.023.png 217694244.024.png 217694244.025.png 217694244.026.png
http://www.easy-soft.tsnet.pl
2) topologia pnia: linia interfejsu prowadzona przy pomocy pojedynczego przewodu głównego od
układu master do najdalej położonego układu slave; poszczególne układy slave dołączane są w formie
„gałęzi” o długości przekraczającej 3 m do „pnia” głównego,
3) topologia gwiazdy: połączenia poszczególnych układów slave zbiegają się w jednym wspólnym
punkcie w pobliżu układu master, albo też bezpośrednio na jego zaciskach połączeniowych.
Każde urządzenie slave podłączone do sieci, powoduje wzrost jej długości. Dzieje się tak nie tylko ze
względu na konieczność wykonania pewnych połączeń, ale również przez wnoszoną w ten sposób
pojemność, co odpowiada sytuacji właściwej przedłużaniu połączenia. Upraszczając można powiedzieć, że
każde urządzenie w obudowie metalowej typu iButton, tak jakby dodatkowy 1 metr przewodu, natomiast
w innej obudowie (plastykowej typu DIP, czy też TO) to 0,5 metra. Stąd też można wyciągnąć wniosek,
że na przykład dwadzieścia czujników temperatury typu DS1820 w obudowie TO-92, to dodatkowe 10
metrów przewodu połączeniowego. Wartość tę należy dodać do ogólnej długości połączeń. Jakkolwiek
długość połączeń jest bardzo ważna ze względu na wiele czynników, to jednak na transmisję danych
bezpośredni wpływ ma ich pojemność.
Często w celu ograniczenia rozmiaru sieci stosuje się topologie mieszane z przełącznikiem
elektronicznym. Przykład takiego rozwiązania znajduje się na rysunku 4. Twórcy interfejsu 1-Wire
przewidzieli, że czasami może być konieczne rozgałęzienie już istniejącej linii sygnałowej. Do takich
J.Bogusz „Magistrala 1-Wire”, Strona 5 z 9
217694244.027.png
Zgłoś jeśli naruszono regulamin