USB Device Stack
fepetra arahana
- USB Version: 1.5.1
- Daty famoahana: 21 Jolay 2025
- Simplicity SDK Version: 2025.6.1
Vita ny vokatraview
Ny fitaovana USB stack avy amin'ny Silicon Labs dia manome zavatra maro sy
fifandraisana USB mora ampiasaina ho an'ny tetikasa IoT, manamora
fifandraisana eo amin'ny mpiara-miasa amin'ny tambajotra sy ny mpampiantrano.
Toetoetra
- Fitaovana USB mahomby
- Mety ho an'ny tetikasa IoT
- Fanohanana ny fifandraisana eo amin'ny mpiara-miasa amin'ny tambajotra sy
Tompon'ny maro,
Torolàlana momba ny fampiasana vokatra
USB Device Configuration
Ampifanaraho amin'ny tetikasanao ny firafitry ny fitaovana USB
fepetra takiana amin'ny firesahana ny fizarana USB Device Configuration
ao amin'ny antontan-taratasy.
USB Device Programming Guide
Araho ny USB Device Programming Guide mba hahatakarana ny fomba
fandaharana ary mifandray amin'ny fitaovana USB ho an'ny isan-karazany
fampiharana.
Kilasy fitaovana USB
Ny fizarana USB Device Classes dia manome mihoatraview ny samy hafa
kilasy toa ny CDC ACM, HID, MSC SCSI, ary Vendor Class. Fidio ny
kilasy mifanaraka amin'ny fiasan'ny fitaovanao.
Famahana olana amin'ny fitaovana USB
Raha sendra olana amin'ny fitaovana USB ianao dia jereo ny
Fizarana famahana olana amin'ny fitaovana USB ho an'ny vahaolana sy debugging
toro-hevitra.
Microsoft Windows OS USB Host
Raha mampiasa ny fitaovana USB miaraka amin'ny Microsoft Windows OS USB ianao
Host, ataovy azo antoka fa manaraka ny torolàlana omena ao amin'ny
antontan-taratasy ho an'ny fampidirana mirindra.
FAQ
F: Inona no sasany mahazatra exampvitsy ny fitaovana azoko amboarina hampiasaina
ity USB stack ity?
A: Ny USB stack dia ahafahanao manamboatra fitaovana toy ny
USB-to-serial adapters, totozy na kitendry, fitahirizana azo esorina
fitaovana, ary fitaovana manokana.
F: Misy fepetra takian'ny rindrambaiko manokana amin'ny fampiasana an'io ve
USB fitaovana stack?
A: Ny rindrambaiko mifanentana dia misy ny Simplicity SDK, Simplicity
Studio, Simplicity Commander, GCC (The GNU Compiler Collection),
IAR Embedded Workbench ho an'ny ARM, ary IAR EWARM.
Universal Serial Bus USB
Universal Serial Bus USB
USB Overview TAPITRAview
Famoahana Notes USB
Famaritana sy endri-javatra mihoatraview
Nifarana ny fanamafisana ny fitaovana USBview
USB Device Programming Guide Overview
Nifarana ny kilasy fitaovana USBview CDC ACM Class Overview Nifarana ny kilasy HIDview MSC SCSI Class Overview Nifarana ny kilasin'ny mpivarotraview
USB API API Documentation USB Device API USB Device ACM API amin'ny sl_usbd_cdc_ cm_line_coding_t sl_usbd_cdc_acm_callbacks_t USB Device CDC API amin'ny sl_usbd_cdc_subcl ss_driver_t USB Device Core API
sl_usbd_device_config_t sl_usbd_setup_req_t
ny sl_usbd_cl ss_driver_t USB Device HID API
sl_usbd_hid_callbacks_t USB Device MSC API
a sl_usbd_msc_subcl ss_driver_t Fitaovana USB MSC SCSI API
sl_usbd_msc_scsi_callbacks_t
Copyright © 2025 Silicon Laboratories. Zo rehetra voatokana.
1/174
Universal Serial Bus USB
ny sl_usbd_msc_scsi_lun_ pi
sl_usbd_msc_scsi_lun_info sl_usbd_msc_scsi_lun
USB Device Vendor API sl_usbd_vendor_callbacks_t
API Documentation USB Device Troubleshooting
TAPITRAview Microsoft Windows OS USB Host
TAPITRAview
Copyright © 2025 Silicon Laboratories. Zo rehetra voatokana.
2/174
TAPITRAview
TAPITRAview
USB fitaovana
USB dia iray amin'ireo interface tsara indrindra amin'ny fifandraisana amin'ny tantaran'ny rafitra informatika ary no fenitry ny fampifandraisana ny periferika amin'ny solosaina. Silicon Labs USB Device stack dia maody fitaovana USB natao manokana ho an'ny rafitra tafiditra. Namboarina avy tany amin'ny tany miaraka amin'ny kalitaon'ny Silicon Labs, ny fahamendrehana ary ny fahamendrehana, dia nandalo dingana fanamarinana henjana mba hanarahana ny fepetra USB 2.0. Ity tahirin-kevitra ity dia mamaritra ny fomba fanombohana, fanombohana, ary fampiasana ny antontam-pitaovana USB USB Silicon Labs. Izy io dia manazava ny soatoavina isan-karazany sy ny fampiasana azy. Ao anatin'izany koa ny overview amin'ny teknolojia, karazana mety ho fanamafisana, fomba fampiharana, ary exampfampiasana mahazatra isaky ny kilasy misy.
Mba hanampiana anao hahatakatra haingana ny hevitra USB, ny antontan-taratasy dia ahitana examples amin'ny USB miaraka amin'ny fiasa fototra. Ireo examples dia hanome anao rafitra izay ahafahanao manamboatra fitaovana haingana. Ireo examples ahitana:
Adapter USB-to-serial (Kilasy fitaovana amin'ny serasera) Mouse na klavier (Klasian'ny fitaovana entin'ny olombelona) Fitaovana fitahirizana azo esorina (Kilasy fitahirizana faobe) Fitaovana manokana (Kilasy mpivarotra)
Ny manaraka dia ny faranyview amin'ny fizarana antontan-taratasy:
Famaritana sy endri-javatra Fanamboarana fitaovana USB Torolàlana fandrindrana fitaovana USB Kilasy fitaovana USB
CDC ACM Class HID Class MSC SCSI Class Vendor Class USB Device Troubleshooting Microsoft Windows OS USB Host
Copyright © 2025 Silicon Laboratories. Zo rehetra voatokana.
3/174
USB
USB
USB Version 1.5.1 Jolay 21, 2025 – naoty famoahana
Simplicity SDK Version 2025.6.1
Ny fitaovana USB mahomby amin'ny Silicon Labs dia manolotra fampifandraisana USB mora ampiasaina ho an'ny tetikasa IoT, anisan'izany ny fifandraisana eo amin'ny mpiara-miasa sy ny mpampiantrano. Kitiho eto ho an'ny famoahana teo aloha.
Famoahana famintinana
Endri-javatra fototra | API Changes | Fanamboarana bug | Chip Enablement
Endri-javatra fototra
Ny sehatra fototra ihany no miova.
API Changes
Tsy misy.
Fanamboarana bug
Tsy misy.
Chip Enablement
Tsy misy.
Endri-javatra fototra
Endri-javatra vaovao | Fanatsarana | Esorina ny endri-javatra | Toetra tsy ampiasaina intsony
Endri-javatra vaovao
Tsy misy.
Fanatsarana
Ny sehatra fototra ihany no miova.
Esory ny endri-javatra
Tsy misy.
Endri-javatra very maina
Tsy misy.
API Changes
API vaovao | API novana | API nesorina | API tsy ampiasaina intsony
API vaovao
Copyright © 2025 Silicon Laboratories. Zo rehetra voatokana.
4/174
USB
Tsy misy.
API novaina
Tsy misy.
API nesorina
Tsy misy.
API tsy ampiasaina intsony
Tsy misy.
Fanamboarana bug
Tsy misy.
Chip Enablement
Tsy misy.
Fampiharana Example Changes
Vaovao Examples | Modified Examples | Nesorina Examples | Tsy ampiasaina Exampl'
Vaovao Exampl'
Tsy misy.
Modified Exampl'
Tsy misy.
Nesorina Exampl'
Tsy misy.
Tsy ampiasaina Exampl'
Tsy misy.
Ny fiantraikan'ny fanovana ny famoahana
Fanambarana fiantraikany | Torolàlana momba ny fifindra-monina
Fanambarana fiantraikany
Tsy misy.
Torolàlana momba ny fifindra-monina
Tsy misy.
Olana fantatra sy fetra
Tsy misy.
Mampiasa ity famoahana ity
Copyright © 2025 Silicon Laboratories. Zo rehetra voatokana.
5/174
USB
Inona no ao amin'ny Release? | Compatible Software | Fametrahana sy fampiasana | Fanampiana sy fanehoan-kevitra
Inona no ao amin'ny Release?
USB Device Stack Application Exampl'
Software mifanentana
Software
Simplicity SDK Simplicity Studio Simplicity Commander GCC The GNU Compiler Collection) IAR Embedded Workbench for ARM IAR EWARM
Version na Variant mifanentana
2025.6.0 5.11.0 1.18.2 (misy Studio Simplicity) 12.2.1 (misy Studio Simplicity) 9.40.1 (misy Studio Simplicity)
Fametrahana sy fampiasana
Mba hanombohana ny fampandrosoana dia jereo ny anay:
USB Device Programming Guide. API Documentation.
Raha mila fampahalalana momba ny Secure Vault Integration, jereo Secure Vault.
Toview Fampandrenesana momba ny fiarovana sy rindrambaiko ary tantano ny safidinao fampandrenesana:
ò Mandehana any amin'ny https://community.silabs.com/. ó Midira miaraka amin'ny kaontinao. ô Click your profile kisary eo amin'ny zoro ambony havanana amin'ny pejy.
õ Safidio ny Fampandrenesana avy amin'ny menio midina. ö Ao amin'ny fizarana Notifications, mandehana any amin'ny My Product Notifications tab raha te hamerinaview Fiarovana ara-tantara sy toro-hevitra momba ny rindrambaiko
fampahatsiahivana
÷ Mba hitantanana ny safidinao dia ampiasao ny tabilao Tantano ny Fampandrenesana mba hanitsiana izay fanavaozana ny vokatra sy toro-hevitra anao.
mandray.
Ho an'ny fanefena naroso dia jereo eto.
Raha te hianatra bebe kokoa momba ny rindrambaiko amin'ity famoahana ity dia midira ao amin'ny antontan-taratasy an-tserasera.
Fanampiana sy fanehoan-kevitra
Mifandraisa amin'ny fanohanana ny Silicon Labs. Raha hampiasa ny fitaovana Anontanio AI izahay hahazoana valiny, jereo ny sahan'ny fikarohana eo an-tampon'ity pejy ity.
Fanamarihana: Andrana ny Ask AI.
Mangataha fanampiana avy amin'ny vondrom-piarahamonina mpamorona anay.
Politika famoahana sy fikojakojana SDK
Jereo ny politikan'ny famoahana sy fikojakojana ny SDK.
Copyright © 2025 Silicon Laboratories. Zo rehetra voatokana.
6/174
TAPITRAview
TAPITRAview
fepetra arahana
Manaraka ny "Universal Serial Bus specification revision 2.0" Manatanteraka ny "Interface Association Descriptor Engineering Change Notice (ECN)"
Fanaraha-maso kilasy USB manapaka betsaka (CDC) Modely Fanaraha-maso Abstract (ACM) Fitaovan'ny fifandraisan'ny olombelona (HID) Kilasy fitahirizana faobe (MSC) rafitra kilasy manokana amin'ny mpivarotra
Toetoetra
Azo atao tsinontsinoavina mba hampidirana ireo endri-javatra ilaina mba hampihenana ny dian-tongotra fitadidiana Manohana ny hafainganam-pandeha feno (12 Mbit/s) Manohana fitaovana mitambatra (multi-function) Manohana fitaovana maro-configuration Manohana fampiasa USB mitsitsy herinaratra (miato ny fitaovana ary miverina) File Module rafitra Novolavolaina tamin'ny sosona abstraction CMSIS-RTOS2 mba ahafahany miasa amin'ny OS samihafa. Ny Silicon Labs GSDK dia miaraka amin'ny seranan-tsambo FreeRTOS sy Micrium OS.
Copyright © 2025 Silicon Laboratories. Zo rehetra voatokana.
7/174
TAPITRAview
TAPITRAview
USB Device Configuration
Ity fizarana ity dia miresaka momba ny fomba fanamboarana ny Silicon Labs USB Device. Misy vondrona telo ny mari-pamantarana fanamafisana, toy izao manaraka izao:
USB Device Core Configuration USB Device Information Configuration USB Device Hardware Configuration
USB Device Core Configuration
Ny fitaovana USB Silicon Labs dia azo amboarina amin'ny fotoana fanangonana amin'ny alàlan'ny andiana #defines hita ao amin'ny sl_usbd_core_config.h file. Ny USB Device dia mampiasa ny #famaritana raha azo atao satria mamela ny kaody sy ny haben'ny angona ampitomboina amin'ny fotoana fanangonam-bokatra mifototra amin'ny endri-javatra alefa. Izany dia mamela ny dian-tongotry ny fitaovana USB USB Silicon Labs sy ny fahatsiarovana vakiana fotsiny (ROM) sy ny fahatsiarovana miditra kisendrasendra (RAM) araka ny fepetra takian'ny fampiharana anao.
Soso-kevitra: Atombohy amin'ny sanda mahazatra ny fizotry ny fanamafisana (asongadina amin'ny bold).
Ny fizarana etsy ambany dia voalamina araka ny filaharana ao amin'ny fandrindrana môdely file, sl_usbd_core_config.h.
Core Configuration Classes Configuration
Core Configuration
Tabilao - Fifanarahana fototra amin'ny fitaovana USB
Famaritana tsy tapaka
Sanda Default
SL_USBD_TA SK_STACK_ SIZE
Mampifanaraka ny haben'ny stack amin'ny bytes amin'ny asa fototra USBD
4096
SL_USBD_TA SK_PRIORIT Y
Ampifanaraho ny laharam-pahamehana amin'ny asa fototra USBD. Laharam-pahamehana CMSIS-RTOS2 izany.
osPriorityHigh
SL_USBD_A UTO_START _USB_DEVIC E
Raha avela dia hatomboka ho azy ny fitaovana USB rehefa manomboka ny kernel ary ny asa fototra 1 USBD dia voalahatra voalohany. Raha kilemaina dia mila miantso sl_usbd_core_start_device() ny fampiharanao rehefa vonona ho hitan'ny mpampiantrano USB.
SL_USBD_C Ny fitambaran'ny isan'ny fanamafisam-peo izay ampiana amin'ny alàlan'ny sl_usbd_add_configuration()
1
ONFIGURATI fiasa.
ON_QUANTI
TY
Copyright © 2025 Silicon Laboratories. Zo rehetra voatokana.
8/174
TAPITRAview
foana
SL_USBD _INTERF ACE_QU ANTITY
SL_USBD _ALT_INT ERFACE_ QUANTI
TY
SL_USBD _INTERF ACE_GR
OUP_QU
ANTITY
SL_USBD _DESCRI
PTOR_Q
UANTITY
SL_USBD _STRING _QUANTI
TY
SL_USBD _OPEN_E NDPOIN TS_QUA NTITY
Description Ny fitambaran'ny isan'ny USB interface tsara ampiana ho an'ny configurations rehetra. Miankina betsaka amin'ny kilasy (es) ampiasaina izany. Raha mila fanazavana fanampiny momba ny isan'ny interface tsara takian'ny kilasy iray, dia jereo ny fizarana “Filàna loharanon-karena avy amin'ny fototra” ao amin'ny kilasinao.
Ny totalin'ny USB interface tsara ampiana ho an'ny configurations rehetra. Miankina betsaka amin'ny kilasy (es) ampiasaina izany. Ity sanda ity dia tsy maintsy mitovy na lehibe kokoa noho ny SL_USBD_INTERFACE_QUANTITY . Raha mila fanazavana fanampiny momba ny isan'ny interface tsara ilain'ny kilasy iray, dia jereo ny fizarana "Ilaina ny loharanon-karena avy amin'ny fototra" ao amin'ny kilasinao.
Ny totalin'ny vondrona USB interface tsara izay ampiana ho an'ny configurations rehetra. Miankina betsaka amin'ny kilasy (es) ampiasaina izany. Raha mila fanazavana fanampiny momba ny isan'ny vondrona interface tsara dia mila ohatra iray ny kilasy, jereo ny fizarana "Ilaina ny loharanon-karena avy amin'ny fototra" ao amin'ny kilasinao.
Ny totalin'ny famaritana Endpoint izay ampiana ho an'ny tefitranonao rehetra. Miankina betsaka amin'ny kilasy (es) ampiasaina izany. Raha mila fanazavana fanampiny momba ny hamaroan'ny famariparitana teboka farany takin'ny ohatra iray dia jereo ny “Isan'ny teboka farany” ao amin'ny fizarana hoe “Ilaina ny loharanon-karena avy amin'ny fototra” ao amin'ny kilasinao. Mariho fa tsy mila dinihina eto ny teboka fiafaran'ny fanaraha-maso. Ny totalin'ny tady USB. Ny fametahana ny isa ho aotra dia hanakana ilay endri-javatra. Ny fanalana an'io dia hahatonga ny fitaovana tsy hitahiry tady famaritana USB nandalo tamin'ny fampiharana. Midika izany fa tsy ho afaka haka ny tady famaritana (toy ny mpanamboatra sy ny anaran'ny vokatra) ny mpampiantrano. Ny totalin'ny teboka farany misokatra isaky ny tefy. Ny fitaovana iray dia mila teboka roa misokatra farafahakeliny ho an'ny famindrana fanaraha-maso, saingy tsy maintsy ampianao koa ny teboka farany amin'ny kilasy (es) ampiasaina. Raha mila fanazavana fanampiny momba ny isan'ny teboka misokatra ilain'ny kilasy iray dia jereo ny “Isan'ny teboka farany” ao amin'ny fizarana “Ilaina ny loharanon-karena avy amin'ny fototra” ao amin'ny kilasinao.
Sanda Default
10 10
2
20 30 20
Classes Configuration
Ny kilasy dia manana tefin'ny fotoana fanangonana manokana. Jereo ny kilasy USB Device raha mila fanazavana fanampiny.
USB Device Information Configuration
Ny sl_usbd_device_config.h configuration file manangona indray ny fotoana #define-s mba hametrahana fampahalalana fototra momba ny fitaovanao, toy ny ID mpivarotra/Product, tady fitaovana, sns. file.
Tabilao - Famariparitana ny fampahalalana momba ny fitaovana USB
foana
SL_USBD_DEVIC E_VENDOR_ID
SL_USBD_DEVIC E_PRODUCT_ID
Famaritana ny nomeraon'ny mpivarotra anao araka ny natolotry ny USB Implementers Forum. Raha mila fanazavana fanampiny momba ny fomba ahazoanao ID mpivarotra dia jereo ny http://www.usb.org/developers/vendor/. Laharana famantarana ny vokatrao.
Copyright © 2025 Silicon Laboratories. Zo rehetra voatokana.
9/174
TAPITRAview
foana
Description
SL_USBD_DEVICE_RELEASE Laharana famoahana ny fitaovanao. _NUMBER
Tady SL_USBD_DEVICE_MANUFA mamaritra ny mpanamboatra ny fitaovanao. Tsy noraharahiana io fandrindrana io rehefa ny
CTURER_STRING
ny configuration SL_USBD_STRING_QUANTITY dia napetraka ho 0.
Tady SL_USBD_DEVICE_PRODUC mamaritra ny vokatrao. Tsy noraharahiana io fanefena io rehefa namboarina
T_STRING
SL_USBD_STRING_QUANTITY dia napetraka ho 0.
Tady SL_USBD_DEVICE_SERIAL_N misy ny laharan'ny fitaovanao. Tsy noraharahiana io fandrindrana io rehefa ny
UMBER_STRING
ny configuration SL_USBD_STRING_QUANTITY dia napetraka ho 0.
SL_USBD_DEVICE_LANGUA Laharana famantarana ny fitenin'ny tadin'ny fitaovanao. Ny sanda azo atao dia:
GE_ID
– SL_USBD_LANG_ID_ARABIC_SAUDI_ARABIA
– SL_USBD_LANG_ID_CHINESE_TAIWAN
– SL_USBD_LANG_ID_ENGLISH_US
– SL_USBD_LANG_ID_ENGLISH_UK
– SL_USBD_LANG_ID_FRENCH
– SL_USBD_LANG_ID_GERMAN
– SL_USBD_LANG_ID_GREEK
– SL_USBD_LANG_ID_ITALIAN
– SL_USBD_LANG_ID_PORTUGUESE
– SL_USBD_LANG_ID_SANSKRIT
Tsy noraharahiana io fanefena io rehefa apetraka amin'ny 0 ny fandrindrana SL_USBD_STRING_QUANTITY.
USB Device Hardware Configuration
Miankina amin'ny fitaovana Silicon Labs ampiasainao, mety hanana ny pin sy ny seranan-tsambo GPIO ianao handrindrana ny famantarana USB VBUS Sense. Ny famaritana dia ao amin'ny lohapejy sl_usbd_hardware_config.h file.
foana
SL_USBD_DRIVER_VBUS_SENSE_PORT SL_USBD_DRIVER_VBUS_SENSE_PIN
Description
Port GPIO ho an'ny famantarana USB VBUS Sense eo amin'ny solaitrao. Pin GPIO ho an'ny famantarana USB VBUS Sense eo amin'ny solaitrao.
Copyright © 2025 Silicon Laboratories. Zo rehetra voatokana.
10/174
TAPITRAview
TAPITRAview
USB Device Programming Guide
Ity fizarana ity dia manazava ny fomba fampiasana ny maody USB Device.
Fametrahana voalohany ny Module fitaovana USB
Ity fizarana ity dia mamaritra ny dingana fototra ilaina amin'ny fanombohana ny maody USB Device ary manampy, manomana ary manomboka fitaovana. Fanombohana ny maody fitaovana USB Fanombohana ny fototry ny fitaovana USB Fanombohana ny aCl ss(es) Fampidirana ny fitaovana USB anao Manangana ny fitaovana USB anao Fanampiana Configuration(s) Fanampiana USB Function(s) Manomboka ny fitaovana USB anao
Event Hook Functions
Manomboka ny USB Device Module
Manomboka ny USB Device Core
a US a Atombohy amin'ny fametrahana ny fototry ny mody fitaovana B amin'ny alàlan'ny fametrahana ny fiasa sl_usbd_core_init() . Ny ohatra etsy ambany dia mampiseho c lling sl_usbd_core_init() .
Example – Miantso sl_usbd_core_init()
sl_status_t status; status = sl_usbd_core_init(); raha (status ! SL_STATUS_OK) { /* Nisy lesoka. Tokony ampiana eto ny fikarakarana lesoka. */
}
Fanombohana ny kilasy
Rehefa avy natomboka ny fototry ny maody fitaovana USB dia tsy maintsy manomboka ny kilasy tsirairay tianao hampiasaina ianao. Jereo ny fizarana “Torolalana Fandaharana” ao amin'ny acl ss(es) anao raha mila fanazavana fanampiny.
Amboary ny fitaovana USB anao
Manampy ny Configuration(s)
Rehefa vitanao ny nanombohanao ny fitaovanao, dia azonao atao ny manomboka manampy ny fiasan'ny USB amin'izany, manomboka amin'ny fanamboarana vaovao. Ny fitaovana iray dia tsy maintsy manana endrika iray farafahakeliny. Raha te hampiditra fika iray dia antsoy ny fonction aa sl_usbd_core_ dd_configur tion(). Ity fiasa ity dia tsy maintsy antsoina ho an'ny fikirakirana tsirairay tianao ampiana. Ny example eto ambany dia mampiseho ny fomba hanampiana Full-speed.
Example - Manampy Configuration (s) amin'ny fitaovanao
Copyright © 2025 Silicon Laboratories. Zo rehetra voatokana.
11/174
TAPITRAview
sl_status_t status; uint8_t config_nbr_fs;
/* Fanampiana fandrindrana hafainganam-pandeha feno amin'ny fitaovana. */
status = sl_usbd_core_add_configuration(0,
/* Tsy misy toetra manokana amin'ny fandrindrana. */
100u,
/* Fanjifana herinaratra ambony indrindra: 100mA.
*/
SL_USBD_DEVICE_SPEED_FULL,
/* Fanofanana hafainganam-pandeha feno.
*/
"Config Add Exampny Full-Speed config",
&config_nbr_fs);
raha (status ! SL_STATUS_OK) {
/* Nisy hadisoana nitranga. Tokony ampiana eto ny fikarakarana lesoka. */
}
Manampy USB Function(s)
Rehefa vita soa aman-tsara ianao nanampy tefy iray fara-fahakeliny amin'ny fitaovanao, dia azonao atao ny manampy ireo seha-pifandraisana sy teboka farany amin'ny fitaovanao. Ny kilasy USB tsirairay dia manana ny filany manokana amin'ny lafiny interface sy ny karazana endpoints, ny habe ary ny masontsivana hafa. Ny Silicon Labs USB Device dia manampy fifandraisana sy teboka farany amin'ny kilasy atolony.
Avy amin'ny rindranasao dia azonao atao ny mametraka kilasy USB ary manampy azy amin'ny fanamafisana. Raha mila fanazavana fanampiny momba ny foto-kevitry ny kilasy fitaovana USB, jereo ny USB Device Classes. Mariho fa azonao atao ny mametraka sy manampy trangan-javatra maro samihafa amin'ny tefi-trano mba hamoronana fitaovana marobe (composite).
Ny example eto ambany dia mampiseho ny fomba hamoronana ohatra iray kilasy ary ampio izany amin'ny konfigurasi.
Example - Manampy ohatra kilasy amin'ny fitaovanao
sl_status_t status; uint8_t class_nbr;
/* Mamorona ohatra amin'ny kilasy tianao hampiasaina.*/ /* Mariho fa miankina amin'ny kilasy io fiasa io dia mety hanana hevitra maro kokoa. */ status = sl_usbd_ _create_instance(&class_nbr); raha (status ! SL_STATUS_OK) { /* Nisy lesoka. Tokony ampiana eto ny fikarakarana lesoka. */ }
/* Ampio ny ohatra ao amin'ny kilasy amin'ny config Full-Speed. */ status = sl_usbd_ _add_to_configuration(class_nbr, /* Laharana kilasy naverin'ny sl_usbd_ _create_instance. */
config_nbr_fs); /* Laharana fanamboarana naverin'ny sl_usbd_core_add_configuration(). */ raha (status ! SL_STATUS_OK) { /* Nisy lesoka. Tokony ampiana eto ny fikarakarana lesoka. */ }
Manomboka ny fitaovana USB anao
Amin'ny alàlan'ny default, ny fitaovana dia hanomboka ho azy amin'ny alàlan'ny asa fototry ny fitaovana USB rehefa vita ny fanombohana ny fitaovana ary natomboka ny kernel. Mba hifehezana ny fotoana nanombohana ny fitaovana ary ho hitan'ny mpampiantrano USB, ampiasao ny fandrindrana famaritana SL_USBD_AUTO_START_USB_DEVICE mba hanesorana ny endri-javatra manomboka mandeha ho azy. Rehefa kilemaina, rehefa avy nanamboatra/manomana ny fitaovanao ianao, dia azonao atao ny manomboka izany ary mampiseho izany amin'ny mpampiantrano USB amin'ny fiantsoana ny fiasa sl_usbd_core_start_device() .
Ny exampNy eto ambany dia mampiseho ny fomba hanombohana ny fitaovanao amin'ny fampiasana ny fiasa sl_usbd_core_start_device().
Example - Manomboka ny fitaovanao
Copyright © 2025 Silicon Laboratories. Zo rehetra voatokana.
12/174
TAPITRAview
sl_status_t status;
status = sl_usbd_core_start_device(); raha (status ! SL_STATUS_OK) { /* Nisy lesoka. Tokony ampiana eto ny fikarakarana lesoka. */ }
Event Hook Functions
Ny maody fototra USB Device dia manolotra fiasa roa malemy izay azonao faritana indray amin'ny fampiharanao. Ny tanjon'izy ireo dia ny mampandre rehefa misy hetsika fiara fitateram-bahoaka sy fanamboarana.
Tabilao - USB Event Hook Functions
Event
Description
fiara fitateram-bahoaka
Antsoina rehefa misy hetsika USB Bus
Antsoina ny Configuration rehefa misy hetsika USB Configuration
Fonction Signature
void sl_usbd_on_bus_event(sl_usbd_bus_event_t event); void sl_usbd_on_config_event(sl_usbd_config_event_t event, uint8_t config_nbr);
Example – Event Hook Functions
void sl_usbd_on_bus_event(sl_usbd_bus_event_t event) { switch (event) { case SL_USBD_EVENT_BUS_CONNECT:
// antsoina rehefa ampidirina ny cable USB ao amin'ny fiatoana mpandrindra mpampiantrano;
tranga SL_USBD_EVENT_BUS_DISCONNECT: // antsoina rehefa esorina ny tariby USB amin'ny fiatoana mpandrindra mpampiantrano;
tranga SL_USBD_EVENT_BUS_RESET: // antsoina rehefa mandefa reset command break ny mpampiantrano;
tranga SL_USBD_EVENT_BUS_SUSPEND: // antsoina rehefa mandefa fampiatoana baiko fiatoana ny mpampiantrano;
tranga SL_USBD_EVENT_BUS_RESUME: // antsoina rehefa mandefa fiatoana baiko mifoha ny mpampiantrano;
default: tapaka; } }
void sl_usbd_on_config_event(sl_usbd_config_event_t event, uint8_t config_nbr) { switch (event) { case SL_USBD_EVENT_CONFIG_SET:
// antsoina rehefa mametraka fiatoana fanamafisana ny mpampiantrano;
tranga SL_USBD_EVENT_CONFIG_UNSET: // antsoina rehefa tsy voapetraka ny config;
default: tapaka; } }
Copyright © 2025 Silicon Laboratories. Zo rehetra voatokana.
13/174
TAPITRAview
Copyright © 2025 Silicon Laboratories. Zo rehetra voatokana.
14/174
TAPITRAview
TAPITRAview
Kilasy fitaovana USB
Ny kilasy USB misy ao amin'ny Silicon Labs USB Device dia mizara toetra mahazatra. Ity fizarana ity dia manazava ireo toetra ireo sy ny fifandraisany amin'ny sosona fototra.
Raha mila fanazavana fanampiny momba ny kilasy iray manokana dia jereo ireto manaraka ireto:
Kilasy CDC ACM HID Class MSC SCSI Class Vendor Class
Momba ny Instance Classe
Ny kilasy USB misy amin'ny USB Device dia mampihatra ny foto-kevitry ny kilasy. Ny ohatra iray kilasy dia maneho asa iray ao anatin'ny fitaovana iray. Ny fiasa dia azo faritana amin'ny alàlan'ny interface iray na amin'ny vondron'olona interface tsara ary an'ny kilasy manokana.
Ny fampiharana kilasy USB tsirairay dia manana fanamafisam-peo sy fiasa iraisana, mifototra amin'ny foto-kevitry ny ohatra kilasy. Aseho ao amin'ny tabilao etsy ambany ny fandrindrana sy fiasa mahazatra. Ao amin'ny lohatenin'ny tsanganana 'Constants or Function' dia azo soloina amin'ny anaran'ny kilasy ny tompon'ny toerana XXXX: CDC, HID, MSC, CDC_ACM na VENDOR (Vendor for function names).
Tabilao – Constants sy Functions mifandraika amin'ny foto-kevitry ny tranga maromaro
Constant na Function
SL_USBD_XXXX_CL ASS_IN TANCE_QUANTITY
SL_USBD_XXXX_CONFIGUR ATION_QUANTITY
sl_usb d _XXXX_cre nihinana _insta nce ()
sl_usbd_XXXX_add_to_conf iguration()
Description
Ampifanaraho ny isan'ny tranga ambony indrindra.
Manefy ny isa ambony indrindra amin'ny fanitsiana. Mandritra ny fanombohana kilasy dia ampiana ohatra iray na maromaro ny ohatra kilasy noforonina. Mamorona ohatra kilasy vaovao.
Manampy ohatra kilasy efa misy amin'ny tefin'ny fitaovana voatondro.
Raha resaka fampiharana kaody, ny kilasy dia hanambara fari-pahalalana maneran-tany izay misy rafitra fanaraha-maso ny kilasy. Ity rafitra fanaraha-maso kilasy ity dia mifandray amin'ny ohatra iray kilasy ary ahitana fampahalalana manokana hitantana ny ohatra kilasy.
Ireto tarehimarika manaraka ireto dia mampiseho toe-javatra maromaro. Ny tarehimarika tsirairay dia misy code example izay mifanaraka amin'ny scenario tranga.
Sary - Kilasy maromaro - Fitaovana FS (Configuration 1 miaraka amin'ny Interface 1) dia maneho fitaovana USB mahazatra. Ny fitaovana dia Full-Speed (FS) ary misy fanefena tokana. Ny fiasan'ny fitaovana dia nofaritana tamin'ny alàlan'ny seha-pifandraisana iray ahitana teboka roa ho an'ny fifandraisana data. Ohatra iray kilasy no noforonina ary ahafahanao mitantana ny interface manontolo miaraka amin'ny teboka farany mifandraika aminy.
Sary - Kilasy maromaro - Fanamboarana FS Device 1 miaraka amin'ny Interface 1)
Copyright © 2025 Silicon Laboratories. Zo rehetra voatokana.
15/174
TAPITRAview
Ny kaody mifanandrify amin'ny Figure - Multiple Class Instance - FS Device (1 Configuration with 1 Interface) dia aseho amin'ny example ambany.
Example - Kilasy maromaro - Fanamboarana FS Device 1 miaraka amin'ny Interface 1)
sl_status_t status; uint8_t class_0;
void app_usbd_XXXX_enable(uint8_t class_nbr) { /* Handle Class enable event. */ }
void app_usbd_XXXX_disable(uint8_t class_nbr) { /* Handle Class disable event. */ }
sl_usbd_XXXX_callbacks_t class_callbacks = {
(1)
.enable = app_usbd_XXXX_enable,
.disable = app_usbd_XXXX_disable
};
status = sl_usbd_XXXX_init();
(2)
raha (status ! SL_STATUS_OK) {
/* $$$$ Tandremo ny fahadisoana. */
}
status = sl_usbd_XXXX_create_instance(&class_callbacks,
(3)
&class_0);
raha (status ! SL_STATUS_OK) {
/* $$$$ Tandremo ny fahadisoana. */
}
status = sl_usbd_XXXX_add_to_configuration(class_0, config_0);
(4)
raha (status ! SL_STATUS_OK) {
/* $$$$ Tandremo ny fahadisoana. */
}
(1) Ny kilasy tsirairay dia manolotra andiana antso an-tariby ho an'ny fitaovana mampifandray / manapaka hetsika ary ho an'ny hetsika manokana. Ny object structure callback dia alefa ho tohan-kevitra rehefa mamorona ohatra amin'ny kilasy miaraka amin'ny sl_usbd_XXXX_create_instance()
asa.
(1) Atombohy ny kilasy. Hanomboka amin'ny voalohany ny fari-piainana anatiny, ny rafitra ary ny seranan-tsambo. Mariho fa ny fiasa Init() amin'ny kilasy sasany dia mety haka hevitra hafa.
Copyright © 2025 Silicon Laboratories. Zo rehetra voatokana.
16/174
TAPITRAview
(2) Mamorona ohatra kilasy, izay class_0 . Ny fiasa sl_usbd_XXXX_create_instance() dia manome rafitra fanaraha-maso kilasy mifandraika amin'ny class_0 . Miankina amin'ny kilasy, ny sl_usbd_XXXX_create_instance() dia mety manana mari-pamantarana fanampiny ankoatra ny laharan'ny kilasy izay maneho ny mombamomba ny kilasy voatahiry ao amin'ny rafitra fanaraha-maso ny kilasy. aaa (3) Ampio ny cl ss inst nce, class_0 , amin'ny laharan'ny config, config_0 . sl_usbd_XXXX_add_to_configuration() dia hamorona ny interface 0 sy ireo teboka IN sy OUT mifandray aminy. Vokatr'izany, ny ohatra kilasy dia ahitana ny interface 0 sy ny teboka farany. Ny fifandraisana rehetra atao amin'ny interface 0 dia hampiasa ny laharan'ny kilasy kilasy, class_0 . Sary - Kilasy maromaro - Ny fitaovana FS (2 Configuration sy Interfaces maro) dia maneho ny ex be pitsiny kokoaample. Ny fitaovana iray manana hafainganam-pandeha feno dia misy rindran-damina roa. Ny fitaovana dia manana fiasa roa izay an'ny kilasy iray ihany, fa ny fiasa tsirairay dia faritana amin'ny alàlan'ny fifandraisana roa ary manana teboka roa tondro roa. Amin'ity example, instance kilasy roa no noforonina. Ny ohatra kilasy tsirairay dia mifandray amin'ny vondrona interface tsara mifanohitra amin'ny Figure - Multiple Class Instances - FS Device (1 Configuration with 1 Interface) ary Sary - Multiple Class Instances - FS Device (2 Configurations and Multiple Interfaces) izay nifandray tamin'ny interface tokana ny ohatra kilasy.
Figure – Kilasy maromaro – FS Device 2 Configuration sy Interface maro)
Ny kaody mifanandrify amin'ny Figure - Multiple Class Instances - FS Device (2 Configurations and Multiple Interfaces) dia aseho amin'ny example ambany. Nesorina ny fikarakarana lesoka mba hazava.
Example - Kilasy maro karazana - FS Device 2 Configuration sy Interface maro)
Copyright © 2025 Silicon Laboratories. Zo rehetra voatokana.
17/174
TAPITRAview
sl_status_t status; uint8_t class_0; uint8_t class_1;
status = sl_usbd_XXXX_init();
status = sl_usbd_XXXX_create_instance(&class_0); status = sl_usbd_XXXX_create_instance(&class_1);
status = sl_usbd_XXXX_add_to_configuration(class_0, cfg_0); status = sl_usbd_XXXX_add_to_configuration(class_1, cfg_0);
status = sl_usbd_XXXX_add_to_configuration(class_0, cfg_1); status = sl_usbd_XXXX_add_to_configuration(class_1, cfg_1);
(1)
(2) (3)
(4) (5)
(6) (6)
(1) Atombohy ny kilasy. Hanomboka amin'ny voalohany ny fari-piainana anatiny, ny rafitra ary ny seranan-tsambo.
(2) Mamorona ohatra kilasy, class_0 . Ny fiasa sl_usbd_XXXX_create_instance() dia manome rafitra fanaraha-maso kilasy mifandraika amin'ny class_0 .
(3) Mamorona ohatra kilasy, class_1 . Ny fiasa sl_usbd_XXXX_create_instance() dia manome rafitra fanaraha-maso kilasy hafa mifandraika amin'ny class_1 .
(4) Ampio ny ohatra kilasy, class_0 , amin'ny configuration, cfg_0 . sl_usbd_XXXX_add_to_configuration() dia hamorona ny interface 0, ny interface 1, ny interface hafa, ary ireo teboka IN sy OUT mifandray. Ny laharan'ny ohatra kilasy, class_0 , dia hampiasaina amin'ny fifandraisana data rehetra amin'ny interface 0 na interface 1.
(5) Ampio ny ohatra kilasy, class_1 , amin'ny configuration, cfg_0 . sl_usbd_XXXX_add_to_configuration() dia hamorona ny interface 2, ny interface 3 ary ireo teboka IN sy OUT mifandray aminy. Ny laharan'ny ohatra kilasy, class_1 , dia hampiasaina amin'ny fifandraisana data rehetra amin'ny interface 2 na interface 3.
(6) Ampio ireo ohatra kilasy mitovy, class_0 ary class_1 , amin'ny configuration hafa, cfg_1 .
Ny kilasy tsirairay dia mamaritra ny firafitry ny karazana sl_usbd_XXXX_callbacks_t . Ny tanjon'izy ireo dia ny hanome ny kilasy tsirairay ny andiana fiantsoana fiantsoana rehefa misy hetsika. Misy fiasa roa antso miverina isaky ny kilasy. Izy ireo dia aseho amin'ny tabilao etsy ambany.
Tabilao - Fampiasa antso an-tariby mahazatra
Fields Description .enable Antsoina rehefa vita soa aman-tsara ny ohatra kilasy USB. .disable Antsoina rehefa kilemaina ny kilasy USB.
Fampiasa sonia void app_usbd_XXXX_enable(uint8_t class_nbr); void app_usbd_XXXX_disable(uint8_t class_nbr);
Copyright © 2025 Silicon Laboratories. Zo rehetra voatokana.
18/174
TAPITRAview
TAPITRAview
Fitaovana USB CDC ACM Class
USB fitaovana CDC Base Class Overview Fitaovana USB CDC ACM Class Resource ilaina avy amin'ny Core USB Device CDC ACM Subclass Overview USB Device CDC ACM Class Configuration USB Device CDC ACM Class Programming Guide
Ity fizarana ity dia mamaritra ny kilasin'ny fitaovana fifandraisana (CDC) sy ny zana-kilasy CDC mifandraika amin'izany tohanan'ny USB Device stack Silicon Labs. Ny Silicon Labs USB-Device amin'izao fotoana izao dia manohana ny subclass Abstract Control Model (ACM), izay matetika ampiasaina amin'ny fametahana serial.
Ny CDC dia ahitana fitaovana fifandraisan-davitra sy tambajotra isan-karazany. Ny fitaovana fifandraisan-davitra dia ahitana modem analogue, telefaona analogue sy nomerika, adapter terminal ISDN, sns.ampAmin'ny ankapobeny, ny fitaovana amin'ny tambajotra dia misy ADSL sy cable modems, adapter Ethernet ary hub. Ny CDC dia mamaritra rafitra iray hamehezana ny fenitry ny serivisy fifandraisana misy, toy ny V.250 (ho an'ny modem amin'ny tambajotra an-telefaona) sy Ethernet (ho an'ny fitaovana tambajotra eo an-toerana), amin'ny fampiasana rohy USB. Ny fitaovana fifandraisana dia miandraikitra ny fitantanana fitaovana, ny fitantanana ny antso rehefa ilaina, ary ny fandefasana angon-drakitra.
Ny CDC dia mamaritra vondrona fitaovana lehibe fito. Ny vondrona tsirairay dia an'ny maodely fifandraisana, izay mety ahitana sokajy maromaro. Ny vondrona fitaovana tsirairay dia manana antontan-taratasiny manokana ankoatry ny kilasy fototra CDC. Ny vondrona fito dia:
Public Switched Telephone Network (PSTN), fitaovana ao anatin'izany ny modem voiceband, telefaona ary fitaovana emulation serial. Fitaovana Integrated Services Digital Network (ISDN), ao anatin'izany ny adapter terminal sy ny telefaona. Fitaovana Ethernet Control Model (ECM), anisan'izany ireo fitaovana manohana ny fianakaviana IEEE 802 (ohatra: cable sy ADSL modem, adapter WiFi). Fitaovana Asynchronous Transfer Mode (ATM), anisan'izany ny modem ADSL sy fitaovana hafa mifandray amin'ny tambajotra ATM (toeram-piasana, router, switch LAN). Ny fitaovana Wireless Mobile Communications (WMC), anisan'izany ny fitaovana finday maro ampiasaina amin'ny fitantanana ny feo sy ny angona. Ethernet Emulation Model (EEM) fitaovana izay mifanakalo angona voarafitra Ethernet. Fitaovana Network Control Model (NCM), ao anatin'izany ny fitaovana tambajotra haingam-pandeha (modema fidirana amin'ny fonosana avo lenta, fitaovana fampitaovana andalana)
Ny CDC sy ny fampiharana subclass mifandraika dia manaraka ireto fepetra manaraka ireto:
Universal Serial Bus, Class Definitions for Communications Devices, Revision 1.2, November 3 2010. Universal Serial Bus, Communications, Subclass ho an'ny PSTN Devices, Revision 1.2, February 9 2007.
USB fitaovana CDC Base Class Overview
Ny fitaovana CDC dia ahitana ireto fifandraisana manaraka ireto mba hampiharana ny fahaiza-miresaka:
Communications Class Interface (CCI) dia tompon'andraikitra amin'ny fitantanana ny fitaovana ary raha tsy izany dia ny fitantanana ny antso. ny
Ny fitantanana ny fitaovana dia ahafahan'ny fanamafisana sy ny fanaraha-maso ankapobeny ny fitaovana ary ny fampahafantarana ny hetsika amin'ny mpampiantrano. Ny fitantanana ny antso dia mamela ny fametrahana sy famaranana ny antso. Ny fitantanana ny antso dia azo afindra amin'ny alalan'ny DCI. Ny CCI dia tsy maintsy atao amin'ny fitaovana CDC rehetra. Izy io dia mamaritra ny fiasan'ny CDC amin'ny alàlan'ny famaritana ny modely fifandraisana tohanan'ny fitaovana CDC. Ny interface(s) manaraka ny CCI dia mety ho samy hafa karazana USB interface tsara, toy ny Audio na ny mpivarotra manokana interface tsara. Ny fifandraisana manokana amin'ny mpivarotra dia asehon'ny DCI manokana.
Data Class Interface (DCI) dia tompon'andraikitra amin'ny fandefasana angona. Ny angona ampitaina sy/na voaray dia tsy manaraka fepetra manokana
endrika. Ny angon-drakitra dia mety ho angona manta avy amin'ny zotram-pifandraisana, angon-drakitra manaraka ny format manan-tompo, sns. Ny DCI rehetra manaraka ny CCI dia azo jerena ho toy ny fifandraisana ambany.
Ny fitaovana CDC dia tsy maintsy manana CCI iray farafahakeliny ary DCI aotra na mihoatra. Ny CCI iray sy ny DCI ambany rehetra miaraka dia manome endri-javatra ho an'ny mpampiantrano. Io fahaiza-manao io dia antsoina koa hoe asa. Ao amin'ny fitaovana mitambatra CDC, afaka manana maromaro ianao
Copyright © 2025 Silicon Laboratories. Zo rehetra voatokana.
19/174
TAPITRAview
asa. Noho izany, ny fitaovana dia ahitana andiana CCI sy DCI (s) maromaro araka ny aseho amin'ny sary - CDC Composite Device.
Sary - Fitaovana CDC Composite
Ny fitaovana CDC dia mety hampiasa ireto fitambaran'ny teboka farany manaraka ireto:
Toerana fiafarana IN sy OUT roa antsoina hoe teboka fiafarana default. Toeram-pifaranan'ny IN dia ampahany betsaka na manapaka. Toerana faran'ny IN sy OUT maromaro maromaro na isochronous. Mariho fa ny fitaovana USB Silicon Labs stack dia tsy mahazaka ireo teboka isochronous amin'izao fotoana izao.
Ny tabilao etsy ambany dia mampiseho ny fampiasana ireo teboka isan-karazany sy amin'ny alalan'ny interface tsara an'ny CDC ampiasaina azy ireo.
Tabilao - Fampiasana teboka farany CDC
Endpoint
Control IN
Mifehy OUT
Tapaka na be dia be IN betsaka na isochronous IN betsaka na isochronous
avy
tari-dalana
Deviceto-host
Host-to-fitaovana
Deviceto-host
Deviceto-host
Host-to-fitaovana
Fampiasana Interface
CCI
Fangatahana manara-penitra ho an'ny fanisana, fangatahana manokana amin'ny kilasy, fitaovana
fitantanana, ary raha azo atao ny miantso ny fitantanana.
CCI
Fangatahana manara-penitra ho an'ny fanisana, fangatahana manokana amin'ny kilasy, fitaovana
fitantanana, ary raha azo atao ny miantso ny fitantanana.
CCI
Fampandrenesana hetsika, toy ny fanerena peratra, satan'ny andalana serial, satan'ny tambajotra.
DCI
Fifandraisana angona manta na voalamina.
DCI
Fifandraisana angona manta na voalamina.
Ny ankamaroan'ny fitaovam-pifandraisana dia mampiasa teboka fiatoana mba hampandrenesana ireo hetsika. Ny teboka Isochronous dia tsy tokony hampiasaina amin'ny fandefasana angon-drakitra rehefa miantehitra amin'ny fandefasana angon-drakitra ny protocol proprietary raha misy hadisoana protocol USB. Ny fifandraisana Isochronous dia mety ho very angon-drakitra satria tsy misy mekanika andrana indray.
Ny maodely fito lehibe amin'ny fifandraisana dia ahitana sokajy maromaro. Ny subclass dia mamaritra ny fomba tokony hampiasan'ny fitaovana ny CCI amin'ny fitantanana ny fitaovana sy ny fitantanana ny antso. Ny tabilao etsy ambany dia mampiseho ny zana-kilasy rehetra sy ny modely fifandraisana misy azy.
Tabilao - Kilasy CDC
Subclass
Modely fanaraha-maso an-tariby mivantana
Modely fifandraisana
PSTN
PSTN
Example an'ny fitaovana mampiasa an'ity sokajy ity
Ny fitaovana modem dia fehezin'ny mpampiantrano USB
Serial emulation fitaovana, fitaovana modem voafehy amin'ny alalan'ny andian-baiko serial
Copyright © 2025 Silicon Laboratories. Zo rehetra voatokana.
20/174
TAPITRAview
Subclass
Modely fifandraisana
Example an'ny fitaovana mampiasa an'ity sokajy ity
Modely fanaraha-maso an-telefaona
PSTN
Modely ISDN fanaraha-maso marobe
CAPI Control Model ISDN
Ethernet Networking ECM Control Model
ATM Networking
ATM
Modely fanaraha-maso
Wireless Handset Control Modely
WMC
Fitantanana fitaovana WMC
Mobile Direct Line Modely
WMC
OBEX
WMC
Modely EEM Emulation Ethernet
Modely fanaraha-maso ny tambajotra
NCM
Fitaovana telefaona feo
Adapter terminal sarany fototra, adaptatera terminal sara fototra, telefaona
Adapter terminal tahan'ny fototra, adaptatera terminal sarany voalohany, telefaona DOC-SIS cable modem, ADSL modem izay manohana PPPoE emulation, Wi-Fi adapters (IEEE 802.11-fianakaviana), IEEE 802.3 adapters ADSL modem
Fitaovana finday mifandray amin'ny fitaovana tsy misy tariby
Fitaovam-pitaterana finday mifandray amin'ny fitaovana tsy misy tariby Fitaovana terminal finday mifandray amin'ny fitaovana tsy misy tariby
Fitaovam-pitaterana finday mifandray amin'ny fitaovana tsy misy tariby Fitaovana mampiasa frame Ethernet ho sosona fitaterana manaraka. Tsy natao ho an'ny zotra sy fitaovana fampifandraisana amin'ny Internet IEEE 802.3 adaptatera mitondra bandwidth data haingana amin'ny tambajotra
Fitaovana USB CDC ACM Class Resource ilaina avy amin'ny Core
Isaky ny manampy ohatra iray amin'ny kilasy CDC ACM ianao amin'ny fanamafisana USB amin'ny alàlan'ny antso amin'ny fiasa sl_usbd_cdc_acm_add_to_configuration() , ireto loharano manaraka ireto dia hatokana avy amin'ny fototra.
loharano
Interface Interfaces mifanolotra Vondrona interface
Hatrany
2 2 3 1
Mariho fa ireo isa ireo dia isaky ny configuration. Rehefa manangana ny SL_USBD_INTERFACE_QUANTITY , SL_USBD_ALT_INTERFACE_QUANTITY , SL_USBD_INTERFACE_GROUP_QUANTITY ary SL_USBD_DESCRIPTOR_QUANTITY ianao, dia aza adino ny mandinika ny isan'ny config ho an'ny kilasy. Ho an'ny sandan'ny fanefena SL_USBD_OPEN_ENDPOINTS_QUANTITY, satria tsy misokatra afa-tsy rehefa misy config no napetraky ny mpampiantrano, dia mila mandinika fotsiny ny isan'ny teboka ilaina ho an'ny kilasy iray ianao.
USB Device CDC ACM Subclass Overview
Ny kilasy fototra CDC dia ahitana ny Interface Class Communications (CCI) sy Data Class Interface (DCI), izay resahina amin'ny antsipiriany ao amin'ny USB Device CDC Base Class Overview . Ity fizarana ity dia miresaka CCI amin'ny karazana ACM. Izy io dia misy teboka fiafaran'ny default ho an'ny singa fitantanana ary teboka fiafaran'ny fiafaran'ny singa fampahafantarana. Ny teboka faran'ny ampahany roa dia ampiasaina hitondrana angona tsy voafaritra amin'ny DCI.
Ny subclass ACM dia ampiasaina amin'ny karazana fitaovana fifandraisana roa:
Fitaovana manohana ny baiko AT (ohatra, modem voiceband). Fitaovana emulation serial izay antsoina koa hoe fitaovana seranan-tsambo COM Virtual.
Misy fangatahana manokana ho an'ny sokajy ACM. Izy ireo dia mamela anao hifehy sy handrindra ny fitaovana. Ny lisitra feno sy ny famaritana ny fangatahana ACM rehetra dia hita ao amin'ny famaritana
Copyright © 2025 Silicon Laboratories. Zo rehetra voatokana.
21/174
TAPITRAview Kilasy ho an'ny fitaovana PSTN, fanavaozana 1.2, 9 Febroary 2007=, fizarana 6.2.2.
Avy amin'ity lisitra ity, ny subclass Silicon Labs9 ACM dia manohana ireto manaraka ireto:
Tabilao - Fangatahana ACM tohanan'ny Silicon Labs
Famaritana fangatahana subclass
SetCommFeature GetCommFeature ClearCommFeature
Ny mpampiantrano dia mandefa ity fangatahana ity mba hifehezana ny firafitry ny endri-pifandraisana nomena. Tsy ampiasaina amin'ny emulation serial.
Mandefa ity fangatahana ity ny mpampiantrano mba hahazoana ny fanovana ankehitriny ho an'ny endri-pifandraisana nomena. Tsy ampiasaina amin'ny emulation serial.
Mandefa ity fangatahana ity ny mpampiantrano mba hanadio ny fika ho an'ny endri-pifandraisana nomena. Tsy ampiasaina amin'ny emulation serial.
SetLineCoding
Ny mpampiantrano dia mandefa ity fangatahana ity mba hanitsiana ny firafitry ny fitaovana ACM: ny tahan'ny baud, ny isan'ny bits, ny karazana parity ary ny isan'ny bits. Ho an'ny emulation serial, ity fangatahana ity dia alefa mandeha ho azy amin'ny alàlan'ny terminal serial isaky ny manitsy ny firafitry ny serial ho an'ny seranana COM virtoaly misokatra.
GetLineCoding
Mandefa ity fangatahana ity ny mpampiantrano mba hahazoana ny firafitry ny ACM amin'izao fotoana izao (baud rate, stop bits, parity, data bits). Ho an'ny emulation serial, ny terminal serial dia mandefa ho azy ity fangatahana ity mandritra ny fanokafana seranan-tsambo COM virtoaly.
SetControlLineState Ny mpampiantrano dia mandefa ity fangatahana ity mba hifehezana ny mpitatitra ho an'ny modem half-duplex ary manondro fa vonona na tsia ny Data Terminal Equipment (DTE). Amin'ny tranga emulation serial, ny DTE dia terminal serial. Ho an'ny emulation serial, misy terminal serial mamela anao handefa ity fangatahana ity miaraka amin'ny fanaraha-maso napetraka.
SetBreak
Mandefa ity fangatahana ity ny mpampiantrano mba hamoronana fiatoana amin'ny fomba RS-232. Ho an'ny emulation serial, misy terminal serial mamela anao handefa ity fangatahana ity.
Silicon Labs9 ACM subclass dia mampiasa ny interrupt IN endpoint mba hampahafantarana ny mpampiantrano momba ny tsipika misy ankehitriny. Ny serial
tsipika dia bitmap mampahafantatra ny mpampiantrano momba ny:
Nariana ny angon-drakitra noho ny fahadisoam-panantenana diso tafahoatra Fahadisoan'ny framing Toetran'ny famantarana famantarana ny peratra Toetran'ny mekanika fisavana tapaka Toetran'ny mpitatitra fandefasana Toetran'ny mpitatitra mpandray
Ny fampiharana ny subclass Silicon Labs9 ACM dia manaraka ireto fepetra manaraka ireto:
Universal Serial Bus, Communications, Subclass ho an'ny PSTN Devices, fanavaozana 1.2, Febroary 9, 2007.
Fitaovana USB CDC ACM Class Configuration
Ity fizarana ity dia miresaka ny fomba fanamboarana ny CDC ACM Class (Communication Device Class, Abstract Control Model). Misy vondrona roa ny mari-pamantarana fanamafisana:
Fitaovana USB CDC ACM Class Application Configurations manokana Fitaovana USB CDC ACM Class Configuration Instance
Fitaovana USB CDC ACM Class Application Configurations manokana
CDC Base Class ACM Subclass
Kilasy fototra CDC
Voalohany, raha hampiasa ny maody kilasy CDC fitaovana USB Silicon Labs ianao, dia mila manitsy ny fanitsiana ny fotoana fanangonana CDC #define-s araka ny filanao. Atambatra ao anaty lohapejy sl_usbd_core_config.h izy ireo file eo ambanin'ny fizarana CDC. Ny tanjon'izy ireo dia ny fampahafantarana ny maody fitaovana USB momba ny isan'ny zavatra USB CDC atokana.
Copyright © 2025 Silicon Laboratories. Zo rehetra voatokana.
22/174
TAPITRAview
Ny tabilao etsy ambany dia manoritsoritra ny saha fanamafisam-peo rehetra misy amin'ity rafi-drafitra ity.
Tabilao - USB Device CDC Configuration Defines
Anaran'ny Configuration
SL_USBD_CDC_CL AS S_INSTANCE_QUANT ITY
SL_USBD_CDC_CONF IGURATION_QUANTI
TY
SL_USBD_CDC_DATA _INTERFACE_QUANTI
TY
Description
Isan'ny kilasy atokanao amin'ny alalan'ny antso ho an'ny asa
sl_usbd_cdc_acm_create_instance() .
Isan'ny fanamafisana. Ny ohatra kilasy ACM dia azo ampiana amin'ny config aaaa iray na maromaro amin'ny sl_usbd_cdc_acm_add_to_configuration() .
Total isan'ny fifandraisana data (DCI) ho an'ny asa CDC rehetra. Ny fiasan'ny CDC ACM tsirairay aaaaaaaaa dia nampidirina vi c ll amin'ny fiasa sl_usbd_cdc_acm_create_instance() dia hampiditra interf ce.
Sanda Default
2
1
2
Vidin'ny ACM
Ny zana-kilasy ACM dia manana fandrindrana fotoana fanangonana iray aseho amin'ny tabilao etsy ambany.
Tabilao - USB Device CDC ACM Configuration Define
Anaran'ny Configuration
SL_USBD_CDC_ACM_SUBCL ASS_I NSTANCE_QUANTITY
Description
Ampifanaraho ny isan'ny tranga subclass hozarainao amin'ny antso an-tariby
function sl_usbd_cdc_acm_create_instance() .
Sanda Default
2
Fitaovana USB CDC ACM Class Configurations
Ity fizarana ity dia mamaritra ny fandrindrana mifandraika amin'ny tranganà kilasy serial CDC ACM. Class Instance Creation line state interval call mgmt capabilities p_acm_callbacks
Famoronana ohatra kilasy
Mba hamoronana ohatra kilasy serial CDC ACM dia antsoy ny fiasa T a sl_usbd_cdc_acm_create_instance() . Ny asany dia misy tohan-kevitra fanamafisana telo, araka ny voalaza eto.
line_state_interval
Ity ny elanelam-potoana (amin'ny milisegondra) izay hitatitra ny fampandrenesana momba ny fanjakana an-dalana amin'ny mpampiantrano T aa. ny herin'ny roa (1, 2, 4, 8, 16, sns).
call_mgmt_capabilities
Call Management Capabilities bitmap. Ny sanda mety ho an'ny bitmap dia toy izao manaraka izao:
Sanda (bit)
SL_USBD_ACM_SERIAL_CALL_MGMT_DEV
SL_USBD_ACM_SERIAL_CALL_MGMT_DATA_CCI _DCI
Description
Ny fitaovana ihany no mitantana ny fitantanana ny antso. Ny fitaovana dia afaka mandefa/mandray fampahalalana momba ny fitantanana ny antso amin'ny alàlan'ny interface Class Data.
p_acm_callbacks
Copyright © 2025 Silicon Laboratories. Zo rehetra voatokana.
23/174
TAPITRAview
aa M aa p_acm_callbacks dia manondro ny firafitry ny karazana sl_usbd_cdc_acm_callbacks_t . Ny tanjony dia ny hanome ny CDC AC Cl ss andiana fiantsoana fiantsoana rehefa misy hetsika CDC ACM mitranga. Tsy ny antso rehetra no tsy maintsy atao ary misy pointer null ( NULL ) azo ampitaina ao amin'ny fiovaovan'ny firafitry ny antso rehefa tsy ilaina ny antso. Ny tabilao etsy ambany dia manoritsoritra ny saha fanamafisam-peo rehetra misy amin'ity rafi-drafitra ity.
Tabilao – sl_usbd_cdc_acm _callbacks_t Rafitra fanamboarana
eny an-tsaha
Description
.enable
Antsoina rehefa mandeha ny ohatra kilasy USB
soa aman-tsara.
.disable
Antsoina rehefa tsy mandeha ny ohatra kilasy USB.
.line_control_changed Antsoina rehefa voaray ny fanovana fanaraha-maso andalana.
line_coding_changed Antsoina rehefa misy fiovana kaody andalana voaray.
Fonction Signature
void app_usbd_cdc_acm_enable(uint8_t subclass_nbr);
void app_usbd_cdc_acm_disable(uint8_t subclass_nbr);
void app_usbd_cdc_acm_line_control_changed(uint8_t subclass_nbr, uint8_t event, uint8_t event_chngd); bool app_usbd_cdc_acm_line_coding_changed(uint8_t subclass_nbr, subclass_nbr, sl_usbd_cdc_acm_line_coding_t
*p_line_coding
Jereo ny fizarana fisoratana anarana Callback fampandrenesana hetsika ho an'ny fiasan'ny callback example.
USB Device CDC ACM Class Programming Guide
Ity fizarana ity dia manazava ny fomba fampiasana ny kilasin'ny CDC Abstract Control Model. Fanombohana ny Kilasy CDC ACM Fitaovana USB Fampidirana fitaovana USB Kilasy CDC ACM amin'ny fitaovanao mifandray amin'ny fampiasana ny Kilasy ACM CDC
Fanombohana ny Kilasy ACM CDC Device USB
Raha te hampiditra ny fiasan'ny kilasin'ny CDC ACM amin'ny fitaovanao ianao dia tsy maintsy atombokao aloha ny kilasin'ny CDC sy ny zana-kilasy ACM amin'ny alàlan'ny aac lling ny fiasa sl_usbd_cdc_init() sy sl_usbd_cdc_acm_init() . Ny ohatra etsy ambany dia mampiseho ny fomba fanaovana sl_usbd_cdc_init() sy sl_usbd_cdc_acm_init() amin'ny fampiasana rguments def ult.
Example - Fanombohana ny kilasy CDC ACM
sl_status_t status;
status = sl_usbd_cdc_init(); raha (status ! SL_STATUS_OK) { /* Nisy lesoka. Tokony ampiana eto ny fikarakarana lesoka. */
}
status = sl_usbd_cdc_acm_init(); raha (status ! SL_STATUS_OK) { /* Nisy lesoka. Tokony ampiana eto ny fikarakarana lesoka. */
}
Fanampiana fitaovana USB CDC ACM Class Instance amin'ny fitaovanao
Raha te hampiditra fampiasa amin'ny kilasin'ny CDC ACM amin'ny fitaovanao ianao, dia tsy maintsy mamorona ohatra iray ianao, avy eo ampidiro ao amin'ny firafitry ny fitaovanao.
Mamorona ohatra CDC ACM Class
Copyright © 2025 Silicon Laboratories. Zo rehetra voatokana.
24/174
TAPITRAview
Manampy ny Kilasy CDC ACM ao amin'ny fampiendrehana ny fitaovanao amin'ny fisoratana anarana antso fampandrenesana hetsika
Mamorona ohatra CDC ACM Class
Aa M aaa Mamorona CDC AC cl ss inst nce amin'ny alàlan'ny fametrahana ny fiasa sl_usbd_cdc_acm_create_instance() . T aaa M aaa ny ohatra etsy ambany dia mampiseho ny fomba hamoronana CDC AC cl ss inst nce vi sl_usbd_cdc_acm_create_instance() .
Example - Mamorona fiasa CDC ACM amin'ny alàlan'ny 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);
raha (status ! SL_STATUS_OK) { /* Nisy lesoka. Tokony ampiana eto ny fikarakarana lesoka. */
}
Manampy ny Kilasy ACM CDC amin'ny fanamboarana ny fitaovanao
Rehefa avy namorona ohatra iray amin'ny kilasy CDC ACM ianao dia azonao atao ny manampy azy amin'ny fanamafisana amin'ny fiantsoana ny fiasa
sl_usbd_cdc_acm_add_to_configuration() .
Ny ohatra etsy ambany dia mampiseho ny fomba c ll sl_usbd_cdc_acm_add_to_configuration() .
Example - Antsoy amin'ny USBD ACM sl_usbd_cdc_acm_add_to_configuration()
sl_status_t status;
status = sl_usbd_cdc_acm_add_to_configuration(subclass_nbr,
(1)
config_nbr_fs);
(2)
raha (status ! SL_STATUS_OK) {
/* Nisy hadisoana nitranga. Tokony ampiana eto ny fikarakarana lesoka. */
}
aaa (1) Cl ss isa ho dd amin'ny config naverin'ny sl_usbd_cdc_acm_create_instance() . (2) Laharan'ny fanamboarana (eto ampidirina amin'ny rindrankajy Full-Speed).
Misoratra anarana Callback fampahafantarana hetsika
Ny kilasin'ny CDC ACM Serial dia afaka mampahafantatra ny fampiharanao momba ny fanovana rehetra eo amin'ny fanaraha-maso na ny kaody amin'ny alàlan'ny fampandrenesana antso. Ny firafitry ny fiasan'ny antso an-tariby dia azo alefa ho tohan-kevitra mandritra ny famoronana ohatra ACM. Mariho fa tsy voatery ireo antso ireo. Ekample – CDC ACM Callbacks Registration dia mampiseho ny fampiasana ny asa fisoratana anarana callback. Ekample – CDC ACM Callbacks Implementation dia mampiseho example ny fampiharana ny callback functions.
Example – CDC ACM Callbacks Registration
Copyright © 2025 Silicon Laboratories. Zo rehetra voatokana.
25/174
TAPITRAview
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_cd_c_acmd_line;
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);
raha (status ! SL_STATUS_OK) { /* Nisy lesoka. Tokony ampiana eto ny fikarakarana lesoka. */ }
Example – Fampiharana ACM Callbacks CDC
bool app_usbd_cdc_acm_line_coding_changed (uint8_t
subclass_nbr,
sl_usbd_cdc_acm_line_coding_t *p_line_coding)
{
uint32_t baudrate_new;
uint8_t parity_new;
uint8_t stop_bits_new;
uint8_t data_bits_new;
/* TODO Ampiharo kaody andalana vaovao.*/ 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;
miverina (marina);
(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 Ampiharo fanaraha-maso andalana vaovao. */ rts_state = ((hetsika & SL_USBD_CDC_ACM_CTRL_RTS) ! 0) ? marina : diso; rts_state_changed = ((event_changed & SL_USBD_CDC_ACM_CTRL_RTS) ! 0) ? marina : diso; dtr_state = ((hetsika & SL_USBD_CDC_ACM_CTRL_DTR) ! 0) ? marina : diso; dtr_state_changed = ((event_changed & SL_USBD_CDC_ACM_CTRL_DTR) ! 0) ? marina : diso; brk_state = ((hetsika & SL_USBD_CDC_ACM_CTRL_BREAK) ! 0) ? marina : diso; brk_state_changed = ((event_changed & SL_USBD_CDC_ACM_CTRL_BREAK) ! 0) ? marina : diso;
}
(1) Zava-dehibe ny mamerina diso amin'ity fiasa ity raha toa ka tsy nahomby ny fampiharana ny kaody andalana. Raha tsy izany, miverena marina.
Fifandraisana amin'ny fampiasana ny Kilasy ACM CDC
Sata Serial
Line Coding Line Control
Copyright © 2025 Silicon Laboratories. Zo rehetra voatokana.
26/174
TAPITRAview
Line State Subclass Instance Communication
Sata Serial
Line Coding
Ny mpampiantrano USB dia mifehy ny kaody andalana (baud rate, parity, sns) amin'ny fitaovana CDC ACM. Raha ilaina, ny fampiharana dia tompon'andraikitra amin'ny fametrahana ny kaody andalana. Misy asa roa omena mba haka sy hametraka ny kaody andalana ankehitriny, araka ny voalaza ao amin'ny tabilao etsy ambany.
Tabilao - CDC ACM Line Coding Functions
asa
sl_usbd_cdc_acm_g sy t_line _co d ing ()
sl_usbd_cdc_acm_s sy t_line _co d ing ()
Description
Ny fampiharana anao dia afaka mahazo ny firafitry ny kaody andalana ankehitriny napetraka na avy amin'ny mpampiantrano miaraka amin'ny fangatahana SetLineCoding na miaraka amin'ny fiasa sl_usbd_cdc_acm_set_line_coding() .
Afaka mametraka ny kaody andalana ny fampiharanao. Ny mpampiantrano dia afaka maka ireo fanovana miaraka amin'ny fangatahana GetLineCoding.
Fanaraha-maso andalana
Ny mpampiantrano USB dia manara-maso ny fanaraha-maso ny tsipika (RTS sy DTR pin, famantarana tapaka, sy ny sisa) amin'ny fitaovana CDC ACM. Raha ilaina, ny fampiharana anao dia tompon'andraikitra amin'ny fampiharana ny fanaraha-maso ny tsipika. Misy asa omena mba hamerenana sy hametrahana ny fanaraha-maso ny tsipika ankehitriny, araka ny voalaza ao amin'ny tabilao etsy ambany.
Tabilao - CDC ACM Line Control Functions
asa
sl_usb d _cd c_acm_g e t_line _co ntr o l_state ()
Ny fampiharana anao dia afaka mahazo ny tsipika fanaraha-maso ankehitriny napetraky ny mpampiantrano miaraka amin'ny fangatahana SetControlLineState.
Fanjakana andalana
Ny mpampiantrano USB dia mamerina ny tsipika amin'ny fotoana maharitra. Ny fampiharanao dia tsy maintsy manavao ny toetry ny tsipika isaky ny miova. Raha ilaina, ny fampiharana anao dia tompon'andraikitra amin'ny fametrahana ny toetry ny tsipika. Fampiasa roa no omena mba hamerenana sy hametrahana ny fanaraha-maso ny tsipika ankehitriny, araka ny voalaza ao amin'ny tabilao etsy ambany.
Tabilao - CDC ACM Line S tate Functions
asa
sl_usb d _cd c_acm_se t _line _state _e ve nt()
sl_usbd_cdc_acm_cle ar_line _state _e ve nt()
Ny fampiharanao dia afaka mametraka hetsika rehetra momba ny fanjakana. Eo am-pametrahana ny toeran'ny tsipika dia alefa any amin'ny mpampiantrano ny famindrana IN interrupt mba hampahafantatra momba izany ny fiovan'ny toeran'ny tsipika.
Ny fampiharana dia afaka manafoana hetsika roa amin'ny fanjakana tsipika: mpitatitra fifindran'ny fiara sy mpitatitra mpitatitra. Ny hetsika hafa rehetra dia voadio amin'ny alàlan'ny subclass emulation serial ACM.
Subclass Instance Communication
Silicon Labs' ACM subclass dia manolotra ireto fiasa manaraka ireto hifandraisana amin'ny mpampiantrano. Raha mila fanazavana fanampiny momba ny masontsivana functions9 dia jereo ny references CDC ACM Subclass Functions.
Anaran'ny asa
sl_usb d _cd c_acm_ re ad () sl_usb d _cd c_acm_write ()
hetsika
Mandray angona avy amin'ny mpampiantrano amin'ny alàlan'ny teboka OUT betsaka. Manakana ity asa ity. Mandefa angona ho fampiantranoana amin'ny alàlan'ny teboka IN betsaka. Manakana ity asa ity.
Copyright © 2025 Silicon Laboratories. Zo rehetra voatokana.
27/174
TAPITRAview
Tabilao – CDC ACM Communication API Famintinana aaaaa sl_usbd_cdc_acm_read() nd sl_usbd_cdc_acm_write() manome fifandraisana synchronous, izay nosakanan'ny tr nsfer. Raha lazaina amin'ny teny hafa, amin'ny fiantsoana ny fiasa, ny fampiharana dia manakana mandra-pahavitan'ny famindrana misy na tsy misy hadisoana. Ny fe-potoana iray dia azo faritana mba hisorohana ny fiandrasana mandrakizay. Ny example eto ambany misy mamaky sy manoratra example izay mandray angona avy amin'ny mpampiantrano mampiasa ny faran'ny OUT betsaka ary mandefa angon-drakitra amin'ny mpampiantrano mampiasa ny teboka IN betsaka.
Lisitra - Mamaky sy manoratra andiany Example
__ALIGNED(4) uint8_t rx_buf[2];
__ALIGNED(4) uint8_t tx_buf[2];
uint32_t
xfer_len;
sl_status_t
sata;
status = sl_usbd_cdc_acm_read(subclass_nbr,
(1)
rx_buf,
(2)
2u,
0u,
(3)
&xfer_len);
raha (status ! SL_STATUS_OK) {
/* Nisy hadisoana nitranga. Tokony ampiana eto ny fikarakarana lesoka. */
}
status = sl_usbd_cdc_acm_write(subclass_nbr,
(1)
tx_buf,
(4)
2u,
0u,
(3)
&xfer_len);
raha (status ! SL_STATUS_OK) {
/* Nisy hadisoana nitranga. Tokony ampiana eto ny fikarakarana lesoka. */
}
T aaaaa M (1) izy cl ss inst nce number cre ted with sl_usbd_cdc_acm_create_instance() dia manome n intern l reference amin'ny AC subclass mba handefasana ny famindrana mankany amin'ny OUT na IN endpoint mety. (2) Ny fampiharanao dia tsy maintsy miantoka fa ny buffer omena amin'ny asa dia ampy mba handraisana ny angona rehetra. Raha tsy izany dia mety hitranga ny olana momba ny fampifanarahana. (3) Mba hialana amin'ny toe-javatra fanakanana tsy manam-petra, dia manendry fe-potoana iray aseho amin'ny milisegondra. Ny sandan'ny 809 dia mahatonga ny asa fampiharana hiandry mandrakizay. (4) Ny fampiharana dia manome ny buffer fandefasana natomboka.
Copyright © 2025 Silicon Laboratories. Zo rehetra voatokana.
28/174
TAPITRAview
TAPITRAview
Kilasy HID USB Device
USB Device HID Class Overview USB Device HID Class ilaina loharanon-karena avy amin'ny Core USB Device HID Class Configuration USB Device HID Class Programming Guide HID Manaova tatitra momba ny asa
Ity fizarana ity dia mamaritra ny kilasy Human Interface Device (HID) tohanan'ny Silicon Labs USB Device.
Ny kilasin'ny HID dia ahitana fitaovana ampiasain'ny olombelona hifehy ny fiasan'ny ordinatera, toy ny klavier, totozy, fitaovana fanondroana, ary fitaovana lalao.
Ny kilasin'ny HID dia azo ampiasaina amin'ny fitaovana mitambatra izay misy fanaraha-maso toy ny knobs, switch, bokotra ary sliders. Ho an'ny exampNy fanaraha-maso ny moana sy ny feo amin'ny headset audio dia fehezin'ny fiasan'ny HID an'ny headset. Ny kilasy HID dia afaka mifanakalo angona amin'ny tanjona rehetra amin'ny alàlan'ny fanaraha-maso sy ny fampitsaharana ny famindrana.
Ny kilasy HID dia iray amin'ireo kilasy USB tranainy indrindra sy be mpampiasa indrindra. Ny rafitra fiasan'ny mpampiantrano lehibe rehetra dia manome mpamily teratany hitantana ny fitaovana HID, izany no mahatonga ny fitaovana isan-karazany amin'ny mpivarotra miasa miaraka amin'ny kilasy HID. Ity kilasy ity dia ahitana karazana entana isan-karazany toy ny LED, audio, tactile feedback, sns.
Ny fampiharana HID dia manaraka ireto fepetra manaraka ireto:
Famaritana ny kilasin'ny fitaovana ho an'ny fitaovana entin'ny olombelona (HID), 6/27/01, Dikan-teny 1.11. Tabilao Fampiasana HID Bus Serial Universal, 10/28/2004, Version 1.12.
USB Device HID Class Overview
TAPITRAview
Ny fitaovana HID dia ahitana ireto teboka manaraka ireto:
Toerana fiafaran'ny IN sy OUT roa antsoina hoe teboka fiafarana default.
Ny tabilao etsy ambany dia mamaritra ny fampiasana ireo teboka samihafa:
Tabilao - Fampiasana teboka faran'ny kilasy HID
Fampiasana toromarika farany
Control IN
PO
avy
Interrupt IN
manapaka
avy
Deviceto-host
Host-to-fitaovana
Deviceto-host
Host-to-fitaovana
Fangatahana manara-penitra momba ny fanisana, fangatahana manokana amin'ny kilasy, ary fifandraisana angon-drakitra (Input, tatitra momba ny endri-javatra alefa any amin'ny mpampiantrano miaraka amin'ny fangatahana GET_REPORT). Fangatahana manara-penitra ho an'ny fanisana, fangatahana manokana amin'ny kilasy ary fifandraisana angon-drakitra (Famoahana, tatitra momba ny endri-javatra azo avy amin'ny mpampiantrano miaraka amin'ny fangatahana SET_REPORT). Fifandraisana data (tatitra fampidirana sy endri-javatra).
Fifandraisana data (tatitra Output sy Feature).
TATITRA
Copyright © 2025 Silicon Laboratories. Zo rehetra voatokana.
29/174
TAPITRAview
Mpampiantrano iray sy fitaovana HID mifanakalo angona mampiasa tatitra. Ny tatitra dia misy angon-drakitra voalamina manome fampahalalana momba ny fanaraha-maso sy ireo singa ara-batana hafa amin'ny fitaovana HID. Ny fanaraha-maso dia azon'ny mpampiasa atao ary miasa amin'ny lafiny iray amin'ilay fitaovana. Ho an'ny exampNy fanaraha-maso dia mety ho bokotra eo amin'ny totozy na klavier, switch, sns. Ny sampana hafa dia mampahafantatra ny mpampiasa ny toetry ny endri-javatra sasany. Ho an'ny exampNy LED eo amin'ny klavier dia mampandre ny mpampiasa momba ny hidin'ny caps, ny keypad nomerika mavitrika, sns.
Ny endrika sy ny fampiasana angona tatitra dia takatry ny mpampiantrano amin'ny famakafakana ny votoatin'ny mpamoritra tatitra. Ny famakafakana ny votoaty dia ataon'ny parser. Ny mpamoritra tatitra dia mamaritra ny angona omen'ny fanaraha-maso tsirairay amin'ny fitaovana iray. Izy io dia ahitana singa izay ampahany amin'ny fampahalalana momba ny fitaovana ary misy tovana 1-byte ary miovaova ny halavany.
data. Raha mila fanazavana fanampiny momba ny endrika singa dia jereo ny
1.11=, fizarana 5.6 sy 6.2.2.
Misy karazana zavatra telo lehibe:
Ny singa fototra dia mamaritra na manambatra karazana saha sasany.
Ny singa manerantany dia mamaritra ny toetran'ny angon-drakitra amin'ny fanaraha-maso.
Ny singa eo an-toerana dia mamaritra ny toetran'ny angona fanaraha-maso.
Ny karazana singa tsirairay dia voafaritra amin'ny fiasa samihafa. Azo antsoina koa hoe a tag. Ny fiasan'ny singa iray dia azo raisina ho toy ny singa kely izay an'ny iray amin'ireo karazana singa telo lehibe. Ny tabilao etsy ambany dia manome fanazavana fohyview ny zavatra 9s miasa amin'ny karazana singa tsirairay. Raha mila fanazavana feno momba ireo singa isaky ny sokajy dia jereo
Tabilao – Famariparitana momba ny asa ho an'ny karazana entana tsirairay
Item Karazana fiasa
Description
Main Input
Manoritsoritra fampahalalana momba ny angona omen'ny fanaraha-maso ara-batana iray na maromaro.
Main Output Manoritsoritra ny angona alefa amin'ny fitaovana.
Endri-javatra fototra
Manoritsoritra ny mombamomba ny fanefena fitaovana alefa na azo avy amin'ny fitaovana izay misy fiantraikany amin'ny fitondran-tenan'ny fitaovana na ny iray amin'ireo singa ao aminy.
Ireo singa mifandraika amin'ny Vondrona Fanangonana Main (Input, Output na Feature).
Famaranana lehibe amin'ny fanakatonana fanangonana. famoriam-bola
Copyright © 2025 Silicon Laboratories. Zo rehetra voatokana.
30/174
TAPITRAview
Item Karazana fiasa
Description
Pejy Fampiasana Maneran-tany
Mamantatra fiasa misy ao anatin'ilay fitaovana.
Global Logical dia mamaritra ny fetra ambany indrindra amin'ny soatoavina voalaza ao amin'ny singa lojika. Minimum
Global Logical dia mamaritra ny fetra ambony amin'ny soatoavina voalaza ao amin'ny singa lojika. Maximum
Global Physical dia mamaritra ny fetra ambany indrindra amin'ny soatoavina voalaza ao amin'ny singa ara-batana, izany hoe ny Minimum Minimum Lojika aseho amin'ny singa ara-batana.
Global Physical dia mamaritra ny fetra ambony amin'ny soatoavina voalaza ao amin'ny singa ara-batana, izany hoe ny Maximum Maximum Logical izay aseho amin'ny singa ara-batana.
Global Unit
Manondro ny isan'ny singa ao amin'ny base 10. Ny exponent dia manomboka amin'ny -8 ka hatramin'ny +7.
Exponent
Global Unit
Manondro ny singan'ny soatoavina voalaza. Ohatra, ny halavany, ny mass, ny mari-pana, sns.
Haben'ny tatitra maneran-tany
Manondro ny haben'ny sahan'ny tatitra amin'ny bitika.
Global Report ID Manondro ny prefix nampiana tatitra manokana.
Isan'ny tatitra maneran-tany
Manondro ny isan'ny saha angona ho an'ny singa iray.
Global Push
Mametraka ny dika mitovy amin'ny tabilaon'ny singa manerantany eo amin'ny antonta CPU.
Global Pop
Manolo ny latabatra toe-javatra amin'ny rafitra farany avy amin'ny stack.
Fampiasana eo an-toerana
Maneho fanondroana hanondroana Fampiasana manokana ao anatin'ny Pejy Fampiasana. Izy io dia manondro ireo mpivarotra naroson'ny fampiasana ho an'ny fanaraha-maso manokana na vondrona fanaraha-maso. Ny fampiasana dia manome fampahalalana ho an'ny mpamorona fampiharana momba ny tena fandrefesana ny fanaraha-maso.
Fampiasana eo an-toerana
Mamaritra ny fampiasana manomboka mifandray amin'ny laharana na bitmap.
Minimum
Fampiasana eo an-toerana
Mamaritra ny fampiasana farany mifandray amin'ny laharan-tariby na bitmap.
Maximum
Local Designator no mamaritra ny ampahany amin'ny vatana ampiasaina amin'ny fanaraha-maso. Ny fanondroana dia manondro anarana iray ao amin'ny Fizika
Fanondroana
descriptor.
Local Designator Mamaritra ny tondron'ny mpanondro fanombohana mifandray amina array na bitmap. Minimum
Local Designator Mamaritra ny tondron'ny mpanondro farany mifandray amin'ny array na bitmap. Maximum
Index String eo an-toerana
Fanondroana string ho an'ny mpamoritra String. Izy io dia mamela ny kofehy iray mifandray amin'ny singa na fanaraha-maso manokana.
Tady eo an-toerana
Manondro ny tondro tady voalohany rehefa manendry vondron'ny tady misesy hifehy ao anaty laharan-kira
Minitra na bitmap.
Local Local
String Maximum
Delimiter
Manondro ny tondro tady farany rehefa manendry andiana tady misesy hifehy ao anaty laharan-tariby na bitmap.
Mamaritra ny fiandohana na fiafaran'ny andian-javatra eo an-toerana.
Ny angona control9s dia tsy maintsy mamaritra ireto singa manaraka ireto farafahakeliny:
Fampidirana, Output na endri-javatra singa fototra Fampiasa singa eo an-toerana Pejy fampiasa Lojika eran-tany Lojika kely indrindra eran-tany Lojika Maximum Global singa Tatitra Habe maneran-tany
Copyright © 2025 Silicon Laboratories. Zo rehetra voatokana.
31/174
TAPITRAview
Report Count Global item Ny tabilao etsy ambany dia mampiseho ny sarin'ny votoatin'ny mpamoritra Mouse Report avy amin'ny fomba fijery mpizara HID mpampiantrano. Ny totozy dia manana bokotra telo (ankavia, havanana ary kodia). Ny code aseho ao amin'ny exampNy eto ambany dia fampiharana kaody mifanandrify amin'ity fanoritsoritana ny tatitra totozy ity.
Sary - Tatitra momba ny votoatin'ny Descriptor avy amin'ny Parser Host HID View
(1) Ny fiasan'ny singa Pejy Fampiasana dia mamaritra ny asa ankapoben'ilay fitaovana. Amin'ity example, ny fitaovana HID dia an'ny a
fanaraha-maso desktop ankapobeny.
(2) Ny Vondrona Fampiharana fanangonana Ireo singa fototra izay manana tanjona iraisana ary mety mahazatra ny fampiharana. Ao amin'ny kisary, ny vondrona dia ahitana singa telo Input Main. Ho an'ity fanangonana ity, ny soso-kevitra ampiasaina amin'ny fanaraha-maso dia totozy araka ny asehon'ny singa Fampiasana. (3) Ny famoriam-bola voatokana dia azo ampiasaina mba hanomezana antsipiriany bebe kokoa momba ny fampiasana fanaraha-maso tokana na vondrona fanaraha-maso amin'ny fampiharana. Amin'ity example, ny Collection Physique, izay apetraka ao amin'ny Application Collection, dia ahitana singa telo mitovy amin'ny fampidirana ny Application Collection. Ny Collection Physical dia ampiasaina amin'ny fitambaran'ny angon-drakitra izay maneho ireo teboka angonina amin'ny teboka geometrika iray. Ao amin'ny example, ny soso-kevitra ny fampiasana dia tondro araka ny tondroin'ny zavatra Fampiasana. Eto ny fampiasana fanondro dia manondro ny toeran'ny totozy ary ny rindrambaikon'ny rafitra dia handika ny fandrindrana ny totozy amin'ny fihetsehan'ny cursor efijery. (4) Azo atao ihany koa ny pejy fampiasana nested ary manome antsipiriany bebe kokoa momba ny lafiny iray ao anatin'ny fiasa ankapoben'ilay fitaovana. Amin'ity tranga ity, ny singa Inputs roa dia atambatra ary mifanaraka amin'ny bokotra amin'ny totozy. Ny singa iray Input dia mamaritra ny bokotra telo amin'ny totozy (ankavanana, ankavia ary kodia) amin'ny lafin'ny sahan'ny angona ho an'ilay entana (Report Count item), ny haben'ny sahan'ny angona (Report Size item) ary ny sanda mety ho an'ny sahan'ny data tsirairay (Fampiasana kely indrindra sy ambony indrindra, singa kely indrindra sy ambony indrindra). Ny singa Input hafa dia 13-bit tsy tapaka mamela ny angon-drakitra tatitra Input hampifanaraka amin'ny sisin-tany iray. Ity singa fampidirana ity dia ampiasaina amin'ny tanjona padding ihany. (5) Pejy fampiasa amin'ny akany iray hafa manondro ny fanaraha-maso desktop generic dia voafaritra ho an'ny fandrindrana ny toeran'ny totozy. Ho an'ity pejy fampiasana ity, ny singa Input dia mamaritra ny saha data mifandraika amin'ny x- sy y-axis araka ny voalazan'ny fampiasana roa.
entana.
Aorian'ny famakafakana ny votoatin'ny mpamaritra tatitra momba ny totozy teo aloha, ny mpizara HID host9s dia afaka mandika ny angon-drakitra tatitra momba ny Input nalefan'ny fitaovana miaraka amin'ny fifindrana IN interrupt na ho valin'ny fangatahana GET_REPORT. Ny angon-drakitra momba ny tatitra fampidirana mifanaraka amin'ny mpamaritra tatitra amin'ny totozy aseho amin'ny sary - Ny votoatin'ny tatitra momba ny tatitra avy amin'ny Parser HID mpampiantrano View is
Copyright © 2025 Silicon Laboratories. Zo rehetra voatokana.
32/174
TAPITRAview
aseho eo amin'ny tabilao etsy ambany. Ny totalin'ny angona tatitra dia 4 bytes. Ny karazana tatitra samihafa dia azo alefa amin'ny teboka iray ihany. Mba hanavahana ireo karazana tatitra isan-karazany dia asiana prefix ID tatitra 1 byte amin'ny tatitra angona. Raha nisy tatitra ID nampiasaina tao amin'ny exampNy tatitry ny totozy, ny totalin'ny angon-drakitra tatitra dia ho 5 bytes.
Tabilao - Tatitra fampidirana nalefa tany amin'ny mpampiantrano ary mifanaraka amin'ny toetry ny totozy 3 bokotra
Bit Offset
0 1 2 3 16 24
Isan'ny bit 1 1 1 13 8 8
Boky fanoritsoritana 1 (bokotra havia). Bokotra 2 (bokotra havanana). Button 3 (bokotra kodiarana). Tsy ampiasaina. Toerana eo amin'ny axe X. Toerana eo amin'ny axe Y.
Ny fanoritsoritana ara-batana dia manondro ny ampahany na ampahany amin'ny vatana natao hampavitrika fanaraha-maso na fanaraha-maso. Mety hampiasa an'io fampahafantarana io ny fampiharana iray hanisy fampiasa amin'ny fifehezana fitaovana iray. Famaritana ara-batana dia mpamari-toetra manokana amin'ny kilasy ary ny ankamaroan'ny fitaovana dia manana tombony kely amin'ny fampiasana azy. Jereo ny
Fitaovana USB HID Class ilaina loharanon-karena avy amin'ny Core
Isaky ny manampy ohatra iray kilasy HID amin'ny fanamafisana USB ianao amin'ny alàlan'ny antso amin'ny fiasa sl_usbd_hid_add_to_configuration() , ireto loharano manaraka ireto dia hatokana avy amin'ny fototra.
loharano
Interface Interfaces mifanolotra Vondrona interface
Hatrany
1 1 1 (2 raha alefa ny teboka faran'ny OUT) 0
Mariho fa ireo isa ireo dia isaky ny configuration. Rehefa manangana ny SL_USBD_INTERFACE_QUANTITY , SL_USBD_ALT_INTERFACE_QUANTITY , SL_USBD_INTERFACE_GROUP_QUANTITY ary SL_USBD_DESCRIPTOR_QUANTITY ianao, dia aza adino ny mandinika ny isan'ny config ho an'ny kilasy. Ho an'ny sandan'ny fanefena SL_USBD_OPEN_ENDPOINTS_QUANTITY, satria tsy misokatra afa-tsy rehefa misy config no napetraky ny mpampiantrano, dia mila mandinika fotsiny ny isan'ny teboka ilaina ho an'ny kilasy iray ianao.
USB Device HID Class Configuration
Vondrona roa amin'ny mari-pamantarana fanamafisana no ampiasaina hanamboarana ny kilasy HID:
USB Device HID Class Application-Specific Configurations USB Device HID Class Class Configurations
USB Device HID Class Application-Specific Configurations
Voalohany, ampiasao ny maody kilasy HID fitaovana USB Silicon Labs, amboary ny famaritana ny fotoana fanangonana HID araka ny filanao. Atambatra ao anaty lohapejy sl_usbd_core_config.h izy ireo file eo ambanin'ny fizarana HID. Azo zaraina ho fizarana roa izy ireo, ny fanamafisana ny habetsahana sy ny fandrindrana ny asa HID. Ny tanjon'ny fanamafisana ny habetsahana dia ny fampahafantarana ny maody fitaovana USB momba ny isan'ny zavatra USB HID atokana.
Ny tabilao etsy ambany dia mamaritra ny famaritana ny configuration tsirairay.
Tabilao – USB Device HID Configuration mamaritra
Copyright © 2025 Silicon Laboratories. Zo rehetra voatokana.
33/174
TAPITRAview
Anaran'ny Configuration
SL_USBD_HID_CL ASS_I NSTANCE_QUANTITY
SL_USBD_HID_CONFIG URATION_QUANTITY
SL_USBD_HID_REPORT_ ID_QUANTITY
SL_USBD_HID_PUSH_P OP_ITEM_QUANTITY
SL_USBD_HID_TIMER_T ASK_STACK_SIZE
SL_USBD_HID_TIMER_T ASK_PRIORITY
Description
Isan'ny kilasy atokanao amin'ny alalan'ny antso ho an'ny asa
sl_usbd_hid_create_instance() .
Isan'ny fanamafisana. Ny ohatra kilasy HID dia azo ampiana amin'ny config aaaa iray na maromaro amin'ny fonction sl_usbd_hid_add_to_configuration() . Ampifanaraho ny isan'ny isan'ny tatitra homena.
Ampifanaraho ny isan'ny singa Push/Pop hatokana.
Ny asa fameram-potoana dia mitantana ny hetsika HID mifototra amin'ny fameram-potoana rehetra. Ity config ity dia ahafahanao mametraka ny haben'ny stack (amin'ny isan'ny bytes). Laharam-pahamehana amin'ny asa HID. ny azy dia laharam-pahamehana CMSIS-RTOS2.
Sanda Default
2 1 2 0 2048
osPriorityHigh
USB Device HID Class Configurations Class Instance Creation subclass
protocol country_code
interval_in sy interval_out p_hid_callback HID Class Report Descriptor ExampIty fizarana ity dia mamaritra ny fanamafisana mifandraika amin'ny ohatra kilasy HID.
Famoronana ohatra kilasy
Ny famoronana ohatra kilasy HID dia atao amin'ny fiantsoana ny fonction aaa sl_usbd_hid_create_instance() , izay manapaka ny tohan-kevitry ny configuration izay voalaza etsy ambany.
zana-kilasy
Code ny subclass HID. Ny sanda azo atao dia:
SL_USBD_HID_SUBCL ASS_TSY MISY SL_USBD_HID_SUBCL ASS_BOOT
Ny fitaovana HID izay mampiasa ny subclass boot dia tsy maintsy mampiasa endrika tatitra mahazatra. Raha mila fanazavana fanampiny momba ny kaody zana-kilasy dia jereo ny fizarana 4.2 amin'ny fanavaozana ny famaritana HID 1.11.
fifanarahana
Protocol ampiasain'ny fitaovana HID. Ny sanda azo atao dia:
SL_USBD_HID_PROTOCOL_TSY MISY SL_USBD_HID_PROTOCOL_KBD SL_USBD_HID_PROTOCOL_MOUSE
Raha totozy ny fiasanao HID dia tokony apetraka amin'ny aa SL_USBD_HID_PROTOCOL_MOUSE ny protocol. Raha keybor rd io dia tokony apetraka amin'ny SL_USBD_HID_PROTOCOL_KBD . raha tsy izany dia tokony apetraka amin'ny SL_USBD_HID_PROTOCOL_NONE ny protocol. Raha mila fanazavana fanampiny momba ny kaody subclass dia jereo ny fizarana 4.3 amin'ny fanavaozana ny fanondroana HID 1.11.
country_code
ID ny kaodim-pirenena. Ny sanda azo atao dia:
SL_USBD_HID_COUNTRY_CODE_TSY_Tohanana
Copyright © 2025 Silicon Laboratories. Zo rehetra voatokana.
34/174
TAPITRAview
SL_USBD_HID_CODE_ARABIC SL_USBD_HID_COUNTRY_CODE_BELGIAN SL_USBD_HID_COUNTRY_CODE_CANADIAN_BILINGUAL SL_USBD_HID_COUNTRY_CODE_CANADIAN_FRENCH SL_USBD_HID_COUNTRY_CODEBLCZE SL_USBD_HID_CODE_DANISH SL_USBD_HID_COUNTRY_CODE_FINNISH SL_USBD_HID_COUNTRY_CODE_FRENCH SL_USBD_HID_COUNTRY_CODE_GERMAN SL_USBD_HID_COUNTRY_CODE_GREEK SL_USBD_HID_CODE_HUNGARY SL_USBD_HID_COUNTRY_CODE_INTERNATIONAL SL_USBD_HID_COUNTRY_CODE_ITALIAN SL_USBD_HID_COUNTRY_CODE_JAPAN_KATAKANA SL_USBD_HID_COUNTRY_CODE_KOREA SL_USBD_HID_CODE_NETHERL ANDS_DUTCH SL_USBD_HID_COUNTRY_CODE_NORWEGIAN SL_USBD_HID_COUNTRY_CODE_PERSIAN_FARSI SL_USBD_HID_COUNTRY_CODE_POL SY SL_USBD_HID_PORTUG_SECODE SL_USBD_HID_CODE_RUSSIA SL_USBD_HID_COUNTRY_CODE_SLOVAKIA SL_USBD_HID_COUNTRY_CODE_SPANISH SL_USBD_HID_COUNTRY_CODE_SWEDISH SL_USBD_HID_COUNTRY_CODE_SWISS_FRENCH_HID_CODE_SWISS_FRENCH SL_USBD_HID_CODE_SWITZERL SY SL_USBD_HID_COUNTRY_CODE_TAIWAN SL_USBD_HID_COUNTRY_CODE_TURKISH_Q SL_USBD_HID_COUNTRY_CODE_UK SL_USBD_HID_COUNTRY_CODE_US SL_USBD_CODE_US SL_USBD_HID SL_USBD_HID_COUNTRY_CODE_TURKISH_F
Ny kaody firenena dia mamaritra ny firenena misy ny fitaovana. Ny ankamaroan'ny fitaovana dia tsy eo an-toerana ary noho izany dia SL_USBD_HID_COUNTRY_CODE_NOT_SUPPORTED (0) ity aaaav ity. Na izany aza, ny kibay dia mampiasa ny saha mba hanondroana ny fitenin'ny kapila fanalahidy.
Raha mila fanazavana fanampiny momba ny kaodim-pirenena dia jereo ny fizarana 6.2.1 amin'ny fanavaozana ny fanondroana HID 1.11.
interval_in sy interval_out
interval_in sy interval_out dia maneho ny elanelam-potoanan'ny fandatsaham-bato amin'ny teboka fiafaran'ny IN interrupt sy ny teboka fiafaran'ny OUT.
Izany dia maneho ny elanelan'ny fandatsaham-bato amin'ny teboka farany, amin'ny milisegondra. Ny fametrahana an'io sanda io dia miankina amin'ny hamaroan'ny fitaovanao mety hiteraka tatitra vaovao ho an'ny mpampiantrano. Ohatra, raha misy tatitra mivoaka isaky ny 16 milisegondra, dia tokony ho 16 na latsaka ny elanelana.
Ny sanda dia tokony ho hery 2 (1, 2, 4, 8, 16, sns.).
Tsy raharahaina ny interval_out v lue raha apetraka ho marina ny ctrl_rd_en.
p_hid_callback
aaaa p_hid_callback dia manondro ny firafitry ny karazana sl_usbd_hid_callbacks_t . Ny tanjony dia ny hanome ny HID Cl ss andiana antso an-tariby antsoina rehefa misy hetsika HID.
Copyright © 2025 Silicon Laboratories. Zo rehetra voatokana.
35/174
TAPITRAview
Tsy ny antso rehetra no tsy maintsy atao ary misy pointer null ( NULL ) azo ampitaina ao amin'ny fiovaovan'ny firafitry ny antso rehefa tsy ilaina ny antso. Ny tabilao etsy ambany dia manoritsoritra ny saha fanamafisam-peo rehetra misy amin'ity rafi-drafitra ity.
Tabilao – sl_usbd_hid_callbacks_t Firafitry ny Configuration
eny an-tsaha
Description
Fonction Signature
.enable .disable .get_report_desc
.get_phy_desc
.set_output_report .get_feature_report .set_feature_report
Antsoina rehefa mandeha tsara ny ohatra kilasy USB. Antsoina rehefa tsy mandeha ny ohatra kilasy USB.
Nantsoina nandritra ny famoronana Instance HID mba handefasana mpamoritra tatitra anao. Ho an'ny fiasanao HID tsirairay dia tsy maintsy manome famaritana tatitra ianao. Ny mpamaritra tatitra dia manondro amin'ny mpampiantrano ny fomba tokony handinihana ny tatitra ara-potoana izay halefan'ny fitaovana. Mety ho sarotra ny fanoratana ny famaritana ny tatitrao manokana, ary izany no mahatonga ny loharano sasany hanampy. Io no hany asa tsy maintsy atao antso. Nantsoina nandritra ny famoronana Instance HID mba handefasana ny famaritana ara-batana anao. Ny famaritana ara-batana dia mpamaritra izay manome fampahalalana momba ny ampahany manokana na ampahany amin'ny vatan'olombelona izay manetsika fanaraha-maso na fanaraha-maso. Raha mila fanazavana fanampiny momba ny famaritana ara-batana dia jereo ny fizarana 6.2.3 amin'ny fanavaozana fanondroana HID 1.11. Ny famaritana ara-batana dia azo atao ary matetika tsy raharahaina. Ny buffer nandalo teto dia azo apetraka amin'ny NULL ary ny halavany dia apetraka amin'ny 0. Antsoina rehefa mametraka tatitra ny mpampiantrano araka ny voalaza ao amin'ny famaritana ny tatitrao (rehefa mandefa tatitra).
Antsoina rehefa mangataka tatitra momba ny endri-javatra ny mpampiantrano araka ny voalaza ao amin'ny famaritana ny tatitrao.
Antsoina rehefa mametraka tatitra momba ny endri-javatra ny mpampiantrano araka ny voalaza ao amin'ny famaritana ny tatitrao.
void app_usbd_hid_enable(uint8_t class_nbr); void app_usbd_hid_disable(uint8_t class_nbr); void app_usbd_hid_get_report_desc(uint8_t class_nbr, const uint8_t *p_report_ptr, uint16_tp_report_len);
void app_usbd_hid_get_phy_desc(uint8_t class_nbr, const uint8_t *p_report_ptr, uint16_tp_report_len);
void app_usbd_hid_set_output_report(uint8_t class_nbr, uint8_t report_id, uint8_t *p_report_buf, uint16_t report_len); void app_usbd_hid_get_feature_report(uint8_t class_nbr, uint8_t report_id, uint8_t *p_report_buf, uint16_t report_len); void app_usbd_hid_set_feature_report(uint8_t class_nbr, uint8_t report_id, uint8_t *p_report_buf, uint16_t report_len);
.get_protocol
Maka ny protocol active ankehitriny.
void app_usbd_hid_get_protocol(uint8_t class_nbr, uint8_t *p_protocol);
.set_protocol
Mametraka protocole mavitrika ankehitriny.
void app_usbd_hid_set_protocol(uint8_t class_nbr, uint8_t protocol);
HID Class Report Descriptor Example
Kilasy HID Silicon Labsample application manome example of a report descriptor for a simple mouse. Ny example eto ambany dia mampiseho mpamoritra tatitra momba ny totozy.
Example – Mouse Report Descriptor
static 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. Zo rehetra voatokana.
36/174
TAPITRAview
SL_USBD_HID_MAIN_COLLECTION +1, SL_USBD_HID_COLLECTION_APPLICATION, (4)
SL_USBD_HID_LOCAL_USAGE +1, SL_USBD_HID_CP_POINTER, (5)
SL_USBD_HID_MAIN_COLLECTION +1, SL_USBD_HID_COLLECTION_FYSICAL,(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_MAIN_VARIABLE |
SL_USBD_HID_MAIN_ABSOLUTE,
SL_USBD_HID_GLOBAL_REPORT_COUNT +1,0 01,(8)
SL_USBD_HID_GLOBAL_REPORT_SIZE +1,0 0D,
SL_USBD_HID_MAIN_INPUT +1, SL_USBD_HID_MAIN_CONSTANT, (9)
SL_USBD_HID_GLOBAL_USAGE_PAGE +1, SL_USBD_HID_USAGE_PAGE_GENERIC_DESKTOP_CONTROLS,
SL_USBD_HID_LOCAL_USAGE +1, SL_USBD_HID_DV_X,
SL_USBD_HID_LOCAL_USAGE +1, SL_USBD_HID_DV_Y,
SL_USBD_HID_GLOBAL_LOG_MIN +1,0 81,
SL_USBD_HID_GLOBAL_LOG_MAX +1,0 7F,
SL_USBD_HID_GLOBAL_REPORT_SIZE +1,0 08,
SL_USBD_HID_GLOBAL_REPORT_COUNT +1,0 02,
SL_USBD_HID_MAIN_INPUT +1, SL_USBD_HID_MAIN_DATA |
SL_USBD_HID_MAIN_VARIABLE |
SL_USBD_HID_MAIN_RELATIVE,
SL_USBD_HID_MAIN_ENDCOLLECTION, (10)
SL_USBD_HID_MAIN_ENDCOLLECTION
(11)};
(1) Ny tabilao maneho ny fanoritsoritana ny tatitra totozy dia natomboka tamin'ny fomba izay mifanaraka amin'ny singa fohy ny andalana tsirairay. Ity farany dia miforona avy amin'ny prefix 1-byte sy data 1-byte. Jereo ny viewed by a host HID parser in Figure – Report Descriptor Content from a Host HID Parser View.
(2) Ny Pejy Fampiasana Desktop Generic dia ampiasaina.
(3) Ao anatin'ny Pejy Fampiasana Desktop Generic, ny fampiasana tag milaza fa ny vondrona fanaraha-maso dia natao hifehezana totozy. Ny fanangonana totozy mazàna dia misy famaky roa (X sy Y) ary bokotra iray, roa, na telo.
(4) Manomboka ny fanangonana totozy.
(5) Ao anatin'ny fanangonana totozy, fampiasana tag manolo-kevitra manokana kokoa fa ny fanaraha-maso ny totozy dia an'ny fanangonana fanondro. Ny fanangonana pointer dia fitambarana famaky izay miteraka sanda hitarihana, hanondro, na hanondroana ny fikasan'ny mpampiasa amin'ny fampiharana iray.
(6) Manomboka ny fanangonana tondro.
(7) Ny Pejy Fampiasana Bokotra dia mamaritra singa fampidirana misy saha 1-bit telo. Ny saha 1-bit tsirairay dia maneho ny bokotra mouse9s 1, 2 ary 3 ary afaka mamerina sanda 0 na 1.
(8) Ny singa fampidirana ho an'ny pejin'ny fampiasana bokotra dia voapetaka amin'ny bits 13 hafa.
(9) Pejy Fampiasana Desktop Generic iray hafa dia aseho amin'ny famaritana ny toeran'ny totozy miaraka amin'ny famaky X sy Y. Ny singa Input dia ahitana saha 8-bit roa izay mety eo anelanelan'ny -127 sy 127 ny sandany.
(10) Nakatona ny fanangonana fanondro.
(11) Nakatona ny fanangonana totozy.
Pejy HID USB.org
Copyright © 2025 Silicon Laboratories. Zo rehetra voatokana.
37/174
TAPITRAview
Ny USB Implementers Forum (USB-IF) dia manome fitaovana antsoina hoe "HID Descriptor Tool" miaraka amin'ny fampahalalana hafa momba ny format descriptor tatitra. Jereo nyhttp://www.usb.org/developers/hidpage/ raha mila fanazavana fanampiny.
USB Device HID Class Programming Guide
Ity fizarana ity dia manazava ny fomba fampiasana ny kilasy HID. Fanombohana ny Kilasy HID Fitaovana USB Manampy Ohatra Kilasy HID USB amin'ny fitaovanao mifandray amin'ny Kilasy HID Device USB
Fanombohana ny kilasy USB Device HID
Raha te hampiditra fonctionnaire HID Class amin'ny fitaovanao dia tsy maintsy manomboka ny kilasy aloha ianao amin'ny fiantsoana ny fiasa sl_usbd_hid_init() . Ny exampNy eto ambany dia mampiseho ny fomba fiantsoana sl_usbd_hid_init() amin'ny fampiasana arguments default. Raha mila fanazavana fanampiny momba ny tohan-kevitry ny fandrindrana ampitaina amin'ny sl_usbd_hid_init() , jereo ny USB Device HID Class Application Specific Configurations.
Example – Miantso sl_usbd_hid_init()
sl_status_t status;
status = sl_usbd_hid_init(); raha (status ! SL_STATUS_OK) { /* Nisy lesoka. Tokony ampiana eto ny fikarakarana lesoka. */
}
Manampy ohatra iray amin'ny kilasy HID USB Device amin'ny fitaovanao
Raha te hampiditra fiasana kilasy HID amin'ny fitaovanao ianao dia tsy maintsy mamorona ohatra iray, avy eo ampidiro ao amin'ny firafitry ny fitaovanao.
Mamorona ohatra kilasy HID
Mamorona ohatra kilasy HID amin'ny fiantsoana ny fiasa sl_usbd_hid_create_instance() . Ny exampNy eto ambany dia mampiseho ny fomba hamoronana asa totozy tsotra amin'ny alàlan'ny sl_usbd_hid_create_instance() amin'ny fampiasana tohan-kevitra default. Raha mila fanazavana fanampiny momba ny tohan-kevitry ny fanamafisana alefa any amin'ny sl_usbd_hid_create_instance() , jereo ny USB Device HID Class Configurations.
Example - Manampy asa totozy amin'ny alàlan'ny sl_usbd_hid_create_instance()
Copyright © 2025 Silicon Laboratories. Zo rehetra voatokana.
38/174
TAPITRAview
/* Tsy miova maneran-tany. */ static const uint8_t app_usbd_hid_mouse_report_desc[] = {
SL_USBD_HID_GLOBAL_USAGE_PAGE + 1, SL_USBD_HID_USAGE_PAGE_GENERIC_DESKTOP_CONTROLS, SL_USBD_HID_LOCAL_USAGE + 1, SL_USBD_HID_CA_MOUSE, SL_USBD_HID_MAIN_1, SL_USBD_HID_MAIN_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_PHYSICAL, SL_GLOBAL_HID 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 000 + 1, 0 000 1, 0 01, SL_USBD_HID_GLOBAL_REPORT_COUNT + 1, 0 03, SL_USBD_HID_GLOBAL_REPORT_SIZE + 1, 0 01, SL_USBD_HID_MAIN_INPUT + 1, SL_USBD_HID_MAIN_DATA | SL_USBD_HID_MAIN_VARIABLE | SL_USBD_HID_MAIN_ABSOLUTE, SL_USBD_HID_GLOBAL_REPORT_COUNT + 1, 0 01, SL_USBD_HID_GLOBAL_REPORT_SIZE + 1, 0 0D, SL_USBD_HID_MAIN_INPUT + 1, SL_USBD_CONHID 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_BDLOCAL_US_AGE, SL_USBD_HID_BDLOCAL_USAGE + 1 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 + 01, COUNT 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 };
/* Variable local.*/ uint8_t class_nbr; sl_status_t status;
sl_usbd_hid_callbacks_t app_usbd_hid_callbacks = { NULL, NULL, app_usbd_hid_get_report_desc, NULL, NULL, NULL, NULL, NULL, NULL };
void app_usbd_hid_get_report_desc(uint8_t class_nbr, const uint8_t **p_report_ptr, uint16_t *p_report_len)
{(void)class_nbr;
*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_Mouse_Mouse), 2uHID marina, &app_usbd_hid_callbacks, &class_nbr);
Copyright © 2025 Silicon Laboratories. Zo rehetra voatokana.
39/174
TAPITRAview
/* Nisy hadisoana nitranga. Tokony ampiana eto ny fikarakarana lesoka. */}
Manampy ny Kilasy HID amin'ny Configuration (s) an'ny fitaovanao Rehefa avy namorona ohatra kilasy HID ianao dia azonao atao ny manampy azy amin'ny fanamafisana amin'ny fiantsoana ny fiasa.
sl_usbd_hid_add_to_configuration() .
Ny exampNy eto ambany dia mampiseho ny fomba fiantsoana sl_usbd_hid_add_to_configuration() .
Example – Miantso sl_usbd_hid_add_to_configuration()
sl_status_t status;
sl_usbd_hid_add_to_configuration(class_nbr,
(1)
config_nbr_fs); (2)
raha (status ! SL_STATUS_OK) {
/* Nisy hadisoana nitranga. Tokony ampiana eto ny fikarakarana lesoka. */
}
(1) Laharan'ny kilasy hanampiana amin'ny fanitsiana naverin'ny sl_usbd_hid_create_instance(). (2) Laharan'ny fanamboarana (eto ampidirina amin'ny rindrankajy Full-Speed).
Fifandraisana amin'ny alalan'ny USB Device HID Class
Class Instance Communications Synchronous Communication Class Instance Communication Ny kilasy HID dia manolotra ireto fiasa manaraka ireto mba hifandraisana amin'ny mpampiantrano.
Tabilao – HID Communication API Famintinana
Anaran'ny asa
sl_usb d _hid _ re ad _sy nc() sl_usb d _hid _write _sy nc()
Operation Mandray angona avy amin'ny mpampiantrano amin'ny alàlan'ny fiafaran'ny OUT. Manakana ity asa ity. Mandefa angona amin'ny mpampiantrano amin'ny alàlan'ny interrupt IN endpoint. Manakana ity asa ity.
Fifandraisana synchronous Ny fifandraisana synchronous dia midika fa manakana ny fifindrana. Amin'ny fiantsoana fampiasa dia manakana ny fampiharana mandra-pahavitan'ny famindrana misy na tsy misy hadisoana. Ny fe-potoana iray dia azo faritana mba hisorohana ny fiandrasana mandrakizay. Ny exampNy eto ambany dia mampiseho mamaky sy manoratra izay mandray angona avy amin'ny mpampiantrano amin'ny alàlan'ny fiafaran'ny OUT interrupt ary mandefa ny angona amin'ny mpampiantrano amin'ny alàlan'ny teboka IN interrupt.
Example - Synchronous HID Mamaky sy manoratra
__ALIGNED(4) uint8_t rx_buf[2];
__ALIGNED(4) uint8_t tx_buf[2];
uint32_t
xfer_len;
sl_status_t
sata;
status = sl_usbd_hid_read_sync(class_nbr,
(1)
(void *)rx_buf,
(2)
2u,
0u,
(3)
&xfer_len);
raha (status ! SL_STATUS_OK) {
/* Nisy hadisoana nitranga. Tokony ampiana eto ny fikarakarana lesoka. */
}
Copyright © 2025 Silicon Laboratories. Zo rehetra voatokana.
40/174
TAPITRAview
status =sl_usbd_hid_read_sync(class_nbr,(1)(void *)rx_buf,(2)2u,0u,(3)&xfer_len);if(status ! SL_STATUS_OK){/* Nisy lesoka. Tokony ampiana eto ny fikarakarana lesoka. */}
status =sl_usbd_hid_write_sync(class_nbr,(1)(void *)tx_buf,(4)2u,0u,(3)&xfer_len);if(status ! SL_STATUS_OK){/* Nisy lesoka. Tokony ampiana eto ny fikarakarana lesoka. */}
(1) Ny laharan'ny ohatra kilasy noforonina avy amin'ny sl_usbd_hid_create_instance() dia manome reference anatiny ho an'ny kilasy HID mba handefasana ny famindrana mankany amin'ny faran'ny OUT na IN.
(2) Ny fampiharana dia tsy maintsy miantoka fa ny buffer omena amin'ny asa dia ampy mba handraisana ny angon-drakitra rehetra. Raha tsy izany dia mety hitranga ny olana momba ny fampifanarahana. Ao anatiny, ny asa famakiana dia atao miaraka amin'ny teboka fiafaran'ny fanaraha-maso na amin'ny teboka fiafaran'ny fiatoana, miankina amin'ny sainam-pamakiana fanaraha-maso napetraka rehefa miantso sl_usbd_hid_create_instance() .
(3) Mba hialana amin'ny toe-javatra fanakanana tsy manam-petra, dia azo faritana ny fotoana fiatoana aseho amin'ny milisegondra. Ny sandan'ny 809 dia mahatonga ny asa fampiharana hiandry mandrakizay.
(4) Ny fampiharana dia manome ny buffer fandefasana natomboka.
Tatitra momba ny tatitra ara-potoana HID
Mba hamonjena ny bandwidth, ny mpampiantrano dia afaka mampangina ny tatitra avy amin'ny fiafaran'ny IN interrupt amin'ny famerana ny fatran'ny tatitra. Mba hanaovana izany dia tsy maintsy mandefa ny fangatahana SET_IDLE ny mpampiantrano. Ny kilasin'ny HID napetraky ny Silicon Labs dia misy asa anatiny izay manaja ny famerana matetika ny tatitra izay azonao ampiharina amin'ny tatitra fampidirana iray na maromaro. Ny sarin'ny Tatitry ny Tatitry ny Tatitra ara-potoana dia mampiseho ny fampandehanana ny asa tatitry ny tatitry ny fotoana.
Sary - Asa tatitra momba ny fampidirana tsindraindray
(1) Ny fitaovana dia mahazo fangatahana SET_IDLE. Ity fangatahana ity dia mamaritra fe-potoana tsy miasa ho an'ny ID tatitra nomena. Raha mila fanazavana fanampiny momba ny fangatahana SET_IDLE dia jereo
(2) Ny rafitra ID momba ny tatitra (atokana mandritra ny dingana fanombohana kilasy HID) dia havaozina miaraka amin'ny faharetan'ny tsy miasa. Atomboka amin'ny sandan'ny faharetan'ny tsy miasa ny kaontera maharitra maharitra. Ny firafitry ny ID tatitra dia ampidirina any amin'ny faran'ny lisitra mifamatotra misy rafitra ID momba ny tatitra fampidirana. Ny sandan'ny faharetan'ny idle dia aseho amin'ny vondrona 4-ms izay manome ny salan'isa 4 hatramin'ny 1020 ms.
Copyright © 2025 Silicon Laboratories. Zo rehetra voatokana.
41/174
TAPITRAview
Raha latsaky ny elanelam-potoanan'ny fandatsaham-bato amin'ny fiafaran'ny IN ny fahatapahana, ny tatitra dia avoaka amin'ny fe-potoana fandatsaham-bato.
(3) Isaky ny 4 ms, ny asa tatitry ny fampidirana tsindraindray dia mijery ny lisitry ny ID tatitra fampidirana. Ho an'ny ID tatitra fampidirana tsirairay, ny asa dia manao ny iray amin'ireo asa roa azo atao. Ny faharetan'ny vanim-potoanan'ny asa dia mifanandrify amin'ny singa 4-ms ampiasaina amin'ny fotoana tsy miasa. Raha tsy misy fangatahana SET_IDLE nalefan'ny mpampiantrano dia foana ny lisitry ny ID tatitra fampidirana ary tsy misy na inona na inona hokarakaraina ny asa. Ny fizotry ny asa dia mitatitra ID tsy mitovy amin'ny 0 ary manana faharetana tsy miasa mihoatra ny 0.
(4) Ho an'ny ID tatitra fampidirana nomena, ny asa dia manamarina raha efa tapitra ny faharetan'ny tsy miasa. Raha tsy tapitra ny fe-potoana tsy miasa, dia mihena ny kaontera ary tsy misy tatitra fampidirana alefa any amin'ny mpampiantrano.
(5) Raha toa ka tapitra ny faharetan'ny tsy miasa (izany hoe, nahatratra aotra ny kaontin'ny faharetan'ny idle), misy tatitra fampidirana alefa any amin'ny mpampiantrano amin'ny fiantsoana ny sl_usbd_hid_write_sync() amin'ny alàlan'ny interrupt IN endpoint.
(6) Ny angon-drakitra momba ny tatitra nalefan'ny asa dia avy amin'ny buffer data anatiny natokana ho an'ny tatitra fampidirana tsirairay voalaza ao amin'ny Descriptor Report. Ny asa fampiharana dia afaka miantso ny sl_usbd_hid_write_sync() asa handefasana tatitra fampidirana. Aorian'ny fandefasana ny angon'ny tatitra fampidirana, sl_usbd_hid_write_sync() dia manavao ny buffer anatiny mifandray amin'ny ID tatitra fampidirana miaraka amin'ny angona vao nalefa. Avy eo, ny asa tatitra momba ny fampidirana tsindraindray dia mandefa ny angon-drakitra momba ny fampidiran-dresaka mitovy foana rehefa tapitra ny faharetan'ny tsy miasa ary mandra-panavaozan'ny asa fampiharana ny angona ao amin'ny buffer anatiny. Misy mekanika manidy mba hisorohana ny kolikoly amin'ny angon-drakitra ID tatitra fampidirana raha toa ka misy fanovana mitranga amin'ny fotoana marina fampitana ataon'ny andraikitry ny tatitra fampidirana tsindraindray.
Copyright © 2025 Silicon Laboratories. Zo rehetra voatokana.
42/174
TAPITRAview
TAPITRAview
USB fitaovana MSC Class
Fitaovana USB MSC Class Overview USB Device MSC Class ilaina loharanon-karena avy amin'ny Core USB Device MSC Class Configuration USB Device MSC Class Programming Guide USB Device MSC Class Storage Drivers
Ity fizarana ity dia mamaritra ny kilasy fitahirizana faobe (MSC) tohanan'ny Silicon Labs USB Device. MSC dia protocole ahafahana mamindra vaovao eo amin'ny fitaovana USB sy ny mpampiantrano. Ny fampahalalana afindra dia izay rehetra azo tehirizina elektronika, toy ny programa azo tanterahana, kaody loharano, antontan-taratasy, sary, angon-drakitra fanamafisana, na angona lahatsoratra na nomerika hafa. Ny fitaovana USB dia miseho ho fitaovana fitahirizana ivelany ho an'ny mpampiantrano, ahafahana mamindra ny files amin'ny alalan'ny drag and drop.
A file rafitra mamaritra ny fomba ny files dia voalamina ao amin'ny haino aman-jery fitahirizana. Ny fanondroana kilasy fitahirizana faobe USB dia tsy mitaky manokana file rafitra ampiasaina amin'ny fitaovana mifanaraka. Manoloana izany dia manome interface tsotra ahafahana mamaky sy manoratra sehatra angona amin'ny alàlan'ny baiko mangarahara Small Computer System Interface (SCSI). Noho izany, ny rafitra miasa dia mety hitondra ny USB ho toy ny kapila mafy, ary afaka mamolavola azy amin'ny rehetra file rafitra tiany.
Ny kilasin'ny fitaovana fitahirizana faobe USB dia manohana protocols fitaterana roa, toy izao manaraka izao:
Fitaterana Bulk-Only (BOT) Control/Bulk/Interrupt (CBI) Fitaterana (ampiasaina amin'ny kapila floppy ihany)
Ny kilasin'ny fitaovana fitahirizana faobe dia mampihatra ny baiko mangarahara SCSI amin'ny alàlan'ny protocol BOT ihany, izay midika fa ireo teboka faran'izay betsaka ihany no hampiasaina handefasana ny angona sy ny mombamomba azy. Ny fampiharana MSC dia manohana vondrona lojika marobe.
Ny fampiharana MSC dia manaraka ireto fepetra manaraka ireto:
Universal Serial Bus Mass Storage Class Famaritanaview, Fanavaozana 1.3 Sept. 5, 2008. Universal Serial Bus Mass Storage Class Fitaterana betsaka ihany, Revision 1.0 Sept. 31, 1999.
Fitaovana USB MSC aCl ss Overview
Ny Kilasy Endpoints Protocol dia mangataka ny entreface informatika kely (SCSI)
fifanarahana
Ato amin'ity fizarana ity dia hiresaka momba ny Protocol an'ny Mass Storage Class (BOT) isika. Ny protocole Transport Bulk-Only dia manana s telotages:
Ny fitaterana baiko Ny fitaterana data Ny fitaterana status
Ny baiko fitahirizana faobe dia alefan'ny mpampiantrano amin'ny alàlan'ny rafitra antsoina hoe Command Block Wrapper (CBW). Ho an'ny baiko mitaky fitaterana data stage, ny mpampiantrano dia hanandrana handefa na handray ny isan'ny bytes marina avy amin'ny fitaovana araka ny voafaritra amin'ny halavany sy ny sahan'ny sainan'ny CBW. Taorian'ny fitaterana data stage, ny mpampiantrano dia manandrana mahazo Command Status Wrapper (CSW) avy amin'ny fitaovana izay manazava ny toetry ny baiko ary koa ny sisa tavela (raha
Copyright © 2025 Silicon Laboratories. Zo rehetra voatokana.
43/174
TAPITRAview
misy). Ho an'ny baiko tsy misy fitaterana data stage, ny mpampiantrano dia manandrana mandray ny CSW mivantana aorian'ny fandefasana CBW. Ny protocol dia aseho amin'ny antsipiriany ao amin'ny Figure - MSC Protocol.
Sary - MSC Protocol
Endpoint
Eo amin'ny lafiny fitaovana, mifanaraka amin'ny fepetra voalazan'ny BOT, ny MSC dia ahitana ireto teboka manaraka ireto: Toerana fiafaran'ny IN sy OUT roa antsoina hoe teboka fiafarana default. Toerana faran'ny IN sy OUT.
Ny tabilao etsy ambany dia manondro ny fampiasana samihafa amin'ny teboka farany.
Tabilao – Fampiasana teboka farany MSC
Endpoint
Control IN Control OUT Be dia be
tari-dalana
Fitaovana hampiantrano mpampiantrano amin'ny fitaovana Fitaovana hampiantrano mpampiantrano amin'ny fitaovana
Fampiasana
Fangatahana manokana momba ny kilasy fanisana sy MSC Fangatahana manokana ho an'ny kilasy fanisana sy MSC Alefaso CSW sy angona Raiso CBW sy angona
Fangatahana kilasy
Misy fangatahana fanaraha-maso roa voafaritra ho an'ny protocol MSC BOT. Ireo fangatahana ireo sy ny filazalazana azy ireo dia aseho amin'ny antsipiriany ao amin'ny tabilao etsy ambany.
Tabilao – Fangatahana kilasy fitahirizana faobe
Fangatahana kilasy
Famerenana ny fitahirizana faobe ihany
Description
Ity fangatahana ity dia ampiasaina hamerenana ny fitaovana fitahirizana faobe sy ny interface mifandray aminy. Ity fangatahana ity dia manomana ny fitaovana handray ny sakana baiko manaraka.
Copyright © 2025 Silicon Laboratories. Zo rehetra voatokana.
44/174
TAPITRAview
Fangatahana kilasy
Description
Get Max Ity fangatahana ity dia ampiasaina hamerenana ny isa ambony indrindra (LUN) tohanan'ny fitaovana. Ho an'ny example, a
LUN
Ny fitaovana misy LUN 0 sy LUN 1 dia hamerina sanda 1.
fangatahana. Ny sanda ambony indrindra azo averina dia 15.
Small Computer System Interface SCSI
Eo amin'ny ambaratongan'ny interface programming, ny fitaovana MSC dia mampihatra ny iray amin'ireo protocole serasera fitahirizana-media mahazatra, toy ny SCSI sy SFF-8020i (ATAPI). Ny "Programming Interface" dia mamaritra hoe protocol inona no ampiharina, ary manampy ny rafitra fiasan'ny mpampiantrano hampiditra ny mpamily fitaovana mety amin'ny fifandraisana amin'ny fitaovana fitahirizana USB. SCSI no protocole mahazatra indrindra ampiasaina amin'ny fitaovana fitahirizana USB MSC. Manome fampiharana ho an'ny sokajy MSC SCSI izahay izay azon'ireo mpampiasa GSDK ampiasaina ivelan'ny boaty.
SCSI dia fenitry ny fitantanana ny fifandraisana eo amin'ny solosaina sy ny fitaovana periferika. Ireo fenitra ireo dia misy baiko, protocols, fifandraisana elektrika ary fifandraisana optika. Ny fitaovana fitehirizana izay mampiasa interface tsara hafa, toy ny USB, dia mampiasa baiko SCSI amin'ny fahazoana fampahalalana momba ny fitaovana/mpiantrano sy ny fanaraha-maso ny fiasan'ny fitaovana ary ny fandefasana ireo sakana amin'ny media fitahirizana.
Ny baiko SCSI dia mandrakotra karazana fitaovana sy fiasa marobe ary noho izany dia mila ampahany amin'ireo baiko ireo ny fitaovana. Amin'ny ankapobeny, ireto baiko manaraka ireto dia ilaina amin'ny fifandraisana fototra:
FANONTANIANA FAHASIAN'NY MAMAKY(10) MAMAKY(10) ENTINA FAHAtsapana SENSE VONONA MANORATRA(10)
Fitaovana USB MSC Class Resource ilaina avy amin'ny Core
Isaky ny manampy ohatra kilasy MSC ianao amin'ny fanamafisana USB amin'ny alàlan'ny fiasa sl_usbd_msc_add_to_configuration() , ireto loharano manaraka ireto dia hatokana avy amin'ny fototra.
loharano
Interface Interfaces mifanolotra Vondrona interface
Hatrany
1 1 2 0
Mariho fa ireo isa ireo dia isaky ny configuration. Rehefa manangana ny SL_USBD_INTERFACE_QUANTITY , SL_USBD_ALT_INTERFACE_QUANTITY , SL_USBD_INTERFACE_GROUP_QUANTITY ary SL_USBD_DESCRIPTOR_QUANTITY ianao, dia aza adino ny mandinika ny isan'ny config ho an'ny kilasy. Ho an'ny sandan'ny fanefena SL_USBD_OPEN_ENDPOINTS_QUANTITY, satria tsy misokatra afa-tsy rehefa misy config no napetraky ny mpampiantrano, dia mila mandinika fotsiny ny isan'ny teboka ilaina ho an'ny kilasy iray ianao.
USB Device MSC Class Configuration
Vondrona roa amin'ny mari-pamantarana fanamafisana no ampiasaina hanamboarana ny kilasy MSC:
Fitaovana USB MSC Class Application-Specific Configurations USB Device MSC Class Logical Unit Configuration
Fitaovana USB MSC Class Application-Specific Configurations
Class Compile-Time Configuration Class Instance Creation
Copyright © 2025 Silicon Laboratories. Zo rehetra voatokana.
45/174
TAPITRAview
Class Compile-Time Configurations
Silicon Labs USB Device MSC class sy SCSI subclass dia azo amboarina amin'ny fotoana fanangonana amin'ny alàlan'ny #defines hita ao amin'ny sl_usbd_core_config.h file.
Tabilao - Configuration générique Constants
Anaran'ny Configuration
Description
SL_USBD_MSC_CLASS_INST Isan'ny kilasy atokanao amin'ny alalan'ny antso ho an'ny asa
ANCE_QUANTITY
sl_usbd_msc_scsi_create_instance() .
SL_USBD_MSC_CONFIGURA Isan'ny tefy azo ampiana ohatra iray kilasy amin'ny alalan'ny antso amin'ny
TION_QUANTITY
function sl_usbd_msc_scsi_add_to_configuration() .
SL_USBD_MSC_LUN_QUANT Isan'ny singa lojika isaky ny kilasy ohatra izay ampianao amin'ny antso an-tariby
ITY
function sl_usbd_msc_scsi_lun_add() .
SL_USBD_MSC_SCSI_64_BIT Mandefa na manafoana ny fanohanana ny Adiresy sakana lojika (LBA) amin'ny 64 bit.
_LBA_EN
SL_USBD_MSC_DATA_BUFF Haben'ny buffer data isaky ny kilasy ohatra amin'ny bytes ER_SIZE
Sanda Default
2
1
2
0
512
Famoronana ohatra kilasy
Ny famoronana ohatra kilasy MSC SCSI USB Device dia atao amin'ny fiantsoana ny sl_usbd_msc_scsi_create_instance() asa. Ity fampiasa ity dia maka tohan-kevitra fanamafisana iray izay voalaza etsy ambany.
p_scsi_callbacks
p_scsi_callbacks dia tondro ho an'ny rafitra fanaingoana karazana sl_usbd_msc_scsi_callbacks_t . Ho fanampin'ny antso an-tariby mahazatra amin'ny kilasy USB mampifandray / manasaraka, dia manome ny kilasy MSC miaraka amin'ny karazana antso an-tariby azo atao izay antsoina rehefa misy hetsika mitranga amin'ny vondrona lojika. Ny pointer null ( NULL ) dia azo ampitaina amin'ity tohan-kevitra ity raha tsy misy antso miverina.
Ny tabilao etsy ambany dia manoritsoritra ny saha fanamafisam-peo rehetra misy amin'ity rafi-drafitra ity.
Tabilao – sl_usbd_msc_scsi_callbacks_t Rafitra fanamboarana
eny an-tsaha
Description
.enable
Antsoina rehefa mandeha tsara ny ohatra kilasy USB.
.disable Antsoina rehefa kilemaina ny kilasy USB.
.host_eject Function antsoina rehefa misy singa lojika esorina amin'ny mpampiantrano.
Fonction Signature
void app_usbd_msc_scsi_enable(uint8_t class_nbr);
void app_usbd_msc_scsi_disable(uint8_t class_nbr); void app_usbd_msc_scsi_host_eject(uint8_t class_nbr, uint8_t lu_nbr);
USB Device MSC Class Logical Unit Configuration
Ny fampidirana singa lojika amin'ny ohatra kilasy MSC dia atao amin'ny fiantsoana ny fiasa sl_usbd_msc_lun_add() . Ity fampiasa ity dia maka tohan-kevitra fanamafisana iray izay voalaza etsy ambany.
p_lu_info
p_lu_info dia tondro mankany amin'ny rafitra misy karazana sl_usbd_msc_scsi_lun_info_t . Ny tanjony dia ny hanome ny fampahalalana momba ny singa lojika ho an'ny kilasy MSC.
Ny tabilao etsy ambany dia manoritsoritra ny saha fanamafisam-peo rehetra misy amin'ity rafi-drafitra ity.
Tabilao – sl_usbd_msc_scsi_lun_info_t Rafitra fanamboarana
Copyright © 2025 Silicon Laboratories. Zo rehetra voatokana.
46/174
TAPITRAview
SaHa
Description
SaHa
.scsi_lun_api_p tr
Description
Tondroy ny API mpamily media izay hifehy an'io singa lojika io. Jereo ny USB Device MSC Class Storage Drivers raha mila fanazavana fanampiny momba ny mpamily fitahirizana.
.ve nd o r_id _ p tr
.product_id_ptr
.p ro d uct_ re v isi on_level .is_ re ad _o nly
Manondro tady misy ny famantarana ny mpivarotra ny singa lojika. Ny halavan'ny tady ambony indrindra dia tarehintsoratra 8. Tondroy amin'ny tady misy ny famantarana vokatra ny singa lojika. 16 litera ny halavan'ny tady. Ambaratonga fanavaozana ny vokatra.
Saina izay manondro raha tokony ho hita ho toy ny vakiana avy amin'ny teboka fotsiny ny singa lojika view an'ny mpampiantrano (marina) na tsia (diso).
USB Device MSC Class Programming Guide
Ity fizarana ity dia manazava ny fomba fampiasana ny kilasy MSC.
Fanombohana ny USB Device MSC Class Manampy fitaovana USB MSC SCSI Class Instance amin'ny fitaovanao USB Device MSC Class Logical Unit Handling
Manomboka ny USB Device MSC Class
Mba hanampiana ny fiasan'ny kilasin'ny MSC SCSI amin'ny fitaovanao dia atombohy aloha ny kilasy fototra MSC sy ny subclass SCSI amin'ny fiantsoana ny fiasa sl_usbd_msc_init() sy sl_usbd_msc_scsi_init() .
Ny exampNy eto ambany dia mampiseho ny fomba fiantsoana sl_usbd_msc_init() sy sl_usbd_msc_scsi_init() .
Example – Miantso sl_usbd_msc_init() sy sl_usbd_msc_scsi_init()
sl_status_t status;
status = sl_usbd_msc_init(); raha (status ! SL_STATUS_OK) { /* Nisy lesoka. Tokony ampiana eto ny fikarakarana lesoka. */
}
status = sl_usbd_msc_scsi_init(); raha (status ! SL_STATUS_OK) { /* Nisy lesoka. Tokony ampiana eto ny fikarakarana lesoka. */
}
Manampy fitaovana USB MSC SCSI Class Instance amin'ny fitaovanao
Raha te hampiditra fiasana kilasy MSC SCSI amin'ny fitaovanao, mamorona ohatra aloha, dia ampio amin'ny firafitry ny fitaovanao. Tsy maintsy manampy singa lojika iray farafahakeliny amin'ny ohatra ianao.
Mamorona ohatra kilasy MSC SCSI
Mamorona ohatra kilasy MSC SCSI amin'ny fiantsoana ny fiasa sl_usbd_msc_scsi_create_instance() .
Ny exampNy eto ambany dia mampiseho ny fomba fiantsoana sl_usbd_msc_scsi_create_instance() amin'ny fampiasana tohan-kevitra default. Raha mila fanazavana fanampiny momba ny tohan-kevitry ny fandrindrana ampitaina amin'ny sl_usbd_msc_scsi_create_instance() , jereo ny USB Device MSC Class Application Specific Configurations.
Example – Miantso sl_usbd_ msc_scsi_create_instance()
Copyright © 2025 Silicon Laboratories. Zo rehetra voatokana.
47/174
TAPITRAview
uint8_t class_nbr; sl_status_t status;
sl_usbd_msc_scsi_callbacks_t app_usbd_msc_scsi_callbacks = { .enable = NULL, .disable = NULL, .host_eject = NULL };
status = sl_usbd_msc_scsi_create_instance(&app_usbd_msc_scsi_callbacks,0 &class_nbr);
raha (status ! SL_STATUS_OK) { /* Nisy lesoka. Tokony ampiana eto ny fikarakarana lesoka. */ }
Manampy ny MSC Class Instance amin'ny Configuration (s) an'ny fitaovanao
Rehefa avy namorona ohatra kilasy MSC ianao dia azonao atao ny manampy azy amin'ny fanamafisana amin'ny fiantsoana ny fiasa
sl_usbd_msc_add_to_configuration() .
Ny exampAsehoy eto ambany ny fomba fiantsoana sl_usbd_msc_scsi_add_to_configuration() amin'ny fampiasana tohan-kevitra default.
Example – Miantso sl_usbd_ msc_scsi_add_to_configuration()
sl_status_t status;
status = sl_usbd_msc_scsi_add_to_configuration(class_nbr,
(1)
config_nbr_fs);
(2)
raha (status ! SL_STATUS_OK) {
/* Nisy hadisoana nitranga. Tokony ampiana eto ny fikarakarana lesoka. */
}
(1) Laharan'ny kilasy hanampiana amin'ny fanitsiana naverin'ny sl_usbd_msc_scsi_create_instance() . (32) Laharan'ny fanamboarana (eto ampidirina amin'ny rindrankajy feno hafainganam-pandeha).
Fitaovana USB MSC Class Logical Unit Handling
Fanampiana singa lojika mampiaraka/manala fitaovana fitahirizana
Manampy singa lojika
Rehefa manampy singa lojika amin'ny ohatra kilasy MSC SCSI anao dia tsy maintsy mifamatotra amin'ny fitaovana fitahirizana (RAMDisk, karatra SD, fahatsiarovana tselatra, sns). Ny kilasy MSC dia mampiasa mpamily fitahirizana mba hifandraisana amin'ny haino aman-jery fitahirizana. Mila omena ity mpamily ity rehefa manampy ny singa lojika.
Ny exampNy eto ambany dia mampiseho ny fomba hanampiana singa lojika amin'ny alàlan'ny sl_usbd_msc_scsi_lun_add() .
Example - Manampy singa lojika amin'ny alàlan'ny sl_usbd_msc_scsi_lun_add()
Copyright © 2025 Silicon Laboratories. Zo rehetra voatokana.
48/174
TAPITRAview
sl_usbd_msc_scsi_lun_t *lu_object_ptr = NULL;
sl_usbd_msc_scsi_lun_info_t lu_info;
sl_status_t
sata;
lu_info.sl_usbd_msc_scsi_lun_api_t = &app_usbd_scsi_storage_block_device_api;
lu_info.vendor_id_ptr
= "Silicon Labs";
lu_info.product_id_ptr
= "fitaovana sakana example”;
lu_info.product_revision_level = 0x1000u;
lu_info.is_read_only
= diso;
status = sl_usbd_msc_scsi_lun_add(class_nbr, &lu_info, &lu_object_ptr);
raha (status ! SL_STATUS_OK) { /* Nisy lesoka. Tokony ampiana eto ny fikarakarana lesoka. */ }
Fametahana / fanalana fitaovana fitahirizana
Aorian'ny fampidirana ny singa lojika dia tsy maintsy ampifandraisina fitaovana fitahirizana mba ho azo avy amin'ny lafiny mpampiantrano. Ny kilasin'ny MSC dia manolotra asa roa hifehezana ny fikambanan'ny haino aman-jery fitahirizana amin'ny singa lojika: sl_usbd_msc_scsi_lun_attach() sy sl_usbd_msc_scsi_lun_detach() . Ireo fiasa ireo dia ahafahanao maka tahaka ny fanesorana fitaovana fitahirizana mba hahazoana indray ny fidirana amin'ny rindranasa tafiditra raha ilaina izany.
Ny exampNy eto ambany dia mampiseho ny fomba fampiasana ny fiasa sl_usbd_msc_scsi_lun_attach() sy sl_usbd_msc_scsi_lun_detach() .
Example – Media Attach/Detach
sl_status_t status;
status = sl_usbd_msc_scsi_lun_attach(lu_object_ptr); raha (status ! SL_STATUS_OK) { /* Nisy lesoka. Tokony ampiana eto ny fikarakarana lesoka. */
}
…
(1)
status = sl_usbd_msc_scsi_lun_detach(lu_object_ptr); raha (status ! SL_STATUS_OK) {
/* Nisy hadisoana nitranga. Tokony ampiana eto ny fikarakarana lesoka. */
}
…
(2)
status = sl_usbd_msc_scsi_lun_attach(lu_object_ptr) raha (status ! SL_STATUS_OK) {
/* Nisy hadisoana nitranga. Tokony ampiana eto ny fikarakarana lesoka. */
}
…
(3)
(1) Manomboka izao, raha mifandray amin'ny mpampiantrano iray ny fitaovana MSC, dia azo idirana ny haino aman-jery fitahirizana.
(2) Raha ampifandraisina amin'ny mpampiantrano iray ny fitaovana MSC, dia hiseho ho tsy misy ny haino aman-jery. Amin'izao fotoana izao dia azo atao amin'ny haino aman-jery avy amin'ny fampiharana tafiditra.
(3) Indray, raha mifandray amin'ny mpampiantrano ny fitaovana MSC, dia hiseho ho mifandray ny haino aman-jery fitahirizana.
USB Device MSC Class Storage Drivers
Mila mpamily fitahirizana ny USB Device MSC Class mba hifandraisana amin'ny fitaovana fitahirizana. Amin'izao fotoana izao, Silicon Labs dia tsy manolotra mpamily.
Copyright © 2025 Silicon Laboratories. Zo rehetra voatokana.
49/174
TAPITRAview
TPY aa izy mpamily AI dia voafaritra amin'ny typedef sl_usbd_msc_scsi_lun_api_t . ny sl_usbd_msc_scsi_lun_api_t v rible dia tsy maintsy ampidirina amin'ny aaaaaaaa ny sl_usbd_msc_scsi_lun_info_t v rible, p ssed s rgument rehefa dd logic l unit miaraka amin'ny sl_usbd_msc_scsi_lun_add(). Jereo ny fizarana USB Device MSC SCSI API raha mila fanazavana fanampiny momba ny rafitra. Ny fampiharana mpamily fitahirizana dia mety ho tsotra toy ny sehatra maromaro amin'ny RAM. Ny haben'ny sehatra mahazatra (izany hoe, ny haben'ny sakana) dia 512 ho an'ny fitaovana fitahirizana faobe, ary 2048 ho an'ny CD-ROM.
Copyright © 2025 Silicon Laboratories. Zo rehetra voatokana.
50/174
TAPITRAview
TAPITRAview
Kilasy mpivarotra fitaovana USB
Mihoatra ny kilasy mpivarotra fitaovana USBview Mila loharanon-karena amin'ny kilasin'ny Mpivarotra fitaovana USB avy amin'ny Fifandimbiasana kilasin'ny Mpivarotra Fitaovana USB USB Mpivarotra Kilasy Torolàlana momba ny fandaharana Ny kilasin'ny mpivarotra dia ahafahanao manangana fitaovana manokana amin'ny mpivarotra izay afaka mampihatra protocole manokana. Miankina amin'ny teboka maromaro maromaro izy io mba handefasana angona eo amin'ny mpampiantrano sy ny fitaovana. Ny famindrana betsaka dia mety amin'ny famindrana angon-drakitra marobe tsy voarafitra ary manome fifanakalozam-baovao azo antoka amin'ny alàlan'ny fampiasana mekanika fitadiavana fahadisoana sy andrana indray. Ho fanampin'ny teboka faran'ny betsaka, ny kilasin'ny Vendor dia afaka mampiasa teboka fiafarana manapaka tsy azo atao. Ny rafitra fiasana rehetra (OS) dia afaka miara-miasa amin'ny kilasin'ny Vendor raha toa ka manana mpamily hifehy ny kilasin'ny Vendor ny OS. Miankina amin'ny OS, ny mpamily dia mety ho teratany na mpivarotra manokana. Ohatra, eo ambanin'ny Microsoft Windows®, ny fampiharanao dia mifandray amin'ny mpamily WinUSB nomen'i Microsoft hifandraisana amin'ny fitaovana mpivarotra.
Mihoatra ny kilasy mpivarotra fitaovana USBview
Figure - General Architecture Eo anelanelan'ny Windows Host sy Vendor Class dia mampiseho ny maritrano ankapobeny eo amin'ny mpampiantrano sy ny fitaovana mampiasa ny kilasy Vendor. Amin'ity exampary, ny rafitra fandidiana mpampiantrano dia MS Windows.
Sary - Architecture ankapobeny eo anelanelan'ny MS Windows Host sy Vendor Class
Amin'ny lafiny MS Windows, ny fampiharana dia mifandray amin'ny fitaovana mpivarotra amin'ny alàlan'ny fifandraisana amin'ny tranomboky USB. Ny trano famakiam-boky, toa an'i libusb, dia manolotra API hitantana fitaovana iray sy ny fantsona mifandray aminy, ary hifandraisana amin'ilay fitaovana amin'ny alàlan'ny fanaraha-maso, ampahany betsaka ary fiatoana.
Amin'ny lafiny fitaovana, ny kilasin'ny Vendor dia ahitana ireto teboka manaraka ireto:
Toerana fiafarana IN sy OUT roa antsoina hoe teboka fiafarana default. Toerana faran'ny IN sy OUT.
Copyright © 2025 Silicon Laboratories. Zo rehetra voatokana.
51/174
TAPITRAview
Toerana fiafarana IN sy OUT roa. Ity mpivady ity dia tsy voatery. Ny tabilao etsy ambany dia manondro ny fampiasana ireo teboka farany samihafa:
Tabilao – Fampiasana teboka faran'ny kilasin'ny mpivarotra
Tari-dalana farany
Control IN
PO
avy
Betsaka IN
Device-tohost
> Host-to fitaovana
Device-tohost
AVY betsaka
Interrupt IN
manapaka
avy
Host-to-fitaovana
Device-tohost
Host-to-fitaovana
Fampiasana
Fangatahana manara-penitra ho an'ny fanisana sy fangatahana manokana amin'ny mpivarotra.
Fangatahana manara-penitra ho an'ny fanisana sy fangatahana manokana amin'ny mpivarotra.
Fifandraisana data manta. Ny angona dia azo amboarina araka ny protocol proprietary.
Fifandraisana data manta. Ny angona dia azo amboarina araka ny protocol proprietary.
Fifandraisana na fampahafantarana angona manta. Ny angona dia azo amboarina araka ny protocol proprietary. Fifandraisana na fampahafantarana angona manta. Ny angona dia azo amboarina araka ny protocol proprietary.
Ny fampiharana fitaovana dia afaka mampiasa teboka faran'izay betsaka sy manapaka mba handefasana na handraisana angona mankany na avy amin'ny mpampiantrano. Tsy azony ampiasaina afa-tsy ny teboka fiafaran'ny default hamadika ny fangatahana manokana ataon'ny mpivarotra alefan'ny mpampiantrano. Ny fangatahana manara-penitra dia tantanin'ny sosona Core an'ny Silicon Labs USB Device.
Mila loharanon-karena avy amin'ny Core
Isaky ny manampy ohatra iray amin'ny kilasy mpivarotra amin'ny config amin'ny alalan'ny fonction sl_usbd_vendor_add_to_configuration() , ireto loharano manaraka ireto dia hatokana avy amin'ny fototra.
loharano
Interface Interfaces mifanolotra Vondrona interface
Hatrany
1 1 2 (4 raha navelanao ny teboka faran'ny interrupt) 0
Mariho fa ireo isa ireo dia isaky ny configuration. Rehefa manangana ny SL_USBD_INTERFACE_QUANTITY , SL_USBD_ALT_INTERFACE_QUANTITY , SL_USBD_INTERFACE_GROUP_QUANTITY ary SL_USBD_DESCRIPTOR_QUANTITY ianao, dia aza adino ny mandinika ny isan'ny config ho an'ny kilasy. Ho an'ny sandan'ny fanefena SL_USBD_OPEN_ENDPOINTS_QUANTITY, satria tsy misokatra afa-tsy rehefa misy config no napetraky ny mpampiantrano, dia mila mandinika fotsiny ny isan'ny teboka ilaina ho an'ny kilasy iray ianao.
Fifandimbiasana kilasy mpivarotra fitaovana USB
Vondrona roa amin'ny mari-pamantarana fanamafisam-peo no ampiasaina hanamboarana ny kilasin'ny mpivarotra:
Fampiharana manokana amin'ny Kilasy Mpivarotra Fitaovana USB Fanamboarana Kilasy Mpivarotra Fitaovana USB
Fampiharana manokana amin'ny Kilasy Mpivarotra fitaovana USB
Voalohany, raha hampiasa ny maody kilasin'ny mpivarotra fitaovana USB Silicon Labs, ampifanaraho amin'ny filan'ny fampiharana anao ny fanitsiana ny fotoana fanangonana Vendor. Atambatra ao anaty lohapejy sl_usbd_core_config.h izy ireo file eo ambanin'ny fizarana Vendor. Ny tanjon'ny fanamafisana ny habetsahana dia ny mampahafantatra ny maody fitaovana USB momba ny isan'ny zavatra USB Vendor hatokana.
Ny tabilao etsy ambany dia mamaritra ny famaritana ny configuration tsirairay.
Copyright © 2025 Silicon Laboratories. Zo rehetra voatokana.
52/174
TAPITRAview
Tabilao - Famaritana ny Configuration Vendor USB Device
Anaran'ny Configuration
Description
Sanda Default
SL_USBD_VENDOR_CLASS_INSTANCE_QUANTITY Isan'ny ohatra amin'ny kilasy atokanao amin'ny alalan'ny antso amin'ny asa 2 sl_usbd_vendor_create_instance() .
SL_USBD_VENDOR_CONFIGURATION_QUANTITY Isan'ny fanitsiana. Ny trangan'ny kilasin'ny mpivarotra dia azo ampiana 1 amin'ny fanamafisana iray na maromaro amin'ny alàlan'ny antso amin'ny fiasa sl_usbd_vendor_add_to_configuration() .
Fikirakirana ohatra ny Kilasy Mpivarotra fitaovana USB
Ity fizarana ity dia mamaritra ny fandrindrana mifandraika amin'ny trangan'ny kilasy Vendor.
Class Instance Creation intr_en interval p_vendor_callbacks
Famoronana ohatra kilasy
Ny famoronana ohatra kilasin'ny mpivarotra dia atao amin'ny fiantsoana ny fonction sl_usbd_vendor_create_instance() , izay maka tohan-kevitra fanamafisana telo izay voalaza etsy ambany.
intr_en
Boolean izay manondro raha tokony hampiana tondro fiafarana roa na tsia.
sarobidy
tena diso
Description
Ny teboka roa IN/OUT dia ampiana ary atolotra ho an'ny fampiharana tafiditra. Tsy hisy fiafarana fiatoana hampiana. Iray amin'ny teboka faran'ny Bulk IN/OUT ihany no ho hita.
elanelana
Raha mametraka intr_en amin'ny true , azonao atao ny mamaritra ny elanelan'ny fitsapan-kevitra amin'ny faran'ny fotoana (amin'ny milisegondra). Raha mametraka intr_en amin'ny false ianao, dia azonao atao ny mametraka elanelana amin'ny 0 satria tsy horaharahain'ny kilasy izany.
p_vendor_callbacks
p_vendor_callbacks dia tondro ho an'ny faribolan'ny firafitry ny callback. izay azonao faritana mba hikarakarana ireo fangatahana fanaraha-maso manokana amin'ny kilasy. Raha tsy mampiasa fangatahana manokana amin'ny kilasy ianao na mila fampandrenesana / fampandrenesana dia azonao atao ny mametraka izany amin'ny NULL.
Ny exampNy eto ambany dia manome ny sonia andrasana amin'ny mpikarakara fangatahana manokana amin'ny kilasy misy anao.
Example – Sonian'ny Fangatahana manokana ho an'ny kilasy
void app_usbd_vendor_req_handle(uint8_t
class_nbr, (1)
const sl_usbd_setup_req_t *p_setup_req); (2)
sl_usbd_vendor_callbacks_t app_usbd_vendor_callback_functions =
{
.enable = NULL, .disable = NULL, .setup_req = app_usbd_vendor_req_handle,
};
(1) Laharan'ny kilasy mpivarotra.
Copyright © 2025 Silicon Laboratories. Zo rehetra voatokana.
53/174
TAPITRAview
(2) Manondro ny fangatahana fananganana voaray avy amin'ny mpampiantrano.
Torolàlana momba ny fandaharana amin'ny kilasy USB Device Vendor
Ity fizarana ity dia manazava ny fomba fampiasana ny kilasin'ny Vendor. Fanombohana ny kilasin'ny mpivarotra fitaovana USB manampy ny kilasy mpivarotra fitaovana USB amin'ny fitaovanao mifandray amin'ny fampiasana ny kilasin'ny mpivarotra fitaovana USB
Fanombohana ny kilasin'ny mpivarotra fitaovana USB
Raha te hampiditra fampiasa Kilasy mpivarotra amin'ny fitaovanao dia atombohy aloha ny kilasy amin'ny fiantsoana ny fiasa USBD_Vendor_Init(). Ny example eto ambany dia mampiseho ny fomba fiantsoana sl_usbd_vendor_init() .
Example – Miantso sl_usbd_vendor_init()
sl_status_t status;
status = sl_usbd_vendor_init(); raha (status ! SL_STATUS_OK) { /* Nisy lesoka. Tokony ampiana eto ny fikarakarana lesoka. */ }
Mampiditra ohatra kilasy mpivarotra fitaovana USB amin'ny fitaovanao
Raha te hampiditra fampiasa amin'ny kilasin'ny mpivarotra amin'ny fitaovanao ianao dia tsy maintsy mamorona ohatra aloha, avy eo ampidiro ao amin'ny firafitry ny fitaovanao.
Mamorona ohatry ny kilasin'ny mpivarotra Fanampiana ny ohatry ny kilasin'ny mpivarotra amin'ny fanamboarana ny fitaovanao
Mamorona ohatra kilasy mpivarotra
Mamorona ohatra kilasy Vendor amin'ny fiantsoana ny asa sl_usbd_vendor_create_instance() . Ny exampNy eto ambany dia mampiseho ny fomba fiantsoana sl_usbd_vendor_create_instance() amin'ny fampiasana tohan-kevitra default. Raha mila fanazavana fanampiny momba ny tohan-kevitry ny fanefena halefa any amin'ny sl_usbd_vendor_create_instance() , jereo ny USB Device Vendor Class Configurations.
Example – Miantso sl_usbd_vendor_create_instance()
uint8_t class_nbr; sl_status_t status;
status = sl_usbd_vendor_create_instance(diso,
(1)
0u,
(2)
app_usbd_vendor_callback_functions, (3)
&class_nbr);
raha (status ! SL_STATUS_OK) {
/* Nisy hadisoana nitranga. Tokony ampiana eto ny fikarakarana lesoka. */
}
(1) Tsy misy teboka faran'ny interrupt amin'ity ohatra kilasy ity. (2) Tsy noraharahiana ny elanelana satria tsy mandeha ny teboka fiafaran'ny Interrupt.
Copyright © 2025 Silicon Laboratories. Zo rehetra voatokana.
54/174
TAPITRAview
(3) Fampiasa Callback izay ampahany amin'ny rindranasao izay mitantana ny fangatahana kilasy manokana amin'ny mpivarotra. Jereo ny Fifandraisana amin'ny alàlan'ny Kilasy mpivarotra fitaovana USB raha mila fanazavana fanampiny. Manampy ny Kilasy mpivarotra amin'ny Configuration(s) an'ny fitaovanao Rehefa avy namorona ohatra classe mpivarotra ianao dia azonao atao ny manampy azy amin'ny config amin'ny fiantsoana ny fiasa USBD_Vendor_ConfigAdd(). Ny exampNy eto ambany dia mampiseho ny fomba fiantsoana sl_usbd_vendor_add_to_configuration() amin'ny fampiasana tohan-kevitra default.
Example – Miantso sl_usbd_vendor_add_to_configuration()
sl_status_t status;
status = sl_usbd_vendor_add_to_configuration(class_nbr,
(1)
config_nbr_fs);
(2)
raha (status ! SL_STATUS_OK) {
/* Nisy hadisoana nitranga. Tokony ampiana eto ny fikarakarana lesoka. */
}
(1) Laharan'ny kilasy hanampiana amin'ny fanitsiana naverin'ny sl_usbd_vendor_create_instance() . (2) Laharan'ny fanamboarana (eto ampidirina amin'ny fikandrana feno hafainganam-pandeha).
Fifandraisana amin'ny fampiasana ny kilasin'ny mpivarotra fitaovana USB
Fangatahana Vendor General Communication Asynchronous Communication Ny kilasin'ny mpivarotra dia manolotra ireto fiasa manaraka ireto mba hifandraisana amin'ny mpampiantrano. Raha mila fanazavana fanampiny momba ny mason'ny fiasa dia jereo ny USB Device Vendor API.
Tabilao – Vendor Communication API Famintinana
Anaran'ny asa
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-
fanakanana.
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. Zo rehetra voatokana.
55/174
TAPITRAview
Synchronous communication means that the transfer is blocking. When a function is called, the application blocks until the transfer completes with or without an error. A timeout can be specified to avoid waiting forever. The example below shows a read and write that receives data from the host using the bulk OUT endpoint and sends data to the host using the bulk IN endpoint.
Example – Synchronous Bulk Read and Write
__ALIGNED(4) uint8_t rx_buf[2];
__ALIGNED(4) uint8_t tx_buf[2];
uint32_t
xfer_len;
sl_status_t
sata;
status = sl_usbd_vendor_read_bulk_sync(class_nbr,
(1)
(void *)&rx_buf[0],
(2)
2u,
0u,
(3)
&xfer_len);
raha (status ! SL_STATUS_OK) {
/* $$$$ Tandremo ny fahadisoana. */
}
status = sl_usbd_vendor_write_bulk_sync( class_nbr,
(1)
(void *)&tx_buf[0],
(4)
2u,
0u,
(3)
false,
(5)
&xfer_len);
raha (status ! SL_STATUS_OK) {
/* $$$$ Tandremo ny fahadisoana. */
}
(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) Ny fampiharana dia manome ny buffer fandefasana natomboka.
(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.
Fifandraisana Asynchronous
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. Zo rehetra voatokana.
56/174
TAPITRAview
void app_usbd_vendor_comm (uint8_t class_nbr)
{
__ALIGNED(4) uint8_t rx_buf[2];
__ALIGNED(4) uint8_t tx_buf[2];
sl_status_t
sata;
status = sl_usbd_vendor_read_bulk_async(class_nbr,
(void *)&rx_buf[0],
(2)
2u,
app_usbd_vendor_rx_completed,
NULL);
(4)
raha (status ! SL_STATUS_OK) {
/* $$$$ Tandremo ny fahadisoana. */
}
status = sl_usbd_vendor_write_bulk_async(class_nbr,
(void *)&tx_buf[0],
(5)
2u,
app_usbd_vendor_tx_completed,
NULL,
(4)
false);
(6)
raha (status ! SL_STATUS_OK) {
/* $$$$ Tandremo ny fahadisoana. */
}
}
(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)
{
raha (status ! SL_STATUS_OK) {
/* $$$$ Do some processing. */
} hafa {
/* $$$$ Tandremo ny fahadisoana. */
}
}
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)
{
raha (status ! SL_STATUS_OK) {
/* $$$$ Do some processing. */
} hafa {
/* $$$$ Tandremo ny fahadisoana. */
}
}
(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. Zo rehetra voatokana.
57/174
TAPITRAview
(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. Zo rehetra voatokana.
58/174
TAPITRAview
#define APP_VENDOR_REQ_NO_DATA
0x01u
#define APP_VENDOR_REQ_RECEIVE_DATA_FROM_HOST 0x02u
#define APP_VENDOR_REQ_SEND_DATA_TO_HOST 0x03u
#define APP_VENDOR_REQ_DATA_BUF_SIZE
50u
static uint8_t app_vendor_req_buf[APP_VENDOR_REQ_DATA_BUF_SIZE];
static bool app_usbd_vendor_req (uint8_t
class_nbr,
const sl_usbd_setup_req_t *p_setup_req)
(1)
{
bool valid;
sl_status_t status;
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. Zo rehetra voatokana.
59/174
TAPITRAview
valid =true;break;
case APP_VENDOR_REQ_RECEIVE_DATA_FROM_HOST:(4) req_len = p_setup_req->wLength;if(req_len > APP_VENDOR_REQ_DATA_BUF_SIZE){// Not enough room to receive data.return(false);}// Receive data via Control OUT EP.// Wait transfer completion forever. status =sl_usbd_core_read_control_sync((void *)&app_vendor_req_buf[0u],
req_len,0u,&xfer_len);if(status ! SL_STATUS_OK){ valid =false;}else{ valid =true;}break;
case APP_VENDOR_REQ_SEND_DATA_TO_HOST:(5) req_len = APP_VENDOR_REQ_DATA_BUF_SIZE;// Fill buf with a pattern.Mem_Set((void *)&AppVendorReqBuf[0u],’A’,
req_len);// Send data via Control IN EP.// Wait transfer completion forever. status =sl_usbd_core_write_control_sync((void *)&app_vendor_req_buf[0u],
req_len,0u,false,&xfer_len);if(status ! SL_STATUS_OK){ valid = DEF_FAIL;}else{ valid = DEF_OK;}break;
default:(6)// Request is not supported. valid = DEF_FAIL;break;}return(valid);}
(1) The core will pass the Setup packet content to your application. The structure sl_usbd_setup_req_t contains the same fields as defined by the USB 2.0 specification (refer to section “9.3 USB Device Requests” of the specification for more details):
typedef struct {
uint8_t bmRequestType; /* Characteristics of request.
*/
uint8_t bRequest; /* Specific request.
*/
uint16_t wValue; /* Varies according to request.
*/
uint16_t wIndex; /* Varies according to request; typically used as index.*/
uint16_t wLength; /* Transfer length if data stage ankehitriny.
*/
} 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. Zo rehetra voatokana.
60/174
API Documentation
API Documentation
API Documentation
Lisitry ny modules
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
Description
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. Zo rehetra voatokana.
61/174
USB Device API
USB Device API
USB Device API
USB Device API.
Modules
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. Zo rehetra voatokana.
62/174
USB Device ACM API
USB Device ACM API
USB Device ACM API
USB Device CDC ACM API.
Modules
a sl_usbd_cdc_ cm_line_coding_t sl_usbd_cdc_acm_callbacks_t
asa
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. Zo rehetra voatokana.
63/174
USB Device ACM API
Macros
#define SL_USBD_CDC_ACM_NBR_NONE 255u
MODULE.
#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. Zo rehetra voatokana.
64/174
USB Device ACM API
Type
foana
Direction N/A
Argument Name
MACROS GLOBAL CONSTANTS FUNCTION PROTOTYPES CDC ACM FUNCTIONS
Initialize the CDC ACM serial emulation subclass.
Miverina
Returns SL_STATUS_OK on success or another SL_STATUS code on failure.
Description
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.
masontsivana
Type
uint16_t
uint16_t
Direction Argument Name
Description
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.
Miverina
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.
masontsivana
Type
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.
Miverina
Copyright © 2025 Silicon Laboratories. Zo rehetra voatokana.
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.
masontsivana
Type
tari-dalana
Argument Name
Description
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
Documents / Loharano
![]() |
SILICON LABS USB Device Stack [pdf] Boky torolalana USB Device Stack, Device Stack, Stack |