Il Bus 1-Wire - mrscuole.net

Transcript

Il Bus 1-Wire - mrscuole.net
Corso introduttivo sui
microcontrollori
A. S. 2008 – 2009
Il Bus 1-Wire
Nicola Amoroso
[email protected]
na_1-Wire
http://www.mrscuole.net/anxapic/
http://www.mrscuole.net/anxapic/
http://www.mrscuole.net/anxapic/
1
Il Bus 1-Wire
Il bus 1-Wire è un protocollo di comunicazione, introdotto dalla americana Dallas
(ora Maxim/Dallas) semiconductor, che permette di interfacciare dispositivi logici
quali memorie, sonde, e molti altri ad un microcontrollore mediante un solo filo
(più la massa).
Proprio questa semplicità di architettura/cablaggio ha reso questo bus molto
diffuso in campo hobbystico e non laddove la velocità nella acquisizione dati non
rappresenta un requisito fondamentale.
E’ possibile collegare al bus molti dispositivi contemporaneamente in quanto
ognuno di essi dispone di un proprio indirizzo univoco che permette di
distinguerlo dagli altri.
Il bus 1-Wire è pensato per essere un bus del tipo single-master, multi-slave.
na_1-Wire
http://www.mrscuole.net/anxapic/
http://www.mrscuole.net/anxapic/
http://www.mrscuole.net/anxapic/
2
Il Bus 1-Wire
Single-master in quanto è prevista la presenza di un solo master che ha il
compito di “gestore” del bus. A lui infatti spetta il compito di dettare le
temporizzazioni, di verificare quanti e quali dispositivi sono collegati, di
interrogare i vari dispositivi e riceverne le risposte. Generalmente il compito di
master è assunto dal microcontrollore.
Multi-slave
in
quanto
più
dispositivi
possono
essere
connessi
contemporaneamente. Ogni slave ha l’obbligo di lasciare sempre libero il bus e di
occuparlo solamente quando viene interrogato dal master.
La rete 1-wire è definita con una architettura multi-drop, open-drain (wired-AND); in questo modo possono
essere collegati più device sul bus in parallelo tra loro, la loro azione è equivalente alla operazione logica
AND; basta che un device trasmetta , sul bus, uno 0 logico per fare il modo che tutto il bus si porti a livello
logico basso. Il Master può ripristinare il livello logico alto tramite una opportuna resistenza di pull-up
http://www.mrscuole.net/anxapic/
http://www.mrscuole.net/anxapic/
collegata ai 5V nominali.
na_1-Wire
http://www.mrscuole.net/anxapic/
3
Il Bus 1-Wire
La trasmissione e’ bi-direzionale e di tipo halfduplex (ricezione e trasmissione non possono
avvenire
contemporaneamente).
Nella
comunicazione si trasmettono i singoli bit
iniziando sempre dal bit LSB. Non e’ richiesto
un
clock
di
sistema
in
quanto
la
sincronizzazione avviene con il fronte di
Un esempio di bus 1-Wire
discesa del bus pilotato dal master.
Tipicamente si possono avere due velocità di comunicazione:
1) Standard: circa16kbps (Kilo bits per secondo).
2) Overdrive: circa 140kbps, questa modalità è attivabile solo in
determinate
condizioni
(pochi
dispositivi
collegati
e
linea
non
http://www.mrscuole.net/anxapic/
http://www.mrscuole.net/anxapic/
eccessivamente lunga – non superiore ai 10/15 metri).
na_1-Wire
http://www.mrscuole.net/anxapic/
4
Il Bus 1-Wire
Una caratteristica importante di questo tipo di bus è che i dispositivi slave
possono essere alimentati mediante la linea del bus (parasite power).
Ogni slave “preleva” la potenza necessaria al suo funzionamento, durante la fase di inattività (idle),
direttamente dal bus. Infatti quando il bus è a livello logico alto, mediante un raddrizzatore a singola
semionda, la capacità C (800 pF) si carica. Quando il bus si porta a livello logico basso, il diodo preserva la
carica sul condensatore che può alimentare il dispositivo durante tutto l’intervallo di tempo in cui la linea del
bus rimane in questo stato logico. Si deduce che la tensione ai capi del condensatore è proporzionale al
numero di volte, per unità di tempo, con cui la linea del bus viene portata a livello logico basso. E’ chiaro
che questo è un limite per la velocità di scambio dei dati, anche se la “autoalimentazione” di ogni slave è
un vantaggio da non trascurare.
na_1-Wire
http://www.mrscuole.net/anxapic/
http://www.mrscuole.net/anxapic/
http://www.mrscuole.net/anxapic/
5
Il Bus 1-Wire
Sul singolo device la modalità “parasite power mode” può essere abilitata o
disabilitata dall’utilizzatore.
Collegando, sul singolo device, il piedino VDD alla
tensione di riferimento GND (0 V) il “parasite
power
mode”
viene
abilitato,
risulta
invece
disabilitato (ogni device viene alimentato in modo
autonomo) in caso contrario.
La resistenza equivalente di ogni dispositivo, in
modalità di trasmissione, è Ron=100 Ω (valore non casuale scelto per evitare
problemi di riflessione sulla linea di trasmissione). Nello stato OFF, modalità
http://www.mrscuole.net/anxapic/
http://www.mrscuole.net/anxapic/
di non trasmissione, questo valore resistivo è di 1 MΩ. In condizione OFF sul
dispositivo scorre comunque una corrente di 5 µA circa (5V/5 µA = 1 MΩ).
na_1-Wire
http://www.mrscuole.net/anxapic/
6
Il Bus 1-Wire
Ogni dispositivo-slave 1-Wire è individuabile mediante un numero seriale unico di 64 bit,
assegnato dal costruttore e contenuto in opportuna memoria ROM del dispositivo. Questo ID
è suddiviso in 8 bytes raggruppati in 3 opportune sezioni.
Il primo byte (LSB) identifica il tipo
di
dispositivo
temperatura,
(sensore
memoria
di
eeprom,
ADC programmabili, etc…)
I successivi 6 bytes (48 bit) rappresentano l’indirizzo univoco del dispositivo.
L’ultimo byte (MSB) è il codice di controllo (CRC – Cyclic Redundancy Checksum) relativo ai
56 bit precedenti.
La tecnica di ridondanza di codice (CRC), molto applicata nei processi di trasmissione dati,
permette al dispositivo MASTER di individuare se la lettura dei precedenti 56 bit è avvenuta
corretttamente, cioè non sono presenti “conflitti” nel processo di trasmissione.
na_1-Wire
http://www.mrscuole.net/anxapic/
http://www.mrscuole.net/anxapic/
http://www.mrscuole.net/anxapic/
7
Il Bus 1-Wire
- Il protocollo di comunicazione
Il bus 1-wire usa i livelli logici TTL/CMOS standard nel processo di comunicazione. Qualsiasi
valore di tensione inferiore a 0,8 V è accettato come un livello logico basso (0 logico),
qualsiasi valore di tensione maggiore di 2,2 V è accettato come livello logico alto (1 logico).
Il range di alimentazione del bus è compreso tra 2,6 e 6 V; tipicamente si usa una
tensione di 5V.
Nella comunicazione si trasmettono i singoli bit iniziando dal bit LSB. Non e’ richiesto un
clock di sistema in quanto la sincronizzazione avviene con il fronte di discesa del bus pilotato
dal master.
Il processo di comunicazione avviene mediante quatto principali fasi:
• Scrittura di un 1 logico
• Scrittura di uno 0 logico
• Lettura di un bit
• Reset (Compete al Master – Fase di sincronizzazione)
na_1-Wire
http://www.mrscuole.net/anxapic/
http://www.mrscuole.net/anxapic/
http://www.mrscuole.net/anxapic/
8
Il Bus 1-Wire
- Il protocollo di comunicazione - Reset
Il Master impone la condizione di Reset del Bus ogni volta che vuole impartire un nuovo comando. il
comando di Reset consiste in un impulso di durata finita che sincronizza tutti i dispositivi presenti sul bus.
Ogni singolo slave risponde al comando di Reset con un impulso di "presenza" mettendo basso il bus.
Durante la fase di reset il master mette a livello basso il bus per un tempo pari a 480 µs rilasciandolo
successivamente e lasciando il controllo allo slave che deve rispondere. Dopo 70 µs (550 µs dall'inizio) il
master legge il bus per capire se il dispositivo(i) slave e’ presente. Se il bus e’ posto basso allora lo slave e’
http://www.mrscuole.net/anxapic/
http://www.mrscuole.net/anxapic/
presente altrimenti il master legge il bus alto e lo slave non e’ presente. L’intera fase di reset dura 960 µs.
na_1-Wire
http://www.mrscuole.net/anxapic/
9
Il Bus 1-Wire
- Il protocollo di comunicazione - Scrittura di uno 0 logico e di un 1 logico
Il processo di scrittura dati da parte del master verso lo slave e’ iniziato dal master. Dopo la fase di reset il
master mette il bus a livello basso per un tempo definito (6µs) . Se vuole scrivere un bit "0" (zona alta del
grafico) il master mantiene il bus a livello basso per altri 54 µs per poi rilasciare il bus facendolo “evolvere”
(si ricordi la resistenza di Pull-Up) al livello logico alto aspettando altri 10 µs (tempo di recupero) prima di
iniziare un’altra operazione.
Nel caso si voglia trasmettere un bit "1" (zona bassa del grafico) il master, dopo i 6 µs in cui forza basso il
bus, rilascia il bus per altri 54 us facendolo “evolvere” al livello logico alto grazie alla presenza del resistore
di pull up. Esauriti i 60 µs il master aspetta altri 10µs, come tempo di recupero, per poi iniziare una nuova
fase.
na_1-Wire
http://www.mrscuole.net/anxapic/
http://www.mrscuole.net/anxapic/
http://www.mrscuole.net/anxapic/
10
Il Bus 1-Wire
- Il protocollo di comunicazione - Lettura di un bit
Per la lettura di un bit, inviato da uno slave, da parte del master, si utilizza una tecnica non molto elaborata.
ll master porta a livello logico basso il bus per un tempo finito (6 µs) per poi rilasciarlo lasciando il controllo
del bus al dispositivo "slave". Per altri 9 µs il master “leggerà” il bus per capire cosa il dispositivo slave stà
trasmettendo. Infatti, se questo deve trasmettere un bit "0" manterra’ basso il bus, mentre lasciera’ il bus
facendo evolvere verso il livello alto se vuole trasmettere un bit "1".
na_1-Wire
http://www.mrscuole.net/anxapic/
http://www.mrscuole.net/anxapic/
http://www.mrscuole.net/anxapic/
11
Il Bus 1-Wire
- Il protocollo di comunicazione
I dati trasmessi sul bus 1-wire sono basati sul time-slot che può essere definito come il tempo impiegato per
la comunicazione di un bit. La trasmissione di un byte avviene mediante 8 chiamate successive della
comunicazione di un bit. I dati sono scritti o letti partendo sempre dal bit meno significativo (LSB).
Il tempo per la trasmissione di un singolo bit è di 70 µs in comunicazione standard (10 µs in
overdrive mode).
La prima fase attuattiva per ogni comunicazione su un bus 1-wire è il segnale di Reset, da parte del Master,
che sincronizza l’intero Bus.
La fase successiva è la selezione del dispositivo slave. In
un sistema con un singolo dispositivo "slave" questa fase
e’ minima e non richiede molto tempo. In un sistema con
molti
dispositivi
slave,
la
selezione
e’
fatta
sia
selezionando tutti gli slave o selezionando uno specifico
slave mediante il suo ID composto da 64 bit. Un
algoritmo di ricerca binaria permette al master, che
controlla il bus 1-Wire (ROM-level commands), di
apprendere
e
conseguentemente
di
selezionare
il
http://www.mrscuole.net/anxapic/
http://www.mrscuole.net/anxapic/
rispettivo ID a 64 bit di qualunque altro dispositivo slave
presente sulla linea.
na_1-Wire
http://www.mrscuole.net/anxapic/
12
Il Bus 1-Wire
- Il protocollo di comunicazione
Quando uno specifico "slave" e’ selezionato il master utilizza specifici comandi per mandare dati allo slave o
leggere dati da esso. Nello stesso tempo, tutti gli altri dispositivi "slave", presenti sulla linea ma non
selezionati dal master, ignorano la comunicazione fino a che non arriva un comando di reset che e’
riconosciuto da tutti.
- Considerazioni
Il supporto fisico per l’implementazione del bus è costituito da due fili avvolti tra loro. Normalmente
vengono utilizzati due, dei fili disponibili, del cavo UTP (Unshielded Twisted Pair) categoria 5 che presenta
una resistenza caratteristica Rc=100 Ω ed una capacità di 50 pF/m.
Il progetto di un sistema multisensore richiede particolare attenzione nella implementazione della rete, in
particolare bisogna fare attenzione alla frequenza di commutazione dei segnali trasmessi dal master
rispetto al tempo di “percorrenza” del segnale stesso sulla intera rete; si potrebbero avere problemi di
“riflessione” specialmente per linee abbastanza lunghe (tempo di commutazione dei segnali generati dal
Master inferiore al tempo di percorrenza del segnale sulla intera rete). Si deve ricorrere in questo caso ad
http://www.mrscuole.net/anxapic/
http://www.mrscuole.net/anxapic/
opportuni accorgimenti.
na_1-Wire
http://www.mrscuole.net/anxapic/
13
Il Bus 1-Wire
- Considerazioni
Ricordiamo che la linea di trasmissione presenta una Rc=100 Ω e una capacità di 50 pF/m.
Quando vengono collegati più device in parallelo tra loro sulla linea, aumenta la lunghezza della linea e
aumenta la capacità totale ai capi del Master, di conseguenza aumenta il tempo necessaria a “riportare” a
livello alto il segnale in una transizione Basso-Alto (Con l’aumento della capacità aumenta anche la costante
di tempo associata).
Generalmente per ridurre questo problema si utilizza una resistenza di Pull-Up (Collegata tra la linea e i 5 V
di alimentazione); si comprende che in questo modo la costante di tempo associata alla transizione
Basso-Alto sarà uguale a: τ = Rpull-Up * CTotale
Aumentando il numero di dispositivi connessi aumenta questa costante di tempo e il relativo tempo di
transizione. Esistono varie tecniche per velocizzare questa transizione in particolar modo si ricorre all’uso di
un Pull-Up di tipo attivo.
In genere un bus 1-wire, in condizioni standard, può gestire circa 150 dispositivi su una linea di circa 100
m. Un numero maggiore di dispositivi (sino a 500) con bus di lunghezza sino a 300 m e velocità di
trasmissione superiore (overdrive mode) si raggiungono impiegando un Pull-Up attivo.
http://www.mrscuole.net/anxapic/
http://www.mrscuole.net/anxapic/
Sono anche disponibili dispositivi che permettono di separare il Bus in più sezioni.
na_1-Wire
http://www.mrscuole.net/anxapic/
14
Il Bus 1-Wire
- Considerazioni
Il sistema 1-wire è un modello di comunicazione “prettamente software” e per la
gestione
di ogni
dispositivo si richiede il software opportuno.
La Maxim/Dallas Semiconductor
presenta attualmente in catalogo diverse decine di dispositivi con gli
opportuni software di gestione del Bus, sono anche disponibili software per la gestione del bus con Pic
Micro e addiritura sono disponibili funzioni API di windows per la gestione del Bus tramite PC; sono
naturalmente disponibili software di gestione implementabili con Labwiev e Labwindows (strumenti virtuali
VI), della National, per la gestione del bus via seriale.
-Bibliografia – Riferimenti
• Maxim/Dallas 1-wire web-page [http://www.maxim-ic.com/1-wire.cfm]
• Maxim/Dallas Tutorial page [http://www.maxim-ic.com/tarticle/article.cfm]
• Maxim/Dallas Application notes [http://www.maxim-ic.com/appnotes10.cfm/]
• Wikipedia, the free encyclopedia [http://en.wikipedia.org/wiki/1-Wire]
• Nicola Ulivieri: Il Bus 1-WIRE – Fare Elettronica n.224 Maggio 2004
na_1-Wire
http://www.mrscuole.net/anxapic/
http://www.mrscuole.net/anxapic/
http://www.mrscuole.net/anxapic/
15