CONVERTITORE ANALOGICO DIGITALE SERIALE - 5



 

Protocollo di comunicazione

La comunicazione tra il convertitore e il master avviene tramite messaggi. I messaggi possono essere di cinque tipi: comando, dato, echo, ack ed errore. Il messaggio di comando va dal MASTER verso il convertitore, i messaggi di tipo dato, echo, ack ed errore vanno dal convertitore (SLAVE) al MASTER. La comunicazione e’ sempre iniziata dal master. Il convertitore in quanto slave risponderà al comando. La comunicazione ha luogo nel seguente modo:

  1. Il master invia un messaggio di comando al convertitore.

  2. Il convertitore rinvia al master il messaggio ricevuto ( funzione echo) o di errore 

  3. Il convertitore esegue l’istruzione ed eventualmente invia un messaggio di risposta

  4. Il convertitore manda un messaggi di ack  come fine esecuzione di comando o di errore.

Struttura dei messaggi

 Il messaggio (comando /dato/echo /ack/errore) e’ composto di un certo numero di byte e ha la seguente struttura generica:

msg + dato1+ dato2… .datoj + end

Il byte msg definisce la tipologia del messaggio: 

MSG ( hex)  Tipo messaggio
00....0A comando
0F dato
F0 errore 
FF ack

Come si vede dalla tabella per valori di msg compresi tra 1 e 10  ( 01 e 0A in hex) il messaggio e' di tipo comando mentre per msg= 0F e' di tipo dato, per msg= FF e' ack e infine per msg=F0 e' un messaggio di tipo errore.
 I bytes datoj (j=1 …N) sono i valori associati al messaggio. In base al tipo di messaggio il numero N dei bytes dato può cambiare.
Il byte end ha il valore di fine messaggio che corrisponde al return da tastiera ed e’ il carattere ASCII  numero 13  ( 0D hex)

Messaggio comando

La struttura del messaggio comando e’ la seguente. 

msg

Dato

End

1... 10

N

0D

Messaggio echo

Per avere conferma che il messaggio di comando inviato e’ stato correttamente ricevuto, il master riceve dal convertitore un messaggio di risposta detto echo che e’ esattamente quello che lo slave ha ricevuto. Il master confronterà il messaggio di echo con quello che ha mandato. In caso di errore il MASTER ignorerà quanto sara’ mandato dal convertitore aspettando solo il messaggio di ack.
l messaggio di echo e’ anche un messaggio di comando in quanto replica di ciò che il master invia al convertitore.

Messaggio dati

Quando il convertitore invia i dati al master, siano essi campioni del segnale o valori dei parametri, utilizza messaggi di tipo dato. La peculiarità dei messaggi di dati sta nel fatto che per ogni valore trasmesso sono utilizzati due byte.Nel primo byte e’ contenuto la parte LSB, mentre nel secondo la parte MSB della parola digitale che rappresenta il valore del campione o del parametro che il convertitore trasmette al MASTER. La struttura del messaggio di dati e’ la seguente:

msg

Dato0

Dato1

Data2

……

DatoN

DatoN

End

0F

N

LSB_Sample1

MSB_sample1

……..

LSB_SampleN

MSB_SampleN

0D

Come si vede dopo il byte msg e' trasmesso il dato0 che rappresenta il numero N dei campioni trasmessi.

Messaggio di errore

Se si verificano degli errori viene inviato a posto dell’ack un messaggio di errore. In N e’ riportato il codice dell’errore

msg

dato

End

F0

N

0D

Il valore N e' il corrispondente codice errore. A seconda dell'errore verificatosi byte dato assume i seguenti valore:

N= codice errore Nome   Descrizione 
1 Time out La funzione richiesta va in time out
2 comando non riconosciuto Il comando inviato dal master non e' stato riconosciuto dalla scheda
3 parametro non riconosciuto Il parametro associato con il comando  inviato dal master non e' valido

Messaggio di ack

Alla fine della esecuzione di ogni comando il convertitore manda un messaggio di ack che assume la seguente forma:

msg

dato

End

FF

00

0D

Questo messaggio indica anche quando il convertitore finisce di eseguire il comando e ha la funzione di busy: il master aspetta il messaggio di ack per inviare un nuovo comando al convertitore.