Vediamo come realizzare un semplice protocollo di comunicazione basato sul trasferimento seriale. Si tratta di un protocollo basato su messaggi, implementabile in tutti i circuiti basati su controllore, in modo da riuscire a modula rizzare la progettazione.
Costruire circuiti o semplici robot ci porta sempre ad avere bisogno delle stesse periferiche: schede display, tastiera, RTC, …
Lavorando in questo modo, per ogni progetto dobbiamo occuparci della progettazione della scheda madre e di come interagisce con le sue periferiche.
Il protocollo qui descritto offre alcuni vantaggi che lo rendono applicabile anche sui controllori pi piccoli. Ecco le caratteristiche principali:
- Protocollo single master/multi slave
- Basato su messaggi a risposta singola: ogni comando è costituito da un messaggio di andata (da master verso slave) e una risposta
- Previsto indirizzamento. Il messaggio contiene l’indirizzo del destinatario. È possibile quindi avere più periferiche sulla stessa linea.
- Ogni messaggio contiene più controlli di integrità. Viene garantita una buona qualità della trasmissione tramite il byte di vli (indica la lunghezza del messaggio) e il check
- Esiste un indirizzo di broadcast
- Assegnamento dinamico dell’indirizzo delle periferiche
Formato dei messaggi
Comando: [stx][vli][1][cmd][addr]…data…[crc][etx]
Risposta: [stx][vli][0][cmd][addr]…data…[crc][etx]
stx: 0x02
vli: Variable length indicator
cmd: codice che identifica il comando da inviare o a cui si risponde
addr: indirizzo di destinazione o sorgente, in caso di risposta
data: eventuali dati aggiuntivi. Dipende dal comando.
crc: controllo sui dati trasmessi. Io ho implementato XOR su tutti i byte
Etx: 0x03