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