La linea seriale è, per un microcontrollore, un sistema semplice e potente per per interfacciarsi con l' esterno, per il trace dei programmi e per il debugging del codice. Purtroppo i PC moderni non hanno più le due classiche porte RS-232 e quindi è necessario utilizzare un convertitore da USB a seriale. In commercio si trovano molti convertitori che sembrano dei semplici cavetti a vedersi, e che presentano da un lato la spina USB e dall'altro la spina con il classico connettore D-type per la RS-232. Costano poco ma è necessario utilizzare una circuiteria di adattamento dei livelli del segnale per potersi collegare al micro. Una soluzione più semplice è quella di utilizzare un integrato che faccia da convertitore. Ne esistono parecchi in commercio, tuttavia in questo brevissimo articolo vorrei descriverne uno in particolare che potrebbe essere una soluzione veloce ed a basso costo fornendo lo schema elettrico di come realizzare un collegamento fra la seriale di un micro ed il PC.
Indice |
Un PIC come convertitore
Il PIC18F14K50 è un bellissimo micro (è la mia mascotte) e la microchip offre un esempio già pronto per la realizzazione di un convertitore da USB a seriale. Io lo uso di frequente perché mi basta programmare il micro, metterci quattro componenti in croce per avere il collegamento seriale.
Tra l' altro accetta anche i comandi di impostazione della velocità di comunicazione che può arrivare fino a 115200 baud.
L' unico neo è dato dal fatto che non gestisce i segnali RTS e CTS ma implementare un protocollo Xon/Xoff (sul micro su cui si lavora) non è poi quella grande complicazione.
Il circuito
Il circuito è molto semplice e può essere realizzato su millefori.
In questo circuito non mi sono inventato niente, ho solo applicato quello che si trova nella documentazione del sistema di sviluppo Low Pin Count USB Develpement System.
I due LED si possono omettere, servono per dare un' indicazione sullo stato del collegamento USB. Se lampeggiano velocemente ed insieme significa che la periferica non è vista dal PFC, un solo LED accesso significa che è in fase di enumerazione mentre nel funzionamento normale lampeggiano tutti e due alternativamente con un frequenza di circa 2 Hz.
Il microcontrollore principale si collega al convertirore tramite i due collegamenti contrassegnati con DOUT (Uscita dei dati dal convertitore) e DIN (ingresso dei dati al convertitore) che dovranno esssere collegati rispettivamente ai pin RX e TX del micro.
Questo è un circuito che utilizzo molto quando realizzo dei prototipi filati perché, oltre ad avere un collegamento seriale semplice da realizzare mi permette di ottenere la tensione di alimentazione a 3,3V per i micro che utilizzo senza bisogno di utilizzare un alimentatore esterno. Il circuito seguente è quelllo che di solito uso.
Anche se i micro che utilizzo hanno di solito gli ingressi per la seriale "5V tolerant" preferisco metterci la R5 e lo zener. Per i dati in ingresso non ci sono problemi perché un 3,3V viene visto dal PIC come stato logico 1.
Questo è un esempio di come ho utilizzato il convertitore. La parte cerchiata in rosso è il circuito che ho mostrato.
Il bestione a destra dell' immagine è un ARM Cortex-M3 che ha a bordo 5 seriali, infatti ho utilizzato un cavetto doppio per selezionare la seriale sulla quale desidero lavorare.
Dove trovare il progetto
Il progetto lo si trova nella Microchip Library for Apllications. E' sufficiente scaricarla, installlarla e poi, nella cartella USB, troviamo la sottocartella "Device - CDC - Serial Emulator" che contiene il progetto.
I vari progetti sono nella cartella "Firmware". Io ho usato il progetto denominato "USB Device - CDC - Serial Emulator - C18 - Low Pin Count USB Development Kit.mcp" che è appunto quello specifico per il PIC18F14K50. E sufficiente compilarlo (chiaramente bisogna disporre del compilatore C18, anche quello Lite va bene), programmare il PIC ed il gioco è fatto!
Il driver si trova nella cartella "inf" ed è un driver che fa riferimento a quello standard usbser.sys di windows.
Il convertitore funziona anche sul MAC, ho fatto una prova veloce ma funziona bene.
Per chi lo volesse già programmato lo può trovare a questo indirizzo.
Conclusioni
Se è vero che esistono convertitori molto validi questo presenta alcuni vantaggi:
- E' un PIC e lo si può riutilizzare quando il convertitore non serve più.
- Sfogliando la libreria della Microchip si possono trovare tantissimi esempi di applicazioni di vario tipo.
- Esplorando il progetto si può estrapolare la parte di comunicazione per integrarla in un progetto più corposo, in effetti il codice generato è corto e quindi c' è spazio per inserirci altre funzioni e compiti all' interno del programma.
Buona sperimentazione a tutti!