Vytvoření aplikace

Tato kapitola popisuje softwarovou strukturu komponenty USB Host a vysvětluje její použití při vytváření aplikace USB Host. Tato softwarová komponenta je k dispozici pouze uživatelům MDK-Professional.

Komponenta USB Host zjednodušuje vývoj softwaru mikrokontrolérových systémů, které umožňují připojení zařízení USB. Atributy komponenty USB Host jsou:

  • Soulad se specifikací USB 2.0.
  • Podpora tříd zařízení HID, MSC, CDC a vlastních zařízení USB, která lze připojit k rozhraní USB Host.
  • Podpora řídicích, přerušovacích a hromadných typů přenosu.

Komponenty RTE

Následující obrázek ukazuje vztahy komponent RTE s periferií USB Host mikrokontroléru (USB Controller). RTE Components poskytují konfigurační soubory a šablony uživatelského kódu. Konfigurační soubory konfigurují komponenty RTE Components, hardwarová rozhraní, paměťové zdroje a parametry USB Host. Šablony uživatelského kódu poskytují kostru pro implementaci podpory různých tříd zařízení USB.

usb_host_blocks_config_files.png

Struktura hostitele USB

Kroky pro vytvoření aplikace mikrokontroléru, která funguje jako hostitel USB, jsou následující:

  1. Vyberte komponenty RTE Components, které jsou pro vaši aplikaci potřebné.
  2. Povolte a nakonfigurujte ovladač USB Host.
  3. Konfigurujte USB Host, který připojuje USB Middleware k periferii USB mikrokontroléru.
  4. Konfigurujte systémové prostředky podle požadavků na prostředky komponenty USB Host.
  5. Konfigurujte parametry připojených zařízení USB.
  6. Zavedení kódu aplikace pomocí šablon kódu, které jsou k dispozici pro podporu různých tříd zařízení USB.
  7. Ladění aplikace pomocí vestavěných mechanismů komponenty USB.

Výběr komponenty RTE

Výběr komponenty RTE se provádí v několika krocích:

  1. Z komponenty USB:
    • Vyberte USB:CORE, která poskytuje základní funkce potřebné pro komunikaci USB.
    • Nastavte USB:Host na ‚1‘. Tím se vytvoří jeden USB Host pro komunikaci s připojenými USB zařízeními.
    • Zvolte požadovanou podporu tříd USB (HID/MSC/CDC/Custom Class). Například vyberte USB:Host:HID pro podporu pouze zařízení třídy HID.
  2. Z komponenty Ovladače:
    • Vyberte vhodný ovladač USB Host vhodný pro vaši aplikaci.
  3. Z komponenty Zařízení:
    • Podle výstupu ověření mohou být vyžadovány další specifické ovladače zařízení.
  4. Z komponenty CMSIS:
    • Zvolte CMSIS:CORE pro zajištění rozhraní jádra s procesorem.
    • Zvolte vhodný CMSIS:RTOS nebo CMSIS:RTOS2, který je pro aplikaci vyžadován.
USBH_RTE.png

Výběr komponent RTE

Ovladač a řadič USB

Je třeba správně nakonfigurovat ovladač hostitele USB a řadič USB mikrokontroléru. Konkrétně to znamená:

  • Hostitelský ovladač USB vybraný v položce Drivers Component je obvykle nakonfigurován pomocí konfiguračního souboru RTE_Device.h. Ačkoli tento soubor poskytuje více možností, obvykle stačí povolit periferii USB Host související s tímto ovladačem. Některé mikrokontroléry mohou vyžadovat nastavení, která se týkají rozhraní fyzické vrstvy (PHY), napájení USB VBUS a nadproudové ochrany.
  • Řadič USB mikrokontroléru potřebuje obvykle specifické nastavení hodin. Pro pochopení požadavků nahlédněte do uživatelské příručky mikrokontroléru. Případně můžete zkopírovat nastavení příkladu USB Host, který je dodáván pro různé vyhodnocovací desky.

Konfigurace USB Host

Soubor USBH_Config_n.c obsahuje další nastavení pro konkrétní USB Host:

  • Číslo ovladače se nastavuje podle zvoleného USB Controlleru. Pro jednotlivé řadiče zařízení USB to bude ‚0‘.
  • Některé mikrořadiče mohou využívat různá hardwarová rozhraní řadičů. Pro výběr správného nastavení nahlédněte do uživatelské příručky vybraného mikrokontroléru.

Podrobný seznam všech dostupných nastavení naleznete v části Konfigurace.

Konfigurace systémových prostředků

Pro správnou funkci vyžaduje hostitelská komponenta USB některá nastavení konfigurace systému. Tyto požadavky jsou:

  • Dodatečná velikost zásobníku 512 bajtů. Tu lze nakonfigurovat v souboru zařízení (Stack_Size).
  • Složka zařízení USB používá vlákna CMSIS-RTOS. V případě použití RTX v5 nejsou nutné žádné změny nastavení RTX, protože všechny prostředky jsou přiděleny staticky. V případě použití RTX v4 je třeba změnit následující nastavení v souboru:
    • Zvýšit počet souběžně běžících uživatelských vláken o počet vláken požadovaných hostitelem USB
    • Zvýšit počet vláken s uživatelským-poskytovanou velikostí zásobníku o počet vláken požadovaných hostitelem USB
    • Zvýšit celkovou velikost zásobníku pro vlákna s velikostí zásobníku poskytovanou uživatelem o velikost vláken požadovaných hostitelem USB
    • Zapnout uživatelské časovače

Pro více informací, podívejte se do části Požadavky na zdroje komponenty USB Host.

Konfigurace připojitelných zařízení USB

V souborech USBH_Config_HID.h, USBH_Config_MSC.h, USBH_Config_CDC.h nebo USBH_Config_CustomClass.h můžete určit počet souběžných zařízení USB, které bude hostitel USB podporovat. To má vliv na množství paměti, které bude ve vaší aplikaci vyhrazeno pro připojení Zařízení USB. Příklady ukazují, jak nakonfigurovat USB Host pro interakci s různými periferními zařízeními HID, MSC nebo CDC.

Soubory Implementace uživatelského kódu

poskytují šablony funkcí pro podporu různých tříd USB zařízení na USB Host. Dostupné funkce jsou vysvětleny v části Reference komponenty USB Host. Tyto rutiny lze přizpůsobit potřebám aplikace mikrokontroléru v případě, že je potřeba jiná než výchozí funkce.

Pro komponentu USB Host jsou k dispozici následující šablony:

Název šablony Účel
USBH_MSC.c Potřebné funkce pro podporu zařízení MSC. Šablonu naleznete zde.
USBH_PL2303.c Potřebné funkce pro podporu adaptéru Prolific PL2303 USB na sériové rozhraní RS232. Šablonu naleznete zde.
USBH_User_CustomClass.c Potřebné funkce pro podporu libovolné třídy zařízení USB. Šablonu naleznete zde.

Ladění

Komponenta USB Host je distribuována ve formě knihovny a neumožňuje přímé ladění jejího kódu. Lze ji však snadno nakonfigurovat tak, aby generovala události ladění a poskytovala dynamický přehled o provozu komponenty.

Pro softwarovou komponentu USB:CORE lze v okně Manage Run-Time Environment vybrat následující varianty:

  • Ladění: Tato varianta podporuje anotace událostí pro a umožňuje velmi snadno analyzovat vnitřní provoz komponenty USB Host Component během ladění aplikace. Podpora záznamu událostí níže vysvětluje, jak tuto variantu nakonfigurovat a používat.
  • Release: Tato varianta neobsahuje další ladicí kód. Tuto variantu použijte při nasazení aplikace.

Níže uvedený obrázek ukazuje výběr varianty Debug.

usbh_debug_variant.png

Varianta USB Host:Debug Events popisuje události implementované v komponentě zařízení USB.

Podpora záznamníku událostí

je výkonný nástroj, který poskytuje přehled o dynamickém provádění programu.

Komponenta USB Host generuje širokou sadu ladicích událostí pro záznamník událostí a implementuje potřebnou infrastrukturu pro rozhraní s ním.

Pro použití záznamníku událostí je nutné vytvořit obraz s podporou generování událostí. Nezbytné kroky jsou:

  1. : v dialogovém okně správy RTE vyberte variantu Debug pro softwarovou komponentu USB:CORE.
  2. : v dialogovém okně správy RTE povolte softwarovou komponentu Compiler:Event Recorder.
  3. Zajistěte, aby byl Event Recorder inicializován nejlépe tak, že pokud je použit CMSIS-RTOS2 RTX v5, nebo alternativně voláním funkce v kódu aplikace.
  4. Konfigurace zapisovače událostí: V případě potřeby upravte výchozí konfiguraci zapisovače událostí.
  5. Sestavte kód aplikace, stáhněte jej do cílového hardwaru a spusťte relaci ladění.

Když nyní USB Host generuje informace o událostech, lze je zobrazit v .

Konfigurace zapisovače událostí

Tato část popisuje nastavení konfigurace zapisovače událostí. Použití vyžaduje ladicí variantu softwarové komponenty USB:CORE; další informace naleznete v části Podpora záznamníku událostí.

Konfigurace generování událostí USB

Výběr ladicí varianty USB:CORE přidá do projektu soubor USB_Debug.c. Pomocí tohoto souboru nastavíte konfiguraci generování událostí pro jádro USB, ovladače a třídy zařízení zvlášť. Soubor je k dispozici pro komponenty zařízení USB a hostitele.

USBH_USB_Debug_c.png

USB_Debug.c soubor pro konfiguraci generování událostí

Pro konfiguraci generování událostí jednotlivých modulů jsou k dispozici následující nastavení:

  • Vypnuto znamená, že modul nebude generovat žádné události
  • Chyby znamená, že modul bude generovat pouze chybové události
  • Chyby + API znamená, že modul bude generovat události chyb a volání API
  • Vše znamená, že modul bude generovat všechny dostupné události. Kromě událostí chyb a volání API obsahuje i události operací a podrobné události.

ID událostí

Komponenta USB Host používá následující ID událostí:

Komponenta ID události
USBH_Core 0xB0
USBH_Driver 0xB1
USBH_CC 0xB2
USBH_CDC 0xB3
USBH_HID 0xB4
USBH_MSC 0xB5