Zásobník USB zariadení SILICON LABS

Špecifikácie

  • Verzia USB: 1.5.1
  • Dátum vydania: 21. júla 2025
  • Verzia Simplicity SDK: 2025.6.1

Koniec produktuview

Sada zariadení USB od spoločnosti Silicon Labs poskytuje všestranné a ľahko použiteľné pripojenie USB pre projekty IoT, čím uľahčuje komunikáciu medzi sieťovými koprocesormi a hostiteľmi.

Vlastnosti

  • Efektívny zásobník USB zariadení
  • Ideálne pre IoT projekty
  • Podpora komunikácie medzi sieťovými koprocesormi a hostiteľmi

Konfigurácia zariadenia USB

Nakonfigurujte nastavenia zariadenia USB podľa požiadaviek vášho projektu podľa časti Konfigurácia zariadenia USB v dokumentácii.

Sprievodca programovaním zariadení USB
Postupujte podľa Sprievodcu programovaním zariadení USB, aby ste pochopili, ako programovať a interagovať so zariadením USB pre rôzne aplikácie.

Triedy zariadení USB
Sekcia Triedy zariadení USB poskytuje prehľadview rôznych tried, ako napríklad CDC ACM, HID, MSC SCSI a trieda dodávateľa. Vyberte si vhodnú triedu na základe funkčnosti vášho zariadenia.

Riešenie problémov so zariadeniami USB
Ak sa vyskytnú akékoľvek problémy so zariadením USB, pozrite si časti Riešenie problémov so zariadením USB, kde nájdete riešenia a tipy na ladenie.

Poznámky k vydaniu USB
Špecifikácie a funkcieview
Konfigurácia zariadenia USB ukončenáview
Sprievodca programovaním USB zariadeníview
Triedy zariadení USB nadview Trieda CDC ACM nadview Trieda HID nadview Trieda MSC SCSI nadview Trieda dodávateľa nadview


Dokumentácia k rozhraniu API rozhrania USB API rozhrania USB Device ACM API rozhrania USB Device a sl_usbd_cdc_ cm_line_coding_t sl_usbd_cdc_acm_callbacks_t Rozhranie API rozhrania USB Device CDC a sl_usbd_cdc_subcl ss_driver_t Rozhranie API rozhrania USB Device Core
sl_usbd_device_config_t sl_usbd_setup_req_t
rozhranie API HID pre zariadenie USB sl_usbd_cl ss_driver_t
sl_usbd_hid_callbacks_t Rozhranie API MSC pre zariadenia USB
rozhranie API MSC SCSI pre zariadenie USB sl_usbd_msc_subcl ss_driver_t
sl_usbd_msc_scsi_callbacks_t

Copyright © 2025 Silicon Laboratories. Všetky práva vyhradené.

1/174

Univerzálna sériová zbernica USB
sl_usbd_msc_scsi_lun_ pi
sl_usbd_msc_scsi_lun_info sl_usbd_msc_scsi_lun
API dodávateľa USB zariadení sl_usbd_vendor_callbacks_t
Dokumentácia API Riešenie problémov so zariadeniami USB
Koniecview Hostiteľ USB pre operačný systém Microsoft Windows
Koniecview

Copyright © 2025 Silicon Laboratories. Všetky práva vyhradené.

2/174

Koniecview
Koniecview
Zariadenie USB
USB je jedno z najúspešnejších komunikačných rozhraní v histórii počítačových systémov a je de facto štandardom pre pripojenie počítačových periférií. Stack USB Device Stack od Silicon Labs je modul USB zariadenia navrhnutý špeciálne pre vstavané systémy. Bol vytvorený od základov s ohľadom na kvalitu, škálovateľnosť a spoľahlivosť spoločnosti Silicon Labs a prešiel prísnym procesom overovania, aby spĺňal špecifikáciu USB 2.0. Táto dokumentácia popisuje, ako inicializovať, spustiť a používať stack USB Device od Silicon Labs. Vysvetľuje rôzne konfiguračné hodnoty a ich použitie. Zahŕňa aj podrobný popis...view technológie, typy možností konfigurácie, implementačné postupy a exampmenej typického použitia pre každú dostupnú triedu.


Aby ste rýchlo pochopili koncepty USB, dokumentácia obsahuje mnoho príkladov...ampUSB so základnými funkciami. Tieto exampTieto súbory vám poskytnú rámec, ktorý vám umožní rýchlo zostaviť zariadenia. Tieto exampzahŕňajú:
Adaptér USB-sériový port (trieda komunikačných zariadení) Myš alebo klávesnica (trieda zariadení s rozhraním HID) Vymeniteľné pamäťové zariadenie (trieda veľkokapacitných pamäťových zariadení) Vlastné zariadenie (trieda dodávateľa)
Nasleduje koniecview sekcií dokumentácie:
Špecifikácie a funkcie Konfigurácia zariadenia USB Sprievodca programovaním zariadení USB Triedy zariadení USB
Trieda CDC ACM Trieda HID Trieda MSC Trieda SCSI Trieda dodávateľa Riešenie problémov so zariadeniami USB Operačný systém Microsoft Windows Hostiteľ USB

Copyright © 2025 Silicon Laboratories. Všetky práva vyhradené.

3/174

USB
USB

USB verzia 1.5.1 21. júla 2025 – Poznámky k vydaniu
Verzia sady Simplicity SDK 2025.6.1
Efektívny balík USB zariadení od spoločnosti Silicon Labs ponúka všestranné a ľahko použiteľné pripojenie USB, ideálne pre projekty IoT, vrátane komunikácie medzi sieťovými koprocesormi a hostiteľmi. Kliknite sem pre zobrazenie skorších vydaní.
Zhrnutie vydania
Kľúčové funkcie | Zmeny API | Opravy chýb | Aktivácia čipu
Kľúčové vlastnosti
Iba zmeny základnej platformy.
Zmeny API
žiadne.
Opravy chýb
žiadne.
Aktivácia čipu
žiadne.
Kľúčové vlastnosti
Nové funkcie | Vylepšenia | Odstránené funkcie | Zastarané funkcie
Nové funkcie
žiadne.
Vylepšenia
Iba zmeny základnej platformy.
Odstránené funkcie
žiadne.
Zastarané funkcie
žiadne.
Zmeny API
Nové API | Upravené API | Odstránené API | Zastarané API
Nové API

Copyright © 2025 Silicon Laboratories. Všetky práva vyhradené.

4/174

USB
žiadne.
Upravené API
žiadne.
Odstránené rozhrania API
žiadne.
Zastarané API
žiadne.
Opravy chýb
žiadne.
Aktivácia čipu
žiadne.
Aplikácia naprampzmeny
Nový Examples | Upravený Examples | Odstránené Examples | Zastarané Examples
Nový Examples
žiadne.
Upravené napramples
žiadne.
Odstránená napramples
žiadne.
Zastarané Examples
žiadne.
Dopad zmien vo vydaní
Vyhlásenia o vplyve | Sprievodca migráciou
Vyhlásenia o vplyve
žiadne.
Sprievodca migráciou
žiadne.
Známe problémy a obmedzenia
žiadne.
Používanie tohto vydania

Copyright © 2025 Silicon Laboratories. Všetky práva vyhradené.

5/174

USB

Čo je v tejto verzii? | Kompatibilný softvér | Inštalácia a používanie | Pomocník a spätná väzba

Čo je v tejto verzii?

Aplikácia USB Device Stack Examples
Kompatibilný softvér

softvér
Simplicity SDK Simplicity Studio Simplicity Commander GCC (kolekcia kompilátorov GNU) IAR Embedded Workbench pre ARM IAR EWARM

Kompatibilná verzia alebo variant
2025.6.0 5.11.0 1.18.2 (súčasťou Simplicity Studio) 12.2.1 (súčasťou Simplicity Studio) 9.40.1 (súčasťou Simplicity Studio)

Inštalácia a používanie

Ak chcete naštartovať svoj vývoj, pozrite si naše:
Sprievodca programovaním zariadení USB. Dokumentácia API.
Informácie o integrácii služby Secure Vault nájdete v časti Secure Vault.
K review Upozornenia na bezpečnostné a softvérové ​​odporúčania a správa preferencií upozornení:
ò Prejdite na stránku https://community.silabs.com/. ó Prihláste sa pomocou svojich údajov k účtu. ô Kliknite na svojho profesionálafile ikona v pravom hornom rohu stránky.
õ V rozbaľovacej ponuke vyberte možnosť Upozornenia. ö V sekcii Upozornenia prejdite na kartu Upozornenia môjho produktuview historické bezpečnostné a softvérové ​​poradenstvo
upozornenia
÷ Ak chcete spravovať svoje preferencie, použite kartu Spravovať upozornenia a prispôsobte si, ktoré aktualizácie produktov a upozornenia chcete
prijímať.
Odporúčané nastavenia konfigurácie nájdete tu.
Ak sa chcete dozvedieť viac o softvéri v tejto verzii, prečítajte si našu online dokumentáciu.
Pomoc a spätná väzba

Kontaktujte podporu spoločnosti Silicon Labs. Ak chcete získať odpovede pomocou nášho nástroja Ask AI, pozrite si vyhľadávacie pole v hornej časti tejto stránky.

Poznámka: Funkcia Ask AI je experimentálna.

Získajte pomoc od našej komunity vývojárov.
Zásady uvoľňovania a údržby súpravy SDK
Pozrite si naše Zásady vydávania a údržby SDK.

Copyright © 2025 Silicon Laboratories. Všetky práva vyhradené.

6/174

Koniecview
Koniecview
Špecifikácie
Vyhovuje špecifikácii „Universal Serial Bus, revízia 2.0“. Implementuje oznámenie o technickej zmene deskriptora asociácie rozhrania (ECN). Typy prenosu.
Triedy USB pre hromadné prerušenia riadenia Trieda komunikačného zariadenia (CDC) Abstraktný riadiaci model (ACM) Zariadenie s rozhraním pre ľudí (HID) Trieda hromadného úložiska (MSC) Rámec tried špecifických pre dodávateľa
Vlastnosti
Škálovateľné tak, aby zahŕňalo iba požadované funkcie a minimalizovalo zaberanie pamäte. Podporuje plnú rýchlosť (12 Mbit/s). Podporuje kompozitné (multifunkčné) zariadenia. Podporuje zariadenia s viacerými konfiguráciami. Podporuje funkcie úspory energie USB (pozastavenie a obnovenie zariadenia). Úplná integrácia triedy Mass Storage do operačného systému Micrium. File Systémový modul vyvinutý s abstrakčnou vrstvou CMSIS-RTOS2, aby mohol fungovať s rôznymi operačnými systémami. Silicon Labs GSDK je dodávaný s portami pre FreeRTOS a Micrium OS.

Copyright © 2025 Silicon Laboratories. Všetky práva vyhradené.

7/174

Koniecview
Koniecview

Konfigurácia zariadenia USB

Táto časť popisuje, ako nakonfigurovať USB zariadenie Silicon Labs. Existujú tri skupiny konfiguračných parametrov:
Konfigurácia jadra zariadenia USB Konfigurácia informácií o zariadení USB Konfigurácia hardvéru zariadenia USB
Konfigurácia jadra zariadenia USB
USB zariadenie od spoločnosti Silicon Labs je možné nakonfigurovať počas kompilácie pomocou sady #defines, ktoré sa nachádzajú v súbore sl_usbd_core_config.h. fileUSB zariadenie používa #defines, keď je to možné, pretože umožňuje škálovanie veľkosti kódu a dát počas kompilácie na základe povolených funkcií. To umožňuje upraviť veľkosť pamäte len na čítanie (ROM) a pamäte s náhodným prístupom (RAM) zariadenia Silicon Labs USB na základe požiadaviek vašej aplikácie.
Odporúčané: Spustite proces konfigurácie s predvolenými hodnotami (zvýraznené tučným písmom).
Nižšie uvedené sekcie sú usporiadané podľa poradia v konfigurácii šablóny file, sl_usbd_core_config.h.
Konfigurácia základných tried konfigurácie
Konfigurácia jadra
Tabuľka – Konštanty konfigurácie jadra zariadenia USB

Konštanta Popis

Predvolená hodnota

VEĽKOSŤ ZÁSOBY SL_USBD_TA SK

Konfiguruje veľkosť zásobníka v bajtoch pre základnú úlohu USBD

4096

SL_USBD_TA SK_PRIORITA Y

Konfiguruje prioritu základnej úlohy USBD. Ide o prioritu CMSIS-RTOS2.

Vysoká priorita os

SL_USBD_A AUTOMATICKÉ_ŠTARTOVANIE _USB_ZARIADENIA E

Ak je povolené, zariadenie USB sa automaticky spustí po spustení jadra a táto úloha jadra USBD sa naplánuje na prvé spustenie. Ak je zakázané, vaša aplikácia bude musieť zavolať sl_usbd_core_start_device(), keď bude pripravená na detekciu hostiteľom USB.

SL_USBD_C Celkový počet konfigurácií, ktoré budú pridané prostredníctvom funkcie sl_usbd_add_configuration().

1

Funkcia ONFIGURATI.

ON_QUANTI

TY

Copyright © 2025 Silicon Laboratories. Všetky práva vyhradené.

8/174

Koniecview

Neustále
SL_USBD _INTERFACE_QU ANTITY
SL_USBD _ALT_INT_ERFACE_ MNOŽSTVO
TY
SL_USBD _INTERF ACE_GR
OUP_QU
ANTITA
SL_USBD _POPISY
PTOR_Q
UANTITY
SL_USBD _REŤAZEC _MNOŽSTVO
TY
SL_USBD _OPEN_E NDPOIN TS_QUANTITY

Popis Celkový počet rozhraní USB, ktoré sa majú pridať pre všetky vaše konfigurácie. To do značnej miery závisí od použitej triedy (tried). Viac informácií o tom, koľko rozhraní inštancia triedy vyžaduje, nájdete v časti „Potreby zdrojov z jadra“ vašej triedy (tried).
Celkový počet alternatívnych rozhraní USB, ktoré sa majú pridať pre všetky vaše konfigurácie. To do veľkej miery závisí od použitej triedy (tried). Táto hodnota musí byť vždy rovnaká alebo väčšia ako SL_USBD_INTERFACE_QUANTITY. Viac informácií o tom, koľko alternatívnych rozhraní vyžaduje inštancia triedy, nájdete v časti „Potreby zdrojov z jadra“ vašej triedy (tried).
Celkový počet skupín rozhraní USB, ktoré budú pridané pre všetky vaše konfigurácie. To do značnej miery závisí od použitej triedy (tried). Viac informácií o tom, koľko skupín rozhraní vyžaduje inštanciu triedy, nájdete v časti „Potreby zdrojov z jadra“ vašej triedy (tried).
Celkový počet deskriptorov koncových bodov, ktoré budú pridané pre všetky vaše konfigurácie. To do veľkej miery závisí od použitej triedy (tried). Ďalšie informácie o tom, koľko deskriptorov koncových bodov vyžaduje inštancia triedy, nájdete v časti „Počet koncových bodov“ v časti „Potreby zdrojov z jadra“ vašej triedy (tried). Upozorňujeme, že riadiace koncové body tu nie je potrebné brať do úvahy. Celkový počet reťazcov USB. Nastavenie množstva na nulu túto funkciu deaktivuje. Deaktivácia spôsobí, že zariadenie nebude ukladať žiadne reťazce popisu USB odovzdané z aplikácie. To znamená, že hostiteľ nebude môcť načítať reťazce popisu (napríklad výrobcu a názov produktu). Celkový počet otvorených koncových bodov na konfiguráciu. Zariadenie vyžaduje aspoň dva otvorené koncové body na prenosy riadenia, ale musíte pridať aj koncové body použitej triedy (tried). Ďalšie informácie o tom, koľko otvorených koncových bodov vyžaduje inštancia triedy, nájdete v časti „Počet koncových bodov“ v časti „Potreby zdrojov z jadra“ vašej triedy (tried).

Predvolená hodnota
10 10
2
20 30 20

Konfigurácia tried
Triedy majú špecifické konfigurácie počas kompilácie. Viac informácií nájdete v časti Triedy zariadení USB.
Konfigurácia informácií o zariadení USB

Konfigurácia súboru sl_usbd_device_config.h file preskupuje definície #define-s počas kompilácie na nastavenie základných informácií o vašom zariadení, ako napríklad ID dodávateľa/produktu, reťazce zariadenia atď. Nasledujúca tabuľka popisuje každú definíciu konfigurácie informácií dostupnú v tejto konfigurácii. file.

Tabuľka – Definície konfigurácie informácií o zariadení USB

Neustále
SL_USBD_ZARIADENIE E_DODÁVATEĽA
SL_USB_ZARIADENIE E_PRODUCT_ID

Popis Vaše identifikačné číslo dodávateľa, ktoré vám poskytlo fórum implementátorov USB. Viac informácií o tom, ako získať ID dodávateľa, nájdete na stránke http://www.usb.org/developers/vendor/. Vaše identifikačné číslo produktu.

Copyright © 2025 Silicon Laboratories. Všetky práva vyhradené.

9/174

Koniecview

Neustále

Popis

SL_USBD_DEVICE_RELEASE Číslo vydania vášho zariadenia. _NUMBER

SL_USBD_DEVICE_MANUFA Reťazec popisujúci výrobcu vášho zariadenia. Táto konfigurácia sa ignoruje, keď

CTURER_STRING

Konfigurácia SL_USBD_STRING_QUANTITY je nastavená na 0.

SL_USBD_DEVICE_PRODUC Reťazec popisujúci váš produkt. Táto konfigurácia sa ignoruje, keď je konfigurácia

T_STRING

SL_USBD_STRING_QUANTITY je nastavené na 0.

SL_USBD_DEVICE_SERIAL_N Reťazec obsahujúci sériové číslo vášho zariadenia. Táto konfigurácia sa ignoruje, keď

UMBER_STRING

Konfigurácia SL_USBD_STRING_QUANTITY je nastavená na 0.

SL_USBD_DEVICE_LANGUA Identifikačné číslo jazyka reťazcov vášho zariadenia. Možné hodnoty sú:
GE_ID

– SL_USBD_LANG_ID_ARABIC_SAUDI_ARÁBIA

– SL_USBD_LANG_ID_CHINESE_TAIWAN

– SL_USBD_LANG_ID_ENGLISH_US

– SL_USBD_LANG_ID_ENGLISH_UK

– SL_USBD_LANG_ID_FRENCH

– SL_USBD_LANG_ID_GERMAN

– SL_USBD_LANG_ID_GREEK

– SL_USBD_LANG_ID_TALIANSKY

– SL_USBD_LANG_ID_PORTUGUESE

– SL_USBD_LANG_ID_SANSKRIT

Táto konfigurácia sa ignoruje, keď je konfigurácia SL_USBD_STRING_QUANTITY nastavená na 0.

Konfigurácia hardvéru zariadenia USB

V závislosti od zariadenia Silicon Labs, ktoré používate, budete pravdepodobne musieť nakonfigurovať pin a port GPIO pre signál USB VBUS Sense. Definície konfigurácie sú v hlavičke sl_usbd_hardware_config.h. file.

Neustále
SL_USBD_DRIVER_VBUS_SENSE_PORT SL_USBD_DRIVER_VBUS_SENSE_PIN

Popis
Port GPIO pre signál USB VBUS Sense na vašej doske. Pin GPIO pre signál USB VBUS Sense na vašej doske.

Copyright © 2025 Silicon Laboratories. Všetky práva vyhradené.

10/174

Koniecview
Koniecview
Sprievodca programovaním zariadení USB
Táto časť vysvetľuje, ako používať modul USB zariadenia.
Počiatočné nastavenie modulu USB zariadenia
Táto časť popisuje základné kroky potrebné na inicializáciu modulu USB zariadenia a na pridanie, prípravu a spustenie zariadenia. Inicializácia modulu USB zariadenia Inicializácia jadra USB zariadenia Inicializácia rozhraní ACl Pridanie USB zariadenia Vytvorenie USB zariadenia Pridanie konfigurácie Pridanie funkcie USB Spustenie USB zariadenia
Funkcie pre zachytávanie udalostí
Inicializácia modulu zariadenia USB
Inicializácia jadra zariadenia USB
Začnite inicializáciou jadra modulu zariadenia B volaním funkcie sl_usbd_core_init(). Príklad nižšie ukazuje volanie funkcie sl_usbd_core_init().
Example – Volanie funkcie sl_usbd_core_init()
sl_status_t status; status = sl_usbd_core_init(); if (status ! SL_STATUS_OK) { /* Vyskytla sa chyba. Sem by sa malo pridať spracovanie chýb. */
}
Inicializácia triedy (tried)
Po inicializácii jadra modulu zariadenia USB musíte inicializovať každú triedu, ktorú chcete použiť. Viac informácií nájdete v časti „Programovacia príručka“ vášho zoznamu prístupových práv (ACL).
Zostavenie vášho USB zariadenia
Pridávanie konfigurácie(í)
Po úspešnej inicializácii zariadenia môžete začať pridávať funkcie USB, počnúc novou konfiguráciou. Zariadenie musí mať aspoň jednu konfiguráciu. Ak chcete pridať konfiguráciu (konfigurácie), zavolajte funkciu sl_usbd_core_dd_configuration(). Táto funkcia sa musí volať pre každú konfiguráciu, ktorú chcete pridať. PríkladampNižšie uvedený obrázok ukazuje, ako pridať plnú rýchlosť.
Example – Pridanie konfigurácie (konfigurácií) do vášho zariadenia

Copyright © 2025 Silicon Laboratories. Všetky práva vyhradené.

11/174

Koniecview

stav sl_status_t; uint8_t config_nbr_fs;

/* Pridávanie konfigurácie plnej rýchlosti do zariadenia. */

stav = sl_usbd_core_add_configuration(0,

/* Žiadne špeciálne atribúty konfigurácie. */

100u,

/* Maximálna spotreba energie: 100 mA.

*/

RÝCHLOSŤ_USB_ZARIADENIA_SL_PLNÁ,

/* Konfigurácia s plnou rýchlosťou.

*/

„Konfigurácia pridania Exampkonfigurácia Full-Speed

&config_nbr_fs);

ak (stav ! SL_STATUS_OK) {

/* Vyskytla sa chyba. Sem by sa malo pridať spracovanie chýb. */

}

Pridávanie funkcií USB
Po úspešnom pridaní aspoň jednej konfigurácie do zariadenia môžete do zariadenia pridať rozhrania a koncové body. Každá trieda USB má svoje vlastné požiadavky, pokiaľ ide o typ rozhrania a koncových bodov, množstvo a ďalšie parametre. Silicon Labs USB Device pridáva rozhrania a koncové body do tried, ktoré ponúka.
Z vašej aplikácie môžete vytvoriť inštanciu triedy USB a pridať ju do konfigurácie. Viac informácií o koncepte inštancií triedy zariadení USB nájdete v časti Triedy zariadení USB. Upozorňujeme, že môžete vytvoriť inštanciu a pridať do konfigurácie mnoho rôznych inštancií triedy, čím vytvoríte multifunkčné (kompozitné) zariadenie.
BývalýampNižšie uvedený obrázok ukazuje, ako vytvoriť inštanciu triedy a pridať ju do konfigurácie.
Example – Pridanie inštancie triedy do vášho zariadenia

stav sl_status_t; uint8_t číslo_triedy;
/* Vytvorte inštanciu triedy, ktorú chcete použiť.*/ /* Upozorňujeme, že v závislosti od triedy môže mať táto funkcia viac argumentov. */ status = sl_usbd_ _create_instance(&class_nbr); if (status ! SL_STATUS_OK) { /* Vyskytla sa chyba. Sem by sa malo pridať spracovanie chýb. */ }
/* Pridanie inštancie triedy do konfigurácie Full-Speed. */ status = sl_usbd_ _add_to_configuration(class_nbr, /* Číslo triedy vrátené funkciou sl_usbd_ _vytvoriť_inštanciu. */
config_nbr_fs); /* Číslo konfigurácie vrátené funkciou sl_usbd_core_add_configuration(). */ if (status ! SL_STATUS_OK) { /* Vyskytla sa chyba. Sem by sa malo pridať spracovanie chýb. */ }
Spustenie zariadenia USB
Predvolene sa zariadenie automaticky spustí úlohou jadra zariadenia USB po dokončení inicializácie zariadenia a spustení jadra. Ak chcete ovládať, kedy sa zariadenie spustí a stane sa viditeľným pre hostiteľa USB, použite konfiguračný príkaz definujúci SL_USBD_AUTO_START_USB_DEVICE na vypnutie funkcie automatického spustenia. Ak je vypnutá, po zostavení/príprave zariadenia ho môžete spustiť a sprístupniť hostiteľovi USB volaním funkcie sl_usbd_core_start_device().
BývalýampNižšie uvedený obrázok ukazuje, ako spustiť zariadenie pomocou funkcie sl_usbd_core_start_device().
Example – Spustenie zariadenia

Copyright © 2025 Silicon Laboratories. Všetky práva vyhradené.

12/174

Koniecview

stav sl_status_t;
status = sl_usbd_core_start_device(); if (status ! SL_STATUS_OK) { /* Vyskytla sa chyba. Sem by sa malo pridať spracovanie chýb. */ }

Funkcie pre zachytávanie udalostí
Základný modul USB Device ponúka dve slabé funkcie hook, ktoré môžete vo svojej aplikácii predefinovať. Ich účelom je upozorniť na udalosti zbernice a konfigurácie.
Tabuľka – Funkcie pre pripojenie k udalostiam USB

Udalosť

Popis

Autobus

Volá sa, keď dôjde k udalosti USB zbernice

Konfigurácia Volá sa, keď dôjde k udalosti konfigurácie USB

Podpis funkcie
void sl_usbd_on_bus_event(udalosť sl_usbd_bus_event_t); void sl_usbd_on_config_event(udalosť sl_usbd_config_event_t, uint8_t config_nbr);

Example – Funkcie pre zachytávanie udalostí

void sl_usbd_on_bus_event(udalosť sl_usbd_bus_event_t) { switch (udalosť) { case SL_USBD_EVENT_BUS_CONNECT:
// volá sa, keď je USB kábel vložený do hostiteľského ovládača break;
prípad SL_USBD_EVENT_BUS_DISCONNECT: // volané pri odpojení USB kábla z hostiteľského ovládača break;
prípad SL_USBD_EVENT_BUS_RESET: // volá sa, keď hostiteľ odošle príkaz na resetovanie break;
prípad SL_USBD_EVENT_BUS_SUSPEND: // volá sa, keď hostiteľ odošle príkaz na pozastavenie break;
prípad SL_USBD_EVENT_BUS_RESUME: // volá sa, keď hostiteľ odošle príkaz na prebudenie break;
predvolené: prestávka; } }
void sl_usbd_on_config_event(udalosť sl_usbd_config_event_t, uint8_t config_nbr) { prepínač (udalosť) { prípad SL_USBD_EVENT_CONFIG_SET:
// volá sa, keď hostiteľ nastaví prerušenie konfigurácie;
case SL_USBD_EVENT_CONFIG_UNSET: // volá sa, keď je konfigurácia zrušená break;
predvolené: prestávka; } }

Copyright © 2025 Silicon Laboratories. Všetky práva vyhradené.

13/174

Koniecview

Copyright © 2025 Silicon Laboratories. Všetky práva vyhradené.

14/174

Koniecview
Koniecview

Triedy zariadení USB

Triedy USB dostupné v Silicon Labs USB Device majú niektoré spoločné charakteristiky. Táto časť vysvetľuje tieto charakteristiky a ich interakcie s jadrom.
Viac informácií o konkrétnej triede nájdete v nasledujúcich bodoch:
Trieda CDC ACM Trieda HID Trieda MSC Trieda SCSI Trieda dodávateľa
O inštanciách triedy
Triedy USB dostupné v USB Device implementujú koncept inštancií triedy. Inštancia triedy predstavuje jednu funkciu v rámci zariadenia. Funkcia môže byť opísaná jedným rozhraním alebo skupinou rozhraní a patrí do špecifickej triedy.
Každá implementácia triedy USB má niekoľko spoločných konfigurácií a funkcií, založených na koncepte inštancie triedy. Spoločné konfigurácie a funkcie sú uvedené v tabuľke nižšie. V názve stĺpca „Konštanty alebo funkcia“ je možné zástupný symbol XXXX nahradiť názvom triedy: CDC, HID, MSC, CDC_ACM alebo VENDOR (Vendor pre názvy funkcií).
Tabuľka – Konštanty a funkcie súvisiace s konceptom viacerých inštancií triedy

Konštanta alebo funkcia
SL_USBD_XXXX_CL ASS_INS MNOŽSTVO_TANCIE
MNOŽSTVO_KONFIGURÁCIE_SL_USBD_XXXX
sl_usb d _XXXX_create _inštancia ()
ikona sl_usbd_XXXX_add_to_conf()

Popis
Konfiguruje maximálny počet inštancií triedy.
Konfiguruje maximálny počet konfigurácií. Počas inicializácie triedy bude vytvorená inštancia triedy pridaná do jednej alebo viacerých konfigurácií. Vytvorí novú inštanciu triedy.
Pridá existujúcu inštanciu triedy do zadanej konfigurácie zariadenia.

Z hľadiska implementácie kódu trieda deklaruje lokálnu globálnu premennú, ktorá obsahuje riadiacu štruktúru triedy. Táto riadiaca štruktúra triedy je spojená s jednou inštanciou triedy a bude obsahovať špecifické informácie na správu inštancie triedy.
Nasledujúce obrázky znázorňujú niekoľko prípadových scenárov. Každý obrázok obsahuje príklad kóduampktorý zodpovedá danému prípadu.
Obrázok – Viaceré inštancie triedy – Zariadenie FS (1 konfigurácia s 1 rozhraním) predstavuje typické zariadenie USB. Zariadenie je plne rýchle (FS) a obsahuje jednu konfiguráciu. Funkcia zariadenia je popísaná jedným rozhraním zloženým z dvojice koncových bodov pre dátovú komunikáciu. Vytvorí sa jedna inštancia triedy, ktorá vám umožní spravovať celé rozhranie s priradeným koncovým bodom.
Obrázok – Viaceré inštancie triedy – konfigurácia zariadenia FS 1 s 1 rozhraním)

Copyright © 2025 Silicon Laboratories. Všetky práva vyhradené.

15/174

Koniecview

Kód zodpovedajúci obrázku – Viaceré inštancie triedy – Zariadenie FS (1 konfigurácia s 1 rozhraním) je zobrazený v príkladeample nižšie.
Example – Viaceré inštancie triedy – konfigurácia zariadenia FS 1 s 1 rozhraním)

stav sl_status_t; uint8_t trieda_0;

void app_usbd_XXXX_enable(uint8_t class_nbr) { /* Spracovanie udalosti povolenia triedy. */ }

void app_usbd_XXXX_disable(uint8_t class_nbr) { /* Spracovanie udalosti zakázania triedy. */ }

sl_usbd_XXXX_callbacks_t class_callbacks = {

(1)

.enable = app_usbd_XXXX_enable,

.disable = app_usbd_XXXX_disable

};

stav = sl_usbd_XXXX_init();

(2)

ak (stav ! SL_STATUS_OK) {

/* $$$$ Spracovanie chyby. */

}

stav = sl_usbd_XXXX_create_instance(&class_callbacks,

(3)

&trieda_0);

ak (stav ! SL_STATUS_OK) {

/* $$$$ Spracovanie chyby. */

}

stav = sl_usbd_XXXX_add_to_configuration(trieda_0, konfigurácia_0);

(4)

ak (stav ! SL_STATUS_OK) {

/* $$$$ Spracovanie chyby. */

}

(1) Každá trieda ponúka sadu funkcií spätného volania pre udalosti pripojenia/odpojenia zariadenia a pre udalosti špecifické pre triedu. Objekt štruktúry spätného volania sa odovzdáva ako argument pri vytváraní inštancie triedy pomocou sl_usbd_XXXX_create_instance().
funkciu.
(1) Inicializujte triedu. Všetky interné premenné, štruktúry a porty triedy budú inicializované. Upozorňujeme, že funkcia Init() v niektorých triedach môže prijímať iné argumenty.

Copyright © 2025 Silicon Laboratories. Všetky práva vyhradené.

16/174

Koniecview
(2) Vytvorte inštanciu triedy s názvom class_0. Funkcia sl_usbd_XXXX_create_instance() alokuje riadiacu štruktúru triedy spojenú s class_0. V závislosti od triedy môže mať sl_usbd_XXXX_create_instance() okrem čísla triedy aj ďalšie parametre, ktoré predstavujú informácie špecifické pre triedu uložené v riadiacej štruktúre triedy. aaa (3) Pridajte inštanciu triedy class_0 k zadanému konfiguračnému číslu config_0. sl_usbd_XXXX_add_to_configuration() vytvorí rozhranie 0 a jeho priradené koncové body IN a OUT. V dôsledku toho inštancia triedy zahŕňa rozhranie 0 a jeho koncové body. Akákoľvek komunikácia vykonaná na rozhraní 0 bude používať číslo inštancie triedy class_0. Obrázok – Viaceré inštancie triedy – Zariadenie FS (2 konfigurácie a viacero rozhraní) predstavuje zložitejší príklad.ampnapr. Zariadenie s plnou rýchlosťou sa skladá z dvoch konfigurácií. Zariadenie má dve funkcie, ktoré patria do rovnakej triedy, ale každá funkcia je opísaná dvoma rozhraniami a má dvojicu obojsmerných koncových bodov. V tomto príkladeampT. j. vytvoria sa dve inštancie triedy. Každá inštancia triedy je priradená k skupine rozhraní, na rozdiel od Obrázka – Viacero inštancií triedy – Zariadenie FS (1 konfigurácia s 1 rozhraním) a Obrázka – Viacero inštancií triedy – Zariadenie FS (2 konfigurácie a viacero rozhraní), kde bola inštancia triedy priradená k jednému rozhraniu.
Obrázok – Viaceré inštancie triedy – konfigurácie zariadenia FS 2 a viacero rozhraní)

Kód zodpovedajúci obrázku – Viaceré inštancie triedy – Zariadenie FS (2 konfigurácie a viacero rozhraní) je zobrazený v príkladeampnižšie. Ošetrenie chýb je kvôli prehľadnosti vynechané.
Example – Viaceré inštancie triedy – Konfigurácie zariadenia FS 2 a viacero rozhraní)

Copyright © 2025 Silicon Laboratories. Všetky práva vyhradené.

17/174

Koniecview

stav sl_status_t; uint8_t trieda_0; uint8_t trieda_1;
stav = sl_usbd_XXXX_init();
stav = sl_usbd_XXXX_create_instance(&trieda_0); stav = sl_usbd_XXXX_create_instance(&trieda_1);
stav = sl_usbd_XXXX_add_to_configuration(trieda_0, cfg_0); stav = sl_usbd_XXXX_add_to_configuration(trieda_1, cfg_0);
stav = sl_usbd_XXXX_add_to_configuration(trieda_0, cfg_1); stav = sl_usbd_XXXX_add_to_configuration(trieda_1, cfg_1);

(1)
(2) (3)
(4) (5)
(6) (6)

(1) Inicializujte triedu. Inicializujú sa všetky interné premenné, štruktúry a porty triedy.
(2) Vytvorte inštanciu triedy class_0. Funkcia sl_usbd_XXXX_create_instance() alokuje riadiacu štruktúru triedy spojenú s class_0.
(3) Vytvorte inštanciu triedy class_1. Funkcia sl_usbd_XXXX_create_instance() alokuje ďalšiu riadiacu štruktúru triedy spojenú s class_1.
(4) Pridajte inštanciu triedy class_0 do konfigurácie cfg_0. Funkcia sl_usbd_XXXX_add_to_configuration() vytvorí rozhranie 0, rozhranie 1, alternatívne rozhrania a súvisiace koncové body IN a OUT. Číslo inštancie triedy class_0 sa použije pre akúkoľvek dátovú komunikáciu na rozhraní 0 alebo rozhraní 1.
(5) Pridajte inštanciu triedy class_1 do konfigurácie cfg_0. Funkcia sl_usbd_XXXX_add_to_configuration() vytvorí rozhranie 2, rozhranie 3 a ich priradené koncové body IN a OUT. Číslo inštancie triedy class_1 sa použije pre akúkoľvek dátovú komunikáciu na rozhraní 2 alebo rozhraní 3.
(6) Pridajte rovnaké inštancie triedy, class_0 a class_1, do druhej konfigurácie, cfg_1.
Každá trieda definuje štruktúru typu sl_usbd_XXXX_callbacks_t. Jej účelom je poskytnúť každej triede sadu callback funkcií, ktoré sa majú volať pri výskyte udalosti. V každej triede sú prítomné dve callback funkcie. Sú uvedené v tabuľke nižšie.
Tabuľka – Bežné funkcie spätného volania triedy

Polia Popis .enable Volá sa, keď je inštancia triedy USB úspešne povolená. .disable Volá sa, keď je inštancia triedy USB zakázaná.

Podpis funkcie void app_usbd_XXXX_enable(uint8_t class_nbr); void app_usbd_XXXX_disable(uint8_t class_nbr);

Copyright © 2025 Silicon Laboratories. Všetky práva vyhradené.

18/174

Koniecview
Koniecview
Trieda USB zariadenia CDC ACM
Základná trieda CDC zariadenia USB nadview Potreby zdrojov triedy CDC ACM pre zariadenie USB z jadra podtriedy CDC ACM pre zariadenie USBview Konfigurácia triedy ACM pre zariadenia USB CDC Programovacia príručka pre zariadenia USB CDC ACM
Táto časť popisuje triedu Communications Device Class (CDC) a pridruženú podtriedu CDC, ktorú podporuje zásobník USB Device od spoločnosti Silicon Labs. USB-Device od spoločnosti Silicon Labs v súčasnosti podporuje podtriedu Abstract Control Model (ACM), ktorá sa bežne používa na emuláciu sériového portu.
CDC zahŕňa rôzne telekomunikačné a sieťové zariadenia. Telekomunikačné zariadenia zahŕňajú analógové modemy, analógové a digitálne telefóny, ISDN terminálové adaptéry atď. NapríkladampMedzi sieťové zariadenia patria ADSL a káblové modemy, ethernetové adaptéry a rozbočovače. CDC definuje rámec na zapuzdrenie existujúcich štandardov komunikačných služieb, ako napríklad V.250 (pre modemy cez telefónnu sieť) a Ethernet (pre zariadenia lokálnej siete), pomocou USB pripojenia. Komunikačné zariadenie je zodpovedné za správu zariadení, správu hovorov v prípade potreby a prenos údajov.
CDC definuje sedem hlavných skupín zariadení. Každá skupina patrí do modelu komunikácie, ktorý môže zahŕňať niekoľko podtried. Každá skupina zariadení má okrem základnej triedy CDC aj vlastný špecifikačný dokument. Týchto sedem skupín je:
Verejná telefónna sieť (PSTN), zariadenia vrátane modemov s hlasovým pásmom, telefónov a zariadení so sériovou emuláciou. Zariadenia digitálnej siete s integrovanými službami (ISDN) vrátane terminálových adaptérov a telefónov. Zariadenia modelu riadenia Ethernetu (ECM) vrátane zariadení podporujúcich rodinu IEEE 802 (napr. káblové a ADSL modemy, WiFi adaptéry). Zariadenia v režime asynchrónneho prenosu (ATM) vrátane ADSL modemov a iných zariadení pripojených k sieťam ATM (pracovné stanice, smerovače, LAN prepínače). Zariadenia bezdrôtovej mobilnej komunikácie (WMC) vrátane multifunkčných komunikačných zariadení používaných na správu hlasovej a dátovej komunikácie. Zariadenia modelu emulácie Ethernetu (EEM), ktoré si vymieňajú dáta v rámci Ethernetu. Zariadenia modelu riadenia siete (NCM) vrátane vysokorýchlostných sieťových zariadení (modemy s vysokorýchlostným paketovým prístupom, linkové terminálové zariadenia).
CDC a pridružená implementácia podtriedy spĺňajú nasledujúce špecifikácie:
Univerzálna sériová zbernica, Definície tried pre komunikačné zariadenia, Revízia 1.2, 3. novembra 2010. Univerzálna sériová zbernica, Komunikácia, Podtrieda pre zariadenia PSTN, Revízia 1.2, 9. februára 2007.
Základná trieda CDC zariadenia USB nadview
Zariadenie CDC sa skladá z nasledujúcich rozhraní na implementáciu komunikačných schopností:
Rozhranie komunikačnej triedy (CCI) je zodpovedné za správu zariadení a voliteľne aj za správu hovorov.
Správa zariadení umožňuje všeobecnú konfiguráciu a ovládanie zariadenia a oznamovanie udalostí hostiteľovi. Správa hovorov umožňuje nadväzovanie a ukončovanie hovorov. Správa hovorov môže byť multiplexovaná prostredníctvom DCI. CCI je povinné pre všetky zariadenia CDC. Identifikuje funkciu CDC špecifikáciou komunikačného modelu podporovaného zariadením CDC. Rozhranie (rozhrania) nasledujúce za CCI môže (môžu) byť akékoľvek definované rozhranie triedy USB, ako napríklad audio alebo rozhranie špecifické pre dodávateľa. Rozhranie špecifické pre dodávateľa je reprezentované konkrétne DCI.
Rozhranie dátovej triedy (DCI) je zodpovedné za prenos údajov. Prenášané a/alebo prijímané údaje sa neriadia špecifickým
formát. Dáta môžu byť surové dáta z komunikačnej linky, dáta podľa proprietárneho formátu atď. Všetky DCI nasledujúce po CCI možno považovať za podriadené rozhrania.
Zariadenie CDC musí mať aspoň jeden CCI a nula alebo viac DCI. Jeden CCI a akýkoľvek podriadený DCI spolu poskytujú hostiteľovi určitú funkciu. Táto schopnosť sa tiež označuje ako funkcia. V kompozitnom zariadení CDC môžete mať niekoľko...

Copyright © 2025 Silicon Laboratories. Všetky práva vyhradené.

19/174

Koniecview
funkcie. Zariadenie by sa preto skladalo z niekoľkých sád CCI a DCI, ako je znázornené na obrázku – Zložené zariadenie CDC.
Obrázok – Kompozitné zariadenie CDC

Zariadenie CDC pravdepodobne použije nasledujúcu kombináciu koncových bodov:
Dvojica riadiacich koncových bodov IN a OUT nazývaných predvolený koncový bod. Voliteľný koncový bod IN pre hromadné alebo prerušovacie operácie. Dvojica koncových bodov IN a OUT pre hromadné alebo izochrónne operácie. Upozorňujeme, že zásobník zariadení USB od spoločnosti Silicon Labs momentálne nepodporuje izochrónne koncové body.
V nasledujúcej tabuľke je uvedené použitie rôznych koncových bodov a to, ktorým rozhraním CDC sa používajú.
Tabuľka – Použitie koncových bodov CDC

Koncový bod
Ovládanie IN
Ovládanie OUT
Prerušenie alebo hromadné IN Hromadné alebo izochrónne IN Hromadné alebo izochrónne
OUT

Smer
Zariadenie-hostiteľ
Hostiteľ-zariadenie
Zariadenie-hostiteľ
Zariadenie-hostiteľ
Hostiteľ-zariadenie

Použitie rozhrania

CCI

Štandardné požiadavky na enumeráciu, požiadavky špecifické pre triedu, zariadenie

správa a voliteľne správa hovorov.

CCI

Štandardné požiadavky na enumeráciu, požiadavky špecifické pre triedu, zariadenie

správa a voliteľne správa hovorov.

CCI

Upozornenie na udalosti, ako napríklad detekcia zvonenia, stav sériovej linky, stav siete.

DCI

Komunikácia surových alebo formátovaných údajov.

DCI

Komunikácia surových alebo formátovaných údajov.

Väčšina komunikačných zariadení používa koncový bod prerušenia na upozornenie hostiteľa na udalosti. Izochrónne koncové body by sa nemali používať na prenos dát, keď sa proprietárny protokol spolieha na opakovaný prenos dát v prípade chýb protokolu USB. Izochrónna komunikácia môže inherentne viesť k strate dát, pretože nemá žiadne mechanizmy opakovania.
Sedem hlavných komunikačných modelov zahŕňa niekoľko podtried. Podtrieda popisuje spôsob, akým by zariadenie malo používať CCI na spracovanie správy zariadenia a správy hovorov. Tabuľka nižšie zobrazuje všetky možné podtriedy a komunikačné modely, do ktorých patria.
Tabuľka – Podtriedy CDC

Podtrieda
Model priameho riadenia Abstraktný model riadenia

Komunikačný model
PSTN
PSTN

Exampzoznam zariadení používajúcich túto podtriedu
Modemové zariadenia priamo ovládané hostiteľom USB
Zariadenia na emuláciu sériového portu, modemové zariadenia ovládané pomocou sady sériových príkazov

Copyright © 2025 Silicon Laboratories. Všetky práva vyhradené.

20/174

Koniecview

Podtrieda

Komunikačný model

Exampzoznam zariadení používajúcich túto podtriedu

Model ovládania telefónom

PSTN

Model viackanálového riadenia ISDN

Model riadenia CAPI ISDN

Model riadenia ECM siete Ethernet

Sieť bankomatov

bankomat

Model riadenia

Model bezdrôtového ovládania s ručným ovládaním

WMC

Správa zariadení WMC

Model mobilnej priamej linky

WMC

OBEX

WMC

Model emulácie Ethernetu EEM

Model riadenia siete

NCM

Zariadenia pre hlasovú telefóniu
Adaptéry terminálov pre základnú tarifu, adaptéry terminálov pre primárnu tarifu, telefóny
Adaptéry terminálov so základnou sadzbou, adaptéry terminálov s primárnou sadzbou, telefóny, káblové modemy DOC-SIS, ADSL modemy s podporou emulácie PPPoE, Wi-Fi adaptéry (rodina IEEE 802.11), adaptéry IEEE 802.3, ADSL modemy
Mobilné koncové zariadenia pripájajúce sa k bezdrôtovým zariadeniam
Mobilné koncové zariadenie pripájajúce sa k bezdrôtovým zariadeniam Mobilné koncové zariadenie pripájajúce sa k bezdrôtovým zariadeniam
Mobilné koncové zariadenia pripájajúce sa k bezdrôtovým zariadeniam Zariadenia používajúce ethernetové rámce ako ďalšiu vrstvu prenosu. Nie sú určené na smerovanie a pripojenie k internetu. Adaptéry IEEE 802.3 prenášajúce vysokorýchlostnú dátovú šírku pásma v sieti.

Potreby zdrojov triedy CDC ACM pre zariadenie USB od spoločnosti Core

Vždy, keď pridáte inštanciu triedy CDC ACM do konfigurácie USB volaním funkcie sl_usbd_cdc_acm_add_to_configuration(), z jadra sa alokujú nasledujúce zdroje.

Zdroj
Rozhrania Alternatívne rozhrania Koncové body Skupiny rozhraní

Množstvo
2 2 3 1

Upozorňujeme, že tieto čísla sú pre každú konfiguráciu. Pri nastavovaní konfiguračných hodnôt SL_USBD_INTERFACE_QUANTITY, SL_USBD_ALT_INTERFACE_QUANTITY, SL_USBD_INTERFACE_GROUP_QUANTITY a SL_USBD_DESCRIPTOR_QUANTITY nezabudnite zohľadniť, koľko konfigurácií bude trieda pridaná. V prípade konfiguračnej hodnoty SL_USBD_OPEN_ENDPOINTS_QUANTITY, keďže koncové body sa otvárajú iba vtedy, keď hostiteľ nastaví konfiguráciu, stačí zohľadniť počet potrebných koncových bodov pre inštanciu triedy.
Podtrieda USB CDC ACM nadview

Základná trieda CDC sa skladá z rozhrania komunikačnej triedy (CCI) a rozhrania dátovej triedy (DCI), ktoré sú podrobne popísané v časti Základná trieda CDC pre zariadenia USB.view Táto časť pojednáva o CCI typu ACM. Pozostáva z predvoleného koncového bodu pre riadiaci prvok a koncového bodu prerušenia pre notifikačný prvok. Dvojica hromadných koncových bodov sa používa na prenos nešpecifikovaných údajov cez DCI.
Podtriedu ACM používajú dva typy komunikačných zariadení:
Zariadenia podporujúce AT príkazy (napríklad modemy s hlasovým pásmom). Zariadenia na emuláciu sériového portu, ktoré sa nazývajú aj zariadenia virtuálneho COM portu.
Pre podtriedu ACM existuje niekoľko požiadaviek špecifických pre danú podtriedu. Umožňujú vám ovládať a konfigurovať zariadenie. Úplný zoznam a popis všetkých požiadaviek ACM nájdete v špecifikácii.

Copyright © 2025 Silicon Laboratories. Všetky práva vyhradené.

21/174

Koniecview Podtrieda pre zariadenia PSTN, revízia 1.2, 9. februára 2007=, časť 6.2.2.
Z tohto zoznamu podtrieda Silicon Labs9 ACM podporuje nasledujúce:
Tabuľka – Žiadosti ACM podporované spoločnosťou Silicon Labs

Popis požiadavky podtriedy

NastaviťCommFeature ZískaťCommFeature VymazaťCommFeature

Hostiteľ odosiela túto požiadavku na ovládanie nastavení danej komunikačnej funkcie. Nepoužíva sa na emuláciu sériového portu.
Hostiteľ odošle túto požiadavku na získanie aktuálnych nastavení pre danú komunikačnú funkciu. Nepoužíva sa na emuláciu sériového portu.
Hostiteľ odošle túto požiadavku na vymazanie nastavení pre danú komunikačnú funkciu. Nepoužíva sa pre sériovú emuláciu.

Nastaviť kódovanie riadkov

Hostiteľ odošle túto požiadavku na konfiguráciu nastavení zariadenia ACM: prenosová rýchlosť, počet stop bitov, typ parity a počet dátových bitov. Pri emulácii sériového rozhrania sa táto požiadavka automaticky odošle zo sériového terminálu vždy, keď nakonfigurujete sériové nastavenia pre otvorený virtuálny COM port.

GetLineCoding

Hostiteľ odošle túto požiadavku na získanie aktuálnych nastavení ACM (prenosová rýchlosť, stop bity, parita, dátové bity). Pri emulácii sériového portu odošlú sériové terminály túto požiadavku automaticky pri otváraní virtuálneho COM portu.

SetControlLineState Hostiteľ odošle túto požiadavku na riadenie nosiča pre poloduplexné modemy a indikuje, či je dátové terminálové zariadenie (DTE) pripravené alebo nie. V prípade sériovej emulácie je DTE sériový terminál. V prípade sériovej emulácie niektoré sériové terminály umožňujú odoslať túto požiadavku s nastavenými ovládacími prvkami.

SetBreak

Hostiteľ odošle túto požiadavku na vygenerovanie prerušenia v štýle RS-232. Pri emulácii sériového rozhrania niektoré sériové terminály umožňujú odoslanie tejto požiadavky.

Podtrieda ACM v Silicon Labs9 používa koncový bod prerušenia IN na upozornenie hostiteľa na aktuálny stav sériovej linky. Sériová linka
Stav linky je bitmapa informujúca hostiteľa o:

Dáta zahodené z dôvodu prekročenia Chyba parity Chyba rámovania Stav detekcie vyzváňacieho signálu Stav mechanizmu detekcie prerušenia Stav prenosovej nosnej Stav detekcie prijímacej nosnej

Implementácia podtriedy ACM v Silicon Labs9 spĺňa nasledujúcu špecifikáciu:
Univerzálna sériová zbernica, komunikácia, podtrieda pre zariadenia PSTN, revízia 1.2, 9. februára 2007.
Konfigurácia triedy ACM zariadenia USB CDC

Táto časť popisuje, ako nakonfigurovať triedu CDC ACM (trieda komunikačných zariadení, abstraktný model riadenia). Existujú dve skupiny konfiguračných parametrov:
Konfigurácie špecifické pre aplikáciu zariadenia USB CDC ACM Konfigurácie inštancií triedy USB CDC ACM
Konfigurácie špecifické pre aplikáciu zariadenia USB CDC ACM triedy

Základná trieda CDC Podtrieda ACM
Základná trieda CDC

Najprv, ak chcete použiť modul triedy CDC pre USB zariadenie od spoločnosti Silicon Labs, budete musieť upraviť konfiguráciu CDC počas kompilácie #define-s podľa potrieb vašej aplikácie. Sú zoskupené v hlavičke sl_usbd_core_config.h. file v sekcii CDC. Ich účelom je informovať modul zariadenia USB o tom, koľko objektov USB CDC má alokovať.

Copyright © 2025 Silicon Laboratories. Všetky práva vyhradené.

22/174

Koniecview

V nasledujúcej tabuľke sú popísané jednotlivé konfiguračné polia dostupné v tejto konfiguračnej štruktúre.
Tabuľka – Definície konfigurácie CDC zariadenia USB

Názov konfigurácie
SL_USBD_CDC_CL AKO MNOŽSTVO_INŠTANCIE
MNOŽSTVO_KONFIGURÁCIE_SL_USBD_CDC
TY
MNOŽSTVO_DÁT_RAZHRANIA_SL_USBD_CDC
TY

Popis
Počet inštancií triedy, ktoré alokujete volaním funkcie
sl_usbd_cdc_acm_create_instance().
Počet konfigurácií. Inštancie triedy ACM je možné pridať do jednej alebo viacerých konfigurácií aaaa pomocou funkcie sl_usbd_cdc_acm_add_to_configuration().
Celkový počet dátových rozhraní (DCI) pre všetky funkcie CDC. Každá funkcia CDC ACM pridaná k funkcii sl_usbd_cdc_acm_create_instance() vygeneruje dátové rozhranie.

Predvolená hodnota
2
1
2

Podtrieda ACM
Podtrieda ACM má jednu konfiguráciu počas kompilácie, ktorá je zobrazená v tabuľke nižšie.
Tabuľka – Definícia konfigurácie ACM zariadenia USB CDC

Názov konfigurácie
SL_USBD_CDC_ACM_SUBCL ASS_I NSTANCE_QUANTITY

Popis
Konfiguruje počet inštancií podtriedy, ktoré pridelíte prostredníctvom volania funkcie
funkcia sl_usbd_cdc_acm_create_instance().

Predvolená hodnota
2

Konfigurácie inštancií triedy CDC ACM zariadenia USB

Táto časť definuje konfigurácie súvisiace s inštanciami sériovej triedy CDC ACM. Vytvorenie inštancie triedy, stav linky, interval, správa volaní, možnosti p_acm_callbacks
Vytvorenie inštancie triedy

Ak chcete vytvoriť inštanciu sériovej triedy CDC ACM, zavolajte funkciu T a sl_usbd_cdc_acm_create_instance(). Táto funkcia má tri konfiguračné argumenty, ako je popísané tu.

interval_stavu_čiary
Toto je interval (v milisekundách), počas ktorého bude vaša inštancia sériovej triedy CDC ACM hlásiť upozornenia na stav linky hostiteľovi T aa. Táto hodnota musí byť mocninou dvoch (1, 2, 4, 8, 16 atď.).

možnosti_správy_volaní
Bitová mapa možností správy hovorov. Možné hodnoty bitovej mapy sú nasledovné:

Hodnota (bit)
SL_USBD_ACM_SERIAL_CALL_MGMT_DEV
SL_USBD_ACM_SERIAL_CALL_MGMT_DATA_CCI _DCI

Popis
Zariadenie si samo spravuje hovory. Zariadenie môže odosielať/prijímať informácie o správe hovorov cez rozhranie dátovej triedy.

p_acm_callbacks

Copyright © 2025 Silicon Laboratories. Všetky práva vyhradené.

23/174

Koniecview

aa M aa p_acm_callbacks je ukazovateľ na štruktúru typu sl_usbd_cdc_acm_callbacks_t. Jeho účelom je poskytnúť triede CDC AC trieda ss sadu funkcií spätného volania, ktoré sa majú volať, keď nastane udalosť CDC ACM. Nie všetky spätné volania sú povinné a v premennej štruktúry callbacks je možné odovzdať nulový ukazovateľ (NULL), keď spätné volanie nie je potrebné. Nasledujúca tabuľka popisuje každé konfiguračné pole dostupné v tejto konfiguračnej štruktúre.
Tabuľka – Konfiguračná štruktúra sl_usbd_cdc_acm _callbacks_t

Polia

Popis

.povoliť

Volá sa, keď je povolená inštancia triedy USB

úspešne.

.zakázať

Volá sa, keď je inštancia triedy USB zakázaná.

.line_control_changed Volá sa, keď je prijatá zmena riadenia linky.

line_coding_changed Volá sa, keď je prijatá zmena kódovania linky.

Podpis funkcie
void app_usbd_cdc_acm_enable(uint8_t podtrieda_nbr);
void app_usbd_cdc_acm_disable(uint8_t podtrieda_nbr);
void app_usbd_cdc_acm_line_control_changed(uint8_t podtrieda_nbr, uint8_t udalosť, uint8_t udalosť_chngd); bool app_usbd_cdc_acm_line_coding_changed(uint8_t podtrieda_nbr, podtrieda_nbr, sl_usbd_cdc_acm_line_coding_t
*kódovanie_riadku_p

Pozrite si časť Registrácia spätných volaní upozornení na udalosti pre funkcie spätného volania, napr.ample.
Sprievodca programovaním triedy ACM pre CDC zariadenia USB

Táto časť vysvetľuje, ako používať triedu CDC Abstract Control Model. Inicializácia zariadenia USB Trieda CDC ACM Pridanie inštancie triedy CDC ACM zariadenia USB do zariadenia Komunikácia pomocou triedy CDC ACM
Inicializácia triedy ACM zariadenia USB CDC

Ak chcete do zariadenia pridať funkcionalitu triedy CDC ACM, musíte najprv inicializovať základnú triedu CDC a podtriedu ACM vyplnením funkcií sl_usbd_cdc_init() a sl_usbd_cdc_acm_init(). Príklad nižšie ukazuje, ako volať sl_usbd_cdc_init() a sl_usbd_cdc_acm_init() pomocou predvolených argumentov.

Example – Inicializácia triedy CDC ACM

stav sl_status_t;
status = sl_usbd_cdc_init(); if (status ! SL_STATUS_OK) { /* Vyskytla sa chyba. Sem by sa malo pridať spracovanie chýb. */
}
status = sl_usbd_cdc_acm_init(); if (status ! SL_STATUS_OK) { /* Vyskytla sa chyba. Sem by sa malo pridať spracovanie chýb. */
}
Pridanie inštancie triedy CDC ACM zariadenia USB do vášho zariadenia
Ak chcete do zariadenia pridať funkcie triedy CDC ACM, musíte vytvoriť inštanciu a potom ju pridať do konfigurácie (konfigurácií) zariadenia.
Vytvorenie inštancie triedy CDC ACM

Copyright © 2025 Silicon Laboratories. Všetky práva vyhradené.

24/174

Koniecview
Pridanie inštancie triedy CDC ACM do konfigurácie (konfigurácií) vášho zariadenia a registrácia spätných volaní upozornení na udalosti
Vytvorenie inštancie triedy CDC ACM
Vytvorte inštanciu triedy CDC AC volaním funkcie sl_usbd_cdc_acm_create_instance(). Príklad nižšie ukazuje, ako vytvoriť inštanciu triedy CDC AC pomocou funkcie sl_usbd_cdc_acm_create_instance().
Example – Vytvorenie funkcie CDC ACM pomocou sl_usbd_cdc_acm_create_instance()

uint8_t podtrieda_nbr; stav_sl_status_t;
stav = sl_usbd_cdc_acm_create_instance(64u, SL_USBD_ACM_SERIAL_CALL_MGMT_DATA_CCI_DCI | SL_USBD_ACM_SERIAL_CALL_MGMT_DEV, NULL, &číslo_podtriedy);
ak (status ! SL_STATUS_OK) { /* Vyskytla sa chyba. Sem by sa malo pridať spracovanie chýb. */
}
Pridanie inštancie triedy CDC ACM do konfigurácie (konfigurácií) vášho zariadenia
Po vytvorení inštancie triedy CDC ACM ju môžete pridať do konfigurácie volaním funkcie
sl_usbd_cdc_acm_add_to_configuration() .
Nižšie uvedený príklad ukazuje, ako volať funkciu sl_usbd_cdc_acm_add_to_configuration().
Example – Volanie funkcie USBD ACM sl_usbd_cdc_acm_add_to_configuration()

stav sl_status_t;

stav = sl_usbd_cdc_acm_add_to_configuration(číslo_podtriedy,

(1)

config_nbr_fs);

(2)

ak (stav ! SL_STATUS_OK) {

/* Vyskytla sa chyba. Sem by sa malo pridať spracovanie chýb. */

}

aaa (1) Číslo triedy ss, ktoré sa má pridať do konfigurácie vrátenej funkciou sl_usbd_cdc_acm_create_instance(). (2) Číslo konfigurácie (tu sa pridáva do konfigurácie s plnou rýchlosťou).
Registrácia spätných volaní upozornení na udalosti
Trieda CDC ACM Serial môže vašu aplikáciu upozorniť na akékoľvek zmeny v riadení linky alebo kódovaní prostredníctvom funkcií spätného volania oznámení. Štruktúra funkcií spätného volania môže byť odovzdaná ako argument počas vytvárania inštancie ACM. Upozorňujeme, že tieto spätné volania sú voliteľné. Napr.ample – Registrácia spätných volaní CDC ACM ilustruje použitie funkcií registrácie spätných volaní. Príkladample – Implementácia spätných volaní CDC ACM ukazuje exampimplementácie funkcií spätného volania.
Example – Registrácia spätných volaní CDC ACM

Copyright © 2025 Silicon Laboratories. Všetky práva vyhradené.

25/174

Koniecview

uint8_t podtrieda_nbr; stav_sl_status_t;
sl_usbd_cdc_acm_callbacks_t sli_usbd_cdc_acm_callbacks = { app_usbd_cdc_acm_connect, app_usbd_cdc_acm_disconnect, app_usbd_cdc_acm_line_control_changed, app_usbd_cdc_acm_line_coding_changed, };
stav = sl_usbd_cdc_acm_create_instance(64u, SL_USBD_ACM_SERIAL_CALL_MGMT_DATA_CCI_DCI | SL_USBD_ACM_SERIAL_CALL_MGMT_DEV, spätné volania (sli_usbd_cdc_acm_callbacks), číslo podtriedy (subclass_nbr);
ak (status ! SL_STATUS_OK) { /* Vyskytla sa chyba. Sem by sa malo pridať spracovanie chýb. */ }
Example – Implementácia spätných volaní CDC ACM

bool app_usbd_cdc_acm_line_coding_changed (uint8_t

číslo_podtriedy,

sl_usbd_cdc_acm_line_coding_t *p_line_coding)

{

uint32_t nová prenosová rýchlosť;

uint8_t parita_nová;

uint8_t nové_stop_bity;

uint8_t dátové_bity_nové;

/* ÚLOHA Použiť nové kódovanie linky.*/ baudrate_new = p_line_coding->BaudRate; parity_new = p_line_coding->Parity; stop_bits_new = p_line_coding->StopBits; data_bits_new = p_line_coding->DataBits;

vrátiť (pravda);

(1)

}

void app_usbd_cdc_acm_line_control_changed (uint8_t podtrieda_číslo, uint8_t udalosť, uint8_t udalosť_changed)
{ bool rts_state; bool rts_state_changed; bool dtr_state; bool dtr_state_changed; bool brk_state; bool brk_state_changed;

/* ÚLOHA Použiť ovládanie nového riadku. */ rts_state = ((event & SL_USBD_CDC_ACM_CTRL_RTS) ! 0) ? true : false; rts_state_changed = ((event_changed & SL_USBD_CDC_ACM_CTRL_RTS) ! 0) ? true : false; dtr_state = ((event & SL_USBD_CDC_ACM_CTRL_DTR) ! 0) ? true : false; dtr_state_changed = ((event_changed & SL_USBD_CDC_ACM_CTRL_DTR) ! 0) ? true : false; brk_state = ((event & SL_USBD_CDC_ACM_CTRL_BREAK) ! 0) ? true : false; brk_state_changed = ((udalosť_zmenená & SL_USBD_CDC_ACM_CTRL_BREAK) ! 0) ? pravda : nepravda;
}

(1) Je dôležité vrátiť tejto funkcii hodnotu false, ak sa nepodarilo použiť kódovanie riadkov. V opačnom prípade vrátiť hodnotu true.
Komunikácia pomocou triedy CDC ACM
Stav sériového čísla
Kódovanie linky Riadenie linky

Copyright © 2025 Silicon Laboratories. Všetky práva vyhradené.

26/174

Koniecview

Komunikácia inštancií podtriedy stavu linky
Stav sériového čísla
Linkové kódovanie
Hostiteľský USB riadi kódovanie linky (prenosová rýchlosť, parita atď.) zariadenia CDC ACM. V prípade potreby je za nastavenie kódovania linky zodpovedná aplikácia. Na načítanie a nastavenie aktuálneho kódovania linky sú k dispozícii dve funkcie, ako je popísané v tabuľke nižšie.
Tabuľka – Funkcie kódovania linky CDC ACM

Funkcia
sl_usbd_cdc_acm_ge t_line _co d ing ()
sl_usbd_cdc_acm_se t_line _co d ing ()

Popis
Vaša aplikácia môže získať aktuálne nastavenia kódovania riadkov buď z hostiteľa pomocou požiadaviek SetLineCoding, alebo pomocou funkcie sl_usbd_cdc_acm_set_line_coding().
Vaša aplikácia môže nastaviť kódovanie linky. Hostiteľ môže tieto nastavenia načítať pomocou požiadavky GetLineCoding.

Riadenie linky
Hostiteľský USB rozhranie riadi riadenie linky (piny RTS a DTR, signál prerušenia atď.) zariadenia CDC ACM. V prípade potreby je za použitie riadenia linky zodpovedná vaša aplikácia. K dispozícii je funkcia na načítanie a nastavenie aktuálneho riadenia linky, ako je popísané v tabuľke nižšie.
Tabuľka – Funkcie riadenia linky CDC ACM

Funkcia
sl_usb d _cd c_acm_ge e t_line _contr o l_state ()

Vaša aplikácia môže získať aktuálny stav ovládacieho riadku nastavený hostiteľom pomocou požiadavky SetControlLineState.

Stav riadku
Hostiteľské zariadenie USB pravidelne načítava stav linky. Vaša aplikácia musí aktualizovať stav linky pri každej zmene. V prípade potreby je za nastavenie stavu linky zodpovedná vaša aplikácia. Na načítanie a nastavenie aktuálnych ovládacích prvkov linky sú k dispozícii dve funkcie, ako je popísané v tabuľke nižšie.
Tabuľka – Funkcie stavu linky CDC ACM

Funkcia
sl_usb d _cd c_acm_set _line _state _e ve nt()
sl_usbd_cdc_acm_cle ar_line _state _e ve nt()

Vaša aplikácia môže nastaviť ľubovoľnú udalosť (udalosti) stavu linky. Pri nastavovaní stavu linky sa hostiteľovi odošle prerušenie IN prenosu, ktoré informuje o zmene stavu sériovej linky.
Aplikácia dokáže vymazať dve udalosti stavu linky: detekciu nosnej frekvencie vysielača a detekciu nosnej frekvencie prijímača. Všetky ostatné udalosti sa automaticky vymažú pomocou podtriedy sériovej emulácie ACM.

Komunikácia s inštanciami podtriedy

Podtrieda ACM od spoločnosti Silicon Labs ponúka nasledujúce funkcie na komunikáciu s hostiteľom. Viac informácií o parametroch functions9 nájdete v referenčnej príručke funkcií podtriedy ACM od CDC.

Názov funkcie
sl_usb d _cd c_acm_ čítanie () sl_usb d _cd c_acm_write ()

Prevádzka
Prijíma dáta z hostiteľa cez koncový bod hromadného OUT. Táto funkcia blokuje. Odosiela dáta do hostiteľa cez koncový bod hromadného IN. Táto funkcia blokuje.

Copyright © 2025 Silicon Laboratories. Všetky práva vyhradené.

27/174

Koniecview

Tabuľka – Súhrn komunikačného API CDC ACM aaaaa sl_usbd_cdc_acm_read() a sl_usbd_cdc_acm_write() poskytujú synchrónnu komunikáciu, čo znamená, že prenos blokuje. Inými slovami, po volaní funkcie sa aplikácia zablokuje, kým sa prenos nedokončí s chybou alebo bez nej. Je možné zadať časový limit, aby sa predišlo večnému čakaniu.ampnižšie zobrazuje príklad na čítanie a zápisampsúbor, ktorý prijíma dáta z hostiteľa pomocou koncového bodu bulk OUT a odosiela dáta do hostiteľa pomocou koncového bodu bulk IN.
Výpis – Sériové čítanie a zápis Example

__ALIGNED(4) uint8_t rx_buf[2];

__ALIGNED(4) uint8_t tx_buf[2];

uint32_t

xfer_len;

stav_sl_t

stav;

stav = sl_usbd_cdc_acm_read(číslo_podtriedy,

(1)

rx_buf,

(2)

2u,

0u,

(3)

&dĺžka_xfer);

ak (stav ! SL_STATUS_OK) {

/* Vyskytla sa chyba. Sem by sa malo pridať spracovanie chýb. */

}

stav = sl_usbd_cdc_acm_write(číslo_podtriedy,

(1)

tx_buf,

(4)

2u,

0u,

(3)

&dĺžka_xfer);

ak (stav ! SL_STATUS_OK) {

/* Vyskytla sa chyba. Sem by sa malo pridať spracovanie chýb. */

}

T aaaaa M (1) Číslo inštancie triedy ss vytvorené pomocou sl_usbd_cdc_acm_create_instance() poskytuje interný odkaz na podtriedu AC na smerovanie prenosu do správneho hromadného koncového bodu OUT alebo IN. (2) Vaša aplikácia musí zabezpečiť, aby vyrovnávacia pamäť poskytnutá funkcii bola dostatočne veľká na to, aby sa do nej zmestili všetky dáta. V opačnom prípade môžu nastať problémy so synchronizáciou. (3) Aby ste sa vyhli nekonečnému blokovaniu, zadajte časový limit vyjadrený v milisekundách. Hodnota 809 spôsobí, že úloha aplikácie bude čakať večne. (4) Aplikácia poskytuje inicializovanú vyrovnávaciu pamäť pre prenos.

Copyright © 2025 Silicon Laboratories. Všetky práva vyhradené.

28/174

Koniecview
Koniecview

Trieda HID zariadenia USB

Trieda HID zariadenia USB nadview Potreby zdrojov triedy HID zariadenia USB z jadra Konfigurácia triedy HID zariadenia USB Programovacia príručka triedy HID zariadenia USB Úloha Periodické vstupné hlásenia HID
Táto časť popisuje triedu zariadení s rozhraním Human Interface Device (HID) podporovaných zariadením USB od spoločnosti Silicon Labs.
Trieda HID zahŕňa zariadenia používané ľuďmi na ovládanie počítačových operácií, ako sú klávesnice, myši, polohovacie zariadenia a herné zariadenia.
Triedu HID možno použiť aj v kompozitnom zariadení, ktoré obsahuje ovládacie prvky, ako sú gombíky, prepínače, tlačidlá a posuvníky. NapríkladampOvládanie hlasitosti, stlmenia zvuku a ovládanie zvuku v audio náhlavnej súprave je riadené funkciou HID náhlavnej súpravy. Trieda HID si môže vymieňať dáta na akýkoľvek účel iba pomocou prenosov riadenia a prerušenia.
Trieda HID je jednou z najstarších a najpoužívanejších tried USB. Všetky hlavné hostiteľské operačné systémy poskytujú natívny ovládač na správu zariadení HID, a preto s triedou HID spolupracuje množstvo zariadení špecifických dodávateľov. Táto trieda zahŕňa aj rôzne typy výstupných položiek, ako sú LED diódy, zvuk, hmatová spätná väzba atď.
Implementácia HID spĺňa nasledujúce špecifikácie:
Definícia triedy zariadení pre zariadenia s rozhraním Human Interface (HID), 27. 6. 01, verzia 1.11. Tabuľky použitia univerzálnej sériovej zbernice HID, 28. 10. 2004, verzia 1.12.
Trieda HID zariadenia USB nadview
Koniecview
Zariadenie HID sa skladá z nasledujúcich koncových bodov:
Dvojica riadiacich koncových bodov IN a OUT nazývaných predvolený koncový bod, koncový bod prerušenia IN, voliteľný koncový bod prerušenia OUT.
V nasledujúcej tabuľke je popísané použitie rôznych koncových bodov:
Tabuľka – Použitie koncových bodov triedy HID

Použitie smeru koncového bodu

Ovládanie IN
Kontrola
OUT
Prerušenie VSTUP
Prerušiť
OUT

Zariadenie-hostiteľ
Hostiteľ-zariadenie
Zariadenie-hostiteľ
Hostiteľ-zariadenie

Štandardné požiadavky na enumeráciu, požiadavky špecifické pre triedu a dátovú komunikáciu (vstup, hlásenia funkcií odoslané hostiteľovi s požiadavkou GET_REPORT). Štandardné požiadavky na enumeráciu, požiadavky špecifické pre triedu a dátovú komunikáciu (výstup, hlásenia funkcií prijaté z hostiteľa s požiadavkou SET_REPORT). Dátová komunikácia (vstup a hlásenia funkcií).
Dátová komunikácia (výstupné a funkcionálne správy).

Správa

Copyright © 2025 Silicon Laboratories. Všetky práva vyhradené.

29/174

Koniecview

Hostiteľ a zariadenie HID si vymieňajú dáta pomocou správ. Správa obsahuje formátované dáta poskytujúce informácie o ovládacích prvkoch a iných fyzických entitách zariadenia HID. Ovládací prvok je manipulovateľný používateľom a ovláda určitý aspekt zariadenia. NapríkladampOvládací prvok môže byť tlačidlo na myši alebo klávesnici, prepínač atď. Iné entity informujú používateľa o stave určitých funkcií zariadenia. NapríkladampNapríklad LED diódy na klávesnici informujú používateľa o zapnutom Caps Lock, aktívnej numerickej klávesnici atď.
Hostiteľ chápe formát a použitie údajov zostavy analýzou obsahu deskriptora zostavy. Analýzu obsahu vykonáva analyzátor. Deskriptor zostavy popisuje údaje poskytované každým ovládacím prvkom v zariadení. Skladá sa z položiek, ktoré sú informáciami o zariadení a pozostávajú z 1-bajtového prefixu a premenlivej dĺžky.
údaje. Viac informácií o formáte položky nájdete v
1.11=, oddiel 5.6 a 6.2.2.
Existujú tri hlavné typy položiek:
Hlavná položka definuje alebo zoskupuje určité typy dátových polí.
Globálna položka popisuje dátové charakteristiky ovládacieho prvku.
Lokálna položka popisuje dátové charakteristiky ovládacieho prvku.
Každý typ položky je definovaný rôznymi funkciami. Funkcia položky sa môže nazývať aj tagFunkciu položky možno chápať ako podpoložku, ktorá patrí k jednému z troch hlavných typov položiek. Nasledujúca tabuľka poskytuje stručný prehľadview funkcií položky v každom type položky. Úplný popis položiek v každej kategórii nájdete v časti
Tabuľka – Popis funkcie položky pre každý typ položky

Položka Typ položky Funkcia

Popis

Hlavný vstup

Opisuje informácie o údajoch poskytovaných jednou alebo viacerými fyzickými kontrolami.

Hlavný výstup Popisuje údaje odoslané do zariadenia.

Hlavná vlastnosť

Opisuje informácie o konfigurácii zariadenia odoslané do zariadenia alebo prijaté zo zariadenia, ktoré ovplyvňujú celkové správanie zariadenia alebo jednej z jeho súčastí.

Položky súvisiace s hlavnou skupinou kolekcií (vstup, výstup alebo funkcia).

Hlavný koniec Zatvorí kolekciu. Kolekcia

Copyright © 2025 Silicon Laboratories. Všetky práva vyhradené.

30/174

Koniecview

Položka Typ položky Funkcia

Popis

Stránka globálneho používania

Identifikuje funkciu dostupnú v zariadení.

Globálna logická hodnota Definuje dolnú hranicu hlásených hodnôt v logických jednotkách. Minimum

Globálna logická hodnota Definuje hornú hranicu hlásených hodnôt v logických jednotkách. Maximálna

Globálne fyzikálne Definuje dolnú hranicu hlásených hodnôt vo fyzikálnych jednotkách, teda logické minimum vyjadrené vo fyzikálnych jednotkách.

Globálne fyzikálne Definuje hornú hranicu hlásených hodnôt vo fyzikálnych jednotkách, teda logické maximum vyjadrené vo fyzikálnych jednotkách.

Globálna jednotka

Označuje exponent jednotky v desiatkovej sústave. Exponent sa pohybuje od -8 do +7.

Exponent

Globálna jednotka

Označuje jednotku hlásených hodnôt. Napríklad jednotky dĺžky, hmotnosti, teploty atď.

Globálna veľkosť prehľadu

Označuje veľkosť polí hlásenia v bitoch.

Globálne ID zostavy Označuje predponu pridanú ku konkrétnej zostave.

Globálny počet hlásení

Označuje počet dátových polí pre položku.

Globálny tlak

Umiestni kópiu globálnej tabuľky stavov položiek na zásobník CPU.

Globálny pop

Nahradí tabuľku stavov položiek poslednou štruktúrou zo zásobníka.

Lokálne použitie

Predstavuje index na označenie konkrétneho použitia v rámci stránky použitia. Označuje odporúčané použitie dodávateľom pre konkrétny ovládací prvok alebo skupinu ovládacích prvkov. Použitie poskytuje vývojárovi aplikácie informácie o tom, čo ovládací prvok v skutočnosti meria.

Lokálne použitie

Definuje počiatočné použitie spojené s poľom alebo bitmapou.

Minimum

Lokálne použitie

Definuje koncové použitie spojené s poľom alebo bitmapou.

Maximálne

Lokálne označenie Určuje časť tela použitú pre ovládací prvok. Index odkazuje na označenie vo fyzickej časti

Index

deskriptor.

Lokálne označenie Definuje index počiatočného označenia priradeného k poľu alebo bitmape. Minimálne

Lokálny designátor Definuje index koncového designátora priradeného k poľu alebo bitmape. Maximum

Lokálny index reťazcov

Index reťazca pre deskriptor reťazca. Umožňuje priradiť reťazec ku konkrétnej položke alebo ovládaciemu prvku.

Lokálny reťazec

Určuje prvý index reťazca pri priraďovaní skupiny sekvenčných reťazcov k ovládacím prvkom v poli

Minimálna alebo bitmapová.

Miestne Miestne

Maximálny počet reťazcov
Oddeľovač

Určuje index posledného reťazca pri priraďovaní skupiny sekvenčných reťazcov k ovládacím prvkom v poli alebo bitovej mape.
Definuje začiatok alebo koniec množiny lokálnych položiek.

Dáta ovládacieho prvku musia definovať aspoň nasledujúce položky:
Vstup, výstup alebo funkcia Hlavné položky Použitie Lokálna položka Použitie Stránka Globálna položka Logické minimum Globálna položka Logické maximum Globálna položka Veľkosť zostavy Globálna položka

Copyright © 2025 Silicon Laboratories. Všetky práva vyhradené.

31/174

Koniecview
Globálna položka počtu hlásení Nasledujúca tabuľka zobrazuje znázornenie obsahu deskriptora hlásenia myši z pohľadu hostiteľského analyzátora HID. Myš má tri tlačidlá (ľavé, pravé a koliesko). Kód uvedený v príkladeampNižšie je uvedený implementačný kód zodpovedajúci tejto reprezentácii deskriptora hlásenia myši.
Obrázok – Obsah deskriptora hlásenia z hostiteľského analyzátora HID View

(1) Funkcia položky Stránka používania určuje všeobecnú funkciu zariadenia. V tomto príkladeampt. j. zariadenie HID patrí do
všeobecné ovládanie pracovnej plochy.
(2) Kolekcia Aplikácia zoskupuje hlavné položky, ktoré majú spoločný účel a môžu byť známe aplikáciám. V diagrame sa skupina skladá z troch hlavných vstupných položiek. Pre túto kolekciu sa odporúča použiť ovládacie prvky myš, ako je naznačené položkou Použitie. (3) Vnorené kolekcie možno použiť na poskytnutie ďalších podrobností o použití jedného ovládacieho prvku alebo skupiny ovládacích prvkov aplikáciám. V tomto príkladeampFyzická kolekcia, vnorená do aplikácie kolekcie, sa skladá z rovnakých troch vstupných položiek, ktoré tvoria aplikáciu kolekcie. Fyzická kolekcia sa používa pre množinu dátových položiek, ktoré predstavujú dátové body zhromaždené v jednom geometrickom bode. V príkladeampnapr. navrhované použitie je ukazovateľ, ako je naznačené položkou Použitie. Tu sa použitie ukazovateľa vzťahuje na súradnice polohy myši a systémový softvér preloží súradnice myši do pohybu kurzora na obrazovke. (4) Možné sú aj vnorené stránky použitia, ktoré poskytujú viac podrobností o určitom aspekte v rámci všeobecnej funkcie zariadenia. V tomto prípade sú zoskupené dve položky Vstupy, ktoré zodpovedajú tlačidlám myši. Jedna položka Vstup definuje tri tlačidlá myši (pravé, ľavé a koliesko) z hľadiska počtu dátových polí pre položku (položka Počet hlásení), veľkosti dátového poľa (položka Veľkosť hlásenia) a možných hodnôt pre každé dátové pole (položky Minimum a Maximum použitia, Logické minimum a Maximum). Druhá položka Vstup je 13-bitová konštanta, ktorá umožňuje zarovnanie vstupných údajov hlásenia na hranici bajtov. Táto položka Vstup sa používa iba na účely dopĺňania. (5) Ďalšia vnorená stránka použitia, ktorá odkazuje na generický ovládací prvok pracovnej plochy, je definovaná pre súradnice polohy myši. Pre túto stránku použitia položka Vstup popisuje dátové polia zodpovedajúce osi x a y, ako je určené dvoma položkami Použitie
položky.
Po analýze predchádzajúceho obsahu deskriptora hlásenia myši je analyzátor HID hostiteľa schopný interpretovať vstupné dáta hlásenia odoslané zariadením s prerušením prenosu IN alebo ako odpoveď na požiadavku GET_REPORT. Vstupné dáta hlásenia zodpovedajúce deskriptoru hlásenia myši sú znázornené na obrázku – Obsah deskriptora hlásenia z analyzátora HID hostiteľa. View is

Copyright © 2025 Silicon Laboratories. Všetky práva vyhradené.

32/174

Koniecview

zobrazené v tabuľke nižšie. Celková veľkosť údajov hlásenia je 4 bajty. Cez ten istý koncový bod je možné odosielať rôzne typy hlásení. Na účely rozlíšenia rôznych typov hlásení sa k dátovému hláseniu pridáva 1-bajtová predpona ID hlásenia. Ak bolo v exampcelkovej veľkosti hlásenia myši by bola 5 bajtov.
Tabuľka – Vstupná správa odoslaná hostiteľovi a zodpovedajúca stavu 3-tlačidlovej myši

Bitová odchýlka
0 1 2 3 16 24

Počet bitov 1 1 1 13 8 8

Popis Tlačidlo 1 (ľavé tlačidlo). Tlačidlo 2 (pravé tlačidlo). Tlačidlo 3 (tlačidlo kolieska). Nepoužíva sa. Poloha na osi X. Poloha na osi Y.

Fyzický deskriptor označuje časť alebo časti tela určené na aktiváciu ovládacieho prvku alebo ovládacích prvkov. Aplikácia môže tieto informácie použiť na priradenie funkcie ovládaciemu prvku zariadenia. Fyzický deskriptor je voliteľný deskriptor špecifický pre triedu a väčšina zariadení má z jeho používania malý úžitok. Pozrite si
Potreby zdrojov triedy HID pre zariadenie USB od spoločnosti Core

Vždy, keď pridáte inštanciu triedy HID do konfigurácie USB volaním funkcie sl_usbd_hid_add_to_configuration(), z jadra sa alokujú nasledujúce zdroje.

Zdroj
Rozhrania Alternatívne rozhrania Koncové body Skupiny rozhraní

Množstvo
1 1 1 (2, ak je povolený koncový bod prerušenia OUT) 0

Upozorňujeme, že tieto čísla sú pre každú konfiguráciu. Pri nastavovaní konfiguračných hodnôt SL_USBD_INTERFACE_QUANTITY, SL_USBD_ALT_INTERFACE_QUANTITY, SL_USBD_INTERFACE_GROUP_QUANTITY a SL_USBD_DESCRIPTOR_QUANTITY nezabudnite zohľadniť, koľko konfigurácií bude trieda pridaná. V prípade konfiguračnej hodnoty SL_USBD_OPEN_ENDPOINTS_QUANTITY, keďže koncové body sa otvárajú iba vtedy, keď hostiteľ nastaví konfiguráciu, stačí zohľadniť počet potrebných koncových bodov pre inštanciu triedy.
Konfigurácia triedy HID zariadenia USB

Na konfiguráciu triedy HID sa používajú dve skupiny konfiguračných parametrov:
Konfigurácie špecifické pre aplikáciu triedy HID zariadenia USB Konfigurácie inštancií triedy HID zariadenia USB
Konfigurácie špecifické pre aplikáciu pre triedu HID zariadenia USB

Najprv, ak chcete použiť modul triedy HID pre USB zariadenia od spoločnosti Silicon Labs, upravte definície konfigurácie HID počas kompilácie podľa potrieb vašej aplikácie. Sú zoskupené v hlavičke sl_usbd_core_config.h. file v sekcii HID. Možno ich rozdeliť do dvoch sekcií, konfigurácie množstva a konfigurácie úloh HID. Účelom konfigurácií množstva je informovať modul zariadenia USB o tom, koľko objektov USB HID má alokovať.
V nasledujúcej tabuľke sú popísané jednotlivé definície konfigurácie.
Tabuľka – Definície konfigurácie HID zariadenia USB

Copyright © 2025 Silicon Laboratories. Všetky práva vyhradené.

33/174

Koniecview

Názov konfigurácie
MNOŽSTVO_INŠTANCIE_SL_USBD_HID_CL ASS_I
MNOŽSTVO_KONFIGURÁCIE_SL_USBD_HID
MNOŽSTVO ID_SPRÁVY_SL_USBD_HID
SL_USBD_HID_PUSH_P OP_ITEM_QUANTITY
SL_USBD_HID_TIMER_T ASK_STACK_SIZE
SL_USBD_HID_TIMER_T ASK_PRIORITY

Popis
Počet inštancií triedy, ktoré alokujete volaním funkcie
sl_usbd_hid_create_instance().
Počet konfigurácií. Inštancie triedy HID je možné pridať do jednej alebo viacerých konfigurácií aaaa pomocou funkcie sl_usbd_hid_add_to_configuration(). Konfiguruje celkový počet ID hlásení, ktoré sa majú alokovať.
Konfiguruje celkový počet položiek Push/Pop, ktoré sa majú alokovať.
Úloha časovača spracováva všetky operácie HID založené na časovači. Táto konfigurácia umožňuje nastaviť veľkosť zásobníka (v počte bajtov). Priorita úlohy HID. Toto je priorita CMSIS-RTOS2.

Predvolená hodnota
2 1 2 0 2048
Vysoká priorita os

Konfigurácie inštancií triedy HID zariadenia USB Podtrieda Vytvorenie inštancie triedy
kód krajiny protokolu
interval_in a interval_out p_hid_callback Deskriptor hlásenia triedy HID ExampTáto časť definuje konfigurácie súvisiace s inštanciami triedy HID.
Vytvorenie inštancie triedy
Vytvorenie inštancie triedy HID sa vykonáva volaním funkcie sl_usbd_hid_create_instance(), ktorá obsahuje niekoľko konfiguračných argumentov, ktoré sú popísané nižšie.
podtrieda
Kód podtriedy HID. Možné hodnoty sú:
SL_USBD_HID_SUBCL ASS_NONE SL_USBD_HID_SUBCL ASS_BOOT
Zariadenie HID, ktoré používa podtriedu bootovania, musí používať štandardné formáty hlásení. Viac informácií o kódoch podtried nájdete v časti 4.2 špecifikácie HID, revízia 1.11.
protokol
Protokol používaný zariadením HID. Možné hodnoty sú:
SL_USBD_HID_PROTOCOL_NONE SL_USBD_HID_PROTOCOL_KBD SL_USBD_HID_PROTOCOL_MOUSE
Ak je vašou funkciou HID myš, protokol by mal byť nastavený na SL_USBD_HID_PROTOCOL_MOUSE. Ak je to klávesnica, mal by byť nastavený na SL_USBD_HID_PROTOCOL_KBD. V opačnom prípade by mal byť protokol nastavený na SL_USBD_HID_PROTOCOL_NONE. Viac informácií o kódoch podtried nájdete v časti 4.3 špecifikácie HID, revízia 1.11.
kód_krajiny
ID kódu krajiny. Možné hodnoty sú:
SL_USBD_HID_COUNTRY_CODE_NOT_SUPPORTED

Copyright © 2025 Silicon Laboratories. Všetky práva vyhradené.

34/174

Koniecview
SL_USBD_HID_KÓD_KRAJINY_ARABSKÝ SL_USBD_HID_KÓD_KRAJINY_BELGICKÝ SL_USBD_HID_KÓD_KRAJINY_KANADSKÝ_DVOJJAZYČNÝ SL_USBD_HID_KÓD_KRAJINY_KANADSKÝ_FRANCÚZSKY SL_USBD_HID_KÓD_KRAJINY_ČESKÁ_REPUBLIKA SL_USBD_HID_KÓD_KRAJINY_DÁNSKY SL_USBD_HID_KÓD_KRAJINY_FÍNSKY SL_USBD_HID_KÓD_KRAJINY_FRANCÚZSKY SL_USBD_HID_KÓD_KRAJINY_NEMECKÝ SL_USBD_HID_KÓD_KRAJINY_GRÉCKY SL_USBD_HID_KÓD_KRAJINY_HEBREJČINSKÝ SL_USBD_HID_KÓD_KRAJINY_MAĎARSKY SL_USBD_HID_KÓD_KRAJINY_MEDZINÁRODNÝ SL_USBD_HID_KÓD_KRAJINY_TALIANSKY SL_USBD_HID_COUNTRY_CODE_JAPONSKO_KATAKANA SL_USBD_HID_COUNTRY_CODE_KÓREJSKÝ SL_USBD_HID_COUNTRY_CODE_L AMERICKÝ SL_USBD_HID_COUNTRY_CODE_HOLANDSKY A HOLANDSKÝ SL_USBD_HID_COUNTRY_CODE_NÓRSKY SL_USBD_HID_COUNTRY_CODE_PERZSKÝ_FARŠSKÝ SL_USBD_HID_COUNTRY_CODE_POLSKÝ A SL_USBD_HID_COUNTRY_CODE_PORTUGALSKÝ SL_USBD_HID_COUNTRY_CODE_RUSKO SL_USBD_HID_COUNTRY_CODE_SLOVENSKO SL_USBD_HID_COUNTRY_CODE_ŠPANIELSKY SL_USBD_HID_COUNTRY_CODE_ŠVÉDSKY SL_USBD_HID_COUNTRY_CODE_ŠVAJČIARSKY_FRANCÚZSKY SL_USBD_HID_KÓD_KRAJINY_ŠVAJČIARSKO_NEMECKO SL_USBD_HID_KÓD_KRAJINY_ŠVAJČIARSKO A SL_USBD_HID_KÓD_KRAJINY_TAJVAN SL_USBD_HID_KÓD_KRAJINY_TUREČINA_Q SL_USBD_HID_KÓD_KRAJINY_UK SL_USBD_HID_KÓD_KRAJINY_US SL_USBD_HID_KÓD_KRAJINY_JUH OSL AVIA SL_USBD_HID_KÓD_KRAJINY_TUREČINA_F
Kód krajiny identifikuje, pre ktorú krajinu je hardvér lokalizovaný. Väčšina hardvéru nie je lokalizovaná, a preto by táto chyba mala byť SL_USBD_HID_COUNTRY_CODE_NOT_SUPPORTED (0). Klávesnice však môžu toto pole použiť na označenie jazyka klávesov.
Viac informácií o kódoch krajín nájdete v časti 6.2.1 špecifikácie HID, revízia 1.11.
interval_vstup a interval_výstup
interval_in a interval_out predstavujú interval dotazovania koncového bodu prerušenia IN a koncového bodu prerušenia OUT.
Toto predstavuje interval dotazovania koncového bodu v milisekundách. Nastavenie tejto hodnoty závisí od toho, ako často je vaše zariadenie náchylné na generovanie novej správy pre hostiteľa. Napríklad, ak sa správa generuje každých 16 milisekúnd, interval by mal byť 16 alebo menej.
Hodnota musí byť mocninou čísla 2 (1, 2, 4, 8, 16 atď.).
Hodnota interval_out v lue sa ignoruje, ak je hodnota ctrl_rd_en nastavená na hodnotu true.
p_hid_callback
aaaa p_hid_callback je ukazovateľ na štruktúru typu sl_usbd_hid_callbacks_t. Jeho účelom je poskytnúť HID Class ss sadu callback funkcií, ktoré sa majú volať, keď nastane udalosť HID.

Copyright © 2025 Silicon Laboratories. Všetky práva vyhradené.

35/174

Koniecview

Nie všetky spätné volania sú povinné a v premennej štruktúry callbacks je možné odovzdať nulový ukazovateľ (NULL), keď spätné volanie nie je potrebné. Nasledujúca tabuľka popisuje každé konfiguračné pole dostupné v tejto konfiguračnej štruktúre.
Tabuľka – konfiguračná štruktúra sl_usbd_hid_callbacks_t

Polia

Popis

Podpis funkcie

.povoliť .zakázať .get_report_desc
.get_phy_desc
.set_output_report .get_feature_report .set_feature_report

Volá sa, keď je inštancia triedy USB úspešne povolená. Volá sa, keď je inštancia triedy USB zakázaná.
Volá sa počas vytvárania inštancie HID na odovzdanie deskriptora hlásenia. Pre každú z vašich funkcií HID musíte zadať deskriptor hlásenia. Deskriptor hlásenia indikuje hostiteľovi, ako sa má analyzovať pravidelné hlásenie, ktoré bude zariadenie odosielať. Písanie vlastného deskriptora hlásenia môže byť náročné, a preto existuje niekoľko zdrojov, ktoré vám s tým pomôžu. Toto je jediná povinná funkcia spätného volania. Volá sa počas vytvárania inštancie HID na odovzdanie fyzického deskriptora. Fyzický deskriptor je deskriptor, ktorý poskytuje informácie o konkrétnej časti alebo častiach ľudského tela, ktoré aktivujú ovládací prvok alebo ovládacie prvky. Viac informácií o fyzických deskriptoroch nájdete v časti 6.2.3 špecifikácie HID, revízia 1.11. Fyzický deskriptor je voliteľný a väčšinou sa ignoruje. Vyrovnávacia pamäť odovzdaná tu môže byť nastavená na NULL a dĺžka nastavená na 0. Volá sa, keď hostiteľ nastaví hlásenie, ako je popísané vo vašom deskriptore hlásenia (keď odosiela hlásenie).
Volá sa, keď hostiteľ požiada o správu o funkcii, ako je popísané vo vašom deskriptore správy.
Volá sa, keď hostiteľ nastaví správu o funkcii, ako je popísané v deskriptore správy.

void app_usbd_hid_enable(uint8_t class_nbr); void app_usbd_hid_disable(uint8_t class_nbr); void app_usbd_hid_get_report_desc(uint8_t class_nbr, const uint8_t *p_report_ptr, uint16_tp_report_len);
void app_usbd_hid_get_phy_desc(uint8_t class_nbr, const uint8_t *p_report_ptr, uint16_tp_report_len);
void app_usbd_hid_set_output_report(uint8_t class_nbr, uint8_t report_id, uint8_t *p_report_buf, uint16_t report_len); void app_usbd_hid_get_feature_report(uint8_t class_nbr, uint8_t report_id, uint8_t *p_report_buf, uint16_t report_len); void app_usbd_hid_set_feature_report(uint8_t class_nbr, uint8_t report_id, uint8_t *p_report_buf, uint16_t report_len);

.get_protocol

Načíta aktuálny aktívny protokol.

void app_usbd_hid_get_protocol(uint8_t class_nbr, uint8_t *p_protocol);

.set_protocol

Nastaví aktuálny aktívny protokol.

void app_usbd_hid_set_protocol(uint8_t class_nbr, uint8_t protocol);

Deskriptor hlásenia triedy HID Example

Trieda HID od spoločnosti Silicon Labsampaplikácia poskytuje exampdeskriptora správy pre jednoduchú myš. PríkladampNižšie uvedený obrázok zobrazuje deskriptor hlásenia myši.
Example – Deskriptor hlásenia myši

statický uint8_t app_usbd_hid_report_desc[] = {

(1) (2)

SL_USBD_HID_GLOBÁLNA_STRANICA_POUŽITIA + 1, SL_USBD_HID_POUŽITIA_STRANICA_VŠEOBECNÉ_OVLÁDACIE_PRÍSTROJE_PLOCHY,

SL_USBD_HID_LOCAL_USAGE + 1, SL_USBD_HID_CA_MOUSE,

(3)

Copyright © 2025 Silicon Laboratories. Všetky práva vyhradené.

36/174

Koniecview

SL_USBD_HID_HLAVNÁ_KOLEKCIA +1, SL_USBD_HID_APLIKÁCIA_KOLEKCIE,(4)

SL_USBD_HID_LOCAL_USAGE +1, SL_USBD_HID_CP_POINTER,(5)

SL_USBD_HID_HLAVNÁ_KOLEKCIA +1, SL_USBD_HID_FYZICKÁ_KOLEKCIA,(6)

SL_USBD_HID_GLOBÁLNA_POUŽITÁ_PAGE +1, SL_USBD_HID_POUŽITÁ_PAGE_TLAČIDLO,(7)

SL_USBD_HID_LOCAL_USAGE_MIN +1,0 01,

SL_USBD_HID_LOCAL_USAGE_MAX +1,0 03,

SL_USBD_HID_GLOBAL_LOG_MIN +1,0 00,

SL_USBD_HID_GLOBAL_LOG_MAX +1,0 01,

SL_USBD_HID_GLOBAL_REPORT_COUNT +1,0 03,

SL_USBD_HID_GLOBAL_REPORT_SIZE +1,0 01,

SL_USBD_HID_HLAVNÝ_VSTUP +1, SL_USBD_HID_HLAVNÉ_ÚDAJE |

SL_USBD_HID_HLAVNÁ_PREMENNÁ |

SL_USBD_HID_MAIN_ABSOLUTE,

SL_USBD_HID_GLOBAL_REPORT_COUNT +1,0 01,(8)

SL_USBD_HID_GLOBAL_REPORT_SIZE +1,0 0D,

SL_USBD_HID_HLAVNÝ_VSTUP +1, SL_USBD_HID_HLAVNÁ_KONŠTANTA,(9)

SL_USBD_HID_GLOBÁLNA_STRANICA_POUŽITIA +1, SL_USBD_HID_POUŽITIA_STRANICA_VŠEOBECNÉ_OVLÁDACIE_PRÍSTROJE_PLOCHY,

SL_USBD_HID_LOCAL_USAGE +1, SL_USBD_HID_DV_X,

SL_USBD_HID_LOCAL_USAGE +1, SL_USBD_HID_DV_Y,

SL_USBD_HID_GLOBAL_LOG_MIN +1,0 81,

SL_USBD_HID_GLOBAL_LOG_MAX +1,0 7F,

SL_USBD_HID_GLOBAL_REPORT_SIZE +1,0 08,

SL_USBD_HID_GLOBAL_REPORT_COUNT +1,0 02,

SL_USBD_HID_HLAVNÝ_VSTUP +1, SL_USBD_HID_HLAVNÉ_ÚDAJE |

SL_USBD_HID_HLAVNÁ_PREMENNÁ |

SL_USBD_HID_HLAVNÝ_RELATÍVNY,

SL_USBD_HID_HLAVNÁ_KONIEC KOLEKCIE,(10)

SL_USBD_HID_HLAVNÁ_KONIEC KOLEKCIE

(11)};

(1) Tabuľka reprezentujúca deskriptor hlásenia myši je inicializovaná tak, že každý riadok zodpovedá krátkej položke. Tá je tvorená 1-bajtovým prefixom a 1-bajtovými dátami. Pozri viewspracované hostiteľským HID parserom na obrázku – Obsah deskriptora hlásenia z hostiteľského HID parsera View.
(2) Používa sa všeobecná stránka používania počítača.
(3) Na stránke Všeobecné používanie počítačov, používanie tag naznačuje, že skupina ovládacích prvkov slúži na ovládanie myši. Kolekcia myší sa zvyčajne skladá z dvoch osí (X a Y) a jedného, ​​dvoch alebo troch tlačidiel.
(4) Zbierka myší sa začala.
(5) V rámci kolekcie myší je použitie tag naznačuje presnejšie, že ovládacie prvky myši patria do kolekcie ukazovateľov. Kolekcia ukazovateľov je súbor osí, ktoré generujú hodnotu na smerovanie, indikovanie alebo poukazovanie zámerov používateľa na aplikáciu.
(6) Spustí sa zber ukazovateľov.
(7) Stránka Používanie tlačidiel definuje vstupnú položku zloženú z troch 1-bitových polí. Každé 1-bitové pole predstavuje tlačidlo myši 1, 2 a 3 a môže vrátiť hodnotu 0 alebo 1.
(8) Vstupná položka pre stránku s používaním tlačidiel je doplnená o 13 ďalších bitov.
(9) Na opis polohy myši pomocou osí X a Y je uvedená ďalšia stránka Generic Desktop Usage. Vstupná položka sa skladá z dvoch 8-bitových polí, ktorých hodnota môže byť v rozsahu od -127 do 127.
(10) Kolekcia ukazovateľov je uzavretá.
(11) Zbierka myší je uzavretá.
Stránka HID na USB.org

Copyright © 2025 Silicon Laboratories. Všetky práva vyhradené.

37/174

Koniecview
Fórum implementátorov USB (USB-IF) poskytuje nástroj s názvom „HID Descriptor Tool“ spolu s ďalšími informáciami o formáte deskriptora hlásení. Viac informácií nájdete na stránke http://www.usb.org/developers/hidpage/.
Sprievodca programovaním triedy HID pre zariadenia USB
Táto časť vysvetľuje, ako používať triedu HID. Inicializácia triedy HID zariadenia USB Pridanie inštancie triedy HID zariadenia USB do vášho zariadenia Komunikácia pomocou triedy HID zariadenia USB
Inicializácia triedy HID zariadenia USB
Ak chcete do zariadenia pridať funkcionalitu triedy HID, musíte najprv inicializovať triedu volaním funkcie sl_usbd_hid_init(). PríkladampNižšie uvedený obrázok ukazuje, ako volať funkciu sl_usbd_hid_init() pomocou predvolených argumentov. Viac informácií o konfiguračných argumentoch, ktoré sa majú odovzdať funkcii sl_usbd_hid_init(), nájdete v časti Konfigurácie špecifické pre aplikáciu triedy USB Device HID.
Example – Volanie funkcie sl_usbd_hid_init()
stav sl_status_t;
status = sl_usbd_hid_init(); if (status ! SL_STATUS_OK) { /* Vyskytla sa chyba. Sem by sa malo pridať spracovanie chýb. */
}
Pridanie inštancie triedy HID zariadenia USB do vášho zariadenia
Ak chcete do zariadenia pridať funkcie triedy HID, musíte vytvoriť inštanciu a potom ju pridať do konfigurácie (konfigurácií) zariadenia.
Vytvorenie inštancie triedy HID
Vytvorte inštanciu triedy HID volaním funkcie sl_usbd_hid_create_instance(). PríkladampNižšie uvedený príklad ukazuje, ako vytvoriť jednoduchú funkciu myši pomocou funkcie sl_usbd_hid_create_instance() s použitím predvolených argumentov. Viac informácií o konfiguračných argumentoch, ktoré sa majú odovzdať funkcii sl_usbd_hid_create_instance(), nájdete v časti Konfigurácie inštancií triedy HID zariadenia USB.
Example – Pridanie funkcie myši pomocou sl_usbd_hid_create_instance()

Copyright © 2025 Silicon Laboratories. Všetky práva vyhradené.

38/174

Koniecview
/* Globálne konštanty. */ statická konštanta uint8_t app_usbd_hid_mouse_report_desc[] = {
SL_USBD_HID_GLOBAL_USAGE_PAGE + 1, SL_USBD_HID_USAGE_PAGE_GENERIC_DESKTOP_CONTROLS, SL_USBD_HID_LOCAL_USAGE + 1, SL_USBD_HID_CA_MOUSE, SL_USBD_HID_MAIN_COLLECTION + 1, SL_USBD_HID_COLLECTION_APPLICATION, SL_USBD_HID_LOCAL_USAGE + 1, SL_USBD_HID_CP_POINTER, SL_USBD_HID_MAIN_COLLECTION + 1, SL_USBD_HID_COLLECTION_PHYSICAL, SL_USBD_HID_GLOBAL_USAGE_PAGE + 1, SL_USBD_HID_USAGE_PAGE_BUTTON, SL_USBD_HID_LOCAL_USAGE_MIN + 1, 0 01, SL_USBD_HID_LOCAL_USAGE_MAX + 1, 0 03, SL_USBD_HID_GLOBAL_LOG_MIN + 1, 0 00, SL_USBD_HID_GLOBAL_LOG_MAX + 1, 0 01, SL_USBD_HID_GLOBAL_REPORT_COUNT + 1, 0 03, SL_USBD_HID_GLOBAL_REPORT_SIZE + 1, 0 01, SL_USBD_HID_MAIN_INPUT + 1, SL_USBD_HID_MAIN_DATA | SL_USBD_HID_MAIN_VARIABLE | SL_USBD_HID_MAIN_ABSOLUTE, SL_USBD_HID_GLOBAL_REPORT_COUNT + 1, 0 01, SL_USBD_HID_GLOBAL_REPORT_SIZE + 1, 0 0D, SL_USBD_HID_MAIN_INPUT + 1, SL_USBD_HID_MAIN_CONSTANT, SL_USBD_HID_GLOBAL_USAGE_PAGE + 1, SL_USBD_HID_USAGE_PAGE_GENERIC_DESKTOP_CONTROLS, SL_USBD_HID_LOCAL_USAGE + 1, SL_USBD_HID_DV_X, SL_USBD_HID_LOCAL_USAGE + 1, SL_USBD_HID_DV_Y, SL_USBD_HID_GLOBAL_LOG_MIN + 1, 0 81, SL_USBD_HID_GLOBAL_LOG_MAX + 1, 0 7F, SL_USBD_HID_GLOBAL_REPORT_SIZE + 1, 0 08, SL_USBD_HID_GLOBAL_REPORT_COUNT + 1, 0 02, SL_USBD_HID_MAIN_INPUT + 1, SL_USBD_HID_MAIN_DATA | SL_USBD_HID_MAIN_VARIABLE | SL_USBD_HID_MAIN_RELATIVE, SL_USBD_HID_MAIN_ENDCOLLECTION, SL_USBD_HID_MAIN_ENDCOLLECTION };
/* Lokálne premenné.*/ uint8_t class_nbr; sl_status_t status;
sl_usbd_hid_callbacks_t app_usbd_hid_callbacks = { NULL, NULL, app_usbd_hid_get_report_desc, NULL, NULL, NULL, NULL, NULL, NULL };
void app_usbd_hid_get_report_desc(uint8_t class_nbr, const uint8_t **p_report_ptr, uint16_t *p_report_len)
{ (neplatné)číslo_triedy;
*p_report_ptr = app_usbd_hid_mouse_report_desc; *p_report_len = veľkosť(app_usbd_hid_mouse_report_desc); }
stav = sl_usbd_hid_create_instance(SL_USBD_HID_SUBCLASS_BOOT, SL_USBD_HID_PROTOCOL_MOUSE, SL_USBD_HID_COUNTRY_CODE_NOT_SUPPORTED, Ex_USBD_HID_Mouse_ReportDesc, sizeof(Ex_USBD_HID_Mouse_ReportDesc), 2u, 2u, true, &app_usbd_hid_callbacks, &class_nbr);
Copyright © 2025 Silicon Laboratories. Všetky práva vyhradené.

39/174

Koniecview
/* Vyskytla sa chyba. Sem by sa malo pridať spracovanie chýb. *
Pridanie inštancie triedy HID do konfigurácie (konfigurácií) vášho zariadenia Po vytvorení inštancie triedy HID ju môžete pridať do konfigurácie volaním funkcie
sl_usbd_hid_add_to_configuration() .
BývalýampNižšie uvedený príklad ukazuje, ako volať funkciu sl_usbd_hid_add_to_configuration().
Example – Volanie funkcie sl_usbd_hid_add_to_configuration()

stav sl_status_t;

sl_usbd_hid_add_to_configuration(číslo_triedy,

(1)

config_nbr_fs); (2)

ak (stav ! SL_STATUS_OK) {

/* Vyskytla sa chyba. Sem by sa malo pridať spracovanie chýb. */

}

(1) Číslo triedy, ktoré sa má pridať do konfigurácie vrátenej funkciou sl_usbd_hid_create_instance(). (2) Číslo konfigurácie (tu sa pridáva do konfigurácie Full-Speed).
Komunikácia pomocou zariadenia USB triedy HID
Komunikácia s inštanciou triedy Synchrónna komunikácia Komunikácia s inštanciou triedy Trieda HID ponúka nasledujúce funkcie na komunikáciu s hostiteľom.
Tabuľka – Súhrn komunikačného rozhrania API HID

Názov funkcie
sl_usb d _hid _re ad _sy nc() sl_usb d _hid _write _sy nc()

Operácia Prijíma dáta z hostiteľa cez koncový bod prerušenia OUT. Táto funkcia je blokujúca. Odosiela dáta do hostiteľa cez koncový bod prerušenia IN. Táto funkcia je blokujúca.

Synchrónna komunikácia Synchrónna komunikácia znamená, že prenos sa blokuje. Po volaní funkcie sa aplikácia zablokuje, kým sa prenos nedokončí s chybou alebo bez chyby. Je možné zadať časový limit, aby sa predišlo večnému čakaniu.ampObrázok nižšie zobrazuje čítanie a zápis, ktorý prijíma dáta z hostiteľa pomocou koncového bodu prerušenia OUT a odosiela dáta do hostiteľa pomocou koncového bodu prerušenia IN.
Example – Synchronné čítanie a zápis HID

__ALIGNED(4) uint8_t rx_buf[2];

__ALIGNED(4) uint8_t tx_buf[2];

uint32_t

xfer_len;

stav_sl_t

stav;

stav = sl_usbd_hid_read_sync(číslo_triedy,

(1)

(neplatný *)rx_buf,

(2)

2u,

0u,

(3)

&dĺžka_xfer);

ak (stav ! SL_STATUS_OK) {

/* Vyskytla sa chyba. Sem by sa malo pridať spracovanie chýb. */

}

Copyright © 2025 Silicon Laboratories. Všetky práva vyhradené.

40/174

Koniecview
status =sl_usbd_hid_read_sync(class_nbr,(1)(void *)rx_buf,(2)2u,0u,(3)&xfer_len);if(status ! SL_STATUS_OK){/* Vyskytla sa chyba. Sem by sa malo pridať spracovanie chýb. *
status =sl_usbd_hid_write_sync(class_nbr,(1)(void *)tx_buf,(4)2u,0u,(3)&xfer_len);if(status ! SL_STATUS_OK){/* Vyskytla sa chyba. Sem by sa malo pridať spracovanie chýb. *
(1) Číslo inštancie triedy vytvorené pomocou funkcie sl_usbd_hid_create_instance() poskytuje internú referenciu pre triedu HID na smerovanie prenosu do správneho koncového bodu OUT alebo IN prerušenia.
(2) Aplikácia musí zabezpečiť, aby vyrovnávacia pamäť poskytnutá funkcii bola dostatočne veľká na to, aby sa do nej zmestili všetky dáta. V opačnom prípade môžu nastať problémy so synchronizáciou. Interne sa operácia čítania vykonáva buď s riadiacim koncovým bodom, alebo s koncovým bodom prerušenia, v závislosti od nastaveného príznaku čítania pri volaní funkcie sl_usbd_hid_create_instance().
(3) Aby sa predišlo nekonečnému blokovaniu, je možné zadať časový limit vyjadrený v milisekundách. Hodnota 809 spôsobí, že úloha aplikácie bude čakať večne.
(4) Aplikácia poskytuje inicializovaný prenosový buffer.
Úloha pravidelných vstupných hlásení HID
Pre úsporu šírky pásma má hostiteľ možnosť stlmiť hlásenia z koncového bodu prerušenia IN obmedzením frekvencie hlásení. Na tento účel musí hostiteľ odoslať požiadavku SET_IDLE. Trieda HID implementovaná spoločnosťou Silicon Labs obsahuje internú úlohu, ktorá rešpektuje obmedzenie frekvencie hlásení, ktoré môžete použiť na jedno alebo viacero vstupných hlásení. Obrázok Úloha periodických vstupných hlásení znázorňuje fungovanie úloh periodických vstupných hlásení.
Obrázok – Úloha periodických vstupných hlásení

(1) Zariadenie prijme požiadavku SET_IDLE. Táto požiadavka určuje trvanie nečinnosti pre dané ID hlásenia. Viac informácií o požiadavke SET_IDLE nájdete v časti
(2) Štruktúra ID hlásenia (alokovaná počas fázy inicializácie triedy HID) sa aktualizuje o trvanie nečinnosti. Počítadlo trvania nečinnosti sa inicializuje hodnotou trvania nečinnosti. Štruktúra ID hlásenia sa vloží na koniec prepojeného zoznamu obsahujúceho vstupné štruktúry ID hlásení. Hodnota trvania nečinnosti je vyjadrená v jednotkách 4 ms, čo dáva rozsah od 4 do 1020 ms.

Copyright © 2025 Silicon Laboratories. Všetky práva vyhradené.

41/174

Koniecview
Ak je trvanie nečinnosti kratšie ako interval dotazovania koncového bodu prerušenia IN, hlásenia sa generujú v intervale dotazovania.
(3) Každé 4 ms úloha periodickej vstupnej správy prehľadáva zoznam ID vstupných správ. Pre každé ID vstupnej správy úloha vykoná jednu z dvoch možných operácií. Trvanie obdobia úlohy sa zhoduje s jednotkou 4 ms použitou pre trvanie nečinnosti. Ak hostiteľ neodoslal žiadne požiadavky SET_IDLE, zoznam ID vstupných správ je prázdny a úloha nemá čo spracovať. Úloha spracováva iba ID správ, ktoré sú iné ako 0 a s trvaním nečinnosti väčším ako 0.
(4) Pre dané ID vstupnej správy úloha overí, či uplynula doba nečinnosti. Ak doba nečinnosti neuplynula, hodnota počítadla sa zníži a hostiteľovi sa neodošle žiadna vstupná správa.
(5) Ak uplynul čas nečinnosti (t. j. počítadlo času nečinnosti dosiahlo nulu), vstupná správa sa odošle hostiteľovi volaním funkcie sl_usbd_hid_write_sync() cez koncový bod prerušenia IN.
(6) Vstupné údaje zostavy odoslané úlohou pochádzajú z interného vyrovnávacieho pamäte prideleného pre každú vstupnú správu opísanú v deskriptore správy. Aplikačná úloha môže zavolať funkciu sl_usbd_hid_write_sync() na odoslanie vstupnej správy. Po odoslaní vstupných údajov zostavy funkcia sl_usbd_hid_write_sync() aktualizuje interný vyrovnávací pamät priradený k ID vstupnej správy o práve odoslané údaje. Úloha periodických vstupných správ potom vždy odosiela rovnaké vstupné údaje zostavy po každom uplynutí nečinnosti a kým aplikačná úloha neaktualizuje údaje vo internom vyrovnávacom pamäti. Existuje určitý uzamykací mechanizmus, ktorý zabraňuje poškodeniu vstupných ID správy v prípade úpravy, ktorá nastane presne v čase prenosu vykonaného úlohou periodických vstupných správ.

Copyright © 2025 Silicon Laboratories. Všetky práva vyhradené.

42/174

Koniecview
Koniecview
Trieda MSC zariadenia USB
Trieda MSC zariadenia USB nadview Potreby zdrojov triedy MSC pre zariadenie USB z jadra Konfigurácia triedy MSC pre zariadenie USB Programovacia príručka triedy MSC pre zariadenie USB Ovládače úložiska triedy MSC pre zariadenie USB
Táto časť popisuje triedu veľkokapacitných pamäťových zariadení (MSC) podporovaných zariadením Silicon Labs USB Device. MSC je protokol, ktorý umožňuje prenos informácií medzi zariadením USB a hostiteľom. Prenášané informácie sú čokoľvek, čo sa dá elektronicky uložiť, ako napríklad spustiteľné programy, zdrojový kód, dokumenty, obrázky, konfiguračné údaje alebo iné textové alebo číselné údaje. Zariadenie USB sa pre hostiteľa javí ako externé pamäťové médium, ktoré umožňuje prenos... filepomocou funkcie drag and drop.
A file systém definuje, ako filesú usporiadané v pamäťovom médiu. Špecifikácia triedy veľkokapacitného úložiska USB nevyžaduje žiadne konkrétne file systém, ktorý sa má používať na kompatibilných zariadeniach. Namiesto toho poskytuje jednoduché rozhranie na čítanie a zápis sektorov dát pomocou transparentnej sady príkazov rozhrania SCSI (Small Computer System Interface). Operačné systémy preto môžu s jednotkou USB zaobchádzať ako s pevným diskom a môžu ju formátovať pomocou ľubovoľného file systém, ktorý sa im páči.
Trieda veľkokapacitných pamäťových zariadení USB podporuje dva transportné protokoly:
Transport typu „BOT“ (riadenie/hromadné/prerušenie/prerušenie) (CBI) (používa sa iba pre disketové jednotky)
Trieda veľkokapacitných pamäťových zariadení implementuje transparentnú sadu príkazov SCSI iba pomocou protokolu BOT, čo znamená, že na prenos údajov a informácií o stave sa budú používať iba hromadné koncové body. Implementácia MSC podporuje viacero logických jednotiek.
Implementácia MSC je v súlade s nasledujúcimi špecifikáciami:
Špecifikácia triedy hromadného úložiska univerzálnej sériovej zbernice (USB)view, Revízia 1.3 5. septembra 2008. Universal Serial Bus Mass Storage Class Bulk-Only Transport, Revízia 1.0 31. septembra 1999.
Zariadenie USB MSC aCl ss Overview
Koncové body protokolu Požiadavky triedy Rozhranie malého počítačového systému (SCSI)
Protokol
V tejto časti sa budeme venovať protokolu Bulk-Only Transport (BOT) triedy Mass Storage. Protokol Bulk-Only Transport má tritages:
Prenos príkazov Prenos údajov Prenos stavu
Príkazy pre hromadné úložisko odosiela hostiteľ prostredníctvom štruktúry nazývanej Command Block Wrapper (CBW). Pre príkazy vyžadujúce prenos dáttagnapr. hostiteľ sa pokúsi odoslať alebo prijať presný počet bajtov zo zariadenia, ako je špecifikované v poliach dĺžky a príznaku CBW. Po prenose dáttaghostiteľ sa pokúša prijať zo zariadenia súbor Command Status Wrapper (CSW), ktorý podrobne popisuje stav príkazu, ako aj všetky zvyšky údajov (ak áno).

Copyright © 2025 Silicon Laboratories. Všetky práva vyhradené.

43/174

Koniecview
ľubovoľný). Pre príkazy, ktoré neobsahujú prenos dáttaghostiteľ sa pokúša prijať CSW ihneď po odoslaní CBW. Protokol je podrobne znázornený na obrázku – Protokol MSC.
Obrázok – Protokol MSC

Koncové body
Na strane zariadenia, v súlade so špecifikáciou BOT, sa MSC skladá z nasledujúcich koncových bodov: Dvojica riadiacich koncových bodov IN a OUT nazývaných predvolený koncový bod. Dvojica hromadných koncových bodov IN a OUT.
V tabuľke nižšie sú uvedené rôzne použitia koncových bodov.
Tabuľka – Použitie koncového bodu MSC

Koncový bod
Ovládací vstup Ovládací výstup Hromadný vstup Hromadný výstup

Smer
Zariadenie k hostiteľovi Hostiteľ k zariadeniu Zariadenie k hostiteľovi Hostiteľ k zariadeniu

Použitie
Výpočet a požiadavky špecifické pre triedu MSC Výpočet a požiadavky špecifické pre triedu MSC Odoslanie CSW a údajov Prijatie CBW a údajov

Žiadosti o kurz
Pre protokol MSC BOT sú definované dve požiadavky na riadenie. Tieto požiadavky a ich popisy sú podrobne uvedené v tabuľke nižšie.

Tabuľka – Požiadavky na triedy hromadného úložiska

Žiadosti o kurz
Obnovenie hromadného úložiska

Popis
Táto požiadavka sa používa na resetovanie pamäťového zariadenia a jeho pridruženého rozhrania. Táto požiadavka pripraví zariadenie na prijatie ďalšieho bloku príkazov.

Copyright © 2025 Silicon Laboratories. Všetky práva vyhradené.

44/174

Koniecview

Žiadosti o kurz

Popis

Get Max Táto požiadavka sa používa na vrátenie najvyššieho čísla logickej jednotky (LUN) podporovaného zariadením. Napríkladample, a

LUN

Zariadenie s LUN 0 a LUN 1 vráti hodnotu 1. Zariadenie s jednou logickou jednotkou vráti 0 alebo zastaví

požiadavka. Maximálna vrátená hodnota je 15.

Rozhranie malého počítačového systému SCSI

Na úrovni programovacieho rozhrania implementuje zariadenie MSC jeden zo štandardných komunikačných protokolov pre pamäťové médiá, ako napríklad SCSI a SFF-8020i (ATAPI). „Programovacie rozhranie“ určuje, ktorý protokol je implementovaný, a pomáha hostiteľskému operačnému systému načítať vhodný ovládač zariadenia na komunikáciu s pamäťovým zariadením USB. SCSI je najbežnejší protokol používaný s pamäťovými zariadeniami USB MSC. Poskytujeme implementáciu pre podtriedu MSC SCSI, ktorú môžu naši používatelia GSDK používať ihneď po vybalení.
SCSI je súbor štandardov na spracovanie komunikácie medzi počítačmi a periférnymi zariadeniami. Tieto štandardy zahŕňajú príkazy, protokoly, elektrické rozhrania a optické rozhrania. Pamäťové zariadenia, ktoré používajú iné hardvérové ​​rozhrania, ako napríklad USB, používajú príkazy SCSI na získavanie informácií o zariadení/hostiteľovi a na riadenie prevádzky zariadenia a prenos blokov údajov v pamäťovom médiu.
Príkazy SCSI pokrývajú širokú škálu typov a funkcií zariadení, a preto zariadenia potrebujú podmnožinu týchto príkazov. Vo všeobecnosti sú pre základnú komunikáciu potrebné nasledujúce príkazy:
DOTAZ NA ČÍTANIE KAPACITA(10) ČÍTANIE(10) DOTAZ NA TESTOVANIE SENSE JEDNOTKA PRIPRAVENÁ NA ZÁPIS(10)
Potreby zdrojov triedy MSC pre zariadenie USB od spoločnosti Core

Vždy, keď pridáte inštanciu triedy MSC do konfigurácie USB pomocou funkcie sl_usbd_msc_add_to_configuration(), z jadra sa alokujú nasledujúce zdroje.

Zdroj
Rozhrania Alternatívne rozhrania Koncové body Skupiny rozhraní

Množstvo
1 1 2 0

Upozorňujeme, že tieto čísla sú pre každú konfiguráciu. Pri nastavovaní konfiguračných hodnôt SL_USBD_INTERFACE_QUANTITY, SL_USBD_ALT_INTERFACE_QUANTITY, SL_USBD_INTERFACE_GROUP_QUANTITY a SL_USBD_DESCRIPTOR_QUANTITY nezabudnite zohľadniť, koľko konfigurácií bude trieda pridaná. V prípade konfiguračnej hodnoty SL_USBD_OPEN_ENDPOINTS_QUANTITY, keďže koncové body sa otvárajú iba vtedy, keď hostiteľ nastaví konfiguráciu, stačí zohľadniť počet potrebných koncových bodov pre inštanciu triedy.
Konfigurácia triedy MSC zariadenia USB

Na konfiguráciu triedy MSC sa používajú dve skupiny konfiguračných parametrov:
Konfigurácie špecifické pre aplikáciu triedy MSC zariadenia USB Konfigurácia logickej jednotky triedy MSC zariadenia USB
Konfigurácie špecifické pre aplikáciu triedy MSC zariadenia USB

Konfigurácie triedy počas kompilácie Vytvorenie inštancie triedy

Copyright © 2025 Silicon Laboratories. Všetky práva vyhradené.

45/174

Koniecview

Konfigurácie triedy počas kompilácie
Trieda MSC a podtrieda SCSI od Silicon Labs USB Device sú konfigurovateľné počas kompilácie pomocou parametra #defines, ktorý sa nachádza v súbore sl_usbd_core_config.h. file.
Tabuľka – Všeobecné konfiguračné konštanty

Názov konfigurácie

Popis

SL_USBD_MSC_CLASS_INST Počet inštancií triedy, ktoré alokujete volaním funkcie

MNOŽSTVO_ANCE

sl_usbd_msc_scsi_create_instance().

SL_USBD_MSC_CONFIGURA Číslo konfigurácie, do ktorej je možné pridať inštanciu triedy prostredníctvom volania funkcie

MNOŽSTVO_CIE

funkcia sl_usbd_msc_scsi_add_to_configuration().

SL_USBD_MSC_LUN_QUANT Počet logických jednotiek na inštanciu triedy, ktoré pridáte prostredníctvom volania funkcie

ITY

funkcia sl_usbd_msc_scsi_lun_add().

SL_USBD_MSC_SCSI_64_BIT Povolí alebo zakáže podporu pre 64-bitovú adresu logických blokov (LBA).
_LBA_EN

SL_USBD_MSC_DATA_BUFF Veľkosť dátovej vyrovnávacej pamäte na inštanciu triedy v bajtoch ER_SIZE

Predvolená hodnota
2
1
2
0
512

Vytvorenie inštancie triedy
Vytvorenie inštancie triedy USB Device MSC SCSI sa vykonáva volaním funkcie sl_usbd_msc_scsi_create_instance(). Táto funkcia prijíma jeden konfiguračný argument, ktorý je popísaný nižšie.
p_scsi_callbacks
p_scsi_callbacks je ukazovateľ na konfiguračnú štruktúru typu sl_usbd_msc_scsi_callbacks_t. Okrem bežných spätných volaní triedy USB zariadení typu connect/disconnect poskytuje triede MSC sadu voliteľných funkcií spätného volania, ktoré sa volajú, keď na logickej jednotke dôjde k udalosti. Ak nie sú potrebné žiadne spätné volania, tomuto argumentu je možné odovzdať nulový ukazovateľ (NULL).
V nasledujúcej tabuľke sú popísané jednotlivé konfiguračné polia dostupné v tejto konfiguračnej štruktúre.
Tabuľka – Konfiguračná štruktúra sl_usbd_msc_scsi_callbacks_t

Polia

Popis

.povoliť

Volá sa, keď je inštancia triedy USB úspešne povolená.

.disable Volá sa, keď je inštancia triedy USB zakázaná.

.host_eject Funkcia volaná pri vysunutí logickej jednotky z hostiteľa.

Podpis funkcie
void app_usbd_msc_scsi_enable(uint8_t class_nbr);
void app_usbd_msc_scsi_disable(uint8_t class_nbr); void app_usbd_msc_scsi_host_eject(uint8_t class_nbr, uint8_t lu_nbr);

Konfigurácia logickej jednotky triedy MSC zariadenia USB

Pridanie logickej jednotky do inštancie triedy MSC sa vykonáva volaním funkcie sl_usbd_msc_lun_add(). Táto funkcia prijíma jeden konfiguračný argument, ktorý je popísaný nižšie.

p_lu_info

p_lu_info je ukazovateľ na štruktúru typu sl_usbd_msc_scsi_lun_info_t. Jeho účelom je poskytnúť informácie o logickej jednotke triede MSC.
V nasledujúcej tabuľke sú popísané jednotlivé konfiguračné polia dostupné v tejto konfiguračnej štruktúre.

Tabuľka – Konfiguračná štruktúra sl_usbd_msc_scsi_lun_info_t

Copyright © 2025 Silicon Laboratories. Všetky práva vyhradené.

46/174

Koniecview

Pole

Popis

Pole
.scsi_lun_api_p tr

Popis
Ukazovateľ na rozhranie API ovládača média, ktoré bude spracovávať túto logickú jednotku. Ďalšie informácie o ovládačoch úložísk nájdete v časti Ovládače úložísk triedy MSC pre zariadenie USB.

.ve nd o r_id _ p tr
.product_id_ptr
.product_review_level .is_read_only

Ukazovateľ na reťazec, ktorý obsahuje identifikáciu dodávateľa logickej jednotky. Maximálna dĺžka reťazca je 8 znakov. Ukazovateľ na reťazec, ktorý obsahuje identifikáciu produktu logickej jednotky. Maximálna dĺžka reťazca je 16 znakov. Úroveň revízie produktu.
Príznak, ktorý označuje, či sa má logická jednotka považovať len za čítateľnú z hľadiska view hostiteľa (pravda) alebo nie (nepravda).

Sprievodca programovaním triedy MSC pre zariadenia USB

Táto časť vysvetľuje, ako používať triedu MSC.
Inicializácia triedy MSC zariadenia USB Pridanie inštancie triedy MSC zariadenia USB do zariadenia Spracovanie logických jednotiek triedy MSC zariadenia USB
Inicializácia triedy MSC zariadenia USB

Ak chcete do zariadenia pridať funkcionalitu triedy MSC SCSI, najskôr inicializujte základnú triedu MSC a podtriedu SCSI volaním funkcií sl_usbd_msc_init() a sl_usbd_msc_scsi_init().
BývalýampNižšie uvedený obrázok ukazuje, ako volať funkcie sl_usbd_msc_init() a sl_usbd_msc_scsi_init().

Example – Volanie sl_usbd_msc_init() a sl_usbd_msc_scsi_init()

stav sl_status_t;
status = sl_usbd_msc_init(); if (status ! SL_STATUS_OK) { /* Vyskytla sa chyba. Sem by sa malo pridať spracovanie chýb. */
}
status = sl_usbd_msc_scsi_init(); if (status ! SL_STATUS_OK) { /* Vyskytla sa chyba. Sem by sa malo pridať spracovanie chýb. */
}
Pridanie inštancie triedy MSC SCSI zariadenia USB do vášho zariadenia
Ak chcete do zariadenia pridať funkcionalitu triedy MSC SCSI, najprv vytvorte inštanciu a potom ju pridajte do konfigurácie (konfigurácií) zariadenia. Do inštancie musíte pridať aspoň jednu logickú jednotku.
Vytvorenie inštancie triedy MSC SCSI
Vytvorte inštanciu triedy MSC SCSI volaním funkcie sl_usbd_msc_scsi_create_instance().
BývalýampV nasledujúcom texte je znázornené, ako volať funkciu sl_usbd_msc_scsi_create_instance() pomocou predvolených argumentov. Viac informácií o konfiguračných argumentoch, ktoré sa majú odovzdať funkcii sl_usbd_msc_scsi_create_instance(), nájdete v časti Konfigurácie špecifické pre aplikáciu triedy USB Device MSC.
Example – Volanie funkcie sl_usbd_msc_scsi_create_instance()

Copyright © 2025 Silicon Laboratories. Všetky práva vyhradené.

47/174

Koniecview

uint8_t class_nbr; stav sl_status_t;
sl_usbd_msc_scsi_callbacks_t app_usbd_msc_scsi_callbacks = { .enable = NULL, .disable = NULL, .host_eject = NULL };
stav = sl_usbd_msc_scsi_create_instance(&app_usbd_msc_scsi_callbacks,0 &class_nbr);
ak (status ! SL_STATUS_OK) { /* Vyskytla sa chyba. Sem by sa malo pridať spracovanie chýb. */ }
Pridanie inštancie triedy MSC do konfigurácie (konfigurácií) vášho zariadenia
Po vytvorení inštancie triedy MSC ju môžete pridať do konfigurácie volaním funkcie
sl_usbd_msc_add_to_configuration() .
BývalýampNižšie je znázornené, ako volať funkciu sl_usbd_msc_scsi_add_to_configuration() pomocou predvolených argumentov.
Example – Volanie funkcie sl_usbd_msc_scsi_add_to_configuration()

stav sl_status_t;

stav = sl_usbd_msc_scsi_add_to_configuration(číslo_triedy,

(1)

config_nbr_fs);

(2)

ak (stav ! SL_STATUS_OK) {

/* Vyskytla sa chyba. Sem by sa malo pridať spracovanie chýb. */

}

(1) Číslo triedy, ktoré sa má pridať do konfigurácie vrátenej funkciou sl_usbd_msc_scsi_create_instance(). (32) Číslo konfigurácie (tu sa pridáva do konfigurácie s plnou rýchlosťou).
Spracovanie logických jednotiek triedy MSC zariadenia USB
Pridanie logickej jednotky Pripojenie/odpojenie pamäťového média
Pridanie logickej jednotky
Pri pridávaní logickej jednotky do inštancie triedy MSC SCSI musí byť táto jednotka prepojená s pamäťovým médiom (RAM disk, SD karta, flash pamäť atď.). Trieda MSC používa na komunikáciu s pamäťovým médiom ovládač úložiska. Tento ovládač bude potrebné dodať pri pridávaní logickej jednotky.
BývalýampNižšie uvedený obrázok ukazuje, ako pridať logickú jednotku pomocou funkcie sl_usbd_msc_scsi_lun_add().
Example – Pridanie logickej jednotky pomocou sl_usbd_msc_scsi_lun_add()

Copyright © 2025 Silicon Laboratories. Všetky práva vyhradené.

48/174

Koniecview

sl_usbd_msc_scsi_lun_t *lu_object_ptr = NULL;

sl_usbd_msc_scsi_lun_info_t lu_info;

stav_sl_t

stav;

lu_info.sl_usbd_msc_scsi_lun_api_t = &app_usbd_scsi_storage_block_device_api;

lu_info.vendor_id_ptr

= „Silicon Labs“;

lu_info.product_id_ptr

= „blokové zariadenie exampl'é“;

lu_info.úroveň_revízie_produktu = 0x1000u;

lu_info.je_len_na_čítanie

= nepravda;

stav = sl_usbd_msc_scsi_lun_add(číslo_triedy, &lu_info, &lu_object_ptr);
ak (status ! SL_STATUS_OK) { /* Vyskytla sa chyba. Sem by sa malo pridať spracovanie chýb. */ }

Pripojenie/odpojenie pamäťového média
Po pridaní logickej jednotky musí byť pripojené pamäťové médium, aby bolo dostupné zo strany hostiteľa. Trieda MSC ponúka dve funkcie na riadenie priradenia pamäťového média k logickej jednotke: sl_usbd_msc_scsi_lun_attach() a sl_usbd_msc_scsi_lun_detach(). Tieto funkcie umožňujú emulovať odstránenie pamäťového zariadenia, aby ste v prípade potreby znovu získali prístup z vstavanej aplikácie.
BývalýampNižšie uvedený príklad ukazuje, ako použiť funkcie sl_usbd_msc_scsi_lun_attach() a sl_usbd_msc_scsi_lun_detach().
Example – Pripojenie/odpojenie média

stav sl_status_t;

status = sl_usbd_msc_scsi_lun_attach(lu_object_ptr); if (status ! SL_STATUS_OK) { /* Vyskytla sa chyba. Sem by sa malo pridať spracovanie chýb. */
}

(1)

stav = sl_usbd_msc_scsi_lun_detach(lu_object_ptr); ak (stav ! SL_STATUS_OK) {
/* Vyskytla sa chyba. Sem by sa malo pridať spracovanie chýb. */
}

(2)

stav = sl_usbd_msc_scsi_lun_attach(lu_object_ptr) ak (stav ! SL_STATUS_OK) {
/* Vyskytla sa chyba. Sem by sa malo pridať spracovanie chýb. */
}

(3)

(1) Od tohto okamihu, ak je zariadenie MSC pripojené k hostiteľovi, je pamäťové médium prístupné.
(2) Ak je zariadenie MSC pripojené k hostiteľovi, médium sa teraz zobrazí ako nedostupné. V tomto momente je možné s médiom vykonávať operácie z integrovanej aplikácie.
(3) Ak je zariadenie MSC pripojené k hostiteľovi, pamäťové médium sa opäť zobrazí ako pripojené.
Ovládače úložiska triedy USB MSC
Zariadenie USB triedy MSC potrebuje na komunikáciu s pamäťovým médiom ovládač úložiska. Spoločnosť Silicon Labs momentálne ovládače neponúka.

Copyright © 2025 Silicon Laboratories. Všetky práva vyhradené.

49/174

Koniecview
Ovládač TPY aa AI je definovaný typedef sl_usbd_msc_scsi_lun_api_t. Náš sl_usbd_msc_scsi_lun_api_t musí byť zahrnutý do vášho sl_usbd_msc_scsi_lun_info_t, argumentu ssed pri pridávaní logickej jednotky pomocou sl_usbd_msc_scsi_lun_add(). Viac informácií o štruktúrach nájdete v časti USB Device MSC SCSI API. Implementácia ovládača úložiska môže byť jednoduchá ako pole sektorov v pamäti RAM. Typická veľkosť sektora (t. j. veľkosť bloku) je 512 pre zariadenia s veľkokapacitným ukladaním a 2048 pre CD-ROM.

Copyright © 2025 Silicon Laboratories. Všetky práva vyhradené.

50/174

Koniecview
Koniecview
Trieda dodávateľa USB zariadenia
Trieda dodávateľa USB zariadenia nadview Potreby zdrojov triedy dodávateľa USB zariadení z jadra Konfigurácia triedy dodávateľa USB zariadení Programátorská príručka triedy dodávateľa USB zariadení Trieda dodávateľa vám umožňuje vytvárať zariadenia špecifické pre dodávateľa, ktoré dokážu implementovať proprietárny protokol. Na prenos údajov medzi hostiteľom a zariadením sa spolieha na dvojicu hromadných koncových bodov. Hromadné prenosy sú vhodné na prenos veľkého množstva neštruktúrovaných údajov a poskytujú spoľahlivú výmenu údajov pomocou mechanizmu detekcie chýb a opakovaného pokusu. Okrem hromadných koncových bodov môže trieda dodávateľa používať aj voliteľný pár koncových bodov prerušenia. S triedou dodávateľa môže pracovať akýkoľvek operačný systém (OS) za predpokladu, že operačný systém má ovládač na spracovanie triedy dodávateľa. V závislosti od operačného systému môže byť ovládač natívny alebo špecifický pre dodávateľa. Napríklad v systéme Microsoft Windows® vaša aplikácia interaguje s ovládačom WinUSB poskytovaným spoločnosťou Microsoft na komunikáciu so zariadením dodávateľa.
Trieda dodávateľa USB zariadenia nadview
Obrázok – Všeobecná architektúra medzi hostiteľom systému Windows a triedou Vendor znázorňuje všeobecnú architektúru medzi hostiteľom a zariadením pomocou triedy Vendor. V tomto príkladeampt. j. hostiteľským operačným systémom je MS Windows.
Obrázok – Všeobecná architektúra medzi hostiteľom MS Windows a triedou dodávateľa

Na strane MS Windows aplikácia komunikuje so zariadením dodávateľa prostredníctvom interakcie s knižnicou USB. Knižnice, ako napríklad libusb, ponúkajú API na správu zariadenia a jeho pridružených kanálov a na komunikáciu so zariadením prostredníctvom riadiacich, hromadných a prerušovacích koncových bodov.
Na strane zariadenia sa trieda Vendor skladá z nasledujúcich koncových bodov:
Dvojica kontrolných koncových bodov IN a OUT nazývaných predvolený koncový bod. Dvojica hromadných koncových bodov IN a OUT.

Copyright © 2025 Silicon Laboratories. Všetky práva vyhradené.

51/174

Koniecview

Dvojica koncových bodov prerušenia IN a OUT. Táto dvojica je voliteľná. Nasledujúca tabuľka uvádza použitie rôznych koncových bodov:
Tabuľka – Použitie koncových bodov triedy dodávateľa

Smer koncového bodu

Ovládanie IN
Kontrola
OUT
Hromadné VSTUPENIE

Zariadenie-hostiteľ
>Hostiteľ-zariadenie
Zariadenie-hostiteľ

Hromadné VYPLATENIE
Prerušenie VSTUP
Prerušiť
OUT

Hostiteľ-zariadenie
Zariadenie-hostiteľ
Hostiteľ-zariadenie

Použitie
Štandardné požiadavky na vymenovanie a požiadavky špecifické pre dodávateľa.
Štandardné požiadavky na vymenovanie a požiadavky špecifické pre dodávateľa.
Komunikácia surových dát. Dáta je možné štruktúrovať podľa proprietárneho protokolu.
Komunikácia surových dát. Dáta je možné štruktúrovať podľa proprietárneho protokolu.
Komunikácia alebo notifikácia surových dát. Dáta môžu byť štruktúrované podľa proprietárneho protokolu. Komunikácia alebo notifikácia surových dát. Dáta môžu byť štruktúrované podľa proprietárneho protokolu.

Aplikácia zariadenia môže na odosielanie alebo prijímanie údajov do alebo z hostiteľa použiť koncové body hromadného spracovania a prerušenia. Na dekódovanie požiadaviek špecifických pre dodávateľa odoslaných hostiteľom môže použiť iba predvolený koncový bod. Štandardné požiadavky sú interne spravované vrstvou Core zariadenia Silicon Labs USB.
Potreby zdrojov triedy dodávateľov USB zariadení od spoločnosti Core

Vždy, keď pridáte inštanciu triedy dodávateľa do konfigurácie pomocou funkcie sl_usbd_vendor_add_to_configuration(), z jadra sa alokujú nasledujúce zdroje.

Zdroj
Rozhrania Alternatívne rozhrania Koncové body Skupiny rozhraní

Množstvo
1 1 2 (4, ak ste povolili koncové body prerušenia) 0

Upozorňujeme, že tieto čísla sú pre každú konfiguráciu. Pri nastavovaní konfiguračných hodnôt SL_USBD_INTERFACE_QUANTITY, SL_USBD_ALT_INTERFACE_QUANTITY, SL_USBD_INTERFACE_GROUP_QUANTITY a SL_USBD_DESCRIPTOR_QUANTITY nezabudnite zohľadniť, koľko konfigurácií bude trieda pridaná. V prípade konfiguračnej hodnoty SL_USBD_OPEN_ENDPOINTS_QUANTITY, keďže koncové body sa otvárajú iba vtedy, keď hostiteľ nastaví konfiguráciu, stačí zohľadniť počet potrebných koncových bodov pre inštanciu triedy.
Konfigurácia triedy dodávateľa USB zariadenia

Na konfiguráciu triedy Dodávateľ sa používajú dve skupiny konfiguračných parametrov:
Konfigurácie špecifické pre aplikáciu triedy dodávateľa USB zariadenia Konfigurácie inštancií triedy dodávateľa USB zariadenia
Konfigurácie špecifické pre aplikáciu podľa triedy dodávateľa USB zariadenia
Najprv, ak chcete použiť modul triedy Vendor USB zariadenia od Silicon Labs, upravte definície konfigurácie Vendor počas kompilácie podľa potrieb vašej aplikácie. Sú zoskupené v hlavičke sl_usbd_core_config.h. file v sekcii Dodávateľ. Účelom konfigurácií množstva je informovať modul zariadenia USB o tom, koľko objektov dodávateľa USB má alokovať.
V nasledujúcej tabuľke sú popísané jednotlivé definície konfigurácie.

Copyright © 2025 Silicon Laboratories. Všetky práva vyhradené.

52/174

Koniecview

Tabuľka – Definície konfigurácie dodávateľa zariadenia USB

Názov konfigurácie

Popis

Predvolená hodnota

SL_USBD_VENDOR_CLASS_INSTANCE_QUANTITY Počet inštancií triedy, ktoré alokujete volaním funkcie sl_usbd_vendor_create_instance().

SL_USBD_VENDOR_CONFIGURATION_QUANTITY Počet konfigurácií. Inštancie triedy dodávateľa je možné pridať do jednej alebo viacerých konfigurácií volaním funkcie sl_usbd_vendor_add_to_configuration().

Konfigurácie inštancií triedy dodávateľa USB zariadenia

Táto časť definuje konfigurácie súvisiace s inštanciami triedy Vendor.
Vytvorenie inštancie triedy intr_en interval p_vendor_callbacks
Vytvorenie inštancie triedy

Vytvorenie inštancie triedy Vendor sa vykonáva volaním funkcie sl_usbd_vendor_create_instance(), ktorá prijíma tri konfiguračné argumenty, ktoré sú opísané nižšie.

intr_en
Boolovská hodnota, ktorá označuje, či sa má pridať dvojica koncových bodov prerušenia alebo nie.

Hodnota
pravda nepravda

Popis
Bude pridaný a sprístupnený dvojica koncových bodov IN/OUT pre vloženú aplikáciu. Nebude pridaný žiadny koncový bod prerušenia. K dispozícii bude iba dvojica koncových bodov Bulk IN/OUT.

interval
Ak nastavíte intr_en na hodnotu true, môžete určiť interval dotazovania koncových bodov prerušenia (v milisekundách). Ak nastavíte intr_en na hodnotu false, môžete nastaviť interval na 0, pretože ho trieda bude ignorovať.
p_vendor_callbacks
p_vendor_callbacks je ukazovateľ na štruktúrnu premennú funkcie spätného volania, ktorú môžete zadať na spracovanie požiadaviek na riadenie špecifických pre triedu. Ak nepoužívate žiadne požiadavky špecifické pre triedu alebo potrebujete povoliť/zakázať upozornenia, môžete ju nastaviť na NULL.
BývalýampNižšie uvedený súbor poskytuje očakávaný podpis vášho obslužného programu požiadaviek špecifických pre triedu.
Example – Podpis funkcie požiadavky špecifickej pre triedu

void app_usbd_vendor_req_handle(uint8_t)

číslo_triedy, (1)

const sl_usbd_setup_req_t *p_setup_req); (2)

sl_usbd_vendor_callbacks_t app_usbd_vendor_callback_functions =
{
.enable = NULL, .disable = NULL, .setup_req = app_usbd_vendor_req_handle,
};

(1) Číslo inštancie triedy dodávateľa.

Copyright © 2025 Silicon Laboratories. Všetky práva vyhradené.

53/174

Koniecview

(2) Ukazovateľ na prijatú požiadavku na nastavenie od hostiteľa.
Sprievodca programovaním triedy dodávateľov USB zariadení
Táto časť vysvetľuje, ako používať triedu Vendor. Inicializácia triedy Vendor USB zariadenia Pridanie inštancie triedy Vendor USB zariadenia do vášho zariadenia Komunikácia pomocou triedy Vendor USB zariadenia
Inicializácia triedy dodávateľa USB zariadenia
Ak chcete do zariadenia pridať funkcionalitu triedy dodávateľa, najprv inicializujte triedu volaním funkcie USBD_Vendor_Init(). ExampNižšie uvedený príklad ukazuje, ako volať funkciu sl_usbd_vendor_init().
Example – Volanie funkcie sl_usbd_vendor_init()

stav sl_status_t;
status = sl_usbd_vendor_init(); if (status ! SL_STATUS_OK) { /* Vyskytla sa chyba. Sem by sa malo pridať spracovanie chýb. */ }
Pridanie inštancie triedy dodávateľa USB zariadenia do vášho zariadenia
Ak chcete do zariadenia pridať funkcie triedy dodávateľa, musíte najprv vytvoriť inštanciu a potom ju pridať do konfigurácie (konfigurácií) zariadenia.
Vytvorenie inštancie triedy dodávateľa Pridanie inštancie triedy dodávateľa do konfigurácie (konfigurácií) vášho zariadenia
Vytvorenie inštancie triedy dodávateľa
Vytvorte inštanciu triedy Vendor volaním funkcie sl_usbd_vendor_create_instance(). PríkladampNižšie uvedený príklad ukazuje, ako volať funkciu sl_usbd_vendor_create_instance() pomocou predvolených argumentov. Viac informácií o konfiguračných argumentoch, ktoré sa majú odovzdať funkcii sl_usbd_vendor_create_instance(), nájdete v časti Konfigurácie inštancií triedy dodávateľa USB.
Example – Volanie funkcie sl_usbd_vendor_create_instance()

uint8_t class_nbr; stav sl_status_t;

stav = sl_usbd_vendor_create_instance(false,

(1)

0u,

(2)

funkcie_app_usbd_vendor_callback_functions, (3)

&číslo_triedy);

ak (stav ! SL_STATUS_OK) {

/* Vyskytla sa chyba. Sem by sa malo pridať spracovanie chýb. */

}

(1) Žiadne koncové body prerušenia s touto inštanciou triedy. (2) Interval sa ignoruje, pretože koncové body prerušenia sú zakázané.

Copyright © 2025 Silicon Laboratories. Všetky práva vyhradené.

54/174

Koniecview

(3) Funkcia spätného volania, ktorá je súčasťou vašej aplikácie a spracováva požiadavky na triedy špecifické pre dodávateľa. Ďalšie informácie nájdete v časti Komunikácia pomocou triedy dodávateľa zariadenia USB. Pridanie inštancie triedy dodávateľa do konfigurácie (konfigurácií) vášho zariadenia Po vytvorení inštancie triedy dodávateľa ju môžete pridať do konfigurácie volaním funkcie USBD_Vendor_ConfigAdd(). ExampNižšie uvedený príklad ukazuje, ako volať funkciu sl_usbd_vendor_add_to_configuration() pomocou predvolených argumentov.
Example – Volanie funkcie sl_usbd_vendor_add_to_configuration()

stav sl_status_t;

stav = sl_usbd_vendor_add_to_configuration(číslo_triedy,

(1)

config_nbr_fs);

(2)

ak (stav ! SL_STATUS_OK) {

/* Vyskytla sa chyba. Sem by sa malo pridať spracovanie chýb. */

}

(1) Číslo triedy, ktoré sa má pridať do konfigurácie vrátenej funkciou sl_usbd_vendor_create_instance(). (2) Číslo konfigurácie (tu sa pridáva do konfigurácie Full-Speed).
Komunikácia pomocou triedy dodávateľa USB zariadení
Všeobecná synchrónna komunikácia Asynchrónna komunikácia Požiadavka dodávateľa Všeobecné Trieda dodávateľ ponúka nasledujúce funkcie na komunikáciu s hostiteľom. Viac informácií o parametroch funkcie nájdete v časti API dodávateľa zariadenia USB.
Tabuľka – Súhrn rozhrania API pre komunikáciu s dodávateľmi

Názov funkcie
sl_usb d _v e nd o r_ read ad _bulk_sy nc() sl_usb d _v e nd o r_write _bulk_sy nc() sl_usb d _v e nd o r_ read ad _bulk_asy nc() sl_usb d _v e nd o r_ write _bulk_asy nc() sl_usb d _v e nd o r_ read ad _inte rrup t_sy nc() sl_usb d _v e nd o r_ write _inte rrup t_sy nc() sl_usb d _v e nd o r_ read ad _inte rrup t_asy nc
()
sl_usb d _ve nd o r_write _inte rrup t_asy nc
()

Operácia Prijíma dáta z hostiteľa cez koncový bod bulk OUT. Táto funkcia blokuje. Odosiela dáta do hostiteľa cez koncový bod bulk IN. Táto funkcia blokuje. Prijíma dáta z hostiteľa cez koncový bod bulk OUT. Táto funkcia neblokuje. Odosiela dáta do hostiteľa cez koncový bod bulk IN. Táto funkcia neblokuje. Prijíma dáta z hostiteľa cez koncový bod interrupt OUT. Táto funkcia blokuje. Odosiela dáta do hostiteľa cez koncový bod interrupt IN. Táto funkcia blokuje. Prijíma dáta z hostiteľa cez koncový bod interrupt OUT. Táto funkcia nie je-
blokovanie.
Odosiela dáta do hostiteľa cez koncový bod prerušenia IN. Táto funkcia nie je blokujúca.

Požiadavky dodávateľov sú tiež ďalším spôsobom komunikácie s hostiteľom. Pri správe požiadaviek dodávateľov odoslaných hostiteľom môže aplikácia prijímať alebo odosielať dáta z hostiteľa alebo do hostiteľa pomocou riadiaceho koncového bodu; budete musieť poskytnúť spätné volanie aplikácie odovzdané ako parameter sl_usbd_vendor_create_instance(). Synchrónna komunikácia

Copyright © 2025 Silicon Laboratories. Všetky práva vyhradené.

55/174

Koniecview

Synchrónna komunikácia znamená, že prenos blokuje. Keď sa zavolá funkcia, aplikácia sa zablokuje, kým sa prenos nedokončí s chybou alebo bez nej. Je možné zadať časový limit, aby sa predišlo večnému čakaniu. ExampObrázok nižšie zobrazuje čítanie a zápis, ktorý prijíma dáta z hostiteľa pomocou koncového bodu bulk OUT a odosiela dáta do hostiteľa pomocou koncového bodu bulk IN.
Example – Synchrónne hromadné čítanie a zápis

__ALIGNED(4) uint8_t rx_buf[2];

__ALIGNED(4) uint8_t tx_buf[2];

uint32_t

xfer_len;

stav_sl_t

stav;

stav = sl_usbd_vendor_read_bulk_sync(číslo_triedy,

(1)

(neplatné *)&rx_buf[0],

(2)

2u,

0u,

(3)

&dĺžka_xfer);

ak (stav ! SL_STATUS_OK) {

/* $$$$ Spracovanie chyby. */

}

stav = sl_usbd_vendor_write_bulk_sync( číslo_triedy,

(1)

(neplatné *)&tx_buf[0],

(4)

2u,

0u,

(3)

falošné,

(5)

&dĺžka_xfer);

ak (stav ! SL_STATUS_OK) {

/* $$$$ Spracovanie chyby. */

}

(1) Číslo inštancie triedy vytvorené pomocou funkcie sl_usbd_vendor_create_instance() poskytuje interný odkaz na triedu Vendor na smerovanie prenosu do správneho koncového bodu OUT alebo IN.
(2) Aplikácia musí zabezpečiť, aby vyrovnávacia pamäť poskytnutá funkcii bola dostatočne veľká na to, aby sa do nej zmestili všetky údaje. V opačnom prípade môžu nastať problémy so synchronizáciou.
(3) Aby sa predišlo nekonečnému blokovaniu, je možné zadať časový limit vyjadrený v milisekundách. Hodnota 809 spôsobí, že úloha aplikácie bude čakať večne.
(4) Aplikácia poskytuje inicializovaný prenosový buffer.
(5) Ak je tento príznak nastavený na hodnotu true a dĺžka prenosu je násobkom maximálnej veľkosti paketu koncového bodu, zásobník zariadenia odošle hostiteľovi paket s nulovou dĺžkou, aby signalizoval koniec prenosu.
Použitie funkcií prerušenia komunikácie koncových bodov, sl_usbd_vendor_read_interrupt_sync() a sl_usbd_vendor_write_interrupt_sync(), je podobné funkciám hromadnej komunikácie koncových bodov prezentovaným v príklade.ample – Synchrónne hromadné čítanie a zápis.
Asynchrónna komunikácia
Asynchrónna komunikácia znamená, že prenos nie je blokujúci. Keď sa zavolá funkcia, aplikácia odovzdá informácie o prenose do zásobníka zariadení a neblokuje sa. Počas prenosu cez zbernicu USB je možné vykonávať ďalšie spracovanie aplikácie. Po dokončení prenosu zásobník zariadení zavolá funkciu spätného volania, ktorá informuje aplikáciu o dokončení prenosu.ampObrázok nižšie zobrazuje asynchrónne čítanie a zápis.
Example – Asynchrónne hromadné čítanie a zápis

Copyright © 2025 Silicon Laboratories. Všetky práva vyhradené.

56/174

Koniecview

void app_usbd_vendor_comm (uint8_t class_nbr)

{

__ALIGNED(4) uint8_t rx_buf[2];

__ALIGNED(4) uint8_t tx_buf[2];

stav_sl_t

stav;

stav = sl_usbd_vendor_read_bulk_async(číslo_triedy,

(neplatné *)&rx_buf[0],

(2)

2u,

app_usbd_vendor_rx_completed,

NULA);

(4)

ak (stav ! SL_STATUS_OK) {

/* $$$$ Spracovanie chyby. */

}

stav = sl_usbd_vendor_write_bulk_async(číslo_triedy,

(neplatné *)&tx_buf[0],

(5)

2u,

app_usbd_vendor_tx_completed,

NULOVÝ,

(4)

nepravdivé);

(6)

ak (stav ! SL_STATUS_OK) {

/* $$$$ Spracovanie chyby. */

}

}

(1) (3)
(1) (3)

statická neplatná aplikácia app_usbd_vendor_rx_completed(uint8_t class_nbr,

(3)

void *p_buf,

uint32_t buf_len,

uint32_t xfer_len,

void *p_callback_arg,

stav sl_status_t)

{

ak (stav ! SL_STATUS_OK) {

/* $$$$ Vykonajte nejaké spracovanie. */

} inak {

/* $$$$ Spracovanie chyby. */

}

}

statická neplatná aplikácia app_usbd_vendor_tx_completed(uint8_t class_nbr,

(3)

void *p_buf,

uint32_t buf_len,

uint32_t xfer_len,

void *p_callback_arg,

stav sl_status_t)

{

ak (stav ! SL_STATUS_OK) {

/* $$$$ Vykonajte nejaké spracovanie. */

} inak {

/* $$$$ Spracovanie chyby. */

}

}

(1) Číslo inštancie triedy poskytuje interný odkaz na triedu Vendor na smerovanie prenosu do správneho hromadného OUT alebo IN koncového bodu. (2) Aplikácia musí zabezpečiť, aby poskytnutá vyrovnávacia pamäť bola dostatočne veľká na to, aby sa do nej zmestili všetky údaje. V opačnom prípade môžu nastať problémy so synchronizáciou. (3) Aplikácia poskytuje ukazovateľ funkcie spätného volania odovzdaný ako parameter. Po dokončení prenosu zásobník zariadenia zavolá túto funkciu spätného volania, aby aplikácia mohla dokončiť prenos analýzou výsledku prenosu. Napríklad po dokončení operácie čítania môže aplikácia vykonať spracovanie prijatých údajov. Po dokončení zápisu môže aplikácia indikovať, či bol zápis úspešný a koľko bajtov bolo odoslaných.

Copyright © 2025 Silicon Laboratories. Všetky práva vyhradené.

57/174

Koniecview
(4) Je možné odovzdať aj argument spojený so spätným volaním. V kontexte spätného volania je potom možné získať niektoré súkromné ​​informácie. (5) Aplikácia poskytuje inicializovaný prenosový buffer. (6) Ak je tento príznak nastavený na hodnotu true a dĺžka prenosu je násobkom maximálnej veľkosti paketu koncového bodu, zásobník zariadenia odošle hostiteľovi paket s nulovou dĺžkou, aby signalizoval koniec prenosu. Použitie komunikačných funkcií koncového bodu prerušenia, sl_usbd_vendor_read_interrupt_async() a sl_usbd_vendor_write_interrupt_async(), je podobné funkciám hromadnej komunikácie koncových bodov prezentovaným v príklade.ampAsynchrónne hromadné čítanie a zápis.
Žiadosť dodávateľa
Špecifikácia USB 2.0 definuje tri typy požiadaviek: štandardné, triedy a požiadavky dodávateľa. Všetky štandardné požiadavky spracováva priamo jadrová vrstva, zatiaľ čo požiadavky triedy spravuje príslušná priradená trieda. Požiadavky dodávateľa môže spracovať trieda dodávateľa. Na spracovanie požiadaviek dodávateľa musíte poskytnúť spätné volanie aplikácie ako parameter sl_usbd_vendor_create_instance(). Po prijatí požiadavky dodávateľa zariadením USB musí byť táto požiadavka správne dekódovaná.ampObrázok nižšie zobrazuje dekódovanie požiadaviek dodávateľa. Počas prenosu dát môže byť potrebné prijať alebo odoslať určité požiadavky od hostiteľa.tagriadiaceho prenosu. Ak nie sú k dispozícii žiadne údajetagAk je prítomný, stačí dekódovať inštalačný paket. Tento exampzobrazuje tri typy údajovtage management: žiadne dáta, dáta VÝCHOD a dáta VSTUP.
Example – Dekódovanie požiadavky dodávateľa

Copyright © 2025 Silicon Laboratories. Všetky práva vyhradené.

58/174

Koniecview

#definovať POŽIADAVKA_OD_DODAVATEĽA_APLIKÁCIE_ŽIADNE_ÚDAJE

0x01u

#definovať POŽIADAVKA_OD_DODAVATEĽA_PRÍJEMU_DÁT_OD_HOSTITEĽA_APP 0x02u

#definovať POŽIADAVKA_DODAVATEĽA_ODOSLAŤ_DÁTA_HOSTITEĽOVI_APLIKÁCIE 0x03u

#definovať APP_VENDOR_REQ_DATA_BUF_SIZE

50u

statický uint8_t app_vendor_req_buf[APP_VENDOR_REQ_DATA_BUF_SIZE];

statická bool hodnota app_usbd_vendor_req (uint8_t)

číslo_triedy,

konštanta sl_usbd_setup_req_t *p_setup_req)

(1)

{

bool platný;

stav sl_status_t;

uint16_t req_len;

uint32_t len_xfer;

(neplatné)číslo_triedy;

prepínač(p_setup_req->bRequest) { prípad APP_VENDOR_REQ_NO_DATA: platný = true; prerušenie;

(2) (3)

prípad APP_VENDOR_REQ_RECEIVE_DATA_FROM_HOST:

(4)

req_len = p_setup_req->wLength;

ak (dĺžka_požiadavky > veľkosť_požiadavky_dodávateľa_aplikácie) {

// Nie je dostatok miesta na príjem údajov.

návrat (nepravda);

}

// Prijímanie dát cez Control OUT EP. // Čakanie na dokončenie prenosu donekonečna. status = sl_usbd_core_read_control_sync((void *)&app_vendor_req_buf[0u],
req_len, 0u, &xfer_len); ak (status ! SL_STATUS_OK) { platný = false; } inde { platný = true; } prestávka;

prípad APP_VENDOR_REQ_SEND_DATA_TO_HOST:

(5)

req_len = APP_VENDOR_REQ_DATA_BUF_SIZE;

// Naplníme buf vzorom. Mem_Set((void *)&AppVendorReqBuf[0u],
'A',
req_len);

// Odoslanie dát cez Control IN EP. // Čakanie na dokončenie prenosu donekonečna. status = sl_usbd_core_write_control_sync((void *)&app_vendor_req_buf[0u],
req_len, 0u, false, &xfer_len); ak (status ! SL_STATUS_OK) { platný = DEF_FAIL; } inde { platný = DEF_OK; } break;

predvolene:

(6)

// Požiadavka nie je podporovaná.

Copyright © 2025 Silicon Laboratories. Všetky práva vyhradené.

59/174

Koniecview

platný =pravda;prestávka;
prípad APP_VENDOR_REQ_RECEIVE_DATA_FROM_HOST:(4) req_len = p_setup_req->wLength;if(req_len > APP_VENDOR_REQ_DATA_BUF_SIZE){// Nie je dostatok miesta na príjem dát.return(false);}// Prijíma dáta cez Control OUT EP.// Čakať na dokončenie prenosu neurčito. status =sl_usbd_core_read_control_sync((void *)&app_vendor_req_buf[0u],
req_len,0u,&xfer_len);ak(stav ! SL_STATUS_OK){platné =false;}else{platné =true;}break;
prípad APP_VENDOR_REQ_SEND_DATA_TO_HOST:(5) req_len = APP_VENDOR_REQ_DATA_BUF_SIZE;// Naplň buf vzorom.Mem_Set((void *)&AppVendorReqBuf[0u],'A',
req_len);// Odoslanie dát cez Control IN EP.// Čakanie na dokončenie prenosu navždy. status =sl_usbd_core_write_control_sync((void *)&app_vendor_req_buf[0u],
req_len,0u,false,&xfer_len);if(status ! SL_STATUS_OK){ valid = DEF_FAIL;}else{ valid = DEF_OK;}break;
predvolené:(6)// Požiadavka nie je podporovaná. valid = DEF_FAIL;break;}return(valid);}

(1) Jadro odovzdá obsah inštalačného paketu vašej aplikácii. Štruktúra sl_usbd_setup_req_t obsahuje rovnaké polia, aké sú definované v špecifikácii USB 2.0 (ďalšie podrobnosti nájdete v časti „9.3 Požiadavky na USB zariadenia“ v tejto špecifikácii):

typedef struct {

uint8_t bmRequestType; /* Charakteristiky požiadavky.

*/

uint8_t bRequest; /* Konkrétna požiadavka.

*/

uint16_t wValue; /* Líši sa podľa požiadavky.

*/

uint16_t wIndex; /* Líši sa podľa požiadavky; zvyčajne sa používa ako index.*/

uint16_t wLength; /* Dĺžka prenosu, ak sú dáta stage prítomný.

*/

} sl_usbd_setup_req_t;

(2) Určte požiadavku. Ak používate rôzne požiadavky, môžete použiť príkaz switch. V tomto príkladeampt. j. existujú tri rôzne požiadavky zodpovedajúce trom typom údajovtage: APP_VENDOR_REQ_NO_DATA, APP_VENDOR_REQ_RECEIVE_DATA_FROM_HOST a APP_VENDOR_REQ_SEND_DATA_TO_HOST.
(3) Ak nie sú k dispozícii žiadne údajetagAk je prítomné e, stačí dekódovať ostatné polia. Prítomnosť dátového stagČi je hodnota e alebo nie, je indikovaná tým, že pole wLength je nenulové alebo nulové.
(4) Ak hostiteľ odosiela dáta do zariadenia, musíte zavolať funkciu sl_usbd_core_read_control_sync(). Poskytnutá vyrovnávacia pamäť by mala obsahovať až wLength bajtov. Ak sa vyskytne chyba, vráti jadru hodnotu false, ktorá zastaví stavové stagprenosu riadenia, čo signalizuje hostiteľovi, že požiadavku nie je možné spracovať. V prípade úspechu sa vráti hodnota true.
(5) Ak hostiteľ prijíma dáta zo zariadenia, musíte zavolať funkciu sl_usbd_core_write_control_sync(). Ak sa vyskytne chyba, vráti jadru hodnotu false, ktorá zastaví stavové hodnoty.tagprenosu riadenia, čo signalizuje hostiteľovi, že požiadavku nie je možné spracovať. V prípade úspechu sa vráti hodnota true.
(6) V tomto exampt. j. všetky nerozpoznané požiadavky sú označené vrátením hodnoty false jadru. Toto zastaví dáta alebo stavové požiadavky.tagprenosu riadenia, ktorý signalizuje hostiteľovi, že požiadavka nie je podporovaná.
Hostiteľ odosiela požiadavky dodávateľa prostredníctvom aplikácie dodávateľa hostiteľa. Knižnice USB, ako napríklad libusb, vám môžu pomôcť pri vývoji vlastnej aplikácie dodávateľa hostiteľa.

Copyright © 2025 Silicon Laboratories. Všetky práva vyhradené.

60/174

API dokumentácia
API dokumentácia
API dokumentácia
Zoznam modulov
API zariadenia USB API zariadenia USB ACM API zariadenia USB API zariadenia CDC API zariadenia USB Core API zariadenia USB HID API zariadenia USB API zariadenia MSC API zariadenia USB MSC API zariadenia SCSI API dodávateľa zariadenia USB

Popis
API zariadenia USB API zariadenia USB ACM API zariadenia USB API zariadenia CDC API zariadenia USB Core API zariadenia USB HID API zariadenia USB API zariadenia MSC API zariadenia USB MSC API zariadenia SCSI API dodávateľa zariadenia USB

Copyright © 2025 Silicon Laboratories. Všetky práva vyhradené.

61/174

API zariadenia USB
API zariadenia USB
API zariadenia USB
API zariadenia USB.
Moduly
API zariadenia USB ACM API zariadenia USB CDC API zariadenia USB Core API zariadenia USB HID API zariadenia USB MSC API zariadenia USB MSC API zariadenia SCSI API dodávateľa zariadenia USB

Copyright © 2025 Silicon Laboratories. Všetky práva vyhradené.

62/174

API ACM pre zariadenia USB

API ACM pre zariadenia USB

API ACM pre zariadenia USB

Rozhranie API CDC ACM pre zariadenia USB.
Moduly
a sl_usbd_cdc_ cm_line_coding_t sl_usbd_cdc_acm_callbacks_t
Funkcie

stav_sl_status_t stav_sl_status_t
stav_sl_status_t stav_sl_status_t stav_sl_status_t
stav_sl_t
stav_sl_t
stav_sl_t
sl_status_t sl_status_t sl_status_t sl_status_t sl_status_t

a sl_usbd_cdc_ cm_init(neplatné)
GLOBÁLNE PREMENNÉ.
ssll__uussbbdd__ccddcc__aaccmm__ccraellabtaec_kins_stta*npc_ea(cumin_tc1a6l_lbtalicnkes_,sutaintte8__int t*eprv_saul,bucinlats1s6__nt bcra)ll_mgmt_capabilities,
Pridajte novú inštanciu podtriedy sériovej emulácie CDC ACM.
aaaa sl_usbd_cdc_ cm_ dd_to_configuration(uint8_t podtrieda ss_nbr, uint8_t config_nbr)
Pridajte inštanciu podtriedy CDC ACM do konfigurácie zariadenia USB.
aa sl_usbd_cdc_ cm_is_en bled(uint8_t podtrieda_nbr, bool *p_enabled)
Získajte stav povolenia podtriedy sériovej emulácie CDC ACM.
aaa sl_usbd_cdc_ cm_re d(uint8_t podtrieda ss_nbr, uint8_t *p_buf, uint32_t buf_len, uint16_t časový limit, uint32_t
*p_xfer_len) Prijíma údaje o podtriede sériovej emulácie CDC ACM.
aaaa sl_usbd_cdc_ cm_re d_ sync(uint8_t podtrieda ss_nbr, uint8_t *p_buf, uint32_t buf_len, aaaa sl_usbd_cdc_ sync_function_t sync_fnct, void *p_ sync_rg)
Asynchrónne prijímať dáta v podtriede sériovej emulácie CDC ACM.
aa sl_usbd_cdc_ cm_write(uint8_t podtrieda ss_nbr, uint8_t *p_buf, uint32_t buf_len, uint16_t časový limit, uint32_t
*p_xfer_len) Odosiela dáta v podtriede sériovej emulácie CDC ACM.
aaa sl_usbd_cdc_ cm_write_ sync(uint8_t podtrieda ss_nbr, uint8_t *p_buf, uint32_t buf_len, aaaa sl_usbd_cdc_ sync_function_t sync_fnct, void *p_ sync_rg)
Asynchrónne odosielať dáta v podtriede sériovej emulácie CDC ACM.
aaa sl_usbd_cdc_ cm_get_line_control_st te(uint8_t podtrieda ss_nbr, uint8_t *p_line_ctrl)
Vrátiť stav riadiacich čiar.
aaa sl_usbd_cdc_ cm_get_line_coding(uint8_t podtrieda ss_nbr, sl_usbd_cdc_ cm_line_coding_t *p_line_coding)
Získajte aktuálny stav kódovania linky.
aaa sl_usbd_cdc_ cm_set_line_coding(uint8_t podtrieda ss_nbr, sl_usbd_cdc_ cm_line_coding_t *p_line_coding)
Nastavte nové kódovanie linky.
aaa sl_usbd_cdc_ cm_set_line_st te_event(uint8_t podtrieda ss_nbr, uint8_t udalosti)
Nastavte udalosť(y) stavu linky.
aaaa sl_usbd_cdc_ cm_cle r_line_st te_event(uint8_t podtrieda ss_nbr, uint8_t udalosti)
Vymazať udalosť(y) stavu linky.

Copyright © 2025 Silicon Laboratories. Všetky práva vyhradené.

63/174

API ACM pre zariadenia USB
Makrá
#definovať SL_USBD_CDC_ACM_NBR_NONE 255u
MODUL.
#definovať SL_USBD_CDC_ACM_PARITY_NONE 0u
DEFINÍCIE NASTAVENÍ PORTU.
#definovať SL_USBD_CDC_ACM_PARITY_ODD 1u #definovať SL_USBD_CDC_ACM_PARITY_EVEN 2u #definovať SL_USBD_CDC_ACM_PARITY_MARK 3u #definovať SL_USBD_CDC_ACM_PARITY_SPACE 4u #definovať SL_USBD_CDC_ACM_STOP_BIT_1 0u #definovať SL_USBD_CDC_ACM_STOP_BIT_1_5 1u #definovať SL_USBD_CDC_ACM_STOP_BIT_2 2u #definovať SL_USBD_CDC_ACM_CTRL_BREAK 0 01u
DEFINÍCIE PRÍZNAKOV UDALOSTÍ RIADKU.
#definovať SL_USBD_CDC_ACM_CTRL_RTS 0 02u #definovať SL_USBD_CDC_ACM_CTRL_DTR 0 04u #definovať SL_USBD_CDC_ACM_STATE_DCD 0 01u #definovať SL_USBD_CDC_ACM_STATE_DSR 0 02u #definovať SL_USBD_CDC_ACM_STATE_BREAK 0 04u #definovať SL_USBD_CDC_ACM_STATE_RING 0 08u #definovať SL_USBD_CDC_ACM_STATE_FRAMING 0 10u #definovať SL_USBD_CDC_ACM_STATE_PARITY 0 20u #definovať SL_USBD_CDC_ACM_STATE_OVERUN 0 40u #definovať SL_USBD_CDC_ACM_CALL_MGMT_DEV 0 01u
MOŽNOSTI SPRÁVY HOVOROV.
#definovať SL_USBD_CDC_ACM_CALL_MGMT_DATA_CCI_DCI 0 02u #definovať SL_USBD_CDC_ACM_CALL_MGMT_DATA_OVER_DCI 0 02u | 0 01u)
Dokumentácia funkcií
sl_usbd_cdc_acm_init
sl_status_t sl_usbd_cdc_acm_init (neplatné)
GLOBÁLNE PREMENNÉ. Parametre
Copyright © 2025 Silicon Laboratories. Všetky práva vyhradené.

64/174

API ACM pre zariadenia USB

Typ
neplatné

Smer N/A

Názov argumentu

MAKRA GLOBÁLNE KONŠTANTY PROTOTYPY FUNKCIÍ CDC ACM FUNKCIE

Inicializujte podtriedu sériovej emulácie CDC ACM.
Návraty

V prípade úspechu vráti SL_STATUS_OK alebo v prípade neúspechu iný kód SL_STATUS.

Popis

sl_usbd_cdc_acm_create_instance

sl_status_t sl_usbd_cdc_acm_create_instance (uint16_t line_state_interval, uint16_t call_mgmt_capabilities, sl_usbd_cdc_acm_callbacks_t * p_acm_callbacks, uint8_t * p_subclass_nbr)

Pridajte novú inštanciu podtriedy sériovej emulácie CDC ACM.
Parametre

Typ
uint16_t
uint16_t

Názov argumentu smeru

Popis

N/A

line_state_interval Interval upozornenia na stav linky v milisekundách (hodnota musí

byť mocninou čísla 2).

N/A

call_mgmt_capabilities Bitmapa Možnosti správy hovorov. Spojený ALEBO

nasledujúce príznaky:

SL_USBD_CDC_ACM_CALL_MGMT_DEV Zariadenie samo spracováva správu hovorov. SL_USBD_CDC_ACM_CALL_MGMT_DATA_CCI_DCI Zariadenie môže odosielať/prijímať informácie o správe hovorov cez rozhranie dátovej triedy.

sl_usbd_cdc_acm_callbacks_t Neuvedené
*

uint8_t *

N/A

p_acm_callbacks p_subclass_nbr

Voliteľné ukazovatele na funkcie spätného volania, ktoré sa majú volať pri rôznych udalostiach.
Parameter premennej, ktorá bude prijímať číslo inštancie podtriedy sériovej emulácie CDC ACM.

Návraty

V prípade úspechu vráti SL_STATUS_OK alebo v prípade neúspechu iný kód SL_STATUS.

sl_usbd_cdc_acm_add_to_configuration

sl_status_t sl_usbd_cdc_acm_add_to_configuration (uint8_t podtrieda_číslo, uint8_t konfiguračné_číslo)

Pridajte inštanciu podtriedy CDC ACM do konfigurácie zariadenia USB.
Parametre

Typ
uint8_t uint8_t

Smer N/AN/A

Názov argumentu
číslo_podtriedy číslo_konfigurácie

Popis Číslo inštancie podtriedy sériovej emulácie CDC ACM. Index konfigurácie, do ktorého sa má pridať nové rozhranie testovacej triedy.

Návraty

Copyright © 2025 Silicon Laboratories. Všetky práva vyhradené.

65/174

API ACM pre zariadenia USB
V prípade úspechu vráti SL_STATUS_OK alebo v prípade neúspechu iný kód SL_STATUS.

sl_usbd_cdc_acm_is_enabled

sl_status_t sl_usbd_cdc_acm_is_enabled (uint8_t podtrieda_nbr, bool * p_enabled)

Získajte stav povolenia podtriedy sériovej emulácie CDC ACM.
Parametre

Typ

Smer

Názov argumentu

Popis

uint8_t N/A

subclass_nbr Číslo inštancie podtriedy sériovej emulácie CDC ACM.

bool * neuvedené

p_enabled

Boolovská hodnota pre premennú, ktorá bude mať povolený stav. Ak je premenná nastavená na hodnotu true, sériová emulácia CDC ACM je povolená.

Dokumenty / zdroje

Zásobník USB zariadení SILICON LABS [pdfNávod na obsluhu
Zásobník zariadení USB, zásobník zariadení, zásobník

Referencie

Zanechajte komentár

Vaša emailová adresa nebude zverejnená. Povinné polia sú označené *