1-Wire

Disse sidene er en del av dokumentasjonen som Ola Lie utarbeidet da han foreleste faget IP- og webteknologi ved Høgskolen i Østfold i 2005.Websidene ble revidert i 2007.

1-Wire

Dallas 1-Wire er en teknologi som er utviklet av Dallas Semiconductor, og blir brukt å kommunisere med til 1-Wire enheter over ett trådpar. I motsetning til USB og FireWire, som er beregnet på periferiutstyr (f.eks. skriver) og annet elektronisk utstyr (f.eks. videokamera), er 1-Wire laget for billige elektroniske komponenter til priser under ti kroner og oppover. Typiske 1-Wire komponenter er temperatur sensorer, brytere, potmetere, A/D omformere, minne, og komponenter brukt til identifikasjon og batteri overvåking. Dersom vi ikke finner en 1-Wire komponent til vårt formål, for eksempel fuktighetsmåling, kan vi koble den analoge utgangen fra en fuktighetsmåler inn på 1-Wire A/D omformer osv. 1-Wire nettet, eller MicroLAN som det også kalles, består av

  1. Én Bus Master som styrer kommunikasjonen.
  2. Kabling (ett trådpar): Én ledning, derav navnet 1-Wire, som overfører både data og strøm. Den andre ledningen er jord.
  3. 1-Wire komponenter (slaver) som forsynes med strøm fra dataledningen, klokkes av egen oscillator, holder selv styr på om de skal lese fra eller skrive til bussen og har hver sin unike ID. Ulike komponenter svarer på ulike kommandoer, men noen er felles.

For mer informasjon se Overview of 1-Wire Technology and Its Use

Som sagt får komponentene strøm fra dataledningen. Når bussen er inaktiv, ligger den på 5V og lader opp kondensatorene i komponentene. Når bussen trekkes lav, får komponentene strømmen fra kondensatoren. Dioden sørger for at kondensatoren ikke tappes på bussen. Å stjele strøm fra datalinjen på denne måten kalles for "parasitt strøm". Se Transmitting Data and Power over a One-Wire Bus. 1-Wire
1-Wire er en åpen kollektor buss som fungerer som en logisk OG krets: Én eller flere komponenter kan trekke bussen lav, men ingen kan tvinge den høy. Konflikter forårsaker dermed ingen skade, og kan brukes til å identifisere komponentene på nettverket ved hjelp av eliminasjon. 1-Wire
For å finne ut om det er noen komponenter tilkoblet bussen, sender master en reset ved å trekke bussen lav i minst 480 µs. Når bussen drives høy igjen, har komponentene (slavene) 15-60 µs på seg til å sende et ”tilstedeværelsessignal” (lav) som skal vare i 60-240 µs. Så når master sjekker tilstanden på bussen mellom 60 og 75 µs etter reset, vil den vite om det er en eller flere komponenter tilkoblet bussen. 1-Wire
Data overføres tidsintervaller på 60-120 µs som gir en overføringshastighet på omtrent 16 kbps. ”0” overføres ved at bussen er lav i hele intervallet, mens ”1” overføres ved at bussen bare er lav bare de første 15 µs. Avhengig om det er master eller slave som skal lese fra bussen, må de sjekke tilstanden minst 15 µs etter at bussen ble dratt lav. Se Application Note 74. Reading and Writing iButtons via Serial Interfaces. 1-Wire

Når master skal identifisere komponentene på bussen, sender den ut en Search ROM kommando (F0h). Komponentene svarer (samtidig) med å sende det minst signifikante bitet av sine ID kode. I neste intervall sender de det motsatte av dette bitet. I det tredje intervallet skriver master et bit på linjen, og kun de komponentene som matcher dette bitet fortsetter å være aktive. Slik fortsetter prosessen med eliminasjon helt til en komplett ID er funnet. Vi kan ha 4 kombinasjoner av de to bitene (normal og invertert) på bussen

00 To eller flere enheter prøver å skrive en ulik verdi til bussen
01 eller 10 Alle (én eller flere) enhetene prøver å skrive den samme verdien til bussen
11 Ingen enheter skriver til bussen

Se App Note 187: 1-Wire Search Algorithm

ID koden består av 64 bit: 8 bit familie kode, 48 bit unikt serienummer og 8 bit CRC. Når ID koden er funnet, kan master velge komponentene selektivt med Match ROM (55h) kommandoen (etterfulgt av en 64 bits ID kode). Deretter kan man eksempelvis

  • avlese temperatur (Read Scratchpad - BEh) på en DS18B20 digitalt termometer
  • eller skrive til minnet (Write Scratchpad - 0Fh) på en DS1973 EEPROM

alt etter hvilken komponent (familie kode) vi kommuniserer med.

Med riktig design skal man kunne tilkoble mer enn 500 enheter på kabellengder på over 300 meter, se Tech Brief 1: MicroLAN Design Guide.