Home
Accesso / Registrazione
 di 

Come creare dispositivi USB usando un microcontrollore PIC18F. 3/4

microcontrollore PIC18F

In questo articolo verrà mostrato come realizzare un dispositivo generico USB HID (Human Interface Device, dispositivi che interagiscono con gli umani e da loro ricevono input, per poi restituirglieli), utilizzando un microcontrollore PIC18F e infine creando l’interfaccia Windows per il dispositivo che permetterà di controllare un LED dal PC. Con l’avvento di Windows 7 c’è bisogno di una certificazione di validazione costosa per creare driver USB personalizzati (senza di essa molti utenti non possono neppure installare il software creato).

Comunicazione con l’host

Il secondo importante lavoro che il firmware compie è la reale comunicazione tra l’host e il dispositivo. Ogni comunicazione è identificata da un comando. Quando si usa lo standard generico HID, il comando comunica all’host e al dispositivo di interpretare l’informazione che è passata con il comando. Questa informazione potrebbe essere di qualunque tipo (per questo è detta generica) così da ottenere massima flessibilità nell’elaborazione del task.

Una volta che il dispositivo viene enumerato l’host sonda periodicamente il dispositivo e può sia inviargli che ricevere da esso un comando o dei dati.
La parte principale da considerare nel firmware è la sezione relativa alle interrogazioni dell’host e alle operazioni necessarie per far funzionare il dispositivo.

Capire il codice sorgente del firmware.

Nel file zippato “PIC18F Generic HID Device” che si trova sempre disponibile per il download in fondo a questa pagina, si trova un firmware completo ready to go per il PIC18F4550. Basta scompattare il file nella directory di MPLAB e poi utilizzare MPLAB per aprire il progetto.

Il firmware fornisce 3 comandi:
- 0x80 – LED toggle
- 0x81 – leggere lo stato dell’interruttore a bottone
- Ox82 – leggere del stato del LED
Il codice che opera questi comandi è localizzato nel file sorgente main.c nella funzione ProcessIO(). Questa funzione è responsabile della determinazione del comando richiesto e poi dell’invio e ricezione dei dati in maniera appropriata.
Per capire meglio il processo di enumerazione si può dare uno sguardo a usb_descriptors.c che contiene l’informazione passata all’host quando il dispositivo viene connesso per la prima volta. Nella sorgente ci sono le informazioni riguardanti il VID e il PID per il dispositivo e anche una serie di descriptor di configurazione che spiegano all’host che tipo di interfacce ha il dispositivo e quali sono le loro capacità. Ci sono anche alcune stringhe che descrivono testualmente il produttore e il prodotto. Windows di solito usa queste stringhe quando nomina i dispositivi USB. Capire il processo di enumerazione e i formati del descriptor non è facile, e l’argomento è trattato nelle varie specifiche USB e in un libro di Jan Axelson intitolato “USB Complete – Everything you need to develop custom USB peripherals”, che sicuramente è di grande aiuto agli inizi per agevolare l’apprendimento.

 

 

Scrivi un commento all'articolo esprimendo la tua opinione sul tema, chiedendo eventuali spiegazioni e/o approfondimenti e contribuendo allo sviluppo dell'argomento proposto. Verranno accettati solo commenti a tema con l'argomento dell'articolo stesso. Commenti NON a tema dovranno essere necessariamente inseriti nel Forum creando un "nuovo argomento di discussione". Per commentare devi accedere al Blog

 

 

Login   
 Twitter Facebook LinkedIn Youtube Google RSS

Chi è online

Ci sono attualmente 8 utenti e 45 visitatori collegati.

Ultimi Commenti