Dit hoofdstuk beschrijft de softwarestructuur van de USB Host Component en legt uit hoe u deze kunt gebruiken voor het maken van een USB Host-toepassing. Deze softwarecomponent is alleen beschikbaar voor gebruikers van MDK-Professional.
De USB Host Component vereenvoudigt de softwareontwikkeling van microcontrollersystemen die het mogelijk maken USB-apparaten aan te sluiten. De kenmerken van het USB Host Component zijn:
- Voldoet aan de USB 2.0-specificatie.
- Ondersteuning voor HID, MSC, CDC en Custom USB Device Classes die kunnen worden aangesloten op de USB Host.
- Ondersteuning voor control, interrupt en bulk transfer types.
RTE Components
De volgende afbeelding toont de relaties van de RTE Components met de USB Host periferie (USB Controller) van de microcontroller. RTE Componenten bieden configuratiebestanden en gebruikerscodesjablonen. Configuratiebestanden configureren de RTE-componenten, hardware-interfaces, geheugenbronnen en USB-hostparameters. Gebruikerscodesjablonen bieden het skelet voor het implementeren van ondersteuning voor verschillende USB-apparaatklassen.
De stappen voor het maken van een microcontroller-toepassing die functioneert als een USB-host zijn:
- Selecteer de RTE-componenten die nodig zijn voor uw toepassing.
- Setable en configureer de USB Host Driver.
- Configureer de USB Host die de USB Middleware verbindt met de microcontroller USB peripheral.
- Configureer de systeembronnen volgens de Resource Requirements van de USB Host component.
- Configureer de parameters van de aangesloten USB-apparaten.
- Implementeer de applicatiecode met behulp van codetemplates die worden verschaft om verschillende USB-apparaatklassen te ondersteunen.
- Debug uw applicatie met behulp van de ingebouwde mechanismen van het USB-component.
RTE Component Selectie
De RTE Component selectie wordt gedaan in een paar stappen:
- Van de USB Component:
- Selecteer USB:CORE die de basisfunctionaliteit biedt die nodig is voor USB-communicatie.
- Stel USB:Host op ‘1’. Dit creëert één USB-host voor communicatie met aangesloten USB-apparaten.
- Selecteer de gewenste ondersteuning voor USB-klassen (HID/MSC/CDC/Custom Class). Selecteer bijvoorbeeld USB:Host:HID om alleen apparaten van de HID-klasse te ondersteunen.
- Van de component Drivers:
- Selecteer een geschikt USB-hoststuurprogramma dat geschikt is voor uw toepassing.
- Van de component Device:
- Er kunnen aanvullende apparaatspecifieke stuurprogramma’s nodig zijn, afhankelijk van de validatie-uitvoer.
- Van de CMSIS-component:
- Selecteer de CMSIS:CORE om de kerninterface met de processor te verschaffen.
- Selecteer een geschikt CMSIS:RTOS of CMSIS:RTOS2 dat vereist is voor de toepassing.
USB Driver en Controller
Het USB Host Driver en de USB Controller van de microcontroller moeten correct worden geconfigureerd. In het bijzonder betekent dit:
- De USB Host Driver die is geselecteerd onder de Drivers Component wordt meestal geconfigureerd met het RTE_Device.h configuratiebestand. Hoewel dit bestand meerdere opties biedt, is het meestal voldoende om de USB-host-randapparatuur met betrekking tot dit stuurprogramma in te schakelen. Sommige microcontrollers kunnen instellingen nodig hebben die gerelateerd zijn aan een physical layer interface (PHY), de USB VBUS voeding en Overstroombeveiliging.
- De USB Controller van de microcontroller heeft typisch specifieke klok instellingen nodig. Raadpleeg de gebruikershandleiding van de microcontroller om de vereisten te begrijpen. Als alternatief kunt u de setup van een USB Host voorbeeld kopiëren dat voor verschillende evaluatie boards is meegeleverd.
USB Host Configuration
Het USBH_Config_n.c bestand bevat aanvullende instellingen voor de specifieke USB Host:
- Het Driver Nummer wordt ingesteld op basis van de geselecteerde USB Controller. Voor enkele USB-apparaatcontrollers is dit ‘0’.
- Sommige microcontrollers kunnen gebruik maken van verschillende hardware Controller Interfaces. Raadpleeg de gebruikershandleiding van de geselecteerde microcontroller om de juiste instelling te kiezen.
Raadpleeg Configuratie voor een gedetailleerde lijst van alle beschikbare instellingen.
System Resource Configuration
Voor een goede werking heeft de USB Host Component enkele systeemconfiguratie-instellingen nodig. De vereisten zijn:
- Extra stapelgrootte van 512 bytes. Deze kan worden geconfigureerd in het bestand van het apparaat (
Stack_Size
). - De USB-apparaatcomponent maakt gebruik van CMSIS-RTOS-threads. In het geval RTX v5 wordt gebruikt, zijn geen wijzigingen in RTX-instellingen nodig omdat alle bronnen statisch worden toegewezen. In het geval RTX v4 wordt gebruikt, moeten de volgende instellingen in het bestand worden gewijzigd:
- Verhoog het Aantal gelijktijdig draaiende gebruikers-threads met het aantal threads dat nodig is voor de USB-host
- Verhoog het Aantal threads met door de gebruikerstack grootte door aantal threads benodigd door USB Host
- Vergroot de Totale stack grootte voor threads met door gebruiker verschafte stack grootte door aantal threads benodigd door USB Host
- Inschakel User Timers
Voor meer informatie, raadpleeg de sectie Vereisten voor bronnen van de USB-hostcomponent.
Configuratie van aansluitbare USB-apparaten
In de USBH_Config_HID.h, USBH_Config_MSC.h, USBH_Config_CDC.h, of USBH_Config_CustomClass.h kunt u het aantal gelijktijdige USB-apparaten opgeven dat de USB Host zal ondersteunen. Dit heeft invloed op de hoeveelheid geheugen die in uw toepassing wordt gereserveerd voor het koppelen van USB-apparaten. De Examples laten zien hoe een USB Host geconfigureerd kan worden voor interactie met verschillende HID, MSC of CDC randapparatuur.
User Code Implementation
bestanden bieden functie sjablonen om verschillende USB Device Classes op de USB Host te ondersteunen. De beschikbare functies worden uitgelegd in de referentiesectie van het USB Host Component. Deze routines kunnen worden aangepast aan de behoeften van de microcontroller applicatie, in het geval andere dan standaard functionaliteit nodig is.
De volgende templates zijn beschikbaar voor de USB Host component:
Template Naam | Doel |
---|---|
USBH_MSC.c | Noodzakelijke functies om MSC apparaten te ondersteunen. Het sjabloon kan hier worden gevonden. |
USBH_PL2303.c | Noodzakelijke functies ter ondersteuning van de Prolific PL2303 USB naar seriële RS232 adapter. Het sjabloon kan hier worden gevonden. |
USBH_User_CustomClass.c | Noodzakelijke functies ter ondersteuning van een willekeurige USB-apparaatklasse. Het sjabloon kan hier worden gevonden. |
Debuggen
USB Host Component wordt gedistribueerd in library vorm en staat niet toe dat de code direct gedebugged wordt. Het kan echter eenvoudig worden geconfigureerd om debug events te genereren en dynamisch inzicht te geven in de werking van de component.
De volgende varianten kunnen worden geselecteerd voor de USB:CORE software component in het Manage Run-Time Environment venster:
- Debug: deze variant ondersteunt event annotaties voor de en maakt het zeer eenvoudig om de interne werking van de USB Host Component te analyseren tijdens applicatie debug. In Event Recorder Support hieronder wordt uitgelegd hoe u deze variant kunt configureren en gebruiken.
- Release: deze variant bevat geen extra debugcode. Gebruik deze variant bij het uitrollen van de applicatie.
De onderstaande figuur toont de selectie van de Debug-variant.
De USB Host:Debug Events beschrijft de gebeurtenissen die zijn geïmplementeerd in de USB Device Component.
Event Recorder Support
is een krachtig hulpmiddel dat zicht geeft op de dynamische uitvoering van het programma.
De USB Host Component genereert een brede set Debug Events voor de Event Recorder en implementeert de vereiste infrastructuur om hiermee te communiceren.
Om de Event Recorder te gebruiken, is het nodig om een image te maken met ondersteuning voor het genereren van events. De benodigde stappen zijn:
- : selecteer in de RTE management dialoog de Debug variant voor de USB:CORE software component.
- : activeer in de RTE management dialoog de software component Compiler:Event Recorder.
- Zorg ervoor dat de Event Recorder wordt geïnitialiseerd, bij voorkeur door als CMSIS-RTOS2 RTX v5 wordt gebruikt, of als alternatief door de functie in de applicatie code aan te roepen.
- Event Recorder Configuratie: pas indien nodig de standaard Event Recorder configuratie aan.
- Bouw de applicatie code, download het naar de doel hardware en start de debug sessie.
Nu, wanneer de USB Host event informatie genereert, kan het worden bekeken in de .
Event Recorder Configuratie
Deze sectie beschrijft de configuratie instellingen voor de Event Recorder. Het gebruik vereist de debug-variant van de USB:CORE softwarecomponent; raadpleeg Event Recorder Support voor meer informatie.
USB Event Generation Configuration
Selecteert u de USB:CORE debug-variant, dan wordt het bestand USB_Debug.c
aan uw project toegevoegd. Gebruik dit bestand om de event generatie configuratie voor USB core, drivers, en device classes afzonderlijk in te stellen. Het bestand is beschikbaar voor USB Device- en Host-componenten.
De volgende instellingen zijn beschikbaar voor de configuratie van de gebeurtenissen van elke module:
- Uit betekent dat geen gebeurtenissen door de module worden gegenereerd
- Fouten betekent dat alleen foutgebeurtenissen door de module worden gegenereerd
- Fouten + API betekent dat zowel fout- als API-aanroepgebeurtenissen door de module worden gegenereerd
- Alles betekent dat alle beschikbare gebeurtenissen door de module worden gegenereerd. Naast fout- en API-oproepgebeurtenissen bevat dit ook bedienings- en gedetailleerde gebeurtenissen.
Gebeurtenis-ID’s
De USB-hostcomponent gebruikt de volgende gebeurtenis-ID’s:
Component | Event ID |
---|---|
USBH_Core | 0xB0 |
USBH_Driver | 0xB1 |
USBH_CC | 0xB2 |
USBH_CDC | 0xB3 | USBH_HID | 0xB4 | USBH_MSC | 0xB5 |