PDA

View Full Version : Trasferimento dati USB da microcontrollore


Francoo
04-01-2012, 12:14
Salve a tutti,
possiedo una scheda XC-1A (http://www.xmos.com/products/development-kits/xc-1a-development-kit). Ho bisogno di scrivere un software per il microcontrollore che invia i dati sulla USB con protocollo bulk o isochronous. Sul sito del produttore mette a disposizione delle librerie.. ma il loro utilizzo non p molto chiaro!!

Volevo sapere se qualcuno sa dove posso reperire qualche esempio (anche per altri device) in C,C++ su come programmare un microcontroolore per inviare i dati sulla USB.
O quantomeno uno schema a blocchi dei passi che bisogna eseguire... che librerie usare.. come usarle...:muro: :muro: :muro:

Inoltre mi servirebbe anche un tutorial per quanto riguarda il lato HOST. Ovvero come faccio a scrivere un programma (ad esempio in C++ o VB) che mi legge questi dati??

Non esiste qualche libro fatto bene? Ho preso dalla biblioteca USB Complete, ma è molto lungo, discorsivo... e manca di esempio concreti!!

marco.r
04-01-2012, 13:16
Di solito le schede per microcontrollore non controllano direttamente l'USB. Piuttosto ti trovi a bordo un convertitore seriale-USB. Da lato mc la vedi come una regolare seriale e quindi basta che guardi come scrivere sulla seriale, da lato pc installi un driver e anche li' poi la vedi come seriale.
Dando una occhiata alla documentazione https://www.xmos.com/download/public/XC-1A-Tutorial(10.4-[Y-M]).pdf. sembra che sia effettivamente cosi'. Al paragrafo 4 spiega appunto come comunicare con l'host...

Francoo
04-01-2012, 13:47
Si si.. quello l'ho visto e testato!! Però quello è un banale trasferimento dati seriale!!
Per ottenere un trasferimento dati ad alta velocità ho realizzato un ULPI transceiver
(come descritto qua https://www.xmos.com/download/public/XMOS-USB-Device-Layer-Library-Guide(1.0).pdf?support=1 pagina 2) e l'ho attaccato alla scheda.

Ho testato anche il programma di esempio riportato nella guida e funziona perfettamente!!
Il programma muove il mouse sul perimetro di un rettangolo quando il dispositivo è attaccato al PC.

Il problema è che la guida è da parte mia poco comprensibile. Ho provato a leggere i vari documenti sui protocolli USB
che si trovano in interbnet ma nessuno spiega in modo pratico.... con esempi etc...

Io avrei bisogno di un esempio come quello riportato alla fine della guida ma che utilizzi un trasferimento di tipo bulk o isocrhonous....

ripeto anche uno schema a blocchi generale...