SILICON LABS USB eszközkészlet használati útmutató

USB-eszközverem

Műszaki adatok

  • USB verzió: 1.5.1
  • Megjelenés dátuma: 21. július 2025
  • Simplicity SDK verzió: 2025.6.1

Termék végeview

A Silicon Labs USB eszközkészlete sokoldalú és
könnyen használható USB-csatlakoztathatóság IoT-projektekhez, megkönnyítve
kommunikáció a hálózati társprocesszorok és a gazdagépek között.

Jellemzők

  • Hatékony USB-eszközverem
  • Ideális IoT projektekhez
  • Hálózati társprocesszorok és a processzorok közötti kommunikáció támogatása
    házigazdák

A termék használati útmutatója

USB-eszköz konfigurációja

Konfigurálja az USB-eszköz beállításait a projektjének megfelelően
követelményeknek az USB-eszköz konfigurációja című részben található információk alapján
a dokumentációban.

USB-eszköz programozási útmutatója

Kövesse az USB-eszköz programozási útmutatóját, hogy megértse, hogyan
programozhat és kommunikálhat az USB-eszközzel különféle célokra
alkalmazások.

USB eszközosztályok

Az USB eszközosztályok szakasz áttekintést nyújt.view különböző
osztályok, mint például a CDC ACM, HID, MSC SCSI és a Vendor Class. Válassza ki a
megfelelő osztály az eszköz funkcionalitása alapján.

USB-eszköz hibaelhárítása

Ha bármilyen problémát tapasztal az USB-eszközzel, tekintse meg a
USB-eszközök hibaelhárítása című rész megoldásokat és hibakeresést kínál
tippeket.

Microsoft Windows operációs rendszer USB-gazdagép

Ha Microsoft Windows operációs rendszerrel rendelkező USB-eszközt használ
Házigazda, kérjük, feltétlenül kövesse a jelen dokumentumban található irányelveket.
dokumentáció a zökkenőmentes integrációhoz.

GYIK

K: Mik a gyakori exampeszközök, amiket felhasználhatok az építéshez
ez az USB-verem?

A: Az USB-verem lehetővé teszi olyan eszközök építését, mint például
USB-soros adapterek, egerek vagy billentyűzetek, cserélhető adattárolók
eszközök és egyedi eszközök.

K: Vannak-e speciális szoftverkövetelmények a használatához?
USB eszközverem?

A: A kompatibilis szoftverek közé tartozik a Simplicity SDK, a Simplicity
Stúdió, Simplicity Commander, GCC (A GNU Fordítógyűjtemény),
IAR beágyazott munkapad ARM-hoz és IAR EWARM-hoz.

Univerzális soros busz USB

Univerzális soros busz USB

USB-n keresztülview Felettview
Kiadási megjegyzések USB
Specifikációk és jellemzőkview
USB eszköz konfigurációjaview
USB eszköz programozási útmutatójaview
USB eszközosztályokview CDC ACM osztály végeview HID osztály végeview MSC SCSI osztály végeview Szállítói osztály végeview
USB API API dokumentáció USB eszköz API USB eszköz ACM API a sl_usbd_cdc_ cm_line_coding_t sl_usbd_cdc_acm_callbacks_t USB eszköz CDC API a sl_usbd_cdc_subcl ss_driver_t USB eszközmag API
sl_usbd_device_config_t sl_usbd_setup_req_t
egy sl_usbd_cl ss_driver_t USB eszköz HID API
sl_usbd_hid_callbacks_t USB eszköz MSC API
egy sl_usbd_msc_subcl ss_driver_t USB eszköz MSC SCSI API
sl_usbd_msc_scsi_callbacks_t

Copyright © 2025 Silicon Laboratories. Minden jog fenntartva.

1/174

Univerzális soros busz USB
egy sl_usbd_msc_scsi_lun_pi
sl_usbd_msc_scsi_lun_info sl_usbd_msc_scsi_lun
USB eszközgyártói API sl_usbd_vendor_callbacks_t
API dokumentáció USB eszköz hibaelhárítása
Felettview Microsoft Windows operációs rendszer USB-gazdagép
Felettview

Copyright © 2025 Silicon Laboratories. Minden jog fenntartva.

2/174

Felettview
Felettview
USB-eszköz
Az USB a számítógépes rendszerek történetének egyik legsikeresebb kommunikációs interfésze, és a számítógépes perifériák csatlakoztatásának tényleges szabványa. A Silicon Labs USB Device Stack egy kifejezetten beágyazott rendszerekhez tervezett USB eszközmodul. A Silicon Labs minőségére, skálázhatóságára és megbízhatóságára építve, szigorú validációs folyamaton ment keresztül, hogy megfeleljen az USB 2.0 specifikációnak. Ez a dokumentáció leírja, hogyan kell inicializálni, elindítani és használni a Silicon Labs USB Device Stack-et. Ismerteti a különböző konfigurációs értékeket és azok felhasználását. Tartalmaz továbbá egy áttekintést is.view a technológiáról, a konfigurációs lehetőségek típusairól, a megvalósítási eljárásokról és az exampMinden elérhető osztály tipikus használati módjai.
Az USB-fogalmak gyors megértésének elősegítése érdekében a dokumentáció számos példát tartalmazampalapvető funkciókkal rendelkező USB-meghajtók. Ezek a példákampA les egy olyan keretrendszert biztosít, amely lehetővé teszi az eszközök gyors építését. Ezek a példákampbeleértve a következőket:
USB-soros adapter (kommunikációs eszközosztály) Egér vagy billentyűzet (emberi interfész eszközosztály) Cserélhető adattároló eszköz (háttértár) Egyedi eszköz (gyártói osztály)
A következő a végeview a dokumentációs szakaszokból:
Specifikációk és jellemzők USB-eszköz konfigurációja USB-eszköz programozási útmutatója USB-eszközosztályok
CDC ACM osztály HID osztály MSC SCSI osztály Gyártói osztály USB eszköz hibaelhárítása Microsoft Windows operációs rendszer USB Host

Copyright © 2025 Silicon Laboratories. Minden jog fenntartva.

3/174

USB
USB

USB 1.5.1-es verzió, 2025. július 21. – Kiadási megjegyzések
Simplicity SDK 2025.6.1-es verzió
A Silicon Labs hatékony USB-eszközkészlete sokoldalú, könnyen használható USB-csatlakoztathatóságot kínál, amely ideális IoT-projektekhez, beleértve a hálózati társprocesszorok és a gazdagépek közötti kommunikációt. Kattintson ide a korábbi kiadásokért.
Kiadási összefoglaló
Főbb jellemzők | API-változások | Hibajavítások | Chip-engedélyezés
Főbb jellemzők
Csak az alapul szolgáló platform változik.
API módosítások
Egyik sem.
Hibajavítások
Egyik sem.
Chip-engedélyezés
Egyik sem.
Főbb jellemzők
Új funkciók | Fejlesztések | Eltávolított funkciók | Elavult funkciók
Új funkciók
Egyik sem.
Javítások
Csak az alapul szolgáló platform változik.
Eltávolított funkciók
Egyik sem.
Elavult funkciók
Egyik sem.
API módosítások
Új API-k | Módosított API-k | Eltávolított API-k | Elavult API-k
Új API-k

Copyright © 2025 Silicon Laboratories. Minden jog fenntartva.

4/174

USB
Egyik sem.
Módosított API-k
Egyik sem.
Eltávolított API-k
Egyik sem.
Elavult API-k
Egyik sem.
Hibajavítások
Egyik sem.
Chip-engedélyezés
Egyik sem.
Pályázat plample Változások
Új plamples | Módosított példaamples | Eltávolított examples | Elavult examples
Új plamples
Egyik sem.
Módosított plamples
Egyik sem.
Eltávolítva plamples
Egyik sem.
Elavult examples
Egyik sem.
A kiadási változások hatása
Hatásnyilatkozatok | Migrációs útmutató
Hatásnyilatkozatok
Egyik sem.
Migrációs útmutató
Egyik sem.
Ismert problémák és korlátozások
Egyik sem.
A kiadás használata

Copyright © 2025 Silicon Laboratories. Minden jog fenntartva.

5/174

USB

Mit tartalmaz a kiadás? | Kompatibilis szoftverek | Telepítés és használat | Súgó és visszajelzés

Mi van a kiadásban?

USB eszközverem alkalmazáspéldaamples
Kompatibilis szoftver

Szoftver
Simplicity SDK Simplicity Studio Simplicity Commander GCC (A GNU Compiler Collection) IAR Embedded Workbench ARM-hoz IAR EWARM

Kompatibilis verzió vagy változat
2025.6.0 5.11.0 1.18.2 (a Simplicity Studio verziójával) 12.2.1 (a Simplicity Studio verziójával) 9.40.1 (a Simplicity Studio verziójával)

Telepítés és használat

A fejlesztés beindításához tekintse meg a következő oldalainkat:
USB eszköz programozási útmutatója. API dokumentáció.
A Secure Vault integrációjával kapcsolatos információkért lásd: Secure Vault.
Újraview Biztonsági és szoftveres tanácsadási értesítések és az értesítési beállítások kezelése:
ò Látogasson el a https://community.silabs.com/ oldalra. Jelentkezzen be fiókja hitelesítő adataival. Kattintson a profijárafile ikonra az oldal jobb felső sarkában.
ő Válassza az Értesítések lehetőséget a legördülő menüből. ö Az Értesítések részben lépjen a Termékértesítéseim lapra az értesítések újbóli megtekintéséhez.view korábbi biztonsági és szoftvertanácsadás
értesítéseket
÷ A beállítások kezeléséhez használja az Értesítések kezelése lapot, ahol testreszabhatja, hogy mely termékfrissítéseket és tanácsokat szeretné megkapni.
kap.
Az ajánlott konfigurációs beállításokat lásd itt.
Ha többet szeretne megtudni az ebben a kiadásban található szoftverről, tekintse meg online dokumentációnkat.
Segítség és visszajelzés

Lépjen kapcsolatba a Silicon Labs ügyfélszolgálatával. A „Kérdezze a mesterséges intelligenciát” eszközünk használatával válaszokat kaphat az oldal tetején található keresőmezőben.

Megjegyzés: Az Ask AI kísérleti jellegű.

Kérjen segítséget fejlesztői közösségünktől.
SDK kiadási és karbantartási szabályzat
Tekintse meg SDK kiadási és karbantartási szabályzatunkat.

Copyright © 2025 Silicon Laboratories. Minden jog fenntartva.

6/174

Felettview
Felettview
Műszaki adatok
Megfelel az „Universal Serial Bus specifikáció 2.0 revíziójának” Implementálja az „Interface Association Descriptor Engineering Change Notice (ECN)” szabványt. Átviteli típusok
Tömeges megszakításvezérlés USB osztályok Kommunikációs eszköz osztály (CDC) Absztrakt vezérlőmodell (ACM) Emberi interfész eszköz (HID) Tömeges tároló osztály (MSC) Gyártóspecifikus osztály keretrendszer
Jellemzők
Skálázható, hogy csak a szükséges funkciókat tartalmazza a memóriaigény minimalizálása érdekében Teljes sebességű (12 Mbit/s) támogatás Kompozit (többfunkciós) eszközök támogatása Több konfigurációs eszköz támogatása USB energiatakarékos funkciók támogatása (eszköz felfüggesztése és újraindítása) A tömeges tárolóosztály teljes integrációja a Micrium operációs rendszerbe File Rendszermodul CMSIS-RTOS2 absztrakciós réteggel fejlesztve, hogy különböző operációs rendszerekkel is működjön. A Silicon Labs GSDK FreeRTOS és Micrium operációs rendszer portokkal rendelkezik.

Copyright © 2025 Silicon Laboratories. Minden jog fenntartva.

7/174

Felettview
Felettview

USB-eszköz konfigurációja

Ez a szakasz a Silicon Labs USB-eszköz konfigurálását tárgyalja. A konfigurációs paraméterek három csoportba sorolhatók:
USB-eszköz alapkonfigurációja USB-eszköz információinak konfigurációja USB-eszköz hardverkonfigurációja
USB eszközmag-konfiguráció
A Silicon Labs USB-eszköze fordítási időben konfigurálható az sl_usbd_core_config.h fájlban található #define-ok segítségével. fileAz USB-eszközök #define-eket használnak, amikor csak lehetséges, mivel ezek lehetővé teszik a kód- és adatméretek skálázását fordítási időben az engedélyezett funkciók alapján. Ez lehetővé teszi a Silicon Labs USB-eszközök írásvédett memória (ROM) és véletlen hozzáférésű memória (RAM) méretének az alkalmazás igényeihez való igazítását.
Ajánlott: Indítsa el a konfigurációs folyamatot az alapértelmezett értékekkel (félkövérrel kiemelve).
Az alábbi szakaszok a sablonkonfigurációban szereplő sorrend szerint vannak rendszerezve. file, sl_usbd_core_config.h.
Alapvető konfigurációs osztályok konfigurációja
Alapkonfiguráció
Táblázat – USB eszközmag-konfigurációs állandók

Konstans leírása

Alapértelmezett érték

SL_USBD_TA SK_STACK_ MÉRET

Konfigurálja az USBD alapfeladat veremméretét bájtokban.

4096

SL_USBD_TA SK_PRIORIT Y

Az USBD alapfeladat prioritását konfigurálja. Ez egy CMSIS-RTOS2 prioritás.

Magas prioritás

SL_USBD_A UTO_START _USB_ESZKÖZ E

Ha engedélyezve van, az USB-eszköz automatikusan elindul, amint a kernel elindul, és az adott 1 USBD magfeladat első alkalommal ütemeződik. Ha letiltva van, az alkalmazásnak meg kell hívnia az sl_usbd_core_start_device() függvényt, amikor az USB-gazdagép érzékeli.

SL_USBD_C Az sl_usbd_add_configuration() függvénnyel hozzáadandó konfigurációk teljes száma.

1

ONFIGURATI függvény.

BE_MENNYISÉG

TY

Copyright © 2025 Silicon Laboratories. Minden jog fenntartva.

8/174

Felettview

Állandó
SL_USBD _INTERF ACE_QU ANTITY
SL_USBD _ALT_INT ERFACE_ MENNYISÉG
TY
SL_USBD _INTERF ACE_GR
OUP_QU
ANTITY
SL_USBD _LEÍRÁS
PTOR_Q
MÉRET
SL_USBD _STRING _QUANTI
TY
SL_USBD _OPEN_E NDPOIN TS_QU NTITY

Leírás Az összes konfigurációhoz hozzáadandó USB interfészek teljes száma. Ez nagymértékben függ a használt osztály(ok)tól. Az egy osztálypéldányhoz szükséges interfészek számáról további információt az osztály(ok) „Erőforrásigények a magtól” című szakaszában talál.
Az összes konfigurációhoz hozzáadandó alternatív USB interfészek teljes száma. Ez nagymértékben függ a használt osztály(ok)tól. Ennek az értéknek mindig egyenlőnek vagy nagyobbnak kell lennie, mint az SL_USBD_INTERFACE_QUANTITY. Ha további információt szeretne kapni arról, hogy egy osztálypéldány hány alternatív interfészre van szüksége, lásd az osztály(ok) „Erőforrásigények a magtól” című szakaszát.
Az összes konfigurációhoz hozzáadandó USB interfészcsoportok teljes száma. Ez nagymértékben függ a használt osztály(ok)tól. Ha további információt szeretne kapni arról, hogy hány interfészcsoport igényel egy osztálypéldányt, tekintse meg az osztály(ok) „Erőforrásigények a magtól” című szakaszát.
Az összes konfigurációhoz hozzáadandó végpont-leírók teljes száma. Ez nagymértékben függ a használt osztály(ok)tól. Ha további információt szeretne kapni arról, hogy egy osztálypéldány hány végpont-leírót igényel, lásd az osztály(ok) „Erőforrásigények a magból” című szakaszának „Végpontok száma” című részét. Vegye figyelembe, hogy a vezérlő végpontokat itt nem kell figyelembe venni. Az USB-karakterláncok teljes száma. A mennyiség nullára állítása letiltja a funkciót. Ennek letiltása azt eredményezi, hogy az eszköz nem tárolja az alkalmazásból átadott USB-leíró karakterláncokat. Ez azt jelenti, hogy a gazdagép nem tudja lekérni a leíró karakterláncokat (például a gyártót és a terméknevet). A megnyitott végpontok teljes száma konfigurációnként. Egy eszköznek legalább két megnyitott végpontra van szüksége a vezérlésátvitelhez, de a használt osztály(ok) végpontjait is hozzá kell adnia. Ha további információt szeretne kapni arról, hogy egy osztálypéldány hány megnyitott végpontra van szüksége, lásd az osztály(ok) „Erőforrásigények a magból” című szakaszának „Végpontok száma” című részét.

Alapértelmezett érték
10 10
2
20 30 20

Osztályok konfigurációja
Az osztályoknak meghatározott fordítási idejű konfigurációjuk van. További információkért lásd az USB eszközosztályok című részt.
USB-eszköz információinak konfigurációja

Az sl_usbd_device_config.h konfigurációja file újracsoportosítja a fordítási idejű #define-s értékeket az eszköz alapvető információinak, például a gyártó/termék azonosítójának, az eszköz karakterláncainak stb. beállításához. Az alábbi táblázat ismerteti az ebben a konfigurációban elérhető összes információkonfigurációt. file.

Táblázat – USB eszközinformációk Konfiguráció Meghatározza

Állandó
SL_USBD_ESZKÖZ E_GYÁRTÓI_AZONOSÍTÓ
SL_USBD_ESZKÖZ E_TERMÉK_AZONOSÍTÓ

Leírás Az Ön gyártói azonosító száma, ahogyan azt az USB Implementers Forum megadta. A gyártói azonosító beszerzésével kapcsolatos további információkért lásd: http://www.usb.org/developers/vendor/ . Az Ön termékazonosító száma.

Copyright © 2025 Silicon Laboratories. Minden jog fenntartva.

9/174

Felettview

Állandó

Leírás

SL_USBD_DEVICE_RELEASE Az eszköz kiadási száma. _NUMBER

SL_USBD_DEVICE_MANUFA Az eszköz gyártóját leíró karakterlánc. Ez a konfiguráció figyelmen kívül marad, amikor a

CTURER_STRING

Az SL_USBD_STRING_QUANTITY konfiguráció 0-ra van állítva.

SL_USBD_DEVICE_PRODUC A terméket leíró karakterlánc. Ez a konfiguráció figyelmen kívül marad, amikor a konfiguráció

T_STRING

Az SL_USBD_STRING_QUANTITY értéke 0.

SL_USBD_DEVICE_SERIAL_N Az eszköz sorozatszámát tartalmazó karakterlánc. Ez a konfiguráció figyelmen kívül marad, amikor a

SZÁM_STRING

Az SL_USBD_STRING_QUANTITY konfiguráció 0-ra van állítva.

SL_USBD_DEVICE_LANGUA Az eszköz karakterláncainak nyelvét azonosító szám. Lehetséges értékek:
GE_ID

– SL_USBD_LANG_ID_ARABIC_SAUDI_ARABIA

– SL_USBD_LANG_ID_KÍNAI_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_OLASZ

– SL_USBD_LANG_ID_PORTUGÁL

– SL_USBD_LANG_ID_SZANSZKRIT

Ez a konfiguráció figyelmen kívül marad, ha az SL_USBD_STRING_QUANTITY konfiguráció 0-ra van állítva.

USB-eszköz hardverkonfigurációja

A használt Silicon Labs eszköztől függően valószínűleg rendelkezni fog a GPIO csatlakozóval és porttal az USB VBUS Sense jel konfigurálásához. A konfigurációs definíciók az sl_usbd_hardware_config.h fejlécben találhatók. file.

Állandó
SL_USBD_DRIVER_VBUS_SENSE_PORT SL_USBD_DRIVER_VBUS_SENSE_PIN

Leírás
GPIO port az USB VBUS Sense jelhez a kártyán. GPIO csatlakozó az USB VBUS Sense jelhez a kártyán.

Copyright © 2025 Silicon Laboratories. Minden jog fenntartva.

10/174

Felettview
Felettview
USB-eszköz programozási útmutatója
Ez a szakasz ismerteti az USB-eszközmodul használatát.
Az USB-eszközmodul kezdeti beállítása
Ez a szakasz az USB-eszközmodul inicializálásához, valamint egy eszköz hozzáadásához, előkészítéséhez és elindításához szükséges alapvető lépéseket ismerteti. Az USB-eszközmodul inicializálása Az USB-eszközmag inicializálása Az aCl-eszközök inicializálása USB-eszköz hozzáadása USB-eszköz összeállítása Konfiguráció(k) hozzáadása USB-funkció(k) hozzáadása Az USB-eszköz indítása
Eseményhook függvények
Az USB-eszközmodul inicializálása
Az USB eszközmag inicializálása
Kezdje a B eszközmodul magjának inicializálásával az sl_usbd_core_init() függvény meghívásával. Az alábbi példa az sl_usbd_core_init() függvény meghívását mutatja be.
Example – Az sl_usbd_core_init() hívása
sl_status_t status; status = sl_usbd_core_init(); if (status ! SL_STATUS_OK) { /* Hiba történt. Ide kell hozzáadni a hibakezelést. */
}
Az osztály(ok) inicializálása
Miután az USB eszközmodul magját inicializálták, inicializálni kell minden egyes használni kívánt osztályt. További információkért lásd az ACL ss-ek „Programozási útmutató” című szakaszát.
USB-eszköz összeállítása
Konfiguráció(k) hozzáadása
Miután sikeresen inicializálta az eszközt, elkezdheti hozzáadni az USB-funkciókat, egy új konfigurációval kezdve. Egy eszköznek legalább egy konfigurációval kell rendelkeznie. Konfiguráció(k) hozzáadásához hívja meg az sl_usbd_core_dd_configuration() függvényt. Ezt a függvényt minden hozzáadni kívánt konfigurációhoz meg kell hívni. Az példaampAz alábbi ábra bemutatja, hogyan adhatunk hozzá teljes sebességűt.
Example – Konfiguráció(k) hozzáadása az eszközhöz

Copyright © 2025 Silicon Laboratories. Minden jog fenntartva.

11/174

Felettview

sl_status_t állapot; uint8_t config_nbr_fs;

/* Teljes sebességű konfiguráció hozzáadása az eszközhöz. */

állapot = sl_usbd_core_add_configuration(0,

/* A konfigurációhoz nem tartoznak speciális attribútumok. */

100u,

/* Max. energiafogyasztás: 100mA.

*/

SL_USBD_DEVICE_SPEED_FULL,

/* Teljes sebességű konfiguráció.

*/

„Konfiguráció hozzáadása ex”amp„Full-Speed ​​konfiguráció”,

&config_nbr_fs);

ha (állapot ! SL_STATUS_OK) {

/* Hiba történt. Ide kell hozzáadni a hibakezelést. */

}

USB-funkció(k) hozzáadása
Miután sikeresen hozzáadott legalább egy konfigurációt az eszközhöz, hozzáadhatja az interfészeket és végpontokat. Minden USB-osztálynak megvannak a saját igényei az interfész és a végpontok típusa, mennyisége és egyéb paraméterek tekintetében. A Silicon Labs USB-eszköz interfészeket és végpontokat ad hozzá az általa kínált osztályokhoz.
Az alkalmazásból példányosíthat egy USB-osztályt, és hozzáadhatja azt egy konfigurációhoz. Az USB-eszközosztály-példányok fogalmával kapcsolatos további információkért lásd: USB-eszközosztályok. Vegye figyelembe, hogy számos különböző osztálypéldányt példányosíthat és adhat hozzá egy konfigurációhoz, így többfunkciós (összetett) eszközt hozhat létre.
Az exampAz alábbi ábra bemutatja, hogyan hozhat létre egy osztálypéldányt, és hogyan adhat hozzá egy konfigurációhoz.
Example – Osztálypéldány hozzáadása az eszközhöz

sl_status_t állapot; uint8_t osztály_száma;
/* Hozz létre egy példányt a használni kívánt osztályból.*/ ​​/* Figyelj arra, hogy az osztálytól függően ennek a függvénynek több argumentuma is lehet. */ status = sl_usbd_ _create_instance(&class_nbr); if (status ! SL_STATUS_OK) { /* Hiba történt. Ide kell hozzáadni a hibakezelést. */ }
/* Az osztálypéldány hozzáadása a Full-Speed ​​konfigurációhoz. */ status = sl_usbd_ _add_to_configuration(class_nbr, /* Az sl_usbd_ által visszaadott osztályszám _példány_létrehozása. */
config_nbr_fs); /* Az sl_usbd_core_add_configuration() által visszaadott konfigurációs szám. */ if (status ! SL_STATUS_OK) { /* Hiba történt. Ide kell hozzáadni a hibakezelést. */ }
Az USB-eszköz indítása
Alapértelmezés szerint az eszközt az USB-eszköz alapvető feladata automatikusan elindítja az eszköz inicializálásának befejezése és a kernel elindulása után. Annak szabályozásához, hogy mikor induljon el és váljon láthatóvá az eszköz az USB-hoszt számára, a define SL_USBD_AUTO_START_USB_DEVICE konfigurációval tiltsa le az automatikus indítási funkciót. Ha le van tiltva, az eszköz felépítése/előkészítése után elindíthatja és láthatóvá teheti az USB-hoszt számára az sl_usbd_core_start_device() függvény meghívásával.
Az exampAz alábbi ábra bemutatja, hogyan indíthatja el az eszközét az sl_usbd_core_start_device() függvénnyel.
Example – Az eszköz indítása

Copyright © 2025 Silicon Laboratories. Minden jog fenntartva.

12/174

Felettview

sl_status_t állapot;
status = sl_usbd_core_start_device(); if (status ! SL_STATUS_OK) { /* Hiba történt. Ide kell hozzáadni a hibakezelést. */ }

Eseményhook függvények
Az USB Device központi modulja két gyenge hookfüggvényt kínál, amelyeket az alkalmazásban újradefiniálhat. Céljuk, hogy értesítsék a busz- és konfigurációs események bekövetkeztéről.
Táblázat – USB eseményhorog funkciói

Esemény

Leírás

Busz

USB busz esemény bekövetkeztekor hívódik meg.

Konfiguráció Hívódik meg, amikor USB konfigurációs esemény történik

Funkció aláírása
void sl_usbd_on_bus_event(sl_usbd_bus_event_t esemény); void sl_usbd_on_config_event(sl_usbd_config_event_t esemény, uint8_t config_nbr);

Example – Eseményhook függvények

void sl_usbd_on_bus_event(sl_usbd_bus_event_t esemény) { switch (esemény) { case SL_USBD_EVENT_BUS_CONNECT: } }
// meghívódik, amikor USB kábelt csatlakoztatunk egy host controllerhez break;
case SL_USBD_EVENT_BUS_DISCONNECT: // meghívódik, amikor az USB kábelt kihúzzák a host controllerből;
case SL_USBD_EVENT_BUS_RESET: // meghívódik, amikor a hoszt reset parancsot küld break;
case SL_USBD_EVENT_BUS_SUSPEND: // meghívódik, amikor a hoszt suspend parancsot küld break;
case SL_USBD_EVENT_BUS_RESUME: // akkor hívódik meg, amikor a gazdagép ébresztési parancsot küld break;
alapértelmezett: szünet; } }
void sl_usbd_on_config_event(sl_usbd_config_event_t esemény, uint8_t config_nbr) { kapcsoló (esemény) { eset SL_USBD_EVENT_CONFIG_SET: }
// akkor hívódik meg, amikor a gazdagép konfigurációs szünetet állít be;
case SL_USBD_EVENT_CONFIG_UNSET: // akkor hívódik meg, ha egy konfiguráció nincs beállítva break;
alapértelmezett: szünet; } }

Copyright © 2025 Silicon Laboratories. Minden jog fenntartva.

13/174

Felettview

Copyright © 2025 Silicon Laboratories. Minden jog fenntartva.

14/174

Felettview
Felettview

USB eszközosztályok

A Silicon Labs USB Device-ben elérhető USB osztályok néhány közös jellemzővel rendelkeznek. Ez a szakasz ezeket a jellemzőket és a központi réteggel való kölcsönhatásukat ismerteti.
Egy adott osztályról további információkat az alábbi forrásokban talál:
CDC ACM osztály HID osztály MSC SCSI osztály Gyártói osztály
Az osztálypéldányokról
Az USB Device modulban elérhető USB osztályok az osztálypéldányok koncepcióját valósítják meg. Egy osztálypéldány egy funkciót képvisel egy eszközön belül. A funkció leírható egy interfész vagy interfészek egy csoportja által, és egy adott osztályhoz tartozik.
Minden USB osztály implementációnak vannak közös konfigurációi és függvényei, az osztálypéldány koncepciója alapján. A közös konfigurációkat és függvényeket az alábbi táblázat mutatja. Az „Állandók vagy függvények” oszlopcímben az XXXX helyőrző helyettesíthető az osztály nevével: CDC, HID, MSC, CDC_ACM vagy VENDOR (függvénynevek esetén Vendor).
Táblázat – Több osztálypéldány fogalmához kapcsolódó konstansok és függvények

Konstans vagy függvény
SL_USBD_XXXX_CL ASS_INS TANCE_QUANTITY
SL_USBD_XXXX_KONFIGURÁCIÓ_MENNYISÉG
sl_usb d _XXXX_create _instan nce ()
sl_usbd_XXXX_add_to_conf iguráció()

Leírás
Az osztálypéldányok maximális számát konfigurálja.
A konfigurációk maximális számát konfigurálja. Az osztály inicializálása során egy létrehozott osztálypéldány hozzáadódik egy vagy több konfigurációhoz. Létrehoz egy új osztálypéldányt.
Hozzáad egy meglévő osztálypéldányt a megadott eszközkonfigurációhoz.

A kód implementációja szempontjából az osztály egy lokális globális változót deklarál, amely egy osztályvezérlő struktúrát tartalmaz. Ez az osztályvezérlő struktúra egy osztálypéldányhoz van társítva, és az osztálypéldány kezeléséhez szükséges specifikus információkat tartalmazza.
A következő ábrák számos esetet mutatnak be. Minden ábra tartalmaz egy kódpéldát.ample, amely megfelel az esetnek.
Ábra – Több osztálypéldány – Az FS eszköz (1 konfiguráció 1 interfésszel) egy tipikus USB eszközt ábrázol. Az eszköz teljes sebességű (FS) és egyetlen konfigurációt tartalmaz. Az eszköz funkcióját egy interfész írja le, amely két végpontból áll az adatkommunikációhoz. Létrejön egy osztálypéldány, amely lehetővé teszi a teljes interfész és a hozzá tartozó végpont kezelését.
Ábra – Több osztálypéldány – FS 1. eszköz konfigurációja 1 interfésszel)

Copyright © 2025 Silicon Laboratories. Minden jog fenntartva.

15/174

Felettview

Az ábrának megfelelő kód – Több osztálypéldány – FS eszköz (1 konfiguráció 1 interfésszel) a példában látható.ample lent.
Example – Több osztálypéldány – FS 1. eszköz konfigurációja 1 interfésszel)

sl_status_t állapot; uint8_t osztály_0;

void app_usbd_XXXX_enable(uint8_t class_nbr) { /* Osztályengedélyezési esemény kezelése. */ }

void app_usbd_XXXX_disable(uint8_t class_nbr) { /* Osztálytiltási esemény kezelése. */ }

sl_usbd_XXXX_callbacks_t osztály_visszahívások = {

(1)

.enable = alkalmazás_usbd_XXXX_enable,

.disable = app_usbd_XXXX_disable

};

állapot = sl_usbd_XXXX_init();

(2)

ha (állapot ! SL_STATUS_OK) {

/* $$$$ Kezeld a hibát. */

}

állapot = sl_usbd_XXXX_create_instance(&class_callbacks,

(3)

&osztály_0);

ha (állapot ! SL_STATUS_OK) {

/* $$$$ Kezeld a hibát. */

}

állapot = sl_usbd_XXXX_add_to_configuration(osztály_0, konfiguráció_0);

(4)

ha (állapot ! SL_STATUS_OK) {

/* $$$$ Kezeld a hibát. */

}

(1) Minden osztály visszahívó függvényeket kínál az eszköz csatlakozási/leválasztási eseményeihez és az osztályspecifikus eseményekhez. A visszahívó struktúra objektum argumentumként kerül átadásra az osztálypéldány sl_usbd_XXXX_create_instance() függvénnyel történő létrehozásakor.
funkció.
(1) Inicializálja az osztályt. Minden belső változó, struktúra és osztályport inicializálódik. Vegye figyelembe, hogy egyes osztályokban az Init() függvény más argumentumokat is fogadhat.

Copyright © 2025 Silicon Laboratories. Minden jog fenntartva.

16/174

Felettview
(2) Hozza létre az osztálypéldányt, ami a class_0. Az sl_usbd_XXXX_create_instance() függvény lefoglal egy, a class_0 osztályhoz társított osztályvezérlő struktúrát. Az osztálytól függően az sl_usbd_XXXX_create_instance() függvénynek az osztályszámon kívül további paraméterei is lehetnek, amelyek az osztályvezérlő struktúrában tárolt osztályspecifikus információkat jelölik. aaa (3) Adja hozzá a class_0 osztálypéldányt a megadott config_0 konfigurációs számhoz. Az sl_usbd_XXXX_add_to_configuration() létrehozza a 0 interfészt és a hozzá tartozó IN és OUT végpontokat. Ennek eredményeként az osztálypéldány magában foglalja a 0 interfészt és annak végpontjait. A 0 interfészen folytatott bármilyen kommunikáció a class_0 osztálypéldányszámot fogja használni. Ábra – Több osztálypéldány – FS eszköz (2 konfiguráció és több interfész) egy összetettebb példát ábrázol.ampPéldául egy teljes sebességű eszköz két konfigurációból áll. Az eszköz két funkcióval rendelkezik, amelyek ugyanabba az osztályba tartoznak, de mindegyik funkciót két interfész írja le, és egy pár kétirányú végponttal rendelkezik. Ebben a példábanampÍgy két osztálypéldány jön létre. Minden osztálypéldány egy interfészcsoporthoz van társítva, szemben az „Ábra – Több osztálypéldány – FS eszköz (1 konfiguráció 1 interfésszel)” és az „Ábra – Több osztálypéldány – FS eszköz (2 konfiguráció és több interfész)” példákkal, ahol az osztálypéldány egyetlen interfészhez volt társítva.
Ábra – Több osztálypéldány – FS 2. eszköz konfigurációi és több interfész)

Az ábrának megfelelő kód – Több osztálypéldány – FS eszköz (2 konfiguráció és több interfész) a példában látható.ample alább. A hibakezelést az áttekinthetőség kedvéért elhagytuk.
Example – Több osztálypéldány – FS 2. eszköz konfigurációi és több interfész)

Copyright © 2025 Silicon Laboratories. Minden jog fenntartva.

17/174

Felettview

sl_status_t állapot; uint8_t osztály_0; uint8_t osztály_1;
állapot = sl_usbd_XXXX_init();
állapot = sl_usbd_XXXX_create_instance(&class_0); állapot = sl_usbd_XXXX_create_instance(&class_1);
állapot = sl_usbd_XXXX_add_to_configuration(osztály_0, cfg_0); állapot = sl_usbd_XXXX_add_to_configuration(osztály_1, cfg_0);
állapot = sl_usbd_XXXX_add_to_configuration(osztály_0, cfg_1); állapot = sl_usbd_XXXX_add_to_configuration(osztály_1, cfg_1);

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

(1) Inicializálja az osztályt. Minden belső változó, struktúra és osztályport inicializálódik.
(2) Hozza létre a class_0 osztálypéldányt. Az sl_usbd_XXXX_create_instance() függvény lefoglalja a class_0 osztályhoz társított osztályvezérlő struktúrát.
(3) Hozza létre a class_1 osztálypéldányt. Az sl_usbd_XXXX_create_instance() függvény lefoglal egy másik, az class_1 osztályhoz társított osztályvezérlő struktúrát.
(4) Adja hozzá a class_0 osztálypéldányt a cfg_0 konfigurációhoz. Az sl_usbd_XXXX_add_to_configuration() létrehozza a 0-s interfészt, az 1-es interfészt, az alternatív interfészeket, valamint a hozzájuk tartozó IN és OUT végpontokat. A class_0 osztálypéldányszámot a 0-s vagy az 1-es interfészen zajló adatkommunikációhoz fogja használni.
(5) Adja hozzá a class_1 osztálypéldányt a cfg_0 konfigurációhoz. Az sl_usbd_XXXX_add_to_configuration() létrehozza a 2-es és a 3-as interfészt, valamint a hozzájuk tartozó IN és OUT végpontokat. A class_1 osztálypéldányszámot a 2-es vagy 3-as interfészen zajló adatkommunikációhoz fogja használni.
(6) Adja hozzá ugyanazokat az osztálypéldányokat, a class_0 és a class_1 osztályt, a másik konfigurációhoz, a cfg_1-hez.
Minden osztály egy sl_usbd_XXXX_callbacks_t típusú struktúrát definiál. Célja, hogy minden osztálynak megadjon egy visszahívó függvénykészletet, amelyeket esemény bekövetkeztekor kell meghívni. Minden osztályban két visszahívó függvény található. Ezeket az alábbi táblázat mutatja be.
Táblázat – Gyakori osztályvisszahívó függvények

Mezők Leírás .enable Akkor hívódik meg, amikor az USB osztálypéldány sikeresen engedélyezve van. .disable Akkor hívódik meg, amikor az USB osztálypéldány letiltva van.

Függvény aláírás void app_usbd_XXXX_enable(uint8_t class_nbr); void app_usbd_XXXX_disable(uint8_t class_nbr);

Copyright © 2025 Silicon Laboratories. Minden jog fenntartva.

18/174

Felettview
Felettview
USB eszköz CDC ACM osztály
USB eszköz CDC alaposztályú Overview USB eszköz CDC ACM osztály erőforrásigényei a Core USB eszköz CDC ACM alosztálytólview USB eszköz CDC ACM osztály konfigurációja USB eszköz CDC ACM osztály programozási útmutató
Ez a szakasz a Silicon Labs USB eszközkészlete által támogatott kommunikációs eszközosztályt (CDC) és a hozzá tartozó CDC alosztályt ismerteti. A Silicon Labs USB-Device jelenleg az Abstract Control Model (ACM) alosztályt támogatja, amelyet általában soros emulációhoz használnak.
A CDC különféle telekommunikációs és hálózati eszközöket foglal magában. A telekommunikációs eszközök közé tartoznak az analóg modemek, analóg és digitális telefonok, ISDN terminál adapterek stb. PéldáulampA hálózati eszközök ADSL- és kábelmodemeket, Ethernet-adaptereket és hubokat tartalmaznak. A CDC egy olyan keretrendszert definiál, amely USB-kapcsolaton keresztül magába foglalja a meglévő kommunikációs szolgáltatási szabványokat, például a V.250-et (telefonhálózaton keresztüli modemekhez) és az Ethernetet (helyi hálózati eszközökhöz). A kommunikációs eszköz felelős az eszközkezelésért, szükség esetén a híváskezelésért és az adatátvitelért.
A CDC hét fő eszközcsoportot definiál. Minden csoport egy kommunikációs modellhez tartozik, amely több alkategóriát is magában foglalhat. Minden eszközcsoportnak saját specifikációs dokumentuma van a CDC alaposztályán kívül. A hét csoport a következő:
Nyilvános kapcsolt telefonhálózat (PSTN), beleértve a hangsávú modemeket, telefonokat és soros emulációs eszközöket. Integrált szolgáltatású digitális hálózati (ISDN) eszközök, beleértve a termináladaptereket és a telefonokat. Ethernet-vezérlő modell (ECM) eszközök, beleértve az IEEE 802 családot támogató eszközöket (pl.: kábel- és ADSL-modemek, WiFi adapterek). Aszinkron átviteli mód (ATM) eszközök, beleértve az ADSL-modemeket és az ATM-hálózatokhoz csatlakoztatott egyéb eszközöket (munkaállomások, útválasztók, LAN-kapcsolók). Vezeték nélküli mobilkommunikációs (WMC) eszközök, beleértve a hang- és adatkommunikáció kezelésére használt többfunkciós kommunikációs kézibeszélő eszközöket. Ethernet-emulációs modell (EEM) eszközök, amelyek Ethernet-keretes adatokat cserélnek. Hálózatvezérlő modell (NCM) eszközök, beleértve a nagy sebességű hálózati eszközöket (nagy sebességű csomagkapcsolt hozzáférésű modemek, vonali terminálberendezések).
A CDC és a hozzá tartozó alosztály implementációja a következő specifikációknak felel meg:
Univerzális soros busz, Osztálydefiníciók kommunikációs eszközökhöz, 1.2-es revízió, 2010. november 3. Univerzális soros busz, Kommunikáció, PSTN eszközök alosztálya, 1.2-es revízió, 2007. február 9.
USB eszköz CDC alaposztályú Overview
Egy CDC eszköz a következő interfészekből áll a kommunikációs képesség megvalósításához:
A Communications Class Interface (CCI) felelős az eszközkezelésért és opcionálisan a híváskezelésért.
Az eszközkezelés lehetővé teszi az eszköz általános konfigurálását és vezérlését, valamint az események értesítését a gazdagépnek. A híváskezelés lehetővé teszi a hívások létrehozását és befejezését. A híváskezelés multiplexelhető egy DCI-n keresztül. A CCI kötelező minden CDC eszközhöz. Azonosítja a CDC funkciót az eszköz által támogatott kommunikációs modell megadásával. A CCI-t követő interfész(ek) bármilyen definiált USB osztályú interfész lehet, például Audio vagy egy gyártóspecifikus interfész. A gyártóspecifikus interfészt konkrétan egy DCI képviseli.
Az adatátvitelért az adatosztály-interfész (DCI) felelős. Az elküldött és/vagy fogadott adatok nem egy adott szabvány szerint működnek.
formátum. Az adatok lehetnek nyers adatok egy kommunikációs vonalról, saját formátumot követő adatok stb. A CCI-t követő összes DCI alárendelt interfésznek tekinthető.
Egy CDC eszköznek legalább egy CCI-vel és nulla vagy több DCI-vel kell rendelkeznie. Egy CCI és bármely alárendelt DCI együttesen biztosít egy funkciót a gazdagép számára. Ezt a képességet függvénynek is nevezik. Egy CDC összetett eszközben több is lehet.

Copyright © 2025 Silicon Laboratories. Minden jog fenntartva.

19/174

Felettview
funkciók. Ezért az eszköz több CCI és DCI készletből állna, ahogy az ábrán látható – CDC kompozit eszköz.
Ábra – CDC kompozit eszköz

Egy CDC eszköz valószínűleg a következő végpontok kombinációját fogja használni:
Egy pár vezérlő BE és KI végpont, az úgynevezett alapértelmezett végpont. Egy opcionális tömeges vagy megszakításos BE végpont. Egy pár tömeges vagy izokron BE és KI végpont. Vegye figyelembe, hogy a Silicon Labs USB eszközkészlete jelenleg nem támogatja az izokron végpontokat.
Az alábbi táblázat a különböző végpontok használatát mutatja, és hogy a CDC melyik interfészén keresztül használják őket.
Táblázat – CDC végponthasználat

Végpont
Control IN
Control OUT
Megszakítás vagy tömeges IN Tömeges vagy izokron IN Tömeges vagy izokron
KI

Irány
Eszközről hosztra
Gazdagéptől az eszközig
Eszközről hosztra
Eszközről hosztra
Gazdagéptől az eszközig

Interfész használat

CCI

Standard enumerációs kérések, osztályspecifikus kérések, eszköz

kezelés, és opcionálisan híváskezelés.

CCI

Standard enumerációs kérések, osztályspecifikus kérések, eszköz

kezelés, és opcionálisan híváskezelés.

CCI

Eseményértesítések, például csengésérzékelés, soros vonal állapota, hálózat állapota.

DCI

Nyers vagy formázott adatkommunikáció.

DCI

Nyers vagy formázott adatkommunikáció.

A legtöbb kommunikációs eszköz megszakításvégpontokat használ az események állomásának értesítésére. Az izokron végpontokat nem szabad adatátvitelre használni, ha egy saját protokoll az USB protokoll hibái esetén az adatok újraküldésére támaszkodik. Az izokron kommunikáció természeténél fogva adatvesztést okozhat, mivel nincsenek újrapróbálkozási mechanizmusai.
A kommunikáció hét fő modellje több alkategóriát foglal magában. Az alosztály leírja, hogy az eszköz hogyan használja a CCI-t az eszközkezelés és a híváskezelés kezeléséhez. Az alábbi táblázat bemutatja az összes lehetséges alosztályt és a hozzájuk tartozó kommunikációs modellt.
Táblázat – CDC alosztályok

Alosztály
Közvetlen vonalú szabályozási modell Absztrakt szabályozási modell

Kommunikációs modell
PSTN
PSTN

ExampAz alosztályt használó eszközök listája
Az USB-gazdagép által közvetlenül vezérelt modemeszközök
Soros emulációs eszközök, modemeszközök, amelyeket soros parancskészlet vezérel

Copyright © 2025 Silicon Laboratories. Minden jog fenntartva.

20/174

Felettview

Alosztály

Kommunikációs modell

ExampAz alosztályt használó eszközök listája

Telefonvezérlő modell

PSTN

Többcsatornás vezérlésű ISDN modell

CAPI vezérlőmodell ISDN

Ethernet hálózati ECM vezérlési modell

ATM-hálózatépítés

ATM

Vezérlési modell

Vezeték nélküli kézibeszélő-vezérlő modell

WMC

Eszközkezelés WMC

Mobil közvetlen vonalmodell

WMC

OBEX

WMC

Ethernet emuláció EEM modell

Hálózati vezérlési modell

NCM

Hangtelefon eszközök
Alapdíjas termináladapterek, elsődleges díjas termináladapterek, telefonok
Alapsebességű termináladapterek, elsődleges sebességű termináladapterek, telefonok, DOC-SIS kábelmodemek, PPPoE emulációt támogató ADSL modemek, Wi-Fi adapterek (IEEE 802.11-család), IEEE 802.3 adapterek, ADSL modemek
Mobil végberendezések, amelyek vezeték nélküli eszközökhöz csatlakoznak
Mobil végberendezések csatlakozása vezeték nélküli eszközökhöz Mobil végberendezések csatlakozása vezeték nélküli eszközökhöz
Mobil végberendezések, amelyek vezeték nélküli eszközökhöz kapcsolódnak. Ethernet kereteket használó eszközök a következő átviteli rétegként. Nem útválasztáshoz és internetkapcsolathoz való. IEEE 802.3 adapterek, amelyek nagy sebességű adatátviteli sávszélességet biztosítanak a hálózaton.

USB eszköz CDC ACM osztály erőforrásigényei a Core-tól

Minden alkalommal, amikor egy CDC ACM osztálypéldányt adunk hozzá egy USB konfigurációhoz az sl_usbd_cdc_acm_add_to_configuration() függvény meghívásával, a következő erőforrások lesznek lefoglalva a magból.

Forrás
Interfészek Alternatív interfészek Végpontok Interfészcsoportok

Mennyiség
2 2 3 1

Vegye figyelembe, hogy ezek a számok konfigurációnként értendők. Az SL_USBD_INTERFACE_QUANTITY, SL_USBD_ALT_INTERFACE_QUANTITY, SL_USBD_INTERFACE_GROUP_QUANTITY és SL_USBD_DESCRIPTOR_QUANTITY konfigurációs értékek beállításakor ne felejtse el figyelembe venni, hogy hány konfigurációt fog hozzáadni az osztály. Az SL_USBD_OPEN_ENDPOINTS_QUANTITY konfigurációs érték esetében, mivel a végpontok csak akkor nyílnak meg, ha a gazdagép beállít egy konfigurációt, csak az egy osztálypéldányhoz szükséges végpontok számát kell figyelembe vennie.
USB eszköz CDC ACM alosztály túlview

A CDC alaposztály egy kommunikációs osztály interfészből (CCI) és egy adatosztály interfészből (DCI) áll, amelyet részletesen tárgyal az USB eszköz CDC alaposztály-átalakítása című dokumentum.view Ez a szakasz egy ACM típusú CCI-t tárgyal. Ez egy alapértelmezett végpontból áll a menedzsment elemhez és egy megszakítási végpontból az értesítési elemhez. Két tömeges végpontot használnak a meghatározatlan adatok DCI-n keresztüli átvitelére.
Az ACM alosztályt kétféle kommunikációs eszköz használja:
AT parancsokat támogató eszközök (például hangsávú modemek). Soros emulációs eszközök, amelyeket virtuális COM port eszközöknek is neveznek.
Az ACM alosztályhoz számos alosztály-specifikus kérés tartozik. Ezek lehetővé teszik az eszköz vezérlését és konfigurálását. Az összes ACM kérés teljes listája és leírása megtalálható a specifikációban.

Copyright © 2025 Silicon Laboratories. Minden jog fenntartva.

21/174

Felettview PSTN-eszközök alosztálya, 1.2-es revízió, 2007. február 9. =, 6.2.2. szakasz.
Erről a listáról a Silicon Labs9 ACM alosztálya a következőket támogatja:
Táblázat – A Silicon Labs által támogatott ACM-kérelmek

Alosztálykérés leírása

Kommunikációs jellemző beállítása Kommunikációs jellemző lekérése Kommunikációs jellemző törlése

A gazdagép küldi ezt a kérést egy adott kommunikációs funkció beállításainak vezérléséhez. Soros emulációhoz nem használatos.
A gazdagép ezt a kérést egy adott kommunikációs funkció aktuális beállításainak lekéréséhez küldi. Soros emulációhoz nem használatos.
A gazdagép ezt a kérést egy adott kommunikációs funkció beállításainak törlésére küldi. Soros emulációhoz nem használatos.

SetLineCoding

A gazdagép ezt a kérést az ACM eszköz beállításainak konfigurálására küldi: adatátviteli sebesség, stopbitek száma, paritástípus és adatbitek száma. Soros emuláció esetén ezt a kérést a soros terminál automatikusan elküldi minden alkalommal, amikor egy nyitott virtuális COM port soros beállításait konfigurálja.

GetLineCoding

A gazdagép ezt a kérést az aktuális ACM-beállítások (baud sebesség, stop bitek, paritás, adat bitek) lekéréséhez küldi. Soros emuláció esetén a soros terminálok automatikusan küldik ezt a kérést a virtuális COM port megnyitásakor.

SetControlLineState A gazdagép ezt a kérést küldi a félduplex modemek vivőjének vezérlésére, és annak jelzésére, hogy az adatterminál berendezés (DTE) készen áll-e vagy sem. Soros emuláció esetén a DTE egy soros terminál. Soros emuláció esetén bizonyos soros terminálok lehetővé teszik a kérés küldését a beállított vezérlőkkel.

SetBreak

A gazdagép ezt a kérést egy RS-232 stílusú megszakítás létrehozásához küldi. Soros emuláció esetén bizonyos soros terminálok lehetővé teszik ennek a kérésnek az elküldését.

A Silicon Labs9 ACM alosztálya az megszakítás IN végpontot használja a gazdagép értesítésére a soros vonal aktuális állapotáról. A soros
A sor állapota egy bitkép, amely a gazdagépet a következőkről tájékoztatja:

Túlcsordulás miatt elvetett adatok Paritáshiba Keretezési hiba A gyűrűjel érzékelésének állapota A szakadásérzékelési mechanizmus állapota Átviteli vivő állapota A vevő vivő érzékelésének állapota

A Silicon Labs9 ACM alosztály implementációja megfelel a következő specifikációnak:
Univerzális soros busz, Kommunikáció, PSTN eszközök alosztálya, 1.2-es revízió, 2007. február 9.
USB eszköz CDC ACM osztálykonfiguráció

Ez a szakasz a CDC ACM osztály (kommunikációs eszközosztály, absztrakt vezérlőmodell) konfigurálását tárgyalja. A konfigurációs paraméterek két csoportba sorolhatók:
USB eszköz CDC ACM osztály Alkalmazásspecifikus konfigurációk USB eszköz CDC ACM osztály példánykonfigurációk
USB eszköz CDC ACM osztály Alkalmazásspecifikus konfigurációk

CDC alaposztály ACM alosztály
CDC alaposztály

Először is, a Silicon Labs USB eszköz CDC osztálymoduljának használatához a CDC fordítási idejű konfigurációját (#define-s) az alkalmazás igényeinek megfelelően kell módosítani. Ezek az sl_usbd_core_config.h fejlécben vannak csoportosítva. file a CDC szakasz alatt. Céljuk, hogy tájékoztassák az USB eszközmodult arról, hogy hány USB CDC objektumot kell lefoglalni.

Copyright © 2025 Silicon Laboratories. Minden jog fenntartva.

22/174

Felettview

Az alábbi táblázat ismerteti az ebben a konfigurációs struktúrában elérhető összes konfigurációs mezőt.
Táblázat – USB eszköz CDC konfigurációjának meghatározásai

Konfiguráció neve
SL_USBD_CDC_CL AS S_INSTANCE_QUANT ITY
SL_USBD_CDC_CONF IGURATION_QUNTI
TY
SL_USBD_CDC_DATA _INTERFACE_QUANTI
TY

Leírás
A függvény hívásával lefoglalandó osztálypéldányok száma
sl_usbd_cdc_acm_create_instance() . (A kód nem fordítandó, de ebben a kódrészletben ilyenkor nincs fordítás.)
Konfigurációk száma. Az ACM osztálypéldányok hozzáadhatók egy vagy több aaaa konfigurációhoz az sl_usbd_cdc_acm_add_to_configuration() függvényen keresztül.
Az összes CDC függvény adatinterfészeinek (DCI) teljes száma. Minden egyes CDC ACM függvény hozzáadott egy vi c ll-t az sl_usbd_cdc_acm_create_instance() függvényhez, ami dd dt interfészt fog létrehozni.

Alapértelmezett érték
2
1
2

ACM alosztály
Az ACM alosztálynak egy fordítási idejű konfigurációja van, amelyet az alábbi táblázat mutat be.
Táblázat – USB eszköz CDC ACM konfigurációjának meghatározása

Konfiguráció neve
SL_USBD_CDC_ACM_SUBCL ASS_I NEM_MENNYISÉG

Leírás
Konfigurálja az alosztálypéldányok számát, amelyeket egy híváson keresztül lefoglal a
sl_usbd_cdc_acm_create_instance() függvény.

Alapértelmezett érték
2

USB eszköz CDC ACM osztálypéldány-konfigurációk

Ez a szakasz a CDC ACM soros osztálypéldányokhoz kapcsolódó konfigurációkat határozza meg. Osztálypéldány-létrehozási vonal állapot intervallum híváskezelési képességek p_acm_callbacks
Osztálypéldány létrehozása

CDC ACM soros osztálypéldány létrehozásához hívjuk meg a Ta sl_usbd_cdc_acm_create_instance() függvényt. Ez a függvény három konfigurációs argumentumot használ, a itt leírtak szerint.

sor_állapot_intervallum
Ez az intervallum (milliszekundumban), amely alatt a CDC ACM soros osztálypéldány jelenti a vonalállapot-értesítéseket a T aa gazdagépnek. Ennek az értéknek kettő hatványának kell lennie (1, 2, 4, 8, 16 stb.).

híváskezelési_képességek
Híváskezelési képességek bitképe. A bitkép lehetséges értékei a következők:

Érték (bit)
SL_USBD_ACM_SERIAL_CALL_MGMT_DEV
SL_USBD_ACM_SERIAL_CALL_MGMT_DATA_CCI _DCI

Leírás
Az eszköz maga kezeli a híváskezelést. Az eszköz egy adatosztályú interfészen keresztül képes híváskezelési információkat küldeni/fogadni.

p_acm_visszahívások

Copyright © 2025 Silicon Laboratories. Minden jog fenntartva.

23/174

Felettview

Az aa M aa p_acm_callbacks egy mutató az sl_usbd_cdc_acm_callbacks_t típusú struktúrára. Célja, hogy megadja a CDC AC Cl ss számára a visszahívási függvények halmazát, amelyeket akkor kell meghívni, amikor egy CDC ACM esemény történik. Nem minden visszahívás kötelező, és egy null pointer (NULL) is átadható a callbacks struktúraváltozóban, ha a visszahívásra nincs szükség. Az alábbi táblázat a konfigurációs struktúrában elérhető összes konfigurációs mezőt ismerteti.
Táblázat – sl_usbd_cdc_acm _callbacks_t konfigurációs struktúra

Mezők

Leírás

.engedélyezés

Akkor hívódik meg, amikor az USB osztálypéldány engedélyezve van.

sikeresen.

.letiltás

Akkor hívódik meg, amikor az USB osztálypéldány le van tiltva.

.line_control_changed Meghívásra kerül, amikor vonalvezérlés-változás érkezik.

line_coding_changed Akkor hívódik meg, amikor vonalkód-változás érkezik.

Funkció aláírása
void app_usbd_cdc_acm_enable(uint8_t alosztály_nbr);
void app_usbd_cdc_acm_disable(uint8_t alosztály_nbr);
void app_usbd_cdc_acm_line_control_changed(uint8_t subclass_nbr, uint8_t event, uint8_t event_chngd); bool app_usbd_cdc_acm_line_coding_changed(uint8_t subclass_nbr, subclass_nbr, sl_usbd_cdc_acm_line_coding_t)
*p_line_kódolás

Lásd az Eseményértesítési visszahívások regisztrálása című részt a visszahívási függvényekkel kapcsolatban, pl.ample.
USB eszköz CDC ACM osztály programozási útmutató

Ez a szakasz ismerteti a CDC Abstract Control Model osztály használatát. Az USB-eszköz CDC ACM osztályának inicializálása USB-eszköz CDC ACM osztálypéldányának hozzáadása az eszközhöz Kommunikáció a CDC ACM osztály használatával
USB eszköz inicializálása CDC ACM osztály

Ahhoz, hogy CDC ACM osztályfunkciókat adhasson az eszközéhez, először inicializálnia kell a CDC alaposztályt és az ACM alosztályt az sl_usbd_cdc_init() és sl_usbd_cdc_acm_init() függvények futtatásával. Az alábbi példa bemutatja, hogyan hívható meg az sl_usbd_cdc_init() és az sl_usbd_cdc_acm_init() függvény alapértelmezett argumentumokkal.

Example – CDC ACM osztály inicializálása

sl_status_t állapot;
status = sl_usbd_cdc_init(); if (status ! SL_STATUS_OK) { /* Hiba történt. Ide kell hozzáadni a hibakezelést. */
}
status = sl_usbd_cdc_acm_init(); if (status ! SL_STATUS_OK) { /* Hiba történt. Ide kell hozzáadni a hibakezelést. */
}
USB-eszköz CDC ACM osztálypéldányának hozzáadása az eszközhöz
A CDC ACM osztály funkcióinak eszközhöz való hozzáadásához létre kell hoznia egy példányt, majd hozzá kell adnia az eszköz konfigurációjához/konfigurációihoz.
CDC ACM osztálypéldány létrehozása

Copyright © 2025 Silicon Laboratories. Minden jog fenntartva.

24/174

Felettview
A CDC ACM osztálypéldány hozzáadása az eszköz konfigurációjához/konfigurációihoz Eseményértesítési visszahívások regisztrálása
CDC ACM osztálypéldány létrehozása
Hozzon létre egy CDC AC osztálypéldányt az sl_usbd_cdc_acm_create_instance() függvény meghívásával. Az alábbi példa bemutatja, hogyan hozhat létre CDC AC osztálypéldányt az sl_usbd_cdc_acm_create_instance() függvény segítségével.
Example – CDC ACM függvény létrehozása az sl_usbd_cdc_acm_create_instance() függvénnyel

uint8_t alosztály_száma; sl_status_t állapot;
állapot = sl_usbd_cdc_acm_create_instance(64u, SL_USBD_ACM_SERIAL_CALL_MGMT_DATA_CCI_DCI | SL_USBD_ACM_SERIAL_CALL_MGMT_DEV, NULL, &subclass_nbr);
if (status ! SL_STATUS_OK) { /* Hiba történt. Ide kell hozzáadni a hibakezelést. */
}
A CDC ACM osztálypéldány hozzáadása az eszköz konfigurációjához/konfigurációihoz
Miután létrehoztál egy CDC ACM osztálypéldányt, hozzáadhatod azt egy konfigurációhoz a következő függvény meghívásával:
sl_usbd_cdc_acm_add_to_configuration() . (A fájlnevek és elérési utak hozzáadása a konfigurációhoz) függvényt futtató könyvtárban található.
Az alábbi példa bemutatja, hogyan hívható meg az sl_usbd_cdc_acm_add_to_configuration() függvény.
Example – USBD ACM hívása sl_usbd_cdc_acm_add_to_configuration()

sl_status_t állapot;

állapot = sl_usbd_cdc_acm_add_to_configuration(alosztály_száma,

(1)

config_nbr_fs);

(2)

ha (állapot ! SL_STATUS_OK) {

/* Hiba történt. Ide kell hozzáadni a hibakezelést. */

}

aaa (1) Osztályszám, amelyet hozzá kell adni az sl_usbd_cdc_acm_create_instance() által visszaadott konfigurációhoz. (2) Konfigurációs szám (itt egy teljes sebességű konfigurációhoz adjuk hozzá).
Eseményértesítési visszahívások regisztrálása
A CDC ACM Serial osztály értesítheti az alkalmazást a vonalvezérlés vagy a kódolás bármilyen változásáról visszahívó függvényeken keresztül. A visszahívó függvények struktúrája átadható argumentumként az ACM példány létrehozásakor. Vegye figyelembe, hogy ezek a visszahívások opcionálisak. PéldáulampA CDC ACM visszahívások regisztrációja a visszahívási regisztrációs függvények használatát szemlélteti. Példaample – A CDC ACM visszahívások implementációja egy példát mutat be.ampa visszahívó függvények megvalósításának módja.
Example – CDC ACM visszahívások regisztrációja

Copyright © 2025 Silicon Laboratories. Minden jog fenntartva.

25/174

Felettview

uint8_t alosztály_száma; sl_status_t állapot;
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, };
állapot = sl_usbd_cdc_acm_create_instance(64u, SL_USBD_ACM_SERIAL_CALL_MGMT_DATA_CCI_DCI | SL_USBD_ACM_SERIAL_CALL_MGMT_DEV, &sli_usbd_cdc_acm_callbacks, &subclass_nbr);
if (status ! SL_STATUS_OK) { /* Hiba történt. Ide kell hozzáadni a hibakezelést. */ }
Example – CDC ACM visszahívások megvalósítása

bool app_usbd_cdc_acm_line_coding_changed (uint8_t

alosztály_száma,

sl_usbd_cdc_acm_line_coding_t *p_line_coding)

{

uint32_t baudrate_new;

uint8_t paritás_új;

uint8_t stop_bits_new;

uint8_t adat_bitek_új;

/* TEENDŐ Új sorkódolás alkalmazása.*/ baudrate_new = p_line_coding->BaudRate; parity_new = p_line_coding->Paritás; stop_bits_new = p_line_coding->StopBits; data_bits_new = p_line_coding->DataBits;

return (igaz);

(1)

}

void app_usbd_cdc_acm_line_control_changed (uint8_t alosztály_száma, uint8_t esemény, uint8_t esemény_módosítva)
{ bool rts_state; bool rts_state_changed; bool dtr_state; bool dtr_state_changed; bool brk_state; bool brk_state_changed;} }

/* TEENDŐ Új sorvezérlés alkalmazása. */ 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 = ((esemény_változása & SL_USBD_CDC_ACM_CTRL_BREAK) ! 0) ? igaz : hamis;
}

(1) Fontos, hogy hamis értéket adjon vissza ehhez a függvénynek, ha a sorkódolás alkalmazása sikertelen. Egyébként igaz értéket adjon vissza.
Kommunikáció a CDC ACM osztály használatával
Sorozatszám állapota
Vonalkódolás Vonalvezérlés

Copyright © 2025 Silicon Laboratories. Minden jog fenntartva.

26/174

Felettview

Vonalállapot alosztály példány kommunikáció
Sorozatszám állapota
Vonalkódolás
Az USB-gazdagép vezérli a CDC ACM eszköz vonalkódolását (adatátviteli sebesség, paritás stb.). Szükség esetén az alkalmazás felelős a vonalkódolás beállításáért. Az aktuális vonalkódolás lekéréséhez és beállításához két függvény áll rendelkezésre, az alábbi táblázatban leírtak szerint.
Táblázat – CDC ACM vonalkódolási függvények

Funkció
sl_usbd_cdc_acm_g e t_line _coding ()
sl_usbd_cdc_acm_s és t_line _kódolás ()

Leírás
Az alkalmazás lekérheti az aktuális vonalkódolási beállításokat a gazdagépről a SetLineCoding kérésekkel, vagy az sl_usbd_cdc_acm_set_line_coding() függvénnyel.
Az alkalmazásod beállíthatja a vonalkódolást. A gazdagép a GetLineCoding kéréssel kérheti le a beállításokat.

Vonalvezérlés
Az USB-gazdagép vezérli a CDC ACM eszköz vonalvezérlését (RTS és DTR lábak, megszakító jel stb.). Szükség esetén az alkalmazás felelős a vonalvezérlések alkalmazásáért. Egy függvény áll rendelkezésre az aktuális vonalvezérlések lekérésére és beállítására, az alábbi táblázatban leírtak szerint.
Táblázat – CDC ACM vonalvezérlő funkciók

Funkció
sl_usb d _cd c_acm_g e t_line _control_state ()

Az alkalmazás a SetControlLineState kéréssel lekérheti a gazdagép által beállított aktuális vezérlővonal állapotát.

Vonal állapota
Az USB-gazdagép rendszeres időközönként lekéri a vonal állapotát. Az alkalmazásnak minden alkalommal frissítenie kell a vonal állapotát, amikor az megváltozik. Szükség esetén az alkalmazás felelős a vonal állapotának beállításáért. Az aktuális vonalvezérlők lekéréséhez és beállításához két függvény áll rendelkezésre, az alábbi táblázatban leírtak szerint.
Táblázat – CDC ACM vonalállapot-függvények

Funkció
sl_usb d _cd c_acm_se t _line _state _e ve nt()
sl_usbd_cdc_acm_cle ar_line _state _e ve nt()

Az alkalmazás bármilyen vonalállapot-eseményt beállíthat. A vonalállapot beállításakor egy megszakítás IN átvitel kerül elküldésre a gazdagépnek, hogy tájékoztassa azt a soros vonal állapotának változásáról.
Az alkalmazás a vonalállapot két eseményét tudja törölni: az átviteli vivő és a vevővivő-érzékelést. Az összes többi eseményt az ACM soros emulációs alosztály törli magától.

Alosztálypéldány-kommunikáció

A Silicon Labs ACM alosztálya a következő függvényeket kínálja a gazdagéppel való kommunikációhoz. A functions9 paraméterekkel kapcsolatos további részletekért lásd a CDC ACM alosztályfüggvények referenciáját.

Funkció neve
sl_usb d _cd c_acm_ olvasás () sl_usb d _cd c_acm_írás ()

Művelet
Tömeges kimeneti végponton keresztül fogad adatokat a gazdagéptől. Ez a függvény blokkolja az adatokat. Tömeges bemeneti végponton keresztül küld adatokat a gazdagépnek. Ez a függvény blokkolja az adatokat.

Copyright © 2025 Silicon Laboratories. Minden jog fenntartva.

27/174

Felettview

Táblázat – CDC ACM kommunikációs API összefoglalása Az aaaaa sl_usbd_cdc_acm_read() és sl_usbd_cdc_acm_write() szinkron kommunikációt biztosít, ami azt jelenti, hogy az átvitel blokkolva van. Más szóval, a függvény meghívásakor az alkalmazás blokkolja az átvitelt, amíg az be nem fejeződik hibával vagy hiba nélkül. Időtúllépés adható meg a végtelen várakozás elkerülése érdekében. Az példaampAz alábbi ábra egy olvasási és írási példát mutat.ampolyan fájl, amely a tömeges OUT végponton keresztül fogadja az adatokat a gazdagéptől, és a tömeges IN végponton keresztül küldi az adatokat a gazdagépnek.
Listázás – Soros olvasási és írási Example

__ALIGNED(4) uint8_t rx_buf[2];

__ALIGNED(4) uint8_t tx_buf[2];

uint32_t

xfer_len;

sl_status_t

állapot;

állapot = sl_usbd_cdc_acm_read(alosztály_száma,

(1)

rx_buf,

(2)

2u,

0u,

(3)

&xfer_len);

ha (állapot ! SL_STATUS_OK) {

/* Hiba történt. Ide kell hozzáadni a hibakezelést. */

}

állapot = sl_usbd_cdc_acm_write(alosztály_száma,

(1)

tx_buf,

(4)

2u,

0u,

(3)

&xfer_len);

ha (állapot ! SL_STATUS_OK) {

/* Hiba történt. Ide kell hozzáadni a hibakezelést. */

}

T aaaaa M (1) Az sl_usbd_cdc_acm_create_instance() függvénnyel létrehozott osztálypéldányszám belső referenciát biztosít az AC alosztályra, hogy az átvitelt a megfelelő tömeges OUT vagy IN végpontra irányítsa. (2) Az alkalmazásnak biztosítania kell, hogy a függvénynek biztosított puffer elég nagy legyen az összes adat befogadására. Ellenkező esetben szinkronizációs problémák léphetnek fel. (3) A végtelen blokkolási helyzet elkerülése érdekében adjon meg egy milliszekundumban kifejezett időtúllépést. A 809-es érték örökké várakoztatja az alkalmazásfeladatot. (4) Az alkalmazás biztosítja az inicializált átviteli puffert.

Copyright © 2025 Silicon Laboratories. Minden jog fenntartva.

28/174

Felettview
Felettview

USB eszköz HID osztálya

USB eszköz HID osztály túllépéseview USB eszköz HID osztály erőforrásigényei a Core-tól USB eszköz HID osztály konfiguráció USB eszköz HID osztály programozási útmutató HID periodikus bemeneti jelentések feladat
Ez a szakasz a Silicon Labs USB-eszköz által támogatott Human Interface Device (HID) osztályt ismerteti.
A HID osztály magában foglalja az emberek által számítógépes műveletek vezérlésére használt eszközöket, például billentyűzeteket, egereket, mutatóeszközöket és játékeszközöket.
A HID osztály összetett eszközökben is használható, amelyek olyan vezérlőket tartalmaznak, mint a gombok, kapcsolók, gombok és csúszkák. PéldáulampAz audio headsetekben a le, némítás és hangerőszabályzókat a headset HID funkciója vezérli. A HID osztályú eszközök bármilyen célból képesek adatokat cserélni, kizárólag vezérlési és megszakítási átvitelt használva.
A HID osztály az egyik legrégebbi és legszélesebb körben használt USB osztály. Minden nagyobb gazda operációs rendszer natív illesztőprogramot biztosít a HID eszközök kezeléséhez, ezért számos gyártóspecifikus eszköz működik a HID osztállyal. Ez az osztály különféle kimeneti elemeket is magában foglal, például LED-eket, hangot, tapintási visszajelzést stb.
A HID implementáció a következő specifikációknak felel meg:
Emberi interfészeszközök (HID) eszközosztály-definíciója, 2001.06.27., 1.11-es verzió. Univerzális soros busz (USB) HID használati táblázatai, 2004.10.28., 1.12-es verzió.
USB eszköz HID osztály túllépéseview
Felettview
Egy HID eszköz a következő végpontokból áll:
Egy vezérlő IN és OUT végpontpár, amelyet alapértelmezett végpontnak nevezünk. Egy megszakítás IN végpont. Egy opcionális megszakítás OUT végpont.
Az alábbi táblázat a különböző végpontok használatát ismerteti:
Táblázat – HID osztály végpontok használata

Végpont irányának használata

Control IN
Ellenőrzés
KI
Megszakítás BE
Megszakítás
KI

Eszközről hosztra
Gazdagéptől az eszközig
Eszközről hosztra
Gazdagéptől az eszközig

Standard kérések felsoroláshoz, osztályspecifikus kérésekhez és adatkommunikációhoz (bemenet, jellemzőjelentések küldése a gazdagépnek a GET_REPORT kéréssel). Standard kérések felsoroláshoz, osztályspecifikus kérésekhez és adatkommunikációhoz (kimenet, jellemzőjelentések fogadása a gazdagéptől a SET_REPORT kéréssel). Adatkommunikáció (bemenet és jellemzőjelentések).
Adatkommunikáció (Kimeneti és Jellemzőjelentések).

Jelentés

Copyright © 2025 Silicon Laboratories. Minden jog fenntartva.

29/174

Felettview

Egy gazdagép és egy HID-eszköz jelentések segítségével cserél adatokat. A jelentés formázott adatokat tartalmaz, amelyek információkat nyújtanak a HID-eszköz vezérlőiről és egyéb fizikai entitásairól. A vezérlőt a felhasználó manipulálhatja, és az eszköz egy aspektusát működteti. PéldáulampPéldául egy vezérlőelem lehet egy gomb az egéren vagy a billentyűzeten, egy kapcsoló stb. Más entitások tájékoztatják a felhasználót bizonyos eszközfunkciók állapotáról. PéldáulampPéldául a billentyűzeten található LED-ek jelzik a felhasználónak, ha a Caps Lock be van kapcsolva, a numerikus billentyűzet aktív stb.
A jelentésadatok formátumát és felhasználását a gazdagép egy jelentésleíró tartalmának elemzésével érti meg. A tartalom elemzését egy elemző végzi. A jelentésleíró az eszköz egyes vezérlői által biztosított adatokat írja le. Olyan elemekből áll, amelyek az eszközről szóló információkat tartalmaznak, és egy 1 bájtos előtagból és változó hosszúságú karakterekből állnak.
adatok. Az elemformátummal kapcsolatos további részletekért lásd:
1.11=, 5.6. és 6.2.2. szakasz.
Három fő elemtípus létezik:
A fő elem bizonyos típusú adatmezőket definiál vagy csoportosít.
A globális elem egy vezérlőelem adatjellemzőit írja le.
A helyi elem egy vezérlőelem adatjellemzőit írja le.
Minden elemtípust különböző függvények definiálnak. Egy elemfüggvényt más néven is nevezhetünk tagEgy elemfüggvény tekinthető egy olyan alkategóriának, amely a három fő elemtípus egyikéhez tartozik. Az alábbi táblázat rövid áttekintést nyújtview az egyes elemtípusokban található elemfunkciókról. Az egyes kategóriákba tartozó elemek teljes leírását lásd:
Táblázat – Az egyes elemtípusokhoz tartozó elemfunkció leírása

Elem Elemtípus Funkció

Leírás

Fő bemenet

Egy vagy több fizikai vezérlő által szolgáltatott adatokkal kapcsolatos információkat ír le.

Fő kimenet Az eszközre küldött adatokat írja le.

Fő jellemző

Az eszköznek küldött vagy attól fogadott eszközkonfigurációs információkat írja le, amelyek befolyásolják az eszköz vagy annak egyik összetevőjének általános viselkedését.

Fő gyűjteménycsoport kapcsolódó elemei (bemenet, kimenet vagy jellemző).

Fő vége Lezár egy gyűjteményt. Gyűjtemény

Copyright © 2025 Silicon Laboratories. Minden jog fenntartva.

30/174

Felettview

Elem Elemtípus Funkció

Leírás

Globális használati oldal

Az eszközön belül elérhető funkciót azonosítja.

Globális logikai Meghatározza a logikai egységekben jelentett értékek alsó határát. Minimum

Globális logikai Meghatározza a jelentett értékek felső határát logikai egységekben. Maximum

Globális fizikai Meghatározza a jelentett értékek alsó határát fizikai egységekben, azaz a logikai minimumot, fizikai egységekben kifejezve.

Globális fizikai Meghatározza a jelentett értékek felső határát fizikai egységekben, azaz a logikai maximumot, fizikai egységekben kifejezve.

Globális egység

A 10-es alapú kitevőt jelöli. A kitevő -8 és +7 között mozog.

Kitevő

Globális egység

A jelentett értékek mértékegységét jelzi. Például hosszúság, tömeg, hőmérséklet mértékegységei stb.

Globális jelentésméret

A jelentésmezők méretét jelzi bitben.

Globális jelentésazonosító Az adott jelentéshez hozzáadott előtagot jelzi.

Globális jelentések száma

Egy elem adatmezők számát jelzi.

Globális nyomás

A globális elemállapot-tábla egy másolatát elhelyezi a CPU veremben.

Globális pop

Az elemállapot-táblázatot a verem utolsó struktúrájával cseréli le.

Helyi használat

Egy Használati oldalon belüli adott Használatot jelző indexet jelöl. Azt jelzi, hogy a gyártó milyen felhasználást javasol egy adott vezérlőelem vagy vezérlőelemek csoportja. A felhasználási mód információt szolgáltat az alkalmazásfejlesztőnek arról, hogy mit mér valójában egy vezérlőelem.

Helyi használat

Meghatározza egy tömbhöz vagy bitképhez társított kezdeti felhasználást.

Minimális

Helyi használat

Meghatározza egy tömbhöz vagy bitképhez társított végső felhasználást.

Maximális

Helyi jelölő Meghatározza a vezérlőhöz használt testrészt. Az index a Fizikai mezőben található jelölőre mutat.

Index

leíró.

Helyi jelölő Meghatározza a tömbhöz vagy bitképhez társított kezdő jelölő indexét. Minimum

Helyi jelölő Meghatározza a tömbhöz vagy bitképhez társított záró jelölő indexét.

Helyi karakterlánc-index

Karakterlánc-index egy karakterlánc-leíróhoz. Lehetővé teszi egy karakterlánc adott elemhez vagy vezérlőelemhez való társítását.

Helyi karakterlánc

Meghatározza az első karakterláncindexet, amikor egy tömbben lévő vezérlőelemekhez egymást követő karakterláncok csoportját rendeli hozzá.

Minimum vagy bitkép.

Helyi Helyi

Karakterlánc maximuma
Határoló

Meghatározza az utolsó karakterlánc-indexet, amikor egy tömbben vagy bitképben lévő vezérlőkhöz szekvenciális karakterláncok csoportját rendeli hozzá.
Meghatározza a helyi elemek halmazának kezdetét vagy végét.

Egy vezérlőelem adatának legalább a következő elemeket kell definiálnia:
Bemenet, Kimenet vagy Jellemző Fő elemek Használat Helyi elem Használat Oldal Globális elem Logikai minimum Globális elem Logikai maximum Globális elem Jelentésméret Globális elem

Copyright © 2025 Silicon Laboratories. Minden jog fenntartva.

31/174

Felettview
Jelentésszámláló globális elem Az alábbi táblázat egy egérjelentés-leíró tartalmának ábrázolását mutatja be egy gazda HID-elemző szemszögéből. Az egérnek három gombja van (bal, jobb és görgő). A példában bemutatott kódampAz alábbi ábra egy kód implementációt mutat be, amely megfelel ennek az egér Jelentés leíró reprezentációnak.
Ábra – Jelentésleíró tartalom egy Host HID Parserből View

(1) A Használati oldal elemfüggvény az eszköz általános funkcióját határozza meg. Ebben a példábanampPéldául a HID eszköz egy
általános asztali vezérlés.
(2) Az Alkalmazásgyűjtemény olyan fő elemeket csoportosít, amelyeknek közös céljuk van, és ismerősek lehetnek az alkalmazások számára. Az ábrán a csoport három Bemeneti fő elemből áll. Ennél a gyűjteménynél a vezérlők javasolt felhasználása az egér, amint azt a Használat elem is jelzi. (3) Beágyazott gyűjtemények használhatók egyetlen vezérlő vagy vezérlőcsoport alkalmazásokban való használatának részletesebb leírására. Ebben a példábanampA Gyűjteményalkalmazásba beágyazott Gyűjteményfizikai adatelem ugyanabból a három bemeneti elemből áll, mint a Gyűjteményalkalmazás. A Gyűjteményfizikai adatelemek olyan halmazához használatosak, amelyek egy geometriai ponton gyűjtött adatpontokat képviselnek. A példábanampPéldául a javasolt használat egy mutató, ahogy azt a Használat elem is jelzi. Itt a mutató használata az egér pozíciókoordinátáira vonatkozik, és a rendszerszoftver lefordítja az egér koordinátáit a képernyőkurzor mozgásának megfelelően. (4) Beágyazott használati oldalak is lehetségesek, amelyek további részleteket adnak az eszköz általános funkcióján belüli bizonyos aspektusokról. Ebben az esetben két Bemeneti elem van csoportosítva, és az egér gombjainak felel meg. Az egyik Bemeneti elem az egér három gombját (jobb, bal és görgő) határozza meg az elem adatmezőinek száma (Jelentés száma elem), az adatmező mérete (Jelentés mérete elem) és az egyes adatmezők lehetséges értékei (Használat minimuma és maximuma, Logikai minimum és maximum elemek) alapján. A másik Bemeneti elem egy 13 bites állandó, amely lehetővé teszi a Bemeneti jelentésadatok bájthatárhoz igazítását. Ez a Bemeneti elem csak kitöltési célra szolgál. (5) Egy másik beágyazott használati oldal, amely egy általános asztali vezérlőre utal, az egér pozíciókoordinátáira van definiálva. Ezen a használati oldalon a Bemeneti elem leírja az x és y tengelynek megfelelő adatmezőket, a két Használat elem által meghatározottak szerint.
tételeket.
Az előző egér Jelentésleíró tartalmának elemzése után a host9s HID elemző képes értelmezni az eszköz által megszakítás IN átvitellel vagy GET_REPORT kérésre válaszul küldött Input jelentésadatokat. Az ábrán látható egér Jelentésleírónak megfelelő Input jelentésadatok – Jelentésleíró tartalma egy Host HID elemzőtől. View is

Copyright © 2025 Silicon Laboratories. Minden jog fenntartva.

32/174

Felettview

az alábbi táblázatban látható. A jelentésadatok teljes mérete 4 bájt. Különböző típusú jelentések küldhetők ugyanazon a végponton keresztül. A különböző jelentéstípusok megkülönböztetése érdekében egy 1 bájtos jelentésazonosító előtagot adunk az adatjelentéshez. Ha a jelentésazonosítót az előzőekben használtuk,ampAz egérjelentés esetében a jelentésadatok teljes mérete 5 bájt lenne.
Táblázat – A gazdagépnek küldött bemeneti jelentés, amely egy 3 gombos egér állapotának felel meg

Bit eltolás
0 1 2 3 16 24

Bitszám 1 1 1 13 8 8

Leírás 1. gomb (bal gomb). 2. gomb (jobb gomb). 3. gomb (kerék). Nincs használatban. Pozíció az X tengelyen. Pozíció az Y tengelyen.

A fizikai leíró a test azon részét vagy részeit jelöli, amelyek egy vagy több vezérlőelem aktiválására szolgálnak. Egy alkalmazás felhasználhatja ezt az információt egy eszköz vezérléséhez rendelt funkció hozzárendeléséhez. A fizikai leíró egy opcionális, osztályspecifikus leíró, és a legtöbb eszköz kevés előnnyel jár a használatáért. Lásd:
USB eszköz HID osztály erőforrásigényei a Core-tól

Minden alkalommal, amikor egy HID osztálypéldányt adunk hozzá egy USB konfigurációhoz az sl_usbd_hid_add_to_configuration() függvény meghívásával, a következő erőforrások lesznek lefoglalva a magból.

Forrás
Interfészek Alternatív interfészek Végpontok Interfészcsoportok

Mennyiség
1 1 1 (2, ha a megszakítás kimeneti végpont engedélyezve van) 0

Vegye figyelembe, hogy ezek a számok konfigurációnként értendők. Az SL_USBD_INTERFACE_QUANTITY, SL_USBD_ALT_INTERFACE_QUANTITY, SL_USBD_INTERFACE_GROUP_QUANTITY és SL_USBD_DESCRIPTOR_QUANTITY konfigurációs értékek beállításakor ne felejtse el figyelembe venni, hogy hány konfigurációt fog hozzáadni az osztály. Az SL_USBD_OPEN_ENDPOINTS_QUANTITY konfigurációs érték esetében, mivel a végpontok csak akkor nyílnak meg, ha a gazdagép beállít egy konfigurációt, csak az egy osztálypéldányhoz szükséges végpontok számát kell figyelembe vennie.
USB eszköz HID osztálykonfigurációja

A HID osztály konfigurálásához két konfigurációs paramétercsoportot használnak:
USB eszköz HID osztály alkalmazásspecifikus konfigurációi USB eszköz HID osztály példánykonfigurációk
USB eszköz HID osztály alkalmazásspecifikus konfigurációk

Először is, a Silicon Labs USB eszköz HID osztálymoduljának használatához állítsa be a HID fordítási idejű konfigurációs definícióit az alkalmazás igényei szerint. Ezek az sl_usbd_core_config.h fejlécben vannak csoportosítva. file a HID szakasz alatt. Két részre oszthatók: a mennyiségi konfigurációkra és a HID feladatkonfigurációkra. A mennyiségi konfigurációk célja, hogy tájékoztassák az USB eszközmodult arról, hogy hány USB HID objektumot kell lefoglalni.
Az alábbi táblázat az egyes konfigurációs definíciókat ismerteti.
Táblázat – USB eszköz HID konfigurációjának meghatározásai

Copyright © 2025 Silicon Laboratories. Minden jog fenntartva.

33/174

Felettview

Konfiguráció neve
SL_USBD_HID_CL ASS_I MENNYISÉG
SL_USBD_HID_CONFIG URATION_QUANTITY
SL_USBD_HID_JELENTÉS_AZONOSÍTÓ_MENNYISÉG
SL_USBD_HID_PUSH_P OP_ITEM_QUANTITY
SL_USBD_HID_TIMER_T ASK_STACK_SIZE
SL_USBD_HID_TIMER_T KÉRDEZÉSI_PRIORITÁS

Leírás
A függvény hívásával lefoglalandó osztálypéldányok száma
sl_usbd_hid_create_instance() . (A fájlnevek és elérési utak szerkesztése nem lehetséges.)
Konfigurációk száma. A HID osztálypéldányok hozzáadhatók egy vagy több aaaa konfigurációhoz az sl_usbd_hid_add_to_configuration() függvényen keresztül. Konfigurálja a lefoglalandó jelentésazonosítók teljes számát.
A lefoglalandó Push/Pop elemek teljes számát konfigurálja.
Az időzítő feladat kezeli az összes időzítőalapú HID műveletet. Ez a konfiguráció lehetővé teszi a verem méretének beállítását (bájtok számában). A HID feladat prioritása. Ez egy CMSIS-RTOS2 prioritás.

Alapértelmezett érték
2 1 2 0 2048
Magas prioritás

USB eszköz HID osztálypéldány-konfigurációk osztálypéldány-létrehozási alosztály
protokoll országkódja
interval_in és interval_out p_hid_callback HID osztály jelentésleíró példaampEz a szakasz a HID osztálypéldányokhoz kapcsolódó konfigurációkat határozza meg.
Osztálypéldány létrehozása
Egy HID osztálypéldány létrehozása az aaa sl_usbd_hid_create_instance() függvény meghívásával történik, amely számos, alább ismertetett konfigurációs argumentumot használ.
alosztály
A HID alosztály kódja. A lehetséges értékek a következők:
SL_USBD_HID_SUBCL ASS_NONE SL_USBD_HID_SUBCL ASS_BOOT
A boot alosztályt használó HID-eszközöknek szabványos jelentésformátumokat kell használniuk. Az alosztálykódokkal kapcsolatos további információkért lásd a HID specifikáció 1.11-es verziójának 4.2. szakaszát.
jegyzőkönyv
A HID eszköz által használt protokoll. A lehetséges értékek a következők:
SL_USBD_HID_PROTOCOL_NONE SL_USBD_HID_PROTOCOL_KBD SL_USBD_HID_PROTOCOL_MOUSE
Ha a HID funkció egér, akkor a protokollt SL_USBD_HID_PROTOCOL_MOUSE értékre kell állítani. Ha billentyűzet, akkor SL_USBD_HID_PROTOCOL_KBD értékre kell állítani. ellenkező esetben a protokollt SL_USBD_HID_PROTOCOL_NONE értékre kell állítani. Az alosztálykódokkal kapcsolatos további információkért lásd a HID specifikáció 1.11-es revíziójának 4.3. szakaszát.
országkód
Az országkód azonosítója. A lehetséges értékek a következők:
SL_USBD_HID_ORSZÁGKÓD_NEM_TÁMOGATOTT

Copyright © 2025 Silicon Laboratories. Minden jog fenntartva.

34/174

Felettview
SL_USBD_HID_ORSZÁG_KÓD_ARAB SL_USBD_HID_ORSZÁG_KÓD_BELGA SL_USBD_HID_ORSZÁG_KANADAI_KÉTNYELVŰ SL_USBD_HID_ORSZÁG_KÓD_KANADAI_FRANCIA SL_USBD_HID_ORSZÁG_KÓD_CSEHORSZÁG SL_USBD_HID_ORSZÁG_KÓD_DÁN SL_USBD_HID_ORSZÁG_KÓD_FINN SL_USBD_HID_ORSZÁG_KÓD_FRENNI SL_USBD_HID_ORSZÁG_KÓD_NÉMET SL_USBD_HID_ORSZÁG_KÓD_GÖRÖG SL_USBD_HID_ORSZÁG_KÓD_HÉBER SL_USBD_HID_ORSZÁG_KÓD_MAGYARORSZÁG SL_USBD_HID_ORSZÁG_KÓD_NEMZETKÖZI SL_USBD_HID_ORSZÁG_KÓD_OLASZ SL_USBD_HID_ORSZÁGKÓD_JAPÁN_KATAKANA SL_USBD_HID_ORSZÁGKÓD_KOREAI SL_USBD_HID_ORSZÁGKÓD_L AMERIKAI SL_USBD_HID_ORSZÁGKÓD_HOLLAND ÉS HOLLAND SL_USBD_HID_ORSZÁGKÓD_NORVÉG SL_USBD_HID_ORSZÁGKÓD_PERZSA_FÁRSZ SL_USBD_HID_ORSZÁGKÓD_POLGÁR ÉS SL_USBD_HID_ORSZÁGKÓD_PORTUGÁL SL_USBD_HID_ORSZÁGKÓD_ORSZÁGKÓD_ORSZÁGKÓD_SZLOVÁKIA SL_USBD_HID_ORSZÁGKÓD_SPANYOL SL_USBD_HID_ORSZÁGKÓD_SVÉD SL_USBD_HID_ORSZÁGKÓD_SVÁJC_FRANCIA SL_USBD_HID_ORSZÁGKÓD_SVÁJC_NÉMET SL_USBD_HID_ORSZÁGKÓD_SVÁJC ÉS SL_USBD_HID_ORSZÁGKÓD_TAIWAN SL_USBD_HID_ORSZÁGKÓD_TÖRÖK_Q SL_USBD_HID_ORSZÁGKÓD_UK SL_USBD_HID_ORSZÁGKÓD_USUG OSL AVIA SL_USBD_HID_ORSZÁGKÓD_TÖRÖK_F
Az országkód azonosítja, hogy a hardver melyik országra van lokalizálva. A legtöbb hardver nincs lokalizálva, ezért ez az országkód SL_USBD_HID_COUNTRY_CODE_NOT_SUPPORTED (0) lenne. A billentyűzetek azonban használhatják a mezőt a billentyűk nyelvének jelzésére.
Az országkódokkal kapcsolatos további információkért lásd a HID specifikáció 1.11-es revíziójának 6.2.1. szakaszát.
intervallum_be és intervallum_ki
Az interval_in és az interval_out az IN megszakításvégpont és az OUT megszakításvégpont lekérdezési intervallumát jelöli.
Ez a végpont lekérdezési intervallumát jelöli milliszekundumban. Az érték beállítása attól függ, hogy az eszköz milyen gyakran hajlamos új jelentést generálni a gazdagép számára. Például, ha egy jelentés 16 milliszekundumként generálódik, akkor az intervallumnak 16-nak vagy kevesebbnek kell lennie.
Az értéknek a 2 hatványának kell lennie (1, 2, 4, 8, 16 stb.).
Az interval_out v lue paramétert figyelmen kívül hagyja a rendszer, ha a ctrl_rd_en értéke igaz.
p_hid_visszahívás
Az aaaa p_hid_callback egy mutató az sl_usbd_hid_callbacks_t típusú struktúrára. Célja, hogy megadja a HID Clss számára a visszahívó függvények halmazát, amelyeket HID esemény bekövetkeztekor kell meghívni.

Copyright © 2025 Silicon Laboratories. Minden jog fenntartva.

35/174

Felettview

Nem minden visszahívás kötelező, és egy null pointer (NULL) adható át a visszahívások struktúraváltozójában, ha a visszahívásra nincs szükség. Az alábbi táblázat ismerteti az ebben a konfigurációs struktúrában elérhető összes konfigurációs mezőt.
Táblázat – sl_usbd_hid_callbacks_t konfigurációs struktúra

Mezők

Leírás

Funkció aláírása

.enable .disable .get_report_desc
.get_phy_desc
.set_output_report .get_feature_report .set_feature_report

Akkor hívódik meg, amikor az USB osztálypéldány sikeresen engedélyezve van. Akkor hívódik meg, amikor az USB osztálypéldány le van tiltva.
A HID példány létrehozása során hívódik meg a jelentésleíró átadásához. Minden HID függvényhez meg kell adni egy jelentésleírót. A jelentésleíró jelzi a gazdagépnek, hogyan kell elemezni az eszköz által küldött periodikus jelentést. Saját jelentésleíró írása kihívást jelenthet, ezért vannak segítségül szolgáló források. Ez az egyetlen kötelező visszahívó függvény. A HID példány létrehozása során hívódik meg a fizikai leíró átadásához. A fizikai leíró egy olyan leíró, amely információt nyújt az emberi test azon konkrét részéről vagy részeiről, amelyek egy vagy több vezérlőt aktiválnak. A fizikai leírókkal kapcsolatos további információkért lásd a HID specifikáció 1.11-es verziójának 6.2.3. szakaszát. A fizikai leíró opcionális, és a legtöbb esetben figyelmen kívül hagyják. Az itt átadott puffer NULL értékre, a hossza pedig 0-ra állítható. Akkor hívódik meg, amikor a gazdagép a jelentésleíróban leírtak szerint állít be egy jelentést (amikor jelentést küld).
Akkor hívódik meg, amikor a gazdagép egy funkciójelentést kér a jelentésleíróban leírtak szerint.
Akkor hívódik meg, amikor a gazdagép beállít egy jellemzőjelentést a jelentésleíróban leírtak szerint.

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); *Ez a kódrészlet valószínűleg egy külső könyvtárból származik, és a benne szereplő elemek (pl. fájlnevek, elérési utak) általában nem fordítandók.
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); Megjegyzés: A programkód jellegű szövegek általában nem igényelnek fordítást, mivel a fordításuk nem lehetséges.

.get_protocol

Lekéri az aktuális aktív protokollt.

void app_usbd_hid_get_protocol(uint8_t osztály_nbr, uint8_t *p_protocol);

.set_protocol

Beállítja az aktuális aktív protokollt.

void app_usbd_hid_set_protocol(uint8_t osztály_nbr, uint8_t protokoll);

HID osztályjelentés-leíró példaample

A Silicon Labs HID osztályaiampaz alkalmazás egy példát mutatampegy egyszerű egér jelentésleírójának példája. Az példaampAz alábbi ábra egy egérjelentés-leírót mutat.
Example – Egérjelentés-leíró

statikus uint8_t app_usbd_hid_report_desc[] = {

(1) (2)

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,

(3)

Copyright © 2025 Silicon Laboratories. Minden jog fenntartva.

36/174

Felettview

SL_USBD_HID_FŐ_GYŰJTEMÉNY +1, SL_USBD_HID_GYŰJTEMÉNY_ALKALMAZÁS,(4)

SL_USBD_HID_LOCAL_USAGE +1, SL_USBD_HID_CP_POINTER,(5)

SL_USBD_HID_FŐ_GYŰJTEMÉNY +1, SL_USBD_HID_GYŰJTEMÉNY_FIZIKAI,(6)

SL_USBD_HID_GLOBAL_USAGE_PAGE +1, SL_USBD_HID_USAGE_PAGE_BUTTON,(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_MAIN_INPUT +1, SL_USBD_HID_MAIN_DATA |

SL_USBD_HID_FŐVÁLTOZÓ |

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_MAIN_INPUT +1, SL_USBD_HID_MAIN_CONSTANT,(9)

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_FŐVÁLTOZÓ |

SL_USBD_HID_MAIN_RELATIVE,

SL_USBD_HID_FŐ_VÉGGYŰJTEMÉNY,(10)

SL_USBD_HID_MAIN_ENDCOLLECTION

(11)};

(1) Az egérjelentés-leírót reprezentáló táblázat úgy van inicializálva, hogy minden sor egy rövid elemnek felel meg. Ez utóbbi egy 1 bájtos előtagból és egy 1 bájtos adatból áll. Lásd: viewábrán egy host HID elemző által szerkesztve – Jelentésleíró tartalom egy host HID elemzőtől View.
(2) Az Általános asztalhasználat oldal kerül használatra.
(3) Az Általános asztalhasználat oldalon a használat tag azt sugallja, hogy a vezérlőelemek csoportja egy egér vezérlésére szolgál. Egy egérgyűjtemény jellemzően két tengelyből (X és Y) és egy, két vagy három gombból áll.
(4) Elkezdődött az egérgyűjtés.
(5) Az egérgyűjteményen belül egy használati mód tag konkrétabban azt sugallja, hogy az egérvezérlők a mutatógyűjteményhez tartoznak. A mutatógyűjtemény tengelyek gyűjteménye, amelyek egy értéket generálnak a felhasználói szándékok alkalmazásra irányításához, jelzéséhez vagy irányításához.
(6) A mutatógyűjtés elindul.
(7) A Gombok Használata oldal egy bemeneti elemet definiál, amely három 1 bites mezőből áll. Minden 1 bites mező az egér 1., 2. és 3. gombját jelöli, és 0 vagy 1 értéket adhat vissza.
(8) A Gombok Használata oldal beviteli eleme 13 további bittel van kitöltve.
(9) Egy másik Általános Asztalhasználati Oldal van feltüntetve az egér X és Y tengelyekhez viszonyított pozíciójának leírására. A Bevitel elem két 8 bites mezőből áll, amelyek értéke -127 és 127 között lehet.
(10) A mutatógyűjtemény lezárva.
(11) Az egérgyűjtemény lezárult.
USB.org HID oldal

Copyright © 2025 Silicon Laboratories. Minden jog fenntartva.

37/174

Felettview
Az USB Implementers Forum (USB-IF) egy „HID Descriptor Tool” nevű eszközt, valamint a jelentésleíró formátummal kapcsolatos egyéb információkat is biztosít. További információkért lásd: http://www.usb.org/developers/hidpage/.
USB eszköz HID osztály programozási útmutató
Ez a szakasz ismerteti a HID osztály használatát. Az USB-eszköz HID osztályának inicializálása USB-eszköz HID osztálypéldányának hozzáadása az eszközhöz Kommunikáció az USB-eszköz HID osztályának használatával
Az USB-eszköz HID-osztályának inicializálása
HID osztály funkció hozzáadásához az eszközhöz először inicializálni kell az osztályt az sl_usbd_hid_init() függvény meghívásával. Az pl.ampAz alábbi fájl bemutatja, hogyan hívható meg az sl_usbd_hid_init() függvény az alapértelmezett argumentumok használatával. Az sl_usbd_hid_init() függvénynek átadandó konfigurációs argumentumokkal kapcsolatos további információkért lásd az USB-eszköz HID-osztályának alkalmazásspecifikus konfigurációi című részt.
Example – Az sl_usbd_hid_init() függvény meghívása
sl_status_t állapot;
status = sl_usbd_hid_init(); if (status ! SL_STATUS_OK) { /* Hiba történt. Ide kell hozzáadni a hibakezelést. */
}
USB eszköz HID osztálypéldányának hozzáadása az eszközhöz
HID osztályú funkciók eszközhöz való hozzáadásához létre kell hoznia egy példányt, majd hozzá kell adnia az eszköz konfigurációjához/konfigurációihoz.
HID osztálypéldány létrehozása
Hozz létre egy HID osztálypéldányt az sl_usbd_hid_create_instance() függvény meghívásával. A példaampAz alábbi fájl bemutatja, hogyan hozhat létre egy egyszerű egérfüggvényt az sl_usbd_hid_create_instance() függvénnyel az alapértelmezett argumentumok használatával. Az sl_usbd_hid_create_instance() függvénnyel átadandó konfigurációs argumentumokkal kapcsolatos további információkért lásd az USB-eszköz HID osztálypéldány-konfigurációi című részt.
Example – Egérfüggvény hozzáadása az sl_usbd_hid_create_instance() függvénnyel

Copyright © 2025 Silicon Laboratories. Minden jog fenntartva.

38/174

Felettview
/* Globális konstansok. */ static const 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ális változók.*/ 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 }; Megjegyzés: Ez a kódrészlet valószínűleg egy külső könyvtárból származik, és a benne szereplő elemek (pl. fájlnevek, elérési utak) általában nem fordítandók. Megjegyzés: Ez a kódrészlet valószínűleg egy külső könyvtárból származik, és a benne szereplő elemek (pl. fájlnevek, elérési utak) valószínűleg egy külső könyvtárból származnak ...
void app_usbd_hid_get_report_desc(uint8_t class_nbr, const uint8_t **p_report_ptr, uint16_t *p_report_len)
{ (void)osztályok_száma;
*p_report_ptr = app_usbd_hid_mouse_report_desc; *p_report_len = sizeof(app_usbd_hid_mouse_report_desc); }
állapot = 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, igaz, &app_usbd_hid_callbacks, &class_nbr);
Copyright © 2025 Silicon Laboratories. Minden jog fenntartva.

39/174

Felettview
/* Hiba történt. Ide kell hozzáadni a hibakezelést. */
HID osztálypéldány hozzáadása az eszköz konfigurációjához/konfigurációihoz Miután létrehozott egy HID osztálypéldányt, hozzáadhatja azt egy konfigurációhoz a következő függvény meghívásával.
sl_usbd_hid_add_to_configuration() . (A fájlnevek és elérési utak hozzáadása a konfigurációhoz)
Az exampAz alábbi fájl bemutatja, hogyan hívható meg az sl_usbd_hid_add_to_configuration() függvény.
Example – Az sl_usbd_hid_add_to_configuration() függvény meghívása

sl_status_t állapot;

sl_usbd_hid_add_to_configuration(osztály_nbr,

(1)

config_nbr_fs); (2)

ha (állapot ! SL_STATUS_OK) {

/* Hiba történt. Ide kell hozzáadni a hibakezelést. */

}

(1) Az sl_usbd_hid_create_instance() által visszaadott konfigurációhoz hozzáadandó osztályszám. (2) Konfigurációs szám (itt egy teljes sebességű konfigurációhoz adjuk hozzá).
Kommunikáció az USB eszköz HID osztályának használatával
Osztálypéldány-kommunikáció Szinkron kommunikáció Osztálypéldány-kommunikáció A HID osztály a következő függvényeket kínálja a gazdagéppel való kommunikációhoz.
Táblázat – HID kommunikációs API összefoglalása

Funkció neve
sl_usb d _hid _olvasás _sy nc() sl_usb d _hid _írás _sy nc()

Művelet Adatokat fogad a gazdagéptől a megszakítás OUT végponton keresztül. Ez a funkció blokkolja. Adatokat küld a gazdagépnek a megszakítás IN végponton keresztül. Ez a funkció blokkolja.

Szinkron kommunikáció A szinkron kommunikáció azt jelenti, hogy az átvitel blokkolva van. A függvényhíváskor az alkalmazás blokkolja az átvitelt, amíg az be nem fejeződik hibával vagy hibá nélkül. Időtúllépés adható meg a végtelen várakozás elkerülése érdekében. Az exampAz alábbi ábra egy olvasási és írási műveletet mutat be, amely az megszakítás OUT végponton keresztül fogad adatokat a gazdagéptől, és az megszakítás IN végponton keresztül küld adatokat a gazdagépnek.
Example – Szinkron HID olvasás és írás

__ALIGNED(4) uint8_t rx_buf[2];

__ALIGNED(4) uint8_t tx_buf[2];

uint32_t

xfer_len;

sl_status_t

állapot;

állapot = sl_usbd_hid_read_sync(osztály_száma,

(1)

(érvénytelen *)rx_buf,

(2)

2u,

0u,

(3)

&xfer_len);

ha (állapot ! SL_STATUS_OK) {

/* Hiba történt. Ide kell hozzáadni a hibakezelést. */

}

Copyright © 2025 Silicon Laboratories. Minden jog fenntartva.

40/174

Felettview
status =sl_usbd_hid_read_sync(class_nbr,(1)(void *)rx_buf,(2)2u,0u,(3)&xfer_len);if(status ! SL_STATUS_OK){/* Hiba történt. Ide kell hozzáadni a hibakezelést. */
status =sl_usbd_hid_write_sync(class_nbr,(1)(void *)tx_buf,(4)2u,0u,(3)&xfer_len);if(status ! SL_STATUS_OK){/* Hiba történt. Ide kell hozzáadni a hibakezelést. */
(1) Az sl_usbd_hid_create_instance() által létrehozott osztálypéldányszám belső referenciát biztosít a HID osztály számára, hogy az átvitelt a megfelelő megszakítási OUT vagy IN végponthoz irányítsa.
(2) Az alkalmazásnak biztosítania kell, hogy a függvény számára biztosított puffer elég nagy legyen az összes adat befogadására. Ellenkező esetben szinkronizációs problémák léphetnek fel. Belsőleg az olvasási művelet vagy a vezérlő végponttal, vagy a megszakítási végponttal történik, attól függően, hogy milyen vezérlő olvasási jelző lett beállítva az sl_usbd_hid_create_instance() hívásakor.
(3) A végtelen blokkolási helyzet elkerülése érdekében megadható egy milliszekundumban kifejezett időtúllépés. A 809-es érték azt eredményezi, hogy az alkalmazásfeladat örökké várakozik.
(4) Az alkalmazás biztosítja az inicializált átviteli puffert.
HID periodikus bemeneti jelentések feladata
A sávszélesség megtakarítása érdekében a gazdagép képes elnémítani a megszakítás IN végpontról érkező jelentéseket a jelentési gyakoriság korlátozásával. Ehhez a gazdagépnek el kell küldenie a SET_IDLE kérést. A Silicon Labs által megvalósított HID osztály tartalmaz egy belső feladatot, amely tiszteletben tartja a jelentési gyakorisági korlátozást, amelyet egy vagy több bemeneti jelentésre alkalmazhat. Az „Időszakos bemeneti jelentések feladata” ábra a periodikus bemeneti jelentések feladatainak működését mutatja be.
Ábra – Periodikus bemeneti jelentések feladata

(1) Az eszköz SET_IDLE kérést kap. Ez a kérés egy adott jelentésazonosító tétlenségi időtartamát határozza meg. A SET_IDLE kérésről további részleteket itt talál.
(2) Egy jelentésazonosító struktúra (amelyet a HID osztály inicializálási fázisa során osztanak ki) frissül az üresjárati időtartammal. Egy üresjárati időtartam-számláló inicializálódik az üresjárati időtartam értékével. A jelentésazonosító struktúra a bemeneti jelentésazonosító struktúrákat tartalmazó láncolt lista végére kerül beillesztésre. Az üresjárati időtartam értéke 4 ms-os egységben van kifejezve, ami 4 és 1020 ms közötti tartományt ad meg.

Copyright © 2025 Silicon Laboratories. Minden jog fenntartva.

41/174

Felettview
Ha az üresjárati időtartam rövidebb, mint a megszakítás BE végpontjának lekérdezési intervalluma, akkor a jelentések a lekérdezési intervallumban generálódnak.
(3) 4 ms-onként a periodikus bemeneti jelentésfeladat böngészi a bemeneti jelentések azonosítóinak listáját. Minden bemeneti jelentésazonosítóhoz a feladat két lehetséges művelet egyikét hajtja végre. A feladat időtartama megegyezik a tétlenségi időtartamhoz használt 4 ms-os egységgel. Ha a gazdagép nem küldött SET_IDLE kéréseket, a bemeneti jelentések azonosítóinak listája üres, és a feladatnak nincs mit feldolgoznia. A feladat csak azokat a jelentésazonosítókat dolgozza fel, amelyek 0-tól eltérőek és 0-nál nagyobb tétlenségi időtartammal rendelkeznek.
(4) Egy adott bemeneti jelentésazonosító esetén a feladat ellenőrzi, hogy letelt-e a tétlenségi időtartam. Ha a tétlenségi időtartam még nem telt le, a számláló értéke csökken, és nem kerül sor bemeneti jelentés küldésére a gazdagépnek.
(5) Ha a tétlenségi időtartam letelt (azaz a tétlenségi időtartam számlálója elérte a nullát), a rendszer bemeneti jelentést küld a gazdagépnek az sl_usbd_hid_write_sync() függvény meghívásával az megszakítás IN végponton keresztül.
(6) A feladat által küldött bemeneti jelentésadatok egy belső adatpufferből származnak, amely a Jelentésleíróban leírt egyes bemeneti jelentésekhez van lefoglalva. Egy alkalmazásfeladat meghívhatja az sl_usbd_hid_write_sync() függvényt egy bemeneti jelentés elküldéséhez. A bemeneti jelentésadatok elküldése után az sl_usbd_hid_write_sync() frissíti a bemeneti jelentésazonosítóhoz társított belső puffert az éppen elküldött adatokkal. Ezután a periodikus bemeneti jelentésfeladat mindig ugyanazokat a bemeneti jelentésadatokat küldi el minden egyes üresjárati időtartam elteltével, és mindaddig, amíg az alkalmazásfeladat frissíti az adatokat a belső pufferben. Van egyfajta zárolási mechanizmus, amely megakadályozza a bemeneti jelentésazonosító adatok sérülését abban az esetben, ha a periodikus bemeneti jelentésfeladat által végzett átvitel pontos időpontjában módosítás történik.

Copyright © 2025 Silicon Laboratories. Minden jog fenntartva.

42/174

Felettview
Felettview
USB eszköz MSC osztálya
USB eszköz MSC osztály túllépéseview USB eszköz MSC osztály erőforrásigényei a Core-tól USB eszköz MSC osztály konfigurációja USB eszköz MSC osztály programozási útmutató USB eszköz MSC osztály tárolóillesztőprogramok
Ez a szakasz a Silicon Labs USB-eszköz által támogatott tömegtároló eszközosztályt (MSC) ismerteti. Az MSC egy olyan protokoll, amely lehetővé teszi az információátvitelt egy USB-eszköz és egy gazdagép között. Az átvitt információ bármilyen, elektronikusan tárolható információ lehet, például futtatható programok, forráskód, dokumentumok, képek, konfigurációs adatok vagy egyéb szöveges vagy numerikus adatok. Az USB-eszköz külső adattárolóként jelenik meg a gazdagép számára, lehetővé téve az adatok átvitelét. filehúzással és elengedéssel.
A file a rendszer meghatározza, hogyan fileaz adathordozókon vannak rendszerezve. Az USB tömegtároló osztályspecifikáció nem igényel semmilyen különleges file rendszert, amelyet a megfelelő eszközökön kell használni. Ehelyett egy egyszerű felületet biztosít az adatszektorok olvasásához és írásához a Small Computer System Interface (SCSI) átlátszó parancskészlet használatával. Mint ilyen, az operációs rendszerek az USB-meghajtót merevlemezként kezelhetik, és bármilyen file rendszer, ami tetszik nekik.
Az USB tömegtároló eszközosztály két átviteli protokollt támogat, az alábbiak szerint:
Csak tömeges átvitel (BOT) Vezérlő/Tömeges/Megszakító (CBI) átvitel (csak floppy meghajtókhoz használatos)
A tömegtároló eszközosztály a SCSI transzparens parancskészletet kizárólag a BOT protokollt használva valósítja meg, ami azt jelenti, hogy csak tömeges végpontokat fog használni az adatok és állapotinformációk továbbítására. Az MSC implementáció több logikai egységet támogat.
Az MSC implementációja a következő specifikációknak felel meg:
Univerzális soros busz tömeges tárolási osztály specifikációjaview, 1.3-as revízió, 2008. szeptember 5. Univerzális soros busz (Universal Serial Bus Mass Storage Class Bulk-Only Transport), 1.0-s revízió, 1999. szeptember 31.
USB eszköz MSC aCl ss Overview
Protokoll végpontok osztálykérelmek kis számítógépes rendszer interfész (SCSI)
Jegyzőkönyv
Ebben a szakaszban a tömeges tárolási osztály Bulk-Only Transport (BOT) protokollját tárgyaljuk. A Bulk-Only Transport protokollnak három jellemzője van:tages:
A parancsátvitel Az adatátvitel Az állapotátvitel
A tömegtárolási parancsokat a gazdagép küldi egy parancsblokk-csomagolónak (CBW) nevezett struktúrán keresztül. Az adatátviteli blokkot igénylő parancsok esetébentage. esetben a gazdagép megpróbálja elküldeni vagy fogadni az eszköztől a CBW hossz- és jelzőmezői által meghatározott pontos számú bájtot. Az adatátvitel utántage) a gazdagép megkísérel fogadni egy parancsállapot-csomagolót (CSW) az eszköztől, amely részletezi a parancs állapotát, valamint az esetleges adatmaradványokat (ha vannak).

Copyright © 2025 Silicon Laboratories. Minden jog fenntartva.

43/174

Felettview
(bármely). Az adatátviteli s-t nem tartalmazó parancsok esetébentage, a gazdagép megpróbálja fogadni a CSW-t közvetlenül a CBW elküldése után. A protokollt az ábra részletezi – MSC protokoll.
Ábra – MSC protokoll

Végpontok
Az eszköz oldalán, a BOT specifikációnak megfelelően, az MSC a következő végpontokból áll: Egy pár vezérlő IN és OUT végpont, amelyet alapértelmezett végpontnak nevezünk. Egy pár tömeges IN és OUT végpont.
Az alábbi táblázat a végpontok különböző felhasználási módjait mutatja.
Táblázat – MSC végponthasználat

Végpont
Vezérlés BE Vezérlés KI Tömeges BE Tömeges KI

Irány
Eszközről gazdagépre Gazdagépről eszközre Eszközről gazdagépre Gazdagépről eszközre

Használat
Felsorolási és MSC osztályspecifikus kérések Felsorolási és MSC osztályspecifikus kérések CSW és adatok küldése CBW és adatok fogadása

Kurzuskérések
Az MSC BOT protokollhoz két definiált vezérlési kérés tartozik. Ezeket a kéréseket és leírásukat az alábbi táblázat részletezi.

Táblázat – Tömeges tárolási osztálykérelmek

Kurzuskérések
Csak tömeges adattároló visszaállítása

Leírás
Ez a kérés a tömegtároló eszköz és a hozzá tartozó interfész alaphelyzetbe állítására szolgál. Ez a kérés felkészíti az eszközt a következő parancsblokk fogadására.

Copyright © 2025 Silicon Laboratories. Minden jog fenntartva.

44/174

Felettview

Kurzuskérések

Leírás

Get Max Ez a kérés az eszköz által támogatott legmagasabb logikai egységszám (LUN) visszaadására szolgál. Példáulample, a

LUN

A 0 és 1 LUN-nal rendelkező eszközök 1 értéket adnak vissza. Az egyetlen logikai egységgel rendelkező eszközök 0 értéket adnak vissza, vagy leállítják a folyamatot.

kérés. A maximálisan visszaadható érték 15.

Kis számítógépes rendszer interfész SCSI

A programozási felület szintjén az MSC eszköz a szabványos adattároló-kommunikációs protokollok egyikét valósítja meg, mint például a SCSI és az SFF-8020i (ATAPI). A „programozási felület” határozza meg, hogy melyik protokoll van megvalósítva, és segíti a gazdagép operációs rendszerét a megfelelő eszközillesztő betöltésében az USB-tárolóeszközzel való kommunikációhoz. Az SCSI a leggyakrabban használt protokoll az USB MSC tárolóeszközökkel. Biztosítunk egy implementációt az MSC SCSI alosztályhoz, amelyet GSDK felhasználóink ​​azonnal használhatnak.
Az SCSI a számítógépek és perifériák közötti kommunikáció kezelésére szolgáló szabványok összessége. Ezek a szabványok parancsokat, protokollokat, elektromos interfészeket és optikai interfészeket tartalmaznak. Azok a tárolóeszközök, amelyek más hardver interfészeket, például USB-t használnak, SCSI parancsokat használnak az eszköz/gazdagép információk beszerzésére, az eszköz működésének vezérlésére és az adatblokkok átvitelére a tárolóközegben.
Az SCSI parancsok az eszköztípusok és funkciók széles skáláját fedik le, ezért az eszközöknek szükségük van ezen parancsok egy részhalmazára. Általánosságban elmondható, hogy a következő parancsok szükségesek az alapvető kommunikációhoz:
KÉRDÉS OLVASÁSI KAPACITÁS(10) OLVASÁS(10) KÉRÉS ÉRZÉKELÉS TESZTELÉSE EGYSÉG KÉSZ ÍRÁS(10)
USB eszköz MSC osztály erőforrásigényei a Core-tól

Minden alkalommal, amikor egy MSC osztálypéldányt adunk hozzá egy USB konfigurációhoz az sl_usbd_msc_add_to_configuration() függvénnyel, a következő erőforrások lesznek lefoglalva a magból.

Forrás
Interfészek Alternatív interfészek Végpontok Interfészcsoportok

Mennyiség
1 1 2 0

Vegye figyelembe, hogy ezek a számok konfigurációnként értendők. Az SL_USBD_INTERFACE_QUANTITY, SL_USBD_ALT_INTERFACE_QUANTITY, SL_USBD_INTERFACE_GROUP_QUANTITY és SL_USBD_DESCRIPTOR_QUANTITY konfigurációs értékek beállításakor ne felejtse el figyelembe venni, hogy hány konfigurációt fog hozzáadni az osztály. Az SL_USBD_OPEN_ENDPOINTS_QUANTITY konfigurációs érték esetében, mivel a végpontok csak akkor nyílnak meg, ha a gazdagép beállít egy konfigurációt, csak az egy osztálypéldányhoz szükséges végpontok számát kell figyelembe vennie.
USB eszköz MSC osztálykonfigurációja

Az MSC osztály konfigurálásához két konfigurációs paramétercsoportot használnak:
USB eszköz MSC osztály Alkalmazásspecifikus konfigurációk USB eszköz MSC osztály Logikai egység konfiguráció
USB eszköz MSC osztály alkalmazásspecifikus konfigurációk

Osztály fordítási idejű konfigurációi Osztálypéldány létrehozása

Copyright © 2025 Silicon Laboratories. Minden jog fenntartva.

45/174

Felettview

Osztály fordítási idejű konfigurációi
A Silicon Labs USB Device MSC osztálya és SCSI alosztálya fordítási időben konfigurálható a sl_usbd_core_config.h fájlban található #defines paraméterekkel. file.
Táblázat – Általános konfigurációs állandók

Konfiguráció neve

Leírás

SL_USBD_MSC_CLASS_INST A függvény hívásával lefoglalt osztálypéldányok száma

MENNYISÉG

sl_usbd_msc_scsi_create_instance() . (A kód nem fordítandó, de ebben a kódrészletben ilyenkor nincs fordítás.)

SL_USBD_MSC_CONFIGURA Azon konfigurációk száma, amelyekhez egy osztálypéldány hozzáadható a MSC hívásán keresztül.

MENNYISÉG

sl_usbd_msc_scsi_add_to_configuration() függvény.

SL_USBD_MSC_LUN_QUANT Logikai egységek száma osztálypéldányonként, amelyeket a következő híváson keresztül ad hozzá:

ITY

sl_usbd_msc_scsi_lun_add() függvény.

SL_USBD_MSC_SCSI_64_BIT Engedélyezi vagy letiltja a 64 bites logikai blokkcím (LBA) támogatását.
_LBA_HU

SL_USBD_MSC_DATA_BUFF Az adatpuffer mérete osztálypéldányonként bájtban ER_SIZE

Alapértelmezett érték
2
1
2
0
512

Osztálypéldány létrehozása
Egy USB eszköz MSC SCSI osztálypéldány létrehozása az sl_usbd_msc_scsi_create_instance() függvény meghívásával történik. Ez a függvény egy konfigurációs argumentumot fogad el, amelyet az alábbiakban ismertetünk.
p_scsi_visszahívások
A p_scsi_callbacks egy mutató egy sl_usbd_msc_scsi_callbacks_t típusú konfigurációs struktúrára. Az általános usb eszközosztály visszahívásai (connect/disconnect) mellett az MSC osztály számára opcionális visszahívási függvényeket is biztosít, amelyeket a logikai egységen bekövetkező esemény esetén hív meg a rendszer. Egy null mutató (NULL) adható át ehhez az argumentumhoz, ha nincs szükség visszahívásokra.
Az alábbi táblázat ismerteti az ebben a konfigurációs struktúrában elérhető összes konfigurációs mezőt.
Táblázat – sl_usbd_msc_scsi_callbacks_t konfigurációs struktúra

Mezők

Leírás

.engedélyezés

Akkor hívódik meg, amikor az USB osztálypéldány sikeresen engedélyezve van.

.disable Akkor hívódik meg, amikor az USB osztálypéldány le van tiltva.

.host_eject A függvény akkor hívódik meg, amikor egy logikai egységet kiadnak a gazdagépből.

Funkció aláírása
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); *(Megjegyzés: Ez a kódrészlet valószínűleg egy külső könyvtárból származik, és a benne szereplő elemek (pl. fájlnevek, elérési utak) nem fordítandók.)*

USB eszköz MSC osztály logikai egység konfigurációja

Egy logikai egység MSC osztálypéldányhoz való hozzáadásához hívjuk meg az sl_usbd_msc_lun_add() függvényt. Ez a függvény egy konfigurációs argumentumot fogad el, amelyet az alábbiakban ismertetünk.

p_lu_info

A p_lu_info egy mutató az sl_usbd_msc_scsi_lun_info_t típusú struktúrára. Célja, hogy információt szolgáltasson a logikai egységről az MSC osztálynak.
Az alábbi táblázat ismerteti az ebben a konfigurációs struktúrában elérhető összes konfigurációs mezőt.

Táblázat – sl_usbd_msc_scsi_lun_info_t konfigurációs struktúra

Copyright © 2025 Silicon Laboratories. Minden jog fenntartva.

46/174

Felettview

Mező

Leírás

Mező
.scsi_lun_api_p tr

Leírás
Mutató a médiaillesztő API-jára, amely ezt a logikai egységet kezeli. További információért a tárolóillesztőkről lásd az USB eszköz MSC osztályú tárolóillesztők című részt.

.vend vagy r_id _p tr
.termék_azonosító_ptr
.p ro d uct_ rev isi on_level .is_ csak olvasható

Mutató egy karakterláncra, amely a logikai egység szállítóazonosítóját tartalmazza. A karakterlánc maximális hossza 8 karakter. Mutató egy karakterláncra, amely a logikai egység termékazonosítóját tartalmazza. A karakterlánc maximális hossza 16 karakter. Termékverziós szint.
Jelző, amely jelzi, hogy a logikai egységet írásvédettként kell-e tekinteni a felhasználó szemszögéből. view a gazdagépről (igaz) vagy nem (hamis).

USB eszköz MSC osztály programozási útmutató

Ez a szakasz az MSC osztály használatát ismerteti.
USB-eszköz MSC osztályának inicializálása USB-eszköz MSC SCSI osztálypéldány hozzáadása az eszközhöz USB-eszköz MSC osztály logikai egység kezelése
USB eszköz MSC osztályának inicializálása

Az MSC SCSI osztály funkcionalitásának hozzáadásához az eszközhöz először inicializálja az MSC alaposztályt és az SCSI alosztályt az sl_usbd_msc_init() és sl_usbd_msc_scsi_init() függvények meghívásával.
Az exampAz alábbi ábra bemutatja az sl_usbd_msc_init() és az sl_usbd_msc_scsi_init() függvények meghívását.

Example – Az sl_usbd_msc_init() és az sl_usbd_msc_scsi_init() függvények meghívása

sl_status_t állapot;
status = sl_usbd_msc_init(); if (status ! SL_STATUS_OK) { /* Hiba történt. Ide kell hozzáadni a hibakezelést. */
}
status = sl_usbd_msc_scsi_init(); if (status ! SL_STATUS_OK) { /* Hiba történt. Ide kell hozzáadni a hibakezelést. */
}
USB-eszköz MSC SCSI osztálypéldányának hozzáadása az eszközhöz
MSC SCSI osztályfunkciók eszközhöz való hozzáadásához először hozzon létre egy példányt, majd adja hozzá az eszköz konfigurációjához/konfigurációihoz. Legalább egy logikai egységet hozzá kell adnia a példányhoz.
MSC SCSI osztálypéldány létrehozása
Hozz létre egy MSC SCSI osztálypéldányt az sl_usbd_msc_scsi_create_instance() függvény meghívásával.
Az exampAz alábbi fájl bemutatja, hogyan hívható meg az sl_usbd_msc_scsi_create_instance() függvény az alapértelmezett argumentumok használatával. Az sl_usbd_msc_scsi_create_instance() függvénynek átadandó konfigurációs argumentumokkal kapcsolatos további információkért lásd: USB eszköz MSC osztály alkalmazásspecifikus konfigurációi.
Example – Az sl_usbd_ msc_scsi_create_instance() függvény meghívása

Copyright © 2025 Silicon Laboratories. Minden jog fenntartva.

47/174

Felettview

uint8_t osztály_nbr; sl_status_t állapot;
sl_usbd_msc_scsi_callbacks_t app_usbd_msc_scsi_callbacks = { .enable = NULL, .disable = NULL, .host_eject = NULL }; (A változónevek és kommentek fordítandók, de ebben a kódrészletben ilyenek nincsenek.)
állapot = sl_usbd_msc_scsi_create_instance(&app_usbd_msc_scsi_callbacks,0 &class_nbr);
if (status ! SL_STATUS_OK) { /* Hiba történt. Ide kell hozzáadni a hibakezelést. */ }
Az MSC osztálypéldány hozzáadása az eszköz konfigurációjához/konfigurációihoz
Miután létrehoztál egy MSC osztálypéldányt, hozzáadhatod azt egy konfigurációhoz a következő függvény meghívásával:
sl_usbd_msc_add_to_configuration() . (A fájlnevek és elérési utak hozzáadása a konfigurációhoz)
Az exampAz alábbi ábra bemutatja, hogyan hívható meg az sl_usbd_msc_scsi_add_to_configuration() függvény az alapértelmezett argumentumok használatával.
Example – Az sl_usbd_ msc_scsi_add_to_configuration() függvény meghívása

sl_status_t állapot;

állapot = sl_usbd_msc_scsi_add_to_configuration(osztály_nbr,

(1)

config_nbr_fs);

(2)

ha (állapot ! SL_STATUS_OK) {

/* Hiba történt. Ide kell hozzáadni a hibakezelést. */

}

(1) Az sl_usbd_msc_scsi_create_instance() által visszaadott konfigurációhoz hozzáadandó osztályszám. (32) Konfigurációs szám (itt egy teljes sebességű konfigurációhoz adjuk hozzá).
USB eszköz MSC osztály logikai egység kezelése
Logikai egység hozzáadása Tárolóközeg csatlakoztatása/leválasztása
Logikai egység hozzáadása
Amikor logikai egységet adunk hozzá az MSC SCSI osztálypéldányhoz, azt egy adattárolóhoz (RAM lemez, SD kártya, flash memória stb.) kell kötni. Az MSC osztály egy adattároló illesztőprogramot használ a adattárolókkal való kommunikációhoz. Ezt az illesztőprogramot meg kell adni a logikai egység hozzáadásakor.
Az exampAz alábbi fájl bemutatja, hogyan adhatunk hozzá logikai egységet az sl_usbd_msc_scsi_lun_add() függvénnyel.
Example – Logikai egység hozzáadása az sl_usbd_msc_scsi_lun_add() függvénnyel

Copyright © 2025 Silicon Laboratories. Minden jog fenntartva.

48/174

Felettview

sl_usbd_msc_scsi_lun_t *lu_object_ptr = NULL;

sl_usbd_msc_scsi_lun_info_t lu_info;

sl_status_t

állapot;

lu_info.sl_usbd_msc_scsi_lun_api_t = &app_usbd_scsi_storage_block_device_api;

lu_info.vendor_id_ptr

= „Szilícium-dioxid-laboratóriumok”;

lu_info.termék_azonosító_ptr

= „blokk eszköz pl.amp„le”;

lu_info.termék_felülvizsgálati_szint = 0x1000u;

lu_info.csak_olvasható

= hamis;

állapot = sl_usbd_msc_scsi_lun_add(osztály_nbr, &lu_info, &lu_object_ptr);
if (status ! SL_STATUS_OK) { /* Hiba történt. Ide kell hozzáadni a hibakezelést. */ }

Adathordozó csatlakoztatása/leválasztása
A logikai egység hozzáadása után egy adathordozót kell csatlakoztatni ahhoz, hogy az elérhető legyen a gazdagép oldaláról. Az MSC osztály két függvényt kínál a adathordozó logikai egységhez való társításának vezérlésére: sl_usbd_msc_scsi_lun_attach() és sl_usbd_msc_scsi_lun_detach(). Ezek a függvények lehetővé teszik egy tárolóeszköz eltávolításának emulálását, hogy szükség esetén újra hozzáférhessen a beágyazott alkalmazásból.
Az exampAz alábbi ábra bemutatja az sl_usbd_msc_scsi_lun_attach() és az sl_usbd_msc_scsi_lun_detach() függvények használatát.
Example – Média csatolása/leválasztása

sl_status_t állapot;

status = sl_usbd_msc_scsi_lun_attach(lu_object_ptr); if (status ! SL_STATUS_OK) { /* Hiba történt. Ide kell hozzáadni a hibakezelést. */
}

(1)

állapot = sl_usbd_msc_scsi_lun_detach(lu_object_ptr); ha (állapot ! SL_STATUS_OK) {
/* Hiba történt. Ide kell hozzáadni a hibakezelést. */
}

(2)

állapot = sl_usbd_msc_scsi_lun_attach(lu_object_ptr) ha (állapot ! SL_STATUS_OK) {
/* Hiba történt. Ide kell hozzáadni a hibakezelést. */
}

(3)

(1) Ettől a pillanattól kezdve, ha az MSC eszköz csatlakozik egy gazdagéphez, a tárolóközeg elérhetővé válik.
(2) Ha az MSC eszköz egy gazdagéphez csatlakozik, a média mostantól elérhetetlenként jelenik meg. Ebben a pillanatban a műveletek a beágyazott alkalmazásból végezhetők el a médián.
(3) Ismét, ha az MSC eszköz csatlakoztatva van a gazdagéphez, a tárolóeszköz csatlakoztatottként jelenik meg.
USB eszköz MSC osztályú tárolóillesztőprogramok
Az USB Device MSC osztályú eszköznek tárolóillesztőre van szüksége a tárolóközeggel való kommunikációhoz. A Silicon Labs jelenleg nem kínál illesztőprogramokat.

Copyright © 2025 Silicon Laboratories. Minden jog fenntartva.

49/174

Felettview
A TPY aa illesztőprogram AI-ját a typedef sl_usbd_msc_scsi_lun_api_t határozza meg. Az sl_usbd_msc_scsi_lun_api_t változónknak szerepelnie kell az sl_usbd_msc_scsi_lun_info_t változóban, amikor logikai egységet adsz hozzá az sl_usbd_msc_scsi_lun_add() függvénnyel. A struktúrákkal kapcsolatos további részletekért lásd az USB eszköz MSC SCSI API szakaszt. A tárolóillesztő implementációja olyan egyszerű lehet, mint egy szektorok tömbje a RAM-ban. A tipikus szektorméret (azaz blokkméret) 512 a tömeges tárolóeszközök esetében és 2048 a CD-ROM-ok esetében.

Copyright © 2025 Silicon Laboratories. Minden jog fenntartva.

50/174

Felettview
Felettview
USB eszközgyártó osztálya
USB eszközgyártói osztály túllépéseview USB eszközgyártó osztály erőforrásigényei a Core-tól USB eszközgyártó osztály konfigurációja USB eszközgyártó osztály programozási útmutató A Vendor osztály lehetővé teszi gyártóspecifikus eszközök létrehozását, amelyek képesek saját protokollt megvalósítani. Egy pár tömeges végpontra támaszkodik az adatátvitelhez a gazdagép és az eszköz között. A tömeges átvitel kényelmes nagy mennyiségű strukturálatlan adat átvitelére, és megbízható adatcserét biztosít egy hibaészlelési és újrapróbálkozási mechanizmus használatával. A tömeges végpontok mellett a Vendor osztály egy opcionális pár megszakítási végpontot is használhat. Bármely operációs rendszer (OS) működhet a Vendor osztállyal, feltéve, hogy az operációs rendszer rendelkezik illesztőprogrammal a Vendor osztály kezelésére. Az operációs rendszertől függően az illesztőprogram lehet natív vagy gyártóspecifikus. Például Microsoft Windows® alatt az alkalmazás a Microsoft által biztosított WinUSB illesztőprogrammal kommunikál a gyártói eszközzel.
USB eszközgyártói osztály túllépéseview
Az ábra – A Windows Host és a Vendor osztály közötti általános architektúra – a gazdagép és az eszköz közötti általános architektúrát mutatja a Vendor osztály használatával. Ebben a példábanampPéldául a gazda operációs rendszer az MS Windows.
Ábra – Általános architektúra az MS Windows Host és a Vendor osztály között

Az MS Windows oldalon az alkalmazás egy USB-könyvtáron keresztül kommunikál a gyártói eszközzel. A könyvtárak, mint például a libusb, API-t kínálnak az eszköz és a hozzá tartozó pipe-ok kezeléséhez, valamint az eszközzel való kommunikációhoz vezérlő, tömeges és megszakítási végpontokon keresztül.
Az eszköz oldalán a Vendor osztály a következő végpontokból áll:
Egy pár vezérlő BE és KI végpont, az úgynevezett alapértelmezett végpont. Egy pár tömeges BE és KI végpont.

Copyright © 2025 Silicon Laboratories. Minden jog fenntartva.

51/174

Felettview

Egy pár megszakítás BE és KI végpont. Ez a pár opcionális. Az alábbi táblázat a különböző végpontok használatát mutatja:
Táblázat – Szállítói osztály végpontjainak használata

Végpont iránya

Control IN
Ellenőrzés
KI
Tömeges behozatal

Eszköztől a hosztig
> Gazdagéptől az eszközig
Eszköztől a hosztig

Tömeges KI
Megszakítás BE
Megszakítás
KI

Gazdagéptől az eszközig
Eszköztől a hosztig
Gazdagéptől az eszközig

Használat
Standard felsorolási kérések és szállítóspecifikus kérések.
Standard felsorolási kérések és szállítóspecifikus kérések.
Nyers adatkommunikáció. Az adatok egy saját protokoll szerint strukturálhatók.
Nyers adatkommunikáció. Az adatok egy saját protokoll szerint strukturálhatók.
Nyers adatkommunikáció vagy értesítés. Az adatok egy saját protokoll szerint strukturálhatók. Nyers adatkommunikáció vagy értesítés. Az adatok egy saját protokoll szerint strukturálhatók.

Az eszközalkalmazás tömeges és megszakítási végpontokat használhat adatok küldésére és fogadására a gazdagép felé vagy onnan. Az alapértelmezett végpontot csak a gazdagép által küldött, gyártóspecifikus kérések dekódolására használhatja. A szabványos kéréseket belsőleg a Silicon Labs USB-eszköz magrétege kezeli.
USB eszközgyártó osztály erőforrásigényei a Core-tól

Minden alkalommal, amikor egy szállítói osztálypéldányt adunk hozzá egy konfigurációhoz az sl_usbd_vendor_add_to_configuration() függvénnyel, a következő erőforrások lesznek lefoglalva a magból.

Forrás
Interfészek Alternatív interfészek Végpontok Interfészcsoportok

Mennyiség
1 1 2 (4, ha engedélyezte a megszakítási végpontokat) 0

Vegye figyelembe, hogy ezek a számok konfigurációnként értendők. Az SL_USBD_INTERFACE_QUANTITY, SL_USBD_ALT_INTERFACE_QUANTITY, SL_USBD_INTERFACE_GROUP_QUANTITY és SL_USBD_DESCRIPTOR_QUANTITY konfigurációs értékek beállításakor ne felejtse el figyelembe venni, hogy hány konfigurációt fog hozzáadni az osztály. Az SL_USBD_OPEN_ENDPOINTS_QUANTITY konfigurációs érték esetében, mivel a végpontok csak akkor nyílnak meg, ha a gazdagép beállít egy konfigurációt, csak az egy osztálypéldányhoz szükséges végpontok számát kell figyelembe vennie.
USB eszközgyártó osztálykonfigurációja

A Vendor osztály konfigurálásához két konfigurációs paramétercsoportot használunk:
USB eszközgyártó osztály Alkalmazásspecifikus konfigurációk USB eszközgyártó osztály példánykonfigurációk
USB eszközgyártó osztály alkalmazásspecifikus konfigurációi
Először is, a Silicon Labs USB eszközgyártó osztálymoduljának használatához állítsa be a Gyártó fordítási idejű konfigurációs definícióit az alkalmazás igényei szerint. Ezek az sl_usbd_core_config.h fejlécben vannak csoportosítva. file a Gyártó részben. A mennyiségi konfigurációk célja, hogy tájékoztassa az USB-eszközmodult arról, hogy hány USB-gyártói objektumot kell lefoglalni.
Az alábbi táblázat az egyes konfigurációs definíciókat ismerteti.

Copyright © 2025 Silicon Laboratories. Minden jog fenntartva.

52/174

Felettview

Táblázat – USB eszköz gyártójának konfigurációja meghatározza

Konfiguráció neve

Leírás

Alapértelmezett érték

SL_USBD_VENDOR_CLASS_INSTANCE_QUANTITY Az sl_usbd_vendor_create_instance() függvény hívásával lefoglalt osztálypéldányok száma.

SL_USBD_VENDOR_CONFIGURATION_QUANTITY Konfigurációk száma. A szállítói osztály példányai hozzáadhatók egy vagy több konfigurációhoz az sl_usbd_vendor_add_to_configuration() függvény meghívásával.

USB eszközgyártó osztálypéldány-konfigurációk

Ez a szakasz a Vendor osztálypéldányokhoz kapcsolódó konfigurációkat definiálja.
Osztálypéldány létrehozása intr_en interval p_vendor_callbacks
Osztálypéldány létrehozása

Egy Vendor osztálypéldány létrehozása az sl_usbd_vendor_create_instance() függvény meghívásával történik, amely három konfigurációs argumentumot fogad el, amelyeket az alábbiakban ismertetünk.

intr_en
Logikai érték, amely jelzi, hogy hozzá kell-e adni egy megszakítási végpontpárt vagy sem.

Érték
igaz hamis

Leírás
Egy pár IN/OUT végpont kerül hozzáadásra és elérhetővé válik a beágyazott alkalmazás számára. Megszakítási végpont nem kerül hozzáadásra. Csak egy pár Bulk IN/OUT végpont lesz elérhető.

intervallum
Ha az intr_en paramétert true értékre állítod, megadhatod a megszakítás végpontjainak lekérdezési intervallumát (milliszekundumban). Ha az intr_en paramétert false értékre állítod, akkor az intervallumot 0-ra állíthatod, mivel ezt az osztály figyelmen kívül fogja hagyni.
p_szállítói_visszahívások
A p_vendor_callbacks egy mutató egy visszahívó függvények struktúraváltozójára, amelyet megadhatsz az osztályspecifikus vezérlési kérések kezelésére. Ha nem használsz osztályspecifikus kéréseket, vagy engedélyezni/letiltani kell az értesítéseket, akkor NULL értékre állíthatod.
Az exampAz alábbi fájl tartalmazza az osztályspecifikus kéréskezelő elvárt aláírását.
Example – Osztályspecifikus kérésfüggvény aláírása

void app_usbd_vendor_req_handle(uint8_t

osztály_száma, (1)

(2) állandó sl_usbd_setup_req_t *p_setup_req);

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

(1) Szállítói osztály példányszáma.

Copyright © 2025 Silicon Laboratories. Minden jog fenntartva.

53/174

Felettview

(2) Mutató a gazdagéptől kapott beállítási kérésre.
USB eszközgyártói osztályprogramozási útmutató
Ez a szakasz ismerteti a Vendor osztály használatát. Az USB eszközgyártó osztály inicializálása USB eszközgyártó osztálypéldány hozzáadása az eszközhöz Kommunikáció az USB eszközgyártó osztály használatával
Az USB eszközgyártó osztályának inicializálása
Egy Vendor osztály funkció hozzáadásához az eszközhöz először inicializálja az osztályt az USBD_Vendor_Init() függvény meghívásával. Az exampAz alábbi fájl bemutatja az sl_usbd_vendor_init() meghívását.
Example – Az sl_usbd_vendor_init() függvény meghívása

sl_status_t állapot;
status = sl_usbd_vendor_init(); if (status ! SL_STATUS_OK) { /* Hiba történt. Ide kell hozzáadni a hibakezelést. */ }
USB eszközgyártói osztálypéldány hozzáadása az eszközhöz
Ahhoz, hogy szállítói osztályfunkciókat adjon hozzá az eszközéhez, először létre kell hoznia egy példányt, majd hozzá kell adnia az eszköz konfigurációjához/konfigurációihoz.
Szállítói osztálypéldány létrehozása A szállítói osztálypéldány hozzáadása az eszköz konfigurációjához/konfigurációihoz
Szállítói osztálypéldány létrehozása
Hozz létre egy Vendor osztálypéldányt az sl_usbd_vendor_create_instance() függvény meghívásával. A példaampAz alábbi fájl bemutatja, hogyan hívható meg az sl_usbd_vendor_create_instance() függvény alapértelmezett argumentumokkal. Az sl_usbd_vendor_create_instance() függvénynek átadandó konfigurációs argumentumokkal kapcsolatos további információkért lásd az USB eszközgyártói osztálypéldány-konfigurációk című részt.
Example – Az sl_usbd_vendor_create_instance() hívása

uint8_t osztály_nbr; sl_status_t állapot;

állapot = sl_usbd_vendor_create_instance(hamis,

(1)

0u,

(2)

alkalmazás_usbd_szállítói_visszahívási_funkciók, (3)

&osztály_nbr);

ha (állapot ! SL_STATUS_OK) {

/* Hiba történt. Ide kell hozzáadni a hibakezelést. */

}

(1) Nincsenek megszakításvégpontok ennél az osztálypéldánynál. (2) Az intervallumot a rendszer figyelmen kívül hagyja, mivel a megszakításvégpontok le vannak tiltva.

Copyright © 2025 Silicon Laboratories. Minden jog fenntartva.

54/174

Felettview

(3) Visszahívó függvény, amely az alkalmazás része, és szállítóspecifikus osztálykéréseket kezel. További információkért lásd: Kommunikáció az USB eszköz szállítói osztályának használatával. A szállítói osztálypéldány hozzáadása az eszköz konfigurációjához/konfigurációihoz Miután létrehozott egy szállítói osztálypéldányt, hozzáadhatja azt egy konfigurációhoz az USBD_Vendor_ConfigAdd() függvény meghívásával. Az exampAz alábbi fájl bemutatja, hogyan hívható meg az sl_usbd_vendor_add_to_configuration() függvény az alapértelmezett argumentumok használatával.
Example – Az sl_usbd_vendor_add_to_configuration() függvény meghívása

sl_status_t állapot;

állapot = sl_usbd_vendor_add_to_configuration(osztály_száma,

(1)

config_nbr_fs);

(2)

ha (állapot ! SL_STATUS_OK) {

/* Hiba történt. Ide kell hozzáadni a hibakezelést. */

}

(1) Az sl_usbd_vendor_create_instance() által visszaadott konfigurációhoz hozzáadandó osztályszám. (2) Konfigurációs szám (itt egy teljes sebességű konfigurációhoz adjuk hozzá).
Kommunikáció az USB eszközgyártói osztály használatával
Általános szinkron kommunikáció Aszinkron kommunikáció Szállítói kérés Általános A Szállító osztály a következő függvényeket kínálja a gazdagéppel való kommunikációhoz. A függvény paramétereivel kapcsolatos további részletekért lásd az USB eszközszállító API-t.
Táblázat – Szállítói kommunikációs API összefoglalása

Funkció neve
sl_usb d _v e nd or_ olvasás _bulk_sy nc() sl_usb d _v e nd or_ írás _bulk_sy nc() sl_usb d _v e nd or_ olvasás _bulk_asy nc() sl_usb d _v e nd or_ írás _bulk_asy nc() sl_usb d _v e nd or_ olvasás _inter rrup t_sy nc() sl_usb d _v e nd or_ írás _inter rrup t_sy nc() sl_usb d _v e nd or_ olvasás _inter rrup t_asy nc
()
sl_usb d _v e nd o r_write _inte rrup t_asy nc
()

Operation Receives data from host through bulk OUT endpoint. This function is blocking. Sends data to host through bulk IN endpoint. This function is blocking. Receives data from host through bulk OUT endpoint. This function is non-blocking. Sends data to host through bulk IN endpoint. This function is non-blocking. Receives data from host through interrupt OUT endpoint. This function is blocking. Sends data to host through interrupt IN endpoint. This function is blocking. Receives data from host through interrupt OUT endpoint. This function is non-
blokkolása.
Sends data to host through interrupt IN endpoint. This function is non-blocking.

The vendor requests are also another way to communicate with the host. When managing vendor requests sent by the host, the application can receive or send data from or to the host using the control endpoint; you will need to provide an application callback passed as a parameter of sl_usbd_vendor_create_instance() . Synchronous Communication

Copyright © 2025 Silicon Laboratories. Minden jog fenntartva.

55/174

Felettview

Synchronous communication means that the transfer is blocking. When a function is called, the application blocks until the transfer completes with or without an error. A timeout can be specified to avoid waiting forever. The example below shows a read and write that receives data from the host using the bulk OUT endpoint and sends data to the host using the bulk IN endpoint.
Example – Synchronous Bulk Read and Write

__ALIGNED(4) uint8_t rx_buf[2];

__ALIGNED(4) uint8_t tx_buf[2];

uint32_t

xfer_len;

sl_status_t

állapot;

status = sl_usbd_vendor_read_bulk_sync(class_nbr,

(1)

(void *)&rx_buf[0],

(2)

2u,

0u,

(3)

&xfer_len);

ha (állapot ! SL_STATUS_OK) {

/* $$$$ Kezeld a hibát. */

}

status = sl_usbd_vendor_write_bulk_sync( class_nbr,

(1)

(void *)&tx_buf[0],

(4)

2u,

0u,

(3)

false,

(5)

&xfer_len);

ha (állapot ! SL_STATUS_OK) {

/* $$$$ Kezeld a hibát. */

}

(1) The class instance number created with sl_usbd_vendor_create_instance() provides an internal reference to the Vendor class to route the transfer to the proper bulk OUT or IN endpoint.
(2) The application must ensure that the buffer provided to the function is large enough to accommodate all the data. Otherwise, synchronization issues might happen.
(3) In order to avoid an infinite blocking situation, a timeout expressed in milliseconds can be specified. A value of 809 makes the application task wait forever.
(4) Az alkalmazás biztosítja az inicializált átviteli puffert.
(5) If this flag is set to true , and the transfer length is multiple of the endpoint maximum packet size, the device stack will send a zero-length packet to the host to signal the end of the transfer.
The use of interrupt endpoint communication functions, sl_usbd_vendor_read_interrupt_sync() and sl_usbd_vendor_write_interrupt_sync() , is similar to bulk endpoint communication functions presented in Example – Synchronous Bulk Read and Write.
Aszinkron kommunikáció
Asynchronous communication means that the transfer is non-blocking. When a function is called, the application passes the transfer information to the device stack and does not block. Other application processing can be done while the transfer is in progress over the USB bus. Once the transfer has completed, a callback function is called by the device stack to inform the application about the transfer completion. The example below shows asynchronous read and write.
Example – Asynchronous Bulk Read and Write

Copyright © 2025 Silicon Laboratories. Minden jog fenntartva.

56/174

Felettview

void app_usbd_vendor_comm (uint8_t class_nbr)

{

__ALIGNED(4) uint8_t rx_buf[2];

__ALIGNED(4) uint8_t tx_buf[2];

sl_status_t

állapot;

status = sl_usbd_vendor_read_bulk_async(class_nbr,

(void *)&rx_buf[0],

(2)

2u,

app_usbd_vendor_rx_completed,

NULL);

(4)

ha (állapot ! SL_STATUS_OK) {

/* $$$$ Kezeld a hibát. */

}

status = sl_usbd_vendor_write_bulk_async(class_nbr,

(void *)&tx_buf[0],

(5)

2u,

app_usbd_vendor_tx_completed,

NULLA,

(4)

false);

(6)

ha (állapot ! SL_STATUS_OK) {

/* $$$$ Kezeld a hibát. */

}

}

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

static void 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,

sl_status_t status)

{

ha (állapot ! SL_STATUS_OK) {

/* $$$$ Do some processing. */

} másik {

/* $$$$ Kezeld a hibát. */

}

}

static void 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,

sl_status_t status)

{

ha (állapot ! SL_STATUS_OK) {

/* $$$$ Do some processing. */

} másik {

/* $$$$ Kezeld a hibát. */

}

}

(1) The class instance number provides an internal reference to the Vendor class to route the transfer to the proper bulk OUT or IN endpoint. (2) The application must ensure that the buffer provided is large enough to accommodate all the data. Otherwise, there may be synchronization issues. (3) The application provides a callback function pointer passed as a parameter. Upon completion of the transfer, the device stack calls this callback function so that the application can finalize the transfer by analyzing the transfer result. For instance, on completion of a read operation, the application might perform processing on the received data. Upon write completion, the application can indicate if the write was successful and how many bytes were sent.

Copyright © 2025 Silicon Laboratories. Minden jog fenntartva.

57/174

Felettview
(4) An argument associated with the callback can be also passed. Then in the callback context, some private information can be retrieved. (5) The application provides the initialized transmit buffer. (6) If this flag is set to true , and the transfer length is a multiple of the endpoint maximum packet size, the device stack will send a zero-length packet to the host to signal the end of transfer. The use of interrupt endpoint communication functions, sl_usbd_vendor_read_interrupt_async() and sl_usbd_vendor_write_interrupt_async() , is similar to the bulk endpoint communication functions presented in Example Asynchronous Bulk Read and Write.
Vendor Request
The USB 2.0 specification defines three types of requests: standard, class, and vendor. All standard requests are handled directly by the core layer, while class requests are managed by the proper associated class. Vendor requests can be processed by the vendor class. To process vendor requests, you must provide an application callback as a parameter of sl_usbd_vendor_create_instance() . After a vendor request is received by the USB device, it must be decoded properly. The example below shows vendor request decoding. Certain requests may be required to receive from or send to the host during the data stage of a control transfer. If no data stage is present, you only have to decode the Setup packet. This example shows the three types of data stage management: no data, data OUT and data IN.
Example – Vendor Request Decoding

Copyright © 2025 Silicon Laboratories. Minden jog fenntartva.

58/174

Felettview

#define APP_VENDOR_REQ_NO_DATA

0x01u

#define APP_VENDOR_REQ_RECEIVE_DATA_FROM_HOST 0x02u

#define APP_VENDOR_REQ_SEND_DATA_TO_HOST 0x03u

#define APP_VENDOR_REQ_DATA_BUF_SIZE

50u

static uint8_t app_vendor_req_buf[APP_VENDOR_REQ_DATA_BUF_SIZE];

static bool app_usbd_vendor_req (uint8_t

class_nbr,

const sl_usbd_setup_req_t *p_setup_req)

(1)

{

bool valid;

sl_status_t állapot;

uint16_t req_len;

uint32_t xfer_len;

(void)class_nbr;

switch(p_setup_req->bRequest) { case APP_VENDOR_REQ_NO_DATA: valid = true; break;

(2) (3)

case APP_VENDOR_REQ_RECEIVE_DATA_FROM_HOST:

(4)

req_len = p_setup_req->wLength;

if (req_len > APP_VENDOR_REQ_DATA_BUF_SIZE) {

// Not enough room to receive data.

return (false);

}

// Receive data via Control OUT EP. // Wait transfer completion forever. status = sl_usbd_core_read_control_sync((void *)&app_vendor_req_buf[0u],
req_len, 0u, &xfer_len); if (status ! SL_STATUS_OK) { valid = false; } else { valid = true; } break;

case APP_VENDOR_REQ_SEND_DATA_TO_HOST:

(5)

req_len = APP_VENDOR_REQ_DATA_BUF_SIZE;

// Fill buf with a pattern. Mem_Set((void *)&AppVendorReqBuf[0u],
'A',
req_len);

// Send data via Control IN EP. // Wait transfer completion forever. 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;

alapértelmezett:

(6)

// Request is not supported.

Copyright © 2025 Silicon Laboratories. Minden jog fenntartva.

59/174

Felettview

valid =true;break;
case APP_VENDOR_REQ_RECEIVE_DATA_FROM_HOST:(4) req_len = p_setup_req->wLength;if(req_len > APP_VENDOR_REQ_DATA_BUF_SIZE){// Not enough room to receive data.return(false);}// Receive data via Control OUT EP.// Wait transfer completion forever. status =sl_usbd_core_read_control_sync((void *)&app_vendor_req_buf[0u],
req_len,0u,&xfer_len);if(status ! SL_STATUS_OK){ valid =false;}else{ valid =true;}break;
case APP_VENDOR_REQ_SEND_DATA_TO_HOST:(5) req_len = APP_VENDOR_REQ_DATA_BUF_SIZE;// Fill buf with a pattern.Mem_Set((void *)&AppVendorReqBuf[0u],’A’,
req_len);// Send data via Control IN EP.// Wait transfer completion forever. 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;
default:(6)// Request is not supported. valid = DEF_FAIL;break;}return(valid);}

(1) The core will pass the Setup packet content to your application. The structure sl_usbd_setup_req_t contains the same fields as defined by the USB 2.0 specification (refer to section “9.3 USB Device Requests” of the specification for more details):

typedef struct {

uint8_t bmRequestType; /* Characteristics of request.

*/

uint8_t bRequest; /* Specific request.

*/

uint16_t wValue; /* Varies according to request.

*/

uint16_t wIndex; /* Varies according to request; typically used as index.*/

uint16_t wLength; /* Transfer length if data stage jelen.

*/

} sl_usbd_setup_req_t;

(2) Determine the request. You may use a switch statement if you are using different requests. In this example, there are three different requests corresponding to the three types of the data stage: APP_VENDOR_REQ_NO_DATA, APP_VENDOR_REQ_RECEIVE_DATA_FROM_HOST, and APP_VENDOR_REQ_SEND_DATA_TO_HOST.
(3) If no data stage is present, you only need to decode the other fields. The presence of a data stage or not is indicated by the field wLength being non-null or null.
(4) If the host sends data to the device, you must call the function sl_usbd_core_read_control_sync() . The buffer provided should be able to contain up to wLength bytes. If any error occurs, return false to the core that will stall the status stage of the control transfer, indicating to the host that the request cannot be processed. true is returned in case of success.
(5) If the host receives data from the device, you must call the function sl_usbd_core_write_control_sync() . If any error occurs, return false to the core that will stall the status stage of the control transfer, indicating to the host that the request cannot be processed. true is returned in case of success.
(6) In this example, all requests not recognized are marked by returning false to the core. This one will stall the data or status stage of the control transfer indicating to the host that the request is not supported.
The host sends vendor requests through a host vendor application. USb libraries, such as libusb, can be used to help you develop your custom host vendor application.

Copyright © 2025 Silicon Laboratories. Minden jog fenntartva.

60/174

API dokumentáció
API dokumentáció
API dokumentáció
Modulok listája
USB Device API USB Device ACM API USB Device CDC API USB Device Core API USB Device HID API USB Device MSC API USB Device MSC SCSI API USB Device Vendor API

Leírás
USB Device API USB Device ACM API USB Device CDC API USB Device Core API USB Device HID API USB Device MSC API USB Device MSC SCSI API USB Device Vendor API

Copyright © 2025 Silicon Laboratories. Minden jog fenntartva.

61/174

USB Device API
USB Device API
USB Device API
USB Device API.
Modulok
USB Device ACM API USB Device CDC API USB Device Core API USB Device HID API USB Device MSC API USB Device MSC SCSI API USB Device Vendor API

Copyright © 2025 Silicon Laboratories. Minden jog fenntartva.

62/174

USB Device ACM API

USB Device ACM API

USB Device ACM API

USB Device CDC ACM API.
Modulok
a sl_usbd_cdc_ cm_line_coding_t sl_usbd_cdc_acm_callbacks_t
Funkciók

sl_status_t sl_status_t
sl_status_t sl_status_t sl_status_t
sl_status_t
sl_status_t
sl_status_t
sl_status_t sl_status_t sl_status_t sl_status_t sl_status_t

a sl_usbd_cdc_ cm_init(void)
GLOBAL VARIABLES.
ssll__uussbbdd__ccddcc__aaccmm__ccraellabtaec_kins_stta*npc_ea(cumin_tc1a6l_lbtalicnkes_,sutaintte8__int t*eprv_saul,bucinlats1s6__nt bcra)ll_mgmt_capabilities,
Add a new instance of the CDC ACM serial emulation subclass.
a a a a sl_usbd_cdc_ cm_ dd_to_configur tion(uint8_t subcl ss_nbr, uint8_t config_nbr)
Add a CDC ACM subclass class instance into USB device configuration.
a a sl_usbd_cdc_ cm_is_en bled(uint8_t subclass_nbr, bool *p_enabled)
Get the CDC ACM serial emulation subclass enable state.
a a a sl_usbd_cdc_ cm_re d(uint8_t subcl ss_nbr, uint8_t *p_buf, uint32_t buf_len, uint16_t timeout, uint32_t
*p_xfer_len) Receive data on the CDC ACM serial emulation subclass.
a a a a sl_usbd_cdc_ cm_re d_ sync(uint8_t subcl ss_nbr, uint8_t *p_buf, uint32_t buf_len, a a a a sl_usbd_cdc_ sync_function_t sync_fnct, void *p_ sync_ rg)
Receive data on the CDC ACM serial emulation subclass asynchronously.
a a sl_usbd_cdc_ cm_write(uint8_t subcl ss_nbr, uint8_t *p_buf, uint32_t buf_len, uint16_t timeout, uint32_t
*p_xfer_len) Send data on the CDC ACM serial emulation subclass.
a a a sl_usbd_cdc_ cm_write_ sync(uint8_t subcl ss_nbr, uint8_t *p_buf, uint32_t buf_len, a a a a sl_usbd_cdc_ sync_function_t sync_fnct, void *p_ sync_ rg)
Send data on the CDC ACM serial emulation subclass asynchronously.
a a a sl_usbd_cdc_ cm_get_line_control_st te(uint8_t subcl ss_nbr, uint8_t *p_line_ctrl)
Return the state of control lines.
a a a sl_usbd_cdc_ cm_get_line_coding(uint8_t subcl ss_nbr, sl_usbd_cdc_ cm_line_coding_t *p_line_coding)
Get the current state of the line coding.
a a a sl_usbd_cdc_ cm_set_line_coding(uint8_t subcl ss_nbr, sl_usbd_cdc_ cm_line_coding_t *p_line_coding)
Set a new line coding.
a a a sl_usbd_cdc_ cm_set_line_st te_event(uint8_t subcl ss_nbr, uint8_t events)
Set a line state event(s).
a a a a sl_usbd_cdc_ cm_cle r_line_st te_event(uint8_t subcl ss_nbr, uint8_t events)
Clear a line state event(s).

Copyright © 2025 Silicon Laboratories. Minden jog fenntartva.

63/174

USB Device ACM API
Makrók
#define SL_USBD_CDC_ACM_NBR_NONE 255u
MODUL.
#define SL_USBD_CDC_ACM_PARITY_NONE 0u
PORT SETTINGS DEFINES.
#define SL_USBD_CDC_ACM_PARITY_ODD 1u #define SL_USBD_CDC_ACM_PARITY_EVEN 2u #define SL_USBD_CDC_ACM_PARITY_MARK 3u #define SL_USBD_CDC_ACM_PARITY_SPACE 4u #define SL_USBD_CDC_ACM_STOP_BIT_1 0u #define SL_USBD_CDC_ACM_STOP_BIT_1_5 1u #define SL_USBD_CDC_ACM_STOP_BIT_2 2u #define SL_USBD_CDC_ACM_CTRL_BREAK 0 01u
LINE EVENTS FLAGS DEFINES.
#define SL_USBD_CDC_ACM_CTRL_RTS 0 02u #define SL_USBD_CDC_ACM_CTRL_DTR 0 04u #define SL_USBD_CDC_ACM_STATE_DCD 0 01u #define SL_USBD_CDC_ACM_STATE_DSR 0 02u #define SL_USBD_CDC_ACM_STATE_BREAK 0 04u #define SL_USBD_CDC_ACM_STATE_RING 0 08u #define SL_USBD_CDC_ACM_STATE_FRAMING 0 10u #define SL_USBD_CDC_ACM_STATE_PARITY 0 20u #define SL_USBD_CDC_ACM_STATE_OVERUN 0 40u #define SL_USBD_CDC_ACM_CALL_MGMT_DEV 0 01u
CALL MANAGEMENT CAPABILITIES.
#define SL_USBD_CDC_ACM_CALL_MGMT_DATA_CCI_DCI 0 02u #define SL_USBD_CDC_ACM_CALL_MGMT_DATA_OVER_DCI 0 02u | 0 01u)
Function Documentation
sl_usbd_cdc_acm_init
sl_status_t sl_usbd_cdc_acm_init (void )
GLOBAL VARIABLES. Parameters
Copyright © 2025 Silicon Laboratories. Minden jog fenntartva.

64/174

USB Device ACM API

Írja be
üres

Direction N/A

Argument Name

MACROS GLOBAL CONSTANTS FUNCTION PROTOTYPES CDC ACM FUNCTIONS

Initialize the CDC ACM serial emulation subclass.
Visszatér

Returns SL_STATUS_OK on success or another SL_STATUS code on failure.

Leírás

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)

Add a new instance of the CDC ACM serial emulation subclass.
Paraméterek

Írja be
uint16_t
uint16_t

Direction Argument Name

Leírás

N/A

line_state_interval Line state notification interval in milliseconds (value must

be a power of 2).

N/A

call_mgmt_capabilities Call Management Capabilities bitmap. OR’ed of the

following flags:

SL_USBD_CDC_ACM_CALL_MGMT_DEV Device handles call management itself. SL_USBD_CDC_ACM_CALL_MGMT_DATA_CCI_DCI Device can send/receive call management information over a Data Class interface.

sl_usbd_cdc_acm_callbacks_t N/A
*

uint8_t *

N/A

p_acm_callbacks p_subclass_nbr

Optional pointers to callback functions to be called on various events.
Param to variable that will receive CDC ACM serial emulation subclass instance number.

Visszatér

Return SL_STATUS_OK on success or another SL_STATUS code on failure.

sl_usbd_cdc_acm_add_to_configuration

sl_status_t sl_usbd_cdc_acm_add_to_configuration (uint8_t subclass_nbr, uint8_t config_nbr)

Add a CDC ACM subclass class instance into USB device configuration.
Paraméterek

Írja be
uint8_t uint8_t

Direction N/A N/A

Argument Name
subclass_nbr config_nbr

Description CDC ACM serial emulation subclass instance number. Configuration index to add new test class interface to.

Visszatér

Copyright © 2025 Silicon Laboratories. Minden jog fenntartva.

65/174

USB Device ACM API
Returns SL_STATUS_OK on success or another SL_STATUS code on failure.

sl_usbd_cdc_acm_is_enabled

sl_status_t sl_usbd_cdc_acm_is_enabled (uint8_t subclass_nbr, bool * p_enabled)

Get the CDC ACM serial emulation subclass enable state.
Paraméterek

Írja be

Irány

Argument Name

Leírás

uint8_t N/A

subclass_nbr CDC ACM serial emulation subclass instance number.

bool * N/A

p_enabled

Boolean to a variable that will receive enable status. The variable is set to true, CDC ACM serial emulation is enabled. The va

Dokumentumok / Források

SILICON LABS USB Device Stack [pdf] Használati utasítás
USB Device Stack, Device Stack, Stack

Hivatkozások

Hagyj megjegyzést

E-mail címét nem tesszük közzé. A kötelező mezők meg vannak jelölve *