Crearea unei aplicații

Acest capitol descrie structura software a componentei USB Host și explică utilizarea acesteia pentru crearea unei aplicații USB Host. Această componentă software este disponibilă numai pentru utilizatorii MDK-Professional.

Componenta USB Host simplifică dezvoltarea software a sistemelor de microcontrolere care permit conectarea dispozitivelor USB. Atributele componentei USB Host sunt:

  • Corespunde specificației USB 2.0.
  • Suport pentru HID, MSC, CDC și clase de dispozitive USB personalizate care pot fi conectate la USB Host.
  • Suport pentru tipurile de transfer de control, de întrerupere și de transfer în masă.

Componente RTE

În imaginea următoare sunt prezentate relațiile dintre componentele RTE și perifericul USB Host al microcontrolerului (controler USB). Componentele RTE furnizează fișiere de configurare și șabloane de cod utilizator. Fișierele de configurare configurează componentele RTE, interfețele hardware, resursele de memorie și parametrii USB Host. Șabloanele de cod utilizator furnizează scheletul pentru implementarea suportului pentru diferite clase de dispozitive USB.

usb_host_blocks_config_files.png

Structura Host USB

Pasii pentru a crea o aplicație de microcontroler care funcționează ca o gazdă USB sunt:

  1. Selectați componentele RTE care sunt necesare pentru aplicația dumneavoastră.
  2. Activați și configurați driverul USB Host.
  3. Configurați USB Host care conectează USB Middleware la perifericul USB al microcontrolerului.
  4. Configurați resursele sistemului în conformitate cu cerințele de resurse ale componentei USB Host.
  5. Configurați parametrii dispozitivelor USB atașate.
  6. Implementați codul aplicației folosind șabloanele de cod care sunt furnizate pentru a suporta diferite clase de dispozitive USB.
  7. Depanați-vă aplicația folosind mecanismele încorporate ale componentei USB.

Selectarea componentei RTE

Selectarea componentei RTE se face în câțiva pași:

  1. Din componenta USB:
    • Selectați USB:CORE care oferă funcționalitatea de bază necesară pentru comunicarea USB.
    • Setați USB:Host la ‘1’. Acest lucru creează o gazdă USB pentru comunicarea cu dispozitivele USB atașate.
    • Selectați suportul dorit pentru clasele USB (HID/MSC/CDC/Classe personalizate). De exemplu, selectați USB:Host:HID pentru a suporta numai dispozitive din clasa HID.
  2. Din componenta Drivers (Drivere):
    • Selectați un driver USB Host adecvat pentru aplicația dumneavoastră.
  3. Din componenta Device (Dispozitiv):
    • Pot fi necesare drivere suplimentare specifice dispozitivului în funcție de rezultatul validării.
  4. Din componenta CMSIS:
    • Selectați CMSIS:CORE pentru a furniza interfața de bază cu procesorul.
    • Selectați un CMSIS:RTOS sau CMSIS:RTOS2 adecvat care este necesar pentru aplicație.

USBH_RTE.png

Selecția componentelor RTE

Driver și controler USB

Primarul gazdă USB și controlerul USB al microcontrolerului trebuie să fie configurate corect. În special, acest lucru înseamnă:

  • Primarul gazdă USB selectat în cadrul componentei Drivers este de obicei configurat cu fișierul de configurare RTE_Device.h. Deși acest fișier oferă mai multe opțiuni, este de obicei suficient pentru a activa perifericul USB Host legat de acest driver. Unele microcontrolere pot necesita setări care se referă la o interfață a stratului fizic (PHY), la alimentarea USB VBUS și la protecția la supracurent.
  • Controlerul USB al microcontrolerului are nevoie, de obicei, de setări specifice ale ceasului. Consultați ghidul de utilizare al microcontrolerului pentru a înțelege cerințele. Alternativ, puteți copia configurația unui exemplu de gazdă USB care este furnizat pentru diverse plăci de evaluare.

Configurație gazdă USB

Fileul USBH_Config_n.c conține setări suplimentare pentru gazda USB specifică:

  • Numărul driverului este setat în funcție de controlerul USB selectat. Pentru controllerele cu un singur dispozitiv USB, acesta va fi ‘0’.
  • Câteva microcontrolere pot utiliza diferite interfețe hardware ale controllerelor. Consultați ghidul de utilizare al microcontrolerului selectat pentru a alege setarea corectă.

Referiți-vă la Configuration pentru o listă detaliată a tuturor setărilor disponibile.

System Resource Configuration

Pentru o funcționare corectă, Componenta gazdă USB necesită anumite setări de configurare a sistemului. Cerințele sunt:

  • Dimensiunea suplimentară a stivei de 512 octeți. Aceasta poate fi configurată în fișierul dispozitivului (Stack_Size).
  • Componenta dispozitivului USB utilizează fire CMSIS-RTOS. În cazul în care se utilizează RTX v5, nu este necesară nicio modificare a setărilor RTX, deoarece toate resursele sunt alocate static. În cazul în care se utilizează RTX v4, trebuie să modificați următoarele setări din fișier:
    • Creșteți numărul de fire utilizator care rulează simultan cu numărul de fire necesare de către gazda USB
    • Creșteți numărul de fire cu utilizator-.furnizate de dimensiunea stivei cu numărul de fire de execuție necesare de către gazda USB
    • Creșteți dimensiunea totală a stivei pentru fire de execuție cu dimensiunea stivei furnizate de utilizator cu dimensiunea firelor de execuție necesare de către gazda USB
    • Activați cronometrele utilizatorului

Pentru mai multe informații, consultați secțiunea privind cerințele de resurse ale componentei USB Host.

Configurarea dispozitivelor USB atașabile

În secțiunile USBH_Config_HID.h, USBH_Config_MSC.h, USBH_Config_CDC.h sau USBH_Config_CustomClass.h puteți specifica numărul de dispozitive USB concurente pe care le va suporta gazda USB. Acest lucru are un impact asupra cantității de memorie care va fi rezervată în aplicația dumneavoastră pentru atașarea dispozitivelor USB. Exemplele arată cum se configurează o gazdă USB pentru a interacționa cu diferite dispozitive periferice HID, MSC sau CDC.

Fișierele de implementare a codului de utilizator

oferă șabloane de funcții pentru a suporta diferite clase de dispozitive USB pe gazda USB. Funcțiile disponibile sunt explicate în secțiunea de referință a componentei USB Host. Aceste rutine pot fi adaptate la nevoile aplicației microcontrolerului, în cazul în care este necesară o funcționalitate diferită de cea implicită.

Sunt disponibile următoarele șabloane pentru componenta USB Host:

Numele șablonului Scop
USBH_MSC.c Funcții necesare pentru a susține dispozitivele MSC. Șablonul poate fi găsit aici.
USBH_PL2303.c Funcții necesare pentru a susține adaptorul Prolific PL2303 USB la serial RS232. Șablonul poate fi găsit aici.
USBH_User_CustomClass.c Funcții necesare pentru a susține orice clasă de dispozitiv USB. Șablonul poate fi găsit aici.

Depanare

USB Host Component este distribuit sub formă de bibliotecă și nu permite depanarea directă a codului său. Cu toate acestea, poate fi configurat cu ușurință pentru a genera evenimente de depanare și pentru a oferi vizibilitate dinamică asupra funcționării componentei.

Se pot selecta următoarele variante pentru componenta software USB:CORE în fereastra Manage Run-Time Environment:

  • Debug: această variantă suportă adnotări de evenimente pentru și facilitează foarte mult analiza funcționării interne a componentei gazdă USB în timpul depanării aplicației. Event Recorder Support de mai jos explică modul de configurare și utilizare a acestei variante.
  • Release: această variantă nu include cod suplimentar de depanare. Utilizați această variantă atunci când implementați aplicația.

Figura de mai jos arată selectarea variantei Debug.

usbh_debug_variant.png

Evenimentele USB Host:Debug descriu evenimentele implementate în componenta USB Device Component.

Event Recorder Support

este un instrument puternic care oferă vizibilitate la execuția dinamică a programului.

Componenta USB Host generează un set larg de evenimente de depanare pentru Event Recorder și implementează infrastructura necesară pentru interfațarea cu acesta.

Pentru a utiliza Event Recorder este necesară crearea unei imagini cu suport pentru generarea de evenimente. Pașii necesari sunt:

  1. : în dialogul de gestionare RTE selectați varianta Debug pentru componenta software USB:CORE.
  2. : în dialogul de gestionare RTE activați componenta software Compiler:Event Recorder.
  3. Asigurați-vă că Event Recorder este inițializat de preferință prin dacă se utilizează CMSIS-RTOS2 RTX v5, sau, alternativ, prin apelarea funcției din codul aplicației.
  4. Event Recorder Configuration: dacă este necesar, ajustați configurația implicită a Event Recorder.
  5. Construiți codul aplicației, descărcați-l pe hardware-ul țintă și începeți sesiunea de depanare.

Acum, când gazda USB generează informații despre evenimente, acestea pot fi vizualizate în .

Event Recorder Configuration

Această secțiune descrie setările de configurare pentru Event Recorder. Utilizarea necesită varianta de depanare a componentei software USB:CORE; consultați Event Recorder Support pentru mai multe informații.

USB Event Generation Configuration

Selectarea variantei de depanare USB:CORE va adăuga fișierul USB_Debug.c la proiectul dumneavoastră. Utilizați acest fișier pentru a seta separat configurația de generare a evenimentelor pentru nucleul USB, driverele și clasele de dispozitive. Fișierul este disponibil pentru componentele USB Device și Host.

USBH_USB_Debug_c.png

USB_Debug.c fișier pentru configurarea generării de evenimente

Următoarele setări sunt disponibile pentru configurarea generării de evenimente pentru fiecare modul:

  • Off înseamnă că modulul nu va genera niciun eveniment
  • Errors înseamnă că modulul va genera numai evenimente de eroare
  • Errors + API înseamnă că modulul va genera evenimente de eroare și de apel API
  • All înseamnă că modulul va genera toate evenimentele disponibile. Pe lângă evenimentele de eroare și de apel API, acesta conține evenimente de operare și evenimente detaliate.

Event IDs

Componenta USB Host utilizează următoarele ID-uri de eveniment:

Componenta Event ID
USBH_Core 0xB0
USBH_Driver 0xB1
USBH_CC 0xB2
USBH_CDC 0xB3
USBH_HID 0xB4
USBH_MSC 0xB5