Așa cum am făcut un dispozitiv USB

Undeva am citit odată că creatorii prima specificație USB destinat să facă standardul ușor de implementat în hardware-ul din cauza complexității software-ului. Astfel, scopul a fost de a reduce prețul și face producția de dispozitive USB este foarte accesibil. Acum putem spune că producătorul cip a făcut-o, dar într-adevăr este simplu de implementat în hardware standard? Mi-e teamă că răspunsul nu este evident.

Să presupunem că am nevoie pentru a face dispozitivul USB simplu. Care sunt opțiunile mele?

1. Folosind cip extern, de exemplu, convertoare USB la serial. Eu, folosesc un port serial poate fi totul. firma FTDI produce astfel de chips-uri. Acest FT232R USB-UART și FT245R USB-FIFO. Utilizarea acestor cipuri face ca dezvoltarea dispozitivului este foarte simplu, dar ușor crește costul.

2. Utilizarea de microcontrolere cu interfață USB încorporată. O astfel de cip produce, cum ar fi Atmel (de exemplu cip AT90USB82). O soluție bună necesită cunoștințe de set de instrucțiuni AVR și, în general, AVR microprocesor.

3. Utilizarea microcontrolerul AVR cu emulare software-ul de interfață USB. Acest celebru bibliotecă V-USB.

Trebuie remarcat faptul că alegerea oricare dintre aceste trei moduri prin care simplifica foarte mult viața ta și să rămână de fapt, în întuneric: „Este greu de implementat USB de fier“

Aici, în conformitate cu punerea în aplicare a „de fier“, mă refer la cel mai scăzut nivel de proiectare - circuite.

Am vrut să verifica posibilitatea realizvatsii USB în „acasă“. Cazul sa dovedit prost nu este ușor, dar sa dovedit!

Pentru realizarea ei, am luat placa USB Rover cu FPGA Altera EPM240T100C5 (240 elemente logice). schema ei aici.
v9 Mediu de dezvoltare Altera Cvart II.

Ele au fost scrise în Verilog: o unitate receptor și transmițător. core USB - modul de a decide când și ce să trimită. Toate pachetele și etichetele au fost plasate în internă flash cip de memorie CPLD.

Pentru aparatul am luat idVendor = 0x9FB Altera (sper că mă vor ierta?) Și idProduct = 0x60A5 (de tavan).

Driver pentru Windows nu am scris - luat de la un set de Microsoft Windows Driver Developer Kit exemplu driverul BULKUSB.SYS și pur și simplu compila. Dar fișierul INF a trebuit să schimbe - să indice ID-ul său furnizor și ID-ul de produs.

Programul de a lucra cu dispozitivul, desigur, a trebuit să scrie.

Toate codul sursă, drivere și CPLD proiect pot fi găsite aici.

Un total de dispozitivul meu simplu luate în chip de 215 elemente de logica CPLD.

Desigur, eu nu sunt prea urmat standardul USB - nu am făcut-o sumă de control de pachete recepționate sau de verificare a parității de comutare. Cu toate acestea, testele au arătat destul de funcționare stabilă a dispozitivului pentru o lungă perioadă de timp.

Mai multe informații se află pe site-ul taxa Rover.

Acest lucru este interesant:

articole similare