Convertitore ADC via SPI

La casa costruttrice Analog Devices è certamente un punto di riferimento per i prodotti utilizzati nel settore elettronico. In questo articolo vedremo il dispositivo ADC, di casa Analog Devices, utilizzato secondo lo standard SPI.

Analog Devices propone un dispositivo hardware in grado di sopperire alla conversione ADC attraverso il bus SPI in modalità high speed. Sono dispositivi abbastanza versatili per applicazioni piuttosto delicate per le informazioni che devono fornire allo strato software o hardware. La compatibilità verso lo standard SPI è un valore aggiunto; infatti, in questo modo è possibile  sfruttare il componente utilizzando un bus 2-wire e riducendo la logica hardware. Infine, il componente dispone di una serie di registri on-board che permettono all’utilizzatore di sfruttare pienamente le sue caratteristiche. In questo articolo vedremo le potenzialità di questo componente e le prerogative che sfrutta.

Standard SPI

Lo standard SPI permette ad un dispositivo, definito come Master, di iniziare una comunicazione con un altro dispositivo definito come Slave. Il segnale di clock è generato esclusivamente dal dispositivo Master che sincronizza l’intera comunicazione e controlla quando il dato può cambiare per essere letto. I  dispositivi Slave quindi non possono manipolare il clock; gli opportuni registri della periferica Master, tramite opportuni bit, controllano come gli Slave reagiscono al segnale di clock. La comunicazione avviene con uno scambio contemporaneo di dati tra i due dispositivi per mezzo di tre linee, una di clock (CLK), una di dati in uscita (SDO), uno di dati in entrata (SDI) e quindi non con un invio di dati singolarmente da uno dei due dispositivi: come i dati entrano ed escono nel Master, contemporaneamente e rispettivamente escono ed entrano nello Slave. In generale quando sono presenti più dispositivi Slave si implementa un ulteriore segnale attivo basso definito come SS (Slave Select) che abilita uno Slave alla volta. Se lo Slave è unico allora tale linea può anche essere omessa, anche se una rigorosa implementazione di tale protocollo la impiegherebbe. L’impiego principale di questo pin consiste nel tenere un dispositivo disabilitato fino a poco prima dell’invio dei dati in modo da prevenire malfunzionamenti dovuti a segnali spuri o disturbi in genere. Tipicamente  il dato presente sulla linea cambia durante il fronte di salita o di discesa del clock, in modo da far avvenire la lettura del dato nel fronte opposto. A seconda di questi particolari, si ottengono vari tipi di comunicazione SPI, ognuno dei quali deve essere implementato in base al dispositivo che si deve interfacciare. Dal diagramma delle temporizzazioni, figura 1, di un ipotetica applicazione si nota che il campionamento del dato avviene sul fronte di salita del clock mentre invece il cambio del dato avviene sul fronte di discesa.

Figura 1: temporizzazioni.

Figura 1: temporizzazioni.

Il protocollo SPI crea quindi un anello tra i due dispositivi Master e Slave permettendo ai dati che lasciano il Master di raggiungere lo Slave e viceversa, figura 2.

Figura 2 : connessione MasterSlave.

Figura 2 : connessione MasterSlave.

Le figure 3 e 4 mostrano le possibili connessioni tra due dispositivi che utilizzano  il protocollo SPI, come vediamo sono collegati  il pin SCLK, serial clock pin, il pin SDIO, serial data input/output, il  chip select bar (CSB) e, opzionalmente, una connessione SPI può anche disporre della linea SDO (Serial Data out pin).

Figura 3: single Device Control in 2-Wire Mode.

Figura 3: single Device Control in 2-Wire Mode.

 

Figura 4: mMultiple Device Control in 2-Wire Mode.

Figura 4: mMultiple Device Control in 2-Wire Mode.

Il  bus SPI è un bus sincrono e full-duplex ideale in tutte quelle situazioni in cui un dispositivo master deve interfacciarsi a diversi dispositivi slave e con loro dialogare in modo efficace e prestante. Il bus SPI si basa su 4 segnali:

➤ SCLK Serial Clock;

➤ SDI Serial Data Input;

➤ SDO Serial Data Output;

➤ CS Chip Select.

Di questi il Chip Select non è indispensabile in tutte le situazioni; infatti, possono risultare utili quando abbiamo più dispositivi che comunicano sul bus. Il segnale SCLK è il clock seriale che scandisce gli istanti di emissione e di lettura dei bit sulle linee di dato. È un segnale emesso dal MASTER ed è quindi questo ultimo a richiedere di volta in volta la trasmissione di una parola. Il  segnale SDI è la linea attraverso cui il dispositivo (MASTER o SLAVE) riceve il dato seriale emesso dalla controparte. Corrispondentemente, il dispositivo emette, con la stessa cadenza, il suo output ponendo il dato sulla linea SDO (linea di output di dato). La linea CS è dedicata all’abilitazione del dispositivo SLAVE da parte del MASTER in modo da informare il primo che la trasmissione sul bus è dedicata ad esso. La linea CS, normalmente attiva a livello logico basso, in caso di disabilitazione, lascia il dispositivo SLAVE con uscita in alta impedenza facendolo quindi rimanere completamente isolato. Il  numero di dispositivi SLAVE che si possono connettere al bus è limitato esclusivamente dal numero di possibili linee di chip select gestibili dal dispositivo master. La frequenza di clock (e di conseguenza la velocità del bus) può raggiungere, con questo standard, livelli anche elevati nell’ordine delle decine di MHz. Il diagramma a blocchi del modulo SPI è mostrato in figura 5.

Figura 5: schema a blocchi del modulo SPI.

Figura 5: schema a blocchi del modulo SPI.

La trasmissione dei dati sul bus SPI si basa sul funzionamento del registro a scorrimento SSPSR. Tale registro è presente sia nel MASTER che nello SLAVE. Ad ogni colpo di clock, i bit presenti nel registro vengono fatti scorrere e inviati tramite la linea SDO lasciando la cella libera ai bit ricevuti tramite la linea SDI. Il registro può avere dimensione arbitraria (ma uguale per dispositivo MASTER e SLAVE) anche se il più delle volte ha la dimensione di 8 bit. Il  registro a scorrimento è un’interfaccia completa, mediante la quale vengono impartiti comandi e trasmessi dati che arrivano in modo seriale, ma che internamente sono prelevati a fine trasmissione, in modo parallelo. Il circuito ADC ha per ingresso un pin di chip-select; questo è usato per l’abilitazione alla scrittura e lettura. L’interfaccia SPI può leggere e/o scrivere più di un dispositivo, per questo si ha bisogno del chip-select. La porta SPI è uno shift register circolare formato da 8 bit; per leggere l’ADC, per esempio a 12 bit, dobbiamo configurare la lunghezza dei dati in uscita ad 8 bit, dove i primi bit ad uscire sono quelli più significativi, in modo che con due letture in rapida successione, sommando e traslando opportunamente le due parole, è possibile ricostruire il dato a 12 bit.

Conversione ADC

La logica ADC consente di tradurre il potenziale di un segnale elettrico in un valore numerico. Spesso è richiesto un circuito di sample/hold che si occupa di memorizzare il valore di tensione ad un preciso istante di campionamento e di mantenerlo finché il circuito ADC non abbia terminato la fase di conversione. Anche in questo caso gli ADC possono essere paralleli o seriali; inoltre spesso implementano inter namente un multiplexer analogico (collegato prima del circuito S/H o del convertitore) che consente di ottenere più canali analogici d’ingresso, selezionabili.  Essendo l’operazione di conversione A/D più complessa, e quindi più lenta, della conversione D/A. Ogni convertitore ADC è caratterizzato dalla velocità massima di campionamento/conversione, che si misura in Samples Per Second, che può assumere valori tipicamente compresi fra 50 sps e 200Msps. Possono misurare tensioni unipolari oppure bipolari (con segno, quindi positive o negative), e richiedono uno o due riferimento di tensione (valore massimo e minimo di tensione misurabile) che possono essere esterni all’integrato oppure interni.

La programmazione del chip

Sono disponibili dei tool di programmazione per fornire all’utilizzatore  il necessario supporto al fine di consentire lo svolgimento del proprio lavoro con il minor impatto possibile. Questi tools sono disponibili sul sito www.analog.com/FIFO; è possibile consultare, inoltre, i vari application  note disponibili. Per esempio il documento AN812 illustra un tool alternativo a basso costo per gestire in maniera completa un SPI controller. Il fine di questi tools è quello di fornire un set-up dei registri per determinare in maniera ottimale la propria applicazione. Una volta che il processo di configurazione si conclude, il tool software, genera due file utili per programmare il dispositivo. Il  primo file contiene uno pseudocode che deve essere inserito nel proprio progetto. Infatti, il file può essere tranquillamente inserito in un programma C che, opportunamente trattato, permetterà di configurare, in maniera appropriata, i registri  presenti nel dispositivo. Il listato 1 ne mostra un breve esempio.

write(0, 18);       //configure serial interface for MSB first
write(5, 3);        //set Devices-Index to program ADC Channels 0 and 1
write(18, 80);      //set vref to option 2 and adjustment to all zeros
write(14, 10);      //set output_mode to level option 0, disable output MUX,
                    //enable output and offset binary
write(17, 83);      //set output_delay to enable and set to delay value of 3
write(FF, 1);       //write transfer bit (for configurations that require a manual transfer)
write(10, 3);       //set offset to 3 (for Channel 1 only)
write(5, 2);        //set Device-Index to program ADC Channel 1
write(FF, 1);       //write transfer bit (for configurations that require a manual transfer)
Write(5, 4);        //set Devices Index to program ADC Channel 2
write(10, 9);       //set offset to 9 (for Channel 2 only)
write(FF, 1);       //write transfer bit (for configurations that require a manual transfer
Listato 1

Il  secondo file è un programma in formato assembler utilizzabile direttamente in un microcontrollore, come descritto nell’application note AN-812. La figura 6 mostra una ipotetica connessione con un microcontrollore della famiglia PIC, il PIC12F629  della Microchip.

Figura 6: programming with a Low Cost PIC Microcontroller.

Figura 6: programming with a Low Cost PIC
Microcontroller.

I registri del chip

Il protocollo SPI è utilizzato per configurare il convertitore e gestire il suo funzionamento. Inoltre, esistono una serie di registri per programmare  il componente stesso. Esistono tre classi di registri:  il registro di configurazione,  il transfer register e i registri di programma. Vediamo in questa sezione alcune considerazioni. Configuration register Questo registro è utilizzato per configurare l’interfaccia seriale e contiene solo quattro bit attivi nella parte alta del byte, l’upper nibble. Infatti, il nibble basso non è connesso. La tabella 1 pone in evidenza il contenuto di questo registro con una descrizione dei suoi bit. Program Registers Questa classe comprende una varietà di registri dove ognuno di questi sovrintende ad una determinata funzionalità.

TABELLA 1 CONFIGURATION REGISTER

TABELLA 1: CONFIGURATION REGISTER

Conclusioni

Il dispositivo dell’Analog Devices è certamente una proposta interessante dal punto di vista tecnico sia perché è utilizzato in congiunzione con il bus SPI, sia per le prerogative che offre il componente. Maggiori ragguagli tecnici sono reperibili attraverso la lettura del documento dell’Analog Devices siglato come AN-877: in questo modo è possibile rendersi conto della sua offerta tecnica.

 

 

Scrivi un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *