SILICON LABS USB ierīču steka lietošanas instrukcija

USB ierīču kaudze

Specifikācijas

  • USB versija: 1.5.1
  • Publicēšanas datums: 21. gada 2025. jūlijs
  • Vienkāršības SDK versija: 2025.6.1

Produkts beidziesview

Silicon Labs USB ierīču komplekts nodrošina daudzpusīgu un
ērti lietojams USB savienojums lietu interneta projektiem, kas atvieglo
saziņa starp tīkla kopprocesoriem un resursdatoriem.

Funkcijas

  • Efektīvs USB ierīču komplekts
  • Ideāli piemērots lietu interneta (IoT) projektiem
  • Atbalsts saziņai starp tīkla kopprocesoriem un
    saimnieki

Produkta lietošanas instrukcijas

USB ierīces konfigurācija

Konfigurējiet USB ierīces iestatījumus atbilstoši savam projektam
prasības, skatiet sadaļu USB ierīces konfigurācija
dokumentācijā.

USB ierīces programmēšanas rokasgrāmata

Izlasiet USB ierīces programmēšanas rokasgrāmatu, lai saprastu, kā to izdarīt.
programmēt un mijiedarboties ar USB ierīci dažādiem mērķiem
lietojumprogrammas.

USB ierīču klases

Sadaļa USB ierīču klases sniedz pārskatu.view dažādu
klases, piemēram, CDC ACM, HID, MSC SCSI un pārdevēja klase. Izvēlieties
atbilstoša klase, pamatojoties uz jūsu ierīces funkcionalitāti.

USB ierīces problēmu novēršana

Ja rodas problēmas ar USB ierīci, skatiet
USB ierīču problēmu novēršanas sadaļa risinājumiem un atkļūdošanai
padomi.

Microsoft Windows operētājsistēmas USB resursdators

Ja izmantojat USB ierīci ar Microsoft Windows operētājsistēmu, USB
Saimnieks, noteikti ievērojiet vadlīnijas, kas sniegtas
dokumentācija nemanāmai integrācijai.

FAQ

J: Kādi ir daži izplatīti exampierīču skaits, ko varu izveidot, izmantojot
šis USB disks?

A: USB steks ļauj veidot tādas ierīces kā
USB-seriālā porta adapteri, peles vai tastatūras, noņemama datu nesēja
ierīces un pielāgotas ierīces.

J: Vai ir kādas īpašas programmatūras prasības, lai to izmantotu?
USB ierīču kaudze?

A: Saderīga programmatūra ietver Simplicity SDK, Simplicity
Studio, Simplicity Commander, GCC (GNU kompilatoru kolekcija),
IAR iegultais darbagalds ARM un IAR EWARM.

Universālā seriālā kopne USB

Universālā seriālā kopne USB

USB pāriview Beigāsview
USB laidiena piezīmes
Specifikācijas un funkcijasview
USB ierīces konfigurācijaview
USB ierīču programmēšanas rokasgrāmataview
USB ierīču klasesview CDC ACM klase beigusiesview HID klase beigusiesview MSC SCSI klases pārsniegšanaview Pārdevēja klase ir beigusiesview
USB API API dokumentācija USB ierīces API USB ierīces ACM API a sl_usbd_cdc_ cm_line_coding_t sl_usbd_cdc_acm_callbacks_t USB ierīces CDC API a sl_usbd_cdc_subcl ss_driver_t USB ierīces pamat API
sl_usbd_device_config_t sl_usbd_setup_req_t
sl_usbd_cl ss_driver_t USB ierīces HID API
sl_usbd_hid_callbacks_t USB ierīces MSC API
sl_usbd_msc_subcl ss_driver_t USB ierīce MSC SCSI API
sl_usbd_msc_scsi_callbacks_t

Autortiesības © 2025 Silicon Laboratories. Visas tiesības aizsargātas.

1/174

Universālā seriālā kopne USB
sl_usbd_msc_scsi_lun_pi
sl_usbd_msc_scsi_lun_info sl_usbd_msc_scsi_lun
USB ierīces piegādātāja API sl_usbd_vendor_callbacks_t
API dokumentācija USB ierīces problēmu novēršana
Beigāsview Microsoft Windows operētājsistēmas USB resursdators
Beigāsview

Autortiesības © 2025 Silicon Laboratories. Visas tiesības aizsargātas.

2/174

Beigāsview
Beigāsview
USB ierīce
USB ir viena no veiksmīgākajām saziņas saskarnēm datorsistēmu vēsturē un faktiskais standarts datoru perifērijas ierīču savienošanai. Silicon Labs USB ierīču steks ir USB ierīču modulis, kas īpaši izstrādāts iegultajām sistēmām. Tas ir izveidots no pašiem pamatiem, ņemot vērā Silicon Labs kvalitāti, mērogojamību un uzticamību, un ir izturējis stingru validācijas procesu, lai atbilstu USB 2.0 specifikācijai. Šajā dokumentācijā ir aprakstīts, kā inicializēt, palaist un lietot Silicon Labs USB ierīču steku. Tajā ir paskaidrotas dažādas konfigurācijas vērtības un to lietojums. Tajā ir iekļauts arī pārskats...view par tehnoloģiju, konfigurācijas iespēju veidiem, ieviešanas procedūrām un piemēriemampKatras pieejamās klases tipiskā lietojuma veidi.
Lai palīdzētu jums ātri izprast USB koncepcijas, dokumentācijā ir iekļauti daudzi piemēri.ampUSB ar pamatfunkcijām. Šie piemēriampsniegs jums ietvaru, kas ļauj ātri izveidot ierīces. Šie piemēriampietver:
USB-seriālā porta adapteris (sakaru ierīču klase) Pele vai tastatūra (cilvēka saskarnes ierīču klase) Noņemama atmiņas ierīce (lielapjoma atmiņas klase) Pielāgota ierīce (pārdevēja klase)
Tālāk ir beidziesview dokumentācijas sadaļās:
Specifikācijas un funkcijas USB ierīces konfigurācija USB ierīces programmēšanas rokasgrāmata USB ierīču klases
CDC ACM klase HID klase MSC SCSI klase Pārdevēja klase USB ierīces problēmu novēršana Microsoft Windows operētājsistēma USB resursdators

Autortiesības © 2025 Silicon Laboratories. Visas tiesības aizsargātas.

3/174

USB
USB

USB 1.5.1 versija, 2025. gada 21. jūlijs – laidiena piezīmes
Simplicity SDK versija 2025.6.1
Silicon Labs efektīvā USB ierīču pakete piedāvā daudzpusīgu un ērti lietojamu USB savienojamību, kas ir ideāli piemērota lietu interneta (IoT) projektiem, tostarp saziņai starp tīkla līdzprocesoriem un resursdatoriem. Noklikšķiniet šeit, lai skatītu agrākas versijas.
Izlaiduma kopsavilkums
Galvenās funkcijas | API izmaiņas | Kļūdu labojumi | Čipa iespējošana
Galvenās iezīmes
Mainās tikai pamatā esošā platforma.
API izmaiņas
Nav.
Kļūdu labojumi
Nav.
Čipu iespējošana
Nav.
Galvenās iezīmes
Jaunas funkcijas | Uzlabojumi | Noņemtas funkcijas | Novecojušas funkcijas
Jaunas funkcijas
Nav.
Uzlabojumi
Mainās tikai pamatā esošā platforma.
Noņemtās funkcijas
Nav.
Novecojušas funkcijas
Nav.
API izmaiņas
Jauni API | Modificēti API | Noņemti API | Novecojuši API
Jaunas API

Autortiesības © 2025 Silicon Laboratories. Visas tiesības aizsargātas.

4/174

USB
Nav.
Modificēti API
Nav.
Noņemtās API
Nav.
Novecojuši API
Nav.
Kļūdu labojumi
Nav.
Čipu iespējošana
Nav.
Pieteikums PiemampIzmaiņas
Jaunais Piemamples | Modificēts piemērsamples | Noņemts examples | Novecojis examples
Jaunais Piemamples
Nav.
Modificēts Piemamples
Nav.
Noņemts Examples
Nav.
Novecojis examples
Nav.
Izlaiduma izmaiņu ietekme
Ietekmes paziņojumi | Migrācijas ceļvedis
Ietekmes paziņojumi
Nav.
Migrācijas ceļvedis
Nav.
Zināmās problēmas un ierobežojumi
Nav.
Šī laidiena izmantošana

Autortiesības © 2025 Silicon Laboratories. Visas tiesības aizsargātas.

5/174

USB

Kas ir iekļauts laidienā? | Saderīga programmatūra | Instalēšana un lietošana | Palīdzība un atsauksmes

Kas ir iekļauts laidienā?

USB ierīču steka lietojumprogrammu piemērsamples
Saderīga programmatūra

Programmatūra
Simplicity SDK Simplicity Studio Simplicity Commander GCC (GNU kompilatoru kolekcija) IAR iegultais darbagalds ARM IAR EWARM

Saderīga versija vai variants
2025.6.0 5.11.0 1.18.2 (nodrošināta ar Simplicity Studio) 12.2.1 (nodrošināta ar Simplicity Studio) 9.40.1 (nodrošināta ar Simplicity Studio)

Uzstādīšana un lietošana

Lai sāktu savu attīstību, skatiet mūsu:
USB ierīces programmēšanas rokasgrāmata. API dokumentācija.
Informāciju par Secure Vault integrāciju skatiet sadaļā Secure Vault.
Lai atkārtotiview Drošības un programmatūras brīdinājumu paziņojumi un paziņojumu preferenču pārvaldība:
ò Dodieties uz https://community.silabs.com/. Piesakieties ar sava konta pieteikšanās datiem. Noklikšķiniet uz sava profesionāļa.file ikona lapas augšējā labajā stūrī.
õ Nolaižamajā izvēlnē atlasiet Paziņojumi. ö Sadaļā Paziņojumi dodieties uz cilni Mani produktu paziņojumi, lai tos atkārtoti atvērtu.view vēsturiskas drošības un programmatūras konsultācijas
paziņojumi
÷ Lai pārvaldītu savas preferences, izmantojiet cilni “Pārvaldīt paziņojumus”, lai pielāgotu, kurus produktu atjauninājumus un ieteikumus vēlaties saņemt.
saņemt.
Ieteicamos konfigurācijas iestatījumus skatiet šeit.
Lai uzzinātu vairāk par šajā laidienā iekļauto programmatūru, iepazīstieties ar mūsu tiešsaistes dokumentāciju.
Palīdzība un atsauksmes

Sazinieties ar Silicon Labs atbalsta dienestu. Lai izmantotu mūsu rīku “Ask AI” atbilžu saņemšanai, skatiet meklēšanas lauku šīs lapas augšdaļā.

Piezīme. Ask AI ir eksperimentāls risinājums.

Saņemiet palīdzību no mūsu izstrādātāju kopienas.
SDK izlaišanas un uzturēšanas politika
Skatiet mūsu SDK izlaišanas un uzturēšanas politiku.

Autortiesības © 2025 Silicon Laboratories. Visas tiesības aizsargātas.

6/174

Beigāsview
Beigāsview
Specifikācijas
Atbilst “Universālās seriālās kopnes specifikācijas 2.0 versijai” Ievieš “Saskarņu asociācijas deskriptora inženierijas izmaiņu paziņojumu (ECN)” Pārsūtīšanas veidi
Vadības masveida pārtraukuma USB klases Komunikācijas ierīču klase (CDC) Abstraktais vadības modelis (ACM) Cilvēka saskarnes ierīce (HID) Masveida atmiņas klase (MSC) Pārdevējam specifiska klases sistēma
Funkcijas
Pielāgojams, lai iekļautu tikai nepieciešamās funkcijas, lai samazinātu atmiņas patēriņu. Atbalsta pilna ātruma (12 Mbit/s). Atbalsta kompozītās (daudzfunkcionālās) ierīces. Atbalsta vairāku konfigurāciju ierīces. Atbalsta USB enerģijas taupīšanas funkcijas (ierīces apturēšana un atsākšana). Pilnīga Mass Storage Class integrācija Micrium OS. File Sistēmas modulis Izstrādāts ar CMSIS-RTOS2 abstrakcijas slāni, lai tas varētu darboties ar dažādām operētājsistēmām. Silicon Labs GSDK ir aprīkots ar FreeRTOS un Micrium OS portiem.

Autortiesības © 2025 Silicon Laboratories. Visas tiesības aizsargātas.

7/174

Beigāsview
Beigāsview

USB ierīces konfigurācija

Šajā sadaļā ir aprakstīts, kā konfigurēt Silicon Labs USB ierīci. Ir trīs konfigurācijas parametru grupas:
USB ierīces pamatkonfigurācija USB ierīces informācijas konfigurācija USB ierīces aparatūras konfigurācija
USB ierīces kodola konfigurācija
Silicon Labs USB ierīci var konfigurēt kompilēšanas laikā, izmantojot #define kopu, kas atrodas sl_usbd_core_config.h failā. fileUSB ierīce, kad vien iespējams, izmanto #defines, jo tās ļauj kompilēšanas laikā mērogot koda un datu izmērus, pamatojoties uz iespējotajām funkcijām. Tas ļauj pielāgot Silicon Labs USB ierīces tikai lasāmās atmiņas (ROM) un brīvpiekļuves atmiņas (RAM) aizņemto daļu atbilstoši jūsu lietojumprogrammas prasībām.
Ieteicams: Sāciet konfigurācijas procesu ar noklusējuma vērtībām (izceltas treknrakstā).
Tālāk norādītās sadaļas ir sakārtotas atbilstoši veidnes konfigurācijas secībai. file, sl_usbd_core_config.h.
Galvenās konfigurācijas klases konfigurācija
Galvenā konfigurācija
Tabula — USB ierīces pamatkonfigurācijas konstantes

Konstantes apraksts

Noklusējuma vērtība

SL_USBD_TA SK_STACK_ IZMĒRS

Konfigurē USBD pamatuzdevuma kaudzes lielumu baitos

4096

SL_USBD_TA SK_PRIORIT Y

Konfigurē USBD galvenā uzdevuma prioritāti. Šī ir CMSIS-RTOS2 prioritāte.

Augsta prioritāte

SL_USBD_A UTO_START _USB_IEVĒRE E

Ja šī opcija ir iespējota, USB ierīce tiks automātiski palaista, tiklīdz tiks palaists kodols un šis 1 USBD kodola uzdevums tiks ieplānots pirmo reizi. Ja šī opcija ir atspējota, lietojumprogrammai būs jāizsauc sl_usbd_core_start_device(), kad USB resursdators to varēs noteikt.

SL_USBD_C Kopējais konfigurāciju skaits, kas tiks pievienotas, izmantojot sl_usbd_add_configuration()

1

ONFIGURATI funkcija.

ON_QUANTI

TY

Autortiesības © 2025 Silicon Laboratories. Visas tiesības aizsargātas.

8/174

Beigāsview

Pastāvīgi
SL_USBD _INTERF ACE_QU ANTITY
SL_USBD _ALT_INT ERFACE_ KVANTI
TY
SL_USBD _INTERF ACE_GR
OUP_QU
ANTITY
SL_USBD _APRAKSTĪJUMS
PTOR_Q
UANTITĀTE
SL_USBD _STRING _QUANTI
TY
SL_USBD _OPEN_E NDPOIN TS_QUA NTITY

Apraksts Kopējais USB saskarņu skaits, kas jāpievieno visām jūsu konfigurācijām. Tas lielā mērā ir atkarīgs no izmantotās(-ajām) klases(-ām). Lai iegūtu plašāku informāciju par to, cik saskarņu nepieciešams klases instancei, skatiet savas(-u) klases(-u) sadaļu “Resursu vajadzības no kodola”.
Kopējais USB alternatīvo saskarņu skaits, kas jāpievieno visām jūsu konfigurācijām. Tas lielā mērā ir atkarīgs no izmantotās(-ajām) klases(-ām). Šai vērtībai vienmēr jābūt vienādai ar vai lielākai par SL_USBD_INTERFACE_QUANTITY. Lai iegūtu papildinformāciju par to, cik alternatīvo saskarņu nepieciešams klases instancei, skatiet savas(-u) klases(-u) sadaļu “Resursu vajadzības no pamatsistēmas”.
Kopējais USB saskarnes grupu skaits, kas tiks pievienotas visām jūsu konfigurācijām. Tas lielā mērā ir atkarīgs no izmantotās(-ajām) klases(-ām). Lai iegūtu plašāku informāciju par to, cik saskarnes grupām nepieciešams klases instance, skatiet savas(-u) klases(-u) sadaļu “Resursu vajadzības no pamatsistēmas”.
Kopējais galapunktu deskriptoru skaits, kas tiks pievienots visām jūsu konfigurācijām. Tas lielā mērā ir atkarīgs no izmantotās(-ajām) klases(-ām). Lai iegūtu papildinformāciju par to, cik galapunktu deskriptoru nepieciešams klases instancei, skatiet sadaļu “Galapunktu skaits” savas(-u) klases(-u) sadaļā “Resursu vajadzības no kodola”. Ņemiet vērā, ka vadības galapunkti šeit nav jāņem vērā. Kopējais USB virkņu skaits. Iestatot daudzumu uz nulli, šī funkcija tiks atspējota. Atspējojot šo funkciju, ierīce nesaglabās nevienu no lietojumprogrammas nodoto USB apraksta virkni. Tas nozīmē, ka resursdators nevarēs izgūt apraksta virknes (piemēram, ražotāju un produkta nosaukumu). Kopējais atvērto galapunktu skaits katrā konfigurācijā. Ierīcei vadības pārsūtīšanai ir nepieciešami vismaz divi atvērti galapunkti, taču jums ir jāpievieno arī izmantotās(-o) klases(-u) galapunkti. Lai iegūtu papildinformāciju par to, cik atvērto galapunktu nepieciešams klases instancei, skatiet sadaļu “Galapunktu skaits” savas(-u) klases(-u) sadaļā “Resursu vajadzības no kodola”.

Noklusējuma vērtība
10 10
2
20 30 20

Nodarbību konfigurācija
Klasēm ir noteiktas kompilēšanas laika konfigurācijas. Plašāku informāciju skatiet sadaļā USB ierīču klases.
USB ierīces informācijas konfigurācija

Sl_usbd_device_config.h konfigurācija file pārgrupē kompilēšanas laika #define-s, lai iestatītu pamatinformāciju par jūsu ierīci, piemēram, pārdevēja/produkta ID, ierīces virknes utt. Zemāk esošajā tabulā ir aprakstīta katra šajā konfigurācijā pieejamā informācijas konfigurācijas definīcija. file.

Tabula — USB ierīces informācijas konfigurācijas definīcijas

Pastāvīgi
SL_USBD_IERĪCES E_VENDOR_ID
SL_USBD_IERĪCES E_PRODUCT_ID

Apraksts Jūsu pārdevēja identifikācijas numurs, ko sniedzis USB Implementers Forum. Lai iegūtu plašāku informāciju par to, kā iegūt pārdevēja ID, skatiet vietni http://www.usb.org/developers/vendor/. Jūsu produkta identifikācijas numurs.

Autortiesības © 2025 Silicon Laboratories. Visas tiesības aizsargātas.

9/174

Beigāsview

Pastāvīgi

Apraksts

SL_USBD_DEVICE_RELEASE Jūsu ierīces laidiena numurs. _NUMBER

SL_USBD_DEVICE_MANUFA Virkne, kas apraksta jūsu ierīces ražotāju. Šī konfigurācija tiek ignorēta, ja

CTURER_STRING

Konfigurācija SL_USBD_STRING_QUANTITY ir iestatīta uz 0.

SL_USBD_DEVICE_PRODUC Virkne, kas apraksta jūsu produktu. Šī konfigurācija tiek ignorēta, veicot konfigurāciju.

T_STRING

SL_USBD_STRING_QUANTITY ir iestatīts uz 0.

SL_USBD_DEVICE_SERIAL_N Virkne, kas satur jūsu ierīces sērijas numuru. Šī konfigurācija tiek ignorēta, ja

NUMBRE_STRING

Konfigurācija SL_USBD_STRING_QUANTITY ir iestatīta uz 0.

SL_USBD_DEVICE_LANGUA Jūsu ierīces virkņu valodas identifikācijas numurs. Iespējamās vērtības ir:
GE_ID

– SL_USBD_LANG_ID_ARABIC_SAUDI_ARABIA

– SL_USBD_LANG_ID_CHINESE_TAIWAN

– SL_USBD_LANG_ID_ANGĻU_VALODA_US

– SL_USBD_LANG_ID_ANGLIJAS_VALODA

– SL_USBD_LANG_ID_FRENCH

– SL_USBD_LANG_ID_VĀCU

– SL_USBD_LANG_ID_GRIEĶU

– SL_USBD_LANG_ID_ITALIAN

– SL_USBD_LANG_ID_PORTUGĀĻU VALODĀ

– SL_USBD_LANG_ID_SANSKRIT

Šī konfigurācija tiek ignorēta, ja konfigurācija SL_USBD_STRING_QUANTITY ir iestatīta uz 0.

USB ierīces aparatūras konfigurācija

Atkarībā no izmantotās Silicon Labs ierīces, iespējams, jums būs GPIO pieslēgvieta un ports, lai konfigurētu USB VBUS Sense signālu. Konfigurācijas definīcijas ir sl_usbd_hardware_config.h galvenē. file.

Pastāvīgi
SL_USBD_DRIVER_VBUS_SENSE_PORT SL_USBD_DRIVER_VBUS_SENSE_PIN

Apraksts
GPIO ports USB VBUS Sense signālam jūsu platē. GPIO pieslēgvieta USB VBUS Sense signālam jūsu platē.

Autortiesības © 2025 Silicon Laboratories. Visas tiesības aizsargātas.

10/174

Beigāsview
Beigāsview
USB ierīces programmēšanas rokasgrāmata
Šajā sadaļā ir paskaidrots, kā lietot USB ierīces moduli.
USB ierīces moduļa sākotnējā iestatīšana
Šajā sadaļā ir aprakstītas pamata darbības, kas nepieciešamas, lai inicializētu USB ierīces moduli un pievienotu, sagatavotu un palaistu ierīci. USB ierīces moduļa inicializēšana USB ierīces kodola inicializēšana aCl servera(-u) inicializēšana USB ierīces pievienošana USB ierīces izveide Konfigurācijas(-u) pievienošana USB funkcijas(-u) pievienošana USB ierīces palaišana
Notikumu āķa funkcijas
USB ierīces moduļa inicializācija
USB ierīces kodola inicializācija
Sāciet ar B ierīces moduļa kodola inicializēšanu, izsaucot funkciju sl_usbd_core_init(). Zemāk esošajā piemērā ir parādīta sl_usbd_core_init() izsaukšana.
Example – sl_usbd_core_init() izsaukšana
sl_status_t status; status = sl_usbd_core_init(); if (status ! SL_STATUS_OK) { /* Radās kļūda. Šeit jāpievieno kļūdu apstrāde. */
}
Klases(-u) inicializācija
Pēc USB ierīces moduļa kodola inicializācijas ir jāinicializē katra klase, kuru plānojat izmantot. Plašāku informāciju skatiet savas(-o) ACL klases(-u) sadaļā “Programmēšanas rokasgrāmata”.
USB ierīces izveide
Konfigurācijas(-u) pievienošana
Pēc ierīces veiksmīgas inicializācijas varat sākt tai pievienot USB funkcijas, sākot ar jaunu konfigurāciju. Ierīcei ir jābūt vismaz vienai konfigurācijai. Lai pievienotu konfigurāciju(-as), izsauciet funkciju sl_usbd_core_dd_configuration(). Šī funkcija ir jāizsauc katrai konfigurācijai, kuru vēlaties pievienot. Piemēram,ampZemāk ir parādīts, kā pievienot pilna ātruma režīmu.
Example – Konfigurācijas(-u) pievienošana ierīcei

Autortiesības © 2025 Silicon Laboratories. Visas tiesības aizsargātas.

11/174

Beigāsview

sl_status_t statuss; uint8_t config_nbr_fs;

/* Pilna ātruma konfigurācijas pievienošana ierīcei. */

status = sl_usbd_core_add_configuration(0,

/* Konfigurācijai nav īpašu atribūtu. */

100u,

/* Maksimālais enerģijas patēriņš: 100 mA.

*/

SL_USBD_DEVICE_SPEED_FULL,

/* Pilna ātruma konfigurācija.

*/

“Konfigurēt pievienot eksemplāru”amppilna ātruma konfigurācija”,

&config_nbr_fs);

ja (statuss ! SL_STATUS_OK) {

/* Radās kļūda. Šeit jāpievieno kļūdu apstrāde. */

}

USB funkciju pievienošana
Pēc tam, kad ierīcei ir veiksmīgi pievienota vismaz viena konfigurācija, varat pievienot saskarnes un galapunktus. Katrai USB klasei ir savas vajadzības attiecībā uz saskarnes un galapunktu veidu, daudzumu un citiem parametriem. Silicon Labs USB ierīce pievieno saskarnes un galapunktus piedāvātajās klasēs.
No savas lietojumprogrammas varat izveidot USB klases instanci un pievienot to konfigurācijai. Plašāku informāciju par USB ierīču klases instanču koncepciju skatiet sadaļā USB ierīču klases. Ņemiet vērā, ka varat izveidot instanci un pievienot konfigurācijai daudzas dažādas klases instances, lai izveidotu daudzfunkcionālu (saliktu) ierīci.
BijušaisampZemāk esošajā attēlā parādīts, kā izveidot klases instanci un pievienot to konfigurācijai.
Example – Klases instances pievienošana ierīcei

sl_status_t statuss; uint8_t klases_nbr;
/* Izveidojiet vēlamās klases instanci.*/ /* Ņemiet vērā, ka atkarībā no klases šai funkcijai var būt vairāk argumentu. */ status = sl_usbd_ _create_instance(&class_nbr); if (status ! SL_STATUS_OK) { /* Radās kļūda. Šeit jāpievieno kļūdu apstrāde. */ }
/* Pievienot klases instanci pilna ātruma konfigurācijai. */ status = sl_usbd_ _add_to_configuration(class_nbr, /* klases numurs, ko atgriež sl_usbd_ _izveidot_instance. */
config_nbr_fs); /* Sl_usbd_core_add_configuration() atgrieztais konfigurācijas numurs. */ if (status ! SL_STATUS_OK) { /* Radās kļūda. Šeit jāpievieno kļūdu apstrāde. */ }
USB ierīces palaišana
Pēc noklusējuma ierīce tiks automātiski palaista, veicot USB ierīces kodola uzdevumu pēc ierīces inicializācijas pabeigšanas un kodola palaišanas. Lai kontrolētu, kad ierīce tiek palaista un kļūst redzama USB resursdatoram, izmantojiet konfigurāciju define SL_USBD_AUTO_START_USB_DEVICE, lai atspējotu automātiskās palaišanas funkciju. Ja šī funkcija ir atspējota, pēc ierīces izveides/sagatavošanas varat to palaist un padarīt redzamu USB resursdatoram, izsaucot funkciju sl_usbd_core_start_device().
BijušaisampZemāk ir parādīts, kā startēt ierīci, izmantojot funkciju sl_usbd_core_start_device().
Example – Ierīces palaišana

Autortiesības © 2025 Silicon Laboratories. Visas tiesības aizsargātas.

12/174

Beigāsview

sl_status_t statuss;
status = sl_usbd_core_start_device(); if (status ! SL_STATUS_OK) { /* Radās kļūda. Šeit jāpievieno kļūdu apstrāde. */ }

Notikumu āķa funkcijas
USB ierīces pamatmodulis piedāvā divas vājas pieslēgvietas funkcijas, kuras varat pārdefinēt savā lietojumprogrammā. To mērķis ir paziņot par kopnes un konfigurācijas notikumiem.
Tabula — USB pasākumu āķa funkcijas

Pasākums

Apraksts

Autobuss

Izsaucas, kad notiek USB kopnes notikums

Konfigurācija tiek izsaukta, kad notiek USB konfigurācijas notikums

Funkcijas paraksts
void sl_usbd_on_bus_event(sl_usbd_bus_event_t notikums); void sl_usbd_on_config_event(sl_usbd_config_event_t notikums, uint8_t config_nbr);

Example – Notikumu āķa funkcijas

void sl_usbd_on_bus_event(sl_usbd_bus_event_t event) { slēdzis (event) { gadījums SL_USBD_EVENT_BUS_CONNECT:}
// izsaucas, kad USB kabelis tiek ievietots resursdatora kontrollera pārtraukumā;
gadījums SL_USBD_EVENT_BUS_DISCONNECT: // tiek izsaukts, kad USB kabelis tiek atvienots no resursdatora kontrollera pārtraukuma;
case SL_USBD_EVENT_BUS_RESET: // izsaukts, kad resursdators nosūta atiestatīšanas komandu break;
case SL_USBD_EVENT_BUS_SUSPEND: // izsaukts, kad resursdators nosūta apturēšanas komandu break;
case SL_USBD_EVENT_BUS_RESUME: // tiek izsaukts, kad resursdators nosūta modināšanas komandu break;
noklusējums: pārtraukums; } }
void sl_usbd_on_config_event(sl_usbd_config_event_t notikums, uint8_t config_nbr) { slēdzis (notikums) { gadījums SL_USBD_EVENT_CONFIG_SET:}
// izsaukts, kad resursdators iestata konfigurācijas pārtraukumu;
case SL_USBD_EVENT_CONFIG_UNSET: // izsaukts, ja konfigurācija nav iestatīta break;
noklusējums: pārtraukums; } }

Autortiesības © 2025 Silicon Laboratories. Visas tiesības aizsargātas.

13/174

Beigāsview

Autortiesības © 2025 Silicon Laboratories. Visas tiesības aizsargātas.

14/174

Beigāsview
Beigāsview

USB ierīču klases

Silicon Labs USB ierīcē pieejamajām USB klasēm ir dažas kopīgas īpašības. Šajā sadaļā ir paskaidrotas šīs īpašības un to mijiedarbība ar kodolu.
Lai iegūtu plašāku informāciju par konkrētu klasi, skatiet tālāk norādītās saites:
CDC ACM klase HID klase MSC SCSI klase Pārdevēja klase
Par klases instancēm
USB klases, kas pieejamas USB ierīcē, īsteno klases instanču koncepciju. Klases instance attēlo vienu funkciju ierīcē. Funkciju var aprakstīt ar vienu saskarni vai saskarņu grupu, un tā pieder noteiktai klasei.
Katrai USB klases implementācijai ir dažas kopīgas konfigurācijas un funkcijas, kuru pamatā ir klases instances koncepcija. Kopīgās konfigurācijas un funkcijas ir parādītas tabulā zemāk. Kolonnas nosaukumā “Konstantes vai funkcija” vietturi XXXX var aizstāt ar klases nosaukumu: CDC, HID, MSC, CDC_ACM vai VENDOR (funkciju nosaukumu gadījumā — piegādātājs).
Tabula — konstantes un funkcijas, kas saistītas ar vairāku klases instanču koncepciju

Konstante vai funkcija
SL_USBD_XXXX_CL INSTRUKCIJU DAUDZUMS
SL_USBD_XXXX_KONFIGURĀCIJAS_DAUDZUMS
sl_usb d _XXXX_create _instance ()
sl_usbd_XXXX_add_to_conf konfigurācija()

Apraksts
Konfigurē maksimālo klases instanču skaitu.
Konfigurē maksimālo konfigurāciju skaitu. Klases inicializācijas laikā izveidotais klases eksemplārs tiks pievienots vienai vai vairākām konfigurācijām. Izveido jaunu klases eksemplāru.
Pievieno esošu klases instanci norādītajai ierīces konfigurācijai.

Koda ieviešanas ziņā klase deklarēs lokālu globālu mainīgo, kas satur klases vadības struktūru. Šī klases vadības struktūra ir saistīta ar vienu klases instanci un saturēs specifisku informāciju klases instances pārvaldībai.
Turpmākajos attēlos ir parādīti vairāki gadījumu scenāriji. Katrā attēlā ir iekļauts koda piemērs.ample, kas atbilst gadījuma scenārijam.
Attēls — Vairāki klases gadījumi — FS ierīce (1 konfigurācija ar 1 saskarni) attēlo tipisku USB ierīci. Ierīce ir pilna ātruma (FS) ierīce un satur vienu konfigurāciju. Ierīces funkciju apraksta viena saskarne, kas sastāv no datu komunikācijas galapunktu pāra. Tiek izveidots viens klases gadījums, kas ļaus pārvaldīt visu saskarni ar saistīto galapunktu.
Attēls — vairākas klases instances — FS 1. ierīces konfigurācija ar 1 saskarni)

Autortiesības © 2025 Silicon Laboratories. Visas tiesības aizsargātas.

15/174

Beigāsview

Kods, kas atbilst attēlam “Vairāki klases gadījumi – FS ierīce (1 konfigurācija ar 1 saskarni”), ir parādīts piemērā.ample zemāk.
Example – Vairāki klases gadījumi – FS 1. ierīces konfigurācija ar 1 saskarni)

sl_status_t statuss; uint8_t klase_0;

void app_usbd_XXXX_enable(uint8_t class_nbr) { /* Apstrādāt klases iespējošanas notikumu. */ }

void app_usbd_XXXX_disable(uint8_t class_nbr) { /* Apstrādāt klases atspējošanas notikumu. */ }

sl_usbd_XXXX_callbacks_t klases_atzvanīšanas = {

(1)

.enable = lietotne_usbd_XXXX_iespējot,

.disable = lietotne_usbd_XXXX_atspējot

};

statuss = sl_usbd_XXXX_init();

(2)

ja (statuss ! SL_STATUS_OK) {

/* $$$$ Novērst kļūdu. */

}

status = sl_usbd_XXXX_create_instance(&class_callbacks,)

(3)

&klase_0);

ja (statuss ! SL_STATUS_OK) {

/* $$$$ Novērst kļūdu. */

}

status = sl_usbd_XXXX_add_to_configuration(klase_0, konfigurācija_0);

(4)

ja (statuss ! SL_STATUS_OK) {

/* $$$$ Novērst kļūdu. */

}

(1) Katra klase piedāvā atzvanīšanas funkciju kopu ierīču savienošanas/atvienošanas notikumiem un klasei specifiskiem notikumiem. Atzvanīšanas struktūras objekts tiek nodots kā arguments, veidojot klases instanci ar sl_usbd_XXXX_create_instance()
funkciju.
(1) Inicializējiet klasi. Tiks inicializēti visi iekšējie mainīgie, struktūras un klases porti. Ņemiet vērā, ka dažu klašu funkcija Init() var pieņemt citus argumentus.

Autortiesības © 2025 Silicon Laboratories. Visas tiesības aizsargātas.

16/174

Beigāsview
(2) Izveidojiet klases instanci, kas ir class_0. Funkcija sl_usbd_XXXX_create_instance() piešķir klases vadības struktūru, kas saistīta ar class_0. Atkarībā no klases, sl_usbd_XXXX_create_instance() var būt papildu parametri papildus klases numuram, kas attēlo klasei specifisku informāciju, kas tiek glabāta klases vadības struktūrā. aaa (3) Pievienojiet klases instanci class_0 norādītajam konfigurācijas numuram config_0. sl_usbd_XXXX_add_to_configuration() izveidos saskarni 0 un ar to saistītos IN un OUT galapunktus. Rezultātā klases instance ietver saskarni 0 un tās galapunktus. Jebkura saziņa, kas tiek veikta saskarnē 0, izmantos klases instances numuru class_0. Attēls. Vairākas klases instances. FS ierīce (2 konfigurācijas un vairākas saskarnes) attēlo sarežģītāku piemēru.ampPiemēram, pilna ātruma ierīce sastāv no divām konfigurācijām. Ierīcei ir divas funkcijas, kas pieder pie vienas klases, bet katru funkciju apraksta divas saskarnes un tai ir divvirzienu galapunktu pāris. Šajā piemērāampPiemēram, tiek izveidoti divi klases eksemplāri. Katrs klases eksemplārs ir saistīts ar saskarņu grupu, atšķirībā no Attēls — vairākas klases instances — FS ierīce (1 konfigurācija ar 1 saskarni) un Attēls — vairākas klases instances — FS ierīce (2 konfigurācijas un vairākas saskarnes), kur klases eksemplārs bija saistīts ar vienu saskarni.
Attēls — vairākas klases instances — FS 2. ierīces konfigurācijas un vairākas saskarnes)

Kods, kas atbilst attēlam “Vairāki klases gadījumi – FS ierīce (2 konfigurācijas un vairākas saskarnes”), ir parādīts piemērā.ampzemāk. Kļūdu apstrāde ir izlaista skaidrības labad.
Example – Vairāki klases gadījumi – FS 2. ierīces konfigurācijas un vairākas saskarnes)

Autortiesības © 2025 Silicon Laboratories. Visas tiesības aizsargātas.

17/174

Beigāsview

sl_status_t statuss; uint8_t klase_0; uint8_t klase_1;
statuss = sl_usbd_XXXX_init();
statuss = sl_usbd_XXXX_create_instance(&klase_0); statuss = sl_usbd_XXXX_create_instance(&klase_1);
statuss = sl_usbd_XXXX_add_to_configuration(klase_0, cfg_0); statuss = sl_usbd_XXXX_add_to_configuration(klase_1, cfg_0);
statuss = sl_usbd_XXXX_add_to_configuration(klase_0, cfg_1); statuss = sl_usbd_XXXX_add_to_configuration(klase_1, cfg_1);

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

(1) Inicializējiet klasi. Tiks inicializēti visi iekšējie mainīgie, struktūras un klases porti.
(2) Izveidojiet klases instanci class_0. Funkcija sl_usbd_XXXX_create_instance() piešķir klases vadības struktūru, kas saistīta ar class_0.
(3) Izveidojiet klases instanci class_1. Funkcija sl_usbd_XXXX_create_instance() piešķir citu klases vadības struktūru, kas saistīta ar class_1.
(4) Pievienojiet klases instanci class_0 konfigurācijai cfg_0. Funkcija sl_usbd_XXXX_add_to_configuration() izveidos saskarni 0, saskarni 1, alternatīvas saskarnes un saistītos IN un OUT galapunktus. Klases instances numurs class_0 tiks izmantots jebkādai datu komunikācijai saskarnē 0 vai saskarnē 1.
(5) Pievienojiet klases instanci class_1 konfigurācijai cfg_0. Funkcija sl_usbd_XXXX_add_to_configuration() izveidos saskarni 2, saskarni 3 un ar tām saistītos IN un OUT galapunktus. Klases instances numurs class_1 tiks izmantots jebkādai datu komunikācijai saskarnē 2 vai saskarnē 3.
(6) Pievienojiet tās pašas klases instances, class_0 un class_1, otrai konfigurācijai, cfg_1.
Katra klase definē sl_usbd_XXXX_callbacks_t tipa struktūru. Tās mērķis ir sniegt katrai klasei atzvanīšanas funkciju kopu, kas jāizsauc, kad notiek notikums. Katrā klasē ir divas atzvanīšanas funkcijas. Tās ir parādītas tabulā zemāk.
Tabula — bieži sastopamās klases atzvanīšanas funkcijas

Lauki Apraksts .enable Tiek izsaukts, ja USB klases instance ir veiksmīgi iespējota. .disable Tiek izsaukts, ja USB klases instance ir atspējota.

Funkcijas paraksts void app_usbd_XXXX_enable(uint8_t class_nbr); void app_usbd_XXXX_disable(uint8_t class_nbr);

Autortiesības © 2025 Silicon Laboratories. Visas tiesības aizsargātas.

18/174

Beigāsview
Beigāsview
USB ierīces CDC ACM klase
USB ierīce CDC bāzes klase Overview USB ierīces CDC ACM klases resursu vajadzības no pamata USB ierīces CDC ACM apakšklasesview USB ierīces CDC ACM klases konfigurācija USB ierīces CDC ACM klases programmēšanas rokasgrāmata
Šajā sadaļā ir aprakstīta sakaru ierīču klases (CDC) klase un ar to saistītā CDC apakšklase, ko atbalsta Silicon Labs USB ierīču komplekts. Silicon Labs USB ierīce pašlaik atbalsta abstraktās vadības modeļa (ACM) apakšklasi, ko parasti izmanto seriālajai emulācijai.
CDC ietver dažādas telekomunikāciju un tīkla ierīces. Telekomunikāciju ierīces ietver analogos modemus, analogos un digitālos telefonus, ISDN termināļu adapterus utt. Piemēram,ampTīkla ierīces ietver ADSL un kabeļu modemus, Ethernet adapterus un centrmezglus. CDC definē sistēmu, lai iekapsulētu esošos sakaru pakalpojumu standartus, piemēram, V.250 (modemiem telefona tīklos) un Ethernet (lokālā tīkla ierīcēm), izmantojot USB savienojumu. Sakaru ierīce ir atbildīga par ierīču pārvaldību, zvanu pārvaldību, ja nepieciešams, un datu pārraidi.
CDC definē septiņas galvenās ierīču grupas. Katra grupa pieder pie komunikācijas modeļa, kas var ietvert vairākas apakšklases. Katrai ierīču grupai ir savs specifikācijas dokuments papildus CDC pamatklasei. Šīs septiņas grupas ir:
Publiskā komutētā telefonu tīkla (PSTN) ierīces, tostarp balss joslas modemi, telefoni un seriālās emulācijas ierīces. Integrēto pakalpojumu ciparu tīkla (ISDN) ierīces, tostarp termināļu adapteri un telefoni. Ethernet vadības modeļa (ECM) ierīces, tostarp ierīces, kas atbalsta IEEE 802 saimi (piemēram, kabeļu un ADSL modemi, WiFi adapteri). Asinhronā pārsūtīšanas režīma (ATM) ierīces, tostarp ADSL modemi un citas ierīces, kas savienotas ar ATM tīkliem (darbstacijas, maršrutētāji, LAN komutatori). Bezvadu mobilo sakaru (WMC) ierīces, tostarp daudzfunkcionālas sakaru ierīces, ko izmanto balss un datu sakaru pārvaldībai. Ethernet emulācijas modeļa (EEM) ierīces, kas apmainās ar Ethernet kadrētiem datiem. Tīkla vadības modeļa (NCM) ierīces, tostarp ātrgaitas tīkla ierīces (ātrgaitas pakešu piekļuves modemi, līnijas termināļu iekārtas).
CDC un ar to saistītā apakšklases ieviešana atbilst šādām specifikācijām:
Universālā seriālā kopne, klašu definīcijas sakaru ierīcēm, 1.2. pārskatītais izdevums, 2010. gada 3. novembris. Universālā seriālā kopne, sakari, PSTN ierīču apakšklase, 1.2. pārskatītais izdevums, 2007. gada 9. februāris.
USB ierīce CDC bāzes klase Overview
CDC ierīce sastāv no šādām saskarnēm, lai nodrošinātu komunikācijas iespējas:
Komunikāciju klases saskarne (CCI) ir atbildīga par ierīču pārvaldību un pēc izvēles arī zvanu pārvaldību.
Ierīču pārvaldība nodrošina ierīces vispārīgo konfigurāciju un vadību, kā arī notikumu paziņošanu resursdatoram. Zvanu pārvaldība nodrošina zvanu izveidi un pārtraukšanu. Zvanu pārvaldību var multipleksēt, izmantojot DCI. CCI ir obligāts visām CDC ierīcēm. Tas identificē CDC funkciju, norādot CDC ierīces atbalstīto komunikācijas modeli. Saskarne(-es) aiz CCI var būt jebkura definēta USB klases saskarne, piemēram, audio vai pārdevēja specifiska saskarne. Pārdevēja specifisko saskarni īpaši attēlo DCI.
Datu klases saskarne (DCI) ir atbildīga par datu pārraidi. Pārraidītie un/vai saņemtie dati neatbilst noteiktam
formāts. Dati var būt neapstrādāti dati no sakaru līnijas, dati, kas atbilst patentētam formātam utt. Visas DCI, kas seko CCI, var uzskatīt par pakārtotām saskarnēm.
CDC ierīcei ir jābūt vismaz vienam CCI un nullei vai vairākiem DCI. Viens CCI un jebkurš pakārtots DCI kopā nodrošina resursdatoram funkciju. Šo iespēju sauc arī par funkciju. CDC kombinētajā ierīcē var būt vairāki

Autortiesības © 2025 Silicon Laboratories. Visas tiesības aizsargātas.

19/174

Beigāsview
funkcijas. Tādēļ ierīce sastāvētu no vairākiem CCI un DCI komplektiem, kā parādīts attēlā – CDC kompozītierīce.
Attēls – CDC kompozītmateriāla ierīce

CDC ierīce, visticamāk, izmantos šādu galapunktu kombināciju:
Vadības ieejas un izejas galapunktu pāris, ko sauc par noklusējuma galapunktu. Papildu masveida vai pārtraukuma ieejas galapunkts. Masveida vai izohronu ieejas un izejas galapunktu pāris. Ņemiet vērā, ka Silicon Labs USB ierīču kaudze pašlaik neatbalsta izohronus galapunktus.
Zemāk esošajā tabulā ir parādīts dažādu galapunktu lietojums un tas, kurā CDC saskarnē tie tiek izmantoti.
Tabula — CDC galapunkta lietojums

Galapunkts
Vadība IN
Vadība OUT
Pārtraukt vai vairumā IN Lielapjoma vai izohrons IN Lielapjoma vai izohrons
ĀRĀ

Virziens
No ierīces uz saimnieku
No resursdatora uz ierīci
No ierīces uz saimnieku
No ierīces uz saimnieku
No resursdatora uz ierīci

Interfeisa lietošana

CCI

Standarta pieprasījumi uzskaitīšanai, klases specifiskiem pieprasījumiem, ierīcei

pārvaldība un pēc izvēles zvanu pārvaldība.

CCI

Standarta pieprasījumi uzskaitīšanai, klases specifiskiem pieprasījumiem, ierīcei

pārvaldība un pēc izvēles zvanu pārvaldība.

CCI

Notikumu paziņojumi, piemēram, zvana noteikšana, seriālās līnijas statuss, tīkla statuss.

DCI

Neapstrādātu vai formatētu datu komunikācija.

DCI

Neapstrādātu vai formatētu datu komunikācija.

Lielākā daļa sakaru ierīču izmanto pārtraukuma galapunktu, lai paziņotu par notikumiem resursdatoram. Izohronos galapunktus nevajadzētu izmantot datu pārraidei, ja patentēts protokols USB protokola kļūdu gadījumā balstās uz datu atkārtotu pārraidi. Izohronā saziņa var dabiski zaudēt datus, jo tai nav atkārtotas mēģināšanas mehānismu.
Septiņi galvenie komunikācijas modeļi aptver vairākas apakšklases. Apakšklase apraksta veidu, kā ierīcei jāizmanto CCI, lai apstrādātu ierīču pārvaldību un zvanu pārvaldību. Zemāk esošajā tabulā ir parādītas visas iespējamās apakšklases un komunikācijas modelis, pie kura tās pieder.
Tabula — CDC apakšklases

Apakšklase
Tiešās līnijas vadības modelis Abstrakts vadības modelis

Komunikācijas modelis
PSTN
PSTN

ExampIerīču saraksts, kas izmanto šo apakšklasi
Modema ierīces, kuras tieši kontrolē USB resursdators
Seriālās emulācijas ierīces, modema ierīces, ko kontrolē, izmantojot seriālo komandu kopu

Autortiesības © 2025 Silicon Laboratories. Visas tiesības aizsargātas.

20/174

Beigāsview

Apakšklase

Komunikācijas modelis

ExampIerīču saraksts, kas izmanto šo apakšklasi

Telefona vadības modelis

PSTN

Daudzkanālu vadības ISDN modelis

CAPI vadības modelis ISDN

Ethernet tīkla ECM vadības modelis

Bankomātu tīklošana

bankomāts

Kontroles modelis

Bezvadu klausules vadības modelis

WMC

Ierīču pārvaldība WMC

Mobilā tiešās līnijas modelis

WMC

OBEX

WMC

Ethernet emulācijas EEM modelis

Tīkla vadības modelis

ZMP

Balss telefonijas ierīces
Pamata tarifa termināļu adapteri, primārā tarifa termināļu adapteri, telefoni
Pamata ātruma termināļu adapteri, primārā ātruma termināļu adapteri, telefoni, DOC-SIS kabeļu modemi, ADSL modemi, kas atbalsta PPPoE emulāciju, Wi-Fi adapteri (IEEE 802.11 saime), IEEE 802.3 adapteri, ADSL modemi
Mobilo termināliekārtu savienojums ar bezvadu ierīcēm
Mobilo termināliekārtu savienošana ar bezvadu ierīcēm Mobilo termināliekārtu savienošana ar bezvadu ierīcēm
Mobilo termināliekārtu savienojums ar bezvadu ierīcēm Ierīces, kas izmanto Ethernet kadrus kā nākamo transporta slāni. Nav paredzēts maršrutēšanai un interneta savienojamības ierīcēm IEEE 802.3 adapteri, kas tīklā nodrošina ātrgaitas datu joslas platumu.

USB ierīces CDC ACM klases resursu vajadzības no pamatsistēmas

Katru reizi, kad USB konfigurācijai pievienojat CDC ACM klases instanci, izmantojot funkcijas sl_usbd_cdc_acm_add_to_configuration() izsaukumu, no kodola tiks piešķirti šādi resursi.

Resurss
Saskarnes Alternatīvās saskarnes Galapunkti Saskarņu grupas

Daudzums
2 2 3 1

Ņemiet vērā, ka šie skaitļi ir norādīti katrai konfigurācijai. Iestatot SL_USBD_INTERFACE_QUANTITY, SL_USBD_ALT_INTERFACE_QUANTITY, SL_USBD_INTERFACE_GROUP_QUANTITY un SL_USBD_DESCRIPTOR_QUANTITY konfigurācijas vērtības, neaizmirstiet ņemt vērā, cik konfigurāciju klase tiks pievienota. Attiecībā uz SL_USBD_OPEN_ENDPOINTS_QUANTITY konfigurācijas vērtību, tā kā galapunkti tiek atvērti tikai tad, kad resursdators iestata konfigurāciju, jums jāņem vērā tikai nepieciešamo galapunktu skaits klases instancei.
USB ierīces CDC ACM apakšklase pāriview

CDC bāzes klase sastāv no sakaru klases saskarnes (CCI) un datu klases saskarnes (DCI), kas ir detalizēti aplūkota USB ierīces CDC bāzes klases virsrakstā.view Šajā sadaļā ir aplūkots ACM tipa CCI. Tas sastāv no noklusējuma galapunkta pārvaldības elementam un pārtraukuma galapunkta paziņojumu elementam. Nenoteiktu datu pārsūtīšanai pa DCI tiek izmantots masveida galapunktu pāris.
ACM apakšklasi izmanto divu veidu sakaru ierīces:
Ierīces, kas atbalsta AT komandas (piemēram, balss joslas modemi). Seriālās emulācijas ierīces, ko sauc arī par virtuālās COM porta ierīcēm.
ACM apakšklasei ir vairāki apakšklasei specifiski pieprasījumi. Tie ļauj kontrolēt un konfigurēt ierīci. Pilns visu ACM pieprasījumu saraksts un apraksts ir atrodams specifikācijā.

Autortiesības © 2025 Silicon Laboratories. Visas tiesības aizsargātas.

21/174

Beigāsview PSTN ierīču apakšklase, 1.2. revīzija, 2007. gada 9. februāris =, 6.2.2. sadaļa.
No šī saraksta Silicon Labs9 ACM apakšklase atbalsta sekojošo:
Tabula — Silicon Labs atbalstītie ACM pieprasījumi

Apakšklases pieprasījuma apraksts

Iestatīt komunikācijas funkciju Iegūt komunikācijas funkciju Notīrīt komunikācijas funkciju

Resursdators nosūta šo pieprasījumu, lai kontrolētu noteiktas sakaru funkcijas iestatījumus. Netiek izmantots seriālajai emulācijai.
Resursdators nosūta šo pieprasījumu, lai iegūtu pašreizējos iestatījumus konkrētai sakaru funkcijai. Netiek izmantots seriālajai emulācijai.
Resursdators nosūta šo pieprasījumu, lai notīrītu noteiktas sakaru funkcijas iestatījumus. Netiek izmantots seriālajai emulācijai.

SetLineCoding

Resursdators nosūta šo pieprasījumu, lai konfigurētu ACM ierīces iestatījumus: datu pārraides ātrumu, stopbitu skaitu, paritātes veidu un datu bitu skaitu. Seriālās emulācijas gadījumā šo pieprasījumu seriālais terminālis automātiski nosūta katru reizi, kad konfigurējat atvērta virtuālā COM porta seriālos iestatījumus.

GetLineCoding

Resursdators nosūta šo pieprasījumu, lai iegūtu pašreizējos ACM iestatījumus (boda ātrumu, stop bitus, paritāti, datu bitus). Seriālās emulācijas gadījumā seriālie termināļi nosūta šo pieprasījumu automātiski virtuālā COM porta atvēršanas laikā.

SetControlLineState Resursdators nosūta šo pieprasījumu, lai kontrolētu nesēju pusdupleksa modemiem un norādītu, vai datu termināļa iekārta (DTE) ir gatava vai nē. Seriālās emulācijas gadījumā DTE ir seriālais terminālis. Seriālās emulācijas gadījumā daži seriālie termināļi ļauj nosūtīt šo pieprasījumu ar iestatītām vadīklām.

SetBreak

Resursdators nosūta šo pieprasījumu, lai ģenerētu RS-232 stila pārtraukumu. Seriālās emulācijas gadījumā noteikti seriālie termināļi ļauj nosūtīt šo pieprasījumu.

Silicon Labs9 ACM apakšklase izmanto pārtraukuma IN galapunktu, lai paziņotu resursdatoram par pašreizējo seriālās līnijas stāvokli. Seriālais
līnijas stāvoklis ir bitkarte, kas informē resursdatoru par:

Pārsnieguma dēļ atmesti dati Paritātes kļūda Kadrēšanas kļūda Zvana signāla noteikšanas stāvoklis Pārtraukuma noteikšanas mehānisma stāvoklis Pārraides nesēja stāvoklis Uztvērēja nesēja noteikšanas stāvoklis

Silicon Labs9 ACM apakšklases ieviešana atbilst šādai specifikācijai:
Universālā seriālā kopne, sakari, PSTN ierīču apakšklase, 1.2. versija, 2007. gada 9. februāris.
USB ierīces CDC ACM klases konfigurācija

Šajā sadaļā ir aprakstīts, kā konfigurēt CDC ACM klasi (komunikācijas ierīces klasi, abstraktu vadības modeli). Ir divas konfigurācijas parametru grupas:
USB ierīces CDC ACM klases lietojumprogrammu specifiskās konfigurācijas USB ierīces CDC ACM klases instances konfigurācijas
USB ierīces CDC ACM klases lietojumprogrammām raksturīgās konfigurācijas

CDC pamatklase ACM apakšklase
CDC bāzes klase

Vispirms, lai izmantotu Silicon Labs USB ierīces CDC klases moduli, jums būs jāpielāgo CDC kompilēšanas laika konfigurācija #define-s atbilstoši jūsu lietojumprogrammas vajadzībām. Tie ir pārgrupēti sl_usbd_core_config.h galvenē. file sadaļā CDC. To mērķis ir informēt USB ierīces moduli par to, cik USB CDC objektu piešķirt.

Autortiesības © 2025 Silicon Laboratories. Visas tiesības aizsargātas.

22/174

Beigāsview

Zemāk esošajā tabulā ir aprakstīts katrs konfigurācijas lauks, kas pieejams šajā konfigurācijas struktūrā.
Tabula — USB ierīces CDC konfigurācijas definīcijas

Konfigurācijas nosaukums
SL_USBD_CDC_CL AS S_INSTANCE_QUANT ITY
SL_USBD_CDC_CONF IGURATION_QUANTI
TY
SL_USBD_CDC_DATA _INTERFACE_QUANTI
TY

Apraksts
Klases instanču skaits, ko piešķirsiet, izsaukstot funkciju
sl_usbd_cdc_acm_create_instance() . (Šķiet, ka šī ir kļūda, un to var kļūdaini ierakstīt savā datorā.)
Konfigurāciju skaits. ACM klases instances var pievienot vienai vai vairākām aaaa konfigurācijām, izmantojot sl_usbd_cdc_acm_add_to_configuration().
Kopējais datu saskarņu (DCI) skaits visām CDC funkcijām. Katra CDC ACM funkcija aaaaaaaaa pievienos vi c ll funkcijai sl_usbd_cdc_acm_create_instance() pievienos dt saskarni.

Noklusējuma vērtība
2
1
2

ACM apakšklase
ACM apakšklasei ir viena kompilēšanas laika konfigurācija, kas parādīta tabulā zemāk.
Tabula — USB ierīces CDC ACM konfigurācijas definēšana

Konfigurācijas nosaukums
SL_USBD_CDC_ACM_SUBCL ASS_I NSTANCE_QUANTITY

Apraksts
Konfigurē apakšklases instanču skaitu, ko piešķirsiet, izmantojot izsaukumu uz
funkcija sl_usbd_cdc_acm_create_instance().

Noklusējuma vērtība
2

USB ierīces CDC ACM klases instances konfigurācijas

Šajā sadaļā ir definētas konfigurācijas, kas saistītas ar CDC ACM seriālo klašu instancēm. Klases instances izveides līnijas stāvokļa intervāla izsaukumu pārvaldības iespējas p_acm_callbacks
Klases instances izveide

Lai izveidotu CDC ACM seriālās klases instanci, izsauciet funkciju T a sl_usbd_cdc_acm_create_instance(). Šī funkcija izmanto trīs konfigurācijas argumentus, kā aprakstīts šeit.

līnijas_stāvokļa_intervāls
Šis ir intervāls (milisekundēs), kurā jūsu CDC ACM seriālās klases instance ziņos par līnijas stāvokļa paziņojumiem T aa resursdatoram. Šai vērtībai jābūt divu pakāpē (1, 2, 4, 8, 16 utt.).

zvanu_pārvaldības_iespējas
Zvanu pārvaldības iespēju bitkarte. Bitkartes iespējamās vērtības ir šādas:

Vērtība (bits)
SL_USBD_ACM_SERIAL_CALL_MGMT_DEV
SL_USBD_ACM_SERIAL_CALL_MGMT_DATA_CCI _DCI

Apraksts
Ierīce pati apstrādā zvanu pārvaldību. Ierīce var nosūtīt/saņemt zvanu pārvaldības informāciju, izmantojot datu klases saskarni.

p_acm_callbacks

Autortiesības © 2025 Silicon Laboratories. Visas tiesības aizsargātas.

23/174

Beigāsview

aa M aa p_acm_callbacks ir rādītājs uz sl_usbd_cdc_acm_callbacks_t tipa struktūru. Tā mērķis ir sniegt CDC AC Cl ss atzvanīšanas funkciju kopu, kas jāizsauc, kad notiek CDC ACM notikums. Ne visi atzvanīšanas veidi ir obligāti, un, ja atzvanīšana nav nepieciešama, atzvanīšanas struktūras mainīgajā var nodot nulles rādītāju (NULL). Tālāk esošajā tabulā ir aprakstīts katrs šajā konfigurācijas struktūrā pieejamais konfigurācijas lauks.
Tabula — sl_usbd_cdc_acm _callbacks_t konfigurācijas struktūra

Lauki

Apraksts

.iespējot

Izsaucas, kad ir iespējota USB klases instance

veiksmīgi.

.atspējot

Izsaukts, kad USB klases instance ir atspējota.

.line_control_changed Tiek izsaukts, kad tiek saņemta līnijas vadības izmaiņa.

line_coding_changed Tiek izsaukts, kad tiek saņemta līnijas kodēšanas maiņa.

Funkcijas paraksts
void app_usbd_cdc_acm_enable(uint8_t apakšklases_nbr);
void app_usbd_cdc_acm_disable(uint8_t apakšklases_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_līnijas_kodēšana

Skatiet sadaļu Notikumu paziņojumu atzvanīšanas reģistrēšana, lai uzzinātu par atzvanīšanas funkcijām, piem.ample.
USB ierīces CDC ACM klases programmēšanas rokasgrāmata

Šajā sadaļā ir paskaidrots, kā lietot CDC Abstract Control Model klasi. USB ierīces CDC ACM klases inicializācija USB ierīces CDC ACM klases instances pievienošana ierīcei Saziņa, izmantojot CDC ACM klasi
USB ierīces CDC ACM klases inicializācija

Lai ierīcei pievienotu CDC ACM klases funkcionalitāti, vispirms ir jāinicializē CDC pamatklase un ACM apakšklase, aizpildot funkcijas sl_usbd_cdc_init() un sl_usbd_cdc_acm_init(). Tālāk redzamajā piemērā parādīts, kā izsaukt sl_usbd_cdc_init() un sl_usbd_cdc_acm_init(), izmantojot noklusējuma argumentus.

Example – CDC ACM klases inicializācija

sl_status_t statuss;
status = sl_usbd_cdc_init(); if (status ! SL_STATUS_OK) { /* Radās kļūda. Šeit jāpievieno kļūdu apstrāde. */
}
status = sl_usbd_cdc_acm_init(); if (status ! SL_STATUS_OK) { /* Radās kļūda. Šeit jāpievieno kļūdu apstrāde. */
}
USB ierīces CDC ACM klases instances pievienošana ierīcei
Lai ierīcei pievienotu CDC ACM klases funkcionalitāti, ir jāizveido instance un pēc tam jāpievieno tā ierīces konfigurācijai(-ām).
CDC ACM klases instances izveide

Autortiesības © 2025 Silicon Laboratories. Visas tiesības aizsargātas.

24/174

Beigāsview
CDC ACM klases instances pievienošana ierīces konfigurācijai(-ām). Notikumu paziņojumu atzvanīšanas reģistrēšana.
CDC ACM klases instances izveide
Izveidojiet CDC AC klases instanci, izsaucot funkciju sl_usbd_cdc_acm_create_instance(). Tālāk sniegtajā piemērā parādīts, kā izveidot CDC AC klases instanci, izmantojot sl_usbd_cdc_acm_create_instance().
Example – CDC ACM funkcijas izveide, izmantojot sl_usbd_cdc_acm_create_instance()

uint8_t apakšklases_nbr; sl_status_t statuss;
status = 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);
ja (statuss ! SL_STATUS_OK) { /* Radās kļūda. Šeit jāpievieno kļūdu apstrāde. */
}
CDC ACM klases instances pievienošana ierīces konfigurācijai(-ām)
Pēc CDC ACM klases instances izveides to var pievienot konfigurācijai, izsaucot funkciju
sl_usbd_cdc_acm_add_to_configuration() . (Pievienot konfigurācijai)
Zemāk redzamajā piemērā parādīts, kā izsaukt sl_usbd_cdc_acm_add_to_configuration().
Example – Izsauciet USBD ACM sl_usbd_cdc_acm_add_to_configuration()

sl_status_t statuss;

status = sl_usbd_cdc_acm_add_to_configuration(apakšklases_nbr,

(1)

konfigurācijas_nbr_fs);

(2)

ja (statuss ! SL_STATUS_OK) {

/* Radās kļūda. Šeit jāpievieno kļūdu apstrāde. */

}

aaa (1) Klases numurs, kas jāpievieno sl_usbd_cdc_acm_create_instance() atgrieztajai konfigurācijai. (2) Konfigurācijas numurs (šeit tas tiek pievienots pilna ātruma konfigurācijai).
Notikumu paziņojumu atzvanīšanas reģistrēšana
CDC ACM seriālā klase var paziņot jūsu lietojumprogrammai par jebkādām izmaiņām līnijas vadībā vai kodēšanā, izmantojot paziņojumu atzvanīšanas funkcijas. Atzvanīšanas funkciju struktūru var nodot kā argumentu ACM instances izveides laikā. Ņemiet vērā, ka šīs atzvanīšanas funkcijas ir neobligātas. Piemēram,ample – CDC ACM atzvanu reģistrācija ilustrē atzvanu reģistrācijas funkciju izmantošanu. Piem.ample – CDC ACM atzvanīšanas ieviešana parāda piemēruampatzvanīšanas funkciju ieviešanas piemērs.
Example – CDC ACM atzvanu reģistrācija

Autortiesības © 2025 Silicon Laboratories. Visas tiesības aizsargātas.

25/174

Beigāsview

uint8_t apakšklases_nbr; sl_status_t statuss;
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, };
status = 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);
ja (statuss ! SL_STATUS_OK) { /* Radās kļūda. Šeit jāpievieno kļūdu apstrāde. */ }
Example – CDC ACM atzvanīšanas ieviešana

bool app_usbd_cdc_acm_line_coding_changed (uint8_t

apakšklases_nbr,

sl_usbd_cdc_acm_line_coding_t *p_line_coding)

{

uint32_t baudrate_new;

uint8_t paritātes_jauns;

uint8_t stop_bits_new;

uint8_t datu_bitu_jaunums;

/* UZDEVUMS Lietot jaunu līnijas kodējumu.*/ baudrate_new = p_line_coding->BaudRate; parity_new = p_line_coding->Parity; stop_bits_new = p_line_coding->StopBits; data_bits_new = p_line_coding->DataBits;

atgriezties (patiess);

(1)

}

void app_usbd_cdc_acm_line_control_changed (uint8_t apakšklases_nbr, uint8_t notikums, uint8_t notikums_changed)
{ bool rts_state; bool rts_state_changed; bool dtr_state; bool dtr_state_changed; bool brk_state; bool brk_state_changed;}

/* DARĀMAIS DARBĪBA Lietot jaunu līnijas vadību. */ 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 = ((notikuma_mainīšana un SL_USBD_CDC_ACM_CTRL_BREAK) ! 0) ? patiess : nepatiess;
}

(1) Ir svarīgi šai funkcijai atgriezt vērtību “false”, ja līnijas kodēšanas piemērošana neizdevās. Pretējā gadījumā atgrieziet vērtību “true”.
Saziņa, izmantojot CDC ACM klasi
Sērijas statuss
Līnijas kodēšana Līnijas vadība

Autortiesības © 2025 Silicon Laboratories. Visas tiesības aizsargātas.

26/174

Beigāsview

Līnijas stāvokļa apakšklases instances saziņa
Sērijas statuss
Līniju kodēšana
USB resursdators kontrolē CDC ACM ierīces līnijas kodēšanu (boda ātrumu, paritāti utt.). Ja nepieciešams, lietojumprogramma ir atbildīga par līnijas kodēšanas iestatīšanu. Ir nodrošinātas divas funkcijas, lai izgūtu un iestatītu pašreizējo līnijas kodēšanu, kā aprakstīts tālāk esošajā tabulā.
Tabula — CDC ACM līnijas kodēšanas funkcijas

Funkcija
sl_usbd_cdc_acm_g e t_line _cod ()
sl_usbd_cdc_acm_s e t_line _cod ing ()

Apraksts
Jūsu lietojumprogramma var iegūt pašreizējos līnijas kodēšanas iestatījumus vai nu no resursdatora, izmantojot SetLineCoding pieprasījumus, vai arī ar funkciju sl_usbd_cdc_acm_set_line_coding().
Jūsu lietojumprogramma var iestatīt līnijas kodēšanu. Resursdators var izgūt iestatījumus ar pieprasījumu GetLineCoding.

Līnijas vadība
USB resursdators kontrolē CDC ACM ierīces līnijas vadību (RTS un DTR tapas, pārtraukuma signālu utt.). Ja nepieciešams, jūsu lietojumprogramma ir atbildīga par līnijas vadības piemērošanu. Ir nodrošināta funkcija pašreizējo līnijas vadības vērtību izgūšanai un iestatīšanai, kā aprakstīts tabulā zemāk.
Tabula — CDC ACM līnijas vadības funkcijas

Funkcija
sl_usb d _cd c_acm_get e t_line _contr o l_state ()

Jūsu lietojumprogramma var iegūt pašreizējo vadības līnijas stāvokli, ko iestatījis resursdators, izmantojot pieprasījumu SetControlLineState.

Līnijas stāvoklis
USB resursdators regulāri izgūst līnijas stāvokli. Jūsu lietojumprogrammai ir jāatjaunina līnijas stāvoklis katru reizi, kad tas mainās. Ja nepieciešams, jūsu lietojumprogramma ir atbildīga par līnijas stāvokļa iestatīšanu. Ir nodrošinātas divas funkcijas, lai izgūtu un iestatītu pašreizējās līnijas vadīklas, kā aprakstīts tālāk esošajā tabulā.
Tabula – CDC ACM līnijas stāvokļa funkcijas

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

Jūsu lietojumprogramma var iestatīt jebkuru(-s) līnijas stāvokļa notikumu(-s). Iestatot līnijas stāvokli, uz resursdatoru tiek nosūtīts pārtraukuma IN pārraides signāls, lai informētu to par izmaiņām seriālās līnijas stāvoklī.
Lietojumprogramma var notīrīt divus līnijas stāvokļa notikumus: pārraides nesēja un uztvērēja nesēja noteikšanu. Visus pārējos notikumus ACM seriālās emulācijas apakšklase notīra pati.

Apakšklases instances komunikācija

Silicon Labs ACM apakšklase piedāvā šādas funkcijas saziņai ar resursdatoru. Plašāku informāciju par functions9 parametriem skatiet CDC ACM apakšklases funkciju atsaucē.

Funkcijas nosaukums
sl_usb d _cd c_acm_ lasīšanas () sl_usb d _cd c_acm_rakstīšanas ()

Darbība
Saņem datus no resursdatora, izmantojot masveida izejas galapunktu. Šī funkcija bloķē. Nosūta datus uz resursdatoru, izmantojot masveida ieejas galapunktu. Šī funkcija bloķē.

Autortiesības © 2025 Silicon Laboratories. Visas tiesības aizsargātas.

27/174

Beigāsview

Tabula — CDC ACM saziņas API kopsavilkums aaaaa sl_usbd_cdc_acm_read() un sl_usbd_cdc_acm_write() nodrošina sinhronu saziņu, kas nozīmē, ka pārsūtīšana bloķējas. Citiem vārdiem sakot, izsaucot funkciju, lietojumprogramma bloķē pārsūtīšanu, līdz tā ir pabeigta ar kļūdu vai bez tās. Lai izvairītos no mūžīgas gaidīšanas, var norādīt taimautu. Piemēram,ampZemāk redzamajā attēlā ir parādīta lasīšanas un rakstīšanas piemēraampfails, kas saņem datus no resursdatora, izmantojot masveida izejas galapunktu, un nosūta datus uz resursdatoru, izmantojot masveida ieejas galapunktu.
Saraksts — seriālā lasīšanas un rakstīšanas eksemplārsample

__ALIGNED(4) uint8_t rx_buf[2];

__ALIGNED(4) uint8_t tx_buf[2];

uint32_t

xfer_len;

sl_status_t

statuss;

status = sl_usbd_cdc_acm_read(apakšklases_nbr,

(1)

rx_buf,

(2)

2u,

0u,

(3)

&xfer_len);

ja (statuss ! SL_STATUS_OK) {

/* Radās kļūda. Šeit jāpievieno kļūdu apstrāde. */

}

status = sl_usbd_cdc_acm_write(apakšklases_nbr,

(1)

tx_buf,

(4)

2u,

0u,

(3)

&xfer_len);

ja (statuss ! SL_STATUS_OK) {

/* Radās kļūda. Šeit jāpievieno kļūdu apstrāde. */

}

T aaaaa M (1) Ar sl_usbd_cdc_acm_create_instance() izveidotās klases instances numurs nodrošina iekšējo atsauci uz AC apakšklasi, lai novirzītu pārsūtīšanu uz atbilstošo lielapjoma OUT vai IN galapunktu. (2) Jūsu lietojumprogrammai ir jānodrošina, ka funkcijai nodrošinātais buferis ir pietiekami liels, lai tajā ietilptu visi dati. Pretējā gadījumā var rasties sinhronizācijas problēmas. (3) Lai izvairītos no bezgalīgas bloķēšanas situācijas, norādiet taimautu, kas izteikts milisekundēs. Vērtība 809 liek lietojumprogrammas uzdevumam gaidīt mūžīgi. (4) Lietojumprogramma nodrošina inicializēto pārraides buferi.

Autortiesības © 2025 Silicon Laboratories. Visas tiesības aizsargātas.

28/174

Beigāsview
Beigāsview

USB ierīces HID klase

USB ierīces HID klases pārsniegšanaview USB ierīces HID klases resursu vajadzības no pamatsistēmas USB ierīces HID klases konfigurācija USB ierīces HID klases programmēšanas rokasgrāmata HID periodisko ievades pārskatu uzdevums
Šajā sadaļā ir aprakstīta cilvēka saskarnes ierīču (HID) klase, ko atbalsta Silicon Labs USB ierīce.
HID klase ietver ierīces, ko cilvēki izmanto datoru darbību vadībai, piemēram, tastatūras, peles, rādītājierīces un spēļu ierīces.
HID klasi var izmantot arī saliktā ierīcē, kas satur vadības elementus, piemēram, kloķus, slēdžus, pogas un slīdņus. Piemēram,ampSkaļuma, izslēgšanas un izslēgšanas vadību audio austiņās kontrolē austiņu HID funkcija. HID klases austiņas var apmainīties ar datiem jebkādiem mērķiem, izmantojot tikai vadības un pārtraukumu pārsūtīšanu.
HID klase ir viena no vecākajām un visplašāk izmantotajām USB klasēm. Visas galvenās resursdatora operētājsistēmas nodrošina vietējo draiveri HID ierīču pārvaldībai, tāpēc dažādas ražotāja specifiskas ierīces darbojas ar HID klasi. Šajā klasē ietilpst arī dažādi izvades elementi, piemēram, gaismas diodes, audio, taustes atgriezeniskā saite utt.
HID ieviešana atbilst šādām specifikācijām:
Cilvēka saskarnes ierīču (HID) klases definīcija, 2001. gada 27. jūnijs, 1.11. versija. Universālās seriālās kopnes HID lietošanas tabulas, 2004. gada 28. oktobris, 1.12. versija.
USB ierīces HID klases pārsniegšanaview
Beigāsview
HID ierīce sastāv no šādiem galapunktiem:
Vadības IN un OUT galapunktu pāris, ko sauc par noklusējuma galapunktu Pārtraukuma IN galapunkts Papildu pārtraukuma OUT galapunkts
Zemāk esošajā tabulā ir aprakstīts dažādu galapunktu lietojums:
Tabula — HID klases galapunktu lietojums

Galapunkta virziena lietojums

Vadība IN
Kontrole
ĀRĀ
Pārtraukt IN
Pārtraukt
ĀRĀ

No ierīces uz saimnieku
No resursdatora uz ierīci
No ierīces uz saimnieku
No resursdatora uz ierīci

Standarta pieprasījumi uzskaitīšanai, klasei specifiskiem pieprasījumiem un datu komunikācijai (ievade, funkciju pārskati, kas nosūtīti uz resursdatoru ar GET_REPORT pieprasījumu). Standarta pieprasījumi uzskaitīšanai, klasei specifiskiem pieprasījumiem un datu komunikācijai (izvade, funkciju pārskati, kas saņemti no resursdatora ar SET_REPORT pieprasījumu). Datu komunikācija (ievade un funkciju pārskati).
Datu komunikācija (izvades un funkciju pārskati).

Ziņojums

Autortiesības © 2025 Silicon Laboratories. Visas tiesības aizsargātas.

29/174

Beigāsview

Resursdators un HID ierīce apmainās ar datiem, izmantojot atskaites. Atskaite satur formatētus datus, kas sniedz informāciju par HID ierīces vadības ierīcēm un citām fiziskajām vienībām. Lietotājs var manipulēt ar vadības ierīci, un tā pārvalda kādu ierīces aspektu. Piemēram,ampPiemēram, vadība var būt poga uz peles vai tastatūras, slēdzis utt. Citas entītijas informē lietotāju par noteiktu ierīces funkciju stāvokli. Piemēram,ampPiemēram, tastatūras gaismas diodes informē lietotāju par ieslēgtu burtslēgu, aktīvu ciparu tastatūru utt.
Resursdators saprot atskaites datu formātu un lietojumu, analizējot atskaites deskriptora saturu. Satura analīzi veic parsētājs. Atskaites deskriptors apraksta datus, ko sniedz katra ierīces vadīkla. Tas sastāv no vienumiem, kas ir informācija par ierīci un sastāv no 1 baita prefiksa un mainīga garuma elementiem.
dati. Lai iegūtu sīkāku informāciju par vienuma formātu, skatiet
1.11=, 5.6. un 6.2.2. sadaļa.
Ir trīs galvenie priekšmetu veidi:
Galvenais elements definē vai grupē noteikta veida datu laukus.
Globāls vienums apraksta vadības datu raksturlielumus.
Lokālais vienums apraksta vadības datu raksturlielumus.
Katru vienuma veidu definē dažādas funkcijas. Vienuma funkciju var saukt arī par tagVienības funkciju var uzskatīt par apakšvienību, kas pieder vienam no trim galvenajiem vienību veidiem. Zemāk esošajā tabulā ir sniegts īss pārskats.view katra vienuma veida vienuma funkcijas. Pilnīgu katras kategorijas vienumu aprakstu skatiet
Tabula — katra elementa tipa elementa funkcijas apraksts

Vienība Vienības veids Funkcija

Apraksts

Galvenā ievade

Apraksta informāciju par datiem, ko sniedz viena vai vairākas fiziskās kontroles.

Galvenā izeja Apraksta datus, kas tiek nosūtīti uz ierīci.

Galvenā iezīme

Apraksta ierīces konfigurācijas informāciju, kas tiek nosūtīta uz ierīci vai saņemta no tās un ietekmē ierīces vai kāda tās komponenta vispārējo darbību.

Galvenās kolekcijas grupas saistītie vienumi (ievade, izvade vai funkcija).

Galvenās beigas Aizver kolekciju. Kolekcija

Autortiesības © 2025 Silicon Laboratories. Visas tiesības aizsargātas.

30/174

Beigāsview

Vienība Vienības veids Funkcija

Apraksts

Globālā lietojuma lapa

Norāda ierīcē pieejamu funkciju.

Globālā loģika Nosaka ziņoto vērtību apakšējo robežu loģiskajās vienībās. Minimums

Globālā loģika Nosaka ziņoto vērtību augšējo robežu loģiskajās vienībās. Maksimālā

Globāli fiziski Nosaka ziņoto vērtību apakšējo robežu fiziskajās vienībās, tas ir, loģisko minimumu. Minimums, kas izteikts fiziskajās vienībās.

Globāli fiziski Nosaka ziņoto vērtību augšējo robežu fiziskajās vienībās, tas ir, loģisko maksimālo vērtību, kas izteikta fiziskajās vienībās.

Globālā vienība

Norāda vienības eksponentu desmitskaitlī. Pakāpens ir no -8 līdz +7.

Eksponents

Globālā vienība

Norāda ziņoto vērtību mērvienību. Piemēram, garuma, masas, temperatūras mērvienības utt.

Globālā pārskata lielums

Norāda atskaites lauku lielumu bitos.

Globālā pārskata ID norāda prefiksu, kas pievienots konkrētam pārskatam.

Globālo ziņojumu skaits

Norāda datu lauku skaitu vienumam.

Globāls grūdiens

Ievieto globālās vienības stāvokļa tabulas kopiju centrālā procesora kaudzē.

Globālais pops

Aizvieto elementa stāvokļa tabulu ar pēdējo struktūru no steka.

Vietējais lietojums

Attēlo indeksu, kas apzīmē konkrētu lietojumu lietojuma lapā. Tas norāda pārdevēja ieteikto lietojumu konkrētai vadīklai vai vadīklu grupai. Lietojums sniedz informāciju lietojumprogrammu izstrādātājam par to, ko vadīkla faktiski mēra.

Vietējais lietojums

Definē ar masīvu vai bitkarti saistīto sākuma lietojumu.

Minimums

Vietējais lietojums

Nosaka ar masīvu vai bitkarti saistīto beigu lietojumu.

Maksimums

Lokālais apzīmējums Nosaka vadības elementam izmantoto ķermeņa daļu. Indekss norāda uz apzīmējumu fiziskajā

Rādītājs

deskriptors.

Lokālais apzīmējums Nosaka ar masīvu vai bitkarti saistītā sākuma apzīmējuma indeksu. Minimums

Lokālais apzīmējums Nosaka ar masīvu vai bitkarti saistītā beigu apzīmējuma indeksu.

Vietējais virknes indekss

Virknes indekss virknes deskriptoram. Tas ļauj virkni saistīt ar konkrētu elementu vai vadīklu.

Lokālā virkne

Norāda pirmo virknes indeksu, piešķirot secīgu virkņu grupu vadīklām masīvā

Minimālais vai bitkarte.

Vietējais Vietējais

Virknes maksimums
Atdalītājs

Norāda pēdējās virknes indeksu, piešķirot secīgu virkņu grupu vadīklām masīvā vai bitkartē.
Nosaka lokālo vienumu kopas sākumu vai beigas.

Vadības elementa datiem jādefinē vismaz šādi vienumi:
Ievade, izvade vai funkcija Galvenie vienumi Lietojums Lokālais vienums Lietojums Lapa Globālais vienums Loģiskais minimums Globālais vienums Loģiskais maksimums Globālais vienums Ziņojuma lielums Globālais vienums

Autortiesības © 2025 Silicon Laboratories. Visas tiesības aizsargātas.

31/174

Beigāsview
Ziņojumu skaits Globāls vienums Zemāk esošajā tabulā ir parādīts peles ziņojuma deskriptora satura attēlojums no resursdatora HID parsētāja perspektīvas. Pelei ir trīs pogas (kreisā, labā un ritenītis). Piemērā parādītais kodsampZemāk ir parādīta koda ieviešana, kas atbilst šai peles ziņojuma deskriptora reprezentācijai.
Attēls. Ziņojuma deskriptora saturs no resursdatora HID parsētāja. View

(1) Lietojuma lapas elementa funkcija norāda ierīces vispārīgo funkciju. Šajā piemērāampPiemēram, HID ierīce pieder uzņēmumam
vispārīga darbvirsmas vadība.
(2) Kolekcijas lietojumprogramma grupē galvenos vienumus, kuriem ir kopīgs mērķis un kas var būt pazīstami lietojumprogrammās. Diagrammā grupa sastāv no trim ievades galvenajiem vienumiem. Šajā kolekcijā ieteicamais vadības elementu lietojums ir pele, kā norādīts lietojuma vienumā. (3) Ligzdotas kolekcijas var izmantot, lai sniegtu sīkāku informāciju par atsevišķas vadības elementa vai vadības elementu grupas lietojumu lietojumprogrammās. Šajā piemērāampKolekcijas fiziskais elements, kas ir ievietots kolekcijas lietojumprogrammā, sastāv no tiem pašiem trim ievades elementiem, kas veido kolekcijas lietojumprogrammu. Kolekcijas fiziskais elements tiek izmantots datu elementu kopai, kas attēlo datu punktus, kas savākti vienā ģeometriskā punktā. Piemēram,ampPiemēram, ieteicamais lietojums ir rādītājs, kā norādīts lietojuma vienumā. Šeit rādītāja lietojums attiecas uz peles pozīcijas koordinātām, un sistēmas programmatūra pārtulkos peles koordinātas atbilstoši ekrāna kursora kustībai. (4) Ir iespējamas arī ligzdotas lietojuma lapas, kas sniedz sīkāku informāciju par noteiktu aspektu ierīces vispārējās funkcijas ietvaros. Šajā gadījumā divi ievades vienumi ir grupēti un atbilst peles pogām. Viens ievades vienums definē trīs peles pogas (labo, kreiso un ritenīti) pēc datu lauku skaita vienumam (ziņojuma skaita vienums), datu lauka lieluma (ziņojuma lieluma vienums) un iespējamām vērtībām katram datu laukam (lietojuma minimums un maksimums, loģiskais minimums un maksimums). Otrs ievades vienums ir 13 bitu konstante, kas ļauj ievades atskaites datus izlīdzināt uz baitu robežas. Šis ievades vienums tiek izmantots tikai papildināšanas nolūkos. (5) Vēl viena ligzdota lietojuma lapa, kas attiecas uz vispārīgu darbvirsmas vadīklu, ir definēta peles pozīcijas koordinātām. Šajā lietojuma lapā ievades vienums apraksta datu laukus, kas atbilst x un y asij, kā norādīts divos lietojuma vienumos.
preces.
Pēc iepriekšējās peles ziņojuma deskriptora satura analīzes host9s HID parsētājs spēj interpretēt ievades ziņojuma datus, ko ierīce nosūtījusi ar pārtraukuma IN pārsūtīšanu vai atbildot uz GET_REPORT pieprasījumu. Ievades ziņojuma dati, kas atbilst peles ziņojuma deskriptoram, ir parādīti attēlā – ziņojuma deskriptora saturs no resursdatora HID parsētāja. View is

Autortiesības © 2025 Silicon Laboratories. Visas tiesības aizsargātas.

32/174

Beigāsview

parādīts tabulā zemāk. Kopējais pārskata datu lielums ir 4 baiti. Pa vienu un to pašu galapunktu var tikt nosūtīti dažādu veidu pārskati. Lai atšķirtu dažādos pārskatu veidus, datu pārskatam tiek pievienots 1 baita pārskata ID prefikss. Ja pārskata ID tika izmantots iepriekšējāampPeles ziņojuma gadījumā kopējais ziņojuma datu lielums būtu 5 baiti.
Tabula — ievades ziņojums, kas nosūtīts resursdatoram un atbilst 3 pogu peles stāvoklim

Bitu nobīde
0 1 2 3 16 24

Bitu skaits 1 1 1 13 8 8

Apraksts 1. poga (kreisā poga). 2. poga (labā poga). 3. poga (ritenīša poga). Netiek izmantota. Pozīcija uz X ass. Pozīcija uz Y ass.

Fiziskais deskriptors norāda ķermeņa daļu vai daļas, kas paredzētas vadības elementa vai vadības elementu aktivizēšanai. Lietojumprogramma var izmantot šo informāciju, lai piešķirtu funkcionalitāti ierīces vadībai. Fiziskais deskriptors ir neobligāts, klasei specifisks deskriptors, un lielākajai daļai ierīču ir maza priekšrocība no tā lietošanas. Sk.
USB ierīces HID klases resursu vajadzības no Core

Katru reizi, kad USB konfigurācijai pievienojat HID klases instanci, izmantojot funkcijas sl_usbd_hid_add_to_configuration() izsaukumu, no kodola tiks piešķirti šādi resursi.

Resurss
Saskarnes Alternatīvās saskarnes Galapunkti Saskarņu grupas

Daudzums
1 1 1 (2, ja pārtraukuma izejas galapunkts ir iespējots) 0

Ņemiet vērā, ka šie skaitļi ir norādīti katrai konfigurācijai. Iestatot SL_USBD_INTERFACE_QUANTITY, SL_USBD_ALT_INTERFACE_QUANTITY, SL_USBD_INTERFACE_GROUP_QUANTITY un SL_USBD_DESCRIPTOR_QUANTITY konfigurācijas vērtības, neaizmirstiet ņemt vērā, cik konfigurāciju klase tiks pievienota. Attiecībā uz SL_USBD_OPEN_ENDPOINTS_QUANTITY konfigurācijas vērtību, tā kā galapunkti tiek atvērti tikai tad, kad resursdators iestata konfigurāciju, jums jāņem vērā tikai nepieciešamo galapunktu skaits klases instancei.
USB ierīces HID klases konfigurācija

HID klases konfigurēšanai tiek izmantotas divas konfigurācijas parametru grupas:
USB ierīces HID klases lietojumprogrammu specifiskās konfigurācijas USB ierīces HID klases instances konfigurācijas
USB ierīces HID klases lietojumprogrammām specifiskas konfigurācijas

Vispirms, lai izmantotu Silicon Labs USB ierīces HID klases moduli, pielāgojiet HID kompilēšanas laika konfigurācijas definīcijas atbilstoši jūsu lietojumprogrammas vajadzībām. Tās ir pārgrupētas sl_usbd_core_config.h galvenē. file zem HID sadaļas. Tos var iedalīt divās sadaļās: daudzuma konfigurācijas un HID uzdevumu konfigurācijas. Daudzuma konfigurāciju mērķis ir informēt USB ierīces moduli par to, cik USB HID objektu piešķirt.
Zemāk esošajā tabulā ir aprakstīta katra konfigurācijas definīcija.
Tabula — USB ierīces HID konfigurācijas definīcijas

Autortiesības © 2025 Silicon Laboratories. Visas tiesības aizsargātas.

33/174

Beigāsview

Konfigurācijas nosaukums
SL_USBD_HID_CL ASS_I NOSTANCE_QUANTITY
SL_USBD_HID_CONFIG URATION_QUANTITY
SL_USBD_HID_REPORT_ ID_QUANTITY
SL_USBD_HID_PUSH_P OP_ITEM_QUANTITY
SL_USBD_HID_TIMER_T ASK_STACK_SIZE
SL_USBD_HID_TIMER_T ASK_PRIORITY

Apraksts
Klases instanču skaits, ko piešķirsiet, izsaukstot funkciju
sl_usbd_hid_create_instance() .
Konfigurāciju skaits. HID klases instances var pievienot vienai vai vairākām aaaa konfigurācijām, izmantojot funkciju sl_usbd_hid_add_to_configuration(). Konfigurē piešķiramo atskaišu ID kopējo skaitu.
Konfigurē kopējo piešķiramo Push/Pop vienumu skaitu.
Taimera uzdevums apstrādā visas uz taimeri balstītās HID darbības. Šī konfigurācija ļauj iestatīt kaudzes lielumu (baitu skaitā). HID uzdevuma prioritāte. Šī ir CMSIS-RTOS2 prioritāte.

Noklusējuma vērtība
2 1 2 0 2048
Augsta prioritāte

USB ierīces HID klases instances konfigurācijas klases instances izveides apakšklase
protokola valsts_kods
interval_in un interval_out p_hid_callback HID klases ziņojuma deskriptora piemērsampŠajā sadaļā ir definētas konfigurācijas, kas saistītas ar HID klases instancēm.
Klases instances izveide
HID klases instances izveide tiek veikta, izsaucot funkciju aaa sl_usbd_hid_create_instance(), kas izmanto vairākus konfigurācijas argumentus, kas aprakstīti tālāk.
apakšklase
HID apakšklases kods. Iespējamās vērtības ir:
SL_USBD_HID_SUBCL ASS_NONE SL_USBD_HID_SUBCL ASS_BOOT
HID ierīcei, kas izmanto sāknēšanas apakšklasi, ir jāizmanto standarta pārskatu formāti. Plašāku informāciju par apakšklases kodiem skatiet HID specifikācijas 1.11. versijas 4.2. sadaļā.
protokols
HID ierīces izmantotais protokols. Iespējamās vērtības ir:
SL_USBD_HID_PROTOCOL_NONE SL_USBD_HID_PROTOCOL_KBD SL_USBD_HID_PROTOCOL_MOUSE
Ja jūsu HID funkcija ir pele, protokolam jābūt iestatītam uz SL_USBD_HID_PROTOCOL_MOUSE. Ja tā ir tastatūra, protokolam jābūt iestatītam uz SL_USBD_HID_PROTOCOL_KBD. Pretējā gadījumā protokolam jābūt iestatītam uz SL_USBD_HID_PROTOCOL_NONE. Plašāku informāciju par apakšklases kodiem skatiet HID specifikācijas 1.11. pārskatīšanas 4.3. sadaļā.
valsts_kods
Valsts koda ID. Iespējamās vērtības ir:
SL_USBD_HID_COUNTRY_CODE_NOT_SUPPORTED

Autortiesības © 2025 Silicon Laboratories. Visas tiesības aizsargātas.

34/174

Beigāsview
SL_USBD_HID_VALSTS_KODS_ARĀBU SL_USBD_HID_VALSTS_KODS_BEĻĢIJAS SL_USBD_HID_VALSTS_KODS_KANĀDAS_DIVLODĪGAIS SL_USBD_HID_VALSTS_KODS_KANĀDAS_FRANCIJAS SL_USBD_HID_VALSTS_KODS_ČEHIJAS_REPUBLIKA SL_USBD_HID_VALSTS_KODS_DĀNIJAS SL_USBD_HID_VALSTS_KODS_SOMU SL_USBD_HID_VALSTS_KODS_FRANCIJAS SL_USBD_HID_VALSTS_KODS_VĀCU SL_USBD_HID_VALSTS_KODS_GRIEĶU SL_USBD_HID_VALSTS_KODS_IVĪRU SL_USBD_HID_VALSTS_KODS_UNGĀRIJA SL_USBD_HID_VALSTS_KODS_STARPTAUTISKĀ SL_USBD_HID_VALSTS_KODS_ITĀLIJAS SL_USBD_HID_VALSTS_KODS_JAPĀNA_KATAKANA SL_USBD_HID_VALSTS_KODS_KOREĀNIJA SL_USBD_HID_VALSTS_KODS_L TĪTAMERIKĀŅU SL_USBD_HID_VALSTS_KODS_NĪDERLANDE UN HOLANDIEŠU SL_USBD_HID_VALSTS_KODS_NORVĒĢIJU SL_USBD_HID_VALSTS_KODS_PERSIEŠU_FARSI SL_USBD_HID_VALSTS_KODS_POLI UN SL_USBD_HID_VALSTS_KODS_PORTUGĀLES SL_USBD_HID_VALSTS_KODS_KRIEVIJA SL_USBD_HID_VALSTS_KODS_SLOVĀKIJA SL_USBD_HID_VALSTS_KODS_SPĀNIJAS SL_USBD_HID_VALSTS_KODS_ZVIEDRIJAS SL_USBD_HID_VALSTS_KODS_ŠVEICES_FRANCIJAS SL_USBD_HID_VALSTS_KODS_ŠVEICE_VĀCIJA SL_USBD_HID_VALSTS_KODS_ŠVEICE UN SL_USBD_HID_VALSTS_KODS_TAIVĀNE SL_USBD_HID_VALSTS_KODS_TURKISH_Q SL_USBD_HID_VALSTS_KODS_UK SL_USBD_HID_VALSTS_KODS_USUG OSL AVIA SL_USBD_HID_VALSTS_KODS_TURKISH_F
Valsts kods norāda, kurai valstij aparatūra ir lokalizēta. Lielākā daļa aparatūras nav lokalizēta, tāpēc šis kods būtu SL_USBD_HID_COUNTRY_CODE_NOT_SUPPORTED (0). Tomēr tastatūras var izmantot šo lauku, lai norādītu taustiņu valodu.
Plašāku informāciju par valstu kodiem skatiet HID specifikācijas 1.11. redakcijas 6.2.1. sadaļā.
intervāla_ievade un intervāla_izvade
interval_in un interval_out apzīmē IN pārtraukuma galapunkta un OUT pārtraukuma galapunkta aptaujas intervālu.
Tas norāda galapunkta aptaujas intervālu milisekundēs. Šīs vērtības iestatīšana ir atkarīga no tā, cik bieži jūsu ierīce ir uzņēmīga pret jaunu atskaiti resursdatoram. Piemēram, ja atskaite tiek ģenerēta ik pēc 16 milisekundēm, intervālam jābūt 16 vai mazākam.
Vērtībai jābūt 2 pakāpē (1, 2, 4, 8, 16 utt.).
Ja ctrl_rd_en ir iestatīta uz patiesa, intervāla_izslēgšanas vērtība tiek ignorēta.
p_hid_callback
aaaa p_hid_callback ir rādītājs uz sl_usbd_hid_callbacks_t tipa struktūru. Tā mērķis ir norādīt HID Clss atzvanīšanas funkciju kopu, kas jāizsauc, kad notiek HID notikums.

Autortiesības © 2025 Silicon Laboratories. Visas tiesības aizsargātas.

35/174

Beigāsview

Ne visi atzvanīšanas veidi ir obligāti, un, ja atzvanīšana nav nepieciešama, atzvanīšanas struktūras mainīgajā var nodot nulles rādītāju (NULL). Tālāk esošajā tabulā ir aprakstīts katrs šajā konfigurācijas struktūrā pieejamais konfigurācijas lauks.
Tabula — sl_usbd_hid_callbacks_t konfigurācijas struktūra

Lauki

Apraksts

Funkcijas paraksts

.iespējot .atspējot .get_report_desc
.get_phy_desc
.set_output_report .get_feature_report .set_feature_report

Izsaukts, kad USB klases instance ir veiksmīgi iespējota. Izsaukts, kad USB klases instance ir atspējota.
Tiek izsaukts HID instances izveides laikā, lai nodotu jūsu pārskata deskriptoru. Katrai HID funkcijai ir jānorāda pārskata deskriptors. Pārskata deskriptors norāda resursdatoram, kā jāanalizē periodiskais ziņojums, ko nosūtīs ierīce. Sava pārskata deskriptora rakstīšana var būt sarežģīta, tāpēc ir daži resursi, kas var palīdzēt. Šī ir vienīgā obligātā atzvanīšanas funkcija. Tiek izsaukts HID instances izveides laikā, lai nodotu jūsu fizisko deskriptoru. Fiziskais deskriptors ir deskriptors, kas sniedz informāciju par konkrētu cilvēka ķermeņa daļu vai daļām, kas aktivizē vadīklu vai vadīklas. Plašāku informāciju par fiziskajiem deskriptoriem skatiet HID specifikācijas 1.11. versijas 6.2.3. sadaļā. Fiziskais deskriptors ir neobligāts un lielākoties tiek ignorēts. Šeit nodoto buferi var iestatīt uz NULL, un garumu var iestatīt uz 0. Tiek izsaukts, kad resursdators iestata ziņojumu, kā aprakstīts jūsu pārskata deskriptorā (kad tas nosūta ziņojumu).
Tiek izsaukts, kad resursdators pieprasa funkciju pārskatu, kā aprakstīts jūsu pārskata deskriptorā.
Tiek izsaukts, kad resursdators iestata funkciju pārskatu, kā aprakstīts jūsu pārskata deskriptorā.

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); Šī funkcija darbojas kā kods *p_report_len*.
void app_usbd_hid_get_phy_desc(uint8_t class_nbr, const uint8_t *p_report_ptr, uint16_tp_report_len);
void app_usbd_hid_set_output_report(uint8_t class_nbr, uint8_t report_id, uint8_t *p_report_buf, uint16_t report_len); void app_usbd_hid_get_feature_report(uint8_t class_nbr, uint8_t report_id, uint8_t *p_report_buf, uint16_t report_len); void app_usbd_hid_set_feature_report(uint8_t class_nbr, uint8_t report_id, uint8_t *p_report_buf, uint16_t report_len);

.get_protocol

Iegūst pašlaik aktīvo protokolu.

void app_usbd_hid_get_protocol(uint8_t klases_nbr, uint8_t *p_protocol);

.set_protocol

Iestata pašreizējo aktīvo protokolu.

void app_usbd_hid_set_protocol(uint8_t klases_nbr, uint8_t protokols);

HID klases ziņojuma deskriptora piemērsample

Silicon Labs HID klasesamplietojumprogramma sniedz piemēruampvienkāršas peles atskaites deskriptora piemērs. PiemēramampZemāk redzamajā attēlā ir parādīts peles ziņojuma deskriptors.
Example – Peles pārskata apraksts

statiskā 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)

Autortiesības © 2025 Silicon Laboratories. Visas tiesības aizsargātas.

36/174

Beigāsview

SL_USBD_HID_GALVENĀ_KOLEKCIJA +1, SL_USBD_HID_KOLEKCIJAS_LIETOTNE,(4)

SL_USBD_HID_LOCAL_USAGE +1, SL_USBD_HID_CP_POINTER,(5)

SL_USBD_HID_GALVENĀ_KOLEKCIJA +1, SL_USBD_HID_KOLEKCIJA_FIZISKĀ,(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_GALVENAIS_MAINĪGAIS |

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_GALVENAIS_MAINĪGAIS |

SL_USBD_HID_MAIN_RELATIVE,

SL_USBD_HID_GALVENĀ_KOLEKCIJA,(10)

SL_USBD_HID_GALVENĀ_KOLEKCIJA

(11)};

(1) Tabula, kas attēlo peles atskaites deskriptoru, tiek inicializēta tā, lai katra rinda atbilstu īsam vienumam. Pēdējais tiek veidots no 1 baita prefiksa un 1 baita datiem. Sk. viewattēlā redzams, kā rediģējis resursdatora HID parsētājs. Ziņojuma deskriptora saturs no resursdatora HID parsētāja. View.
(2) Tiek izmantota vispārīgā darbvirsmas lietojuma lapa.
(3) Vispārīgajā darbvirsmas lietojuma lapā lietojums tag norāda, ka vadības elementu grupa ir paredzēta peles vadīšanai. Peles kolekcija parasti sastāv no divām asīm (X un Y) un vienas, divām vai trim pogām.
(4) Ir sākta peļu kolekcija.
(5) Peļu kolekcijā ir lietojums tag konkrētāk norāda, ka peles vadīklas pieder rādītāju kolekcijai. Rādītāju kolekcija ir asu kolekcija, kas ģenerē vērtību, lai virzītu, norādītu vai norādītu lietotāja nodomus uz lietojumprogrammu.
(6) Tiek sākta rādītāju vākšana.
(7) Pogu lietojuma lapā ir definēts ievades vienums, kas sastāv no trim 1 bita laukiem. Katrs 1 bita lauks attiecīgi attēlo peles pogu 1, 2 un 3 un var atgriezt vērtību 0 vai 1.
(8) Pogu lietojuma lapas ievades vienums ir papildināts ar 13 citiem bitiem.
(9) Vēl viena vispārīga darbvirsmas lietojuma lapa ir norādīta peles pozīcijas aprakstīšanai ar X un Y asīm. Ievades vienums sastāv no diviem 8 bitu laukiem, kuru vērtība var būt no -127 līdz 127.
(10) Rādītāju kolekcija ir slēgta.
(11) Peļu kolekcija ir slēgta.
USB.org HID lapa

Autortiesības © 2025 Silicon Laboratories. Visas tiesības aizsargātas.

37/174

Beigāsview
USB ieviesēju forums (USB-IF) nodrošina rīku ar nosaukumu “HID Descriptor Tool” kopā ar citu informāciju par atskaites deskriptora formātu. Plašāku informāciju skatiet vietnē http://www.usb.org/developers/hidpage/.
USB ierīces HID klases programmēšanas rokasgrāmata
Šajā sadaļā ir paskaidrots, kā lietot HID klasi. USB ierīces HID klases inicializācija USB ierīces HID klases instances pievienošana ierīcei Saziņa, izmantojot USB ierīces HID klasi
USB ierīces HID klases inicializācija
Lai ierīcei pievienotu HID klases funkcionalitāti, vispirms ir jāinicializē klase, izsaucot funkciju sl_usbd_hid_init(). Piemēram,ampTālāk ir parādīts, kā izsaukt sl_usbd_hid_init(), izmantojot noklusējuma argumentus. Lai iegūtu plašāku informāciju par konfigurācijas argumentiem, kas jānodod sl_usbd_hid_init(), skatiet sadaļu USB ierīces HID klases lietojumprogrammu specifiskās konfigurācijas.
Example – sl_usbd_hid_init() izsaukšana
sl_status_t statuss;
status = sl_usbd_hid_init(); if (status ! SL_STATUS_OK) { /* Radās kļūda. Šeit jāpievieno kļūdu apstrāde. */
}
USB ierīces HID klases instances pievienošana ierīcei
Lai ierīcei pievienotu HID klases funkcionalitāti, ir jāizveido instance un pēc tam jāpievieno tā ierīces konfigurācijai(-ām).
HID klases instances izveide
Izveidojiet HID klases instanci, izsaucot funkciju sl_usbd_hid_create_instance(). PiemērsampZemāk esošajā attēlā ir parādīts, kā izveidot vienkāršu peles funkciju, izmantojot sl_usbd_hid_create_instance() un noklusējuma argumentus. Lai iegūtu papildinformāciju par konfigurācijas argumentiem, kas jānodod sl_usbd_hid_create_instance() funkcijai, skatiet sadaļu USB ierīces HID klases instances konfigurācijas.
Example – Peles funkcijas pievienošana, izmantojot sl_usbd_hid_create_instance()

Autortiesības © 2025 Silicon Laboratories. Visas tiesības aizsargātas.

38/174

Beigāsview
/* Globālās konstantes. */ 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ālie mainīgie.*/ uint8_t class_nbr; sl_status_t status;
sl_usbd_hid_callbacks_t app_usbd_hid_callbacks = { NULL, NULL, app_usbd_hid_get_report_desc, NULL, NULL, NULL, NULL, NULL, NULL };
void app_usbd_hid_get_report_desc(uint8_t class_nbr, const uint8_t **p_report_ptr, uint16_t *p_report_len)
{ (tukšs) klases_skaits;
*p_report_ptr = app_usbd_hid_mouse_report_desc; *p_report_len = sizeof(app_usbd_hid_mouse_report_desc); }
status = sl_usbd_hid_create_instance(SL_USBD_HID_SUBCLASS_BOOT, SL_USBD_HID_PROTOCOL_MOUSE, SL_USBD_HID_COUNTRY_CODE_NOT_SUPPORTED, Ex_USBD_HID_Mouse_ReportDesc, sizeof(Ex_USBD_HID_Mouse_ReportDesc), 2u, 2u, true, &app_usbd_hid_callbacks, &class_nbr);
Autortiesības © 2025 Silicon Laboratories. Visas tiesības aizsargātas.

39/174

Beigāsview
/* Radās kļūda. Šeit jāpievieno kļūdu apstrāde. */
HID klases instances pievienošana ierīces konfigurācijai(-ām) Pēc HID klases instances izveides to var pievienot konfigurācijai, izsaucot funkciju
sl_usbd_hid_add_to_configuration() . (Pievienot konfigurācijai)
BijušaisampZemāk esošajā attēlā parādīts, kā izsaukt sl_usbd_hid_add_to_configuration().
Exampfails – sl_usbd_hid_add_to_configuration() izsaukšana

sl_status_t statuss;

sl_usbd_hid_add_to_configuration(klases_nbr,

(1)

konfigurācijas_nbr_fs); (2)

ja (statuss ! SL_STATUS_OK) {

/* Radās kļūda. Šeit jāpievieno kļūdu apstrāde. */

}

(1) Klases numurs, kas jāpievieno sl_usbd_hid_create_instance() atgrieztajai konfigurācijai. (2) Konfigurācijas numurs (šeit tas tiek pievienots pilna ātruma konfigurācijai).
Saziņa, izmantojot USB ierīces HID klasi
Klases instances komunikācija Sinhronā komunikācija Klases instances komunikācija HID klase piedāvā šādas funkcijas saziņai ar resursdatoru.
Tabula — HID saziņas API kopsavilkums

Funkcijas nosaukums
sl_usb d _hid _read _sy nc() sl_usb d _hid _write _sy nc()

Darbība Saņem datus no resursdatora caur pārtraukuma izejas galapunktu. Šī funkcija bloķē. Nosūta datus uz resursdatoru caur pārtraukuma ieejas galapunktu. Šī funkcija bloķē.

Sinhronā komunikācija Sinhronā komunikācija nozīmē, ka pārsūtīšana tiek bloķēta. Pēc funkcijas izsaukuma lietojumprogramma bloķē darbību, līdz pārsūtīšana ir pabeigta ar kļūdu vai bez tās. Lai izvairītos no mūžīgas gaidīšanas, var norādīt taimautu. Piemēram,ampZemāk redzamajā attēlā parādīta lasīšanas un rakstīšanas operācija, kas saņem datus no resursdatora, izmantojot pārtraukuma izejas galapunktu, un nosūta datus uz resursdatoru, izmantojot pārtraukuma ieejas galapunktu.
Example – sinhrona HID lasīšana un rakstīšana

__ALIGNED(4) uint8_t rx_buf[2];

__ALIGNED(4) uint8_t tx_buf[2];

uint32_t

xfer_len;

sl_status_t

statuss;

status = sl_usbd_hid_read_sync(klases_nbr,

(1)

(tukšs *)rx_buf,

(2)

2u,

0u,

(3)

&xfer_len);

ja (statuss ! SL_STATUS_OK) {

/* Radās kļūda. Šeit jāpievieno kļūdu apstrāde. */

}

Autortiesības © 2025 Silicon Laboratories. Visas tiesības aizsargātas.

40/174

Beigāsview
status =sl_usbd_hid_read_sync(class_nbr,(1)(void *)rx_buf,(2)2u,0u,(3)&xfer_len);if(status ! SL_STATUS_OK){/* Radās kļūda. Šeit jāpievieno kļūdu apstrāde. */
status =sl_usbd_hid_write_sync(class_nbr,(1)(void *)tx_buf,(4)2u,0u,(3)&xfer_len);if(status ! SL_STATUS_OK){/* Radās kļūda. Šeit jāpievieno kļūdu apstrāde. */
(1) No sl_usbd_hid_create_instance() izveidotais klases instances numurs nodrošina iekšēju atsauci HID klasei, lai novirzītu pārsūtīšanu uz atbilstošo pārtraukuma OUT vai IN galapunktu.
(2) Lietojumprogrammai ir jānodrošina, ka funkcijai nodrošinātais buferis ir pietiekami liels, lai tajā ietilptu visi dati. Pretējā gadījumā var rasties sinhronizācijas problēmas. Iekšēji lasīšanas operācija tiek veikta vai nu ar vadības galapunktu, vai ar pārtraukuma galapunktu atkarībā no vadības lasīšanas karodziņa, kas iestatīts, izsaucot sl_usbd_hid_create_instance().
(3) Lai izvairītos no bezgalīgas bloķēšanas situācijas, var norādīt taimautu, kas izteikts milisekundēs. Vērtība 809 liek lietojumprogrammas uzdevumam gaidīt mūžīgi.
(4) Lietojumprogramma nodrošina inicializētu pārraides buferi.
HID periodisko ievades ziņojumu uzdevums
Lai taupītu joslas platumu, resursdatoram ir iespēja apklusināt ziņojumus no pārtraukuma IN galapunkta, ierobežojot ziņošanas biežumu. Lai to izdarītu, resursdatoram ir jānosūta SET_IDLE pieprasījums. Silicon Labs ieviestā HID klase satur iekšēju uzdevumu, kas respektē ziņošanas biežuma ierobežojumu, ko var piemērot vienam vai vairākiem ievades ziņojumiem. Attēlā “Periodisko ievades ziņojumu uzdevums” ir parādīta periodisko ievades ziņojumu uzdevumu darbība.
Attēls. Periodisko ievades pārskatu uzdevums

(1) Ierīce saņem SET_IDLE pieprasījumu. Šajā pieprasījumā ir norādīts dīkstāves ilgums konkrētajam pārskata ID. Plašāku informāciju par SET_IDLE pieprasījumu skatiet sadaļā
(2) Ziņojuma ID struktūra (piešķirta HID klases inicializācijas fāzē) tiek atjaunināta ar dīkstāves ilgumu. Dīkstāves ilguma skaitītājs tiek inicializēts ar dīkstāves ilguma vērtību. Ziņojuma ID struktūra tiek ievietota saistītā saraksta beigās, kurā ir ievades ziņojumu ID struktūras. Dīkstāves ilguma vērtība tiek izteikta 4 ms vienībā, kas atbilst diapazonam no 4 līdz 1020 ms.

Autortiesības © 2025 Silicon Laboratories. Visas tiesības aizsargātas.

41/174

Beigāsview
Ja dīkstāves ilgums ir mazāks par pārtraukuma IN galapunkta aptaujas intervālu, ziņojumi tiek ģenerēti aptaujas intervālā.
(3) Ik pēc 4 ms periodiskais ievades pārskatu uzdevums pārlūko ievades pārskatu ID sarakstu. Katram ievades pārskata ID uzdevums veic vienu no divām iespējamām darbībām. Uzdevuma perioda ilgums atbilst 4 ms vienībai, kas tiek izmantota dīkstāves ilgumam. Ja resursdators nav nosūtījis SET_IDLE pieprasījumus, ievades pārskatu ID saraksts ir tukšs un uzdevumam nav ko apstrādāt. Uzdevums apstrādā tikai tos pārskatu ID, kas atšķiras no 0 un kuru dīkstāves ilgums ir lielāks par 0.
(4) Dotajam ievades pārskata ID uzdevums pārbauda, ​​vai ir pagājis dīkstāves ilgums. Ja dīkstāves ilgums nav pagājis, skaitītājs tiek samazināts un resursdatoram netiek nosūtīts ievades pārskats.
(5) Ja dīkstāves ilgums ir pagājis (tas ir, dīkstāves ilguma skaitītājs ir sasniedzis nulli), ievades ziņojums tiek nosūtīts uz resursdatoru, izsaucot funkciju sl_usbd_hid_write_sync() caur pārtraukuma ieejas galapunktu.
(6) Uzdevuma nosūtītie ievades pārskata dati nāk no iekšējās datu bufera, kas piešķirts katram ievades pārskatam, kas aprakstīts pārskata deskriptorā. Lietojumprogrammas uzdevums var izsaukt funkciju sl_usbd_hid_write_sync(), lai nosūtītu ievades pārskatu. Pēc ievades pārskata datu nosūtīšanas sl_usbd_hid_write_sync() atjaunina iekšējo buferi, kas saistīts ar ievades pārskata ID, ar tikko nosūtītajiem datiem. Pēc tam periodisko ievades pārskatu uzdevums vienmēr nosūta tos pašus ievades pārskata datus pēc katra dīkstāves perioda un līdz lietojumprogrammas uzdevums atjaunina datus iekšējā buferī. Ir zināms bloķēšanas mehānisms, lai novērstu ievades pārskata ID datu bojāšanu, ja periodisko ievades pārskatu uzdevuma veiktās pārraides laikā notiek izmaiņas.

Autortiesības © 2025 Silicon Laboratories. Visas tiesības aizsargātas.

42/174

Beigāsview
Beigāsview
USB ierīces MSC klase
USB ierīces MSC klases pārsniegšanaview USB ierīces MSC klases resursu vajadzības no pamatsistēmas USB ierīces MSC klases konfigurācija USB ierīces MSC klases programmēšanas rokasgrāmata USB ierīces MSC klases krātuves draiveri
Šajā sadaļā ir aprakstīta lielapjoma atmiņas ierīču klase (MSC), ko atbalsta Silicon Labs USB ierīce. MSC ir protokols, kas nodrošina informācijas pārsūtīšanu starp USB ierīci un resursdatoru. Pārsūtītā informācija ir jebkas, ko var saglabāt elektroniski, piemēram, izpildāmās programmas, pirmkods, dokumenti, attēli, konfigurācijas dati vai citi teksta vai skaitliski dati. USB ierīce resursdatoram tiek rādīta kā ārējs atmiņas datu nesējs, kas nodrošina pārsūtīšanu. filear vilkšanas un nomešanas palīdzību.
A file sistēma nosaka, kā fileir sakārtoti datu nesējā. USB lielapjoma atmiņas klases specifikācija neprasa nekādu īpašu file sistēma, kas jāizmanto atbilstošās ierīcēs. Tā vietā tā nodrošina vienkāršu saskarni datu sektoru lasīšanai un rakstīšanai, izmantojot caurspīdīgo mazo datoru sistēmu saskarnes (SCSI) komandu kopu. Tādējādi operētājsistēmas var apstrādāt USB disku kā cieto disku un formatēt to ar jebkuru file sistēma, kas viņiem patīk.
USB lielapjoma atmiņas ierīču klase atbalsta divus transporta protokolus:
Tikai lielapjoma transporta (BOT) vadības/lielapjoma/pārtraukuma (CBI) transports (izmanto tikai diskešu diskdziņiem)
Lielapjoma atmiņas ierīču klase ievieš SCSI caurspīdīgo komandu kopu, izmantojot tikai BOT protokolu, kas nozīmē, ka datu un statusa informācijas pārsūtīšanai tiks izmantoti tikai lielapjoma galapunkti. MSC ieviešana atbalsta vairākas loģiskās vienības.
MSC ieviešana atbilst šādām specifikācijām:
Universālās seriālās kopnes masveida atmiņas klases specifikācija virsview, 1.3. pārskatītā versija, 2008. gada 5. septembris. Universālā seriālā kopne (Universal Serial Bus Mass Storage Class Bulk-Only Transport), 1.0. pārskatītā versija, 1999. gada 31. septembris.
USB ierīce MSC aCl ss pāriview
Protokola galapunkti Klases pieprasījumi Mazo datoru sistēmu saskarne (SCSI)
Protokols
Šajā sadaļā mēs apspriedīsim masveida atmiņas klases tikai lielapjoma transporta (BOT) protokolu. Tikai lielapjoma transporta protokolam ir trīstages:
Komandu pārsūtīšana Datu pārsūtīšana Statusa pārsūtīšana
Lielapjoma atmiņas komandas resursdators nosūta, izmantojot struktūru, ko sauc par komandu bloka apvalku (CBW). Komandām, kurām nepieciešams datu pārraides bloks,tage., resursdators mēģinās nosūtīt vai saņemt no ierīces precīzu baitu skaitu, kā norādīts CBW garuma un karodziņa laukos. Pēc datu pārraidestage, resursdators mēģina saņemt no ierīces komandas statusa apvalku (CSW), kurā ir detalizēti aprakstīts komandas statuss, kā arī jebkādi datu atlikumi (ja tādi ir).

Autortiesības © 2025 Silicon Laboratories. Visas tiesības aizsargātas.

43/174

Beigāsview
jebkura). Komandām, kas neietver datu pārraidestage., resursdators mēģina saņemt CSW tūlīt pēc CBW nosūtīšanas. Protokols ir detalizēti aprakstīts attēlā – MSC protokols.
Attēls – MSC protokols

Galapunkti
Ierīces pusē, saskaņā ar BOT specifikāciju, MSC sastāv no šādiem galapunktiem: vadības ieejas un izejas galapunktu pāris, ko sauc par noklusējuma galapunktu. Lielapjoma ieejas un izejas galapunktu pāris.
Zemāk esošajā tabulā ir norādīti dažādie galapunktu lietojumi.
Tabula — MSC galapunkta lietojums

Galapunkts
Vadības ieeja Vadības izeja Lielapjoma ieeja Lielapjoma izeja

Virziens
Ierīce uz resursdatoru Resursdatora uz ierīci Ierīce uz resursdatoru Resursdatora uz ierīci

Lietošana
Uzskaites un MSC klases specifiskie pieprasījumi Uzskaites un MSC klases specifiskie pieprasījumi Nosūtīt CSW un datus Saņemt CBW un datus

Nodarbību pieprasījumi
MSC BOT protokolam ir divi definēti vadības pieprasījumi. Šie pieprasījumi un to apraksti ir detalizēti aprakstīti tabulā zemāk.

Tabula — lielapjoma atmiņas klases pieprasījumi

Nodarbību pieprasījumi
Tikai lielapjoma atmiņas atiestatīšana

Apraksts
Šis pieprasījums tiek izmantots, lai atiestatītu lielapjoma atmiņas ierīci un ar to saistīto saskarni. Šis pieprasījums sagatavo ierīci nākamā komandu bloka saņemšanai.

Autortiesības © 2025 Silicon Laboratories. Visas tiesības aizsargātas.

44/174

Beigāsview

Nodarbību pieprasījumi

Apraksts

Iegūt maksimālo vērtību Šis pieprasījums tiek izmantots, lai atgrieztu ierīces atbalstīto augstāko loģiskās vienības numuru (LUN). Piemēram,ample, a

LUN

ierīce ar LUN 0 un LUN 1 atgriezīs vērtību 1. Ierīce ar vienu loģisko vienību atgriezīs 0 vai apturēs darbību.

pieprasījums. Maksimālā atgrieztā vērtība ir 15.

Mazo datoru sistēmu saskarne SCSI

Programmēšanas saskarnes līmenī MSC ierīce ievieš vienu no standarta datu nesēju komunikācijas protokoliem, piemēram, SCSI un SFF-8020i (ATAPI). “Programmēšanas saskarne” norāda, kurš protokols ir ieviests, un palīdz resursdatora operētājsistēmai ielādēt piemērotu ierīces draiveri saziņai ar USB atmiņas ierīci. SCSI ir visizplatītākais protokols, ko izmanto ar USB MSC atmiņas ierīcēm. Mēs nodrošinām MSC SCSI apakšklases ieviešanu, ko mūsu GSDK lietotāji var izmantot uzreiz pēc instalēšanas.
SCSI ir standartu kopums saziņas apstrādei starp datoriem un perifērijas ierīcēm. Šie standarti ietver komandas, protokolus, elektriskās saskarnes un optiskās saskarnes. Datu glabāšanas ierīces, kas izmanto citas aparatūras saskarnes, piemēram, USB, izmanto SCSI komandas, lai iegūtu ierīces/resursdatora informāciju, kontrolētu ierīces darbību un pārsūtītu datu blokus datu nesējā.
SCSI komandas aptver plašu ierīču tipu un funkciju klāstu, un tāpēc ierīcēm ir nepieciešama šo komandu apakškopa. Kopumā pamata saziņai ir nepieciešamas šādas komandas:
PIEPRASĪJUMA NOLASĪŠANAS KAPACITĀTE(10) NOLASĪŠANA(10) PIEPRASĪJUMS JUTĪBAS TESTS IERĪCE GATAVĪBA RAKSTĪŠANA(10)
USB ierīces MSC klases resursu vajadzības no pamatsistēmas

Katru reizi, kad USB konfigurācijai pievienojat MSC klases instanci, izmantojot funkciju sl_usbd_msc_add_to_configuration(), no kodola tiks piešķirti šādi resursi.

Resurss
Saskarnes Alternatīvās saskarnes Galapunkti Saskarņu grupas

Daudzums
1 1 2 0

Ņemiet vērā, ka šie skaitļi ir norādīti katrai konfigurācijai. Iestatot SL_USBD_INTERFACE_QUANTITY, SL_USBD_ALT_INTERFACE_QUANTITY, SL_USBD_INTERFACE_GROUP_QUANTITY un SL_USBD_DESCRIPTOR_QUANTITY konfigurācijas vērtības, neaizmirstiet ņemt vērā, cik konfigurāciju klase tiks pievienota. Attiecībā uz SL_USBD_OPEN_ENDPOINTS_QUANTITY konfigurācijas vērtību, tā kā galapunkti tiek atvērti tikai tad, kad resursdators iestata konfigurāciju, jums jāņem vērā tikai nepieciešamo galapunktu skaits klases instancei.
USB ierīces MSC klases konfigurācija

MSC klases konfigurēšanai tiek izmantotas divas konfigurācijas parametru grupas:
USB ierīces MSC klases lietojumprogrammām specifiskas konfigurācijas USB ierīces MSC klases loģiskās vienības konfigurācija
USB ierīces MSC klases lietojumprogrammām specifiskas konfigurācijas

Klases kompilēšanas laika konfigurācijas Klases instances izveide

Autortiesības © 2025 Silicon Laboratories. Visas tiesības aizsargātas.

45/174

Beigāsview

Klases kompilēšanas laika konfigurācijas
Silicon Labs USB ierīces MSC klasi un SCSI apakšklasi var konfigurēt kompilēšanas laikā, izmantojot #defines, kas atrodas sl_usbd_core_config.h failā. file.
Tabula — vispārīgās konfigurācijas konstantes

Konfigurācijas nosaukums

Apraksts

SL_USBD_MSC_CLASS_INST Klases instanču skaits, ko piešķirsiet, izsaukstot funkciju

Daudzums

sl_usbd_msc_scsi_create_instance() . (Šķiet, ka šī ir kļūda, un to var kļūdaini ierakstīt savā datorā.)

SL_USBD_MSC_CONFIGURA Konfigurācijas numurs, kuram var pievienot klases instanci, izmantojot izsaukumu uz

TION_QUANTITY

funkcija sl_usbd_msc_scsi_add_to_configuration().

SL_USBD_MSC_LUN_QUANT Loģisko vienību skaits katrā klases instancē, ko pievienosiet, izmantojot izsaukumu uz

ITY

funkcija sl_usbd_msc_scsi_lun_add().

SL_USBD_MSC_SCSI_64_BIT Iespējo vai atspējo 64 bitu loģiskās bloka adreses (LBA) atbalstu.
_LBA_EN

SL_USBD_MSC_DATA_BUFF Datu bufera lielums baitos katrā klases instancē ER_SIZE

Noklusējuma vērtība
2
1
2
0
512

Klases instances izveide
USB ierīces MSC SCSI klases instances izveide tiek veikta, izsaucot funkciju sl_usbd_msc_scsi_create_instance(). Šī funkcija pieņem vienu konfigurācijas argumentu, kas aprakstīts tālāk.
p_scsi_callbacks
p_scsi_callbacks ir rādītājs uz konfigurācijas struktūru ar tipu sl_usbd_msc_scsi_callbacks_t. Papildus izplatītajiem USB ierīču klases atzvanīšanas funkcijām connect/disconnect, tas nodrošina MSC klasi ar papildu atzvanīšanas funkciju kopu, kas tiek izsauktas, kad loģiskajā vienībā notiek notikums. Šim argumentam var nodot nulles rādītāju (NULL), ja atzvanīšanas nav nepieciešamas.
Zemāk esošajā tabulā ir aprakstīts katrs konfigurācijas lauks, kas pieejams šajā konfigurācijas struktūrā.
Tabula — sl_usbd_msc_scsi_callbacks_t konfigurācijas struktūra

Lauki

Apraksts

.iespējot

Izsaukts, kad USB klases instance ir veiksmīgi iespējota.

.disable Tiek izsaukts, ja USB klases instance ir atspējota.

.host_eject Funkcija tiek izsaukta, kad no resursdatora tiek izmesta loģiskā vienība.

Funkcijas paraksts
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);

USB ierīces MSC klases loģiskās vienības konfigurācija

Loģiskās vienības pievienošana MSC klases instancei tiek veikta, izsaucot funkciju sl_usbd_msc_lun_add(). Šī funkcija pieņem vienu konfigurācijas argumentu, kas aprakstīts tālāk.

p_lu_info

p_lu_info ir rādītājs uz sl_usbd_msc_scsi_lun_info_t tipa struktūru. Tā mērķis ir sniegt MSC klasei informāciju par loģisko vienību.
Zemāk esošajā tabulā ir aprakstīts katrs konfigurācijas lauks, kas pieejams šajā konfigurācijas struktūrā.

Tabula — sl_usbd_msc_scsi_lun_info_t konfigurācijas struktūra

Autortiesības © 2025 Silicon Laboratories. Visas tiesības aizsargātas.

46/174

Beigāsview

Lauks

Apraksts

Lauks
.scsi_lun_api_p tr

Apraksts
Norāde uz multivides draivera API, kas apstrādās šo loģisko vienību. Plašāku informāciju par krātuves draiveriem skatiet sadaļā USB ierīces MSC klases krātuves draiveri.

.ve nd or r_id _p tr
.produkta_id_punkts
.pro d uct_ revision_level .is_ read_only

Norāde uz virkni, kas satur loģiskās vienības piegādātāja identifikāciju. Virknes maksimālais garums ir 8 rakstzīmes. Norāde uz virkni, kas satur loģiskās vienības produkta identifikāciju. Virknes maksimālais garums ir 16 rakstzīmes. Produkta versijas līmenis.
Karodziņš, kas norāda, vai loģiskā vienība ir jāuztver kā tikai lasāma no viedokļa. view saimniekdatora (patiess) vai nē (aplams).

USB ierīces MSC klases programmēšanas rokasgrāmata

Šajā sadaļā ir paskaidrots, kā lietot MSC klasi.
USB ierīces MSC klases inicializācija USB ierīces MSC SCSI klases instances pievienošana ierīcei USB ierīces MSC klases loģisko vienību apstrāde
USB ierīces MSC klases inicializācija

Lai ierīcei pievienotu MSC SCSI klases funkcionalitāti, vispirms inicializējiet MSC bāzes klasi un SCSI apakšklasi, izsaucot funkcijas sl_usbd_msc_init() un sl_usbd_msc_scsi_init().
BijušaisampZemāk ir parādīts, kā izsaukt sl_usbd_msc_init() un sl_usbd_msc_scsi_init().

Example – sl_usbd_msc_init() un sl_usbd_msc_scsi_init() izsaukšana

sl_status_t statuss;
status = sl_usbd_msc_init(); if (status ! SL_STATUS_OK) { /* Radās kļūda. Šeit jāpievieno kļūdu apstrāde. */
}
status = sl_usbd_msc_scsi_init(); if (status ! SL_STATUS_OK) { /* Radās kļūda. Šeit jāpievieno kļūdu apstrāde. */
}
USB ierīces MSC SCSI klases instances pievienošana ierīcei
Lai ierīcei pievienotu MSC SCSI klases funkcionalitāti, vispirms izveidojiet instanci un pēc tam pievienojiet to ierīces konfigurācijai(-ām). Instancei jāpievieno vismaz viena loģiskā vienība.
MSC SCSI klases instances izveide
Izveidojiet MSC SCSI klases instanci, izsaucot funkciju sl_usbd_msc_scsi_create_instance().
BijušaisampTālāk ir parādīts, kā izsaukt sl_usbd_msc_scsi_create_instance(), izmantojot noklusējuma argumentus. Lai iegūtu plašāku informāciju par konfigurācijas argumentiem, kas jānodod sl_usbd_msc_scsi_create_instance(), skatiet sadaļu USB ierīces MSC klases lietojumprogrammu specifiskās konfigurācijas.
Exampfails – sl_usbd_ msc_scsi_create_instance() izsaukšana

Autortiesības © 2025 Silicon Laboratories. Visas tiesības aizsargātas.

47/174

Beigāsview

uint8_t klases_nbr; sl_status_t statuss;
sl_usbd_msc_scsi_callbacks_t app_usbd_msc_scsi_callbacks = { .enable = NULL, .disable = NULL, .host_eject = NULL };
status = sl_usbd_msc_scsi_create_instance(&app_usbd_msc_scsi_callbacks,0 &class_nbr);
ja (statuss ! SL_STATUS_OK) { /* Radās kļūda. Šeit jāpievieno kļūdu apstrāde. */ }
MSC klases instances pievienošana ierīces konfigurācijai(-ām)
Pēc MSC klases instances izveides to var pievienot konfigurācijai, izsaucot funkciju
sl_usbd_msc_add_to_configuration() . (Pievienot konfigurācijai)
BijušaisampZemāk ir parādīts, kā izsaukt sl_usbd_msc_scsi_add_to_configuration(), izmantojot noklusējuma argumentus.
Exampfails – sl_usbd_ msc_scsi_add_to_configuration() izsaukšana

sl_status_t statuss;

status = sl_usbd_msc_scsi_add_to_configuration(klases_nbr,

(1)

konfigurācijas_nbr_fs);

(2)

ja (statuss ! SL_STATUS_OK) {

/* Radās kļūda. Šeit jāpievieno kļūdu apstrāde. */

}

(1) Klases numurs, kas jāpievieno sl_usbd_msc_scsi_create_instance() atgrieztajai konfigurācijai. (32) Konfigurācijas numurs (šeit tas tiek pievienots pilna ātruma konfigurācijai).
USB ierīces MSC klases loģisko vienību apstrāde
Loģiskās vienības pievienošana Datu nesēja pievienošana/atvienošana
Loģiskās vienības pievienošana
Pievienojot loģisko vienību MSC SCSI klases instancei, tai jābūt saistītai ar datu nesēju (RAM disku, SD karti, zibatmiņu utt.). MSC klase izmanto datu nesēja draiveri, lai sazinātos ar datu nesēju. Šis draiveris būs jānodrošina, pievienojot loģisko vienību.
BijušaisampZemāk redzamajā attēlā parādīts, kā pievienot loģisko vienību, izmantojot sl_usbd_msc_scsi_lun_add().
Example – Loģiskās vienības pievienošana, izmantojot sl_usbd_msc_scsi_lun_add()

Autortiesības © 2025 Silicon Laboratories. Visas tiesības aizsargātas.

48/174

Beigāsview

sl_usbd_msc_scsi_lun_t *lu_object_ptr = NULL;

sl_usbd_msc_scsi_lun_info_t lu_info;

sl_status_t

statuss;

lu_info.sl_usbd_msc_scsi_lun_api_t = &app_usbd_scsi_storage_block_device_api;

lu_info.vendor_id_ptr

= “Silīcija laboratorijas”;

lu_info.product_id_ptr

= “bloķēt ierīci, piemēramample”;

lu_info.product_revision_level = 0x1000u;

lu_info.is_read_only

= nepatiess;

status = sl_usbd_msc_scsi_lun_add(klases_nbr, &lu_info, &lu_object_ptr);
ja (statuss ! SL_STATUS_OK) { /* Radās kļūda. Šeit jāpievieno kļūdu apstrāde. */ }

Datu nesēja pievienošana/atvienošana
Pēc loģiskās vienības pievienošanas ir jāpievieno datu nesējs, lai tas būtu pieejams resursdatora pusē. MSC klase piedāvā divas funkcijas, lai kontrolētu datu nesēja saistību ar loģisko vienību: sl_usbd_msc_scsi_lun_attach() un sl_usbd_msc_scsi_lun_detach(). Šīs funkcijas ļauj emulēt datu nesēja noņemšanu, lai nepieciešamības gadījumā atjaunotu piekļuvi no iegultās lietojumprogrammas.
BijušaisampZemāk ir parādīts, kā lietot funkcijas sl_usbd_msc_scsi_lun_attach() un sl_usbd_msc_scsi_lun_detach().
Example – Datu nesēja pievienošana/atvienošana

sl_status_t statuss;

status = sl_usbd_msc_scsi_lun_attach(lu_object_ptr); if (status ! SL_STATUS_OK) { /* Radās kļūda. Šeit jāpievieno kļūdu apstrāde. */
}

(1)

status = sl_usbd_msc_scsi_lun_detach(lu_object_ptr); ja (statuss ! SL_STATUS_OK) {
/* Radās kļūda. Šeit jāpievieno kļūdu apstrāde. */
}

(2)

status = sl_usbd_msc_scsi_lun_attach(lu_object_ptr), ja (statuss ! SL_STATUS_OK) {
/* Radās kļūda. Šeit jāpievieno kļūdu apstrāde. */
}

(3)

(1) No šī brīža, ja MSC ierīce ir savienota ar resursdatoru, datu nesējs ir pieejams.
(2) Ja MSC ierīce ir savienota ar resursdatoru, multivide tagad tiks rādīta kā nepieejama. Šajā brīdī darbības ar multividi var veikt no iegultās lietojumprogrammas.
(3) Atkal, ja MSC ierīce ir pievienota resursdatoram, datu nesējs tiks parādīts kā pievienots.
USB ierīces MSC klases krātuves draiveri
USB ierīces MSC klasei ir nepieciešams atmiņas draiveris, lai sazinātos ar atmiņas datu nesēju. Pašlaik Silicon Labs nepiedāvā draiverus.

Autortiesības © 2025 Silicon Laboratories. Visas tiesības aizsargātas.

49/174

Beigāsview
Draivera AI ir definēts ar typedef sl_usbd_msc_scsi_lun_api_t. Mūsu sl_usbd_msc_scsi_lun_api_t parametram jābūt iekļautam jūsu sl_usbd_msc_scsi_lun_info_t parametram, pievienojot loģisko bloku ar sl_usbd_msc_scsi_lun_add(). Plašāku informāciju par struktūrām skatiet sadaļā USB ierīce, MSC SCSI API. Krātuves draivera ieviešana var būt tikpat vienkārša kā sektoru masīvs RAM. Tipisks sektora lielums (t.i., bloka lielums) ir 512 lielapjoma atmiņas ierīcēm un 2048 CD-ROM diskiem.

Autortiesības © 2025 Silicon Laboratories. Visas tiesības aizsargātas.

50/174

Beigāsview
Beigāsview
USB ierīces pārdevēja klase
USB ierīču pārdevēja klases pārsniegšanaview USB ierīces pārdevēja klases resursu vajadzības no Core USB ierīces pārdevēja klases konfigurācijas USB ierīces pārdevēja klases programmēšanas rokasgrāmata Pārdevēja klase ļauj veidot pārdevējam specifiskas ierīces, kas var ieviest patentētu protokolu. Tā balstās uz divu lielapjoma galapunktu pāri, lai pārsūtītu datus starp resursdatoru un ierīci. Lielapjoma pārsūtīšana ir ērta lielu nestrukturētu datu apjomu pārsūtīšanai un nodrošina uzticamu datu apmaiņu, izmantojot kļūdu noteikšanas un atkārtotas mēģināšanas mehānismu. Papildus lielapjoma galapunktiem Pārdevēja klase var izmantot arī papildu pārtraukuma galapunktu pāri. Jebkura operētājsistēma (OS) var darboties ar Pārdevēja klasi, ja vien operētājsistēmai ir draiveris Pārdevēja klases apstrādei. Atkarībā no operētājsistēmas draiveris var būt vietējais vai pārdevējam specifisks. Piemēram, operētājsistēmā Microsoft Windows® jūsu lietojumprogramma mijiedarbojas ar Microsoft nodrošināto WinUSB draiveri, lai sazinātos ar pārdevēja ierīci.
USB ierīču pārdevēja klases pārsniegšanaview
Attēlā — Windows resursdatora un pārdevēja klases vispārīgā arhitektūra parāda resursdatora un ierīces vispārējo arhitektūru, izmantojot pārdevēja klasi. Šajā piemērāampPiemēram, resursdatora operētājsistēma ir MS Windows.
Attēls. Vispārīgā arhitektūra starp MS Windows resursdatoru un pārdevēja klasi

MS Windows pusē lietojumprogramma sazinās ar piegādātāja ierīci, mijiedarbojoties ar USB bibliotēku. Bibliotēkas, piemēram, libusb, piedāvā API ierīces un ar to saistīto kanālu pārvaldībai, kā arī saziņai ar ierīci, izmantojot vadības, masveida apstrādes un pārtraukumu galapunktus.
Ierīces pusē Vendor klase sastāv no šādiem galapunktiem:
Vadības ieejas un izejas galapunktu pāris, ko sauc par noklusējuma galapunktu. Lielapjoma ieejas un izejas galapunktu pāris.

Autortiesības © 2025 Silicon Laboratories. Visas tiesības aizsargātas.

51/174

Beigāsview

Pārtraukuma IN un OUT galapunktu pāris. Šis pāris nav obligāts. Zemāk esošajā tabulā ir norādīts dažādu galapunktu lietojums:
Tabula — pārdevēja klases galapunktu lietojums

Beigu punkta virziens

Vadība IN
Kontrole
ĀRĀ
Lielapjoma IN

Ierīces-resursdatora
>No resursdatora uz ierīci
Ierīces-resursdatora

Lielapjoma IZPĀRDOŠANA
Pārtraukt IN
Pārtraukt
ĀRĀ

No resursdatora uz ierīci
Ierīces-resursdatora
No resursdatora uz ierīci

Lietošana
Standarta uzskaitījuma pieprasījumi un pārdevējam specifiski pieprasījumi.
Standarta uzskaitījuma pieprasījumi un pārdevējam specifiski pieprasījumi.
Neapstrādātu datu komunikācija. Datus var strukturēt saskaņā ar patentētu protokolu.
Neapstrādātu datu komunikācija. Datus var strukturēt saskaņā ar patentētu protokolu.
Neapstrādātu datu komunikācija vai paziņojums. Datus var strukturēt saskaņā ar patentētu protokolu. Neapstrādātu datu komunikācija vai paziņojums. Datus var strukturēt saskaņā ar patentētu protokolu.

Ierīces lietojumprogramma var izmantot masveida un pārtraukumu galapunktus, lai nosūtītu vai saņemtu datus uz resursdatoru vai no tā. Tā var izmantot tikai noklusējuma galapunktu, lai atšifrētu resursdatora nosūtītos pārdevēja specifiskos pieprasījumus. Standarta pieprasījumus iekšēji pārvalda Silicon Labs USB ierīces pamatslānis.
USB ierīces pārdevēja klases resursu vajadzības no pamatsistēmas

Katru reizi, kad konfigurācijai pievienojat pārdevēja klases instanci, izmantojot funkciju sl_usbd_vendor_add_to_configuration(), no kodola tiks piešķirti šādi resursi.

Resurss
Saskarnes Alternatīvās saskarnes Galapunkti Saskarņu grupas

Daudzums
1 1 2 (4, ja iespējojāt pārtraukumu galapunktus) 0

Ņemiet vērā, ka šie skaitļi ir norādīti katrai konfigurācijai. Iestatot SL_USBD_INTERFACE_QUANTITY, SL_USBD_ALT_INTERFACE_QUANTITY, SL_USBD_INTERFACE_GROUP_QUANTITY un SL_USBD_DESCRIPTOR_QUANTITY konfigurācijas vērtības, neaizmirstiet ņemt vērā, cik konfigurāciju klase tiks pievienota. Attiecībā uz SL_USBD_OPEN_ENDPOINTS_QUANTITY konfigurācijas vērtību, tā kā galapunkti tiek atvērti tikai tad, kad resursdators iestata konfigurāciju, jums jāņem vērā tikai nepieciešamo galapunktu skaits klases instancei.
USB ierīces piegādātāja klases konfigurācija

Lai konfigurētu pārdevēja klasi, tiek izmantotas divas konfigurācijas parametru grupas:
USB ierīces piegādātāja klases lietojumprogrammu specifiskās konfigurācijas USB ierīces piegādātāja klases instances konfigurācijas
USB ierīces piegādātāja klases lietojumprogrammām specifiskas konfigurācijas
Vispirms, lai izmantotu Silicon Labs USB ierīces piegādātāja klases moduli, pielāgojiet piegādātāja kompilēšanas laika konfigurācijas definīcijas atbilstoši jūsu lietojumprogrammas vajadzībām. Tās ir pārgrupētas sl_usbd_core_config.h galvenē. file sadaļā “Piegādātājs”. Daudzuma konfigurāciju mērķis ir informēt USB ierīces moduli par to, cik USB piegādātāja objektu piešķirt.
Zemāk esošajā tabulā ir aprakstīta katra konfigurācijas definīcija.

Autortiesības © 2025 Silicon Laboratories. Visas tiesības aizsargātas.

52/174

Beigāsview

Tabula — USB ierīces piegādātāja konfigurācijas definīcijas

Konfigurācijas nosaukums

Apraksts

Noklusējuma vērtība

SL_USBD_VENDOR_CLASS_INSTANCE_QUANTITY Klases instanču skaits, ko piešķirsiet, izsaukstot funkciju sl_usbd_vendor_create_instance().

SL_USBD_VENDOR_CONFIGURATION_QUANTITY Konfigurāciju skaits. Pārdevēja klases instances var pievienot vienai vai vairākām konfigurācijām, izsaucot funkciju sl_usbd_vendor_add_to_configuration().

USB ierīces piegādātāja klases instances konfigurācijas

Šajā sadaļā ir definētas konfigurācijas, kas saistītas ar Vendor klases instancēm.
Klases instances izveide intr_en intervāls p_vendor_callbacks
Klases instances izveide

Vendor klases instances izveide tiek veikta, izsaucot funkciju sl_usbd_vendor_create_instance(), kas pieņem trīs konfigurācijas argumentus, kas aprakstīti tālāk.

intr_lv
Būla vērtība, kas norāda, vai jāpievieno pārtraukuma galapunktu pāris.

Vērtība
patiess nepatiess

Apraksts
Iegultajai lietojumprogrammai tiks pievienots un padarīts pieejams IN/OUT galapunktu pāris. Pārtraukuma galapunkts netiks pievienots. Būs pieejams tikai Bulk IN/OUT galapunktu pāris.

intervāls
Ja iestatāt intr_en uz true, varat norādīt pārtraukuma galapunktu aptaujas intervālu (milisekundēs). Ja iestatāt intr_en uz false, varat iestatīt intervālu uz 0, jo klase to ignorēs.
p_vendor_callbacks
p_vendor_callbacks ir rādītājs uz atzvanīšanas funkciju struktūras mainīgo, ko var norādīt, lai apstrādātu klasei specifiskus vadības pieprasījumus. Ja neizmantojat nekādus klasei specifiskus pieprasījumus vai ir nepieciešams iespējot/atspējot paziņojumus, var iestatīt uz NULL.
BijušaisampZemāk esošais fails nodrošina jūsu klasei specifiskā pieprasījumu apstrādātāja paredzēto parakstu.
Example – Klasei specifiskas pieprasījuma funkcijas paraksts

void app_usbd_vendor_req_handle(uint8_t)

klases_nr, (1)

konstante sl_usbd_setup_req_t *p_setup_req); (2)

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

(1) Pārdevēja klases instances numurs.

Autortiesības © 2025 Silicon Laboratories. Visas tiesības aizsargātas.

53/174

Beigāsview

(2) Norāde uz saņemto iestatīšanas pieprasījumu no resursdatora.
USB ierīču pārdevēja klases programmēšanas rokasgrāmata
Šajā sadaļā ir paskaidrots, kā lietot klasi “Vendor”. USB ierīces “Vendor” klases inicializācija. USB ierīces “Vendor” klases instances pievienošana ierīcei. Saziņa, izmantojot USB ierīces “Vendor” klasi.
USB ierīces pārdevēja klases inicializācija
Lai ierīcei pievienotu pārdevēja klases funkcionalitāti, vispirms inicializējiet klasi, izsaucot funkciju USBD_Vendor_Init(). Piemēram,ampZemāk esošajā attēlā parādīts, kā izsaukt sl_usbd_vendor_init().
Example – sl_usbd_vendor_init() izsaukšana

sl_status_t statuss;
status = sl_usbd_vendor_init(); ja (status ! SL_STATUS_OK) { /* Radās kļūda. Šeit jāpievieno kļūdu apstrāde. */ }
USB ierīces piegādātāja klases instances pievienošana ierīcei
Lai ierīcei pievienotu pārdevēja klases funkcionalitāti, vispirms ir jāizveido instance un pēc tam jāpievieno tā ierīces konfigurācijai(-ām).
Pārdevēja klases instances izveide Pārdevēja klases instances pievienošana ierīces konfigurācijai(-ām)
Pārdevēja klases instances izveide
Izveidojiet Vendor klases instanci, izsaucot funkciju sl_usbd_vendor_create_instance(). PiemērsampTālāk ir parādīts, kā izsaukt sl_usbd_vendor_create_instance(), izmantojot noklusējuma argumentus. Lai iegūtu papildinformāciju par konfigurācijas argumentiem, kas jānodod sl_usbd_vendor_create_instance(), skatiet sadaļu USB ierīču piegādātāju klases instanču konfigurācijas.
Exampfails – sl_usbd_vendor_create_instance() izsaukšana

uint8_t klases_nbr; sl_status_t statuss;

status = sl_usbd_vendor_create_instance(false,

(1)

0u,

(2)

lietotnes_usbd_pārdevēja_atzvanīšanas_funkcijas, (3)

&klases_nbr);

ja (statuss ! SL_STATUS_OK) {

/* Radās kļūda. Šeit jāpievieno kļūdu apstrāde. */

}

(1) Šajā klases instancē nav pārtraukumu galapunktu. (2) Intervāls tiek ignorēts, jo pārtraukumu galapunkti ir atspējoti.

Autortiesības © 2025 Silicon Laboratories. Visas tiesības aizsargātas.

54/174

Beigāsview

(3) Atzvanīšanas funkcija, kas ir daļa no jūsu lietojumprogrammas un apstrādā pārdevējam specifiskus klases pieprasījumus. Plašāku informāciju skatiet sadaļā Saziņa, izmantojot USB ierīces pārdevēja klasi. Pārdevēja klases instances pievienošana ierīces konfigurācijai(-ām) Pēc pārdevēja klases instances izveides varat to pievienot konfigurācijai, izsaucot funkciju USBD_Vendor_ConfigAdd(). PiemērsampZemāk esošajā attēlā parādīts, kā izsaukt sl_usbd_vendor_add_to_configuration(), izmantojot noklusējuma argumentus.
Exampfails – sl_usbd_vendor_add_to_configuration() izsaukšana

sl_status_t statuss;

status = sl_usbd_vendor_add_to_configuration(klases_nbr,

(1)

konfigurācijas_nbr_fs);

(2)

ja (statuss ! SL_STATUS_OK) {

/* Radās kļūda. Šeit jāpievieno kļūdu apstrāde. */

}

(1) Klases numurs, kas jāpievieno sl_usbd_vendor_create_instance() atgrieztajai konfigurācijai. (2) Konfigurācijas numurs (šeit tas tiek pievienots pilna ātruma konfigurācijai).
Saziņa, izmantojot USB ierīču piegādātāja klasi
Vispārīgi par sinhrono komunikāciju Asinhronā komunikāciju Piegādātāja pieprasījums Vispārīgi par Piegādātāja klasi ir pieejamas šādas funkcijas saziņai ar resursdatoru. Plašāku informāciju par funkcijas parametriem skatiet USB ierīces piegādātāja API.
Tabula — pārdevēja saziņas API kopsavilkums

Funkcijas nosaukums
sl_usb d _v e nd vai r_ nolasīt _bulk_sy nc() sl_usb d _v e nd vai r_ rakstīt _bulk_sy nc() sl_usb d _v e nd vai r_ nolasīt _bulk_asy nc() sl_usb d _v e nd vai r_ rakstīt _bulk_asy nc() sl_usb d _v e nd vai r_ nolasīt _inter rrup t_sy nc() sl_usb d _v e nd vai r_ rakstīt _inter rrup t_sy nc() sl_usb d _v e nd vai r_ nolasīt _inter rrup t_asy nc
()
sl_usb d _v e nd or_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-
bloķēšana.
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

Autortiesības © 2025 Silicon Laboratories. Visas tiesības aizsargātas.

55/174

Beigāsview

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

statuss;

status = sl_usbd_vendor_read_bulk_sync(class_nbr,

(1)

(void *)&rx_buf[0],

(2)

2u,

0u,

(3)

&xfer_len);

ja (statuss ! SL_STATUS_OK) {

/* $$$$ Novērst kļūdu. */

}

status = sl_usbd_vendor_write_bulk_sync( class_nbr,

(1)

(void *)&tx_buf[0],

(4)

2u,

0u,

(3)

false,

(5)

&xfer_len);

ja (statuss ! SL_STATUS_OK) {

/* $$$$ Novērst kļūdu. */

}

(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) Lietojumprogramma nodrošina inicializētu pārraides buferi.
(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.
Asinhronā komunikācija
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

Autortiesības © 2025 Silicon Laboratories. Visas tiesības aizsargātas.

56/174

Beigāsview

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

statuss;

status = sl_usbd_vendor_read_bulk_async(class_nbr,

(void *)&rx_buf[0],

(2)

2u,

app_usbd_vendor_rx_completed,

NULL);

(4)

ja (statuss ! SL_STATUS_OK) {

/* $$$$ Novērst kļūdu. */

}

status = sl_usbd_vendor_write_bulk_async(class_nbr,

(void *)&tx_buf[0],

(5)

2u,

app_usbd_vendor_tx_completed,

NULL,

(4)

false);

(6)

ja (statuss ! SL_STATUS_OK) {

/* $$$$ Novērst kļūdu. */

}

}

(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)

{

ja (statuss ! SL_STATUS_OK) {

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

} cits {

/* $$$$ Novērst kļūdu. */

}

}

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)

{

ja (statuss ! SL_STATUS_OK) {

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

} cits {

/* $$$$ Novērst kļūdu. */

}

}

(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.

Autortiesības © 2025 Silicon Laboratories. Visas tiesības aizsargātas.

57/174

Beigāsview
(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

Autortiesības © 2025 Silicon Laboratories. Visas tiesības aizsargātas.

58/174

Beigāsview

#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 statuss;

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;

noklusējuma:

(6)

// Request is not supported.

Autortiesības © 2025 Silicon Laboratories. Visas tiesības aizsargātas.

59/174

Beigāsview

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 klāt.

*/

} 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.

Autortiesības © 2025 Silicon Laboratories. Visas tiesības aizsargātas.

60/174

API dokumentācija
API dokumentācija
API dokumentācija
Moduļu saraksts
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

Apraksts
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

Autortiesības © 2025 Silicon Laboratories. Visas tiesības aizsargātas.

61/174

USB Device API
USB Device API
USB Device API
USB Device API.
Moduļi
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

Autortiesības © 2025 Silicon Laboratories. Visas tiesības aizsargātas.

62/174

USB Device ACM API

USB Device ACM API

USB Device ACM API

USB Device CDC ACM API.
Moduļi
a sl_usbd_cdc_ cm_line_coding_t sl_usbd_cdc_acm_callbacks_t
Funkcijas

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).

Autortiesības © 2025 Silicon Laboratories. Visas tiesības aizsargātas.

63/174

USB Device ACM API
Makro
#define SL_USBD_CDC_ACM_NBR_NONE 255u
MODULIS.
#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
Autortiesības © 2025 Silicon Laboratories. Visas tiesības aizsargātas.

64/174

USB Device ACM API

Tips
nederīgs

Direction N/A

Argument Name

MACROS GLOBAL CONSTANTS FUNCTION PROTOTYPES CDC ACM FUNCTIONS

Initialize the CDC ACM serial emulation subclass.
Atgriežas

Returns SL_STATUS_OK on success or another SL_STATUS code on failure.

Apraksts

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.
Parametri

Tips
uint16_t
uint16_t

Direction Argument Name

Apraksts

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.

Atgriežas

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.
Parametri

Tips
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.

Atgriežas

Autortiesības © 2025 Silicon Laboratories. Visas tiesības aizsargātas.

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.
Parametri

Tips

Virziens

Argument Name

Apraksts

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

Dokumenti / Resursi

SILICON LABS USB Device Stack [pdfLietošanas instrukcija
USB Device Stack, Device Stack, Stack

Atsauces

Atstājiet komentāru

Jūsu e-pasta adrese netiks publicēta. Obligātie lauki ir atzīmēti *