Manwal tal-Istruzzjonijiet tal-Munzell tal-Apparat USB tas-SILICON LABS

Munzell ta' Apparati USB

Speċifikazzjonijiet

  • Verżjoni USB: 1.5.1
  • Data ta 'Ħruġ: 21 ta' Lulju, 2025
  • Verżjoni tal-SDK tas-Sempliċità: 2025.6.1

Prodott Overview

L-istack ta' apparati USB minn Silicon Labs jipprovdi versatili u
konnettività USB faċli biex tintuża għal proġetti tal-IoT, li tiffaċilita
komunikazzjoni bejn il-koproċessuri tan-netwerk u l-hosts.

Karatteristiċi

  • Munzell effiċjenti ta' apparati USB
  • Ideali għal proġetti tal-IoT
  • Appoġġ għall-komunikazzjoni bejn il-koproċessuri tan-netwerk u
    ospitanti

Istruzzjonijiet għall-Użu tal-Prodott

Konfigurazzjoni tal-Apparat USB

Ikkonfigura s-settings tal-apparat USB skont il-proġett tiegħek
rekwiżiti billi tirreferi għat-taqsima tal-Konfigurazzjoni tal-Apparat USB
fid-dokumentazzjoni.

Gwida għall-Ipprogrammar ta' Apparati USB

Segwi l-Gwida għall-Ipprogrammar tal-Apparat USB biex tifhem kif
programm u interazzjoni mat-tagħmir USB għal diversi
applikazzjonijiet.

Klassijiet ta' Apparati USB

It-taqsima tal-Klassijiet tal-Apparat USB tipprovdi aktar minnview ta differenti
klassijiet bħal CDC ACM, HID, MSC SCSI, u Vendor Class. Agħżel il-
klassi xierqa bbażata fuq il-funzjonalità tal-apparat tiegħek.

Issolvi l-Problemi ta' Apparat USB

Jekk tiltaqa' ma' xi problemi bl-apparat USB, irreferi għall-
Taqsima tas-Soluzzjoni tas-Soluzzjonijiet tat-Tagħmir USB għal soluzzjonijiet u debugging
pariri.

Ospitanti tal-USB tas-Sistema Operattiva tal-Microsoft Windows

Jekk qed tuża l-apparat USB b'sistema operattiva tal-Microsoft Windows
Ospitanti, kun żgur li ssegwi l-linji gwida pprovduti fil-
dokumentazzjoni għal integrazzjoni bla xkiel.

FAQ

Q: X'inhuma xi ex komuniampinqas minn apparati li nista' nibni bl-użu tagħhom
dan il-munzell tal-USB?

A: L-istack tal-USB jippermettilek tibni apparati bħal
Adapters USB-to-serial, ġurdien jew tastieri, ħażna li tista' titneħħa
apparati, u apparati personalizzati.

M: Hemm xi rekwiżiti speċifiċi tas-softwer għall-użu ta' dan
Munzell ta' apparati USB?

A: Is-softwer kompatibbli jinkludi Simplicity SDK, Simplicity
Studio, Simplicity Commander, GCC (Il-Kollezzjoni tal-Kumpilaturi GNU),
IAR Embedded Workbench għal ARM, u IAR EWARM.

USB tal-Bus tas-Serje Universali

USB tal-Bus tas-Serje Universali

USB Fuqview Fuqview
Noti dwar ir-Rilaxx USB
Speċifikazzjonijiet u Karatteristiċi Aktar minnview
Konfigurazzjoni tal-Apparat USB Fuqview
Gwida għall-Ipprogrammar ta' Apparat USB Aktar 'il Fuqview
Klassijiet ta' Apparati USB Aktar minnview Klassi CDC ACM Overview Klassi HID Fuqview Klassi MSC SCSI Overview Klassi tal-Bejjiegħ Fuqview
Dokumentazzjoni tal-API tal-USB API tal-Apparat USB API tal-ACM tal-Apparat USB a sl_usbd_cdc_ cm_line_coding_t sl_usbd_cdc_acm_callbacks_t API tas-CDC tal-Apparat USB a sl_usbd_cdc_subcl ss_driver_t API Ewlenija tal-Apparat USB
sl_usbd_device_config_t sl_usbd_setup_req_t
API tal-HID tal-Apparat USB sl_usbd_cl ss_driver_t
API tal-MSC tal-Apparat USB sl_usbd_hid_callbacks_t
API tal-MSC SCSI tal-Apparat USB sl_usbd_msc_subcl ss_driver_t
sl_usbd_msc_scsi_callbacks_t

Copyright © 2025 Silicon Laboratories. Id-drittijiet kollha riżervati.

1/174

USB tal-Bus tas-Serje Universali
sl_usbd_msc_scsi_lun_pi
sl_usbd_msc_scsi_lun_info sl_usbd_msc_scsi_lun
API tal-Bejjiegħ tal-Apparat USB sl_usbd_vendor_callbacks_t
Dokumentazzjoni tal-API Soluzzjoni tas-Soluzzjoni ta' Apparati USB
Fuqview Ospitanti tal-USB tas-Sistema Operattiva tal-Microsoft Windows
Fuqview

Copyright © 2025 Silicon Laboratories. Id-drittijiet kollha riżervati.

2/174

Fuqview
Fuqview
Apparat USB
L-USB hija waħda mill-aktar interfaċċji ta' komunikazzjoni ta' suċċess fl-istorja tas-sistemi tal-kompjuter u hija l-istandard de facto għall-konnessjoni ta' periferali tal-kompjuter. L-istack tal-Apparat USB ta' Silicon Labs huwa modulu ta' apparat USB iddisinjat speċifikament għal sistemi integrati. Mibni mill-bidu nett bil-kwalità, l-iskalabbiltà u l-affidabbiltà ta' Silicon Labs, għadda minn proċess rigoruż ta' validazzjoni biex jikkonforma mal-ispeċifikazzjoni tal-USB 2.0. Din id-dokumentazzjoni tiddeskrivi kif tinizjalizza, tibda u tuża l-istack tal-Apparat USB ta' Silicon Labs. Tispjega l-valuri varji tal-konfigurazzjoni u l-użi tagħhom. Tinkludi wkoll...view tat-teknoloġija, it-tipi ta' possibbiltajiet ta' konfigurazzjoni, il-proċeduri ta' implimentazzjoni, u l-eż.ampinqas minn użu tipiku għal kull klassi disponibbli.
Biex tgħinek tifhem il-kunċetti tal-USB malajr, id-dokumentazzjoni fiha ħafna eżempjiampfajls ta' USB b'funzjonijiet bażiċi. Dawn l-eż.ampIl-fajls se jipprovdulek qafas li jippermettilek tibni apparati malajr. Dawn l-eż.amples jinkludu:
Adapter USB-għal-serje (Klassi ta' Apparat ta' Komunikazzjoni) Maws jew tastiera (Klassi ta' Apparat ta' Interfaċċja Umana) Apparat ta' ħażna li jista' jitneħħa (Klassi ta' Ħażna tal-Massa) Apparat apposta (Klassi tal-Bejjiegħ)
Dan li ġej huwa l-aktarview tat-taqsimiet tad-dokumentazzjoni:
Speċifikazzjonijiet u Karatteristiċi Konfigurazzjoni tal-Apparat USB Gwida għall-Ipprogrammar tal-Apparat USB Klassijiet tal-Apparat USB
Klassi CDC ACM Klassi HID Klassi MSC SCSI Klassi tal-Bejjiegħ Apparat USB Issolvi l-Problemi tas-Sistema Operattiva Microsoft Windows Host USB

Copyright © 2025 Silicon Laboratories. Id-drittijiet kollha riżervati.

3/174

USB
USB

Verżjoni USB 1.5.1 21 ta' Lulju, 2025 – Noti dwar ir-Rilaxx
Verżjoni 2025.6.1 tal-SDK tas-Sempliċità
L-istack effiċjenti ta' apparati USB ta' Silicon Labs joffri konnettività USB versatili u faċli biex tintuża, ideali għal proġetti tal-IoT, inkluża komunikazzjoni bejn ko-proċessuri tan-netwerk u hosts. Ikklikkja hawn għal rilaxxi preċedenti.
Sommarju tar-Rilaxx
Karatteristiċi Ewlenin | Bidliet fl-API | Korrezzjonijiet ta' Bugs | Attivazzjoni taċ-Ċippa
Karatteristiċi Ewlenin
Tibdil fil-pjattaforma sottostanti biss.
Bidliet fl-API
Xejn.
Bug Fixs
Xejn.
Attivazzjoni taċ-Ċippa
Xejn.
Karatteristiċi Ewlenin
Karatteristiċi Ġodda | Titjib | Karatteristiċi Mneħħija | Karatteristiċi Deprekati
Karatteristiċi ġodda
Xejn.
Titjib
Tibdil fil-pjattaforma sottostanti biss.
Karatteristiċi mneħħija
Xejn.
Karatteristiċi skaduti
Xejn.
Bidliet fl-API
APIs Ġodda | APIs Modifikati | APIs Imneħħija | APIs Deprekati
APIs ġodda

Copyright © 2025 Silicon Laboratories. Id-drittijiet kollha riżervati.

4/174

USB
Xejn.
APIs Modifikati
Xejn.
APIs imneħħija
Xejn.
APIs deprekati
Xejn.
Bug Fixs
Xejn.
Attivazzjoni taċ-Ċippa
Xejn.
Applikazzjoni Eżampil-Bidliet
Ġdid Examples | Modifikat Examples | Tneħħew l-Examples | Ex Deprekatamples
Ġdid Examples
Xejn.
Modifikat Examples
Xejn.
Imneħħija Eżamples
Xejn.
Ex Deprekatamples
Xejn.
Impatt tal-Bidliet fir-Rilaxx
Dikjarazzjonijiet tal-Impatt | Gwida dwar il-Migrazzjoni
Dikjarazzjonijiet tal-Impatt
Xejn.
Gwida dwar il-Migrazzjoni
Xejn.
Kwistjonijiet Magħrufa u Limitazzjonijiet
Xejn.
Bl-użu ta' dan ir-rilaxx

Copyright © 2025 Silicon Laboratories. Id-drittijiet kollha riżervati.

5/174

USB

X'hemm fir-Rilaxx? | Softwer Kompatibbli | Installazzjoni u Użu | Għajnuna u Feedback

X'hemm fir-Rilaxx?

Applikazzjoni ta' Munzell ta' Apparat USB Examples
Software Kompatibbli

Software
Simplicity SDK Simplicity Studio Simplicity Commander GCC Il-Kollezzjoni tal-Kumpilaturi GNU) IAR Embedded Workbench għal ARM IAR EWARM

Verżjoni jew Varjant Kompatibbli
2025.6.0 5.11.0 1.18.2 (ipprovdut ma' Simplicity Studio) 12.2.1 (ipprovdut ma' Simplicity Studio) 9.40.1 (ipprovdut ma' Simplicity Studio)

Installazzjoni u Użu

Biex tibda l-iżvilupp tiegħek ara tagħna:
Gwida għall-Ipprogrammar ta' Apparati USB. Dokumentazzjoni tal-API.
Għal informazzjoni dwar l-Integrazzjoni tas-Secure Vault, ara Secure Vault.
Biex terġa 'view Notifiki ta' Konsulenza dwar is-Sigurtà u s-Softwer u immaniġġja l-preferenzi tan-notifika tiegħek:
Mur fuq https://community.silabs.com/. Idħol bil-kredenzjali tal-kont tiegħek. Ikklikkja l-pro tiegħekfile ikona fir-rokna ta' fuq tal-lemin tal-paġna.
õ Agħżel Notifiki mill-menù dropdown. ö Fit-taqsima Notifiki, mur fit-tab In-Notifiki tal-Prodott Tiegħi biex terġa'view Konsulenza storika dwar is-Sigurtà u s-Softwer
notifiki
÷ Biex timmaniġġja l-preferenzi tiegħek, uża t-tab Immaniġġja n-Notifiki biex tippersonalizza liema aġġornamenti tal-prodott u avviżi tixtieq
tirċievi.
Għal settings ta' konfigurazzjoni rakkomandati, ara hawn.
Biex titgħallem aktar dwar is-softwer f'din ir-rilaxx, ara d-dokumentazzjoni online tagħna.
Għajnuna u Feedback

Ikkuntattja l-Appoġġ ta' Silicon Labs. Biex tuża l-għodda Ask AI tagħna biex tikseb tweġibiet, ara l-qasam tat-tiftix fil-parti ta' fuq ta' din il-paġna.

Nota: Ask AI hija sperimentali.

Ikseb għajnuna mill-komunità tal-iżviluppaturi tagħna.
Politika ta' Rilaxx u Manutenzjoni ta' SDK
Ara l-Politika tagħna dwar ir-Rilaxx u l-Manutenzjoni tal-SDK.

Copyright © 2025 Silicon Laboratories. Id-drittijiet kollha riżervati.

6/174

Fuqview
Fuqview
Speċifikazzjonijiet
Jikkonforma mar-“Reviżjoni 2.0 tal-ispeċifikazzjoni tal-Universal Serial Bus” Jimplimenta l-“Avviż ta' Bidla fl-Inġinerija tad-Deskrittur tal-Assoċjazzjoni tal-Interfejs (ECN)” Tipi ta' trasferiment
Klassijiet tal-USB ta' Interruzzjoni Bulk tal-Kontroll Klassi tal-Apparat ta' Komunikazzjoni (CDC) Mudell ta' Kontroll Astratt (ACM) Apparat tal-Interfaċċja Umana (HID) Klassi tal-Ħażna tal-Massa (MSC) Qafas tal-klassi speċifiku għall-bejjiegħ
Karatteristiċi
Skalabbli biex jinkludi biss il-karatteristiċi meħtieġa biex jimminimizza l-impronta tal-memorja Jappoġġja Full-speed (12 Mbit/s) Jappoġġja apparati komposti (multi-funzjoni) Jappoġġja apparati multi-konfigurazzjoni Jappoġġja funzjonalitajiet li jiffrankaw l-enerġija tal-USB (sospensjoni u kompliment tal-apparat) Integrazzjoni sħiħa tal-Mass Storage Class f'Micrium OS File Modulu tas-sistema Żviluppat bis-saff ta' astrazzjoni CMSIS-RTOS2 sabiex ikun jista' jaħdem ma' OSes differenti. Silicon Labs GSDK jiġi bil-portijiet tas-sistemi operattivi FreeRTOS u Micrium.

Copyright © 2025 Silicon Laboratories. Id-drittijiet kollha riżervati.

7/174

Fuqview
Fuqview

Konfigurazzjoni tal-Apparat USB

Din it-taqsima tiddiskuti kif tikkonfigura t-Tagħmir USB ta' Silicon Labs. Hemm tliet gruppi ta' parametri ta' konfigurazzjoni, kif ġej:
Konfigurazzjoni tal-Qalba tal-Apparat USB Konfigurazzjoni tal-Informazzjoni dwar l-Apparat USB Konfigurazzjoni tal-Ħardwer tal-Apparat USB
Konfigurazzjoni tal-Qalba tal-Apparat USB
L-Apparat USB ta' Silicon Labs jista' jiġi kkonfigurat fil-ħin tal-kumpilazzjoni permezz ta' sett ta' #defines li jinsabu fl-sl_usbd_core_config.h fileApparat USB juża #defines meta jkun possibbli għaliex jippermettu li d-daqsijiet tal-kodiċi u tad-dejta jiġu skalati fil-ħin tal-kumpilazzjoni abbażi ta' liema karatteristiċi huma attivati. Dan jippermetti li l-footprints tal-memorja read-only (ROM) u l-memorja b'aċċess każwali (RAM) ta' Apparat USB ta' Silicon Labs jiġu aġġustati abbażi tar-rekwiżiti tal-applikazzjoni tiegħek.
Rakkomandat: Ibda l-proċess ta' konfigurazzjoni bil-valuri awtomatiċi (enfasizzati b'tipa grassa).
It-taqsimiet hawn taħt huma organizzati abbażi tal-ordni fil-konfigurazzjoni tat-template file, sl_usbd_core_config.h.
Klassijiet ta' Konfigurazzjoni Ewlenija Konfigurazzjoni
Konfigurazzjoni tal-qalba
Tabella – Kostanti tal-Konfigurazzjoni tal-Qalba tal-Apparat USB

Deskrizzjoni Kostanti

Valur Default

DAQS TAL-SL_USBD_TA SK_STACK_

Jikkonfigura d-daqs tal-munzell f'bytes tal-kompitu ewlieni tal-USBD

4096

SL_USBD_TA SK_PRIORITÀ Y

Jikkonfigura l-prijorità tal-kompitu ewlieni tal-USBD. Din hija prijorità CMSIS-RTOS2.

Prijorità Għolja tal-os

SL_USBD_A UTO_START _USB_DEVIC E

Jekk ikun attivat, l-apparat USB jinbeda awtomatikament ladarba l-kernel jinbeda u dik il-kompitu ewlieni tal-USBD wieħed jiġi skedat għall-ewwel darba. Jekk ikun diżattivat, l-applikazzjoni tiegħek ikollha bżonn issejjaħ sl_usbd_core_start_device() meta tkun lesta biex tiġi skoperta mill-host tal-USB.

SL_USBD_C In-numru totali ta' konfigurazzjonijiet li se jiżdiedu permezz ta' sl_usbd_add_configuration()

1

Funzjoni ONFIGURATI.

ON_QUANTI

TY

Copyright © 2025 Silicon Laboratories. Id-drittijiet kollha riżervati.

8/174

Fuqview

Kostanti
SL_USBD _INTERF ACE_QU ANTITY
SL_USBD _ALT_INT ERFACE_ KWANTI
TY
SL_USBD _INTERF ACE_GR
OUP_QU
ANTITÀ
SL_USBD _DESKRIZZJONI
PTOR_Q
UANTITY
SL_USBD _STRING _KWANTI
TY
SL_USBD _OPEN_E NDPOIN TS_KWANTITÀ

Deskrizzjoni In-numru totali ta' interfaces USB li għandhom jiżdiedu għall-konfigurazzjonijiet kollha tiegħek. Dan jiddependi ħafna fuq il-klassi(jiet) użata(i). Għal aktar informazzjoni dwar kemm teħtieġ interfaces istanza ta' klassi, irreferi għat-taqsima "Bżonnijiet ta' Riżorsi mill-qalba" tal-klassi(jiet) tiegħek.
In-numru totali ta' interfejsijiet alternattivi tal-USB li għandhom jiżdiedu għall-konfigurazzjonijiet kollha tiegħek. Dan jiddependi ħafna fuq il-klassi(jiet) użata(i). Dan il-valur għandu dejjem ikun ugwali għal jew akbar minn SL_USBD_INTERFACE_QUANTITY. Għal aktar informazzjoni dwar kemm teħtieġ interfejsijiet alternattivi istanza ta' klassi, irreferi għat-taqsima "Bżonnijiet ta' Riżorsi mill-Qalba" tal-klassi(jiet) tiegħek.
In-numru totali ta' gruppi ta' interfaċċja USB li se jiżdiedu għall-konfigurazzjonijiet kollha tiegħek. Dan jiddependi ħafna fuq il-klassi(jiet) użata(i). Għal aktar informazzjoni dwar kemm gruppi ta' interfaċċja jeħtieġu istanza ta' klassi, irreferi għat-taqsima "Ħtiġijiet ta' Riżorsi mill-Qalba" tal-klassi(jiet) tiegħek.
In-numru totali ta' deskritturi tal-Endpoint li se jiżdiedu għall-konfigurazzjonijiet kollha tiegħek. Dan jiddependi ħafna fuq il-klassi(jiet) użata(i). Għal aktar informazzjoni dwar kemm teħtieġ deskritturi tal-endpoint istanza ta' klassi, irreferi għal "Numru ta' endpoints" fit-taqsima "Ħtiġijiet ta' Riżorsi mill-Qalba" tal-klassi(jiet) tiegħek. Innota li l-endpoints tal-kontroll m'hemmx għalfejn jiġu kkunsidrati hawn. In-numru totali ta' strings USB. Jekk tissettja l-kwantità għal żero, il-karatteristika tiġi diżattivata. Jekk dan jiġi diżattivat, l-apparat ma jaħżinx strings ta' deskrizzjoni USB mgħoddija mill-applikazzjoni. Dan ifisser li l-host mhux se jkun jista' jirkupra l-strings ta' deskrizzjoni (bħall-manifattur u l-isem tal-prodott). In-numru totali ta' endpoints miftuħa għal kull konfigurazzjoni. Apparat jeħtieġ mill-inqas żewġ endpoints miftuħa għat-trasferimenti ta' kontroll, iżda trid iżżid ukoll l-endpoints tal-klassi(jiet) użata(i). Għal aktar informazzjoni dwar kemm teħtieġ endpoints miftuħa istanza ta' klassi, irreferi għal "Numru ta' endpoints" fit-taqsima "Ħtiġijiet ta' Riżorsi mill-Qalba" tal-klassi(jiet) tiegħek.

Valur Default
10 10
2
20 30 20

Konfigurazzjoni tal-Klassijiet
Il-klassijiet għandhom konfigurazzjonijiet speċifiċi fil-ħin tal-kumpilazzjoni. Irreferi għal Klassijiet ta' Apparati USB għal aktar informazzjoni.
Konfigurazzjoni tal-Informazzjoni tal-Apparat USB

Il-konfigurazzjoni sl_usbd_device_config.h file jerġa' jiġbor #define-s fil-ħin tal-kumpilazzjoni biex jistabbilixxi informazzjoni bażika dwar l-apparat tiegħek, bħal ID tal-Bejjiegħ/Prodott, kordi tal-apparat, eċċ. It-tabella hawn taħt tiddeskrivi kull konfigurazzjoni ta' informazzjoni definita disponibbli f'din il-konfigurazzjoni file.

Tabella – Tiddefinixxi l-Konfigurazzjoni tal-Informazzjoni dwar l-Apparat USB

Kostanti
ID_tal-BEJJIEG_SL_USBD_DEVIC
ID_tal-Prodott_tal-Apparat_USBD_SL_

Deskrizzjoni In-numru ta' identifikazzjoni tal-bejjiegħ tiegħek kif mogħti mill-USB Implementers Forum. Għal aktar informazzjoni dwar kif tista' tikseb ID ta' bejjiegħ, ara http://www.usb.org/developers/vendor/. In-numru ta' identifikazzjoni tal-prodott tiegħek.

Copyright © 2025 Silicon Laboratories. Id-drittijiet kollha riżervati.

9/174

Fuqview

Kostanti

Deskrizzjoni

SL_USBD_DEVICE_RELEASE Numru tar-rilaxx tal-apparat tiegħek. _NUMBER

SL_USBD_DEVICE_MANUFA String li tiddeskrivi l-manifattur tat-tagħmir tiegħek. Din il-konfigurazzjoni tiġi injorata meta

KTURER_STRING

Il-konfigurazzjoni SL_USBD_STRING_QUANTITY hija ssettjata għal 0.

SL_USBD_DEVICE_PRODUC String li tiddeskrivi l-prodott tiegħek. Din il-konfigurazzjoni tiġi injorata meta l-konfigurazzjoni

T_STRING

SL_USBD_STRING_QUANTITY huwa ssettjat għal 0.

SL_USBD_DEVICE_SERIAL_N String li fiha n-numru tas-serje tat-tagħmir tiegħek. Din il-konfigurazzjoni tiġi injorata meta l-

NUMRU_STRING

Il-konfigurazzjoni SL_USBD_STRING_QUANTITY hija ssettjata għal 0.

SL_USBD_DEVICE_LANGUA Numru ta' identifikazzjoni tal-lingwa tal-istrings tat-tagħmir tiegħek. Il-valuri possibbli huma:
ID_ĠE

– SL_USBD_LANG_ID_ARABIC_SAUDI_ARABIA

– SL_USBD_LANG_ID_ĊINIŻ_TAJWAN

– SL_USBD_LANG_ID_INGLIŻ_US

– SL_USBD_LANG_ID_INGLIŻ_UK

– SL_USBD_LANG_ID_FRANĊIŻ

– SL_USBD_LANG_ID_ĠERMANIŻ

– SL_USBD_LANG_ID_GRIEG

– SL_USBD_LANG_ID_TALJAN

– SL_USBD_LANG_ID_PORTUGIŻ

– SL_USBD_LANG_ID_SANSKRIT

Din il-konfigurazzjoni tiġi injorata meta l-konfigurazzjoni SL_USBD_STRING_QUANTITY tkun issettjata għal 0.

Konfigurazzjoni tal-Ħardwer tal-Apparat USB

Skont l-apparat tas-Silicon Labs li qed tuża, possibilment ikollok il-pin u l-port GPIO biex tikkonfigura għas-sinjal USB VBUS Sense. Id-definizzjonijiet tal-konfigurazzjoni jinsabu fil-header sl_usbd_hardware_config.h file.

Kostanti
SL_USBD_DRIVER_VBUS_SENSE_PORT SL_USBD_DRIVER_VBUS_SENSE_PIN

Deskrizzjoni
Port GPIO għas-sinjal USB VBUS Sense fuq il-bord tiegħek. Pin GPIO għas-sinjal USB VBUS Sense fuq il-bord tiegħek.

Copyright © 2025 Silicon Laboratories. Id-drittijiet kollha riżervati.

10/174

Fuqview
Fuqview
Gwida għall-Ipprogrammar ta' Apparati USB
Din it-taqsima tispjega kif tuża l-modulu tal-Apparat USB.
Konfigurazzjoni Inizjali tal-Modulu tal-Apparat USB
Din it-taqsima tiddeskrivi l-passi bażiċi meħtieġa biex jiġi inizjalizzat il-modulu tal-Apparat USB u biex jiżdied, jiġi ppreparat, u jinbeda apparat. Inizjalizzazzjoni tal-Modulu tal-Apparat USB Inizjalizzazzjoni tal-Qalba tal-Apparat USB Inizjalizzazzjoni tal-aCl ss(es) Żieda tal-Apparat USB Tiegħek Il-Bini tal-Apparat USB Tiegħek Żieda ta' Konfigurazzjoni(jiet) Żieda ta' Funzjoni(jiet) USB Tibda l-Apparat USB Tiegħek
Funzjonijiet tal-Avveniment Hook
Inizjalizzazzjoni tal-Modulu tal-Apparat USB
Inizjalizzazzjoni tal-Qalba tal-Apparat USB
Ibda billi tibda billi tniedi l-qalba tal-modulu tal-apparat B billi ssejjaħ il-funzjoni sl_usbd_core_init(). L-eżempju hawn taħt juri s-sejħa ta' sl_usbd_core_init().
Example – Sejħa ta' sl_usbd_core_init()
sl_status_t status; status = sl_usbd_core_init(); jekk (status ! SL_STATUS_OK) { /* Seħħ żball. L-immaniġġjar tal-iżbalji għandu jiżdied hawn. */
}
Inizjalizzazzjoni tal-Klassi(jiet)
Wara li l-qalba tal-modulu tal-apparat USB tkun ġiet inizjalizzata, trid tinizjalizza kull klassi li biħsiebek tuża. Ara t-taqsima “Gwida għall-Ipprogrammar” tal-acl ss(es) tiegħek għal aktar informazzjoni.
Il-Bini tal-Apparat USB Tiegħek
Żieda ta' Konfigurazzjoni(jiet)
Wara li tkun inizjalizzajt it-tagħmir tiegħek b'suċċess, tista' tibda żżid il-funzjonijiet tal-USB miegħu, billi tibda b'konfigurazzjoni ġdida. Tagħmir irid ikollu mill-inqas konfigurazzjoni waħda. Biex iżżid konfigurazzjoni(jiet), ċempel il-funzjoni sl_usbd_core_dd_configuration(). Din il-funzjoni trid tissejjaħ għal kull konfigurazzjoni li trid iżżid. L-eż.ampHawn taħt turi kif iżżid Full-speed.
Example – Żieda ta' Konfigurazzjoni(jiet) mat-Tagħmir Tiegħek

Copyright © 2025 Silicon Laboratories. Id-drittijiet kollha riżervati.

11/174

Fuqview

sl_status_t status; uint8_t config_nbr_fs;

/* Żieda ta' konfigurazzjoni b'veloċità sħiħa mal-apparat. */

status = sl_usbd_core_add_configuration(0,

/* L-ebda attribut speċjali għall-konfigurazzjoni. */

100u,

/* Konsum massimu ta' enerġija: 100mA.

*/

SL_USBD_DEVICE_SPEED_FULL,

/* Konfigurazzjoni b'Veloċità Sħiħa.

*/

"Konfigurazzjoni Żid Eż.amp"il-konfigurazzjoni Full-Speed",

&config_nbr_fs);

jekk (status ! SL_STATUS_OK) {

/* Seħħ żball. L-immaniġġjar tal-iżbalji għandu jiżdied hawn. */

}

Żieda ta' Funzjoni(jiet) tal-USB
Wara li tkun żidt b'suċċess mill-inqas konfigurazzjoni waħda mat-tagħmir tiegħek, tista' żżid l-interfaċċji u l-endpoints mat-tagħmir tiegħek. Kull klassi USB għandha l-bżonnijiet tagħha f'termini ta' tip ta' interfaċċja u endpoints, kwantità, u parametri oħra. Silicon Labs USB Device iżid interfaċċji u endpoints fil-klassijiet li joffri.
Mill-applikazzjoni tiegħek, tista' toħloq istanzija ta' klassi USB u żżidha ma' konfigurazzjoni. Għal aktar informazzjoni dwar il-kunċett tal-istanzi tal-klassi tal-apparat USB, ara Klassijiet tal-Apparat USB. Innota li tista' toħloq istanzija u żżid ħafna istanzi ta' klassi differenti ma' konfigurazzjoni biex toħloq apparat b'ħafna funzjonijiet (kompost).
L-exampL-artiklu t'hawn taħt juri kif toħloq istanza ta' klassi u żżidha ma' konfigurazzjoni.
Example – Żieda ta' Istanza tal-Klassi mat-Tagħmir Tiegħek

sl_status_t status; uint8_t klassi_nbr;
/* Oħloq istanza tal-klassi li trid tuża.*/ /* Innota li skont il-klassi din il-funzjoni jista' jkollha aktar argumenti. */ status = sl_usbd_ _create_instance(&class_nbr); jekk (status ! SL_STATUS_OK) { /* Seħħ żball. L-immaniġġjar tal-iżbalji għandu jiżdied hawn. */ }
/* Żid l-istanza tal-klassi mal-konfigurazzjoni Full-Speed. */ status = sl_usbd_ _add_to_configuration(class_nbr, /* Numru tal-klassi rritornat minn sl_usbd_ _oħloq_istanza. */
config_nbr_fs); /* Numru ta' konfigurazzjoni rritornat minn sl_usbd_core_add_configuration(). */ jekk (status ! SL_STATUS_OK) { /* Seħħ żball. L-immaniġġjar tal-iżbalji għandu jiżdied hawn. */ }
Tibda l-Apparat USB Tiegħek
B'mod awtomatiku, l-apparat jinbeda awtomatikament mill-kompitu ewlieni tal-apparat USB wara li titlesta l-inizjalizzazzjoni tal-apparat u jinbeda l-kernel. Biex tikkontrolla meta l-apparat jinbeda u jsir viżibbli mill-host USB, uża d-definizzjoni tal-konfigurazzjoni SL_USBD_AUTO_START_USB_DEVICE biex tiddiżattiva l-karatteristika tal-istartjar awtomatiku. Meta tkun diżattivata, wara li tkun bnejt/ħejjejt l-apparat tiegħek, tista' tibdih u tagħmlu viżibbli għall-host USB billi ssejjaħ il-funzjoni sl_usbd_core_start_device().
L-exampIl-fajl t'hawn taħt juri kif tibda t-tagħmir tiegħek billi tuża l-funzjoni sl_usbd_core_start_device().
Example – Tibda l-Apparat Tiegħek

Copyright © 2025 Silicon Laboratories. Id-drittijiet kollha riżervati.

12/174

Fuqview

status_sl_status_t;
status = sl_usbd_core_start_device(); jekk (status ! SL_STATUS_OK) { /* Seħħ żball. L-immaniġġjar tal-iżbalji għandu jiżdied hawn. */ }

Funzjonijiet tal-Avveniment Hook
Il-modulu ewlieni tal-Apparat USB joffri żewġ funzjonijiet ta' hook dgħajfa li tista' terġa' tiddefinixxi fl-applikazzjoni tiegħek. L-iskop tagħhom huwa li jinnotifikaw meta jseħħu avvenimenti tal-bus u tal-konfigurazzjoni.
Tabella – Funzjonijiet tal-USB Event Hook

Avveniment

Deskrizzjoni

Xarabank

Imsejjaħ meta jseħħ avveniment tal-USB Bus

Konfigurazzjoni Msejħa meta jseħħ avveniment ta' Konfigurazzjoni tal-USB

Firma tal-Funzjoni
void sl_usbd_on_bus_event(avveniment sl_usbd_bus_event_t); void sl_usbd_on_config_event(avveniment sl_usbd_config_event_t, uint8_t config_nbr);

Example – Funzjonijiet ta' Ganċ tal-Avveniment

void sl_usbd_on_bus_event(sl_usbd_bus_event_t event) { swiċċ (event) { każ SL_USBD_EVENT_BUS_CONNECT:
// imsejjaħ meta l-kejbil USB jiddaħħal f'kontrollur ospitanti break;
każ SL_USBD_EVENT_BUS_DISCONNECT: // imsejjaħ meta l-kejbil USB jitneħħa minn kontrollur ospitanti break;
każ SL_USBD_EVENT_BUS_RESET: // imsejjaħ meta l-host jibgħat il-kmand tar-reset break;
case SL_USBD_EVENT_BUS_SUSPEND: // imsejjaħ meta l-host jibgħat il-kmand tas-sospensjoni break;
każ SL_USBD_EVENT_BUS_RESUME: // imsejjaħ meta l-host jibgħat kmand ta' qawmien break;
default: break; } }
void sl_usbd_on_config_event(sl_usbd_config_event_t event, uint8_t config_nbr) { swiċċ (event) { każ SL_USBD_EVENT_CONFIG_SET:
// imsejjaħ meta l-host jistabbilixxi pawża fil-konfigurazzjoni;
case SL_USBD_EVENT_CONFIG_UNSET: // imsejjaħ meta konfigurazzjoni ma tkunx issettjata break;
default: break; } }

Copyright © 2025 Silicon Laboratories. Id-drittijiet kollha riżervati.

13/174

Fuqview

Copyright © 2025 Silicon Laboratories. Id-drittijiet kollha riżervati.

14/174

Fuqview
Fuqview

Klassijiet ta' Apparati USB

Il-klassijiet USB disponibbli f'Silicon Labs USB Device jaqsmu xi karatteristiċi komuni. Din it-taqsima tispjega dawn il-karatteristiċi u l-interazzjonijiet tagħhom mas-saff ċentrali.
Għal aktar informazzjoni dwar klassi speċifika, ara dan li ġej:
Klassi CDC ACM Klassi HID Klassi MSC SCSI Klassi tal-Bejjiegħ
Dwar l-Istanzi tal-Klassi
Il-klassijiet USB disponibbli f'USB Device jimplimentaw il-kunċett ta' istanzi ta' klassi. Istanza ta' klassi tirrappreżenta funzjoni waħda fi ħdan apparat. Il-funzjoni tista' tiġi deskritta minn interfaċċja waħda jew minn grupp ta' interfaċċji u tappartjeni għal klassi speċifika.
Kull implimentazzjoni tal-klassi USB għandha xi konfigurazzjonijiet u funzjonijiet komuni, ibbażati fuq il-kunċett tal-istanza tal-klassi. Il-konfigurazzjonijiet u l-funzjonijiet komuni huma ppreżentati fit-tabella t'hawn taħt. Fit-titlu tal-kolonna 'Kostanti jew Funzjoni', il-placeholder XXXX jista' jiġi sostitwit bl-isem tal-klassi: CDC, HID, MSC, CDC_ACM jew VENDOR (Bejjiegħ għall-ismijiet tal-funzjonijiet).
Tabella – Kostanti u Funzjonijiet Relatati mal-Kunċett ta' Instanzi ta' Klassi Multipli

Kostanti jew Funzjoni
SL_USBD_XXXX_CL ASS_INSTANCE_QUANTITY
SL_USBD_XXXX_KWANTITÀ_TA' KONFIGURAZZJONI
sl_usb d _XXXX_oħloq _istanza ()
sl_usbd_XXXX_add_to_conf iguration()

Deskrizzjoni
Jikkonfigura l-għadd massimu ta' istanzi tal-klassi.
Jikkonfigura l-għadd massimu ta' konfigurazzjonijiet. Matul l-inizjalizzazzjoni tal-klassi, istanza ta' klassi maħluqa se tiżdied ma' konfigurazzjoni waħda jew aktar. Joħloq istanza ta' klassi ġdida.
Iżżid istanza ta' klassi eżistenti mal-konfigurazzjoni speċifikata tat-tagħmir.

F'termini ta' implimentazzjoni tal-kodiċi, il-klassi tiddikjara varjabbli globali lokali li fiha struttura ta' kontroll tal-klassi. Din l-istruttura ta' kontroll tal-klassi hija assoċjata ma' istanza waħda tal-klassi u fiha informazzjoni speċifika biex timmaniġġja l-istanza tal-klassi.
Il-figuri li ġejjin juru diversi xenarji ta' każijiet. Kull figura tinkludi kodiċi example li jikkorrispondi max-xenarju tal-każ.
Figura – Instanzi ta' Klassi Multipli – Apparat FS (Konfigurazzjoni 1 b'Interfaċċja 1) jirrappreżenta apparat USB tipiku. L-apparat huwa Full-Speed ​​(FS) u fih konfigurazzjoni waħda. Il-funzjoni tal-apparat hija deskritta minn interfaċċja waħda magħmula minn par ta' endpoints għall-komunikazzjoni tad-dejta. Istanza ta' klassi waħda tinħoloq u tippermettilek timmaniġġja l-interfaċċja kollha bl-endpoint assoċjat tagħha.
Figura – Instanzi ta' Klassi Multipli – Konfigurazzjoni tal-Apparat FS 1 b'Interfaċċja 1)

Copyright © 2025 Silicon Laboratories. Id-drittijiet kollha riżervati.

15/174

Fuqview

Il-kodiċi li jikkorrispondi għall-Figura – Instanzi ta' Klassi Multipli – Apparat FS (Konfigurazzjoni 1 b'Interfaċċja 1) jidher fl-eż.ample hawn taħt.
Example – Instanzi ta' Klassi Multipli – Konfigurazzjoni ta' Apparat FS 1 b'Interfaċċja 1)

sl_status_t status; uint8_t klassi_0;

void app_usbd_XXXX_enable(uint8_t class_nbr) { /* Immaniġġja l-avveniment ta' attivazzjoni tal-Klassi. */ }

void app_usbd_XXXX_disable(uint8_t class_nbr) { /* Immaniġġja l-avveniment tad-diżattivazzjoni tal-Klassi. */ }

sl_usbd_XXXX_callbacks_t klassi_callbacks = {

(1)

.enable = app_usbd_XXXX_enable,

.diżattiva = app_usbd_XXXX_diżattiva

};

status = sl_usbd_XXXX_init();

(2)

jekk (status ! SL_STATUS_OK) {

/* $$$$ Immaniġġja l-iżball. */

}

status = sl_usbd_XXXX_create_instance(&class_callbacks,

(3)

&klassi_0);

jekk (status ! SL_STATUS_OK) {

/* $$$$ Immaniġġja l-iżball. */

}

status = sl_usbd_XXXX_add_to_configuration(klassi_0, konfigurazzjoni_0);

(4)

jekk (status ! SL_STATUS_OK) {

/* $$$$ Immaniġġja l-iżball. */

}

(1) Kull klassi toffri sett ta' funzjonijiet ta' callback għal avvenimenti ta' konnessjoni/skonnettjar ta' apparat u għal avvenimenti speċifiċi għall-klassi. L-oġġett tal-istruttura ta' callback jiġi mgħoddi bħala argument meta tinħoloq l-istanza tal-klassi b'sl_usbd_XXXX_create_instance()
funzjoni.
(1) Inizjalizza l-klassi. Il-varjabbli, l-istrutturi u l-portijiet tal-klassi interni kollha se jiġu inizjalizzati. Innota li l-funzjoni Init() f'xi klassijiet tista' tieħu argumenti oħra.

Copyright © 2025 Silicon Laboratories. Id-drittijiet kollha riżervati.

16/174

Fuqview
(2) Oħloq l-istanza tal-klassi, li hija class_0. Il-funzjoni sl_usbd_XXXX_create_instance() talloka struttura ta' kontroll tal-klassi assoċjata ma' class_0. Skont il-klassi, sl_usbd_XXXX_create_instance() jista' jkollha parametri addizzjonali apparti n-numru tal-klassi li jirrappreżentaw informazzjoni speċifika għall-klassi maħżuna fl-istruttura ta' kontroll tal-klassi. aaa (3) Żid l-istanza tal-klassi, class_0, man-numru ta' konfigurazzjoni speċifikat, config_0. sl_usbd_XXXX_add_to_configuration() se toħloq l-interface 0 u l-endpoints IN u OUT assoċjati magħha. Bħala riżultat, l-istanza tal-klassi tinkludi l-interface 0 u l-endpoints tagħha. Kwalunkwe komunikazzjoni li ssir fuq l-interface 0 se tuża n-numru tal-istanza tal-klassi, class_0. Figura – Instanzi ta' Klassi Multipli – Apparat FS (2 Konfigurazzjonijiet u Interfaces Multipli) jirrappreżenta eżempju aktar kumpless.ampJiġifieri. Apparat b'veloċità sħiħa huwa magħmul minn żewġ konfigurazzjonijiet. L-apparat għandu żewġ funzjonijiet li jappartjenu għall-istess klassi, iżda kull funzjoni hija deskritta minn żewġ interfaċċji u għandha par ta' punti tat-tmiem bidirezzjonali. F'dan l-eżempjuampjiġifieri, jinħolqu żewġ istanzi ta' klassi. Kull istanza ta' klassi hija assoċjata ma' grupp ta' interfaces għall-kuntrarju ta' Figura – Multiple Class Instances – FS Device (1 Konfigurazzjoni b'1 Interface) u Figura – Multiple Class Instances – FS Device (2 Konfigurazzjonijiet u Multiple Interfaces) fejn l-istanza tal-klassi kienet assoċjata ma' interface waħda.
Figura – Instanzi ta' Klassi Multipli – Konfigurazzjonijiet tal-Apparat FS 2 u Interfejsijiet Multipli)

Il-kodiċi li jikkorrispondi għall-Figura – Instanzi ta' Klassi Multipli – Apparat FS (2 Konfigurazzjonijiet u Interfejsijiet Multipli) jidher fl-eż.amphawn taħt. L-immaniġġjar tal-iżbalji tħalla barra għal aktar ċarezza.
Example – Instanzi ta' Klassi Multipli – Konfigurazzjonijiet tal-Apparat FS 2 u Interfejsijiet Multipli)

Copyright © 2025 Silicon Laboratories. Id-drittijiet kollha riżervati.

17/174

Fuqview

sl_status_t status; uint8_t klassi_0; uint8_t klassi_1;
status = sl_usbd_XXXX_init();
status = sl_usbd_XXXX_create_instance(&klassi_0); status = sl_usbd_XXXX_create_instance(&klassi_1);
status = sl_usbd_XXXX_add_to_configuration(klassi_0, cfg_0); status = sl_usbd_XXXX_add_to_configuration(klassi_1, cfg_0);
status = sl_usbd_XXXX_add_to_configuration(klassi_0, cfg_1); status = sl_usbd_XXXX_add_to_configuration(klassi_1, cfg_1);

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

(1) Inizjalizza l-klassi. Kwalunkwe varjabbli interni, strutturi, u portijiet tal-klassi se jiġu inizjalizzati.
(2) Oħloq l-istanza tal-klassi, class_0. Il-funzjoni sl_usbd_XXXX_create_instance() talloka struttura ta' kontroll tal-klassi assoċjata ma' class_0.
(3) Oħloq l-istanza tal-klassi, class_1. Il-funzjoni sl_usbd_XXXX_create_instance() talloka struttura oħra ta' kontroll tal-klassi assoċjata ma' class_1.
(4) Żid l-istanza tal-klassi, class_0, mal-konfigurazzjoni, cfg_0. sl_usbd_XXXX_add_to_configuration() se toħloq l-interface 0, l-interface 1, interfaces alternattivi, u l-endpoints IN u OUT assoċjati. In-numru tal-istanza tal-klassi, class_0, se jintuża għal kwalunkwe komunikazzjoni tad-dejta fuq l-interface 0 jew l-interface 1.
(5) Żid l-istanza tal-klassi, class_1, mal-konfigurazzjoni, cfg_0. sl_usbd_XXXX_add_to_configuration() se toħloq l-interface 2, l-interface 3 u l-endpoints IN u OUT assoċjati tagħhom. In-numru tal-istanza tal-klassi, class_1, se jintuża għal kwalunkwe komunikazzjoni tad-dejta fuq l-interface 2 jew l-interface 3.
(6) Żid l-istess istanzi tal-klassi, class_0 u class_1, mal-konfigurazzjoni l-oħra, cfg_1.
Kull klassi tiddefinixxi struttura tat-tip sl_usbd_XXXX_callbacks_t. L-iskop tagħha huwa li tagħti lil kull klassi sett ta' funzjonijiet callback li għandhom jissejħu meta jseħħ avveniment. Żewġ funzjonijiet callback huma preżenti f'kull klassi. Dawn huma ppreżentati fit-tabella t'hawn taħt.
Tabella – Funzjonijiet Komuni ta' Callback tal-Klassi

Deskrizzjoni tal-Oqsma .enable Imsejjaħ meta l-istanza tal-klassi USB tiġi attivata b'suċċess. .disable Imsejjaħ meta l-istanza tal-klassi USB tiġi diżattivata.

Firma tal-Funzjoni void app_usbd_XXXX_enable(uint8_t class_nbr); void app_usbd_XXXX_disable(uint8_t class_nbr);

Copyright © 2025 Silicon Laboratories. Id-drittijiet kollha riżervati.

18/174

Fuqview
Fuqview
Apparat USB Klassi CDC ACM
Apparat USB CDC Klassi Bażi Aktar minnview Ħtiġijiet tar-Riżorsi tal-Klassi CDC ACM tal-Apparat USB mill-Qalba tas-Sottoklassi CDC ACM tal-Apparat USB 'l Fuqview Konfigurazzjoni tal-Klassi CDC ACM tal-Apparat USB Gwida għall-Ipprogrammar tal-Klassi CDC ACM tal-Apparat USB
Din it-taqsima tiddeskrivi l-klassi Communications Device Class (CDC) u s-sottoklassi CDC assoċjata appoġġjata mill-USB Device stack ta' Silicon Labs. Silicon Labs USB-Device bħalissa jappoġġja s-sottoklassi Abstract Control Model (ACM), li tintuża komunement għall-emulazzjoni serjali.
Is-CDC jinkludi diversi apparati tat-telekomunikazzjoni u tan-netwerking. L-apparati tat-telekomunikazzjoni jinkludu modems analogi, telefowns analogi u diġitali, adapters tat-terminal ISDN, eċċ. PereżempjuampJiġifieri, apparati tan-netwerking jinkludu modems ADSL u tal-kejbil, adapters Ethernet, u hubs. Is-CDC tiddefinixxi qafas biex tinkapsula standards eżistenti tas-servizzi ta' komunikazzjoni, bħal V.250 (għal modems fuq netwerk tat-telefon) u Ethernet (għal apparati tan-netwerk lokali), bl-użu ta' link USB. Apparat ta' komunikazzjoni huwa responsabbli mill-ġestjoni tal-apparat, il-ġestjoni tas-sejħiet meta jkun meħtieġ, u t-trażmissjoni tad-dejta.
Is-CDC jiddefinixxi seba' gruppi ewlenin ta' apparati. Kull grupp jappartjeni għal mudell ta' komunikazzjoni, li jista' jinkludi diversi sottoklassijiet. Kull grupp ta' apparati għandu d-dokument ta' speċifikazzjoni tiegħu stess minbarra l-klassi bażi tas-CDC. Is-seba' gruppi huma:
Netwerk tat-Telefon Pubbliku Switchjat (PSTN), apparati inklużi modems tal-voiceband, telefowns, u apparati ta' emulazzjoni serjali. Apparati tan-Netwerk Diġitali tas-Servizzi Integrati (ISDN), inklużi adapters tat-terminal u telefowns. Apparati tal-Mudell ta' Kontroll tal-Ethernet (ECM), inklużi apparati li jappoġġjaw il-familja IEEE 802 (eż.: modems tal-kejbil u ADSL, adapters tal-WiFi). Apparati tal-Modalità ta' Trasferiment Asinkroniku (ATM), inklużi modems ADSL u apparati oħra konnessi ma' netwerks ATM (workstations, routers, swiċċijiet tal-LAN). Apparati tal-Komunikazzjonijiet Mobbli Mingħajr Fili (WMC), inklużi apparati tal-handset tal-komunikazzjonijiet b'ħafna funzjonijiet użati biex jimmaniġġjaw il-komunikazzjonijiet tal-vuċi u tad-dejta. Apparati tal-Mudell ta' Emulazzjoni tal-Ethernet (EEM) li jiskambjaw dejta inkwadrata fl-Ethernet. Apparati tal-Mudell ta' Kontroll tan-Netwerk (NCM), inklużi apparati tan-netwerk b'veloċità għolja (modems ta' Aċċess għall-Pakketti b'Veloċità Għolja, Tagħmir Terminali tal-Linja)
Is-CDC u l-implimentazzjoni tas-sottoklassi assoċjata jikkonformaw mal-ispeċifikazzjonijiet li ġejjin:
Universal Serial Bus, Definizzjonijiet tal-Klassijiet għal Apparati ta' Komunikazzjoni, Reviżjoni 1.2, 3 ta' Novembru 2010. Universal Serial Bus, Komunikazzjonijiet, Sottoklassi għal Apparati PSTN, Reviżjoni 1.2, 9 ta' Frar 2007.
Apparat USB CDC Klassi Bażi Aktar minnview
Apparat CDC huwa magħmul mill-interfaċċji li ġejjin biex jimplimenta l-kapaċità ta' komunikazzjoni:
L-Interfaċċja tal-Klassi tal-Komunikazzjonijiet (CCI) hija responsabbli għall-ġestjoni tal-apparat u b'mod fakultattiv għall-ġestjoni tas-sejħiet.
Il-ġestjoni tal-apparat tippermetti l-konfigurazzjoni u l-kontroll ġenerali tal-apparat u n-notifika ta' avvenimenti lill-host. Il-ġestjoni tas-sejħiet tippermetti l-istabbiliment u t-terminazzjoni tas-sejħiet. Il-ġestjoni tas-sejħiet tista' tiġi multipleksata permezz ta' DCI. CCI hija obbligatorja għall-apparati CDC kollha. Din tidentifika l-funzjoni CDC billi tispeċifika l-mudell ta' komunikazzjoni appoġġjat mill-apparat CDC. L-interface(s) wara s-CCI jistgħu jkunu kwalunkwe interface tal-klassi USB definita, bħal Awdjo jew interface speċifika għall-bejjiegħ. L-interface speċifika għall-bejjiegħ hija rappreżentata speċifikament minn DCI.
L-Interfaċċja tal-Klassi tad-Data (DCI) hija responsabbli għat-trażmissjoni tad-data. Id-data trażmessa u/jew riċevuta ma ssegwix linja speċifika
format. Id-dejta tista’ tkun dejta mhux ipproċessata minn linja ta’ komunikazzjoni, dejta li ssegwi format proprjetarju, eċċ. Id-DCIs kollha li jsegwu s-CCI jistgħu jitqiesu bħala interfejsijiet subordinati.
Apparat CDC irid ikollu mill-inqas CCI wieħed u żero DCIs jew aktar. CCI wieħed u kwalunkwe DCI subordinat flimkien jipprovdu karatteristika lill-host. Din il-kapaċità tissejjaħ ukoll funzjoni. F'apparat kompost CDC, jista' jkollok diversi

Copyright © 2025 Silicon Laboratories. Id-drittijiet kollha riżervati.

19/174

Fuqview
funzjonijiet. Għalhekk, l-apparat ikun magħmul minn diversi settijiet ta' CCI u DCI(s) kif muri fil-Figura – Apparat Kompost CDC.
Figura – Apparat Kompost tas-CDC

Apparat tas-CDC x'aktarx juża l-kombinazzjoni ta' endpoints li ġejja:
Par ta' endpoints ta' kontroll IN u OUT imsejjaħ l-endpoint awtomatiku. Endpoint IN ta' bulk jew interruzzjoni fakultattiv. Par ta' endpoints IN u OUT ta' bulk jew iżokroni. Innota li l-munzell ta' apparati USB ta' Silicon Labs bħalissa ma jappoġġjax endpoints iżokroni.
It-tabella t'hawn taħt turi l-użu tad-diversi endpoints u b'liema interfaċċja tas-CDC jintużaw.
Tabella – Użu tal-Endpoint tas-CDC

Endpoint
Kontroll IN
Kontroll OUT
Interruzzjoni jew IN Bulk jew isokronu IN Bulk jew isokronu
BARRA

Direzzjoni
Apparat għal host
Host-to-device
Apparat għal host
Apparat għal host
Host-to-device

Użu tal-Interface

CCI

Talbiet standard għall-enumerazzjoni, talbiet speċifiċi għall-klassi, apparat

ġestjoni, u b'mod fakultattiv ġestjoni tas-sejħiet.

CCI

Talbiet standard għall-enumerazzjoni, talbiet speċifiċi għall-klassi, apparat

ġestjoni, u b'mod fakultattiv ġestjoni tas-sejħiet.

CCI

Notifika ta' avvenimenti, bħal skoperta ta' ring, status tal-linja serjali, status tan-netwerk.

DCI

Komunikazzjoni ta' dejta mhux ipproċessata jew ifformattjata.

DCI

Komunikazzjoni ta' dejta mhux ipproċessata jew ifformattjata.

Il-biċċa l-kbira tal-apparati ta' komunikazzjoni jużaw endpoint ta' interruzzjoni biex jinnotifikaw lill-host dwar avvenimenti. Endpoints iżokroni m'għandhomx jintużaw għat-trażmissjoni tad-dejta meta protokoll proprjetarju jiddependi fuq ir-ritrażmissjoni tad-dejta f'każ ta' żbalji fil-protokoll USB. Il-komunikazzjoni iżokrona tista' intrinsikament titlef id-dejta peress li m'għandhiex mekkaniżmi ta' tentattiv mill-ġdid.
Is-seba’ mudelli ewlenin ta’ komunikazzjoni jinkludu diversi sottoklassijiet. Sottoklassi tiddeskrivi l-mod kif l-apparat għandu juża s-CCI biex jimmaniġġja l-ġestjoni tal-apparat u l-ġestjoni tas-sejħiet. It-tabella t’hawn taħt turi s-sottoklassijiet possibbli kollha u l-mudell ta’ komunikazzjoni li jappartjenu għalih.
Tabella – Sottoklassijiet tas-CDC

Sottoklassi
Mudell ta' Kontroll tal-Linja Diretta Mudell ta' Kontroll Astratt

Mudell ta' Komunikazzjoni
PSTN
PSTN

Example ta' Apparati li Jużaw Din is-Sottoklassi
Apparati tal-modem ikkontrollati direttament mill-host tal-USB
Apparati ta' emulazzjoni serjali, apparati modem ikkontrollati permezz ta' sett ta' kmandi serjali

Copyright © 2025 Silicon Laboratories. Id-drittijiet kollha riżervati.

20/174

Fuqview

Sottoklassi

Mudell ta' Komunikazzjoni

Example ta' Apparati li Jużaw Din is-Sottoklassi

Mudell ta' Kontroll tat-Telefon

PSTN

Mudell ISDN ta' Kontroll b'ħafna Kanali

Mudell ta' Kontroll CAPI ISDN

Mudell ta' Kontroll tal-ECM tan-Netwerking Ethernet

Netwerking tal-ATM

ATM

Mudell ta' Kontroll

Mudell ta' Kontroll tal-Idejn Wireless

WMC

WMC tal-Ġestjoni tal-Apparat

Mudell ta' Linja Diretta Mobbli

WMC

OBEX

WMC

Mudell EEM tal-Emulazzjoni Ethernet

Mudell ta' Kontroll tan-Netwerk

NCM

Apparati tat-telefonija bil-vuċi
Adapters tat-terminal b'rata bażika, adapters tat-terminal b'rata primarja, telefowns
Adapters tat-terminal b'rata bażika, adapters tat-terminal b'rata primarja, modems tal-kejbil DOC-SIS tat-telefowns, modems ADSL li jappoġġjaw l-emulazzjoni PPPoE, adapters Wi-Fi (familja IEEE 802.11), adapters IEEE 802.3 modems ADSL
Tagħmir terminali mobbli li jikkonnettja ma' apparati mingħajr fili
Tagħmir terminali mobbli li jikkonnettja ma' apparati mingħajr fili Tagħmir terminali mobbli li jikkonnettja ma' apparati mingħajr fili
Tagħmir terminali mobbli li jikkonnettja ma' apparati mingħajr fili Apparati li jużaw frejms Ethernet bħala s-saff li jmiss tat-trasport. Mhux maħsub għal apparati ta' routing u konnettività tal-Internet Adapters IEEE 802.3 li jġorru bandwidth tad-dejta b'veloċità għolja fuq in-netwerk

Ħtiġijiet tar-Riżorsi tal-Klassi CDC ACM tal-Apparat USB mill-Qalba

Kull darba li żżid istanza tal-klassi CDC ACM ma' konfigurazzjoni USB permezz ta' sejħa għall-funzjoni sl_usbd_cdc_acm_add_to_configuration(), ir-riżorsi li ġejjin se jiġu allokati mill-qalba.

Riżorsa
Interfejsijiet Interfejsijiet alternattivi Punti tat-tmiem Gruppi ta' interfejsijiet

Kwantità
2 2 3 1

Innota li dawk in-numri huma għal kull konfigurazzjoni. Meta tissettja l-valuri ta' konfigurazzjoni SL_USBD_INTERFACE_QUANTITY, SL_USBD_ALT_INTERFACE_QUANTITY, SL_USBD_INTERFACE_GROUP_QUANTITY u SL_USBD_DESCRIPTOR_QUANTITY tiegħek, tinsiex tikkunsidra kemm-il konfigurazzjoni se tiżdied mal-klassi. Għall-valur ta' konfigurazzjoni SL_USBD_OPEN_ENDPOINTS_QUANTITY, peress li l-endpoints jinfetħu biss meta konfigurazzjoni tiġi ssettjata mill-host, inti sempliċiment għandek tikkunsidra n-numru ta' endpoints meħtieġa għal istanza ta' klassi.
Sottoklassi CDC ACM tal-Apparat USB Fuqview

Il-klassi bażi tas-CDC hija magħmula minn Communications Class Interface (CCI) u Data Class Interface (DCI), li hija diskussa fid-dettall f'USB Device CDC Base Class Overview Din it-taqsima tiddiskuti CCI tat-tip ACM. Tikkonsisti minn endpoint awtomatiku għall-element ta' ġestjoni u endpoint ta' interruzzjoni għall-element ta' notifika. Par ta' endpoints bl-ingrossa jintużaw biex iġorr dejta mhux speċifikata fuq id-DCI.
Is-sottoklassi ACM tintuża minn żewġ tipi ta' apparati ta' komunikazzjoni:
Apparati li jappoġġjaw kmandi AT (pereżempju, modems tal-voiceband). Apparati ta' emulazzjoni serjali li jissejħu wkoll apparati tal-port COM Virtwali.
Hemm diversi talbiet speċifiċi għas-sottoklassi tas-sottoklassi tal-ACM. Dawn jippermettulek tikkontrolla u tikkonfigura l-apparat. Il-lista sħiħa u d-deskrizzjoni tat-talbiet kollha tal-ACM jistgħu jinstabu fl-ispeċifikazzjoni

Copyright © 2025 Silicon Laboratories. Id-drittijiet kollha riżervati.

21/174

Fuqview Sottoklassi għal Apparati PSTN, reviżjoni 1.2, 9 ta' Frar, 2007=, sezzjoni 6.2.2.
Minn din il-lista, is-subklassi ACM ta' Silicon Labs9 tappoġġja dan li ġej:
Tabella – Talbiet tal-ACM Appoġġjati minn Silicon Labs

Deskrizzjoni tat-Talba tas-Sottoklassi

SetCommFeature GetCommFeature ClearCommFeature

Il-host jibgħat din it-talba biex jikkontrolla s-settings għal karatteristika ta' komunikazzjoni partikolari. Mhux użata għall-emulazzjoni serjali.
Il-host jibgħat din it-talba biex jikseb is-settings attwali għal karatteristika ta' komunikazzjoni partikolari. Mhux użata għall-emulazzjoni serjali.
Il-host jibgħat din it-talba biex iħassar is-settings għal karatteristika ta' komunikazzjoni partikolari. Mhux użat għall-emulazzjoni tas-serje.

SetLineCoding

Il-host jibgħat din it-talba biex jikkonfigura s-settings tal-apparat ACM: rata tal-baud, numru ta' bits ta' waqfien, tip ta' parità u numru ta' bits tad-dejta. Għal emulazzjoni serjali, din it-talba tintbagħat awtomatikament minn terminal serjali kull darba li tikkonfigura s-settings serjali għal port COM virtwali miftuħ.

IksebKodifikazzjoni tal-Line

Il-host jibgħat din it-talba biex jikseb is-settings attwali tal-ACM (rata tal-baud, bits ta' waqfien, parità, bits tad-dejta). Għal emulazzjoni serjali, it-terminals serjali jibagħtu din it-talba awtomatikament waqt il-ftuħ tal-port COM virtwali.

SetControlLineState Il-host jibgħat din it-talba biex jikkontrolla t-trasportatur għal modems half-duplex u jindika jekk it-Tagħmir tat-Terminal tad-Data (DTE) huwiex lest jew le. Fil-każ ta' emulazzjoni serjali, id-DTE huwa terminal serjali. Għal emulazzjoni serjali, ċerti terminals serjali jippermettulek tibgħat din it-talba bil-kontrolli ssettjati.

SetBreak

Il-host jibgħat din it-talba biex jiġġenera waqfa fl-istil RS-232. Għal emulazzjoni serjali, ċerti terminals serjali jippermettulek tibgħat din it-talba.

Is-sottoklassi ACM ta' Silicon Labs9 tuża l-endpoint tal-interruzzjoni IN biex tinnotifika lill-host dwar l-istat attwali tal-linja serjali. Il-linja serjali
L-istat tal-linja huwa bitmap li jinforma lill-host dwar:

Dejta mormija minħabba overrun Żball ta' parità Żball ta' framing Stat tad-detezzjoni tas-sinjal taċ-ċirku Stat tal-mekkaniżmu ta' detezzjoni ta' ksur Stat tat-trasportatur tat-trażmissjoni Stat tad-detezzjoni tat-trasportatur tar-riċevitur

L-implimentazzjoni tas-sottoklassi ACM ta' Silicon Labs9 tikkonforma mal-ispeċifikazzjoni li ġejja:
Universal Serial Bus, Komunikazzjonijiet, Sottoklassi għal Apparati PSTN, reviżjoni 1.2, 9 ta' Frar, 2007.
Konfigurazzjoni tal-Klassi CDC ACM tal-Apparat USB

Din it-taqsima tiddiskuti kif tikkonfigura l-Klassi CDC ACM (Klassi ta' Apparat ta' Komunikazzjoni, Mudell ta' Kontroll Astratt). Hemm żewġ gruppi ta' parametri ta' konfigurazzjoni:
Konfigurazzjonijiet Speċifiċi tal-Applikazzjoni tal-Klassi CDC ACM tal-Apparat USB Konfigurazzjonijiet tal-Istanza tal-Klassi CDC ACM tal-Apparat USB
Konfigurazzjonijiet Speċifiċi tal-Applikazzjoni tal-Klassi CDC ACM tal-Apparat USB

Klassi Bażika tas-CDC Sottoklassi tal-ACM
Klassi Bażi tas-CDC

L-ewwel, biex tuża l-modulu tal-klassi CDC tal-apparat USB tas-Silicon Labs, ikollok bżonn taġġusta l-konfigurazzjoni tal-ħin tal-kumpilazzjoni tas-CDC #define-s skont il-bżonnijiet tal-applikazzjoni tiegħek. Dawn huma miġbura mill-ġdid ġewwa l-intestatura sl_usbd_core_config.h file taħt it-taqsima CDC. L-iskop tagħhom huwa li jinfurmaw lill-modulu tal-apparat USB dwar kemm oġġetti USB CDC għandhom jiġu allokati.

Copyright © 2025 Silicon Laboratories. Id-drittijiet kollha riżervati.

22/174

Fuqview

It-tabella t'hawn taħt tiddeskrivi kull qasam ta' konfigurazzjoni disponibbli f'din l-istruttura ta' konfigurazzjoni.
Tabella – Tiddefinixxi l-Konfigurazzjoni tas-CDC tal-Apparat USB

Isem tal-Konfigurazzjoni
SL_USBD_CDC_CL BĦALA KWANTITÀ_TA'_ISTANZA
SL_USBD_CDC_CONF IGURAZZJONI_KWANTI
TY
SL_USBD_CDC_DATA _INTERFAZZJA_KWANTI
TY

Deskrizzjoni
Numru ta' istanzi tal-klassi li se talloka permezz ta' sejħa lill-funzjoni
sl_usbd_cdc_acm_create_instance().
Numru ta' konfigurazzjonijiet. L-istanzi tal-klassi ACM jistgħu jiżdiedu ma' konfigurazzjoni waħda jew aktar aaaa permezz ta' sl_usbd_cdc_acm_add_to_configuration().
Numru totali ta' interfejsijiet tad-dejta (DCI) għall-funzjonijiet kollha tas-CDC. Kull funzjoni tas-CDC ACM miżjuda mal-funzjoni sl_usbd_cdc_acm_create_instance() se żżid interfejsijiet tad-dejta.

Valur Default
2
1
2

Sottoklassi tal-ACM
Is-sottoklassi tal-ACM għandha konfigurazzjoni waħda fil-ħin tal-kumpilazzjoni murija fit-tabella hawn taħt.
Tabella – Definizzjoni tal-Konfigurazzjoni CDC ACM tal-Apparat USB

Isem tal-Konfigurazzjoni
SL_USBD_CDC_ACM_SUBCL ASS_IN_KWANTITÀ_TAS-STANZA

Deskrizzjoni
Jikkonfigura n-numru ta' istanzi ta' subklassi li se talloka permezz ta' sejħa lill-
funzjoni sl_usbd_cdc_acm_create_instance().

Valur Default
2

Konfigurazzjonijiet tal-Istanza tal-Klassi CDC ACM tal-Apparat USB

Din it-taqsima tiddefinixxi l-konfigurazzjonijiet relatati mal-istanzi tal-klassi serjali tas-CDC ACM. Ħolqien tal-Istanza tal-Klassi intervall tal-istat tal-linja kapaċitajiet ta' ġestjoni tas-sejħiet p_acm_callbacks
Ħolqien ta' Istanza tal-Klassi

Biex toħloq istanza tal-klassi serjali CDC ACM, sejjaħ il-funzjoni T a sl_usbd_cdc_acm_create_instance(). Din il-funzjoni t teħtieġ tliet argumenti ta' konfigurazzjoni, kif deskritt hawn.

intervall_tal-istat_tal-linja
Dan huwa l-intervall (f'millisekondi) li fih l-istanza tal-klassi serjali CDC ACM tiegħek se tirrapporta n-notifiki tal-istat tal-linja lill-host T aa. Dan il-valur irid ikun qawwa ta' tnejn (1, 2, 4, 8, 16, eċċ).

kapaċitajiet_ta'_sejħa_ta'_ġestjoni_
Bitmap tal-Kapaċitajiet tal-Ġestjoni tas-Sejħiet. Il-valuri possibbli tal-bitmap huma kif ġej:

Valur (bit)
SL_USBD_ACM_SERIAL_CALL_MGMT_DEV
SL_USBD_ACM_SERIAL_CALL_MGMT_DATA_CCI _DCI

Deskrizzjoni
L-apparat jieħu ħsieb il-ġestjoni tas-sejħiet innifsu. L-apparat jista' jibgħat/jirċievi informazzjoni dwar il-ġestjoni tas-sejħiet permezz ta' interfaċċja tal-Klassi tad-Data.

p_acm_callbacks

Copyright © 2025 Silicon Laboratories. Id-drittijiet kollha riżervati.

23/174

Fuqview

aa M aa p_acm_callbacks huwa pointer għal struttura tat-tip sl_usbd_cdc_acm_callbacks_t. L-iskop tiegħu huwa li jagħti lis-CDC AC Cl ss sett ta' funzjonijiet ta' callback li għandhom jissejħu meta jseħħ avveniment CDC ACM. Mhux il-callbacks kollha huma obbligatorji u pointer null (NULL) jista' jiġi mgħoddi fil-varjabbli tal-istruttura tal-callbacks meta l-callback ma jkunx meħtieġ. It-tabella hawn taħt tiddeskrivi kull qasam ta' konfigurazzjoni disponibbli f'din l-istruttura ta' konfigurazzjoni.
Tabella – Struttura ta' Konfigurazzjoni sl_usbd_cdc_acm _callbacks_t

Oqsma

Deskrizzjoni

.ippermetti

Imsejjaħ meta l-istanza tal-klassi USB tkun attivata

b'suċċess.

.diżattiva

Imsejjaħ meta l-istanza tal-klassi USB tkun diżattivata.

.line_control_changed Tiġi msejħa meta tiġi riċevuta bidla fil-kontroll tal-linja.

line_coding_changed Tissejjaħ meta tiġi riċevuta bidla fil-kodifikazzjoni tal-linja.

Firma tal-Funzjoni
vojt app_usbd_cdc_acm_enable(uint8_t subklassi_nbr);
vojt app_usbd_cdc_acm_disable(uint8_t subklassi_nbr);
void app_usbd_cdc_acm_line_control_changed(uint8_t sottoklassi_nbr, uint8_t avveniment, uint8_t avveniment_chngd); bool app_usbd_cdc_acm_line_coding_changed(uint8_t sottoklassi_nbr, sottoklassi_nbr, sl_usbd_cdc_acm_line_coding_t
*p_line_coding

Ara t-taqsima Reġistrazzjoni ta' Callbacks ta' Notifika ta' Avvenimenti għal funzjonijiet ta' callback eż.ample.
Gwida għall-Ipprogrammar tal-Klassi CDC ACM tal-Apparat USB

Din it-taqsima tispjega kif tuża l-klassi CDC Abstract Control Model. Inizjalizzazzjoni tal-Apparat USB CDC ACM Class Żieda ta' Istanza tal-Klassi CDC ACM tal-Apparat USB mal-Apparat Tiegħek Komunikazzjoni bl-Użu tal-Klassi CDC ACM
Inizjalizzazzjoni tal-Apparat USB Klassi CDC ACM

Biex iżżid il-funzjonalità tal-klassi CDC ACM mat-tagħmir tiegħek, l-ewwel trid inizjalizza l-klassi bażi CDC u s-sottoklassi ACM billi ssejjaħ il-funzjonijiet sl_usbd_cdc_init() u sl_usbd_cdc_acm_init(). L-eżempju hawn taħt juri kif tissejjaħ sl_usbd_cdc_init() u sl_usbd_cdc_acm_init() bl-użu ta' argumenti default.

Example – Inizjalizzazzjoni tal-Klassi CDC ACM

status_sl_status_t;
status = sl_usbd_cdc_init(); jekk (status ! SL_STATUS_OK) { /* Seħħ żball. L-immaniġġjar tal-iżbalji għandu jiżdied hawn. */
}
status = sl_usbd_cdc_acm_init(); jekk (status ! SL_STATUS_OK) { /* Seħħ żball. L-immaniġġjar tal-iżbalji għandu jiżdied hawn. */
}
Żieda ta' Istanza tal-Klassi CDC ACM ta' Apparat USB mat-Tagħmir Tiegħek
Biex iżżid il-funzjonalità tal-klassi CDC ACM mat-tagħmir tiegħek, trid toħloq istanza, imbagħad iżżidha mal-konfigurazzjoni(jiet) tat-tagħmir tiegħek.
Ħolqien ta' Istanza tal-Klassi CDC ACM

Copyright © 2025 Silicon Laboratories. Id-drittijiet kollha riżervati.

24/174

Fuqview
Żieda tal-Istanza tal-Klassi CDC ACM mal-Konfigurazzjoni(jiet) tat-Tagħmir Tiegħek Reġistrazzjoni ta' Callbacks ta' Notifika ta' Avvenimenti
Ħolqien ta' Istanza tal-Klassi CDC ACM
Oħloq installazzjoni tal-klassi ss CDC AC billi ssejjaħ il-funzjoni sl_usbd_cdc_acm_create_instance(). L-eżempju hawn taħt juri kif toħloq installazzjoni tal-klassi ss CDC AC permezz ta' sl_usbd_cdc_acm_create_instance().
Example – Ħolqien ta' Funzjoni CDC ACM permezz ta' sl_usbd_cdc_acm_create_instance()

uint8_t subclass_nbr; sl_status_t status;
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);
jekk (status ! SL_STATUS_OK) { /* Seħħ żball. L-immaniġġjar tal-iżbalji għandu jiżdied hawn. */
}
Żieda tal-Istanza tal-Klassi CDC ACM mal-Konfigurazzjoni(jiet) tat-Tagħmir Tiegħek
Wara li tkun ħloqt istanza tal-klassi CDC ACM, tista' żżidha ma' konfigurazzjoni billi ssejjaħ il-funzjoni
sl_usbd_cdc_acm_add_to_configuration().
L-eżempju hawn taħt juri kif issejjaħ sl_usbd_cdc_acm_add_to_configuration().
Example – Sejħa lil USBD ACM sl_usbd_cdc_acm_add_to_configuration()

status_sl_status_t;

status = sl_usbd_cdc_acm_add_to_configuration(subclass_nbr,

(1)

konfigurazzjoni_nbr_fs);

(2)

jekk (status ! SL_STATUS_OK) {

/* Seħħ żball. L-immaniġġjar tal-iżbalji għandu jiżdied hawn. */

}

aaa (1) Numru Cl ss li għandu jiżdied mal-konfigurazzjoni rritornata minn sl_usbd_cdc_acm_create_instance(). (2) Numru tal-konfigurazzjoni (hawnhekk jiżdied ma' konfigurazzjoni Full-Speed).
Reġistrazzjoni ta' Callbacks ta' Notifika ta' Avvenimenti
Il-klassi CDC ACM Serial tista' tinnotifika l-applikazzjoni tiegħek dwar kwalunkwe bidla fil-kontroll tal-linja jew fil-kodifikazzjoni permezz ta' funzjonijiet ta' callback ta' notifika. Struttura ta' funzjonijiet ta' callback tista' tiġi mgħoddija bħala argument waqt il-ħolqien tal-istanza tal-ACM. Innota li dawk is-callbacks huma fakultattivi. Eż.ample – Ir-Reġistrazzjoni ta' Callbacks tas-CDC ACM turi l-użu tal-funzjonijiet ta' reġistrazzjoni ta' callback. Eż.ample – L-Implimentazzjoni tas-CDC ACM Callbacks turi eż.ample tal-implimentazzjoni tal-funzjonijiet ta' callback.
Example – Reġistrazzjoni ta' Sejħiet Lura tas-CDC ACM

Copyright © 2025 Silicon Laboratories. Id-drittijiet kollha riżervati.

25/174

Fuqview

uint8_t subclass_nbr; sl_status_t status;
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);
jekk (status ! SL_STATUS_OK) { /* Seħħ żball. L-immaniġġjar tal-iżbalji għandu jiżdied hawn. */ }
Example – Implimentazzjoni tas-Callbacks tal-ACM tas-CDC

bool app_usbd_cdc_acm_line_coding_changed (uint8_t

numru_tas-subklassi,

sl_usbd_cdc_acm_line_coding_t *p_line_coding)

{

uint32_t rata_ta' baud ġdida;

uint8_t parità_ġdida;

uint8_t stop_bits_ġdid;

uint8_t data_bits_ġdid;

/* TODO Applika kodifikazzjoni tal-linja ġdida.*/ 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;

ritorn (veru);

(1)

}

void app_usbd_cdc_acm_line_control_changed (uint8_t subclass_nbr, uint8_t event, uint8_t event_changed)
{ bool rts_state; bool rts_state_changed; bool dtr_state; bool dtr_state_changed; bool brk_state; bool brk_state_changed;

/* TODO Applika kontroll tal-linja ġdida. */ rts_state = ((event & SL_USBD_CDC_ACM_CTRL_RTS) ! 0) ? veru : falz; rts_state_changed = ((event_changed & SL_USBD_CDC_ACM_CTRL_RTS) ! 0) ? veru : falz; dtr_state = ((event & SL_USBD_CDC_ACM_CTRL_DTR) ! 0) ? veru : falz; dtr_state_changed = ((event_changed & SL_USBD_CDC_ACM_CTRL_DTR) ! 0) ? veru : falz; brk_state = ((event & SL_USBD_CDC_ACM_CTRL_BREAK) ! 0) ? veru : falz; brk_state_changed = ((event_changed & SL_USBD_CDC_ACM_CTRL_BREAK) ! 0) ? veru : falz;
}

(1) Huwa importanti li tirritorna falz għal din il-funzjoni jekk l-applikazzjoni tal-kodifikazzjoni tal-linja falliet. Inkella, irritorna veru.
Komunikazzjoni bl-użu tal-Klassi CDC ACM
Status tas-Serje
Kontroll tal-Linja tal-Kodifikazzjoni tal-Linja

Copyright © 2025 Silicon Laboratories. Id-drittijiet kollha riżervati.

26/174

Fuqview

Komunikazzjoni tal-Istanza tas-Sottoklassi tal-Istat tal-Linja
Status tas-Serje
Kodifikazzjoni tal-Linja
Il-host tal-USB jikkontrolla l-kodifikazzjoni tal-linja (rata tal-baud, parità, eċċ.) tal-apparat CDC ACM. Meta jkun meħtieġ, l-applikazzjoni hija responsabbli biex tissettja l-kodifikazzjoni tal-linja. Hemm żewġ funzjonijiet ipprovduti biex jirkupraw u jissettjaw il-kodifikazzjoni tal-linja attwali, kif deskritt fit-tabella hawn taħt.
Tabella – Funzjonijiet tal-Kodifikazzjoni tal-Linja CDC ACM

Funzjoni
sl_usbd_cdc_acm_g e t_line _kodifikazzjoni ()
sl_usbd_cdc_acm_se t_line _kodifikazzjoni ()

Deskrizzjoni
L-applikazzjoni tiegħek tista' tikseb is-settings attwali tal-kodifikazzjoni tal-linja jew mill-host b'talbiet SetLineCoding jew bil-funzjoni sl_usbd_cdc_acm_set_line_coding().
L-applikazzjoni tiegħek tista' tissettja l-kodifikazzjoni tal-linja. Il-host jista' jirkupra s-settings bit-talba GetLineCoding.

Kontroll tal-Linja
Il-host tal-USB jikkontrolla l-kontroll tal-linja (pins RTS u DTR, sinjal ta' waqfien, eċċ.) tal-apparat CDC ACM. Meta jkun meħtieġ, l-applikazzjoni tiegħek hija responsabbli għall-applikazzjoni tal-kontrolli tal-linja. Tiġi pprovduta funzjoni biex tirkupra u tissettja l-kontrolli tal-linja attwali, kif deskritt fit-tabella hawn taħt.
Tabella – Funzjonijiet ta' Kontroll tal-Linja CDC ACM

Funzjoni
sl_usb d _cd c_acm_g e t_line _kontroll tal-istat tal-kontroll ()

L-applikazzjoni tiegħek tista' tikseb l-istat attwali tal-linja ta' kontroll issettjat mill-host bit-talba SetControlLineState.

Stat tal-Linja
Il-host tal-USB jirkupra l-istat tal-linja f'intervall regolari. L-applikazzjoni tiegħek trid taġġorna l-istat tal-linja kull darba li jinbidel. Meta jkun meħtieġ, l-applikazzjoni tiegħek hija responsabbli biex tissettja l-istat tal-linja. Żewġ funzjonijiet huma pprovduti biex jirkupraw u jissettjaw il-kontrolli tal-linja attwali, kif deskritt fit-tabella hawn taħt.
Tabella – Funzjonijiet tal-Istat tal-Linja CDC ACM

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

L-applikazzjoni tiegħek tista' tissettja kwalunkwe avveniment(i) tal-istat tal-linja. Waqt li tissettja l-istat tal-linja, jintbagħat trasferiment ta' interruzzjoni IN lill-host biex jinformah dwar bidla fl-istat tal-linja serjali.
L-applikazzjoni tista' tħassar żewġ avvenimenti tal-istat tal-linja: skoperta tat-trasportatur tat-trażmissjoni u tat-trasportatur tar-riċevitur. L-avvenimenti l-oħra kollha jitneħħew waħedhom mis-subklassi tal-emulazzjoni tas-serje tal-ACM.

Komunikazzjoni tal-Istanza tas-Sottoklassi

Is-sottoklassi ACM ta' Silicon Labs toffri l-funzjonijiet li ġejjin biex tikkomunika mal-host. Għal aktar dettalji dwar il-parametri functions9, ara r-referenza tal-Funzjonijiet tas-Sottoklassi ACM tas-CDC.

Isem tal-funzjoni
sl_usb d _cd c_acm_ aqra () sl_usb d _cd c_acm_write ()

Operazzjoni
Jirċievi dejta mill-host permezz ta' endpoint bulk OUT. Din il-funzjoni qed timblokka. Jibgħat dejta lill-host permezz ta' endpoint bulk IN. Din il-funzjoni qed timblokka.

Copyright © 2025 Silicon Laboratories. Id-drittijiet kollha riżervati.

27/174

Fuqview

Tabella – Sommarju tal-API tal-Komunikazzjoni CDC ACM aaaaa sl_usbd_cdc_acm_read() u sl_usbd_cdc_acm_write() jipprovdu komunikazzjoni sinkronika, li jfisser li t-trasferiment qed jimblokka. Fi kliem ieħor, meta ssejjaħ il-funzjoni, l-applikazzjoni timblokka sakemm it-trasferiment ikun komplut bi jew mingħajr żball. Jista' jiġi speċifikat timeout biex jiġi evitat li tistenna għal dejjem. L-eż.ampHawn taħt turi eżempju ta' qari u kitbaample li jirċievi dejta mill-host bl-użu tal-endpoint bulk OUT u jibgħat dejta lill-host bl-użu tal-endpoint bulk IN.
Listar – Eżempju ta' Qari u Kitba Serjaliample

__ALLINJAT(4) uint8_t rx_buf[2];

__ALLINJAT(4) uint8_t tx_buf[2];

uint32_t

xfer_len;

sl_status_t

status;

status = sl_usbd_cdc_acm_read(subclass_nbr,

(1)

rx_buf,

(2)

2u,

0u,

(3)

&xfer_len);

jekk (status ! SL_STATUS_OK) {

/* Seħħ żball. L-immaniġġjar tal-iżbalji għandu jiżdied hawn. */

}

status = sl_usbd_cdc_acm_write(numru_tas-subklassi,

(1)

tx_buf,

(4)

2u,

0u,

(3)

&xfer_len);

jekk (status ! SL_STATUS_OK) {

/* Seħħ żball. L-immaniġġjar tal-iżbalji għandu jiżdied hawn. */

}

T aaaaa M (1) In-numru tal-istanza tal-klassi ss maħluq b'sl_usbd_cdc_acm_create_instance() jipprovdi referenza interna għas-sottoklassi AC biex imexxi t-trasferiment lejn l-endpoint xieraq tal-bulk OUT jew IN. (2) L-applikazzjoni tiegħek trid tiżgura li l-buffer ipprovdut lill-funzjoni huwa kbir biżżejjed biex jakkomoda d-dejta kollha. Inkella, jistgħu jseħħu problemi ta' sinkronizzazzjoni. (3) Biex tevita sitwazzjoni ta' imblukkar infinit, speċifika timeout espress f'millisekondi. Valur ta' 809 jagħmel il-kompitu tal-applikazzjoni jistenna għal dejjem. (4) L-applikazzjoni tipprovdi l-buffer tat-trażmissjoni inizjalizzat.

Copyright © 2025 Silicon Laboratories. Id-drittijiet kollha riżervati.

28/174

Fuqview
Fuqview

Klassi HID tal-Apparat USB

Apparat USB HID Klassi Overview Ħtiġijiet ta' Riżorsi tal-Klassi HID tal-Apparat USB mill-Qalba Konfigurazzjoni tal-Klassi HID tal-Apparat USB Gwida għall-Ipprogrammar tal-Klassi HID tal-Apparat USB Rapporti ta' Input Perjodiku HID Kompitu
Din it-taqsima tiddeskrivi l-klassi Human Interface Device (HID) appoġġjata minn Silicon Labs USB Device.
Il-klassi HID tinkludi apparati użati mill-bnedmin biex jikkontrollaw l-operazzjonijiet tal-kompjuter, bħal tastieri, ġurdien, apparati li jindikaw, u apparati tal-logħob.
Il-klassi HID tista' tintuża wkoll f'apparat kompost li fih kontrolli bħal pumi, swiċċijiet, buttuni, u sliders. PereżempjuampIl-kontrolli tal-volum, tal-mute u tal-ħoss f'headset tal-awdjo huma kkontrollati mill-funzjoni HID tal-headset. Il-klassi HID tista' tiskambja dejta għal kwalunkwe skop billi tuża biss trasferimenti ta' kontroll u interruzzjoni.
Il-klassi HID hija waħda mill-eqdem u l-aktar klassijiet USB użati. Is-sistemi operattivi ewlenin kollha jipprovdu sewwieq nattiv biex jimmaniġġjaw apparati HID, u huwa għalhekk li varjetà ta' apparati speċifiċi għall-bejjiegħ jaħdmu mal-klassi HID. Din il-klassi tinkludi wkoll diversi tipi ta' oġġetti ta' output bħal LEDs, awdjo, feedback tattili, eċċ.
L-implimentazzjoni tal-HID tikkonforma mal-ispeċifikazzjonijiet li ġejjin:
Definizzjoni tal-Klassi tal-Apparat għal Apparati tal-Interfaċċja Umana (HID), 27/6/01, Verżjoni 1.11. Tabelli tal-Użu tal-HID tal-Universal Serial Bus, 28/10/2004, Verżjoni 1.12.
Apparat USB HID Klassi Overview
Fuqview
Apparat HID huwa magħmul mill-endpoints li ġejjin:
Par ta' endpoints ta' kontroll IN u OUT imsejjaħ l-endpoint awtomatiku Endpoint ta' interruzzjoni IN Endpoint ta' interruzzjoni OUT fakultattiv
It-tabella t'hawn taħt tiddeskrivi l-użu tad-diversi endpoints:
Tabella – Użu tal-Endpoints tal-Klassi HID

Użu tad-Direzzjoni tal-Punt Finali

Kontroll IN
Kontroll
BARRA
Interruzzjoni DAĦLA
Tinterrompi
BARRA

Apparat għal host
Host-to-device
Apparat għal host
Host-to-device

Talbiet standard għal enumerazzjoni, talbiet speċifiċi għall-klassi, u komunikazzjoni tad-dejta (Input, Rapporti tal-karatteristiċi mibgħuta lill-host bit-talba GET_REPORT). Talbiet standard għal enumerazzjoni, talbiet speċifiċi għall-klassi u komunikazzjoni tad-dejta (Output, Rapporti tal-karatteristiċi riċevuti mill-host bit-talba SET_REPORT). Komunikazzjoni tad-dejta (Rapporti tal-Input u tal-karatteristiċi).
Komunikazzjoni tad-dejta (Rapporti tal-Output u l-Karatteristiċi).

Rapport

Copyright © 2025 Silicon Laboratories. Id-drittijiet kollha riżervati.

29/174

Fuqview

Host u apparat HID jiskambjaw dejta permezz ta' rapporti. Rapport fih dejta fformattjata li tagħti informazzjoni dwar kontrolli u entitajiet fiżiċi oħra tal-apparat HID. Kontroll jista' jiġi mmanipulat mill-utent u jopera aspett tal-apparat. PereżempjuampPereżempju, kontroll jista' jkun buttuna fuq maws jew tastiera, swiċċ, eċċ. Entitajiet oħra jinfurmaw lill-utent dwar l-istat ta' ċerti karatteristiċi tal-apparat. PereżempjuampPereżempju, l-LEDs fuq tastiera jinnotifikaw lill-utent dwar il-caps lock mixgħula, it-tastiera numerika attiva, eċċ.
Il-format u l-użu tad-dejta ta' rapport jinftiehmu mill-host billi janalizza l-kontenut ta' Deskrizzjoni tar-Rapport. L-analiżi tal-kontenut issir minn parser. Id-Deskrittur tar-Rapport jiddeskrivi d-dejta pprovduta minn kull kontroll f'apparat. Hija magħmula minn oġġetti li huma biċċiet ta' informazzjoni dwar l-apparat u jikkonsistu minn prefiss ta' byte wieħed u tul varjabbli.
dejta. Għal aktar dettalji dwar il-format tal-oġġett, irreferi għal
1.11=, taqsima 5.6 u 6.2.2.
Hemm tliet tipi prinċipali ta’ oġġetti:
L-oġġett prinċipali jiddefinixxi jew jiġbor fi gruppi ċerti tipi ta' oqsma tad-dejta.
L-oġġett globali jiddeskrivi l-karatteristiċi tad-dejta ta' kontroll.
Oġġett lokali jiddeskrivi l-karatteristiċi tad-dejta ta' kontroll.
Kull tip ta' oġġett huwa definit minn funzjonijiet differenti. Funzjoni ta' oġġett tista' tissejjaħ ukoll tagFunzjoni ta' oġġett tista' titqies bħala sottooġġett li jappartjeni għal wieħed mit-tliet tipi prinċipali ta' oġġetti. It-tabella t'hawn taħt tipprovdi ħarsa ġenerali fil-qosor.view tal-funzjonijiet tal-oġġett9s f'kull tip ta' oġġett. Għal deskrizzjoni sħiħa tal-oġġetti f'kull kategorija, ara
Tabella – Deskrizzjoni tal-Funzjoni tal-Oġġett għal Kull Tip ta' Oġġett

Oġġett Tip ta' Oġġett Funzjoni

Deskrizzjoni

Input Prinċipali

Jiddeskrivi informazzjoni dwar id-dejta pprovduta minn kontroll fiżiku wieħed jew aktar.

L-Output Prinċipali Jiddeskrivi d-dejta mibgħuta lill-apparat.

Karatteristika Prinċipali

Tiddeskrivi l-informazzjoni dwar il-konfigurazzjoni tal-apparat mibgħuta lill-apparat jew riċevuta mill-apparat li tinfluwenza l-imġiba ġenerali tal-apparat jew ta' wieħed mill-komponenti tiegħu.

Oġġetti relatati mal-Grupp tal-Kollezzjoni Prinċipali (Input, Output jew Karatteristika).

Tmiem Prinċipali ta' Jagħlaq kollezzjoni. Kollezzjoni

Copyright © 2025 Silicon Laboratories. Id-drittijiet kollha riżervati.

30/174

Fuqview

Oġġett Tip ta' Oġġett Funzjoni

Deskrizzjoni

Paġna tal-Użu Globali

Jidentifika funzjoni disponibbli fl-apparat.

Loġiku Globali Jiddefinixxi l-limitu minimu tal-valuri rrappurtati f'unitajiet loġiċi. Minimu

Loġiku Globali Jiddefinixxi l-limitu massimu tal-valuri rrappurtati f'unitajiet loġiċi. Massimu

Fiżiku Globali Jiddefinixxi l-limitu aktar baxx tal-valuri rrappurtati f'unitajiet fiżiċi, jiġifieri l-Minimu Loġiku espress f'unitajiet fiżiċi.

Fiżiku Globali Jiddefinixxi l-limitu massimu tal-valuri rrappurtati f'unitajiet fiżiċi, jiġifieri l-Massimu Logiku espress f'unitajiet fiżiċi.

Unità Globali

Jindika l-esponent tal-unità f'bażi ​​10. L-esponent ivarja minn -8 sa +7.

Esponent

Unità Globali

Jindika l-unità tal-valuri rrappurtati. Pereżempju, unitajiet tat-tul, tal-massa, tat-temperatura, eċċ.

Daqs tar-Rapport Globali

Jindika d-daqs tal-oqsma tar-rapport f'bits.

ID tar-Rapport Globali Jindika l-prefiss miżjud ma' rapport partikolari.

Għadd ta' Rapporti Globali

Jindika n-numru ta' oqsma tad-dejta għal oġġett.

Spinta Globali

Ipoġġi kopja tat-tabella tal-istat globali tal-oġġett fuq l-istack tas-CPU.

Pop Globali

Jissostitwixxi t-tabella tal-istat tal-oġġett bl-aħħar struttura mill-munzell.

Użu Lokali

Jirrappreżenta indiċi biex jindika Użu speċifiku f'Paġna ta' Użu. Jindika l-użu ssuġġerit mill-bejjiegħ għal kontroll speċifiku jew grupp ta' kontrolli. Użu jipprovdi informazzjoni lil żviluppatur ta' applikazzjoni dwar x'qed fil-fatt ikejjel kontroll.

Użu Lokali

Jiddefinixxi l-użu inizjali assoċjat ma' array jew bitmap.

Minimu

Użu Lokali

Jiddefinixxi l-użu finali assoċjat ma' array jew bitmap.

Massimu

Deżinjatur Lokali Jiddetermina l-parti tal-ġisem użata għal kontroll. L-indiċi jindika deżinjatur fil-Parti Fiżika

Indiċi

deskrittur.

Deżinjatur Lokali Jiddefinixxi l-indiċi tad-deżinjatur tal-bidu assoċjat ma' array jew bitmap. Minimu

Deżinjatur Lokali Jiddefinixxi l-indiċi tad-deżinjatur tat-tmiem assoċjat ma' array jew bitmap. Massimu

Indiċi tal-Korda Lokali

Indiċi ta' string għal deskrittur ta' String. Jippermetti li string tiġi assoċjata ma' oġġett jew kontroll partikolari.

String Lokali

Jispeċifika l-ewwel indiċi tal-istring meta jiġi assenjat grupp ta' strings sekwenzjali lil kontrolli f'firxa

Minimu jew bitmap.

Lokali Lokali

String Massimu
Delimitatur

Jispeċifika l-aħħar indiċi tal-istring meta jiġi assenjat grupp ta' strings sekwenzjali lil kontrolli f'array jew bitmap.
Jiddefinixxi l-bidu jew it-tmiem ta' sett ta' oġġetti lokali.

Id-dejta ta' kontroll trid tiddefinixxi mill-inqas l-oġġetti li ġejjin:
Input, Output jew Karatteristika Oġġetti Prinċipali Użu Oġġett Lokali Użu Paġna Oġġett Globali Minimu Loġiku Oġġett Globali Massimu Loġiku Oġġett Globali Daqs tar-Rapport Oġġett Globali

Copyright © 2025 Silicon Laboratories. Id-drittijiet kollha riżervati.

31/174

Fuqview
Għadd tar-Rapporti Oġġett Globali It-tabella t'hawn taħt turi r-rappreżentazzjoni tal-kontenut tad-deskrizzjoni tar-Rapport tal-Maws mill-perspettiva ta' parser tal-HID ospitanti. Il-maws għandu tliet buttuni (xellug, lemin, u rota). Il-kodiċi ppreżentat fl-eż.ampHawn taħt tinsab implimentazzjoni tal-kodiċi li tikkorrispondi għal din ir-rappreżentazzjoni tad-deskrizzjoni tar-Rapport tal-maws.
Figura – Kontenut tad-Deskrittur tar-Rapport minn Parser tal-HID Ospitanti View

(1) Il-funzjoni tal-oġġett tal-Paġna tal-Użu tispeċifika l-funzjoni ġenerali tal-apparat. F'dan l-eżempjuampjiġifieri, l-apparat HID jappartjeni għal
kontroll ġeneriku tad-desktop.
(2) Il-Kollezzjoni Applikazzjoni tiġbor flimkien oġġetti Prinċipali li għandhom skop komuni u jistgħu jkunu familjari għall-applikazzjonijiet. Fid-dijagramma, il-grupp huwa magħmul minn tliet oġġetti Prinċipali tal-Input. Għal din il-kollezzjoni, l-użu ssuġġerit għall-kontrolli huwa maws kif indikat mill-oġġett Użu. (3) Kollezzjonijiet imdaħħla flimkien jistgħu jintużaw biex jagħtu aktar dettalji dwar l-użu ta' kontroll wieħed jew grupp ta' kontrolli għall-applikazzjonijiet. F'dan l-eżempjuampJiġifieri, il-Fiżika tal-Kollezzjoni, imdaħħla fl-Applikazzjoni tal-Kollezzjoni, hija magħmula mill-istess tliet elementi ta' Input li jiffurmaw l-Applikazzjoni tal-Kollezzjoni. Il-Fiżika tal-Kollezzjoni tintuża għal sett ta' elementi ta' dejta li jirrappreżentaw punti ta' dejta miġbura f'punt ġeometriku wieħed. Fl-eżempjuampPereżempju, l-użu ssuġġerit huwa pointer kif indikat mill-oġġett Użu. Hawnhekk l-użu tal-pointer jirreferi għall-koordinati tal-pożizzjoni tal-maws u s-softwer tas-sistema se jittraduċi l-koordinati tal-maws fil-moviment tal-cursor tal-iskrin. (4) Paġni ta' użu nested huma wkoll possibbli u jagħtu aktar dettalji dwar ċertu aspett fil-funzjoni ġenerali tal-apparat. F'dan il-każ, żewġ oġġetti Inputs huma miġbura u jikkorrispondu mal-buttuni tal-maws. Oġġett Input wieħed jiddefinixxi t-tliet buttuni tal-maws (lemin, xellug u rota) f'termini ta' numru ta' oqsma tad-dejta għall-oġġett (oġġett Għadd tar-Rapport), daqs ta' qasam tad-dejta (oġġett Daqs tar-Rapport) u valuri possibbli għal kull qasam tad-dejta (oġġetti Użu Minimu u Massimu, Minimu Loġiku u Massimu). L-oġġett Input l-ieħor huwa kostanti ta' 13-il bit li tippermetti li d-dejta tar-rapport Input tiġi allinjata fuq fruntiera ta' byte. Dan l-oġġett Input jintuża biss għal skop ta' padding. (5) Paġna oħra ta' użu nested li tirreferi għal kontroll ġeneriku tad-desktop hija definita għall-koordinati tal-pożizzjoni tal-maws. Għal din il-paġna ta' użu, l-oġġett Input jiddeskrivi l-oqsma tad-dejta li jikkorrispondu għall-assi x u y kif speċifikat miż-żewġ Użu.
oġġetti.
Wara li jiġi analizzat il-kontenut tad-deskrizzjoni tar-Rapport tal-maws preċedenti, il-parser tal-HID tal-host9 ikun jista' jinterpreta d-dejta tar-rapport tal-Input mibgħuta mill-apparat b'interruzzjoni fit-trasferiment IN jew b'reazzjoni għal talba GET_REPORT. Id-dejta tar-rapport tal-Input li tikkorrispondi mad-deskrizzjoni tar-Rapport tal-maws murija fil-Figura – Kontenut tad-deskrizzjoni tar-Rapport minn Parser tal-HID tal-Host View is

Copyright © 2025 Silicon Laboratories. Id-drittijiet kollha riżervati.

32/174

Fuqview

muri fit-tabella t'hawn taħt. Id-daqs totali tad-dejta tar-rapport huwa ta' 4 bytes. Tipi differenti ta' rapporti jistgħu jintbagħtu fuq l-istess endpoint. Għall-iskop li jiġu distinti t-tipi differenti ta' rapporti, prefiss ta' ID ta' rapport ta' byte wieħed jiżdied mar-rapport tad-dejta. Jekk intuża ID ta' rapport fl-eż.ampFir-rapport tal-maws, id-daqs totali tad-dejta tar-rapport ikun ta' 5 bytes.
Tabella – Rapport tal-Input Mibgħut lill-Host u li Jikkorrispondi għall-Istat ta' Maws bi 3 Buttuni

Bit Offset
0 1 2 3 16 24

Għadd ta' Bits 1 1 1 13 8 8

Deskrizzjoni Buttuna 1 (buttuna tax-xellug). Buttuna 2 (buttuna tal-lemin). Buttuna 3 (buttuna tar-rota). Mhux użata. Pożizzjoni fuq l-assi X. Pożizzjoni fuq l-assi Y.

Deskrizzjoni fiżika tindika l-parti jew il-partijiet tal-ġisem maħsuba biex jattivaw kontroll jew kontrolli. Applikazzjoni tista' tuża din l-informazzjoni biex tassenja funzjonalità lill-kontroll ta' apparat. Deskrizzjoni fiżika hija deskrizzjoni speċifika għall-klassi mhux obbligatorja u l-biċċa l-kbira tal-apparati għandhom ftit qligħ għall-użu tiegħu. Irreferi għal
Ħtiġijiet ta' Riżorsi tal-Klassi HID tal-Apparat USB mill-Qalba

Kull darba li żżid istanza ta' klassi HID ma' konfigurazzjoni USB permezz ta' sejħa għall-funzjoni sl_usbd_hid_add_to_configuration(), ir-riżorsi li ġejjin se jiġu allokati mill-qalba.

Riżorsa
Interfejsijiet Interfejsijiet alternattivi Punti tat-tmiem Gruppi ta' interfejsijiet

Kwantità
1 1 1 (2 jekk l-endpoint tal-interruzzjoni OUT ikun attivat) 0

Innota li dawk in-numri huma għal kull konfigurazzjoni. Meta tissettja l-valuri ta' konfigurazzjoni SL_USBD_INTERFACE_QUANTITY, SL_USBD_ALT_INTERFACE_QUANTITY, SL_USBD_INTERFACE_GROUP_QUANTITY u SL_USBD_DESCRIPTOR_QUANTITY tiegħek, tinsiex tikkunsidra kemm-il konfigurazzjoni se tiżdied mal-klassi. Għall-valur ta' konfigurazzjoni SL_USBD_OPEN_ENDPOINTS_QUANTITY, peress li l-endpoints jinfetħu biss meta konfigurazzjoni tiġi ssettjata mill-host, inti sempliċiment għandek tikkunsidra n-numru ta' endpoints meħtieġa għal istanza ta' klassi.
Konfigurazzjoni tal-Klassi HID tal-Apparat USB

Żewġ gruppi ta' parametri ta' konfigurazzjoni jintużaw biex tiġi kkonfigurata l-klassi HID:
Konfigurazzjonijiet Speċifiċi għall-Applikazzjoni tal-Klassi HID tal-Apparat USB Konfigurazzjonijiet tal-Istanza tal-Klassi HID tal-Apparat USB
Konfigurazzjonijiet Speċifiċi għall-Applikazzjoni tal-Klassi HID tal-Apparat USB

L-ewwel, biex tuża l-modulu tal-klassi HID tal-apparat USB ta' Silicon Labs, aġġusta d-definizzjonijiet tal-konfigurazzjoni tal-ħin tal-kumpilazzjoni tal-HID skont il-bżonnijiet tal-applikazzjoni tiegħek. Dawn huma miġbura mill-ġdid ġewwa l-intestatura sl_usbd_core_config.h file taħt it-taqsima HID. Dawn jistgħu jinqasmu f'żewġ taqsimiet, il-konfigurazzjonijiet tal-kwantità u l-konfigurazzjonijiet tal-kompitu HID. L-iskop tal-konfigurazzjonijiet tal-kwantità huwa li jinforma lill-modulu tal-apparat USB dwar kemm oġġetti USB HID għandhom jiġu allokati.
It-tabella t'hawn taħt tiddeskrivi kull konfigurazzjoni definita.
Tabella – Tiddefinixxi l-Konfigurazzjoni HID tal-Apparat USB

Copyright © 2025 Silicon Laboratories. Id-drittijiet kollha riżervati.

33/174

Fuqview

Isem tal-Konfigurazzjoni
SL_USBD_HID_CL ASS_INSTANCE_QUANTITY
KWANTITÀ_TA'_KONFIGURAZZJONI_SL_USBD_HID
SL_USBD_HID_REPORT_ ID_KWANTITÀ
SL_USBD_HID_PUSH_P OP_ITEM_KWANTITÀ
SL_USBD_HID_TIMER_T ASK_STACK_SIZE
SL_USBD_HID_TIMER_T ASK_PRIORITY

Deskrizzjoni
Numru ta' istanzi tal-klassi li se talloka permezz ta' sejħa lill-funzjoni
sl_usbd_hid_create_instance().
Numru ta' konfigurazzjonijiet. L-istanzi tal-klassi HID jistgħu jiżdiedu ma' konfigurazzjoni waħda jew aktar aaaa permezz tal-funzjoni sl_usbd_hid_add_to_configuration(). Tikkonfigura n-numru totali ta' IDs tar-rapporti li għandhom jiġu allokati.
Jikkonfigura n-numru totali ta' oġġetti Push/Pop li għandhom jiġu allokati.
Il-kompitu tat-tajmer jieħu ħsieb l-operazzjonijiet HID kollha bbażati fuq it-tajmer. Din il-konfigurazzjoni tippermettilek tissettja d-daqs tal-munzell (f'numru ta' bytes). Prijorità tal-kompitu HID. Din hija prijorità CMSIS-RTOS2.

Valur Default
2 1 2 0 2048
Prijorità Għolja tal-os

Konfigurazzjonijiet tal-Istanza tal-Klassi HID tal-Apparat USB Sottoklassi tal-Ħolqien tal-Istanza tal-Klassi
kodiċi_tal-pajjiż tal-protokoll
interval_in u interval_out p_hid_callback Deskrizzjoni tar-Rapport tal-Klassi HID Eż.ampDin it-taqsima tiddefinixxi l-konfigurazzjonijiet relatati mal-istanzi tal-klassi HID.
Ħolqien ta' Istanza tal-Klassi
Il-ħolqien ta' istanza tal-klassi HID isir billi tissejjaħ il-funzjoni aaa sl_usbd_hid_create_instance(), li tieħu diversi argumenti ta' konfigurazzjoni li huma deskritti hawn taħt.
sottoklassi
Kodiċi tas-subklassi HID. Il-valuri possibbli huma:
SL_USBD_HID_SUBCL ASS_NONE SL_USBD_HID_SUBCL ASS_BOOT
Apparat HID li juża s-subklassi tal-boot irid juża formati standard ta' rapporti. Għal aktar informazzjoni dwar il-kodiċijiet tas-subklassi, ara t-taqsima 4.2 tar-reviżjoni 1.11 tal-ispeċifikazzjoni HID.
protokoll
Protokoll użat mill-apparat HID. Il-valuri possibbli huma:
SL_USBD_HID_PROTOCOL_NONE SL_USBD_HID_PROTOCOL_KBD SL_USBD_HID_PROTOCOL_MOUSE
Jekk il-funzjoni HID tiegħek hija maws, il-protokoll għandu jkun issettjat għal SL_USBD_HID_PROTOCOL_MOUSE. Jekk hija tastiera, għandha tkun issettjata għal SL_USBD_HID_PROTOCOL_KBD. Inkella, il-protokoll għandu jkun issettjat għal SL_USBD_HID_PROTOCOL_NONE. Għal aktar informazzjoni dwar il-kodiċijiet tas-sottoklassi, ara t-taqsima 4.3 tar-reviżjoni 1.11 tal-ispeċifikazzjoni HID.
kodiċi_tal-pajjiż
ID tal-kodiċi tal-pajjiż. Il-valuri possibbli huma:
SL_USBD_HID_KODIĊI_TAL-PAJJIŻ_MHUX_APPOĠĠJAT

Copyright © 2025 Silicon Laboratories. Id-drittijiet kollha riżervati.

34/174

Fuqview
Kodiċi tal-Pajjiż SL_USBD_HID_Għarbi Kodiċi tal-Pajjiż SL_USBD_HID_Belġju Kodiċi tal-Pajjiż SL_USBD_HID_Kanadiż_Bilingwi Kodiċi tal-Pajjiż SL_USBD_HID_Kanadiż_Franċiż Kodiċi tal-Pajjiż SL_USBD_HID_Republika Ċeka Kodiċi tal-Pajjiż SL_USBD_HID_Daniż Kodiċi tal-Pajjiż SL_USBD_HID_Finlandiż Kodiċi tal-Pajjiż SL_USBD_HID_Franċiż Kodiċi tal-Pajjiż SL_USBD_HID_Ġermaniż Kodiċi tal-Pajjiż SL_USBD_HID_Grieg Kodiċi tal-Pajjiż SL_USBD_HID_Ebrajk Kodiċi tal-Pajjiż SL_USBD_HID_Ungerija Kodiċi tal-Pajjiż SL_USBD_HID_Internazzjonali Kodiċi tal-Pajjiż SL_USBD_HID_TALJAN SL_USBD_HID_KODIĊI_TA'_PAJJIŻ_ĠAPPUN_KATAKANA SL_USBD_HID_KODIĊI_TA'_PAJJIŻ_KOREAN SL_USBD_HID_KODIĊI_TA'_PAJJIŻ_L AMERIKAN SL_USBD_HID_KODIĊI_TA'_PAJJIŻ_NETHERLANDIŻ U OLANDIŻ SL_USBD_HID_KODIĊI_TA'_PAJJIŻ_NORVEĠIŻ SL_USBD_HID_KODIĊI_TA'_PAJJIŻ_PERSJAN_FARSI SL_USBD_HID_KODIĊI_TA'_PAJJIŻ_POLONJAN U SL_USBD_HID_KODIĊI_TA'_PAJJIŻ_PORTUGIŻ SL_USBD_HID_KODIĊI_TA'_RUSSJA SL_USBD_HID_KODIĊI_TA'_SLOVAKKJA SL_USBD_HID_KODIĊI_TA'_PAJJIŻ_SPANJOL SL_USBD_HID_KODIĊI_TA'_PAJJIŻ_ŻVEZJAN SL_USBD_HID_KODIĊI_TA'_PAJJIŻ_ŻVIZZJAN_FRANĊIŻ SL_USBD_HID_KODIĊI_TAL-PAJJIŻ_ŻVIZZERA_ĠERMANIŻ SL_USBD_HID_KODIĊI_TAL-PAJJIŻ_ŻVIZZERA U SL_USBD_HID_KODIĊI_TAL-PAJJIŻ_TAJWAN SL_USBD_HID_KODIĊI_TAL-PAJJIŻ_TURK_Q SL_USBD_HID_KODIĊI_TAL-PAJJIŻ_UK SL_USBD_HID_KODIĊI_TAL-PAJJIŻ_US SL_USBD_HID_KODIĊI_TAL-PAJJIŻ_YUG OSL AVIA SL_USBD_HID_KODIĊI_TAL-PAJJIŻ_TURK_F
Il-kodiċi tal-pajjiż jidentifika għal liema pajjiż huwa lokalizzat il-ħardwer. Il-biċċa l-kbira tal-ħardwer mhuwiex lokalizzat u għalhekk dan l-av ikun SL_USBD_HID_COUNTRY_CODE_NOT_SUPPORTED (0). Madankollu, it-tastieri jistgħu jużaw il-qasam biex jindikaw il-lingwa tal-kappell tat-tasti.
Għal aktar informazzjoni dwar il-kodiċijiet tal-pajjiżi, ara t-taqsima 6.2.1 tar-reviżjoni 1.11 tal-ispeċifikazzjoni tal-HID.
intervall_in u intervall_out
interval_in u interval_out jirrappreżentaw l-intervall tal-polling tal-endpoint tal-interruzzjoni IN u l-endpoint tal-interruzzjoni OUT.
Dan jirrappreżenta l-intervall tal-polling tal-endpoint, f'millisekondi. L-issettjar ta' dan il-valur jiddependi fuq kemm-il darba l-apparat tiegħek ikun suxxettibbli li jiġġenera rapport ġdid għall-host. Pereżempju, jekk jiġi ġġenerat rapport kull 16-il millisekonda, l-intervall għandu jkun 16 jew inqas.
Il-valur irid ikun qawwa ta' 2 (1, 2, 4, 8, 16, eċċ.).
Valur ta' interval_out jiġi injorat jekk ctrl_rd_en ikun issettjat għal true.
p_hid_callback
aaaa p_hid_callback huwa pointer għal struttura tat-tip sl_usbd_hid_callbacks_t. L-iskop tiegħu huwa li jagħti lill-HID Cl ss sett ta' funzjonijiet callback li għandhom jissejħu meta jseħħ avveniment HID.

Copyright © 2025 Silicon Laboratories. Id-drittijiet kollha riżervati.

35/174

Fuqview

Mhux il-callbacks kollha huma obbligatorji u jista' jiġi mgħoddi pointer null (NULL) fil-varjabbli tal-istruttura tal-callbacks meta l-callback ma jkunx meħtieġ. It-tabella t'hawn taħt tiddeskrivi kull qasam ta' konfigurazzjoni disponibbli f'din l-istruttura ta' konfigurazzjoni.
Tabella – Struttura ta' Konfigurazzjoni sl_usbd_hid_callbacks_t

Oqsma

Deskrizzjoni

Firma tal-Funzjoni

.ippermetti .iddiżattiva .ikseb_deskrizzjoni_tar-rapport
.get_phy_desc
.set_output_report .get_feature_report .set_feature_report

Imsejjaħ meta l-istanza tal-klassi USB tiġi attivata b'suċċess. Imsejjaħ meta l-istanza tal-klassi USB tiġi diżattivata.
Imsejjaħ waqt il-ħolqien tal-Istanza HID biex jgħaddi d-deskrizzjoni tar-rapport tiegħek. Għal kull waħda mill-funzjonijiet HID tiegħek, trid tipprovdi deskrizzjoni tar-rapport. Id-deskrizzjoni tar-rapport tindika lill-host kif għandu jiġi analizzat ir-rapport perjodiku li se jintbagħat mill-apparat. Il-kitba tad-deskrizzjoni tar-rapport tiegħek stess tista' tkun ta' sfida, u huwa għalhekk li hemm xi riżorsi biex jgħinu. Din hija l-unika funzjoni obbligatorja ta' callback. Imsejjaħ waqt il-ħolqien tal-Istanza HID biex jgħaddi d-deskrizzjoni fiżika tiegħek. Id-deskrizzjoni fiżika hija deskrittura li tipprovdi informazzjoni dwar il-parti jew partijiet speċifiċi tal-ġisem tal-bniedem li qed jattivaw kontroll jew kontrolli. Għal aktar informazzjoni dwar id-deskrizzjonijiet fiżiċi, ara t-taqsima 6.2.3 tar-reviżjoni 1.11 tal-ispeċifikazzjoni HID. Id-deskrizzjoni fiżika hija fakultattiva u ħafna drabi tiġi injorata. Il-buffer mgħoddi hawn jista' jiġi ssettjat għal NULL u t-tul issettjat għal 0. Imsejjaħ meta l-host jistabbilixxi rapport kif deskritt fid-deskrizzjoni tar-rapport tiegħek (meta jibgħat rapport).
Imsejjaħ meta l-host jitlob rapport tal-karatteristika kif deskritt fid-deskrizzjoni tar-rapport tiegħek.
Imsejjaħ meta l-host jistabbilixxi rapport tal-karatteristika kif deskritt fid-deskrizzjoni tar-rapport tiegħek.

void app_usbd_hid_enable(uint8_t klassi_nbr); void app_usbd_hid_disable(uint8_t klassi_nbr); void app_usbd_hid_get_report_desc(uint8_t klassi_nbr, const uint8_t *p_report_ptr, uint16_tp_report_len);
vojt 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

Jirkupra l-protokoll attiv attwali.

void app_usbd_hid_get_protocol(uint8_t class_nbr, uint8_t *p_protocol);

.sett_protokoll

Jissettja l-protokoll attiv attwali.

void app_usbd_hid_set_protocol(uint8_t class_nbr, uint8_t protocol);

Deskrizzjoni tar-Rapport tal-Klassi HID Eż.ample

Klassijiet HID ta' Silicon LabsampL-applikazzjoni tipprovdi eżempjuampdeskrittur ta' rapport għal ġurdien sempliċi. L-eż.ampHawn taħt turi deskrittur ta' rapport tal-ġrieden.
Example – Deskrizzjoni tar-Rapport tal-Ġurdien

statiku uint8_t app_usbd_hid_report_desc[] = {

(1) (2)

SL_USBD_HID_GLOBAL_USAGE_PAGE + 1, SL_USBD_HID_USAGE_PAGE_GENERIC_DESKTOP_CONTROLS,

SL_USBD_HID_LOCAL_USAGE + 1, SL_USBD_HID_CA_MOUSE,

(3)

Copyright © 2025 Silicon Laboratories. Id-drittijiet kollha riżervati.

36/174

Fuqview

SL_USBD_HID_KOLLEZZJONI_EWLENIJA +1, SL_USBD_HID_KOLLEZZJONI_APPLIKAZZJONI,(4)

SL_USBD_HID_LOCAL_USAGE +1, SL_USBD_HID_CP_POINTER,(5)

SL_USBD_HID_KOLLEZZJONI_EWLENIJA +1, SL_USBD_HID_KOLLEZZJONI_FIŻIKA,(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_VARIABBLI_PRINĊIPALI |

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_KONSTANT,(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_VARIABBLI_PRINĊIPALI |

SL_USBD_HID_MAIN_RELATIVE,

SL_USBD_HID_MAIN_ENDCOLLECTION,(10)

SL_USBD_HID_MAIN_ENDCOLLECTION

(11)};

(1) It-tabella li tirrappreżenta deskrittur ta' rapport tal-maws hija inizjalizzata b'tali mod li kull linja tikkorrispondi għal oġġett qasir. Dan tal-aħħar huwa ffurmat minn prefiss ta' byte wieħed u dejta ta' byte wieħed. Irreferi għal viewed minn parser tal-HID ospitanti fil-Figura – Irrapporta l-Kontenut tad-Deskrittur minn Parser tal-HID Ospitanti View.
(2) Tintuża l-Paġna tal-Użu Ġeneriku tad-Desktop.
(3) Fil-Paġna tal-Użu Ġeneriku tad-Desktop, l-użu tag jissuġġerixxi li l-grupp ta' kontrolli huwa għall-kontroll ta' maws. Kollezzjoni ta' maws tipikament tikkonsisti f'żewġ assi (X u Y) u buttuna waħda, tnejn, jew tlieta.
(4) Il-ġbir tal-ġrieden inbeda.
(5) Fil-kollezzjoni tal-ġrieden, użu tag jissuġġerixxi b'mod aktar speċifiku li l-kontrolli tal-maws jappartjenu għall-kollezzjoni tal-pointers. Kollezzjoni ta' pointers hija kollezzjoni ta' assi li tiġġenera valur biex tidderieġi, tindika, jew tipponta l-intenzjonijiet tal-utent lejn applikazzjoni.
(6) Il-ġbir tal-pointer jinbeda.
(7) Il-Paġna tal-Użu tal-Buttuni tiddefinixxi oġġett ta' Input magħmul minn tliet oqsma ta' bit wieħed. Kull qasam ta' bit wieħed jirrappreżenta l-buttuna 1, 2 u 3 tal-maws rispettivament u jista' jirritorna valur ta' 0 jew 1.
(8) L-Input Item għall-Paġna tal-Użu tal-Buttuni huwa mimli bi 13-il bit ieħor.
(9) Paġna oħra ta' Użu Ġeneriku tad-Desktop hija indikata biex tiddeskrivi l-pożizzjoni tal-maws bl-assi X u Y. L-oġġett tal-Input huwa magħmul minn żewġ oqsma ta' 8-bit li l-valur tagħhom jista' jkun bejn -127 u 127.
(10) Il-kollezzjoni tal-pointer hija magħluqa.
(11) Il-kollezzjoni tal-ġrieden hija magħluqa.
Paġna HID ta' USB.org

Copyright © 2025 Silicon Laboratories. Id-drittijiet kollha riżervati.

37/174

Fuqview
Il-Forum tal-Implimentaturi tal-USB (USB-IF) jipprovdi għodda msejħa “HID Descriptor Tool” flimkien ma’ informazzjoni oħra dwar il-format tad-deskrizzjoni tar-rapport. Ara http://www.usb.org/developers/hidpage/ għal aktar informazzjoni.
Gwida għall-Ipprogrammar tal-Klassi HID tal-Apparat USB
Din it-taqsima tispjega kif tuża l-klassi HID. Inizjalizzazzjoni tal-Klassi HID tal-Apparat USB Żieda ta' Istanza tal-Klassi HID tal-Apparat USB mal-Apparat tiegħek Komunikazzjoni bl-użu tal-Klassi HID tal-Apparat USB
Inizjalizzazzjoni tal-Klassi HID tal-Apparat USB
Biex iżżid il-funzjonalità tal-Klassi HID mat-tagħmir tiegħek, l-ewwel trid tinizjalizza l-klassi billi ssejjaħ il-funzjoni sl_usbd_hid_init(). L-eż.ampHawn taħt juri kif għandek issejjaħ sl_usbd_hid_init() bl-użu ta' argumenti awtomatiċi. Għal aktar informazzjoni dwar l-argumenti ta' konfigurazzjoni li għandhom jgħaddu lil sl_usbd_hid_init(), ara Konfigurazzjonijiet Speċifiċi tal-Applikazzjoni tal-Klassi HID tal-Apparat USB.
Example – Sejħa ta' sl_usbd_hid_init()
status_sl_status_t;
status = sl_usbd_hid_init(); jekk (status ! SL_STATUS_OK) { /* Seħħ żball. L-immaniġġjar tal-iżbalji għandu jiżdied hawn. */
}
Żieda ta' Istanza tal-Klassi HID ta' Apparat USB mat-Tagħmir Tiegħek
Biex iżżid il-funzjonalità tal-klassi HID mat-tagħmir tiegħek, trid toħloq istanza, imbagħad iżżidha mal-konfigurazzjoni(jiet) tat-tagħmir tiegħek.
Il-Ħolqien ta' Istanza tal-Klassi HID
Oħloq istanza tal-klassi HID billi ssejjaħ il-funzjoni sl_usbd_hid_create_instance(). L-eż.ampHawn taħt juri kif toħloq funzjoni sempliċi tal-maws permezz ta' sl_usbd_hid_create_instance() bl-użu ta' argumenti default. Għal aktar informazzjoni dwar l-argumenti ta' konfigurazzjoni li għandhom jgħaddu lil sl_usbd_hid_create_instance(), ara Konfigurazzjonijiet tal-Istanza tal-Klassi HID tat-Tagħmir USB.
Example – Żieda ta' Funzjoni tal-Maws permezz ta' sl_usbd_hid_create_instance()

Copyright © 2025 Silicon Laboratories. Id-drittijiet kollha riżervati.

38/174

Fuqview
/* Kostanti globali. */ kostanza statika 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_VARIABBLI | 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 };
/* Varjabbli lokali.*/ 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 };
vojt app_usbd_hid_get_report_desc(uint8_t class_nbr, const uint8_t **p_report_ptr, uint16_t *p_report_len)
{ (vojt) numru_tal-klassi;
*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, veru, &app_usbd_hid_callbacks, &class_nbr);
Copyright © 2025 Silicon Laboratories. Id-drittijiet kollha riżervati.

39/174

Fuqview
/* Seħħ żball. L-immaniġġjar tal-iżbalji għandu jiżdied hawn. *
Żieda tal-Istanza tal-Klassi HID mal-Konfigurazzjoni(jiet) tat-Tagħmir Tiegħek Wara li tkun ħloqt istanza tal-klassi HID, tista' żżidha ma' konfigurazzjoni billi ssejjaħ il-funzjoni
sl_usbd_hid_add_to_configuration().
L-exampIl-fajl t'hawn taħt juri kif għandek issejjaħ sl_usbd_hid_add_to_configuration().
Example – Sejħa ta' sl_usbd_hid_add_to_configuration()

status_sl_status_t;

sl_usbd_hid_add_to_configuration(numru_tal-klassi,

(1)

konfigurazzjoni_nbr_fs); (2)

jekk (status ! SL_STATUS_OK) {

/* Seħħ żball. L-immaniġġjar tal-iżbalji għandu jiżdied hawn. */

}

(1) Numru tal-klassi li għandu jiżdied mal-konfigurazzjoni rritornata minn sl_usbd_hid_create_instance(). (2) Numru tal-konfigurazzjoni (hawnhekk jiżdied ma' konfigurazzjoni Full-Speed).
Komunikazzjoni bl-użu tal-Klassi HID tal-Apparat USB
Komunikazzjoni tal-Istanza tal-Klassi Komunikazzjoni Sinkronika Komunikazzjoni tal-Istanza tal-Klassi Il-klassi HID toffri l-funzjonijiet li ġejjin biex tikkomunika mal-host.
Tabella – Sommarju tal-API tal-Komunikazzjoni HID

Isem tal-funzjoni
sl_usb d _hid _ aqra ad _sy nc() sl_usb d _hid _ikteb _sy nc()

Operazzjoni Tirċievi dejta mill-host permezz tal-endpoint tal-interruzzjoni OUT. Din il-funzjoni hija imblukkatriċi. Tibgħat dejta lill-host permezz tal-endpoint tal-interruzzjoni IN. Din il-funzjoni hija imblukkatriċi.

Komunikazzjoni Sinkronika Komunikazzjoni sinkronika tfisser li t-trasferiment qed jimblokka. Malli sseħħ is-sejħa tal-funzjoni, l-applikazzjoni timblokka sakemm it-trasferiment jitlesta bi jew mingħajr żball. Jista' jiġi speċifikat timeout biex jiġi evitat li tistenna għal dejjem. L-eż.ampL-artiklu t'hawn taħt juri qari u kitba li jirċievi dejta mill-host bl-użu tal-endpoint tal-interruzzjoni OUT u jibgħat dejta lill-host bl-użu tal-endpoint tal-interruzzjoni IN.
Example – Qari u Kitba Sinkronika tal-HID

__ALLINJAT(4) uint8_t rx_buf[2];

__ALLINJAT(4) uint8_t tx_buf[2];

uint32_t

xfer_len;

sl_status_t

status;

status = sl_usbd_hid_read_sync(class_nbr,

(1)

(vojt *)rx_buf,

(2)

2u,

0u,

(3)

&xfer_len);

jekk (status ! SL_STATUS_OK) {

/* Seħħ żball. L-immaniġġjar tal-iżbalji għandu jiżdied hawn. */

}

Copyright © 2025 Silicon Laboratories. Id-drittijiet kollha riżervati.

40/174

Fuqview
status =sl_usbd_hid_read_sync(class_nbr,(1)(void *)rx_buf,(2)2u,0u,(3)&xfer_len);if(status ! SL_STATUS_OK){/* Seħħ żball. L-immaniġġjar tal-iżbalji għandu jiżdied hawn. *
status =sl_usbd_hid_write_sync(class_nbr,(1)(void *)tx_buf,(4)2u,0u,(3)&xfer_len);if(status ! SL_STATUS_OK){/* Seħħ żball. L-immaniġġjar tal-iżbalji għandu jiżdied hawn. *
(1) In-numru tal-istanza tal-klassi maħluq minn sl_usbd_hid_create_instance() jipprovdi referenza interna għall-klassi HID biex tidderieġi t-trasferiment lejn l-endpoint xieraq tal-interruzzjoni OUT jew IN.
(2) L-applikazzjoni trid tiżgura li l-buffer ipprovdut lill-funzjoni jkun kbir biżżejjed biex jakkomoda d-dejta kollha. Inkella, jistgħu jinqalgħu problemi ta' sinkronizzazzjoni. Internament, l-operazzjoni tal-qari ssir jew bl-endpoint tal-kontroll jew bl-endpoint tal-interruzzjoni, skont il-bandiera tal-qari tal-kontroll issettjata meta ssejjaħ sl_usbd_hid_create_instance().
(3) Biex tiġi evitata sitwazzjoni ta' imblukkar infinit, jista' jiġi speċifikat timeout espress f'millisekondi. Valur ta' 809 iġiegħel il-kompitu tal-applikazzjoni jistenna għal dejjem.
(4) L-applikazzjoni tipprovdi l-buffer tat-trażmissjoni inizjalizzat.
Kompitu tar-Rapporti ta' Input Perjodiku tal-HID
Biex jiffranka l-bandwidth, il-host għandu l-abbiltà li jsikket ir-rapporti minn endpoint ta' interruzzjoni IN billi jillimita l-frekwenza tar-rappurtar. Biex jagħmel dan, il-host irid jibgħat it-talba SET_IDLE. Il-klassi HID implimentata minn Silicon Labs fiha kompitu intern li jirrispetta l-limitazzjoni tal-frekwenza tar-rappurtar li tista' tapplika għal rapport ta' input wieħed jew diversi. Il-Figura tal-Kompitu tar-Rapporti ta' Input Perjodiċi turi l-funzjonament tal-kompiti tar-rapporti ta' input perjodiċi.
Figura – Kompitu ta' Rapporti ta' Input Perjodiċi

(1) L-apparat jirċievi talba SET_IDLE. Din it-talba tispeċifika tul ta' żmien ta' inattività għal ID ta' rapport partikolari. Għal aktar dettalji dwar it-talba SET_IDLE, ara
(2) Struttura ta' ID ta' rapport (allokata matul il-fażi ta' inizjalizzazzjoni tal-klassi HID) tiġi aġġornata bit-tul ta' żmien ta' inattività. Kontatur tat-tul ta' żmien ta' inattività jiġi inizjalizzat bil-valur tat-tul ta' żmien ta' inattività. L-istruttura tal-ID tar-rapport tiddaħħal fl-aħħar ta' lista marbuta li fiha strutturi tal-ID tar-rapporti tad-dħul. Il-valur tat-tul ta' żmien ta' inattività huwa espress f'unità ta' 4 ms li tagħti firxa ta' 4 sa 1020 ms.

Copyright © 2025 Silicon Laboratories. Id-drittijiet kollha riżervati.

41/174

Fuqview
Jekk it-tul ta' żmien inattiv ikun inqas mill-intervall tal-polling tal-endpoint tal-interruzzjoni IN, ir-rapporti jiġu ġġenerati fl-intervall tal-polling.
(3) Kull 4 ms, il-kompitu tar-rapport perjodiku tad-dħul jibbrawżja l-lista tal-IDs tar-rapporti tad-dħul. Għal kull ID ta' rapport tad-dħul, il-kompitu jwettaq waħda minn żewġ operazzjonijiet possibbli. It-tul tal-perjodu tal-kompitu jaqbel mal-unità ta' 4 ms użata għat-tul ta' żmien inattiv. Jekk l-ebda talba SET_IDLE ma tkun intbagħtet mill-host, il-lista tal-IDs tar-rapporti tad-dħul tkun vojta u l-kompitu m'għandu xejn x'jipproċessa. Il-kompitu jipproċessa biss IDs tar-rapporti li huma differenti minn 0 u b'tul ta' żmien inattiv akbar minn 0.
(4) Għal ID ta' rapport ta' input partikolari, il-kompitu jivverifika jekk it-tul ta' żmien ta' inattività skadax. Jekk it-tul ta' żmien ta' inattività ma jkunx skada, il-counter jitnaqqas u l-ebda rapport ta' input ma jintbagħat lill-host.
(5) Jekk it-tul ta' żmien ta' inattività jkun għadda (jiġifieri, il-counter tat-tul ta' żmien ta' inattività jkun laħaq żero), rapport tad-dħul jintbagħat lill-host billi tissejjaħ il-funzjoni sl_usbd_hid_write_sync() permezz tal-endpoint tal-interruzzjoni IN.
(6) Id-dejta tar-rapport tal-input mibgħuta mill-kompitu ġejja minn buffer tad-dejta intern allokat għal kull rapport tal-input deskritt fid-deskrizzjoni tar-Rapport. Kompitu ta' applikazzjoni jista' jsejjaħ il-funzjoni sl_usbd_hid_write_sync() biex jibgħat rapport tal-input. Wara li jibgħat id-dejta tar-rapport tal-input, sl_usbd_hid_write_sync() jaġġorna l-buffer intern assoċjat ma' ID ta' rapport tal-input bid-dejta li tkun għadha kif intbagħtet. Imbagħad, il-kompitu tar-rapporti perjodiċi tal-input dejjem jibgħat l-istess dejta tar-rapport tal-input wara li jgħaddi kull perjodu ta' inattività u sakemm il-kompitu tal-applikazzjoni jaġġorna d-dejta fil-buffer intern. Hemm xi mekkaniżmu ta' qfil biex tiġi evitata l-korruzzjoni tad-dejta tal-ID tar-rapport tal-input f'każ li sseħħ modifika fil-ħin eżatt tat-trażmissjoni magħmula mill-kompitu tar-rapport tal-input perjodiku.

Copyright © 2025 Silicon Laboratories. Id-drittijiet kollha riżervati.

42/174

Fuqview
Fuqview
Apparat USB Klassi MSC
Apparat USB MSC Klassi Overview Ħtiġijiet ta' Riżorsi tal-Klassi MSC tal-Apparat USB mill-Qalba Konfigurazzjoni tal-Klassi MSC tal-Apparat USB Gwida għall-Ipprogrammar tal-Klassi MSC tal-Apparat USB Sewwieqa tal-Ħażna tal-Klassi MSC tal-Apparat USB
Din it-taqsima tiddeskrivi l-klassi tal-apparat tal-ħażna tal-massa (MSC) appoġġjata minn Silicon Labs USB Device. L-MSC huwa protokoll li jippermetti t-trasferiment ta' informazzjoni bejn apparat USB u host. L-informazzjoni li qed tiġi trasferita hija kwalunkwe ħaġa li tista' tinħażen elettronikament, bħal programmi eżegwibbli, kodiċi tas-sors, dokumenti, immaġni, dejta ta' konfigurazzjoni, jew dejta oħra ta' test jew numerika. L-apparat USB jidher bħala mezz ta' ħażna estern għall-host, li jippermetti t-trasferiment ta' files permezz ta' drag and drop.
A file sistema tiddefinixxi kif fileL-is huma organizzati fil-mezzi tal-ħażna. L-ispeċifikazzjoni tal-klassi tal-ħażna tal-massa USB ma teħtieġ l-ebda partikolari file sistema li għandha tintuża fuq apparati konformi. Minflok, tipprovdi interface sempliċi biex taqra u tikteb setturi ta' dejta bl-użu tas-sett ta' kmandi trasparenti tal-Interfaċċja tas-Sistema tal-Kompjuter Żgħir (SCSI). Bħala tali, is-sistemi operattivi jistgħu jittrattaw id-drajv USB bħal hard drive, u jistgħu jifformattjawh bi kwalunkwe file sistema li jogħġobhom.
Il-klassi tal-apparat tal-ħażna tal-massa USB tappoġġja żewġ protokolli tat-trasport, kif ġej:
Trasport ta' Kontroll/Bulk/Interruzzjoni (CBI) tat-Trasport Bulk-Only (BOT) (użat biss għal drives tal-floppy disk)
Il-klassi tal-apparat tal-ħażna tal-massa timplimenta s-sett ta' kmandi trasparenti SCSI bl-użu tal-protokoll BOT biss, li jfisser li endpoints bulk biss se jintużaw biex jittrażmettu d-dejta u l-informazzjoni dwar l-istatus. L-implimentazzjoni tal-MSC tappoġġja unitajiet loġiċi multipli.
L-implimentazzjoni tal-MSC hija konformi mal-ispeċifikazzjonijiet li ġejjin:
Speċifikazzjoni tal-Klassi tal-Ħażna tal-Massa tal-Bus Serjali Universali Aktar minnview, Reviżjoni 1.3 5 ta' Settembru, 2008. Trasport bl-Ingrossa tal-Klassi tal-Ħażna tal-Massa tal-Universal Serial Bus, Reviżjoni 1.0 31 ta' Settembru, 1999.
Apparat USB MSC aCl ss Overview
Talbiet tal-Klassi tal-Punti Finali tal-Protokoll Interfaċċja tas-Sistema tal-Kompjuter Żgħira (SCSI)
Protokoll
F'din it-taqsima, se niddiskutu l-protokoll tat-Trasport Bulk-Only (BOT) tal-Klassi tal-Ħażna tal-Massa. Il-protokoll tat-Trasport Bulk-Only għandu tliet stages:
It-Trasport tal-Kmand It-Trasport tad-Data It-Trasport tal-Istatus
Il-kmandi tal-ħażna tal-massa jintbagħtu mill-host permezz ta' struttura msejħa l-Command Block Wrapper (CBW). Għal kmandi li jeħtieġu trasport tad-dejtatage.ż., il-host jipprova jibgħat jew jirċievi n-numru eżatt ta' bytes mill-apparat kif speċifikat mill-oqsma tat-tul u l-bandiera tas-CBW. Wara t-trasport tad-dejtatage.ż., il-host jipprova jirċievi Command Status Wrapper (CSW) mill-apparat li jagħti dettalji dwar l-istatus tal-kmand kif ukoll kwalunkwe residwu tad-dejta (jekk

Copyright © 2025 Silicon Laboratories. Id-drittijiet kollha riżervati.

43/174

Fuqview
kwalunkwe). Għal kmandi li ma jinkludux trasport tad-dejta stagjiġifieri, il-host jipprova jirċievi s-CSW direttament wara li tintbagħat is-CBW. Il-protokoll huwa dettaljat fil-Figura – Protokoll MSC.
Figura – Protokoll MSC

endpoints
Min-naħa tal-apparat, f'konformità mal-ispeċifikazzjoni tal-BOT, l-MSC huwa magħmul mill-endpoints li ġejjin: Par ta' endpoints ta' kontroll IN u OUT imsejħa endpoint default. Par ta' endpoints bulk IN u OUT.
It-tabella t'hawn taħt tindika l-użi differenti tal-endpoints.
Tabella – Użu tal-Endpoint tal-MSC

Endpoint
Kontroll IN Kontroll OUT Bulk IN Bulk OUT

Direzzjoni
Apparat għal Host Host għal Apparat Apparat għal Host Host għal Apparat

Użu
Talbiet speċifiċi għall-enumerazzjoni u l-klassi MSC Talbiet speċifiċi għall-enumerazzjoni u l-klassi MSC Ibgħat CSW u dejta Irċievi CBW u dejta

Talbiet għall-Klassi
Hemm żewġ talbiet ta' kontroll definiti għall-protokoll MSC BOT. Dawn it-talbiet u d-deskrizzjonijiet tagħhom huma dettaljati fit-tabella t'hawn taħt.

Tabella – Talbiet għall-Klassi tal-Ħażna tal-Massa

Talbiet għall-Klassi
Irrisettjar tal-Ħażna tal-Massa biss għall-Bulk

Deskrizzjoni
Din it-talba tintuża biex tirrisettja l-apparat tal-ħażna tal-massa u l-interfaċċja assoċjata miegħu. Din it-talba tħejji l-apparat biex jirċievi l-blokka tal-kmand li jmiss.

Copyright © 2025 Silicon Laboratories. Id-drittijiet kollha riżervati.

44/174

Fuqview

Talbiet għall-Klassi

Deskrizzjoni

Ikseb il-Massimu Din it-talba tintuża biex tirritorna l-ogħla numru ta' unità loġika (LUN) appoġġjat mill-apparat. Pereżempjuample, a

LUN

Apparat b'LUN 0 u LUN 1 se jirritorna valur ta' 1. Apparat b'unità loġika waħda se jirritorna 0 jew iwaqqaf il-proċess

talba. Il-valur massimu li jista' jiġi rritornat huwa 15.

Interfaċċja tas-Sistema tal-Kompjuter Żgħira SCSI

Fil-livell tal-interfaċċja tal-ipprogrammar, l-apparat MSC jimplimenta wieħed mill-protokolli standard ta' komunikazzjoni tal-midja tal-ħażna, bħal SCSI u SFF-8020i (ATAPI). L-"Interfaċċja tal-Ipprogrammar" tispeċifika liema protokoll huwa implimentat, u tgħin lis-sistema operattiva ospitanti biex tgħabbi s-sewwieq tal-apparat adattat għall-komunikazzjoni mal-apparat tal-ħażna USB. SCSI huwa l-aktar protokoll komuni użat ma' apparati tal-ħażna USB MSC. Aħna nipprovdu implimentazzjoni għas-sottoklassi MSC SCSI li l-utenti tal-GSDK tagħna jistgħu jużaw mill-ewwel.
SCSI huwa sett ta' standards għall-immaniġġjar tal-komunikazzjoni bejn kompjuters u apparati periferali. Dawn l-istandards jinkludu kmandi, protokolli, interfaċċji elettriċi u interfaċċji ottiċi. Apparati tal-ħażna li jużaw interfaċċji oħra tal-ħardwer, bħal USB, jużaw kmandi SCSI biex jiksbu informazzjoni dwar l-apparat/host u jikkontrollaw l-operazzjoni tal-apparat u jittrasferixxu blokki ta' dejta fil-midja tal-ħażna.
Il-kmandi SCSI jkopru firxa vasta ta' tipi u funzjonijiet ta' apparati u bħala tali, l-apparati jeħtieġu sottosett ta' dawn il-kmandi. B'mod ġenerali, il-kmandi li ġejjin huma neċessarji għal komunikazzjoni bażika:
INKJESTA KAPAĊITÀ TAL-QARI(10) QARI(10) TALBA SENSE TEST UNITÀ LESTA KITBA(10)
Ħtiġijiet tar-Riżorsi tal-Klassi MSC tal-Apparat USB mill-Qalba

Kull darba li żżid istanza tal-klassi MSC ma' konfigurazzjoni USB permezz tal-funzjoni sl_usbd_msc_add_to_configuration(), ir-riżorsi li ġejjin se jiġu allokati mill-qalba.

Riżorsa
Interfejsijiet Interfejsijiet alternattivi Punti tat-tmiem Gruppi ta' interfejsijiet

Kwantità
1 1 2 0

Innota li dawk in-numri huma għal kull konfigurazzjoni. Meta tissettja l-valuri ta' konfigurazzjoni SL_USBD_INTERFACE_QUANTITY, SL_USBD_ALT_INTERFACE_QUANTITY, SL_USBD_INTERFACE_GROUP_QUANTITY u SL_USBD_DESCRIPTOR_QUANTITY tiegħek, tinsiex tikkunsidra kemm-il konfigurazzjoni se tiżdied mal-klassi. Għall-valur ta' konfigurazzjoni SL_USBD_OPEN_ENDPOINTS_QUANTITY, peress li l-endpoints jinfetħu biss meta konfigurazzjoni tiġi ssettjata mill-host, inti sempliċiment għandek tikkunsidra n-numru ta' endpoints meħtieġa għal istanza ta' klassi.
Konfigurazzjoni tal-Klassi MSC tal-Apparat USB

Żewġ gruppi ta' parametri ta' konfigurazzjoni jintużaw biex tiġi kkonfigurata l-klassi MSC:
Konfigurazzjonijiet Speċifiċi għall-Applikazzjoni tal-Klassi MSC tal-Apparat USB Konfigurazzjoni tal-Unità Loġika tal-Klassi MSC tal-Apparat USB
Konfigurazzjonijiet Speċifiċi għall-Applikazzjoni tal-Klassi MSC tal-Apparat USB

Konfigurazzjonijiet tal-Klassi fil-Ħin tal-Kumpilazzjoni Ħolqien ta' Istanza tal-Klassi

Copyright © 2025 Silicon Laboratories. Id-drittijiet kollha riżervati.

45/174

Fuqview

Konfigurazzjonijiet tal-Klassi fil-Ħin tal-Kumpilazzjoni
Il-klassi MSC u s-sottoklassi SCSI tal-Apparat USB tas-Silicon Labs jistgħu jiġu kkonfigurati fil-ħin tal-kumpilazzjoni permezz ta' #defines li jinsabu fl-sl_usbd_core_config.h file.
Tabella – Kostanti ta' Konfigurazzjoni Ġenerika

Isem tal-Konfigurazzjoni

Deskrizzjoni

SL_USBD_MSC_CLASS_INST Numru ta' istanzi tal-klassi li se talloka permezz ta' sejħa lill-funzjoni

KWANTITÀ_TANZA

sl_usbd_msc_scsi_create_instance().

SL_USBD_MSC_CONFIGURA Numru ta' konfigurazzjoni li magħhom tista' tiżdied istanza ta' klassi permezz ta' sejħa lill-

KWANTITÀ_ZJON

funzjoni sl_usbd_msc_scsi_add_to_configuration().

SL_USBD_MSC_LUN_QUANT Numru ta' unitajiet loġiċi għal kull istanza ta' klassi li se żżid permezz ta' sejħa lill-

ITY

funzjoni sl_usbd_msc_scsi_lun_add().

SL_USBD_MSC_SCSI_64_BIT Jippermetti jew jiddiżattiva l-appoġġ għall-Indirizz tal-Blokk Loġiku (LBA) ta' 64 bit.
_LBA_EN

SL_USBD_MSC_DATA_BUFF Daqs tal-buffer tad-dejta għal kull istanza tal-klassi f'bytes ER_SIZE

Valur Default
2
1
2
0
512

Ħolqien ta' Istanza tal-Klassi
Il-ħolqien ta' istanza tal-klassi MSC SCSI ta' Apparat USB isir billi tissejjaħ il-funzjoni sl_usbd_msc_scsi_create_instance(). Din il-funzjoni tieħu argument ta' konfigurazzjoni wieħed li huwa deskritt hawn taħt.
p_scsi_callbacks
p_scsi_callbacks huwa pointer għal struttura ta' konfigurazzjoni tat-tip sl_usbd_msc_scsi_callbacks_t. Minbarra l-callbacks komuni tal-klassi tal-apparat USB connect/disconnect, jipprovdi lill-klassi MSC sett ta' funzjonijiet ta' callback fakultattivi li jissejħu meta jseħħ avveniment fuq l-unità loġika. Pointer null (NULL) jista' jiġi mgħoddi lil dan l-argument jekk ma jkunux meħtieġa callbacks.
It-tabella t'hawn taħt tiddeskrivi kull qasam ta' konfigurazzjoni disponibbli f'din l-istruttura ta' konfigurazzjoni.
Tabella – Struttura ta' Konfigurazzjoni sl_usbd_msc_scsi_callbacks_t

Oqsma

Deskrizzjoni

.ippermetti

Imsejjaħ meta l-istanza tal-klassi USB tiġi attivata b'suċċess.

.disable Imsejjaħ meta l-istanza tal-klassi USB tkun diżattivata.

.host_eject Funzjoni msejħa meta unità loġika titkeċċa mill-host.

Firma tal-Funzjoni
vojt app_usbd_msc_scsi_enable(uint8_t klassi_nbr);
vojt app_usbd_mscsi_disable(uint8_t klassi_nbr); vojt app_usbd_mscsi_host_eject(uint8_t klassi_nbr, uint8_t lu_nbr);

Konfigurazzjoni tal-Unità Loġika tal-Klassi MSC tal-Apparat USB

Iż-żieda ta' unità loġika ma' istanza ta' klassi MSC issir billi tissejjaħ il-funzjoni sl_usbd_msc_lun_add(). Din il-funzjoni tieħu argument ta' konfigurazzjoni wieħed li huwa deskritt hawn taħt.

p_lu_info

p_lu_info huwa pointer għal struttura tat-tip sl_usbd_msc_scsi_lun_info_t. L-iskop tiegħu huwa li jipprovdi l-informazzjoni dwar l-unità loġika lill-klassi MSC.
It-tabella t'hawn taħt tiddeskrivi kull qasam ta' konfigurazzjoni disponibbli f'din l-istruttura ta' konfigurazzjoni.

Tabella – Struttura ta' Konfigurazzjoni sl_usbd_msc_scsi_lun_info_t

Copyright © 2025 Silicon Laboratories. Id-drittijiet kollha riżervati.

46/174

Fuqview

Qasam

Deskrizzjoni

Qasam
.scsi_lun_api_p tr

Deskrizzjoni
Pointer għall-API tas-sewwieq tal-midja li se jimmaniġġja din l-unità loġika. Ara Sewwieqa tal-Ħażna tal-Klassi MSC tal-Apparat USB għal aktar informazzjoni dwar is-sewwieqa tal-ħażna.

.ve nd jew r_id _ p tr
.id_tal-prodott_ptr
.livell_ta'_reviżjoni_tal-prodott .jinqara_biss

Pointer għal string li fiha l-identifikazzjoni tal-bejjiegħ tal-unità loġika. It-tul massimu tal-istring huwa ta' 8 karattri. Pointer għal string li fiha l-identifikazzjoni tal-prodott tal-unità loġika. It-tul massimu tal-istring huwa ta' 16-il karattru. Livell ta' reviżjoni tal-prodott.
Bandiera li tindika jekk l-unità loġika għandhiex titqies bħala li tinqara biss mill-punt ta' view tal-ospitant (veru) jew le (falz).

Gwida għall-Ipprogrammar tal-Klassi MSC tal-Apparat USB

Din it-taqsima tispjega kif tuża l-klassi MSC.
Inizjalizzazzjoni tal-Klassi MSC tal-Apparat USB Żieda ta' Istanza tal-Klassi SCSI MSC tal-Apparat USB mal-Apparat Tiegħek Immaniġġjar tal-Unità Loġika tal-Klassi MSC tal-Apparat USB
Inizjalizzazzjoni tal-Klassi MSC tal-Apparat USB

Biex iżżid il-funzjonalità tal-klassi MSC SCSI mat-tagħmir tiegħek, l-ewwel inizjalizza l-klassi bażi MSC u s-sottoklassi SCSI billi ssejjaħ il-funzjoni sl_usbd_msc_init() u sl_usbd_msc_scsi_init().
L-exampIl-fajl t'hawn taħt juri kif għandek issejjaħ sl_usbd_msc_init() u sl_usbd_msc_scsi_init().

Example – Sejħa ta' sl_usbd_msc_init() u sl_usbd_msc_scsi_init()

status_sl_status_t;
status = sl_usbd_msc_init(); jekk (status ! SL_STATUS_OK) { /* Seħħ żball. L-immaniġġjar tal-iżbalji għandu jiżdied hawn. */
}
status = sl_usbd_msc_scsi_init(); jekk (status ! SL_STATUS_OK) { /* Seħħ żball. L-immaniġġjar tal-iżbalji għandu jiżdied hawn. */
}
Żieda ta' Istanza tal-Klassi MSC SCSI ta' Apparat USB mat-Tagħmir Tiegħek
Biex iżżid il-funzjonalità tal-klassi MSC SCSI mat-tagħmir tiegħek, l-ewwel oħloq istanza, imbagħad żidha mal-konfigurazzjoni(jiet) tat-tagħmir tiegħek. Trid iżżid mill-inqas unità loġika waħda mal-istanza tiegħek.
Ħolqien ta' Istanza tal-Klassi MSC SCSI
Oħloq istanza tal-klassi MSC SCSI billi ssejjaħ il-funzjoni sl_usbd_msc_scsi_create_instance().
L-exampIl-fajl t'hawn taħt juri kif għandek issejjaħ sl_usbd_msc_scsi_create_instance() bl-użu ta' argumenti awtomatiċi. Għal aktar informazzjoni dwar l-argumenti ta' konfigurazzjoni li għandhom jgħaddu lil sl_usbd_msc_scsi_create_instance(), ara Konfigurazzjonijiet Speċifiċi tal-Applikazzjoni tal-Klassi MSC tal-Apparat USB.
Example – Sejħa ta' sl_usbd_msc_scsi_create_instance()

Copyright © 2025 Silicon Laboratories. Id-drittijiet kollha riżervati.

47/174

Fuqview

uint8_t klassi_nbr; sl_status_t status;
sl_usbd_mscsi_callbacks_t app_usbd_mscsi_callbacks = { .enable = NULL, .disable = NULL, .host_eject = NULL };
status = sl_usbd_msc_scsi_create_instance(&app_usbd_msc_scsi_callbacks,0 &class_nbr);
jekk (status ! SL_STATUS_OK) { /* Seħħ żball. L-immaniġġjar tal-iżbalji għandu jiżdied hawn. */ }
Żieda tal-Istanza tal-Klassi MSC mal-Konfigurazzjoni(jiet) tat-Tagħmir Tiegħek
Wara li tkun ħloqt istanza tal-klassi MSC, tista' żżidha ma' konfigurazzjoni billi ssejjaħ il-funzjoni
sl_usbd_msc_add_to_configuration().
L-exampHawn taħt turi kif tista' ssejjaħ sl_usbd_msc_scsi_add_to_configuration() bl-użu ta' argumenti default.
Example – Sejħa ta' sl_usbd_msc_scsi_add_to_configuration()

status_sl_status_t;

status = sl_usbd_msc_scsi_add_to_configuration(class_nbr,

(1)

konfigurazzjoni_nbr_fs);

(2)

jekk (status ! SL_STATUS_OK) {

/* Seħħ żball. L-immaniġġjar tal-iżbalji għandu jiżdied hawn. */

}

(1) Numru tal-klassi li għandu jiżdied mal-konfigurazzjoni rritornata minn sl_usbd_msc_scsi_create_instance(). (32) Numru tal-konfigurazzjoni (hawnhekk jiżdied ma' konfigurazzjoni Full-Speed).
Immaniġġjar tal-Unità Loġika tal-Klassi MSC tal-Apparat USB
Żieda ta' Unità Loġika Twaħħil/Tneħħija ta' Mezz ta' Ħażna
Żieda ta' Unità Loġika
Meta żżid unità loġika mal-istanza tal-klassi MSC SCSI tiegħek, din trid tkun marbuta ma' mezz ta' ħażna (RAMDisk, SD card, memorja flash, eċċ.). Il-klassi MSC tuża sewwieq tal-ħażna biex tikkomunika mal-midja tal-ħażna. Dan is-sewwieq irid jiġi pprovdut meta żżid l-unità loġika.
L-exampIl-fajl hawn taħt juri kif iżżid unità loġika permezz ta' sl_usbd_msc_scsi_lun_add().
Example – Żieda ta' Unità Loġika permezz ta' sl_usbd_msc_scsi_lun_add()

Copyright © 2025 Silicon Laboratories. Id-drittijiet kollha riżervati.

48/174

Fuqview

sl_usbd_msc_scsi_lun_t *lu_object_ptr = NULL;

sl_usbd_msc_scsi_lun_info_t lu_info;

sl_status_t

status;

lu_info.sl_usbd_mscsi_lun_api_t = &app_usbd_scsi_storage_block_device_api;

lu_info.vendor_id_ptr

= “Silicon Labs”;

lu_info.product_id_ptr

= “apparat tal-blokka eż.amp"le";

lu_info.livell_tar-reviżjoni_tal-prodott = 0x1000u;

lu_info.huwa_qari_biss

= falz;

status = sl_usbd_msc_scsi_lun_add(class_nbr, &lu_info, &lu_object_ptr);
jekk (status ! SL_STATUS_OK) { /* Seħħ żball. L-immaniġġjar tal-iżbalji għandu jiżdied hawn. */ }

Twaħħil/Tneħħija ta' Mezz ta' Ħażna
Wara li tkun ġiet miżjuda l-unità loġika, mezz ta' ħażna jrid jiġi mwaħħal biex ikun disponibbli min-naħa tal-host. Il-klassi MSC toffri żewġ funzjonijiet biex tikkontrolla l-assoċjazzjoni tal-mezz ta' ħażna mal-unità loġika: sl_usbd_msc_scsi_lun_attach() u sl_usbd_msc_scsi_lun_detach(). Dawn il-funzjonijiet jippermettulek timita t-tneħħija ta' apparat ta' ħażna sabiex terġa' tikseb aċċess mill-applikazzjoni inkorporata jekk ikun meħtieġ.
L-exampIl-fajl t'hawn taħt juri kif tuża l-funzjoni sl_usbd_msc_scsi_lun_attach() u sl_usbd_msc_scsi_lun_detach().
Example – Waħħal/Qta’ l-Midja

status_sl_status_t;

status = sl_usbd_msc_scsi_lun_attach(lu_object_ptr); jekk (status ! SL_STATUS_OK) { /* Seħħ żball. L-immaniġġjar tal-iżbalji għandu jiżdied hawn. */
}

(1)

status = sl_usbd_msc_scsi_lun_detach(lu_object_ptr); jekk (status ! SL_STATUS_OK) {
/* Seħħ żball. L-immaniġġjar tal-iżbalji għandu jiżdied hawn. */
}

(2)

status = sl_usbd_msc_scsi_lun_attach(lu_object_ptr) jekk (status ! SL_STATUS_OK) {
/* Seħħ żball. L-immaniġġjar tal-iżbalji għandu jiżdied hawn. */
}

(3)

(1) Minn dan il-mument, jekk l-apparat MSC ikun imqabbad ma' host, il-midja tal-ħażna tkun aċċessibbli.
(2) Jekk l-apparat MSC ikun imqabbad ma' host, il-midja issa tidher bħala mhux disponibbli. F'dan il-mument, l-operazzjonijiet jistgħu jsiru fuq il-midja mill-applikazzjoni inkorporata.
(3) Għal darb'oħra, jekk l-apparat MSC ikun imqabbad mal-host, il-midja tal-ħażna tidher bħala konnessa.
Sewwieqa tal-Ħażna tal-Klassi MSC tal-Apparat USB
Il-USB Device MSC Class jeħtieġ sewwieq tal-ħażna biex jikkomunika ma' mezz ta' ħażna. Għalissa, Silicon Labs ma joffrix sewwieqa.

Copyright © 2025 Silicon Laboratories. Id-drittijiet kollha riżervati.

49/174

Fuqview
TPY aa Is-sewwieq AI huwa definit mit-typedef sl_usbd_msc_scsi_lun_api_t. Il-virgu sl_usbd_msc_scsi_lun_api_t tagħna jrid jiġi inkluż fil-virgu sl_usbd_msc_scsi_lun_info_t tiegħek, użat bħala argument meta żżid unità loġika b'sl_usbd_msc_scsi_lun_add(). Ara t-taqsima USB Device MSC SCSI API għal aktar dettalji dwar l-istrutturi. L-implimentazzjoni tas-sewwieq tal-ħażna tista' tkun sempliċi daqs firxa ta' setturi fir-RAM. Id-daqs tipiku tas-settur (jiġifieri, id-daqs tal-blokk) huwa 512 għal apparati tal-ħażna tal-massa, u 2048 għal CD-ROMs.

Copyright © 2025 Silicon Laboratories. Id-drittijiet kollha riżervati.

50/174

Fuqview
Fuqview
Klassi tal-Bejjiegħ tal-Apparat USB
Klassi tal-Bejjiegħ tal-Apparat USB Fuqview Klassi tal-Bejjiegħ tal-Apparat USB Ħtiġijiet ta' Riżorsi mill-Konfigurazzjoni Ewlenija tal-Klassi tal-Bejjiegħ tal-Apparat USB Gwida għall-Ipprogrammar tal-Klassi tal-Bejjiegħ tal-Apparat USB Il-klassi Vendor tippermettilek tibni apparati speċifiċi għall-bejjiegħ li jistgħu jimplimentaw protokoll proprjetarju. Tiddependi fuq par ta' endpoints bulk biex tittrasferixxi d-dejta bejn il-host u l-apparat. It-trasferimenti bulk huma konvenjenti għat-trasferiment ta' ammonti kbar ta' dejta mhux strutturata u jipprovdu skambju affidabbli ta' dejta billi jużaw mekkaniżmu ta' skoperta ta' żbalji u tentattiv mill-ġdid. Minbarra l-endpoints bulk, il-klassi Vendor tista' tuża wkoll par fakultattiv ta' endpoints ta' interruzzjoni. Kwalunkwe sistema operattiva (OS) tista' taħdem mal-klassi Vendor sakemm l-OS ikollha sewwieq biex timmaniġġja l-klassi Vendor. Skont l-OS, is-sewwieq jista' jkun nattiv jew speċifiku għall-bejjiegħ. Pereżempju, taħt Microsoft Windows®, l-applikazzjoni tiegħek tinteraġixxi mas-sewwieq WinUSB ipprovdut minn Microsoft biex tikkomunika mat-tagħmir tal-bejjiegħ.
Klassi tal-Bejjiegħ tal-Apparat USB Fuqview
Figura – Arkitettura Ġenerali Bejn il-Windows Host u l-Klassi Vendor turi l-arkitettura ġenerali bejn il-host u l-apparat bl-użu tal-klassi Vendor. F'dan l-eżempjuampjiġifieri, is-sistema operattiva ospitanti hija MS Windows.
Figura – Arkitettura Ġenerali Bejn il-Host tal-MS Windows u l-Klassi tal-Bejjiegħ

Min-naħa tal-MS Windows, l-applikazzjoni tikkomunika mat-tagħmir tal-bejjiegħ billi tinteraġixxi ma' librerija USB. Libreriji, bħal libusb, joffru API biex jimmaniġġjaw tagħmir u l-pajpijiet assoċjati miegħu, u biex jikkomunikaw mat-tagħmir permezz ta' endpoints ta' kontroll, bulk u interruzzjoni.
Min-naħa tal-apparat, il-klassi Vendor hija magħmula mill-endpoints li ġejjin:
Par ta' endpoints ta' kontroll IN u OUT imsejjaħ l-endpoint awtomatiku. Par ta' endpoints ta' bulk IN u OUT.

Copyright © 2025 Silicon Laboratories. Id-drittijiet kollha riżervati.

51/174

Fuqview

Par ta' endpoints ta' interruzzjoni IN u OUT. Dan il-par huwa fakultattiv. It-tabella t'hawn taħt tindika l-użu tal-endpoints differenti:
Tabella – Użu tal-Endpoints tal-Klassi tal-Bejjiegħ

Direzzjoni tal-Punt Finali

Kontroll IN
Kontroll
BARRA
Ġewwa bl-ingrossa

Minn apparat għal host
>Host-to-device
Minn apparat għal host

Bulk OUT
Interruzzjoni DAĦLA
Tinterrompi
BARRA

Host-to-device
Minn apparat għal host
Host-to-device

Użu
Talbiet standard għall-enumerazzjoni u talbiet speċifiċi għall-bejjiegħ.
Talbiet standard għall-enumerazzjoni u talbiet speċifiċi għall-bejjiegħ.
Komunikazzjoni ta' dejta mhux ipproċessata. Id-dejta tista' tiġi strutturata skont protokoll proprjetarju.
Komunikazzjoni ta' dejta mhux ipproċessata. Id-dejta tista' tiġi strutturata skont protokoll proprjetarju.
Komunikazzjoni jew notifika ta' dejta mhux ipproċessata. Id-dejta tista' tiġi strutturata skont protokoll proprjetarju. Komunikazzjoni jew notifika ta' dejta mhux ipproċessata. Id-dejta tista' tiġi strutturata skont protokoll proprjetarju.

L-applikazzjoni tal-apparat tista' tuża endpoints ta' bulk u interrupt biex tibgħat jew tirċievi dejta lejn jew mill-host. Tista' tuża biss l-endpoint awtomatiku biex tiddekodifika talbiet speċifiċi għall-bejjiegħ mibgħuta mill-host. It-talbiet standard huma ġestiti internament mis-saff ewlieni tal-Apparat USB ta' Silicon Labs.
Ħtiġijiet ta' Riżorsi tal-Klassi tal-Bejjiegħ tal-Apparat USB minn Core

Kull darba li żżid istanza ta' klassi ta' bejjiegħ ma' konfigurazzjoni permezz tal-funzjoni sl_usbd_vendor_add_to_configuration(), ir-riżorsi li ġejjin se jiġu allokati mill-qalba.

Riżorsa
Interfejsijiet Interfejsijiet alternattivi Punti tat-tmiem Gruppi ta' interfejsijiet

Kwantità
1 1 2 (4 jekk attivajt l-endpoints tal-interruzzjoni) 0

Innota li dawk in-numri huma għal kull konfigurazzjoni. Meta tissettja l-valuri ta' konfigurazzjoni SL_USBD_INTERFACE_QUANTITY, SL_USBD_ALT_INTERFACE_QUANTITY, SL_USBD_INTERFACE_GROUP_QUANTITY u SL_USBD_DESCRIPTOR_QUANTITY tiegħek, tinsiex tikkunsidra kemm-il konfigurazzjoni se tiżdied mal-klassi. Għall-valur ta' konfigurazzjoni SL_USBD_OPEN_ENDPOINTS_QUANTITY, peress li l-endpoints jinfetħu biss meta konfigurazzjoni tiġi ssettjata mill-host, inti sempliċiment għandek tikkunsidra n-numru ta' endpoints meħtieġa għal istanza ta' klassi.
Konfigurazzjoni tal-Klassi tal-Bejjiegħ tal-Apparat USB

Żewġ gruppi ta' parametri ta' konfigurazzjoni jintużaw biex tiġi kkonfigurata l-klassi tal-Bejjiegħ:
Konfigurazzjonijiet Speċifiċi għall-Applikazzjoni tal-Klassi tal-Bejjiegħ tal-Apparat USB Konfigurazzjonijiet tal-Istanza tal-Klassi tal-Bejjiegħ tal-Apparat USB
Konfigurazzjonijiet Speċifiċi għall-Applikazzjoni tal-Klassi tal-Bejjiegħ tal-Apparat USB
L-ewwel, biex tuża l-modulu tal-klassi Vendor tal-apparat USB tas-Silicon Labs, aġġusta d-definizzjonijiet tal-konfigurazzjoni tal-ħin tal-kumpilazzjoni tal-Vendor skont il-bżonnijiet tal-applikazzjoni tiegħek. Dawn huma miġbura mill-ġdid ġewwa l-intestatura sl_usbd_core_config.h file taħt it-taqsima tal-Bejjiegħ. L-iskop tal-konfigurazzjonijiet tal-kwantità huwa li jinforma lill-modulu tal-apparat USB dwar kemm oġġetti tal-Bejjiegħ USB għandhom jiġu allokati.
It-tabella t'hawn taħt tiddeskrivi kull konfigurazzjoni definita.

Copyright © 2025 Silicon Laboratories. Id-drittijiet kollha riżervati.

52/174

Fuqview

Tabella – Tiddefinixxi l-Konfigurazzjoni tal-Bejjiegħ tal-Apparat USB

Isem tal-Konfigurazzjoni

Deskrizzjoni

Valur Default

SL_USBD_VENDOR_CLASS_INSTANCE_QUANTITY Numru ta' istanzi tal-klassi li se talloka permezz ta' sejħa lill-funzjoni 2 sl_usbd_vendor_create_instance().

SL_USBD_VENDOR_CONFIGURATION_QUANTITY Numru ta' konfigurazzjonijiet. L-istanzi tal-klassi tal-bejjiegħ jistgħu jiżdiedu ma' konfigurazzjoni waħda jew aktar permezz ta' sejħa lill-funzjoni sl_usbd_vendor_add_to_configuration().

Konfigurazzjonijiet tal-Istanza tal-Klassi tal-Bejjiegħ tal-Apparat USB

Din it-taqsima tiddefinixxi l-konfigurazzjonijiet relatati mal-istanzi tal-klassi Vendor.
Ħolqien ta' Istanza tal-Klassi intr_en interval p_vendor_callbacks
Ħolqien ta' Istanza tal-Klassi

Il-ħolqien ta' istanza tal-klassi Vendor isir billi tissejjaħ il-funzjoni sl_usbd_vendor_create_instance(), li tieħu tliet argumenti ta' konfigurazzjoni li huma deskritti hawn taħt.

intr_en
Boolean li jindika jekk għandhomx jiżdiedu par ta' endpoints ta' interruzzjoni jew le.

Valur
veru falz

Deskrizzjoni
Se jiżdiedu par ta' endpoints IN/OUT u dawn ikunu disponibbli għall-applikazzjoni inkorporata. L-ebda endpoint ta' interruzzjoni ma se jiżdied. Se jkun disponibbli biss par ta' endpoints Bulk IN/OUT.

intervall
Jekk tissettja intr_en għal true, tista' tispeċifika l-intervall tal-polling tal-endpoints tal-interruzzjoni (f'millisekondi). Jekk tissettja intr_en għal false, tista' tissettja interval għal 0 għax dan se jiġi injorat mill-klassi.
p_vendor_callbacks
p_vendor_callbacks huwa pointer għal varjabbli tal-istruttura tal-funzjonijiet callback. li tista' tispeċifika biex timmaniġġja t-talbiet ta' kontroll speċifiċi għall-klassi. Jekk ma tuża l-ebda talbiet speċifiċi għall-klassi jew teħtieġ li tippermetti/tiddiżattiva n-notifika, tista' tissettja dan għal NULL.
L-exampHawn taħt jipprovdi l-firma mistennija tal-maniġer tat-talbiet speċifiċi għall-klassi tiegħek.
Example – Firma tal-Funzjoni ta' Talba Speċifika għall-Klassi

vojt app_usbd_vendor_req_handle(uint8_t

numru_tal-klassi, (1)

kost sl_usbd_setup_req_t *p_setup_req); (2)

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

(1) Numru tal-istanza tal-klassi tal-bejjiegħ.

Copyright © 2025 Silicon Laboratories. Id-drittijiet kollha riżervati.

53/174

Fuqview

(2) Pointer għal talba ta' setup riċevuta mill-host.
Gwida għall-Ipprogrammar tal-Klassi tal-Bejjiegħ tal-Apparat USB
Din it-taqsima tispjega kif tuża l-klassi Vendor. Inizjalizzazzjoni tal-Klassi Vendor tal-Apparat USB Żieda ta' Istanza tal-Klassi Vendor tal-Apparat USB mal-Apparat tiegħek Komunikazzjoni bl-użu tal-Klassi Vendor tal-Apparat USB
Inizjalizzazzjoni tal-Klassi tal-Bejjiegħ tal-Apparat USB
Biex iżżid funzjonalità ta' Klassi tal-Bejjiegħ mat-tagħmir tiegħek, l-ewwel inizjalizza l-klassi billi ssejjaħ il-funzjoni USBD_Vendor_Init(). L-eż.ampIl-fajl t'hawn taħt juri kif għandek issejjaħ sl_usbd_vendor_init().
Example – Sejħa ta' sl_usbd_vendor_init()

status_sl_status_t;
status = sl_usbd_vendor_init(); jekk (status ! SL_STATUS_OK) { /* Seħħ żball. L-immaniġġjar tal-iżbalji għandu jiżdied hawn. */ }
Żieda ta' Istanza tal-Klassi tal-Bejjiegħ tal-Apparat USB mal-Apparat tiegħek
Biex iżżid il-funzjonalità tal-klassi tal-bejjiegħ mat-tagħmir tiegħek, l-ewwel trid toħloq istanza, imbagħad iżżidha mal-konfigurazzjoni(jiet) tat-tagħmir tiegħek.
Ħolqien ta' Istanza tal-Klassi tal-Bejjiegħ Iż-Żieda tal-Istanza tal-Klassi tal-Bejjiegħ mal-Konfigurazzjoni(jiet) tat-Tagħmir Tiegħek
Ħolqien ta' Istanza tal-Klassi tal-Bejjiegħ
Oħloq istanza tal-klassi Vendor billi ssejjaħ il-funzjoni sl_usbd_vendor_create_instance(). L-eż.ampHawn taħt juri kif għandek issejjaħ sl_usbd_vendor_create_instance() bl-użu ta' argumenti awtomatiċi. Għal aktar informazzjoni dwar l-argumenti ta' konfigurazzjoni li għandhom jgħaddu lil sl_usbd_vendor_create_instance(), ara Konfigurazzjonijiet tal-Istanza tal-Klassi tal-Bejjiegħ tal-Apparat USB.
Example – Sejħa ta' sl_usbd_vendor_create_instance()

uint8_t klassi_nbr; sl_status_t status;

status = sl_usbd_vendor_create_instance(falz,

(1)

0u,

(2)

funzjonijiet_ta'_sejħa_lura_tal-bejjiegħ_tal-app_usbd, (3)

&numru_tal-klassi);

jekk (status ! SL_STATUS_OK) {

/* Seħħ żball. L-immaniġġjar tal-iżbalji għandu jiżdied hawn. */

}

(1) L-ebda endpoints ta' Interrupt ma' din l-istanza tal-klassi. (2) L-intervall huwa injorat peress li l-endpoints ta' Interrupt huma diżattivati.

Copyright © 2025 Silicon Laboratories. Id-drittijiet kollha riżervati.

54/174

Fuqview

(3) Funzjoni ta' callback li hija parti mill-applikazzjoni tiegħek li timmaniġġja talbiet ta' klassi speċifiċi għall-bejjiegħ. Ara Komunikazzjoni bl-użu tal-Klassi tal-Bejjiegħ tal-Apparat USB għal aktar informazzjoni. Żieda tal-Istanza tal-Klassi tal-Bejjiegħ mal-Konfigurazzjoni(jiet) tal-Apparat Tiegħek Wara li tkun ħloqt istanza ta' klassi tal-bejjiegħ, tista' żżidha ma' konfigurazzjoni billi ssejjaħ il-funzjoni USBD_Vendor_ConfigAdd(). L-eż.ampIl-fajl t'hawn taħt juri kif tista' ssejjaħ sl_usbd_vendor_add_to_configuration() bl-użu ta' argumenti default.
Example – Sejħa ta' sl_usbd_vendor_add_to_configuration()

status_sl_status_t;

status = sl_usbd_vendor_add_to_configuration(class_nbr,

(1)

konfigurazzjoni_nbr_fs);

(2)

jekk (status ! SL_STATUS_OK) {

/* Seħħ żball. L-immaniġġjar tal-iżbalji għandu jiżdied hawn. */

}

(1) Numru tal-klassi li għandu jiżdied mal-konfigurazzjoni rritornata minn sl_usbd_vendor_create_instance(). (2) Numru tal-konfigurazzjoni (hawnhekk jiżdied ma' konfigurazzjoni Full-Speed).
Komunikazzjoni bl-użu tal-Klassi tal-Bejjiegħ tal-Apparat USB
Komunikazzjoni Sinkronika Ġenerali Komunikazzjoni Asinkronika Talba għall-Bejjiegħ Ġenerali Il-klassi Vendor toffri l-funzjonijiet li ġejjin biex tikkomunika mal-host. Għal aktar dettalji dwar il-parametri tal-funzjoni, ara l-API tal-Bejjiegħ tal-Apparat USB.
Tabella – Sommarju tal-API tal-Komunikazzjoni mal-Bejjiegħ

Isem tal-funzjoni
sl_usb d _v e nd o r_ re ad _b ulk_sy nc() sl_usb d _v e nd o r_write _b ulk_sy nc() sl_usb d _v e nd o r_ re ad _b ulk_asy nc() sl_usb d _v e nd o r_write _b ulk_asy nc() sl_usb d _v e nd o r_ re ad _inte rrup t_sy nc() sl_usb d _v e nd o r_write _inte rrup t_sy nc() sl_usb d _v e nd o r_ re ad _inte rrup t_asy nc
()
sl_usb d _v e nd o r_write _inte rrup t_asy nc
()

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

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

Copyright © 2025 Silicon Laboratories. Id-drittijiet kollha riżervati.

55/174

Fuqview

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

__ALLINJAT(4) uint8_t rx_buf[2];

__ALLINJAT(4) uint8_t tx_buf[2];

uint32_t

xfer_len;

sl_status_t

status;

status = sl_usbd_vendor_read_bulk_sync(class_nbr,

(1)

(void *)&rx_buf[0],

(2)

2u,

0u,

(3)

&xfer_len);

jekk (status ! SL_STATUS_OK) {

/* $$$$ Immaniġġja l-iżball. */

}

status = sl_usbd_vendor_write_bulk_sync( class_nbr,

(1)

(void *)&tx_buf[0],

(4)

2u,

0u,

(3)

false,

(5)

&xfer_len);

jekk (status ! SL_STATUS_OK) {

/* $$$$ Immaniġġja l-iżball. */

}

(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) L-applikazzjoni tipprovdi l-buffer tat-trażmissjoni inizjalizzat.
(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.
Komunikazzjoni Asinkronika
Asynchronous communication means that the transfer is non-blocking. When a function is called, the application passes the transfer information to the device stack and does not block. Other application processing can be done while the transfer is in progress over the USB bus. Once the transfer has completed, a callback function is called by the device stack to inform the application about the transfer completion. The example below shows asynchronous read and write.
Example – Asynchronous Bulk Read and Write

Copyright © 2025 Silicon Laboratories. Id-drittijiet kollha riżervati.

56/174

Fuqview

void app_usbd_vendor_comm (uint8_t class_nbr)

{

__ALLINJAT(4) uint8_t rx_buf[2];

__ALLINJAT(4) uint8_t tx_buf[2];

sl_status_t

status;

status = sl_usbd_vendor_read_bulk_async(class_nbr,

(void *)&rx_buf[0],

(2)

2u,

app_usbd_vendor_rx_completed,

NULL);

(4)

jekk (status ! SL_STATUS_OK) {

/* $$$$ Immaniġġja l-iżball. */

}

status = sl_usbd_vendor_write_bulk_async(class_nbr,

(void *)&tx_buf[0],

(5)

2u,

app_usbd_vendor_tx_completed,

NULL,

(4)

false);

(6)

jekk (status ! SL_STATUS_OK) {

/* $$$$ Immaniġġja l-iżball. */

}

}

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

{

jekk (status ! SL_STATUS_OK) {

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

} inkella {

/* $$$$ Immaniġġja l-iżball. */

}

}

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)

{

jekk (status ! SL_STATUS_OK) {

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

} inkella {

/* $$$$ Immaniġġja l-iżball. */

}

}

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

Copyright © 2025 Silicon Laboratories. Id-drittijiet kollha riżervati.

57/174

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

Copyright © 2025 Silicon Laboratories. Id-drittijiet kollha riżervati.

58/174

Fuqview

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

status_sl_status_t;

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;

default:

(6)

// Request is not supported.

Copyright © 2025 Silicon Laboratories. Id-drittijiet kollha riżervati.

59/174

Fuqview

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 stagpreżenti.

*/

} sl_usbd_setup_req_t;

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

Copyright © 2025 Silicon Laboratories. Id-drittijiet kollha riżervati.

60/174

Dokumentazzjoni API
Dokumentazzjoni API
Dokumentazzjoni API
Lista ta' moduli
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

Deskrizzjoni
USB Device API USB Device ACM API USB Device CDC API USB Device Core API USB Device HID API USB Device MSC API USB Device MSC SCSI API USB Device Vendor API

Copyright © 2025 Silicon Laboratories. Id-drittijiet kollha riżervati.

61/174

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

Copyright © 2025 Silicon Laboratories. Id-drittijiet kollha riżervati.

62/174

USB Device ACM API

USB Device ACM API

USB Device ACM API

USB Device CDC ACM API.
Moduli
a sl_usbd_cdc_ cm_line_coding_t sl_usbd_cdc_acm_callbacks_t
Funzjonijiet

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

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

Copyright © 2025 Silicon Laboratories. Id-drittijiet kollha riżervati.

63/174

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

64/174

USB Device ACM API

Tip
vojt

Direction N/A

Argument Name

MACROS GLOBAL CONSTANTS FUNCTION PROTOTYPES CDC ACM FUNCTIONS

Initialize the CDC ACM serial emulation subclass.
Ritorni

Returns SL_STATUS_OK on success or another SL_STATUS code on failure.

Deskrizzjoni

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

Tip
uint16_t
uint16_t

Direction Argument Name

Deskrizzjoni

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.

Ritorni

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

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

Ritorni

Copyright © 2025 Silicon Laboratories. Id-drittijiet kollha riżervati.

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

Tip

Direzzjoni

Argument Name

Deskrizzjoni

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 / Riżorsi

SILICON LABS USB Device Stack [pdfManwal tal-Istruzzjonijiet
USB Device Stack, Device Stack, Stack

Referenzi

Ħalli kumment

L-indirizz elettroniku tiegħek mhux se jiġi ppubblikat. L-oqsma meħtieġa huma mmarkati *