Università degli studi di Trieste – Tesi di laurea triennale in Ingegneria elettronica PROTOCOLLO DI COMUNICAZIONE TRA PC E MICROCONTROLLORE PER UN’INTERFACCIA DI CONTROLLO DI UN MICROSCOPIO A SCANSIONE Laureando: Igor Cerniava Relatore: Prof. Sergio Carrato Correlatore: Dott. Paolo Sigalotti
INTRODUZIONE [1] Scopo dell’elaborato: realizzare un protocollo di comunicazione tra computer e periferica esterna (microcontrollore dsPIC); Il sistema di comunicazione utilizza la porta seriale USB; Il protocollo ha una struttura a livelli; Possibili utilizzi: sistema di controllo di un microscopio a scansione (STM) controllo elettronico di qualsiasi sistema di misura
INTRODUZIONE [2] Il progetto è diviso in due parti: Lato computer Lato microcontrollore dsPIC Il protocollo ha tre livelli logici di astrazione: Livello alto – main Livello intermedio – parser Livello basso – driver Ogni livello (layer) è un modulo di funzioni a sé stanti
INTRODUZIONE [3] Vediamo i 4 tipi di comunicazione progettati: Trasmettere un comando di lunghezza prefissata e ricevere una risposta di conferma dalla periferica; Trasmettere un comando di lunghezza prefissata e ricevere valore numerico dalla periferica; Trasmettere un pacchetto di dati e ricevere una risposta di conferma dalla periferica; Trasmettere un comando di lunghezza prefissata e ricevere un pacchetto di dati dalla periferica.
ARCHITETTURA Collegamento fisico dei dispositivi utilizzati:
IL MICROCONTROLLORE dsPIC Il micocontrollore incorpora al suo interno una parte di DSP Il progetto ha la funzione di fornire la connettività al processore DSP Capacità di elaborazione di 30 MIPS
IL DLP-FTDI245M Questo dispositivo si occupa interamente della ricezione e trasmissione dei dati tramite la porta USB del computer Il suo utilizzo semplifica il lavoro di interfacciamento del dsPIC al PC Il DLP-FTDI245M è progettato per agevolare l’utilizzo delle porte USB
LA DEMOBOARD dsPICDEM Caratteristiche: dsPIC 30F6012 Led, pulsanti, convertitori ADC, SPI, sulla millefori è stato saldato il DLP-FTDI245M
IL PROTOCOLLO DI COMUNICAZIONE Lato PC Lato dsPIC
IMPLEMENTAZIONE DEL PROTOCOLLO Le operazioni implementate sono: La prima accende e spegne i quattro led presenti sulla demoboard COMANDO RISPOSTA La seconda è un comando che legge un valore di tensione tramite il convertitore ADC del dsPIC COMANDO RISPOSTA VALORE La terza operazione trasmette un pacchetto di dati dal PC al dsPIC FLUSSO DATI RISPOSTA La quarta operazione è un comando che fa inviare al dsPIC un pacchetto di dati verso il PC COMANDO FLUSSO DATI
COMANDO RISPOSTA Comandi “Accendi LED” e “Chiudi LED” Il primo pacchetto dati è il comando che il dsPIC riceve dal PC; Il secondo è l’acknowledge che il dsPIC invia al PC.
COMANDO RISPOSTA VALORE Comando “Leggi ADC” Il primo pacchetto è il comando che il dsPIC riceve dal PC; Il secondo pacchetto dati è la risposta che il dsPIC invia al PC. Nel pacchetto dati c’è il valore letto dall’ ADC.
FLUSSO DATI RISPOSTA Comando “Flusso dati in uscita” Il primo comando è il pacchetto di dati che il dsPIC riceve dal PC; Il secondo è l’acknowledge che il dsPIC invia al PC.
COMANDO FLUSSO DATI Comando “Flusso dati in entrata” Il primo è il comando inviato dal PC indica il numero di dati che il dsPIC dovrà inviare; Il secondo è il flusso di dati inviato dal dsPIC.
BYTE DI IDENTIFICAZIONE BYTE DI INTESTAZIONE Inizio MASTER – Carattere I Inizio SLAVE – Carattere C BYTE DI IDENTIFICAZIONE Il byte di identificazione determina se l’operazione è un: Comando Flusso (pacchetto) dati
CODICE FORMATO COMANDI E CODICE FORMATO FLUSSI A = TIPO DI TRASMISSIONE Se 00 = comando (accendi led) Se 11 = flusso dati (flusso dati in uscita) B = FORMATO DELLA TRASMISSIONE Se 00110000 -> comando accendi led Se 11110010 -> flusso dati su porta in ingresso
CONROLLO ERRORE I byte di controllo errore sfruttano una semplicissima operazione matematica: 1° byte Err = SOMMA(Nbyte) MOD 256 2° byte Err = ( [SOMMA(Nbyte)] / 256 ) MOD 256
ALGORITMO DEL PARSER (dsPIC) Controllare l’intestazione del comando che deve essere sempre una ‘I’; Ogni byte ricevuto viene salvato; Somma il valore dei byte ricevuti, escludendo gli ultimi quattro byte; Test su byte di identificazione: se bID1 = bID2 allora test OK; Test errore incrociato: se il 1. ed il 3. byte nonché il 2. ed il 4. byte sono uguali, il primo test è positivo. Successivamente vanno fatti i moduli sulla somma di tutti i byte del pacchetto. Il risultato viene confrontato con i 4 byte di controllo errore del pacchetto ricevuto. Se test OK eseguo le operazioni da eseguire.
IL FIRMWARE DEL dsPIC
IL SOFTWARE LATO PC
IL TEST Si è constatato il corretto funzionamento del sistema di comunicazione Test sulla velocità di comunicazione: FLUSSO DATI RISPOSTA (Comunicazione 3) A 4 MIPS -> scrittura e lettura in 0,02295 A 8 MIPS -> scrittura e lettura in 0,01403 COMANDO FLUSSO DATI (Comunicazione 4) A 4 MIPS -> scrittura e lettura in 0,06437 A 8 MIPS -> scrittura e lettura in 0,04857 A 4 MIPS -> scrittura e lettura in 0,02632 con while scritti in assemler Il sistema trasmette e riceve i dati ad una velocità di 111 KBps, 8 volte superiore ad una porte RS232 (14 KBps)
OTTIMIZZAZIONE DEL PROTOCOLLO Funzioni READ e WRITE :
CONCLUSIONI L’USB è un importante sistema di comunicazione per le periferiche esterne (a basso costo) Il protocollo di comunicazione offre buone prestazioni sia a livello grammaticale che a livello di prestazioni Il protocollo così costruito offre la possibilità di: sviluppi futuri una facile trasportabilità e flessibilità utilizzo in qualunque sistema di controllo elettronico