Quando l’Usb è integrato nel micro

L’Usb ha fatto il grande salto dal consumer bus system al mondo industriale. La semplice disponibilità delle periferiche Usb, come le memory stick, e la quasi sostituzione delle interfacce seriali e parallele dei Pc con l’Usb, rendono questo sistema di bus interessante per le applicazioni più disparate. Con l’utilizzo di memory stick economiche gli strumenti di misura raggiungono capacità di memorizzazione quasi illimitate. Questo supporto di memoria facilita la successiva elaborazione dei dati che si presentano come file leggibili su Pc. Ma le memory stick Usb offrono molte altre possibilità di utilizzo. Ad esempio, usando una memory stick al posto di una connessione al Pc con apposito software flash, l’aggiornamento del firmware dei vari dispositivi, dalle unità di controllo industriali ai distributori automatici, diventa molto più semplice e meno soggetta ad errori. La macchina si aggiorna praticamente da sola, legge il nuovo firmware dalla memory stick e programma la sua memoria flash. Il tecnico che effettua l’aggiornamento non deve far altro che inserire la memory stick, avviare l’update e, al termine, riavviare la macchina. Con un’interfaccia Usb di questo tipo (in questo caso, host o minihost) è possibile svolgere altre operazioni, ma occorre convertire all’Usb la tastiera, il mouse o altri dispositivi di immissione eventualmente utilizzati. Grazie alla compatibilità Usb l’acquisto di questi componenti è garantito per i prossimi anni. Per realizzare un dispositivo di questo tipo bisogna ricorrere a un microcontrollore che metta a disposizione l’interfaccia Usb Host come unità integrata.
Un altro tipo di applicazione, non meno importante, prevede di connettere direttamente al Pc la periferica; in questo caso è uno strumento di misura che viene usato, ad esempio, per operazioni di controllo o l’impostazione dei parametri o per visualizzare sotto forma di grafico i risultati della misurazione direttamente su Pc. In questi casi l’Usb sta sempre più sostituendo le interfacce seriali (porta Com) o parallele (porta Lpt) precedentemente utilizzate. Questo aumenta da un lato la velocità di trasferimento dei dati (con vantaggi per l’applicazione stessa) e, dall’altro, supplisce al fatto che molti Pc non sono più dotati dell’interfaccia Com. Di seguito sono descritte alcune possibili applicazioni di una connessione Usb. In questi esempi l’interfaccia Usb è integrata nel microcontrollore principale e il dispositivo è l’MB91F662 a 32 bit di Fujitsu.

Utilizzo della periferica Usb
con host standard integrato

Per poter utilizzare componenti Usb come le memory stick o la stampante, il microcontrollore deve disporre di un host o di un host embedded (definito anche minihost). Il minihost è un host limitato in grado di controllare un solo dispositivo Usb, essendo privo della funzione Hub; quindi non è sufficiente nei casi in cui la Mcu deve controllare due o più dispositivi Usb contemporaneamente. Lo stesso vale per l’Usb Otg. Per l’host integrato servono software driver (Host Controller Driver) e uno stack Usb Host. Su questi moduli software viene installato il driver che supporta il dispositivo Usb da controllare. Per poter comandare una memory stick occorre il cosiddetto Usb Mass Storage Class Driver e un file system. Per far funzionare un mouse o una tastiera, serve un driver della cosiddetta classe Hid.

La connessione al Pc
Molti dispositivi richiedono la connessione a un Pc che può essere temporanea, ad esempio per effettuare una configurazione, o permanente, se il Pc viene usato per operazioni di controllo o visualizzazione. Normalmente si ricorre all’interfaccia seriale (porta Com), ma nei Pc moderni questa non è più considerata uno standard. Le porte Usb invece si trovano ovunque. Una volta installata l’interfaccia Usb, il microcontrollore usato nell’applicazione deve avere nell’hardware almeno un’interfaccia Usb Device per poter essere connesso al Pc. Sul lato software Mcu occorrono i driver per controllare tale interfaccia (Usb Device Controller Driver) e sopra si installa lo stack Usb Device. In base al tipo di Usb Device che deve farsi riconoscere dal Pc, sono necessarie le relative funzioni software. Ad esempio, per aggiornare a Usb un’applicazione che ha sempre comunicato con il Pc tramite l’interfaccia seriale, si può ricorrere a una porta Com virtuale. A questo scopo il software Mcu deve installare sull’Usb Device Controller Driver anche un Usb Serial/Cdc Function Driver. Per quanto riguarda il Pc non occorre apportare alcuna modifica al software esistente; serve solo un driver per una porta Com virtuale attraverso la quale l’applicazione su Pc comunica con il microcontrollore. La connessione Usb diventa così quasi trasparente per l’applicazione. In molte applicazioni può essere utile far comparire come memory stick il dispositivo da collegare al Pc tramite Usb. Ad esempio, lo strumento di misura che viene dotato di questa funzionalità viene riconosciuto dal Pc come unità esterna, il che consente di offrire i dati raccolti direttamente in forma di file. Con l’uso delle classi standard sopra citate (ad esempio mass storage) si ha il vantaggio di non dover mettere a disposizione driver speciali per il Pc perché vengono già forniti dagli attuali sistemi operativi (Windows, Linux, MacOS). Se il microcontrollore dispone già di una funzione Usb Device, è consigliabile utilizzarla anche per programmare direttamente la memoria flash integrata.

Realizzazione con il microcontrollore a 32 bit di Fujitsu
Per realizzare le connessioni Usb sopra descritte con un microcontrollore, questo deve avere sia la funzionalità Usb Host che la funzionalità Usb Device. La nuova serie di Mcu a 32 bit di Fujitsu, basata sul nuovo Cpu core a 32 bit denominato FR80S/T2, soddisfa pienamente queste esigenze. La derivata MB91F662 usata nello starter kit ha un package da 120 pin, opera fino a 33 MHz (prodotti da un PLL integrato), ha una memoria flash di 512 kbyte e una Ram di 48 kbyte che, in base alle necessità, possono essere ampliate tramite un bus esterno. Il microcontrollore ha sia l’Usb Device che l’interfaccia host. Tutti i microcontrollore Usb a 16 e 32 bit di Fujitsu hanno un host in implementazione completa. L’interfaccia definita in precedenza minihost è attivata come host e supporta la funzione Hub (può controllare più periferiche Usb mediante un hub). Inoltre viene supportato anche lo scambio di dati isocrono. Oltre alla funzionalità Usb, l’MB91F662 ha pronti 12 canali per interfacce di comunicazione seriali, configurabili di volta in volta come Usart, SIO o I2C. Un convertitore A/D a 10 bit veloce con un tempo di conversione di soli 1,2 µs e 24 ingressi, nonché un convertitore D/A a 8 bit a 3 canali creano la connessione con il mondo analogico. Per il timer Fujitsu punta sul cosiddetto base timer che si basa su timer a 16 bit e può essere configurato come Pwc, Pwm e reload timer; questa unità si trova 16 volte sul chip. Altri timer (ad esempio up/down timer e reload timer) e 26 porte I/O “5V-tolerant” completano le caratteristiche del controller e dimostrano chiaramente l’impegno di Fujitsu verso le applicazioni industriali.

Un approccio facile all’Usb
Per avere un approccio semplice all’Usb con l’ausilio dell’MB91F662, Fujitsu ha creato uno speciale starter kit, l’SK-FR80-120PMC-Usb che, oltre alla Mcu, mette a disposizione altri componenti per consentire di sviluppare direttamente applicazioni semplici. È dotato, ad esempio, di un sensore di umidità, vari tasti, un potenziometro, due display a 7 segmenti e un buzzer. Inoltre Fujitsu ha incluso una memoria Fram con connessione SPI del tipo MB85RS256. Il pacchetto comprende anche una versione di valutazione di Softune Workbench, l’ambiente di sviluppo basato su Windows con C compiler e monitor debugger; questo consente di effettuare direttamente il debug di un’applicazione sviluppata con lo starter kit. Per facilitare l’approccio all’Usb, vengono fornite una Api Usb completa per la funzione e l’host; sviluppati in collaborazione con Thesycon, sono disponibili gratuitamente. Come applicazione demo per la funzionalità Usb Host è disponibile un software per il controllo di una memory stick con mass storage class e file system. Per dimostrare la funzione della derivata Usb è disponibile un software demo che consente di utilizzare lo starter kit come mouse Usb di un Pc, mediante tastiera e reostato a cursore viene simulato un mouse che viene riconosciuto dal Pc come dispositivo standard.
La classe HID necessaria è inclusa nel package. Tutti questi esempi si trovano nel codice sorgente e possono essere riutilizzati per le proprie applicazioni. Per l’MB91F662 Fujitsu offre anche i componenti software necessari per creare un’interfaccia Com virtuale. Inoltre è in corso di preparazione un boot loader Usb (già disponibile per le Mcu a 16 bit) grazie al quale la Mcu carica il nuovo firmware da una memory stick e riprogramma la memoria flash (fino al settore del boot loader). Per programmare la memoria flash dell’MB91F662 si possono utilizzare diverse interfacce; la seriale è quella standard. Ma con un apposito software per Pc è anche possibile eseguire la programmazione direttamente con l’Usb.

VIP / PID propri?
Nel caso in cui l’MB91F662 venga utilizzato in una periferica che successivamente viene collegata a un Pc mediato Usb, si pone il problema del modo in cui il dispositivo debba presentarsi al Pc. La funzione viene impostata con la classe Usb utilizzata (ad esempio mouse Hid), ma sono necessari anche i dati relativi al produttore e al tipo di dispositivo. Tali informazioni vengono trasmesse con il Vid (Vendor ID, 16 bit) e il Pid (Product ID, 16 bit). Dovendo essere univoci, il Vid e il Pid vengono assegnati esclusivamente dall’Usb Implementers Forum (Usb.org). Per i prototipi e i prodotti in piccole serie è tuttavia possibile, dietro richiesta, utilizzare il Vid di Fujitsu per cui l’azienda mette a disposizione un’apposita sublicenza e un Pid univoco.

LASCIA UN COMMENTO

Inserisci il tuo commento
Inserisci il tuo nome