Componenti per lo sviluppo di applicazioni USB

L’introduzione dell’interfaccia USB ha mutato non poco le nostre abitudini di lavoro, migliorando da un lato la velocità di comunicazione verso il PC e dall’altro semplificando il collegamento fisico tra il computer e il dispositivo di servizio.

L’avvento dell’interfaccia USB negli anni Novanta fu accettato con molte riserve dagli utilizzatori perché essa risultò subito complessa per i non esperti, e ben presto finì per tagliare fuori i cosiddetti “smanettoni” dell’informatica che fino ad allora apparivano come maghi del computer. Questo standard infatti, pur introducendo una grossa semplificazione nel modo di connettersi al PC, presuppone un’ampia conoscenza specialistica per poter realizzare anche la più semplice delle applicazioni computerizzate. Dunque se da una parte l’utenza privata viene favorita dalla semplicità di connessione e ne fa grande uso, dall’altra il progettista che voglia cimentarsi con un’applicazione che utilizzi il PC come supporto si vede la strada sbarrata dall’enorme impatto tecnico introdotto dallo standard USB.

Dietro i due fili dell’interfaccia USB (quattro se consideriamo alimentazione e gnd) si cela infatti un mondo fatto di protocolli, livelli, report, interrupt, endpoint ecc. tale da scoraggiare subito qualunque tentativo di cimentarsi con questo standard. Ma allora c’è da chiedersi se occorra diventare ingegneri elettronici per comandare un LED tramite il PC. Fortunatamente i comitati tecnici che hanno presieduto i lavori di definizione dello standard USB hanno fatto le cose per bene. I costruttori di silicio hanno subito cavalcato questo transitorio rendendo disponibili sul mercato dispositivi integrati che risolvono il problema senza costringerci a entrare nel merito, per così dire, dello standard.

La porta COM virtuale

Una prima soluzione consiste nell’utilizzare convertitori USB-COM oppure USB-LPT, che riportano la problematica su un piano di conoscenza più familiare; il PC continuerà a “vedere” virtualmente un dispositivo collegato sulla porta COM /LPT e noi potremo finalmente comandare ciò che vogliamo tramite il collegamento USB. Anche se, tutto sommato, in questo modo non possiamo dire di utilizzare tutte le potenzialità della USB. Il cosiddetto bridge, il ponte tra UART e USB, consente comunque di risolvere la maggior parte della applicazioni a basso livello, dove cioè a muoversi sono soltanto pochi bit. Esempi di dispositivi bridge sono forniti dal più diffuso TF232 di FDTI, oggi quasi completamente in disuso, ma molti altri ne esistono, basta collegarsi al sito di Cypress oppure di Atmel per rendersi conto della grande varietà di silicio disponibile per risolvere i casi più disparati. Molte volte lo stesso costruttore del chip fornisce tutto il supporto firmware per lo sviluppo e il debug delle applicazioni. Il vero punto di forza dello standard USB consiste infatti nell’aver suddiviso le possibili applicazione in poche classi essenziali di utilizzo. Queste sono così raggruppate: hub, interfaccia umana, stampante, dispositivo video e memoria di massa. Il dispositivo che si connette al computer deve “presentarsi” come appartenente a una delle classi in elenco. Una volta presentatosi, gli viene assegnata una modalità di trasferimento dei dati (che tiene conto della probabile quantità di dati) e un indirizzo fisico di comunicazione per poterlo distinguere e a farlo coesistere con altri dispositivi. Fino a quando il dispositivo connesso si comporta come previsto dallo standard e si attiene alle modalità previste dal protocollo, allora sarà possibile connettersi al PC utilizzando le risorse (librerie e driver) del sistema operativo che si vuole interfacciare – per esempio Windows /Linux – in modo del tutto automatico. In altri termini il computer che ospita il dispositivo sa già come dialogare con esso ma non sa ancora che cosa deve comunicargli, e questo dipenderà ovviamente dall’applicazione.

L’interfaccia HID

Con il termine HID (Human Interface Device) si intende riferirsi a un dispositivo USB destinato all’interfaccia uomo-macchina, un qualunque dispositivo che preveda l’intervento dell’operatore umano per l’immissione di dati nel PC. Si capisce subito che una applicazione del genere è destinata a un basso volume di traffico di dati (throughput). Sono esempi validi di dispositivi HID: la tastiera, il mouse, il joystick, il game pad ecc. In pratica tutto ciò che interagisce con la manualità dell’operatore umano. Per queste applicazioni lo standard USB prevede un trasferimento di dati controllato a interrupt dove lo scambio dati è limitato da pochi byte a un massimo di 1024 byte per payload. Il numero di byte, la velocità di trasmissione, il numero di endpoint associato ai dati in ingresso e in uscita e quant’altro necessario alla comunicazione con il dispositivo, vengono negoziati con il PC all’atto del collegamento del connettore USB. Solitamente dispositivi lenti come la tastiera, il mouse oppure un dispositivo di puntamento (joystick) utilizzano da 0 a 8 byte per dialogare con il PC e informarlo costantemente sul valore del tasto premuto, oppure sulla posizione dei cursori sull’asse X ,Y e Z, nonché sullo stato dei pulsanti eventualmente presenti sull’apparecchio.

Le soluzioni disponibili in commercio

Al fianco dei pionieri dello standard USB (Intel, Microsoft, Philips, Lucent, Nec, HP, Compaq) che nel 2000 definirono le specifiche della rev. 2.0, molti sono i costruttori di silicio che hanno contribuito a rendere commerciale la diffusione di questa potente interfaccia; giusto per citare i più famosi: Atmel, Microchip, Freescale, Silicon Labs, ST Microsystem, Texas Instruments, Cypress. Inoltre dall’Oriente si propongono ormai ogni giorno nuovi costruttori con soluzioni “do it yourself” complete di tutto il supporto software e firmware, c’è solo l’imbarazzo della scelta. Atmel realizza una vasta gamma di soluzioni basate sulla famiglia di microprocessori AVR da 8 a 32 bit, dei quali il capostipite è l’AT90USB. I tagli vanno da 8 Kb di flash e 32 pin di package (AT90USB82) fino a 128 Kb e 64 pin (AT90USB1286) dal costo di pochi euro per chip anche per piccoli quantitativi. Rimanendo in àmbito HID ovviamente non sarà necessario scomodare le potenti architetture a 32 bit oppure quelle ARM based. Atmel offre tutto il supporto necessario dallo starter kit STK526 all’ambiente di sviluppo AVR USB serie 2/4/6/7 opportunamente dimensionato per il tipo di applicazione e in funzione del microprocessore utilizzato. Sul portale di Atmel, nella sessione Small I/O device è possibile individuare il processore più adatto a ciascuna applicazione e il corredo di tools di sviluppo disponibile.

  • Freescale mette a disposizione dell’utenza in modo del tutto gratutito lo stack per lo sviluppo di applicazioni USB adatto per vari tipi di microprocessori: S08JM, MCF51JM V1 ColdFire, la release Lite USB Stack sviluppata da CMX in ambiente Una volta scaricato dal sito di Freescale viene inglobato senza alcuna difficoltà nel proprio applicativo e consente di aggiungere subito connettività USB al dispositivo desiderato. Lo stack consente il supporto per varie modalità di collegamento secondo una delle possibili scelte: General HID, Keyboard HID, Mouse HID, CDC device. Oppure, nella configurazione Host (riservata alla famiglia di processori Coldfire): HID Host, Host Mass Storage. Anche la scelta del microprocessore è molto vasta, la gamma varia dagli 8 bit della famiglia S08JM ai 32 della V1 Coldfire. Il più piccolo della famiglia è il processore MC9S08JM16, in contenitore LQFP44 pienamente compatibile con lo standard USB 2.0. Siccome però lo stack USB Lite è piuttosto ingombrante e data la lieve differenza di costo, conviene migrare su piattaforme leggermente superiori come: MC9S08JM32 oppure MC9S08JM60, entrambi membri della famiglia Flexis, equipaggiati tra l’altro con numerose periferiche e linee di I/O. Esiste una demo board per ogni famiglia di processori, come la DEMO9S08JM60LAB, corredata di decine di esempi di applicazione dello Stack USB Lite. La board dialoga senza necessità di installare alcun driver in ambiente Windows e Linux. Per quanto riguarda le applicazioni host based conviene affidarsi alla potenza dei 32 bit, ad esempio con il processore MCF51JM128 (core V1 Coldfire), al top della serie Flexis. Nella fascia bassa esistono vari tagli di memoria e dimensioni di package LQFP da 44 a 80 pin. La demo board EVB51JM128 ha un costo di 325 dollari ed è corredata della suite di sviluppo Code Warrior Development Studio che, insieme con lo Stack USB Lite della CMX, consente connettività USB host based, OTG (collegamenti tra scheda e scheda) e “device based”. Inoltre questa famiglia di processori incorpora tra le decine di periferiche previste sul chip anche un’interfaccia CAN.
  • Microchip è il produttore che prevede la più ampia scelta di microprocessori per applicazioni USB basate su varie dimensioni di memoria e architetture da 8 a 32 bit. In fascia bassa troviamo la famiglia PIC18Fxx, la più economica e conveniente da utilizzare per applicazioni low cost, con prezzi a partire da 1,32 dollari per il modello PIC18F13K50. Equipaggiato con soli 8 K di Flash, esso dispone di 20 pin e sono previsti vari contenitori DIP oppure SMD. Tutti i micro di questa famiglia hanno la porta USB pienamente compatibile con lo standard USB 2.0. Crescendo con la complessità dell’applicativo ci spostiamo sulle architetture a 16 bit della famiglia PIC24Fxx. Questa fascia di processori consente applicazioni USB full speed e OTG. Ovviamente aumentando le prestazioni e la capacità di memoria è necessario accollarsi un package più ingombrante e un costo adeguato ma pur sempre contenuto, se si pensa che una Flash da 256 Kbyte arriva a costare circa 5 dollari per quantitativi da produzione. Al top della gamma troviamo la serie a 32bit, individuata dal prefisso PIC32Mxx, indispensabile per applicazioni host based. Questi processori hanno velocità di elaborazione da 80 MIPS e sono equipaggiati con RAM fino a 32Kbytes e FLASH fino a 512 Kbytes. Oltre alle periferiche di servizio come I2C, SPI, UART, PWM, Timer, Capture input ecc., dispongono di almeno 16 linee di I/O specializzate per il Cap Sense, adatte quindi per applicazioni touch board, touch screen ecc. Tutti i dispositivi di questa famiglia sono alimentati da 2,2 a 3,6 V e funzionano su range industriale di temperatura da –40 a +85 °C. Il package per questi processori varia dal più piccolo QFN/64 al 100/TQFP, oppure 121/XBGA. I prezzi di questi mostri raramente superano 6 dollari cadauno per quantità industriali. Ovviamente Microchip Semiconductor dispone di tutti gli strumenti necessari per lo sviluppo di applicativi USB, demo board dedicate a ciascuna famiglia di prodotti, kit di sviluppo, compilatori C, software applicativo, librerie, esempi e altro. In particolare il pacchetto MCHPFSUSB Framework contiene tutto il necessario per interfacciare le famiglie PIC18/24/32x con l’ambiente PC, incluso lo stack dedicato al PIC32x per le applicazioni host based. Concludendo la rassegna dedicata a questo costruttore vale la pena di ricordare che anche Microchip dispone di una soluzione USB-UART bridge molto economica e funzionale. Si tratta del MCP2200, l’unico proposto dalla casa, che con i suoi 20 pin non manca di sorprendere per l’efficienza realizzata in termini di costo, prestazioni, ingombro, oltre a risultare compatibile con varie classi di applicazioni USB release 2.0. Gli strumenti di sviluppo disponibili per il chip consentono l’utilizzo in àmbito Linux e Windows.
  • Silicon Labs prevede nel suo scenario di proposte per applicazioni USB sia dispositivi bridge CP21xx sia processori a 8 bit (8051 based) con interfaccia USB Il caso dei processori bridge (USB to UART) merita di essere proposto essenzialmente per le ridotte dimensioni del package, il basso costo e l’immediatezza dell’applicazione. Il CP2101, che è il più piccolo della casa, ha un package di soli 5 x 5 mm QFN 28, si alimenta a 3,3 V oppure da USB (4-5 volt), supporta tutti segnali di handshaking verso la UART, il baud rate vada 300 a 921,6 Kbit; è completamente compatibile con USB 2.0. Il suo utilizzo in ambiente Linux, Windows o MacIntosh è immediato, potendosi collegare a una qualunque porta COM RS232. La gamma dei processori bridge proposta da Silicon Labs non si limita all’interfaccia UART-USB, infatti nel suo catalogo troviamo HID-UART, USBIR,USB-dual UART, HID-I2C ecc. Insomma davvero una soluzione per ogni esigenza. Inoltre i prodotti della casa sono utilizzabili senza alcun costo di licenza. I processori con connettività USB integrata appartengono alle famiglia 8051F3xx. Troviamo varie proposte con diversi equipaggiamenti di memoria, di periferiche e di package. Tutti i modelli sono conformi allo standard USB 2.0 full speed (12 Mpps) oppure low speed (1.5 Mpps), alimentati da 2,7 a 5,5 volt, hanno range di temperatura esteso da – 40 a +85 °C. La CPU è basata su core 8051 ad alta velocità (25 MIPS), un lontano parente ormai del famigerato 8051. Il package varia da 24 pin LQFP a 32 pin TQFP. Per applicazioni “cost sensitive” esiste una versione 8051T62x con memoria EPROM (programmabile una sola volta). Per tutti i modelli è prevista una board di sviluppo dedicata. Silicon Labs mette a disposizione dell’utenza il kit di sviluppo USBXpress comprendente tutto il necessario per lo sviluppo di applicativi host based oppure device based utilizzabile per un qualunque processore della famiglia con applicazioni in ambiente Windows, corredato di librerie, API, driver, esempi ecc. In ogni momento è possibile, previa registrazione al sito, contattare in lingua inglese il supporto tecnico composto da un team di esperti con skills su ciascun argomento.
  • Texas Instruments chiude in bellezza la nostra rassegna con una proposta molto vasta di dispositivi e periferiche USB conformi alla release 2.0 e 3.0. Il programma Texas include microprocessori da 16 a 32 bit con interfaccia USB full speed. Tra i più significativi: la famiglia MPS430 16 bit low cost, oppure i micro a 32 bit della famiglia Stellaris ARM based e infine TMS570 Cortex based da 180 MIPS, di costo non eccessivo considerate le grandi potenzialità offerte. Inoltre: USB Transceiver, USB peripheral, HUB controller, Host & OTG, Streaming e Audio device ecc. Non basterebbero le pagine di questa rivista per descrivere tutte le potenzialità di questi dispositivi, è sufficiente collegarsi al sito www.ti.com per rendersene conto. Ma il vero punto di forza della linea Texas Instruments consiste nel fortunato abbinamento dei processori di fascia bassa come l’MPS430 (low cost e basso consumo) alla vasta gamma di dispositivi wireless, per esempio: CC2560 (che consentono facilmente di realizzare la connettività tra USB e Bluetooth), oppure USB -ZigBee e/o altre WLAN. La do cumentazione tecnica a disposizione e la grande quantità di demo board, tools di sviluppo, starter kit, video informativi, esempi di codici, corsi on line rendono davvero appetibili i prodotti realizzati dalla casa, assicurando un rapido time to market.

Conclusioni

Quando non è indispensabile progettare soluzioni proprietarie e per non confondersi in uno scenario così vasto di proposte, conviene riferirsi a quanto si trova pronto in commercio. Molte sono infatti le schede elettroniche disponibili a catalogo che impiegano proprio i componenti presentati in questo articolo. Sono disponibili a basso costo e spedite a casa e consentono di sperimentare o risolvere problemi tecnici senza grande sforzo. È sufficiente digitare su un qualunque motore di ricerca il tema della nostra esigenza per veder comparire tra i fornitori: Farnell, Futurashop, Elettroshop, RS components ecc. La nostra rivista, come noto, intende rivolgersi a una gamma di lettori molto variegata che passa dallo sperimentatore al professionista, con l’intenzione di soddisfare le esigenze di ciascuno presentando articoli non eccessivamente tecnici, seppur rigorosi, e senza preclusioni né preferenze riguardo all’offerta commerciale dei vari produttori sul mercato.

Approfittane ora!

3 Commenti

  1. santelectronic santelectronic 28 Gennaio 2020
  2. giulioelettronica giulioelettronica 29 Gennaio 2020
  3. tattolilm tattolilm 9 Febbraio 2020

Scrivi un commento

Seguici anche sul tuo Social Network preferito!

Send this to a friend