Tässä luvussa kuvataan USB Host -komponentin ohjelmistorakenne ja selitetään sen käyttö USB Host -sovelluksen luomiseen. Tämä ohjelmistokomponentti on vain MDK-Professionalin käyttäjien käytettävissä.
USB Host -komponentti yksinkertaistaa sellaisten mikrokontrollerijärjestelmien ohjelmistokehitystä, joihin voidaan liittää USB-laitteita. USB Host Componentin ominaisuudet ovat:
- Toteaa USB 2.0 -spesifikaation.
- Tuki HID-, MSC-, CDC- ja Custom USB Device Classes -luokille, jotka voidaan liittää USB Hostiin.
- Tuki ohjaus-, keskeytys- ja massasiirtotyypeille.
RTE-komponentit
Seuraavassa kuvassa on esitetty RTE-komponenttien suhteet mikrokontrollerin USB-isäntäperiferiaan (USB-ohjain). RTE-komponentit tarjoavat konfiguraatiotiedostoja ja käyttäjäkoodin malleja. Konfiguraatiotiedostoissa konfiguroidaan RTE-komponentit, laitteistorajapinnat, muistiresurssit ja USB Host -parametrit. Käyttäjäkoodimallit tarjoavat luurangon eri USB-laiteluokkien tuen toteuttamiseen.
Vaiheet USB Hostina toimivan mikrokontrollerisovelluksen luomiseksi ovat seuraavat:
- Valitse sovelluksessasi tarvittavat RTE-komponentit.
- Ota käyttöön ja määritä USB-isäntäajuri.
- Konfiguroi USB-isäntä, joka yhdistää USB-väliohjelmiston mikrokontrollerin USB-oheislaitteeseen.
- Konfiguroi järjestelmän resurssit USB-isäntäkomponentin resurssivaatimusten mukaisesti.
- Konfiguroi liitettyjen USB-laitteiden parametrit.
- Toteuta sovelluskoodi käyttämällä koodimalleja, jotka tarjotaan tukemaan eri USB-laiteluokkia.
- Debuggaa sovelluksesi käyttämällä USB-komponentin sisäänrakennettuja mekanismeja.
RTE-komponentin valinta
RTE-komponentin valinta tapahtuu muutamassa vaiheessa:
- USB-komponentista:
- Valitse USB:CORE, joka tarjoaa USB-kommunikaatioon vaadittavan perustoiminnallisuuden.
- Säädä USB:Host arvoksi ’1’. Tämä luo yhden USB-isäntäkoneen kommunikointia varten liitettyjen USB-laitteiden kanssa.
- Valitse haluttu tuki USB-luokille (HID/MSC/CDC/Custom Class). Valitse esimerkiksi USB:Host:HID, jos haluat tukea vain HID-luokan laitteita.
- Ajurit-komponentista:
- Valitse sovellukseesi sopiva USB-isäntäajuri.
- Laitekomponentista:
- Lisälaitekohtaisia laiteajureita saatetaan tarvita validointituloksen mukaan.
- CMSIS-komponentista:
- Valitse CMSIS:CORE, joka tarjoaa ydinrajapinnan prosessoriin.
- Valitse sopiva CMSIS:RTOS tai CMSIS:RTOS2, jota sovellus edellyttää.
USB-ohjain ja -ohjain
Mikrokontrollerin USB-isäntäohjain ja USB-ohjain on konfiguroitava oikein. Tämä tarkoittaa erityisesti seuraavaa:
- Ajurikomponentissa valittu USB-isäntäajuri on yleensä konfiguroitu RTE_Device.h-konfigurointitiedoston avulla. Vaikka tässä tiedostossa on useita vaihtoehtoja, yleensä riittää, että kyseiseen ohjaimeen liittyvä USB Host -oheislaite otetaan käyttöön. Jotkin mikrokontrollerit saattavat vaatia asetuksia, jotka liittyvät fyysisen kerroksen rajapintaan (PHY), USB VBUS -virtaan ja ylivirtasuojaukseen.
- Mikrokontrollerin USB-ohjain tarvitsee tyypillisesti erityisiä kelloasetuksia. Tutustu mikrokontrollerin käyttöoppaaseen vaatimusten ymmärtämiseksi. Vaihtoehtoisesti voit kopioida USB Host -esimerkin asetukset, jotka on toimitettu eri evaluointilevyille.
USB Hostin konfigurointi
Tiedosto USBH_Config_n.c sisältää lisäasetukset tietylle USB Hostille:
- Ajurin numero asetetaan valitun USB-ohjaimen mukaan. Yksittäisille USB-laiteohjaimille se on ’0’.
- Jotkut mikrokontrollerit voivat käyttää erilaisia laitteisto-ohjainrajapintoja. Tutustu valitun mikrokontrollerin käyttöoppaaseen oikean asetuksen valitsemiseksi.
Kohdassa Configuration (Konfigurointi) on yksityiskohtainen luettelo kaikista käytettävissä olevista asetuksista.
System Resource Configuration (Järjestelmäresurssien konfigurointi)
Kunnollinen toiminta edellyttää, että USB-isäntäkomponentti vaatii joitakin järjestelmän konfigurointiasetuksia. Vaatimukset ovat:
- Lisäpinon koko 512 tavua. Tämä voidaan määrittää laitteen tiedostossa (
Stack_Size
). - USB-laitekomponentti käyttää CMSIS-RTOS-säikeitä. Jos käytetään RTX v5:tä, RTX-asetuksiin ei tarvitse tehdä muutoksia, koska kaikki resurssit varataan staattisesti. Jos käytetään RTX v4:ää, sinun on muutettava seuraavia asetuksia tiedostossa:
- Lisää yhtäaikaisten käynnissä olevien käyttäjäketjujen määrää USB-isäntäkoneen tarvitsemien ketjujen määrällä
- Lisää käyttäjäketjujen lukumäärää.provided stack size by number of threads required by USB Host
- Increase Total stack size for threads with user-provided stack size by size of threads required by USB Host
- Enable User Timers
Lisätietoja, tarkista USB Host -komponentin Resurssivaatimukset-osiosta.
Liitettävien USB-laitteiden konfigurointi
Komponenteissa USBH_Config_HID.h, USBH_Config_MSC.h, USBH_Config_CDC.h tai USBH_Config_CustomClass.h voit määrittää USB Hostin tukemien samanaikaisten USB-laitteiden määrän. Tämä vaikuttaa muistin määrään, joka varataan sovelluksessasi USB-laitteiden liittämistä varten. Esimerkeissä näytetään, miten USB-isäntä konfiguroidaan toimimaan vuorovaikutuksessa erilaisten HID-, MSC- tai CDC-oheislaitteiden kanssa.
Käyttäjäkoodin toteutus
-tiedostot tarjoavat toimintomalleja, joilla tuetaan USB-isännän eri USB-laiteluokkia. Käytettävissä olevat toiminnot on selitetty USB Host -komponentin Reference-osiossa. Näitä rutiineja voidaan mukauttaa mikrokontrollerisovelluksen tarpeisiin, jos tarvitaan oletustoiminnoista poikkeavia toimintoja.
USB-Host-komponenttiin on saatavilla seuraavat mallit:
Mallin nimi | Tarkoitus |
---|---|
USBH_MSC.c | Tarvittavat toiminnot MSC-laitteiden tukemiseksi. Malli löytyy täältä. |
USBH_PL2303.c | Tarvittavat toiminnot Prolific PL2303 USB-sarja- RS232-sovittimen tukemiseen. Malli löytyy täältä. |
USBH_User_CustomClass.c | Tarvittavat funktiot minkä tahansa USB-laiteluokan tukemiseen. Malli löytyy täältä. |
Debuggaus
USB Host-komponentti jaetaan kirjastomuodossa eikä salli sen suoraa koodin debuggausta. Se voidaan kuitenkin helposti konfiguroida tuottamaan virheenkorjaustapahtumia ja tarjoamaan dynaaminen näkyvyys komponentin toimintaan.
Seuraavat variantit voidaan valita USB:CORE-ohjelmistokomponentille Manage Run-Time Environment -ikkunassa:
- Debug: tämä variantti tukee tapahtumamerkintöjä ja tekee USB Host Componentin sisäisen toiminnan analysoinnista erittäin helppoa sovelluksen virheenkorjauksen aikana. Tapahtumatallennustuki alla selittää, miten tämä variantti määritetään ja käytetään.
- Release: Tämä variantti ei sisällä ylimääräistä debuggauskoodia. Käytä tätä muunnelmaa, kun sovellus otetaan käyttöön.
Alla olevassa kuvassa näytetään Debug-vaihtoehdon valinta.
Kohdassa USB Host:Debug Events kuvataan USB Device Component -komponentissa toteutetut tapahtumat.
Event Recorder Support
on tehokas työkalu, joka antaa näkyvyyttä ohjelman dynaamiseen suoritukseen.
USB-host-komponentti tuottaa laajan joukon vianmääritystapahtumia tapahtumatallenninta varten ja toteuttaa tarvittavan infrastruktuurin rajapinnan sen kanssa.
Tapahtumatallentimen käyttämiseksi on luotava kuva, jossa on tapahtumien tuottamisen tuki. Tarvittavat vaiheet ovat:
- : valitse RTE-hallintaikkunassa USB:CORE-ohjelmistokomponentin Debug-variantti.
- : ota RTE-hallintaikkunassa käyttöön ohjelmistokomponentti Compiler:Event Recorder.
- Varmistu siitä, että Event Recorder alustetaan mieluiten, jos käytetään CMSIS-RTOS2 RTX v5:tä, tai vaihtoehtoisesti kutsumalla funktiota sovelluskoodissa.
- Tapahtumatallentimen konfigurointi: Säädä tarvittaessa tapahtumatallentimen oletuskonfiguraatiota.
- Kehitä sovelluskoodi, lataa se kohdelaitteistoon ja käynnistä debug-istunto.
Nyt kun USB-ohjain tuottaa tapahtumatietoja, niitä voidaan tarkastella.
Tapahtumatallentimen konfigurointi
Luvussa kuvataan Tapahtumatallentimen konfigurointiasetukset. Käyttö edellyttää USB:CORE-ohjelmistokomponentin debug-muunnosta; katso lisätietoja kohdasta Tapahtumatallentimen tuki.
USB-tapahtumien tuottamisen konfigurointi
Valitsemalla USB:CORE:n debug-muunnos lisätään tiedosto USB_Debug.c
projektiin. Tämän tiedoston avulla voit määrittää tapahtumien tuottamisen konfiguraation USB-ytimelle, ajureille ja laiteluokille erikseen. Tiedosto on käytettävissä USB Device- ja Host-komponenteille.
Seuraavat asetukset ovat käytettävissä kunkin moduulin tapahtumien tuottamisen konfigurointia varten:
- Pois päältä tarkoittaa, että moduuli ei tuota mitään tapahtumia
- Virheet tarkoittaa, että moduuli tuottaa vain virhetapahtumia
- Virheet + API tarkoittaa, että moduuli tuottaa virhe- ja API-kutsutapahtumia
- Kaikki tarkoittaa, että moduuli tuottaa kaikki käytettävissä olevat tapahtumat. Virhe- ja API-kutsutapahtumien lisäksi tämä sisältää toiminta- ja yksityiskohtaiset tapahtumat.
Tapahtumatunnukset
USB-isäntäkomponentti käyttää seuraavia tapahtumatunnuksia:
Komponentti | Tapahtuman ID |
---|---|
USBH_Core | 0xB0 |
USBH_Driver | 0xB1 |
USBH_CC. | 0xB2 |
USBH_CDC | 0xB3 |
USBH_HID | 0xB4 |
USBH_MSC | 0xB5 |