SILICON LABS Mwongozo wa Maagizo ya Hifadhi ya Kifaa cha USB

Hifadhi ya Kifaa cha USB

Vipimo

  • Toleo la USB: 1.5.1
  • Tarehe ya Kutolewa: Julai 21, 2025
  • Toleo la SDK Rahisi: 2025.6.1

Bidhaa Imeishaview

Rafu ya kifaa cha USB na Silicon Labs hutoa matumizi mengi na
muunganisho wa USB ulio rahisi kutumia kwa miradi ya IoT, kuwezesha
mawasiliano kati ya wasindikaji wa mtandao na majeshi.

Vipengele

  • Rafu bora ya kifaa cha USB
  • Inafaa kwa miradi ya IoT
  • Msaada wa mawasiliano kati ya wasindikaji wa mtandao na
    wenyeji

Maagizo ya Matumizi ya Bidhaa

Usanidi wa Kifaa cha USB

Sanidi mipangilio ya kifaa cha USB kulingana na mradi wako
mahitaji kwa kurejelea sehemu ya Usanidi wa Kifaa cha USB
katika nyaraka.

Mwongozo wa Kuandaa Kifaa cha USB

Fuata Mwongozo wa Kupanga Kifaa cha USB ili kuelewa jinsi ya
programu na kuingiliana na kifaa cha USB kwa anuwai
maombi.

Madarasa ya Kifaa cha USB

Sehemu ya Madarasa ya Kifaa cha USB hutoa nyongezaview ya tofauti
madarasa kama vile CDC ACM, HID, MSC SCSI, na Daraja la Wauzaji. Chagua
darasa linalofaa kulingana na utendakazi wa kifaa chako.

Utatuzi wa Kifaa cha USB

Ukikumbana na matatizo yoyote na kifaa cha USB, rejelea
Sehemu ya Utatuzi wa Kifaa cha USB kwa masuluhisho na utatuzi
vidokezo.

Microsoft Windows OS USB Host

Ikiwa unatumia kifaa cha USB kilicho na Microsoft Windows OS USB
Mpangishi, hakikisha unafuata miongozo iliyotolewa katika
nyaraka kwa ajili ya ushirikiano imefumwa.

Maswali Yanayoulizwa Mara kwa Mara

Swali: Je, ni baadhi ya watu wa zamani wa kawaidaampvifaa vidogo ninavyoweza kuunda kwa kutumia
mrundikano huu wa USB?

J: Hifadhi ya USB hukuruhusu kuunda vifaa kama vile
Adapta za USB-to-serial, panya au kibodi, hifadhi inayoweza kutolewa
vifaa, na vifaa maalum.

Swali: Je, kuna mahitaji maalum ya programu kwa kutumia hii
Rafu ya kifaa cha USB?

A: Programu Sambamba ni pamoja na Urahisi wa SDK, Urahisi
Studio, Kamanda wa Urahisi, GCC (Mkusanyiko wa Mkusanyaji wa GNU),
IAR Iliyopachikwa Workbench ya ARM, na IAR EWARM.

USB ya Universal Serial Bus

USB ya Universal Serial Bus

USB Zaidiview Zaidiview
Vidokezo vya Kutolewa kwa USB
Specifications na Features Juuview
Usanidi wa Kifaa cha USB Umeishaview
Mwongozo wa Kuandaa Kifaa cha USB Umeishaview
Madarasa ya Kifaa cha USB Yamekamilikaview Darasa la CDC ACM Limekwishaview HID Darasa Zaidiview Darasa la MSC SCSI Limekwishaview Darasa la Wachuuzi Zaidiview
Hati za API ya USB Kifaa cha USB API Kifaa cha USB ACM API a sl_usbd_cdc_ cm_line_coding_t sl_usbd_cdc_acm_callbacks_t USB Device CDC API a sl_usbd_cdc_subcl ss_driver_t USB Device Core API
sl_usbd_device_config_t sl_usbd_setup_req_t
sl_usbd_cl ss_driver_t API ya HID ya Kifaa cha USB
sl_usbd_hid_callbacks_t API ya MSC ya Kifaa cha USB
sl_usbd_msc_subcl ss_driver_t USB Device MSC SCSI API
sl_usbd_msc_callbacks_t

Hakimiliki © 2025 Silicon Laboratories. Haki zote zimehifadhiwa.

1/174

USB ya Universal Serial Bus
sl_usbd_msc_scsi_lun_ pi
sl_usbd_msc_scsi_lun_info sl_usbd_msc_scsi_lun
API ya Muuza Kifaa cha USB sl_usbd_vendor_callbacks_t
Hati za API Utatuzi wa Kifaa cha USB
Zaidiview Microsoft Windows OS USB Host
Zaidiview

Hakimiliki © 2025 Silicon Laboratories. Haki zote zimehifadhiwa.

2/174

Zaidiview
Zaidiview
Kifaa cha USB
USB ni mojawapo ya violesura vya mawasiliano vilivyofanikiwa zaidi katika historia ya mifumo ya kompyuta na ni kiwango halisi cha kuunganisha vifaa vya pembeni vya kompyuta. Rafu ya Kifaa cha Silicon Labs ni moduli ya kifaa cha USB iliyoundwa mahsusi kwa mifumo iliyopachikwa. Imejengwa kutoka chini hadi juu kwa ubora, uzani, na kutegemewa kwa Silicon Labs, imepitia mchakato mkali wa uthibitishaji ili kutii vipimo vya USB 2.0. Nyaraka hizi zinaeleza jinsi ya kuanzisha, kuanzisha na kutumia rafu ya Kifaa cha USB cha Maabara ya Silicon. Inaelezea maadili mbalimbali ya usanidi na matumizi yao. Pia inajumuisha juuview ya teknolojia, aina za uwezekano wa usanidi, taratibu za utekelezaji, na mfanoampchini ya matumizi ya kawaida kwa kila darasa linalopatikana.
Ili kukusaidia kuelewa dhana za USB kwa haraka, hati ina sifa nyingi za zamaniamples za USB zilizo na vitendaji vya kimsingi. Hawa wa zamaniamples itakupa mfumo unaokuruhusu kuunda vifaa haraka. Hawa wa zamaniamples ni pamoja na:
Adapta ya USB-to-serial (Daraja la Kifaa cha Mawasiliano) Kipanya au kibodi (Daraja la Kifaa cha Kiolesura cha Binadamu) Kifaa cha hifadhi kinachoweza kutolewa (Daraja la Hifadhi ya Misa) Kifaa maalum (Daraja la Muuzaji)
Ifuatayo ni mwishoview sehemu za nyaraka:
Vipimo na Vipengele vya Usanidi wa Kifaa cha USB Mwongozo wa Kupanga Kifaa cha USB Madarasa ya Kifaa cha USB
Hatari ya CDC ACM HID Hatari ya MSC SCSI Hatari ya Muuzaji wa Kifaa cha USB Utatuzi wa Microsoft Windows OS Mpangishi wa USB

Hakimiliki © 2025 Silicon Laboratories. Haki zote zimehifadhiwa.

3/174

USB
USB

Toleo la USB 1.5.1 tarehe 21 Julai 2025 - Vidokezo vya Kutolewa
Toleo la SDK la 2025.6.1
Rafu bora ya kifaa cha USB cha Silicon Labs inatoa muunganisho wa USB unaoweza kubadilika na rahisi kutumia kwa miradi ya IoT, ikijumuisha mawasiliano kati ya vichakataji-shirikishi vya mtandao na wapangishi. Bofya hapa kwa matoleo ya awali.
Muhtasari wa Kutolewa
Sifa Muhimu | Mabadiliko ya API | Marekebisho ya Hitilafu | Uwezeshaji wa Chip
Sifa Muhimu
Mfumo wa msingi hubadilika pekee.
Mabadiliko ya API
Hakuna.
Marekebisho ya Hitilafu
Hakuna.
Uwezeshaji wa Chip
Hakuna.
Sifa Muhimu
Vipengele Vipya | Maboresho | Vipengee Vilivyoondolewa | Vipengele Vilivyoacha kutumika
Vipengele Vipya
Hakuna.
Viboreshaji
Mfumo wa msingi hubadilika pekee.
Vipengele Vilivyoondolewa
Hakuna.
Vipengele Vilivyoacha kutumika
Hakuna.
Mabadiliko ya API
API Mpya | API zilizobadilishwa | API zilizoondolewa | API zilizoacha kutumika
API mpya

Hakimiliki © 2025 Silicon Laboratories. Haki zote zimehifadhiwa.

4/174

USB
Hakuna.
API zilizobadilishwa
Hakuna.
API zilizoondolewa
Hakuna.
API zilizoacha kutumika
Hakuna.
Marekebisho ya Hitilafu
Hakuna.
Uwezeshaji wa Chip
Hakuna.
Maombi Example Mabadiliko
Ex Mpyaamphii | Iliyorekebishwa Mfamphii | Imeondolewa Examphii | Iliyoacha kutumika Kutampchini
Ex Mpyaampchini
Hakuna.
Iliyorekebishwa Mfampchini
Hakuna.
Imeondolewa Exampchini
Hakuna.
Iliyoacha kutumika Kutampchini
Hakuna.
Athari za Mabadiliko ya Toleo
Taarifa za Athari | Mwongozo wa Uhamiaji
Taarifa za Athari
Hakuna.
Mwongozo wa Uhamiaji
Hakuna.
Masuala na Mapungufu Yanayojulikana
Hakuna.
Kwa Kutumia Toleo Hili

Hakimiliki © 2025 Silicon Laboratories. Haki zote zimehifadhiwa.

5/174

USB

Ni nini kwenye Toleo hilo? | Programu Sambamba | Ufungaji na Matumizi | Msaada na Maoni

Ni nini kwenye Toleo hilo?

Programu ya Rafu ya Kifaa cha USB Exampchini
Programu Sambamba

Programu
Unyenyekevu wa SDK Kamanda wa Urahisi wa Studio GCC Mkusanyiko wa Kikusanyaji cha GNU) IAR Iliyopachikwa Benchi la Kazi la ARM IAR EWARM

Toleo Sambamba au Lahaja
2025.6.0.

Ufungaji na Matumizi

Ili kuanza maendeleo yako tazama yetu:
Mwongozo wa Kuandaa Kifaa cha USB. Nyaraka za API.
Kwa habari kuhusu Muunganisho wa Vault Salama, angalia Vault Salama.
Kufanya upyaview Arifa za Ushauri wa Usalama na Programu na udhibiti mapendeleo yako ya arifa:
ò Nenda kwa https://community.silabs.com/. ó Ingia na kitambulisho cha akaunti yako. ô Bofya mtaalamu wakofile ikoni kwenye kona ya juu kulia ya ukurasa.
õ Chagua Arifa kutoka kwenye menyu kunjuzi. ö Katika sehemu ya Arifa, nenda kwenye kichupo cha Arifa za Bidhaa Yangu ili upyaview Ushauri wa kihistoria wa Usalama na Programu
arifa
÷ Ili kudhibiti mapendeleo yako, tumia kichupo cha Dhibiti Arifa ili kubinafsisha masasisho na ushauri wa bidhaa
kupokea.
Kwa mipangilio inayopendekezwa ya usanidi, tazama hapa.
Ili kupata maelezo zaidi kuhusu programu katika toleo hili, ingia kwenye hati zetu za mtandaoni.
Msaada na Maoni

Wasiliana na Usaidizi wa Maabara ya Silicon. Ili kutumia zana yetu ya Uliza AI kupata majibu, angalia sehemu ya utafutaji iliyo juu ya ukurasa huu.

Kumbuka: Uliza AI ni majaribio.

Pata usaidizi kutoka kwa jumuiya yetu ya wasanidi programu.
Sera ya Utoaji na Matengenezo ya SDK
Tazama Sera yetu ya Utoaji na Matengenezo ya SDK.

Hakimiliki © 2025 Silicon Laboratories. Haki zote zimehifadhiwa.

6/174

Zaidiview
Zaidiview
Vipimo
Inatii "marekebisho ya vipimo vya Universal serial Bus 2.0" Hutekeleza "Ilani ya Mabadiliko ya Kielezi cha Uhandisi wa Kiolesura (ECN)" Aina za Uhamisho
Dhibiti Ukatizaji Wingi Madarasa ya USB Darasa la Kifaa cha Mawasiliano (CDC) Muundo Muhtasari wa Kidhibiti (ACM) Kifaa cha Kiolesura cha Binadamu (HID) Daraja la Uhifadhi Misa (MSC) Mfumo wa darasa mahususi wa Muuzaji
Vipengele
Inaweza kujumuisha vipengele vinavyohitajika tu ili kupunguza alama ya kumbukumbu Inaauni Kasi Kamili (12 Mbit/s) Inaauni vifaa vyenye mchanganyiko (vitendaji vingi) Inaauni vifaa vya usanidi vingi Inaauni utendakazi wa kuokoa nishati wa USB (kifaa kusimamisha na kuendelea) Kukamilisha ujumuishaji wa Darasa la Hifadhi Misa kwenye Micrium OS. File Moduli ya mfumo Imetengenezwa kwa safu ya uondoaji ya CMSIS-RTOS2 ili iweze kufanya kazi na OS tofauti. Maabara ya Silicon GSDK inakuja na bandari za FreeRTOS na Micrium OS.

Hakimiliki © 2025 Silicon Laboratories. Haki zote zimehifadhiwa.

7/174

Zaidiview
Zaidiview

Usanidi wa Kifaa cha USB

Sehemu hii inajadili jinsi ya kusanidi Kifaa cha USB cha Maabara ya Silicon. Kuna vikundi vitatu vya vigezo vya usanidi, kama ifuatavyo:
Usanidi wa Kiini cha Kifaa cha USB Usanidi wa Maelezo ya Kifaa cha USB Usanidi wa Maunzi ya Kifaa cha USB
Usanidi wa Msingi wa Kifaa cha USB
Kifaa cha USB cha Silicon Labs kinaweza kusanidiwa kwa wakati wa kutunga kupitia seti ya #defines iliyo katika sl_usbd_core_config.h file. Kifaa cha USB hutumia #defines inapowezekana kwa sababu huruhusu ukubwa wa msimbo na data kuongezwa kwa wakati wa kukusanya kulingana na vipengele ambavyo vimewashwa. Hii inaruhusu kumbukumbu ya kusoma tu (ROM) na kumbukumbu ya ufikiaji bila mpangilio (RAM) nyayo za Kifaa cha USB cha Silicon Labs kurekebishwa kulingana na mahitaji ya programu yako.
Imependekezwa: Anzisha mchakato wa usanidi kwa thamani chaguo-msingi (zilizoangaziwa kwa herufi nzito).
Sehemu zilizo hapa chini zimepangwa kulingana na mpangilio katika usanidi wa kiolezo file, sl_usbd_core_config.h.
Usanidi wa Madarasa ya Usanidi wa Msingi
Usanidi wa Msingi
Jedwali - Mipangilio ya Usanidi wa Kifaa cha USB

Maelezo ya Mara kwa Mara

Thamani Chaguomsingi

SL_USBD_TA SK_STACK_ SIZE

Husanidi saizi ya rafu katika baiti za kazi kuu ya USBD

4096

SL_USBD_TA SK_PRIORIT Y

Husanidi kipaumbele cha kazi kuu ya USBD. Hiki ni kipaumbele cha CMSIS-RTOS2.

osPriorityHigh

SL_USBD_A UTO_START _USB_DEVIC E

Ikiwashwa, kifaa cha USB kitaanzishwa kiotomatiki punje itakapoanzishwa na kazi hiyo 1 ya msingi ya USBD imeratibiwa kwa mara ya kwanza. Ikiwa imezimwa, programu yako itahitaji kupiga simu kwa sl_usbd_core_start_device() ikiwa tayari kutambuliwa na seva pangishi ya USB.

SL_USBD_C Jumla ya idadi ya usanidi ambayo itaongezwa kupitia sl_usbd_add_configuration()

1

Chaguo za kukokotoa za ONFIGURATI.

ON_QUANTI

TY

Hakimiliki © 2025 Silicon Laboratories. Haki zote zimehifadhiwa.

8/174

Zaidiview

Mara kwa mara
SL_USBD _INTERF ACE_QU ANTITY
SL_USBD _ALT_INT ERFACE_ QUANTI
TY
SL_USBD _INTERF ACE_GR
OUP_QU
UCHUNGU
SL_USBD _DESCRI
PTOR_Q
UANTITY
SL_USBD _STRING _QUANTI
TY
SL_USBD _OPEN_E NDPOIN TS_QUA NTITY

Maelezo Idadi ya jumla ya violesura vya USB vya kuongezwa kwa usanidi wako wote. Hii inategemea sana darasa (za) zinazotumiwa. Kwa maelezo zaidi kuhusu jinsi kiolesura kinavyohitaji mfano wa darasa, rejelea sehemu ya "Rasilimali Inahitaji kutoka msingi" ya darasa lako.
Jumla ya idadi ya violesura mbadala vya USB vya kuongezwa kwa usanidi wako wote. Hii inategemea sana darasa (za) zinazotumiwa. Thamani hii lazima iwe sawa au kubwa zaidi ya SL_USBD_INTERFACE_QUANTITY kila wakati. Kwa maelezo zaidi kuhusu miingiliano mingapi mbadala ambayo mfano wa darasa unahitaji, rejelea sehemu ya "Mahitaji ya Nyenzo kutoka Msingi" ya darasa lako.
Jumla ya idadi ya vikundi vya kiolesura cha USB ambavyo vitaongezwa kwa usanidi wako wote. Hii inategemea sana darasa (za) zinazotumiwa. Kwa maelezo zaidi kuhusu ni vikundi vingapi vya kiolesura vinavyohitaji mfano wa darasa, rejelea sehemu ya "Mahitaji ya Nyenzo kutoka Msingi" ya darasa lako.
Jumla ya idadi ya maelezo ya Endpoint ambayo itaongezwa kwa usanidi wako wote. Hii inategemea sana darasa (za) zinazotumiwa. Kwa maelezo zaidi kuhusu idadi ya vifafanuzi vya mwisho ambavyo mfano wa darasa unahitaji, rejelea "Idadi ya vidokezo" katika sehemu ya "Mahitaji ya Nyenzo kutoka Msingi" ya darasa lako. Kumbuka kuwa sehemu za udhibiti hazihitaji kuzingatiwa hapa. Jumla ya idadi ya mifuatano ya USB. Kuweka wingi hadi sifuri kutazima kipengele. Kuzima hii kutasababisha kifaa kutohifadhi mifuatano yoyote ya maelezo ya USB iliyopitishwa kutoka kwa programu. Hii inamaanisha kuwa mwenyeji hataweza kupata mifuatano ya maelezo (kama vile mtengenezaji na jina la bidhaa). Jumla ya idadi ya vituo vilivyofunguliwa kwa kila usanidi. Kifaa kinahitaji angalau ncha mbili zilizofunguliwa kwa uhamishaji wa udhibiti, lakini lazima pia uongeze sehemu za mwisho za darasa zilizotumiwa. Kwa maelezo zaidi kuhusu ni sehemu ngapi za mwisho ambazo mfano wa darasa unahitaji, rejelea "Idadi ya vidokezo" katika sehemu ya "Mahitaji ya Nyenzo kutoka Msingi" ya darasa lako.

Thamani Chaguomsingi
10 10
2
20 30 20

Usanidi wa Madarasa
Madarasa yana usanidi maalum wa wakati wa mkusanyiko. Rejelea Madarasa ya Kifaa cha USB kwa maelezo zaidi.
Usanidi wa Taarifa ya Kifaa cha USB

Usanidi wa sl_usbd_device_config.h file hukusanya tena wakati wa kukusanya #define-s ili kuweka maelezo ya msingi kuhusu kifaa chako, kama vile Kitambulisho cha Muuzaji/Bidhaa, nyuzi za kifaa, n.k. Jedwali lililo hapa chini linafafanua kila ufafanuzi wa usanidi wa maelezo unaopatikana katika usanidi huu. file.

Jedwali - Usanidi wa Taarifa ya Kifaa cha USB Inafafanua

Mara kwa mara
SL_USBD_DEVIC E_VENDOR_ID
SL_USBD_DEVIC E_PRODUCT_ID

Maelezo Nambari yako ya kitambulisho cha mchuuzi kama inavyoletwa na Mkutano wa Watekelezaji wa USB. Kwa maelezo zaidi kuhusu jinsi unavyoweza kupata kitambulisho cha mchuuzi, angalia http://www.usb.org/developers/vendor/. Nambari ya utambulisho wa bidhaa yako.

Hakimiliki © 2025 Silicon Laboratories. Haki zote zimehifadhiwa.

9/174

Zaidiview

Mara kwa mara

Maelezo

SL_USBD_DEVICE_RELEASE Nambari ya toleo ya kifaa chako. _NUMBER

SL_USBD_DEVICE_MANUFA Kamba inayoelezea mtengenezaji wa kifaa chako. Usanidi huu hauzingatiwi wakati

CTURER_STRING

usanidi SL_USBD_STRING_QUANTITY umewekwa kuwa 0.

SL_USBD_DEVICE_PRODUC Mfuatano unaoelezea bidhaa yako. Mipangilio hii inapuuzwa wakati usanidi

T_STRING

SL_USBD_STRING_QUANTITY imewekwa kuwa 0.

Mfuatano wa SL_USBD_DEVICE_SERIAL_N ulio na nambari ya ufuatiliaji ya kifaa chako. Usanidi huu hauzingatiwi wakati

UBER_STRING

usanidi SL_USBD_STRING_QUANTITY umewekwa kuwa 0.

SL_USBD_DEVICE_LANGUA Nambari ya utambulisho ya lugha ya mifuatano ya kifaa chako. Thamani zinazowezekana ni:
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

Mipangilio hii inapuuzwa wakati usanidi wa SL_USBD_STRING_QUANTITY umewekwa kuwa 0.

Usanidi wa Maunzi ya Kifaa cha USB

Kulingana na kifaa cha Silicon Labs unachotumia, unaweza kuwa na pini ya GPIO na mlango wa kusanidi kwa mawimbi ya USB VBUS Sense. Ufafanuzi wa usanidi uko kwenye kichwa cha sl_usbd_hardware_config.h file.

Mara kwa mara
SL_USBD_DRIVER_VBUS_SENSE_PORT SL_USBD_DRIVER_VBUS_SENSE_PIN

Maelezo
Mlango wa GPIO wa ishara ya USB VBUS Sense kwenye ubao wako. GPIO Pin kwa mawimbi ya USB VBUS Sense kwenye ubao wako.

Hakimiliki © 2025 Silicon Laboratories. Haki zote zimehifadhiwa.

10/174

Zaidiview
Zaidiview
Mwongozo wa Kuandaa Kifaa cha USB
Sehemu hii inaelezea jinsi ya kutumia moduli ya Kifaa cha USB.
Usanidi wa Awali wa Moduli ya Kifaa cha USB
Sehemu hii inaeleza hatua za msingi zinazohitajika ili kuanzisha moduli ya Kifaa cha USB na kuongeza, kuandaa na kuanzisha kifaa. Kuanzisha Moduli ya Kifaa cha USB Kuanzisha Kiini cha Kifaa cha USB Kuanzisha ss(es) za aCl Kuongeza Kifaa Chako cha USB Kujenga Kifaa chako cha USB Kuongeza Mipangilio Kuongeza Vitendaji vya USB Kuanzisha Kifaa Chako cha USB.
Tukio Hook Kazi
Kuanzisha Moduli ya Kifaa cha USB
Kuanzisha Msingi wa Kifaa cha USB
a US a Anza kwa kuanzisha msingi wa moduli ya kifaa B kwa kuunda chaguo za kukokotoa sl_usbd_core_init() . T aa mfano hapa chini inaonyesha c lling sl_usbd_core_init() .
Example - kupiga simu sl_usbd_core_init()
sl_status_t hali; hali = sl_usbd_core_init(); ikiwa (hali ! SL_STATUS_OK) { /* Hitilafu ilitokea. Ushughulikiaji wa hitilafu unapaswa kuongezwa hapa. */
}
Kuanzisha Madarasa
Baada ya msingi wa sehemu ya kifaa cha USB kuanzishwa, lazima uanzishe kila darasa unalokusudia kutumia. Tazama sehemu ya "Mwongozo wa Upangaji" wa acl ss(es) zako kwa maelezo zaidi.
Kuunda Kifaa chako cha USB
Inaongeza Mipangilio
Baada ya kuanzisha kifaa chako kwa ufanisi, unaweza kuanza kuongeza vitendaji vya USB kwake, kuanzia na usanidi mpya. Kifaa lazima kiwe na angalau usanidi mmoja. Ili kuongeza tion za usanidi, piga chaguo za kukokotoa aa sl_usbd_core_ dd_configur tion() chaguo. Chaguo hili la kukokotoa lazima liitwe kwa kila usanidi unaotaka kuongeza. Example hapa chini inaonyesha jinsi ya kuongeza Kasi Kamili.
Example - Kuongeza Mipangilio kwenye Kifaa chako

Hakimiliki © 2025 Silicon Laboratories. Haki zote zimehifadhiwa.

11/174

Zaidiview

sl_status_t hali; uint8_t config_nbr_fs;

/* Kuongeza usanidi wa kasi kamili kwenye kifaa. */

hali = sl_usbd_core_add_configuration(0,

/* Hakuna sifa maalum kwa usanidi. */

100u,

/* Matumizi ya nguvu ya juu zaidi: 100mA.

*/

SL_USBD_DEVICE_SPEED_FULL,

/* Usanidi wa Kasi Kamili.

*/

"Sanidi Ongeza Example usanidi wa Kasi Kamili",

&config_nbr_fs);

ikiwa (hali ! SL_STATUS_OK) {

/* Hitilafu imetokea. Ushughulikiaji wa hitilafu unapaswa kuongezwa hapa. */

}

Kuongeza Kazi za USB
Baada ya kuongeza angalau usanidi mmoja kwenye kifaa chako, unaweza kuongeza violesura na sehemu za mwisho kwenye kifaa chako. Kila darasa la USB lina mahitaji yake kulingana na kiolesura na aina ya ncha, wingi na vigezo vingine. Kifaa cha USB cha Maabara ya Silicon huongeza violesura na sehemu za mwisho katika darasa zinazotolewa.
Kutoka kwa programu yako, unaweza kuanzisha darasa la USB na kuiongeza kwenye usanidi. Kwa maelezo zaidi kuhusu dhana ya matukio ya darasa la kifaa cha USB, angalia Madarasa ya Kifaa cha USB. Kumbuka kuwa unaweza kusisitiza na kuongeza hali nyingi tofauti za darasa kwenye usanidi ili kuunda kifaa chenye kazi nyingi (composite).
Example hapa chini inaonyesha jinsi ya kuunda mfano wa darasa na kuiongeza kwenye usanidi.
Example - Kuongeza Tukio la Hatari kwenye Kifaa Chako

sl_status_t hali; uint8_t class_nbr;
/* Unda mfano wa darasa unalotaka kutumia.*/ /* Kumbuka kuwa kulingana na darasa chaguo hili la kukokotoa linaweza kuwa na hoja zaidi. */ hali = sl_usbd_ _tengeneza_mfano(&class_nbr); ikiwa (hali ! SL_STATUS_OK) { /* Hitilafu ilitokea. Ushughulikiaji wa hitilafu unapaswa kuongezwa hapa. */}
/* Ongeza mfano wa darasa kwenye usanidi wa Kasi Kamili. */ hali = sl_usbd_ _add_to_configuration(class_nbr, /* Nambari ya darasa imerudishwa na sl_usbd_ _tengeneza_mfano. */
config_nbr_fs); /* Nambari ya usanidi imerejeshwa na sl_usbd_core_add_configuration(). */ ikiwa (hali ! SL_STATUS_OK) { /* Hitilafu imetokea. Ushughulikiaji wa hitilafu unapaswa kuongezwa hapa. */}
Inaanzisha Kifaa chako cha USB
Kwa chaguo-msingi, kifaa kitaanzishwa kiotomatiki na kazi ya msingi ya kifaa cha USB baada ya uanzishaji wa kifaa kukamilika na kernel kuanza. Ili kudhibiti wakati kifaa kinaanzishwa na kuonekana na seva pangishi ya USB, tumia usanidi wa SL_USBD_AUTO_START_USB_DEVICE ili kuzima kipengele cha kuwasha kiotomatiki. Inapozimwa, baada ya kuunda/kutayarisha kifaa chako, unaweza kukianzisha na kukifanya kionekane kwa seva pangishi ya USB kwa kupiga simu sl_usbd_core_start_device() .
Example hapa chini inaonyesha jinsi ya kuanzisha kifaa chako kwa kutumia sl_usbd_core_start_device() chaguo la kukokotoa.
Example - Kuanzisha Kifaa Chako

Hakimiliki © 2025 Silicon Laboratories. Haki zote zimehifadhiwa.

12/174

Zaidiview

sl_status_t hali;
hali = sl_usbd_core_start_device(); ikiwa (hali ! SL_STATUS_OK) { /* Hitilafu ilitokea. Ushughulikiaji wa hitilafu unapaswa kuongezwa hapa. */}

Tukio Hook Kazi
Sehemu ya msingi ya Kifaa cha USB hutoa vitendaji viwili dhaifu vya ndoano ambavyo unaweza kufafanua upya katika programu yako. Madhumuni yao ni kuarifu matukio ya basi na usanidi yanapotokea.
Jedwali - Kazi za Ndoano za Tukio la USB

Tukio

Maelezo

Basi

Huitwa tukio la Basi la USB linapotokea

Usanidi Unaitwa wakati tukio la Usanidi wa USB linatokea

Sahihi ya Kazi
utupu sl_usbd_on_bus_event(tukio la sl_usbd_bus_event_t); utupu sl_usbd_on_config_event(tukio la sl_usbd_config_event_t, uint8_t config_nbr);

Example - Kazi za Hook za Tukio

utupu sl_usbd_on_bus_event(sl_usbd_bus_event_t tukio) { badilisha (tukio) { case SL_USBD_EVENT_BUS_CONNECT:
// inaitwa wakati kebo ya USB imeingizwa kwenye mapumziko ya mtawala wa mwenyeji;
kesi SL_USBD_EVENT_BUS_DISCONNECT: // inaitwa wakati kebo ya USB inatolewa kutoka kwa kizuizi cha kidhibiti cha seva pangishi;
kesi SL_USBD_EVENT_BUS_RESET: // inaitwa wakati seva pangishi inatuma mapumziko ya amri ya kuweka upya;
kesi SL_USBD_EVENT_BUS_SUSPEND: // inaitwa wakati seva pangishi inatuma uvunjaji wa amri ya kusimamisha;
kesi SL_USBD_EVENT_BUS_RESUME: // inaitwa wakati seva pangishi inatuma mapumziko ya amri ya kuamka;
default: kuvunja; }}
void sl_usbd_on_config_event(sl_usbd_config_event_t tukio, uint8_t config_nbr) {badilisha (tukio) {kesi SL_USBD_EVENT_CONFIG_SET:
// inaitwa wakati mwenyeji anaweka mapumziko ya usanidi;
kesi SL_USBD_EVENT_CONFIG_UNSET: // inaitwa wakati usanidi haujawekwa;
default: kuvunja; }}

Hakimiliki © 2025 Silicon Laboratories. Haki zote zimehifadhiwa.

13/174

Zaidiview

Hakimiliki © 2025 Silicon Laboratories. Haki zote zimehifadhiwa.

14/174

Zaidiview
Zaidiview

Madarasa ya Kifaa cha USB

Madarasa ya USB yanayopatikana katika Kifaa cha USB cha Silicon Labs hushiriki baadhi ya sifa za kawaida. Sehemu hii inaelezea sifa hizi na mwingiliano wao na safu ya msingi.
Kwa habari zaidi juu ya darasa maalum, angalia zifuatazo:
Darasa la CDC ACM HID Class MSC SCSI Hatari ya Muuzaji
Kuhusu Matukio ya Darasa
Madarasa ya USB yanayopatikana katika Kifaa cha USB hutekeleza dhana ya matukio ya darasa. Mfano wa darasa huwakilisha chaguo la kukokotoa ndani ya kifaa. Kazi inaweza kuelezewa na kiolesura kimoja au kwa kikundi cha miingiliano na ni ya darasa maalum.
Kila utekelezaji wa darasa la USB una usanidi na kazi fulani zinazofanana, kulingana na dhana ya mfano wa darasa. Mipangilio ya kawaida na kazi zinawasilishwa kwenye jedwali hapa chini. Katika kichwa cha safu wima 'Constants au Function', kishikilia nafasi XXXX kinaweza kubadilishwa na jina la darasa: CDC, HID, MSC, CDC_ACM au VENDOR (Muuzaji kwa majina ya chaguo za kukokotoa).
Jedwali - Mara kwa mara na Kazi Zinazohusiana na Dhana ya Matukio ya Darasa Nyingi

Mara kwa mara au Kazi
SL_USBD_XXX_CL ASS_INS TANCE_QUANTITY
SL_USBD_XXX_CONFIGUR ATION_QUANTITY
sl_usb d _XXXX_cre walikula _insta nce ()
sl_usbd_XXXX_add_to_conf iguration()

Maelezo
Husanidi idadi ya juu zaidi ya matukio ya darasa.
Husanidi idadi ya juu zaidi ya usanidi. Wakati wa uanzishaji wa darasa, mfano wa darasa ulioundwa utaongezwa kwa usanidi mmoja au zaidi. Huunda mfano mpya wa darasa.
Huongeza mfano wa darasa uliopo kwenye usanidi uliobainishwa wa kifaa.

Kwa upande wa utekelezaji wa nambari, darasa litatangaza utofauti wa kimataifa wa ndani ambao una muundo wa udhibiti wa darasa. Muundo huu wa udhibiti wa darasa unahusishwa na mfano wa darasa moja na utakuwa na taarifa maalum ya kudhibiti mfano wa darasa.
Takwimu zifuatazo zinaonyesha matukio kadhaa ya kesi. Kila takwimu inajumuisha msimbo wa zamaniample ambayo inalingana na hali ya kesi.
Kielelezo - Matukio ya Hatari Nyingi - Kifaa cha FS (Usanidi 1 na Kiolesura 1) kinawakilisha kifaa cha kawaida cha USB. Kifaa kina Kasi Kamili (FS) na kina usanidi mmoja. Utendakazi wa kifaa unaelezewa na kiolesura kimoja kilicho na jozi ya ncha za mawasiliano ya data. Mfano wa darasa moja umeundwa na utakuruhusu kudhibiti kiolesura kizima na sehemu yake ya mwisho inayohusika.
Kielelezo - Matukio ya Hatari Nyingi - Usanidi wa Kifaa cha 1 cha FS na Kiolesura 1)

Hakimiliki © 2025 Silicon Laboratories. Haki zote zimehifadhiwa.

15/174

Zaidiview

Nambari inayolingana na Kielelezo - Matukio ya Darasa Nyingi - Kifaa cha FS (Usanidi 1 na Kiolesura 1) imeonyeshwa kwenye ex.ample chini.
Example - Matukio ya Darasa Nyingi - Usanidi wa Kifaa cha 1 cha FS chenye Kiolesura 1)

sl_status_t hali; uint8_t darasa_0;

void app_usbd_XXX_enable(uint8_t class_nbr) {/* Shikilia Class kuwezesha tukio. */}

programu batili_usbd_XXX_lemaza(uint8_t class_nbr) {/* Shikilia tukio la kuzima Hatari. */}

sl_usbd_XXX_callbacks_t class_callbacks = {

(1)

.wezesha = app_usbd_XXX_wezesha,

.zima = app_usbd_XXX_lemaza

};

hali = sl_usbd_XXX_init();

(2)

ikiwa (hali ! SL_STATUS_OK) {

/* $$$$ Shughulikia hitilafu. */

}

status = sl_usbd_XXX_create_instance(&callbacks_ya darasa,

(3)

&class_0);

ikiwa (hali ! SL_STATUS_OK) {

/* $$$$ Shughulikia hitilafu. */

}

hali = sl_usbd_XXX_add_to_configuration(darasa_0, config_0);

(4)

ikiwa (hali ! SL_STATUS_OK) {

/* $$$$ Shughulikia hitilafu. */

}

(1) Kila darasa hutoa seti ya vitendakazi vya kupiga simu tena kwa matukio ya kuunganisha/kukata kifaa na kwa matukio mahususi ya darasa. Kitu cha muundo wa kurudi nyuma hupitishwa kama hoja wakati wa kuunda mfano wa darasa na sl_usbd_XXX_create_instance()
kazi.
(1) Anzisha darasa. Vigezo vyote vya ndani, miundo, na bandari za darasa zitaanzishwa. Kumbuka kuwa kazi ya Init() katika baadhi ya madarasa inaweza kuchukua hoja zingine.

Hakimiliki © 2025 Silicon Laboratories. Haki zote zimehifadhiwa.

16/174

Zaidiview
(2) Unda mfano wa darasa, ambao ni class_0 . Chaguo za kukokotoa sl_usbd_XXXX_create_instance() hutenga muundo wa udhibiti wa darasa unaohusishwa na class_0 . Kulingana na darasa, sl_usbd_XXX_create_instance() inaweza kuwa na vigezo vya ziada kando na nambari ya darasa ambayo inawakilisha maelezo mahususi ya darasa yaliyohifadhiwa katika muundo wa udhibiti wa darasa. aaa (3) Ongeza cl ss inst nce, class_0 , kwa nambari maalum ya usanidi, config_0 . sl_usbd_XXX_add_to_configuration() itaunda kiolesura 0 na ncha zake zinazohusiana za IN na OUT. Kama matokeo, mfano wa darasa unajumuisha kiolesura 0 na miisho yake. Mawasiliano yoyote yanayofanywa kwenye kiolesura 0 yatatumia nambari ya mfano ya darasa, class_0 . Kielelezo - Matukio ya Hatari Nyingi - Kifaa cha FS (Mipangilio 2 na Violesura Nyingi) inawakilisha zamani ngumu zaidi.ample. Kifaa cha kasi kamili kinaundwa na usanidi mbili. Kifaa kina vipengele viwili vya kukokotoa ambavyo ni vya darasa moja, lakini kila chaguo la kukokotoa linafafanuliwa na violesura viwili na kina jozi ya miisho ya pande mbili. Katika hii exampna, hali mbili za darasa zinaundwa. Kila mfano wa darasa unahusishwa na kundi la violesura tofauti na Kielelezo - Matukio ya Hatari Nyingi - Kifaa cha FS (Usanidi 1 wenye Kiolesura 1) na Kielelezo - Matukio ya Angala Nyingi - Kifaa cha FS (Mipangilio 2 na Violesura Nyingi) ambapo mfano wa darasa ulihusishwa na kiolesura kimoja.
Kielelezo - Matukio ya Hatari Nyingi - Mipangilio ya Kifaa cha 2 cha FS na Violesura vingi)

Nambari inayolingana na Kielelezo - Matukio ya Darasa Nyingi - Kifaa cha FS (Mipangilio 2 na Violesura vingi) imeonyeshwa kwenye ex.ample chini. Ushughulikiaji wa hitilafu umeachwa kwa uwazi.
Example - Matukio ya Darasa Nyingi - Usanidi wa Kifaa cha 2 cha FS na Miingiliano Nyingi)

Hakimiliki © 2025 Silicon Laboratories. Haki zote zimehifadhiwa.

17/174

Zaidiview

sl_status_t hali; uint8_t darasa_0; uint8_t darasa_1;
hali = sl_usbd_XXX_init();
hali = sl_usbd_XXX_create_instance(&class_0); hali = sl_usbd_XXX_create_instance(&class_1);
hali = sl_usbd_XXX_add_to_configuration(darasa_0, cfg_0); hali = sl_usbd_XXX_add_to_configuration(darasa_1, cfg_0);
hali = sl_usbd_XXX_add_to_configuration(darasa_0, cfg_1); hali = sl_usbd_XXX_add_to_configuration(darasa_1, cfg_1);

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

(1) Anzisha darasa. Vigezo vyovyote vya ndani, miundo, na bandari za darasa zitaanzishwa.
(2) Unda mfano wa darasa, class_0 . Chaguo za kukokotoa sl_usbd_XXXX_create_instance() hutenga muundo wa udhibiti wa darasa unaohusishwa na class_0 .
(3) Unda mfano wa darasa, class_1 . Chaguo za kukokotoa sl_usbd_XXXX_create_instance() hutenga muundo mwingine wa udhibiti wa darasa unaohusishwa na class_1 .
(4) Ongeza mfano wa darasa, class_0 , kwa usanidi, cfg_0 . sl_usbd_XXX_add_to_configuration() itaunda kiolesura 0, kiolesura cha 1, violesura mbadala, na ncha zinazohusiana za IN na OUT. Nambari ya mfano ya darasa, class_0 , itatumika kwa mawasiliano yoyote ya data kwenye kiolesura 0 au kiolesura cha 1.
(5) Ongeza mfano wa darasa, class_1 , kwa usanidi, cfg_0 . sl_usbd_XXXX_add_to_configuration() itaunda kiolesura cha 2, kiolesura cha 3 na ncha zake zinazohusiana za IN na OUT. Nambari ya mfano ya darasa, class_1 , itatumika kwa mawasiliano yoyote ya data kwenye kiolesura cha 2 au kiolesura cha 3.
(6) Ongeza hali sawa za darasa, class_0 na class_1 , kwa usanidi mwingine, cfg_1 .
Kila darasa linafafanua muundo wa aina sl_usbd_XXX_callbacks_t . Madhumuni yake ni kutoa kila darasa seti ya vitendakazi vya kupiga simu kitakachoitwa tukio linapotokea. Vitendaji viwili vya kurudisha nyuma vipo katika kila darasa. Zinawasilishwa kwenye jedwali hapa chini.
Jedwali - Kazi za Kawaida za Kurudishwa kwa Hatari

Ufafanuzi wa Sehemu .wezesha Inaitwa wakati mfano wa darasa la USB umewashwa kwa ufanisi. .zima Imeitwa wakati mfano wa darasa la USB umezimwa.

Programu isiyo na kipengele cha Sahihi_usbd_XXX_enable(uint8_t class_nbr); programu batili_usbd_XXX_lemaza(uint8_t class_nbr);

Hakimiliki © 2025 Silicon Laboratories. Haki zote zimehifadhiwa.

18/174

Zaidiview
Zaidiview
Darasa la ACM la Kifaa cha USB cha CDC
Darasa la Msingi la Kifaa cha USB CDC Imekwishaview Kifaa cha USB CDC ACM Nyenzo ya Hatari Mahitaji kutoka Core USB Kifaa CDC ACM Subclass Overview Usanidi wa Darasa la Kifaa cha CDC cha ACM cha Usanidi wa Kifaa cha USB CDC Mwongozo wa Kuandaa Hatari wa ACM
Sehemu hii inafafanua darasa la Kifaa cha Mawasiliano (CDC) na aina ndogo ya CDC inayohusishwa na mrundikano wa Kifaa cha USB cha Silicon Labs. Kifaa cha USB cha Maabara ya Silicon kwa sasa kinaauni Muundo wa Kidhibiti Muhtasari (ACM), ambao hutumiwa sana kwa uigaji wa mfululizo.
CDC inajumuisha vifaa mbalimbali vya mawasiliano ya simu na mitandao. Vifaa vya mawasiliano ya simu vinajumuisha modemu za analogi, simu za analogi na dijitali, adapta za terminal za ISDN, n.k. Kwa ex.ample, vifaa vya mitandao vina ADSL na modemu za kebo, adapta za Ethaneti, na vitovu. CDC inafafanua mfumo wa kujumuisha viwango vilivyopo vya huduma za mawasiliano, kama vile V.250 (kwa modemu kupitia mtandao wa simu) na Ethaneti (kwa vifaa vya mtandao wa eneo la karibu), kwa kutumia kiungo cha USB. Kifaa cha mawasiliano kinasimamia usimamizi wa kifaa, udhibiti wa simu inapohitajika na utumaji data.
CDC inafafanua vikundi saba vya vifaa. Kila kikundi ni cha mfano wa mawasiliano, ambayo inaweza kujumuisha aina kadhaa. Kila kikundi cha vifaa kina hati yake ya kubainisha kando na darasa la msingi la CDC. Vikundi saba ni:
Mtandao wa Simu Zilizobadilishwa kwa Umma (PSTN), vifaa vinavyojumuisha modemu za bendi ya sauti, simu na vifaa vya kuiga mfululizo. Vifaa vya Integrated Services Digital Network (ISDN), ikiwa ni pamoja na adapta za terminal na simu. Vifaa vya Muundo wa Udhibiti wa Ethernet (ECM), ikijumuisha vifaa vinavyoauni familia ya IEEE 802 (mf.: modemu za kebo na ADSL, adapta za WiFi). Vifaa vya Hali ya Uhamisho Asynchronous (ATM), ikijumuisha modemu za ADSL na vifaa vingine vilivyounganishwa kwenye mitandao ya ATM (vituo vya kazi, vipanga njia, swichi za LAN). Vifaa vya Wireless Mobile Communications (WMC), ikiwa ni pamoja na vifaa vya mawasiliano vinavyofanya kazi mbalimbali vinavyotumika kudhibiti mawasiliano ya sauti na data. Vifaa vya Muundo wa Ethernet (EEM) vinavyobadilishana data yenye fremu ya Ethaneti. Vifaa vya Muundo wa Kudhibiti Mtandao (NCM), ikijumuisha vifaa vya mtandao wa kasi ya juu (modemu za Ufikiaji wa Kifurushi cha Kasi ya Juu, Vifaa vya Kituo cha Mistari)
CDC na utekelezaji wa tabaka dogo linalohusika unatii masharti yafuatayo:
Universal Serial Bus, Ufafanuzi wa Hatari kwa Vifaa vya Mawasiliano, Marekebisho 1.2, Novemba 3 2010. Universal Serial Bus, Mawasiliano, Mada ndogo ya Vifaa vya PSTN, Marekebisho 1.2, Februari 9 2007.
Darasa la Msingi la Kifaa cha USB CDC Imekwishaview
Kifaa cha CDC kinaundwa na violesura vifuatavyo ili kutekeleza uwezo wa mawasiliano:
Kiolesura cha Daraja la Mawasiliano (CCI) kinawajibika kwa usimamizi wa kifaa na kwa hiari udhibiti wa simu. The
usimamizi wa kifaa huwezesha usanidi na udhibiti wa jumla wa kifaa na arifa ya matukio kwa seva pangishi. Usimamizi wa simu huwezesha kuanzishwa na kusitisha simu. Udhibiti wa simu unaweza kuzidishwa kupitia DCI. CCI ni ya lazima kwa vifaa vyote vya CDC. Inabainisha chaguo za kukokotoa za CDC kwa kubainisha muundo wa mawasiliano unaotumika na kifaa cha CDC. Kiolesura kinachofuata CCI kinaweza kuwa kiolesura chochote cha darasa la USB, kama vile Sauti au kiolesura mahususi cha muuzaji. Kiolesura maalum cha muuzaji kinawakilishwa haswa na DCI.
Kiolesura cha Data Class (DCI) kinawajibika kwa usambazaji wa data. Data inayotumwa na/au iliyopokelewa haifuati maalum
umbizo. Data inaweza kuwa data mbichi kutoka kwa laini ya mawasiliano, data inayofuata umbizo la wamiliki, n.k. DCI zote zinazofuata CCI zinaweza kuonekana kama violesura vya chini.
Kifaa cha CDC lazima kiwe na angalau CCI moja na DCI sufuri au zaidi. CCI moja na DCI yoyote ya chini kwa pamoja hutoa kipengele kwa mwenyeji. Uwezo huu pia unajulikana kama chaguo za kukokotoa. Katika kifaa cha mchanganyiko wa CDC, unaweza kuwa na kadhaa

Hakimiliki © 2025 Silicon Laboratories. Haki zote zimehifadhiwa.

19/174

Zaidiview
kazi. Kwa hivyo, kifaa hicho kitakuwa na seti kadhaa za CCI na DCI kama inavyoonyeshwa kwenye Kielelezo - Kifaa Kinachojumuisha CDC.
Kielelezo - Kifaa cha Mchanganyiko wa CDC

Kifaa cha CDC kinaweza kutumia mchanganyiko ufuatao wa ncha:
Jozi ya vidhibiti vya IN na OUT vinaitwa mwisho chaguomsingi. Wingi wa hiari au ukatize KATIKA sehemu ya mwisho. Jozi ya sehemu nyingi au isochronous IN na OUT mwisho. Kumbuka kuwa Rafu ya kifaa cha USB ya Maabara ya Silicon haiauni ncha za isochronous kwa sasa.
Jedwali hapa chini linaonyesha matumizi ya miisho tofauti na ni kiolesura kipi cha CDC zinatumika.
Jedwali - Matumizi ya Mwisho wa CDC

Mwisho
Dhibiti IN
Dhibiti OUT
Katisha au wingi KATIKA Wingi au isochronous KATIKA Wingi au isochronous
NJE

Mwelekeo
Kifaa-mwenyeji
Kifaa cha mwenyeji
Kifaa-mwenyeji
Kifaa-mwenyeji
Kifaa cha mwenyeji

Matumizi ya Kiolesura

CCI

Maombi ya kawaida ya kuhesabu, maombi ya darasa mahususi, kifaa

usimamizi, na usimamizi wa simu kwa hiari.

CCI

Maombi ya kawaida ya kuhesabu, maombi ya darasa mahususi, kifaa

usimamizi, na usimamizi wa simu kwa hiari.

CCI

Arifa ya matukio, kama vile kutambua pete, hali ya mstari wa mfululizo, hali ya mtandao.

DCI

Mawasiliano ya data ghafi au iliyoumbizwa.

DCI

Mawasiliano ya data ghafi au iliyoumbizwa.

Vifaa vingi vya mawasiliano hutumia sehemu ya mwisho ya kukatiza ili kuarifu mwenyeji wa matukio. Miisho ya Isochronous haipaswi kutumiwa kwa usambazaji wa data wakati itifaki ya wamiliki inategemea utumaji upya wa data ikiwa kuna hitilafu za itifaki ya USB. Mawasiliano ya Isochronous yanaweza kupoteza data kwa asili kwa kuwa haina mbinu za kujaribu tena.
Miundo saba mikuu ya mawasiliano inajumuisha mada ndogo kadhaa. Darasa dogo linaelezea jinsi kifaa kinapaswa kutumia CCI kushughulikia udhibiti wa kifaa na udhibiti wa simu. Jedwali hapa chini linaonyesha aina ndogo zote zinazowezekana na muundo wa mawasiliano wanaohusika.
Jedwali - Vikundi vidogo vya CDC

Darasa ndogo
Muundo wa Muhtasari wa Kudhibiti Mstari wa Moja kwa Moja

Mfano wa Mawasiliano
PSTN
PSTN

Example ya Vifaa vinavyotumia Daraja hili
Vifaa vya Modem vinavyodhibitiwa moja kwa moja na seva pangishi ya USB
Vifaa vya kuiga mfululizo, vifaa vya modemu vinavyodhibitiwa kupitia seti ya amri ya mfululizo

Hakimiliki © 2025 Silicon Laboratories. Haki zote zimehifadhiwa.

20/174

Zaidiview

Darasa ndogo

Mfano wa Mawasiliano

Example ya Vifaa vinavyotumia Daraja hili

Mfano wa Kudhibiti Simu

PSTN

Muundo wa ISDN wa Udhibiti wa Vituo vingi

Muundo wa Udhibiti wa CAP ISDN

Muundo wa Udhibiti wa Mtandao wa Ethernet wa ECM

Mtandao wa ATM

ATM

Mfano wa Kudhibiti

Muundo wa Udhibiti wa Kifaa kisicho na waya

WMC

Usimamizi wa Kifaa WMC

Muundo wa Line Direct Line

WMC

OBEX

WMC

Mfano wa EEM wa Uigaji wa Ethernet

Muundo wa Kudhibiti Mtandao

NCM

Vifaa vya simu za sauti
Adapta za terminal za kiwango cha msingi, adapta za terminal za kiwango cha msingi, simu
Adapta za terminal za viwango vya msingi, adapta za terminal za viwango vya msingi, modemu za kebo za DOC-SIS za simu, modemu za ADSL zinazotumia uigaji wa PPPoE, adapta za Wi-Fi (IEEE 802.11-familia), adapta za IEEE 802.3 modemu za ADSL
Vifaa vya terminal vya rununu vinavyounganishwa na vifaa visivyo na waya
Vifaa vya terminal vya rununu vinavyounganishwa na vifaa visivyotumia waya Vifaa vya terminal vya rununu vinavyounganisha kwenye vifaa visivyotumia waya
Vifaa vya terminal vya rununu vinavyounganishwa kwenye vifaa visivyotumia waya Vifaa vinavyotumia fremu za Ethaneti kama safu inayofuata ya usafiri. Haikusudiwa kuelekeza na vifaa vya muunganisho wa Mtandao IEEE 802.3 adapta zinazobeba kipimo data cha kasi ya juu kwenye mtandao

Mahitaji ya Nyenzo ya Hatari ya ACM ya Kifaa cha USB CDC kutoka Core

Kila wakati unapoongeza mfano wa darasa la CDC ACM kwenye usanidi wa USB kupitia simu kwa chaguo za kukokotoa sl_usbd_cdc_acm_add_to_configuration() , rasilimali zifuatazo zitatolewa kutoka msingi.

Rasilimali
Violesura Violesura Mbadala Vikundi vya Kiolesura cha Pointi za Mwisho

Kiasi
2 2 3 1

Kumbuka kuwa nambari hizo ni kwa usanidi. Unapoweka SL_USBD_INTERFACE_QUANTITY , SL_USBD_ALT_INTERFACE_QUANTITY , SL_USBD_INTERFACE_GROUP_QUANTITY na SL_USBD_DESCRIPTOR_QUANTITY thamani za usanidi, usisahau kuzingatia ni usanidi ngapi ambao darasa utaongezwa. Kwa thamani ya usanidi ya SL_USBD_OPEN_ENDPOINTS_QUANTITY, kwa kuwa sehemu za mwisho hufunguliwa tu wakati usanidi umewekwa na seva pangishi, unahitaji tu kuzingatia idadi ya vituo vinavyohitajika kwa mfano wa darasa.
Kifaa cha USB CDC ACM Subclass Juuview

Darasa msingi la CDC linajumuisha Kiolesura cha Hatari cha Mawasiliano (CCI) na Kiolesura cha Hatari cha Data (DCI), ambacho kinajadiliwa kwa kina katika Daraja la Msingi la Kifaa cha USB CDC.view . Sehemu hii inajadili CCI ya aina ya ACM. Ina sehemu ya mwisho chaguomsingi ya kipengee cha usimamizi na sehemu ya kukatiza ya kipengele cha arifa. Jozi ya sehemu nyingi za mwisho hutumika kubeba data ambayo haijabainishwa kwenye DCI.
Aina ndogo ya ACM hutumiwa na aina mbili za vifaa vya mawasiliano:
Vifaa vinavyotumia amri za AT (kwa mfano, modemu za bendi ya sauti). Vifaa vya uigaji wa serial ambavyo pia huitwa vifaa vya bandari vya Virtual COM.
Kuna maombi kadhaa mahususi ya darasa ndogo ya ACM. Wanakuwezesha kudhibiti na kusanidi kifaa. Orodha kamili na maelezo ya maombi yote ya ACM yanaweza kupatikana katika vipimo

Hakimiliki © 2025 Silicon Laboratories. Haki zote zimehifadhiwa.

21/174

Zaidiview Kikundi kidogo cha Vifaa vya PSTN, marekebisho 1.2, Februari 9, 2007=, sehemu ya 6.2.2.
Kutoka kwa orodha hii, Silicon Labs9 ACM subclass inasaidia yafuatayo:
Jedwali - Maombi ya ACM Yanayoungwa mkono na Maabara ya Silicon

Maelezo ya Ombi la Kikundi kidogo

SetCommFeature GetCommFeature ClearCommFeature

Mwenyeji hutuma ombi hili ili kudhibiti mipangilio ya kipengele fulani cha mawasiliano. Haitumiki kwa uigaji wa mfululizo.
Mwenyeji hutuma ombi hili ili kupata mipangilio ya sasa ya kipengele fulani cha mawasiliano. Haitumiki kwa uigaji wa mfululizo.
Mwenyeji hutuma ombi hili ili kufuta mipangilio ya kipengele fulani cha mawasiliano. Haitumiki kwa uigaji wa mfululizo.

SetLineCoding

Mpangishi hutuma ombi hili ili kusanidi mipangilio ya kifaa cha ACM: kasi ya upotevu, idadi ya biti za kusimama, aina ya usawa na idadi ya biti za data. Kwa uigaji wa mfululizo, ombi hili hutumwa kiotomatiki na terminal ya serial kila wakati unaposanidi mipangilio ya serial kwa lango la wazi la COM.

GetLineCoding

Mpangishi hutuma ombi hili ili kupata mipangilio ya sasa ya ACM (kiwango cha baud, biti za kuacha, usawa, biti za data). Kwa uigaji wa mfululizo, vituo vya serial hutuma ombi hili kiotomatiki wakati wa ufunguzi wa mlango pepe wa COM.

SetControlLineState Mwenyeji hutuma ombi hili ili kudhibiti mtoa huduma kwa modemu zenye nusu duplex na kuashiria kuwa Kifaa cha Kituo cha Data (DTE) kiko tayari au la. Katika kesi ya uigaji wa serial, DTE ni terminal ya serial. Kwa uigaji wa serial, vituo fulani vya serial hukuruhusu kutuma ombi hili na vidhibiti vilivyowekwa.

SetBreak

Mwenyeji hutuma ombi hili ili kuunda mapumziko ya mtindo wa RS-232. Kwa uigaji wa serial, vituo fulani vya serial hukuruhusu kutuma ombi hili.

Darasa ndogo la Silicon Labs9 ACM hutumia sehemu ya mwisho ya kukatiza ili kumjulisha mwenyeji kuhusu hali ya sasa ya safu ya msururu. Mfululizo
hali ya mstari ni ramani ndogo inayomjulisha mwenyeji kuhusu:

Data imetupwa kwa sababu ya kupindukia kwa hitilafu ya Usawazishaji Hitilafu ya kutunga Hali ya ugunduzi wa mawimbi ya pete Hali ya utaratibu wa ugunduzi wa kukatika Hali ya msambazaji Hali ya utambuzi wa mpokeaji

Utekelezaji wa darasa ndogo la Silicon Labs9 ACM unakubaliana na vipimo vifuatavyo:
Universal Serial Bus, Mawasiliano, Subclass kwa PSTN Devices, marekebisho 1.2, Februari 9, 2007.
Usanidi wa Hatari wa Kifaa cha USB CDC ACM

Sehemu hii inajadili jinsi ya kusanidi Daraja la CDC ACM (Aina ya Kifaa cha Mawasiliano, Muundo wa Kidhibiti cha Kikemikali). Kuna vikundi viwili vya vigezo vya usanidi:
Mipangilio Maalum ya Kifaa cha USB CDC ACM Darasa la Maombi ya Mipangilio Maalum ya Kifaa cha USB CDC Mipangilio ya Hali ya Hatari ya ACM
Mipangilio Maalum ya Programu ya Kifaa cha USB CDC ACM

Darasa la Msingi la CDC ACM
Darasa la Msingi la CDC

Kwanza, ili kutumia moduli ya darasa ya CDC ya kifaa cha Silicon Labs ya USB, utahitaji kurekebisha usanidi wa wakati wa mkusanyiko wa CDC #define-s kulingana na mahitaji yako ya programu. Zimeunganishwa upya ndani ya kichwa cha sl_usbd_core_config.h file chini ya sehemu ya CDC. Madhumuni yao ni kufahamisha moduli ya kifaa cha USB kuhusu ni vitu ngapi vya USB CDC kutenga.

Hakimiliki © 2025 Silicon Laboratories. Haki zote zimehifadhiwa.

22/174

Zaidiview

Jedwali hapa chini linaelezea kila sehemu ya usanidi inayopatikana katika muundo huu wa usanidi.
Jedwali - Usanidi wa Kifaa cha USB CDC Inafafanua

Jina la Usanidi
SL_USBD_CDC_CL AS S_INSTANCE_QUANT ITY
SL_USBD_CDC_CONF IGURATION_QUANTI
TY
SL_USBD_CDC_DATA _INTERFACE_QUANTI
TY

Maelezo
Idadi ya matukio ya darasa utakayotenga kupitia simu kwa chaguo la kukokotoa
sl_usbd_cdc_acm_create_instance() .
Idadi ya usanidi. Matukio ya darasa la ACM yanaweza kuongezwa kwa usanidi mmoja au zaidi wa aaaa vi c ll kwa sl_usbd_cdc_acm_add_to_configuration() .
Jumla ya idadi ya violesura vya data (DCI) kwa vitendaji vyote vya CDC. Kila kitendakazi cha CDC ACM aaaaaaaaa kimeongezwa vi c ll kwenye chaguo za kukokotoa sl_usbd_cdc_acm_create_instance() kita dd dt interf ce.

Thamani Chaguomsingi
2
1
2

Mada ndogo ya ACM
Kikundi kidogo cha ACM kina usanidi mmoja wa wakati wa mjumuisho ulioonyeshwa kwenye jedwali hapa chini.
Jedwali - Usanidi wa Usanidi wa Kifaa cha USB CDC ACM

Jina la Usanidi
SL_USBD_CDC_ACM_SUBCL ASS_I NSTANCE_QUANTITY

Maelezo
Husanidi idadi ya matukio ya aina ndogo utakayotenga kupitia simu kwa
kazi sl_usbd_cdc_acm_create_instance() .

Thamani Chaguomsingi
2

Mipangilio ya Kikao cha Kifaa cha USB CDC ACM

Sehemu hii inafafanua usanidi unaohusiana na matukio ya aina ya mfululizo ya CDC ACM. Kipindi cha hali ya Uundaji wa Tukio la Hatari piga simu uwezo wa mgmt p_acm_callbacks
Uundaji wa Mfano wa Hatari

Ili kuunda mfano wa darasa la serial wa CDC ACM, pigia chaguo hili T a sl_usbd_cdc_acm_create_instance() . kazi yake t ni hoja tatu za usanidi, kama ilivyoelezwa hapa.

muda_wa_hali_ya_laini
Hiki ni kipindi (katika milisekunde) ambacho mfano wa darasa lako la mfululizo la CDC ACM litaripoti arifa za hali ya mstari kwa mpangishi wa T aa. v lue yake lazima nguvu ya mbili (1, 2, 4, 8, 16, nk).

call_mgmt_capabilities
Bitmap ya Uwezo wa Kusimamia Wito. Thamani zinazowezekana za bitmap ni kama ifuatavyo:

Thamani (bit)
SL_USBD_ACM_SERIAL_CALL_MGMT_DEV
SL_USBD_ACM_SERIAL_CALL_MGMT_DATA_CCI _DCI

Maelezo
Kifaa hushughulikia udhibiti wa simu zenyewe. Kifaa kinaweza kutuma/kupokea maelezo ya udhibiti wa simu kupitia kiolesura cha Data Class.

p_acm_callbacks

Hakimiliki © 2025 Silicon Laboratories. Haki zote zimehifadhiwa.

23/174

Zaidiview

aa M aa p_acm_callbacks ni kielekezi kwa muundo wa aina sl_usbd_cdc_acm_callbacks_t . Madhumuni yake ni kuipa CDC AC Cl ss seti ya vitendaji vya kupiga simu iitwe tukio la CDC ACM linapotokea. Sio virudio vyote vya kurudisha nyuma ni vya lazima na kiashiria batili ( NULL ) kinaweza kupitishwa katika muundo wa muundo wa backbacks wakati urejeshaji simu hauhitajiki. Jedwali hapa chini linaelezea kila sehemu ya usanidi inayopatikana katika muundo huu wa usanidi.
Jedwali – sl_usbd_cdc_acm _callbacks_t Muundo wa Usanidi

Viwanja

Maelezo

.wezesha

Inaitwa wakati mfano wa darasa la USB umewezeshwa

kwa mafanikio.

.zima

Inaitwa wakati mfano wa darasa la USB umezimwa.

.line_control_changed Inaitwa wakati mabadiliko ya udhibiti wa laini yamepokelewa.

line_coding_changed Inaitwa wakati mabadiliko ya usimbaji laini yanapokelewa.

Sahihi ya Kazi
programu batili_usbd_cdc_acm_enable(uint8_t subclass_nbr);
programu batili_usbd_cdc_acm_disable(uint8_t subclass_nbr);
programu batili_usbd_cdc_acm_line_control_changed(uint8_t subclass_nbr, uint8_t event, uint8_t event_chngd); programu ya bool_usbd_cdc_acm_line_coding_changed(uint8_t subclass_nbr, subclass_nbr, sl_usbd_cdc_acm_line_coding_t
*p_line_coding

Tazama sehemu ya Kusajili Simu za Arifa za Tukio kwa vitendaji vya kupiga simu kwa mfanoample.
Mwongozo wa Kuandaa Hatari wa Kifaa cha USB CDC ACM

Sehemu hii inaelezea jinsi ya kutumia darasa la Muundo wa Muhtasari wa Udhibiti wa CDC. Kuanzisha Daraja la Kifaa cha USB CDC ACM Kuongeza Kifaa cha USB CDC ACM Daraja la ACM kwenye Kifaa chako Kuwasiliana Kwa Kutumia Darasa la CDC ACM
Kuanzisha Daraja la ACM la Kifaa cha USB cha CDC

Ili kuongeza utendakazi wa darasa la CDC ACM kwenye kifaa chako, lazima kwanza uanzishe darasa la msingi la CDC na daraja ndogo la ACM kwa aac lling vipengele sl_usbd_cdc_init() nd sl_usbd_cdc_acm_init() . T aaaaa yeye mfano hapa chini anaonyesha jinsi ya c ll sl_usbd_cdc_init() nd sl_usbd_cdc_acm_init() kwa kutumia def ult rguments.

Example - Kuanzishwa kwa Darasa la CDC ACM

sl_status_t hali;
hali = sl_usbd_cdc_init(); ikiwa (hali ! SL_STATUS_OK) { /* Hitilafu ilitokea. Ushughulikiaji wa hitilafu unapaswa kuongezwa hapa. */
}
hali = sl_usbd_cdc_acm_init(); ikiwa (hali ! SL_STATUS_OK) { /* Hitilafu ilitokea. Ushughulikiaji wa hitilafu unapaswa kuongezwa hapa. */
}
Inaongeza Kifaa cha USB CDC ACM Class Class kwenye Kifaa chako
Ili kuongeza utendaji wa darasa la CDC ACM kwenye kifaa chako, lazima uunde mfano, kisha uuongeze kwenye usanidi wa kifaa chako.
Kuunda Mfano wa Hatari wa CDC ACM

Hakimiliki © 2025 Silicon Laboratories. Haki zote zimehifadhiwa.

24/174

Zaidiview
Kuongeza Tukio la Hatari la CDC la ACM kwenye Mipangilio ya Usajili wa Kupiga Simu za Arifa za Tukio la Kifaa chako.
Kuunda Mfano wa Hatari wa CDC ACM
aa M aaa Crete CDC AC cl ss inst nce kwa c lling kitendakazi sl_usbd_cdc_acm_create_instance() . T aaa M aaa mfano hapa chini anaonyesha jinsi ya kuunda CDC AC cl ss inst nce vi sl_usbd_cdc_acm_create_instance() .
Example - Kuunda Kazi ya CDC ACM kupitia sl_usbd_cdc_acm_create_instance()

uint8_t subclass_nbr; sl_status_t hali;
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);
ikiwa (hali ! SL_STATUS_OK) { /* Hitilafu ilitokea. Ushughulikiaji wa hitilafu unapaswa kuongezwa hapa. */
}
Kuongeza Mfano wa Darasa la CDC ACM kwenye Mipangilio ya Kifaa chako
Baada ya kuunda mfano wa darasa la CDC ACM, unaweza kuiongeza kwenye usanidi kwa kupiga chaguo la kukokotoa
sl_usbd_cdc_acm_add_to_configuration() .
T aa mfano hapa chini unaonyesha jinsi ya c ll sl_usbd_cdc_acm_add_to_configuration() .
Example - Piga simu kwa USBD ACM sl_usbd_cdc_acm_add_to_configuration()

sl_status_t hali;

status = sl_usbd_cdc_acm_add_to_configuration(subclass_nbr,

(1)

config_nbr_fs);

(2)

ikiwa (hali ! SL_STATUS_OK) {

/* Hitilafu imetokea. Ushughulikiaji wa hitilafu unapaswa kuongezwa hapa. */

}

aaa (1) Cl ss nambari ya dd kwa usanidi iliyorejeshwa na sl_usbd_cdc_acm_create_instance() . (2) Nambari ya usanidi (hapa ikiiongeza kwa usanidi wa Kasi Kamili).
Kusajili Simu za Arifa za Tukio
Darasa la CDC ACM Serial linaweza kuarifu programu yako kuhusu mabadiliko yoyote katika udhibiti wa laini au usimbaji kupitia vitendakazi vya kupiga simu tena vya arifa. Muundo wa chaguo za kukokotoa unaweza kupitishwa kama hoja wakati wa kuunda mfano wa ACM. Kumbuka kuwa simu hizo ni za hiari. Kwa mfanoample - Usajili wa Simu za CDC ACM unaonyesha matumizi ya vitendaji vya usajili wa urejeshaji. Kwa mfanoample – CDC ACM Callbacks Utekelezaji inaonyesha example ya utekelezaji wa kazi za kurudi nyuma.
Example - Usajili wa Simu za CDC ACM

Hakimiliki © 2025 Silicon Laboratories. Haki zote zimehifadhiwa.

25/174

Zaidiview

uint8_t subclass_nbr; sl_status_t hali;
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, appcdcobd_acm_change_
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_class_calls);
ikiwa (hali ! SL_STATUS_OK) { /* Hitilafu ilitokea. Ushughulikiaji wa hitilafu unapaswa kuongezwa hapa. */}
Example – CDC ACM Callbacks Utekelezaji

programu ya bool_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 usawa_mpya;

uint8_t stop_bits_mpya;

uint8_t data_bits_mpya;

/* TODO Tekeleza usimbaji laini mpya.*/ baudrate_new = p_line_coding->BaudRate; usawa_mpya = p_line_coding-> Usawa; stop_bits_new = p_line_coding->StopBits; data_bits_new = p_line_coding->DataBits;

kurudi (kweli);

(1)

}

programu batili_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 Tumia udhibiti mpya wa laini. */rts_state = ((tukio & SL_USBD_CDC_ACM_CTRL_RTS) ! 0) ? kweli : uongo; rts_state_changed = ((tukio_limebadilishwa & SL_USBD_CDC_ACM_CTRL_RTS) ! 0) ? kweli : uongo; dtr_state = ((tukio & SL_USBD_CDC_ACM_CTRL_DTR) ! 0) ? kweli : uongo; dtr_state_changed = ((tukio_limebadilishwa & SL_USBD_CDC_ACM_CTRL_DTR) ! 0) ? kweli : uongo; brk_state = ((tukio & SL_USBD_CDC_ACM_CTRL_BREAK) ! 0) ? kweli : uongo; brk_state_changed = ((tukio_limebadilishwa & SL_USBD_CDC_ACM_CTRL_BREAK) ! 0) ? kweli : uongo;
}

(1) Ni muhimu kurudisha sivyo kwa chaguo hili la kukokotoa ikiwa uwekaji usimbaji wa laini umeshindwa. Vinginevyo, kurudi kweli.
Kuwasiliana kwa kutumia CDC ACM Class
Hali ya Ufuatiliaji
Udhibiti wa Line Coding Line

Hakimiliki © 2025 Silicon Laboratories. Haki zote zimehifadhiwa.

26/174

Zaidiview

Line State Subclass Instance Mawasiliano
Hali ya Ufuatiliaji
Usimbaji wa mstari
Kipangishi cha USB hudhibiti usimbaji wa laini (kiwango cha ubovu, usawa, n.k) wa kifaa cha CDC ACM. Inapohitajika, programu inawajibika kwa kuweka msimbo wa mstari. Kuna vipengele viwili vinavyotolewa ili kurejesha na kuweka usimbaji wa mstari wa sasa, kama ilivyoelezwa kwenye jedwali hapa chini.
Jedwali - CDC ACM Line Coding Kazi

Kazi
sl_usbd_cdc_acm_g na t_line _co d ing ()
sl_usbd_cdc_acm_s na t_line _co d ing ()

Maelezo
Programu yako inaweza kupata mipangilio ya sasa ya usimbaji iliyowekwa ama kutoka kwa seva pangishi yenye maombi ya SetLineCoding au kwa chaguo za kukokotoa sl_usbd_cdc_acm_set_line_coding() .
Programu yako inaweza kuweka usimbaji wa laini. Mwenyeji anaweza kurejesha mipangilio kwa ombi la GetLineCoding.

Udhibiti wa Line
Seva ya USB inadhibiti udhibiti wa laini (pini za RTS na DTR, ishara ya kuvunja, na kadhalika) ya kifaa cha CDC ACM. Inapohitajika, programu yako inawajibika kwa kutumia vidhibiti vya laini. Chaguo la kukokotoa limetolewa ili kurejesha na kuweka vidhibiti vya sasa vya laini, kama ilivyoelezwa kwenye jedwali hapa chini.
Jedwali - Kazi za Udhibiti wa Mstari wa CDC ACM

Kazi
sl_usb d _cd c_acm_g na t_line _co ntr o l_state ()

Programu yako inaweza kupata hali ya sasa ya udhibiti iliyowekwa na mwenyeji kwa ombi la SetControlLineState.

Jimbo la mstari
Kipangishi cha USB hurejesha hali ya laini kwa muda wa kawaida. Programu yako lazima isasishe hali ya laini kila inapobadilika. Inapohitajika, maombi yako yanawajibika kwa kuweka hali ya mstari. Vitendaji viwili vinatolewa ili kupata na kuweka vidhibiti vya sasa vya laini, kama ilivyoelezwa kwenye jedwali hapa chini.
Jedwali - CDC ACM Line S tate Kazi

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

Programu yako inaweza kuweka tukio lolote la hali ya mstari. Wakati wa kuweka hali ya laini, uhamishaji wa kukatiza IN hutumwa kwa mwenyeji ili kufahamisha kuhusu hilo mabadiliko katika hali ya safu ya serial.
Programu inaweza kufuta matukio mawili ya hali ya laini: mtoa huduma wa upitishaji na utambuzi wa mpokeaji. Matukio mengine yote yamejisafisha yenyewe na aina ndogo ya uigaji wa mfululizo wa ACM.

Subclass Instance Mawasiliano

Darasa ndogo la ACM la Silicon Labs' hutoa vipengele vifuatavyo ili kuwasiliana na mwenyeji. Kwa maelezo zaidi kuhusu vigezo vya function9, angalia rejeleo la Kazi za CDC ACM Subclass.

Jina la kazi
sl_usb d _cd c_acm_ tangazo tena () sl_usb d _cd c_acm_write ()

Uendeshaji
Hupokea data kutoka kwa seva pangishi kupitia sehemu kubwa ya mwisho ya OUT. Chaguo hili la kukokotoa linazuia. Hutuma data kwa mwenyeji kupitia sehemu kubwa ya IN. Chaguo hili la kukokotoa linazuia.

Hakimiliki © 2025 Silicon Laboratories. Haki zote zimehifadhiwa.

27/174

Zaidiview

Jedwali - Muhtasari wa API ya Mawasiliano ya CDC ACM aaaaa sl_usbd_cdc_acm_read() nd sl_usbd_cdc_acm_write() hutoa mawasiliano yanayosawazishwa, ambayo tr nsfer inazuia. Kwa maneno mengine, juu ya kupiga kazi, programu huzuia hadi uhamisho ukamilike na au bila hitilafu. Muda wa kuisha unaweza kubainishwa ili kuepuka kusubiri milele. Example hapa chini inaonyesha kusoma na kuandika example inayopokea data kutoka kwa seva pangishi kwa kutumia sehemu kubwa ya mwisho ya OUT na kutuma data kwa mwenyeji kwa kutumia sehemu kubwa ya IN.
Kuorodhesha - Kusoma na Kuandika kwa Mtample

__ALIGNED(4) uint8_t rx_buf[2];

__ALIGNED(4) uint8_t tx_buf[2];

uint32_t

xfer_len;

sl_status_t

hali;

status = sl_usbd_cdc_acm_read(subclass_nbr,

(1)

rx_buf,

(2)

2u,

0u,

(3)

&xfer_len);

ikiwa (hali ! SL_STATUS_OK) {

/* Hitilafu imetokea. Ushughulikiaji wa hitilafu unapaswa kuongezwa hapa. */

}

status = sl_usbd_cdc_acm_write(subclass_nbr,

(1)

tx_buf,

(4)

2u,

0u,

(3)

&xfer_len);

ikiwa (hali ! SL_STATUS_OK) {

/* Hitilafu imetokea. Ushughulikiaji wa hitilafu unapaswa kuongezwa hapa. */

}

T aaaaa M (1) he cl ss inst nce number cre ted with sl_usbd_cdc_acm_create_instance() hutoa n intern l rejeleo kwa darasa dogo la AC kuelekeza uhamishaji hadi sehemu kubwa ifaayo OUT au IN mwisho. (2) Maombi yako lazima yahakikishe kuwa bafa iliyotolewa kwa chaguo la kukokotoa ni kubwa vya kutosha kuchukua data yote. Vinginevyo, maswala ya usawazishaji yanaweza kutokea. (3) Ili kuepuka hali isiyo na kikomo ya kuzuia, bainisha muda wa kuisha ulioonyeshwa kwa milisekunde. Thamani ya 809 hufanya kazi ya maombi kusubiri milele. (4) Programu hutoa bafa ya kusambaza iliyoanzishwa.

Hakimiliki © 2025 Silicon Laboratories. Haki zote zimehifadhiwa.

28/174

Zaidiview
Zaidiview

Darasa la HID la Kifaa cha USB

Darasa la HID la Kifaa cha USB Kimekwishaview Nyenzo ya Hatari ya HID ya Kifaa cha USB Mahitaji kutoka kwa Usanidi wa Darasa la Kifaa cha USB HID cha Usanidi wa Darasa la Mwongozo wa Utayarishaji wa Hatari wa HID HID Kazi ya Ripoti za Ingizo za Mara kwa Mara
Sehemu hii inafafanua aina ya Kifaa cha Kiolesura cha Binadamu (HID) kinachotumika na Kifaa cha USB cha Silicon Labs.
Darasa la HID linajumuisha vifaa vinavyotumiwa na binadamu kudhibiti utendakazi wa kompyuta, kama vile kibodi, panya, vifaa vya kuelekeza na vifaa vya mchezo.
Darasa la HID pia linaweza kutumika katika kifaa cha mchanganyiko ambacho kina vidhibiti kama vile visu, swichi, vitufe na vitelezi. Kwa mfanoample, bubu na vidhibiti vya sauti katika kifaa cha sauti hudhibitiwa na kipengele cha HID cha vifaa vya sauti. Darasa la HID linaweza kubadilishana data kwa madhumuni yoyote kwa kutumia udhibiti na kukatiza uhamishaji pekee.
Darasa la HID ni mojawapo ya madarasa ya USB ya zamani zaidi na yanayotumiwa sana. Mifumo yote mikuu ya uendeshaji ya seva pangishi hutoa kiendeshi asilia kudhibiti vifaa vya HID, ndiyo maana vifaa mbalimbali mahususi vya muuzaji hufanya kazi na aina ya HID. Darasa hili pia linajumuisha aina mbalimbali za vipengee vya kutoa kama vile LED, sauti, maoni ya kugusa n.k.
Utekelezaji wa HID unazingatia vigezo vifuatavyo:
Ufafanuzi wa Daraja la Kifaa kwa Vifaa vya Kiolesura cha Binadamu (HID), 6/27/01, Toleo la 1.11. Majedwali ya Matumizi ya Universal Serial Bus HID, 10/28/2004, Toleo la 1.12.
Darasa la HID la Kifaa cha USB Kimekwishaview
Zaidiview
Kifaa cha HID kinajumuisha sehemu zifuatazo za mwisho:
Jozi ya udhibiti wa IN na OUT miisho inayoitwa sehemu ya mwisho chaguomsingi An interrupt IN endpoint Njia ya hiari ya kukatiza OUT
Jedwali hapa chini linaelezea matumizi ya miisho tofauti:
Jedwali - HID Class Endpoints Matumizi

Matumizi ya Mwelekeo wa Mwisho

Dhibiti IN
Udhibiti
NJE
Katisha IN
Katiza
NJE

Kifaa-mwenyeji
Kifaa cha mwenyeji
Kifaa-mwenyeji
Kifaa cha mwenyeji

Maombi ya kawaida ya kuhesabu, maombi ya darasa mahususi, na mawasiliano ya data (Ingizo, Ripoti za kipengele hutumwa kwa mwenyeji na ombi la GET_REPORT). Maombi ya kawaida ya kuhesabu, maombi ya darasa mahususi na mawasiliano ya data (Iliyotoka, Ripoti za vipengele vilivyopokelewa kutoka kwa seva pangishi kwa ombi la SET_REPORT). Mawasiliano ya data (Ingizo na Ripoti za Kipengele).
Mawasiliano ya data (Ripoti za Pato na Kipengele).

Ripoti

Hakimiliki © 2025 Silicon Laboratories. Haki zote zimehifadhiwa.

29/174

Zaidiview

Mpangishi na kifaa cha HID hubadilishana data kwa kutumia ripoti. Ripoti ina data iliyoumbizwa inayotoa taarifa kuhusu vidhibiti na huluki nyingine halisi za kifaa cha HID. Kidhibiti kinaweza kubadilishwa na mtumiaji na huendesha kipengele cha kifaa. Kwa mfanoampna, kidhibiti kinaweza kuwa kitufe kwenye kipanya au kibodi, swichi, n.k. Vyombo vingine humfahamisha mtumiaji kuhusu hali ya vipengele vya kifaa fulani. Kwa mfanoample, taa za LED kwenye kibodi humjulisha mtumiaji kuhusu kipengele cha kufunga kofia, vitufe vya nambari vinavyotumika, nk.
Muundo na matumizi ya data ya ripoti hueleweka na mwenyeji kwa kuchanganua maudhui ya kifafanuzi cha Ripoti. Kuchambua yaliyomo hufanywa na mchanganuzi. Kifafanuzi cha Ripoti hufafanua data iliyotolewa na kila kidhibiti kwenye kifaa. Inaundwa na vitu ambavyo ni vipande vya habari kuhusu kifaa na inajumuisha kiambishi awali cha baiti 1 na urefu tofauti.
data. Kwa maelezo zaidi kuhusu umbizo la kipengee, rejelea
1.11=, kifungu cha 5.6 na 6.2.2.
Kuna aina tatu kuu za vitu:
Kipengee kikuu kinafafanua au kuweka aina fulani za sehemu za data.
Kipengee cha kimataifa kinaelezea sifa za data za udhibiti.
Kipengee cha ndani kinaelezea sifa za data za udhibiti.
Kila aina ya kipengee hufafanuliwa na kazi tofauti. Kazi ya kipengee pia inaweza kuitwa a tag. Chaguo za kukokotoa za kipengee zinaweza kuonekana kama kipengee kidogo ambacho ni cha mojawapo ya aina tatu za kipengee kikuu. Jedwali hapa chini linatoa muhtasari mfupiview ya vitendaji vya kipengee9 katika kila aina ya kipengee. Kwa maelezo kamili ya vitu katika kila kategoria, ona
Jedwali - Maelezo ya Kazi ya Bidhaa kwa Kila Aina ya Kipengee

Kazi ya Aina ya Kipengee

Maelezo

Ingizo Kuu

Inaelezea maelezo kuhusu data iliyotolewa na udhibiti wa kimwili moja au zaidi.

Pato Kuu Inaelezea data iliyotumwa kwa kifaa.

Kipengele kikuu

Inafafanua maelezo ya usanidi wa kifaa yaliyotumwa au kupokewa kutoka kwa kifaa ambayo huathiri tabia ya jumla ya kifaa au mojawapo ya vipengele vyake.

Vipengee vinavyohusiana na Kundi Kuu la Mkusanyiko (Ingizo, Pato au Kipengele).

Mwisho Mkuu wa Hufunga mkusanyiko. Mkusanyiko

Hakimiliki © 2025 Silicon Laboratories. Haki zote zimehifadhiwa.

30/174

Zaidiview

Kazi ya Aina ya Kipengee

Maelezo

Ukurasa wa Matumizi ya Ulimwenguni

Hutambua utendaji unaopatikana ndani ya kifaa.

Global Mantiki Inafafanua kikomo cha chini cha thamani zilizoripotiwa katika vitengo vya kimantiki. Kiwango cha chini

Global Mantiki Inafafanua kikomo cha juu cha thamani zilizoripotiwa katika vitengo vya kimantiki. Upeo wa juu

Global Physical Inafafanua kikomo cha chini cha thamani zilizoripotiwa katika vitengo halisi, hiyo ni Kima cha chini kabisa cha Mantiki kinachoonyeshwa katika vitengo halisi.

Global Physical Inafafanua kikomo cha juu cha thamani zilizoripotiwa katika vitengo halisi, hiyo ni Upeo wa Kimantiki wa Upeo unaoonyeshwa katika vitengo halisi.

Kitengo cha Kimataifa

Huonyesha kipeo cha kitengo katika msingi wa 10. Kipeo huanzia -8 hadi +7.

Kipeo

Kitengo cha Kimataifa

Inaonyesha kitengo cha thamani zilizoripotiwa. Kwa mfano, urefu, uzito, vitengo vya joto, nk.

Ukubwa wa Ripoti ya Ulimwenguni

Inaonyesha ukubwa wa sehemu za ripoti katika biti.

Kitambulisho cha Ripoti ya Ulimwengu Huonyesha kiambishi awali kilichoongezwa kwa ripoti fulani.

Hesabu ya Ripoti ya Ulimwenguni

Inaonyesha idadi ya sehemu za data za kipengee.

Global Push

Huweka nakala ya jedwali la hali ya kipengee cha kimataifa kwenye rafu ya CPU.

Muziki wa Kimataifa

Hubadilisha jedwali la hali ya kipengee na muundo wa mwisho kutoka kwa rafu.

Matumizi ya ndani

Inawakilisha faharasa ili kuteua Matumizi mahususi ndani ya Ukurasa wa Matumizi. Inaonyesha matumizi yaliyopendekezwa na muuzaji kwa udhibiti maalum au kikundi cha vidhibiti. Utumiaji hutoa taarifa kwa msanidi programu kuhusu kile ambacho kidhibiti kinapima.

Matumizi ya ndani

Inafafanua matumizi ya kuanzia yanayohusishwa na safu au bitmap.

Kiwango cha chini

Matumizi ya ndani

Inafafanua matumizi ya mwisho yanayohusishwa na safu au bitmap.

Upeo wa juu

Mbuni wa Ndani Huamua sehemu ya mwili inayotumika kudhibiti. Kielezo kinaelekeza kwa mtunzi katika Kimwili

Kielezo

mfafanuzi.

Msanifu wa Ndani Anafafanua faharasa ya kibuni cha kuanzia kinachohusishwa na safu au bitmap. Kiwango cha chini

Mbuni wa Ndani Anafafanua faharasa ya kiweka kimalizio kinachohusishwa na safu au bitmap. Upeo wa juu

Kielezo cha Kamba za Mitaa

Faharasa ya kamba kwa maelezo ya Kamba. Huruhusu mfuatano kuhusishwa na kipengee au udhibiti fulani.

Kamba ya Mitaa

Hubainisha faharasa ya mfuatano wa kwanza wakati wa kugawa kikundi cha mifuatano kwa vidhibiti katika safu.

Kiwango cha chini au bitmap.

Mtaa Mtaa

Upeo wa Juu wa Kamba
Delimiter

Hubainisha faharasa ya mfuatano wa mwisho wakati wa kukabidhi kundi la mifuatano kwa vidhibiti katika safu au bitmap.
Inafafanua mwanzo au mwisho wa seti ya vipengee vya ndani.

Data ya kidhibiti lazima ifafanue angalau vitu vifuatavyo:
Ingizo, Pato au Kipengele Vipengee vikuu Matumizi ya Bidhaa ya ndani Ukurasa wa Matumizi ya Kipengee cha kimataifa Mantiki Kima cha chini cha Kipengee cha kimataifa Kiwango cha Juu cha Kipengee cha Kimataifa Ripoti Ukubwa Bidhaa za kimataifa

Hakimiliki © 2025 Silicon Laboratories. Haki zote zimehifadhiwa.

31/174

Zaidiview
Ripoti Hesabu ya Kipengee cha Kimataifa Jedwali lililo hapa chini linaonyesha uwakilishi wa maudhui ya kifafanuzi cha Ripoti ya Panya kutoka kwa mtazamo wa kichanganuzi cha HID mwenyeji. Panya ina vifungo vitatu (kushoto, kulia na gurudumu). Kanuni iliyotolewa katika example hapa chini ni utekelezaji wa msimbo unaolingana na uwakilishi wa maelezo ya Ripoti ya panya.
Kielelezo - Ripoti Maudhui ya Kifafanuzi kutoka kwa Kichanganuzi cha Mwenyeji HID View

(1) Kitendakazi cha Ukurasa wa Matumizi hubainisha utendakazi wa jumla wa kifaa. Katika hii example, kifaa cha HID ni cha a
Udhibiti wa kawaida wa desktop.
(2) Vikundi vya Maombi ya Mkusanyiko Vipengee vikuu ambavyo vina madhumuni ya pamoja na vinaweza kujulikana kwa programu. Katika mchoro, kikundi kinaundwa na vitu vitatu vya Kuingiza. Kwa mkusanyiko huu, matumizi yaliyopendekezwa ya vidhibiti ni panya kama inavyoonyeshwa na kipengee cha Matumizi. (3) Mikusanyiko iliyowekwa inaweza kutumika kutoa maelezo zaidi kuhusu matumizi ya kidhibiti kimoja au kikundi cha vidhibiti kwa programu. Katika hii example, Mkusanyiko wa Kimwili, uliowekwa kwenye Programu ya Mkusanyiko, unajumuisha vipengee vitatu sawa vya Ingizo vinavyounda Maombi ya Mkusanyiko. Mkusanyiko wa Kimwili hutumika kwa seti ya vipengee vya data vinavyowakilisha pointi za data zilizokusanywa katika sehemu moja ya kijiometri. Katika exampna, matumizi yaliyopendekezwa ni pointer kama inavyoonyeshwa na kipengee cha Matumizi. Hapa matumizi ya kielekezi hurejelea viwianishi vya nafasi ya kipanya na programu ya mfumo itatafsiri viwianishi vya kipanya katika harakati za kielekezi cha skrini. (4) Kurasa za matumizi zilizoachwa pia zinawezekana na kutoa maelezo zaidi kuhusu kipengele fulani ndani ya utendaji wa jumla wa kifaa. Katika kesi hii, vitu viwili vya Pembejeo vimeunganishwa na vinahusiana na vifungo vya panya. Kipengee kimoja cha Ingizo hufafanua vitufe vitatu vya kipanya (kulia, kushoto na gurudumu) kulingana na idadi ya sehemu za data za kipengee (Kipengee cha Ripoti ya Hesabu), ukubwa wa sehemu ya data (Kipengee cha Ukubwa wa Ripoti) na thamani zinazowezekana kwa kila uga wa data (Kima cha chini cha Matumizi na Upeo, Kima cha chini cha Mantiki na Upeo wa Juu). Kipengee kingine cha Ingizo ni 13-bit mara kwa mara kuruhusu data ya ripoti ya Ingizo kupangiliwa kwenye mpaka wa baiti. Kipengee hiki cha Ingizo kinatumika tu kwa madhumuni ya kuweka pedi. (5) Ukurasa mwingine wa matumizi uliowekwa kiota unaorejelea kidhibiti cha eneo-kazi la jumla umefafanuliwa kwa viwianishi vya nafasi ya kipanya. Kwa ukurasa huu wa matumizi, kipengee cha Ingizo kinaelezea sehemu za data zinazolingana na mhimili wa x- na y kama ilivyobainishwa na Matumizi mawili.
vitu.
Baada ya kuchanganua maudhui ya kifafanuzi cha Ripoti ya kipanya kilichotangulia, kichanganuzi cha HID cha mwenyeji9 kinaweza kutafsiri data ya ripoti ya Ingizo iliyotumwa na kifaa kwa kukatizwa kwa uhamishaji wa IN au kwa kujibu ombi la GET_REPORT. Data ya ripoti ya Ingizo inayolingana na kifafanuzi cha Ripoti ya kipanya kilichoonyeshwa kwenye Kielelezo - Ripoti Maudhui ya Kifafanuzi kutoka kwa Kichanganuzi cha HID cha Jeshi. View is

Hakimiliki © 2025 Silicon Laboratories. Haki zote zimehifadhiwa.

32/174

Zaidiview

inavyoonyeshwa kwenye jedwali hapa chini. Jumla ya ukubwa wa data ya ripoti ni baiti 4. Aina tofauti za ripoti zinaweza kutumwa kwa ncha moja. Kwa madhumuni ya kutofautisha aina tofauti za ripoti, kiambishi awali cha ripoti ya baiti 1 huongezwa kwenye ripoti ya data. Ikiwa kitambulisho cha ripoti kilitumiwa katika exampkatika ripoti ya kipanya, jumla ya ukubwa wa data ya ripoti itakuwa baiti 5.
Jedwali - Ripoti ya Ingizo Imetumwa kwa Mwenyeji na Inalingana na Hali ya Vifungo 3 vya Kipanya

Kupunguza kidogo
0 1 2 3 16 24

Hesabu kidogo 1 1 1 13 8 8

Kitufe cha 1 cha Maelezo (kitufe cha kushoto). Kitufe cha 2 (kifungo cha kulia). Kitufe cha 3 (kifungo cha gurudumu). Haitumiki. Nafasi kwenye mhimili X. Nafasi kwenye mhimili Y.

Kifafanuzi cha Kimwili kinaonyesha sehemu au sehemu za mwili zinazokusudiwa kuamilisha udhibiti au vidhibiti. Programu inaweza kutumia maelezo haya kukabidhi utendakazi kwa udhibiti wa kifaa. Kifafanuzi cha Kimwili ni kifafanuzi cha hiari cha darasa mahususi na vifaa vingi vina faida kidogo kwa kukitumia. Rejelea
Mahitaji ya Nyenzo ya Hatari ya HID ya Kifaa cha USB kutoka Msingi

Kila wakati unapoongeza mfano wa darasa la HID kwenye usanidi wa USB kupitia simu kwa chaguo za kukokotoa sl_usbd_hid_add_to_configuration() , rasilimali zifuatazo zitatolewa kutoka msingi.

Rasilimali
Violesura Violesura Mbadala Vikundi vya Kiolesura cha Pointi za Mwisho

Kiasi
1 1 1 (2 ikiwa sehemu ya mwisho ya kukatiza OUT imewezeshwa) 0

Kumbuka kuwa nambari hizo ni kwa usanidi. Unapoweka SL_USBD_INTERFACE_QUANTITY , SL_USBD_ALT_INTERFACE_QUANTITY , SL_USBD_INTERFACE_GROUP_QUANTITY na SL_USBD_DESCRIPTOR_QUANTITY thamani za usanidi, usisahau kuzingatia ni usanidi ngapi ambao darasa utaongezwa. Kwa thamani ya usanidi ya SL_USBD_OPEN_ENDPOINTS_QUANTITY, kwa kuwa sehemu za mwisho hufunguliwa tu wakati usanidi umewekwa na seva pangishi, unahitaji tu kuzingatia idadi ya vituo vinavyohitajika kwa mfano wa darasa.
Usanidi wa Hatari wa Kifaa cha USB HID

Vikundi viwili vya vigezo vya usanidi hutumiwa kusanidi darasa la HID:
Usanidi wa Hatari wa Kifaa cha USB HID-Mipangilio Maalum Mipangilio ya Tukio ya Hatari ya Kifaa cha USB HID
Mipangilio Maalum ya Usanidi wa Darasa la HID ya Kifaa cha USB

Kwanza, ili kutumia moduli ya darasa ya HID ya kifaa cha Silicon Labs ya kifaa cha USB, rekebisha usanidi wa muda wa mkusanyiko wa HID unaofafanua kulingana na mahitaji yako ya programu. Zimeunganishwa upya ndani ya kichwa cha sl_usbd_core_config.h file chini ya sehemu ya HID. Wanaweza kugawanywa katika sehemu mbili, usanidi wa wingi na usanidi wa kazi wa HID. Madhumuni ya usanidi wa wingi ni kufahamisha moduli ya kifaa cha USB kuhusu ni vitu ngapi vya USB HID vya kutenga.
Jedwali hapa chini linaelezea kila ufafanuzi wa usanidi.
Jedwali - Usanidi wa HID wa Kifaa cha USB Unafafanua

Hakimiliki © 2025 Silicon Laboratories. Haki zote zimehifadhiwa.

33/174

Zaidiview

Jina la Usanidi
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

Maelezo
Idadi ya matukio ya darasa utakayotenga kupitia simu kwa chaguo la kukokotoa
sl_usbd_hid_create_instance() .
Idadi ya usanidi. Matukio ya darasa la HID yanaweza kuongezwa kwa usanidi mmoja au zaidi wa aaaa vi c ll kwenye chaguo za kukokotoa sl_usbd_hid_add_to_configuration() . Husanidi jumla ya idadi ya vitambulisho vya ripoti vya kugawa.
Huweka mipangilio ya jumla ya idadi ya vipengee vya Push/Pop ili kutenga.
Kazi ya kipima muda hushughulikia shughuli zote za HID kulingana na kipima muda. Usanidi huu hukuruhusu kuweka saizi ya rafu (kwa idadi ya baiti). Kipaumbele cha kazi ya HID. yake ni kipaumbele cha CMSIS-RTOS2.

Thamani Chaguomsingi
2 1 2 0 2048
osPriorityHigh

Darasa la Uundaji wa Tukio la Uundaji wa Mipangilio ya Kifaa cha USB HID Hatari
msimbo_wa_nchi wa itifaki
interval_in and interval_out p_hid_callback HID Class Report Descriptor Example Sehemu hii inafafanua usanidi unaohusiana na matukio ya darasa la HID.
Uundaji wa Mfano wa Hatari
Kuunda mfano wa darasa la HID hufanywa kwa kuita kazi aaa sl_usbd_hid_create_instance() , ambayo hutenganisha hoja za usanidi ambazo zimefafanuliwa hapa chini.
darasa ndogo
Msimbo wa darasa ndogo la HID. Thamani zinazowezekana ni:
SL_USBD_HID_SUBCL ASS_NONE SL_USBD_HID_SUBCL ASS_BOOT
Kifaa cha HID kinachotumia aina ndogo ya kuwasha lazima kitumie miundo ya kawaida ya ripoti. Kwa maelezo zaidi kuhusu misimbo ya aina ndogo, angalia sehemu ya 4.2 ya marekebisho ya vipimo vya HID 1.11.
itifaki
Itifaki inayotumiwa na kifaa cha HID. Thamani zinazowezekana ni:
SL_USBD_HID_PROTOCOL_NONE SL_USBD_HID_PROTOCOL_KBD SL_USBD_HID_PROTOCOL_MOUSE
Ikiwa HID yako ya kukokotoa ni panya, itifaki inapaswa kuwekwa kuwa aa SL_USBD_HID_PROTOCOL_MOUSE . Ikiwa ni keybo rd, inapaswa O kuwekwa kuwa SL_USBD_HID_PROTOCOL_KBD . kwa hivyo, itifaki inapaswa kuwekwa SL_USBD_HID_PROTOCOL_NONE . Kwa maelezo zaidi kuhusu misimbo ya aina ndogo, angalia sehemu ya 4.3 ya marekebisho ya vipimo vya HID 1.11.
msimbo_wa_nchi
Kitambulisho cha msimbo wa nchi. Thamani zinazowezekana ni:
SL_USBD_HID_COUNTRY_CODE_NOT_SUPPORTED

Hakimiliki © 2025 Silicon Laboratories. Haki zote zimehifadhiwa.

34/174

Zaidiview
SL_USBD_HID_COUNTRY_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_CODE_CCH SL_USBD_HID_COUNTRY_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_BREEK SL_USBD_HID_COUNTRY_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_KOREAN SL_USBD_ICANID_AHID_CODE_KOREA SL_USBD_HID_COUNTRY_CODE_NETHEL ANDS_DUTCH SL_USBD_HID_COUNTRY_CODE_NORWEGIAN SL_USBD_HID_COUNTRY_CODE_PERSIAN_FARSI SL_USBD_HID_COUNTRY_CODE_POL NA SL_USBD_HID_COUNTRY_CODE_SLUDRY_COUNTRY_CODE_USB_COUNTRY_CODE_USBD_USB_CODE 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 SL_USBD_HID_COUNTRY_CODE_SWISS_GERMAN_GERMAN_CODE_SWEDISH_USBD_HID_COUNTRY_CODE_SWISS_FRENCH 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_HID_COUNTRY_CODE_YUG OSL AVIA SL_USBD_HID_CODE_HID
Msimbo wa nchi unabainisha ni nchi gani maunzi yamejanibishwa. Maunzi mengi hayajajanibishwa na kwa hivyo aaaav lue hii itakuwa SL_USBD_HID_COUNTRY_CODE_NOT_SUPPORTED (0). Walakini, keybo hunitumia uga kuashiria lugha ya vifuniko muhimu.
Kwa maelezo zaidi kuhusu misimbo ya nchi, angalia sehemu ya 6.2.1 ya marekebisho ya vipimo vya HID 1.11.
interval_in na interval_out
interval_in na interval_out inawakilisha muda wa upigaji kura wa sehemu ya mwisho ya kukatiza ya IN na sehemu ya mwisho ya kukatiza ya OUT.
Hii inawakilisha muda wa upigaji kura wa mwisho, katika milisekunde. Kuweka thamani hii kunategemea ni mara ngapi kifaa chako kinaweza kuhusika kutoa ripoti mpya kwa mwenyeji. Kwa mfano, ripoti ikitolewa kila baada ya milisekunde 16, muda unapaswa kuwa 16 au chini ya hapo.
Thamani lazima iwe nguvu ya 2 (1, 2, 4, 8, 16, nk.).
interval_out v lue hupuuzwa ikiwa ctrl_rd_en imewekwa kuwa kweli.
p_fid_callback
aaaa p_hid_callback ni kielekezi kwa muundo wa aina sl_usbd_hid_callbacks_t . Madhumuni yake ni kutoa HID Cl ss seti ya vitendaji vya kurudisha nyuma kuitwa tukio la HID linapotokea.

Hakimiliki © 2025 Silicon Laboratories. Haki zote zimehifadhiwa.

35/174

Zaidiview

Sio virudio vyote vya kurudisha nyuma ni vya lazima na kiashiria batili ( NULL ) kinaweza kupitishwa katika muundo wa muundo wa backbacks wakati urejeshaji simu hauhitajiki. Jedwali hapa chini linaelezea kila sehemu ya usanidi inayopatikana katika muundo huu wa usanidi.
Jedwali - sl_usbd_hid_callbacks_t Muundo wa Usanidi

Viwanja

Maelezo

Sahihi ya Kazi

.wezesha .zima .get_report_desc
.pata_phy_desc
.set_output_report .get_feature_report .set_feature_report

Inaitwa wakati mfano wa darasa la USB umewezeshwa. Inaitwa wakati mfano wa darasa la USB umezimwa.
Ilipigiwa simu wakati wa uundaji wa HID Instance ili kupitisha kifafanuzi cha ripoti yako. Kwa kila kitendakazi chako cha HID, lazima utoe kifafanuzi cha ripoti. Kifafanuzi cha ripoti huonyesha kwa mwenyeji jinsi ripoti ya mara kwa mara ambayo itatumwa na kifaa inapaswa kuchanganuliwa. Kuandika kifafanuzi chako cha ripoti kunaweza kuwa changamoto, na ndiyo maana kuna nyenzo za kukusaidia. Hiki ndicho kitendakazi pekee cha lazima cha kupiga simu tena. Imepigiwa simu wakati wa kuunda Kikao cha HID ili kupitisha kifafanuzi chako halisi. Kifafanuzi halisi ni kifafanuzi ambacho hutoa taarifa kuhusu sehemu au sehemu mahususi za mwili wa binadamu ambazo zinawasha udhibiti au vidhibiti. Kwa maelezo zaidi kuhusu vifafanuzi halisi, angalia sehemu ya 6.2.3 ya marekebisho ya vipimo vya HID 1.11. Kifafanuzi halisi ni cha hiari na mara nyingi hupuuzwa. Bafa inayopitishwa hapa inaweza kuwekwa kuwa NULL na urefu kuweka 0. Huitwa wakati mwenyeji anaweka ripoti kama ilivyoelezwa katika kifafanuzi cha ripoti yako (inapotuma ripoti).
Huitwa wakati mwenyeji anaomba ripoti ya kipengele kama ilivyoelezwa katika kifafanuzi cha ripoti yako.
Huitwa wakati mwenyeji anaweka ripoti ya kipengele kama ilivyoelezwa katika kifafanuzi cha ripoti yako.

programu batili_usbd_hid_enable(uint8_t class_nbr); programu batili_usbd_hid_disable(uint8_t class_nbr); programu batili_usbd_hid_get_report_desc(uint8_t class_nbr, const uint8_t *p_report_ptr, uint16_tp_report_len);
programu batili_usbd_hid_get_phy_desc(uint8_t class_nbr, const uint8_t *p_report_ptr, uint16_tp_report_len);
programu batili_usbd_hid_set_output_report(uint8_t class_nbr, uint8_t report_id, uint8_t *p_report_buf, uint16_t report_len); programu batili_usbd_hid_get_feature_report(uint8_t class_nbr, uint8_t report_id, uint8_t *p_report_buf, uint16_t report_len); programu batili_usbd_hid_set_feature_report(uint8_t class_nbr, uint8_t report_id, uint8_t *p_report_buf, uint16_t report_len);

.pata_itifaki

Hurejesha itifaki inayotumika ya sasa.

programu batili_usbd_hid_get_protocol(uint8_t class_nbr, uint8_t *p_protocol);

.weka_itifaki

Huweka itifaki inayotumika ya sasa.

programu batili_usbd_hid_set_protocol(uint8_t class_nbr, uint8_t itifaki);

Kifafanuzi cha Ripoti ya Hatari ya HID Example

Darasa la HID la Maabara ya Silicon sample application hutoa example ya maelezo ya ripoti ya panya rahisi. Example hapa chini inaonyesha maelezo ya ripoti ya panya.
Example - Maelezo ya Ripoti ya Panya

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

Hakimiliki © 2025 Silicon Laboratories. Haki zote zimehifadhiwa.

36/174

Zaidiview

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_PHYSICAL,(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) Jedwali linalowakilisha kifafanuzi cha ripoti ya panya huanzishwa kwa njia ambayo kila mstari unalingana na kipengee kifupi. Mwisho huundwa kutoka kwa kiambishi awali cha baiti 1 na data ya baiti 1. Rejelea viewiliyohaririwa na mchanganuzi mwenyeji wa HID katika Kielelezo - Ripoti Yaliyomo katika Kifafanuzi kutoka kwa Kichanganuzi cha HID mwenyeji View.
(2) Ukurasa wa Matumizi ya Kompyuta ya Kawaida ya Eneo-kazi unatumika.
(3) Ndani ya Ukurasa wa Matumizi ya Eneo-kazi la Kawaida, matumizi tag inapendekeza kuwa kikundi cha vidhibiti ni cha kudhibiti kipanya. Mkusanyiko wa kipanya kwa kawaida huwa na shoka mbili (X na Y) na vitufe kimoja, viwili au vitatu.
(4) Mkusanyiko wa kipanya umeanza.
(5) Ndani ya mkusanyiko wa panya, matumizi tag inapendekeza haswa kwamba vidhibiti vya panya ni vya mkusanyiko wa vielelezo. Mkusanyiko wa vielelezo ni mkusanyiko wa shoka ambao hutoa thamani ya kuelekeza, kuonyesha, au kuelekeza nia ya mtumiaji kwa programu.
(6) Mkusanyiko wa viashiria umeanza.
(7) Ukurasa wa Matumizi ya Vifungo unafafanua Kipengee cha Ingizo kinachojumuisha sehemu tatu za biti-1. Kila sehemu ya biti-1 inawakilisha kitufe cha mouse9s 1, 2 na 3 mtawalia na inaweza kurudisha thamani ya 0 au 1.
(8) Kipengee cha Kuingiza kwa Ukurasa wa Matumizi ya Vifungo kimefungwa na biti zingine 13.
(9) Ukurasa Mwingine wa Matumizi ya Kompyuta ya Kawaida umeonyeshwa kwa ajili ya kuelezea nafasi ya kipanya kwa shoka X na Y. Kipengee cha Ingizo kinajumuisha sehemu mbili za 8-bit ambazo thamani yake inaweza kuwa kati ya -127 na 127.
(10) Mkusanyiko wa pointer umefungwa.
(11) Mkusanyiko wa kipanya umefungwa.
USB.org KUFICHA Ukurasa

Hakimiliki © 2025 Silicon Laboratories. Haki zote zimehifadhiwa.

37/174

Zaidiview
Mijadala ya Watekelezaji wa USB (USB-IF) hutoa zana inayoitwa "HiD Descriptor Tool" pamoja na maelezo mengine kuhusu umbizo la kifafanuzi cha ripoti. Tazamahttp://www.usb.org/developers/hidpage/ kwa habari zaidi.
Mwongozo wa Kuandaa Hatari wa Kifaa cha USB HID
Sehemu hii inaelezea jinsi ya kutumia darasa la HID. Kuanzisha Darasa la HID la Kifaa cha USB Kuongeza Tukio la Hatari la HID la Kifaa cha USB kwenye Kifaa chako Kuwasiliana kwa kutumia Darasa la HID la Kifaa cha USB.
Kuanzisha Darasa la HID la Kifaa cha USB
Ili kuongeza utendakazi wa HID Class kwenye kifaa chako, lazima kwanza uanzishe darasa kwa kupiga chaguo za kukokotoa sl_usbd_hid_init() . Example hapa chini inaonyesha jinsi ya kupiga simu sl_usbd_hid_init() kwa kutumia hoja chaguo-msingi. Kwa maelezo zaidi kuhusu hoja za usanidi za kupitisha sl_usbd_hid_init() , angalia Mipangilio Maalum ya Programu ya Kifaa cha USB HID.
Example - kupiga simu sl_usbd_hid_init()
sl_status_t hali;
hali = sl_usbd_hid_init(); ikiwa (hali ! SL_STATUS_OK) { /* Hitilafu ilitokea. Ushughulikiaji wa hitilafu unapaswa kuongezwa hapa. */
}
Inaongeza Mfano wa Hatari wa HID wa Kifaa cha USB kwenye Kifaa chako
Ili kuongeza utendaji wa darasa la HID kwenye kifaa chako, lazima uunde mfano, kisha uuongeze kwenye usanidi wa kifaa chako.
Kuunda Mfano wa Hatari wa HID
Unda mfano wa darasa la HID kwa kupiga kazi sl_usbd_hid_create_instance() . Example hapa chini inaonyesha jinsi ya kuunda kazi rahisi ya kipanya kupitia sl_usbd_hid_create_instance() kwa kutumia hoja chaguo-msingi. Kwa maelezo zaidi kuhusu hoja za usanidi za kupitishwa kwa sl_usbd_hid_create_instance() , angalia Mipangilio ya Hali ya Hatari ya Kifaa cha USB HID.
Example - Kuongeza Kazi ya Panya kupitia sl_usbd_hid_create_instance()

Hakimiliki © 2025 Silicon Laboratories. Haki zote zimehifadhiwa.

38/174

Zaidiview
/* Viunga vya kimataifa. */ tuli const uint8_t app_usbd_hid_mouse_report_desc[] = {
SL_USBD_HID_GLOBAL_USAGE_PAGE + 1, SL_USBD_HID_USAGE_PAGE_GENERIC_DESKTOP_CONTROLS, SL_USBD_HID_LOCAL_USAGE + 1, SL_USBD_HID_CA_MOUSE, SL_USBD_HID_MAIN_COLLECTION 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_CP_POINTER, SL_USBD_HID_MAIN_COLLECTION + 1, SL_USBD_HID_COLLECTION_PHYSICAL, SL_USBD_USD_HID_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, 0 SLG0_USB_0DHI + 1, 0, 0 SLG0_USB_USB 0 01, SL_USBD_HID_GLOBAL_REPORT_COUNT + 1, 0 03, SL_USBD_HID_GLOBAL_REPORT_SIZE + 1, 0 01, SL_USBD_HID_MAIN_INPUT + 1, SL_USBD_HID_MAIN_DATA | SL_USBD_HID_MAIN_VARIABLE | SL_USBD_HID_MAIN_ABSOLUTE, SL_USBD_HID_GLOBAL_REPORT_COUNT + 1, 0 01, SL_USBD_HID_GLOBAL_REPORT_SIZE + 1, 0 0D, SL_USBD_HID_MAIN_INPUT + 1, SL_USBD_HID_GLOBAL_REPORT_SIZE 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_USAGE_DV_USAGE 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 _1, COUNT_REPORT_2, 0 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 };
/* Vigezo vya ndani.*/ uint8_t class_nbr; sl_status_t hali;
sl_usbd_hid_callbacks_t app_usbd_hid_callbacks = { NULL, NULL, app_usbd_hid_get_report_desc, NULL, NULL, NULL, NULL, NULL, NULL };
programu batili_usbd_hid_get_report_desc(uint8_t class_nbr, const uint8_t **p_report_ptr, uint16_t *p_report_len)
{ (batili) darasa_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_HAISAIDIWI, Ex_USBD_HID_Mouse_ReportDesc, sizeof(Ex_Mouse_USB),Report_D_USB kweli, &app_usbd_hid_callbacks, &class_nbr);
Hakimiliki © 2025 Silicon Laboratories. Haki zote zimehifadhiwa.

39/174

Zaidiview
/* Hitilafu imetokea. Ushughulikiaji wa hitilafu unapaswa kuongezwa hapa. */}
Kuongeza Mfano wa HID kwenye Usanidi wa Kifaa chako Baada ya kuunda mfano wa darasa la HID, unaweza kuiongeza kwenye usanidi kwa kupiga chaguo la kukokotoa.
sl_usbd_hid_add_to_configuration() .
Example hapa chini inaonyesha jinsi ya kupiga simu sl_usbd_hid_add_to_configuration() .
Example - Kupiga simu sl_usbd_hid_add_to_configuration()

sl_status_t hali;

sl_usbd_hid_add_to_configuration(class_nbr,

(1)

config_nbr_fs); (2)

ikiwa (hali ! SL_STATUS_OK) {

/* Hitilafu imetokea. Ushughulikiaji wa hitilafu unapaswa kuongezwa hapa. */

}

(1) Nambari ya darasa ya kuongeza kwenye usanidi iliyorejeshwa na sl_usbd_hid_create_instance(). (2) Nambari ya usanidi (hapa ikiiongeza kwa usanidi wa Kasi Kamili).
Kuwasiliana kwa Kutumia Hatari ya HID ya Kifaa cha USB
Mawasiliano ya Matukio ya Darasa Mawasiliano ya Usawazishaji ya Hali ya Hatari ya Darasa la HID hutoa vitendaji vifuatavyo ili kuwasiliana na mwenyeji.
Jedwali - Muhtasari wa API ya HID Communication

Jina la kazi
sl_usb d _hid _ re ad _sy nc() sl_usb d _hid _write _sy nc()

Operesheni Hupokea data kutoka kwa seva pangishi kupitia sehemu ya mwisho ya OUT ya kukatiza. Chaguo hili la kukokotoa linazuia. Hutuma data kwa seva pangishi kupitia sehemu ya mwisho ya kukatiza. Chaguo hili la kukokotoa linazuia.

Mawasiliano ya Usawazishaji Mawasiliano ya upatanishi inamaanisha kuwa uhamishaji unazuia. Baada ya simu ya kukokotoa, programu huzuia hadi uhamishaji ukamilike na au bila hitilafu. Muda wa kuisha unaweza kubainishwa ili kuepuka kusubiri milele. Example iliyo hapa chini inaonyesha usomaji na uandishi unaopokea data kutoka kwa seva pangishi kwa kutumia sehemu ya mwisho ya kukatiza ya OUT na kutuma data kwa seva pangishi kwa kutumia sehemu ya kukatiza ya IN.
Example – Synchronous HID Soma na Andika

__ALIGNED(4) uint8_t rx_buf[2];

__ALIGNED(4) uint8_t tx_buf[2];

uint32_t

xfer_len;

sl_status_t

hali;

status = sl_usbd_hid_read_sync(class_nbr,

(1)

(batili *)rx_buf,

(2)

2u,

0u,

(3)

&xfer_len);

ikiwa (hali ! SL_STATUS_OK) {

/* Hitilafu imetokea. Ushughulikiaji wa hitilafu unapaswa kuongezwa hapa. */

}

Hakimiliki © 2025 Silicon Laboratories. Haki zote zimehifadhiwa.

40/174

Zaidiview
status =sl_usbd_hid_read_sync(class_nbr,(1)(batili *)rx_buf,(2)2u,0u,(3)&xfer_len);if(status ! SL_STATUS_OK){/* Hitilafu ilitokea. Ushughulikiaji wa hitilafu unapaswa kuongezwa hapa. */}
status =sl_usbd_hid_write_sync(class_nbr,(1)(batili *)tx_buf,(4)2u,0u,(3)&xfer_len);if(status ! SL_STATUS_OK){/* Hitilafu ilitokea. Ushughulikiaji wa hitilafu unapaswa kuongezwa hapa. */}
(1) Nambari ya mfano ya darasa iliyoundwa kutoka sl_usbd_hid_create_instance() hutoa marejeleo ya ndani kwa darasa la HID ili kuelekeza uhamishaji hadi sehemu ya mwisho ya kukatiza OUT au IN.
(2) Ni lazima programu ihakikishe kuwa bafa iliyotolewa kwa kipengele cha kukokotoa ni kubwa ya kutosha kuchukua data yote. Vinginevyo, maswala ya usawazishaji yanaweza kutokea. Kwa ndani, utendakazi wa kusoma hufanywa ama kwa sehemu ya mwisho ya udhibiti au kwa ncha ya kukatiza, kulingana na bendera iliyosomwa ya udhibiti wakati wa kupiga simu sl_usbd_hid_create_instance() .
(3) Ili kuepuka hali ya kuzuia isiyo na kikomo, muda wa kuisha ulioonyeshwa kwa milisekunde unaweza kubainishwa. Thamani ya 809 hufanya kazi ya maombi kusubiri milele.
(4) Programu hutoa bafa ya kusambaza iliyoanzishwa.
Kazi ya HID ya Ripoti za Pembejeo za Mara kwa Mara
Ili kuokoa kipimo data, seva pangishi ina uwezo wa kunyamazisha ripoti kutoka kwa kukatizwa kwa sehemu ya mwisho ya IN kwa kupunguza marudio ya kuripoti. Ili kufanya hivyo, mwenyeji lazima atume ombi la SET_IDLE. Darasa la HID linalotekelezwa na Silicon Labs lina kazi ya ndani inayoheshimu kikomo cha marudio ya kuripoti ambacho unaweza kutumia kwa ripoti moja au kadhaa za ingizo. Kielelezo Kazi ya Ripoti za Ingizo za Mara kwa Mara huonyesha utendakazi wa kazi za ripoti za pembejeo za mara kwa mara.
Kielelezo - Kazi ya Ripoti za Pembejeo za Muda

(1) Kifaa hupokea ombi la SET_IDLE. Ombi hili linabainisha muda wa kutofanya kitu kwa kitambulisho fulani cha ripoti. Kwa maelezo zaidi kuhusu ombi la SET_IDLE, ona
(2) Muundo wa kitambulisho cha ripoti (kilichotolewa wakati wa awamu ya uanzishaji wa darasa la HID) husasishwa kwa muda wa kutofanya kitu. Kaunta ya muda wa kutofanya kitu imeanzishwa kwa thamani ya muda wa kutofanya kitu. Muundo wa kitambulisho cha ripoti umeingizwa mwishoni mwa orodha iliyounganishwa iliyo na miundo ya kitambulisho cha ripoti za pembejeo. Thamani ya muda wa kutofanya kitu inaonyeshwa katika kitengo cha 4-ms ambacho hutoa anuwai ya 4 hadi 1020 ms.

Hakimiliki © 2025 Silicon Laboratories. Haki zote zimehifadhiwa.

41/174

Zaidiview
Ikiwa muda wa kutofanya kitu ni chini ya muda wa upigaji kura wa sehemu ya mwisho ya kukatiza ya IN, ripoti hutolewa katika muda wa upigaji kura.
(3) Kila milisekunde 4, kazi ya ripoti ya pembejeo ya mara kwa mara huvinjari orodha ya vitambulisho vya ripoti za ingizo. Kwa kila kitambulisho cha ripoti ya ingizo, kazi hufanya moja ya shughuli mbili zinazowezekana. Muda wa kipindi cha kazi unalingana na kitengo cha 4-ms kilichotumika kwa muda wa kutofanya kitu. Ikiwa hakuna maombi ya SET_IDLE yametumwa na mwenyeji, orodha ya vitambulisho vya ripoti za ingizo ni tupu na kazi haina chochote cha kuchakatwa. Michakato ya kazi huripoti tu vitambulisho ambavyo ni tofauti na 0 na vilivyo na muda wa kutofanya kitu unaozidi 0.
(4) Kwa kitambulisho cha ripoti ya ingizo lililotolewa, jukumu huthibitisha ikiwa muda wa kutofanya kitu umepita. Ikiwa muda wa kutofanya kitu haujapita, kaunta imepunguzwa na hakuna ripoti ya ingizo inayotumwa kwa seva pangishi.
(5) Ikiwa muda wa kutofanya kitu umepita (yaani, kihesabu cha muda wa kutofanya kitu kimefikia sufuri), ripoti ya ingizo hutumwa kwa seva pangishi kwa kuita sl_usbd_hid_write_sync() chaguo la kukokotoa kupitia kituo cha kukatiza cha IN.
(6) Data ya ripoti ya ingizo inayotumwa na jukumu hilo inatoka kwa akiba ya ndani ya data iliyotengwa kwa kila ripoti ya ingizo iliyofafanuliwa katika kifafanuzi cha Ripoti. Jukumu la programu linaweza kuita sl_usbd_hid_write_sync() kukokotoa kutuma ripoti ya ingizo. Baada ya kutuma data ya ripoti ya ingizo, sl_usbd_hid_write_sync() husasisha bafa ya ndani inayohusishwa na kitambulisho cha ripoti ya ingizo na data iliyotumwa hivi punde. Kisha, jukumu la ripoti za uingizaji wa mara kwa mara hutuma kila mara data sawa ya ripoti ya ingizo baada ya kila muda wa kutofanya kitu kupita na hadi jukumu la programu kusasisha data katika bafa ya ndani. Kuna mbinu fulani ya kufunga ili kuzuia ufisadi wa data ya kitambulisho cha ripoti ya pembejeo iwapo urekebishaji utafanyika wakati mahususi wa uwasilishaji unaofanywa na kazi ya ripoti ya pembejeo ya mara kwa mara.

Hakimiliki © 2025 Silicon Laboratories. Haki zote zimehifadhiwa.

42/174

Zaidiview
Zaidiview
Darasa la MSC la Kifaa cha USB
Darasa la MSC la Kifaa cha USB Kimekwishaview Mahitaji ya Nyenzo ya Hatari ya Darasa la Kifaa cha USB MSC kutoka Usanidi wa Hatari wa Kifaa cha USB MSC Mwongozo wa Utayarishaji wa Hatari wa Kifaa cha USB Kiendeshi cha Hifadhi ya Hatari ya MSC
Sehemu hii inaelezea darasa la kifaa cha kuhifadhi wingi (MSC) kinachotumika na Kifaa cha USB cha Silicon Labs. MSC ni itifaki inayowezesha uhamisho wa taarifa kati ya kifaa cha USB na seva pangishi. Taarifa inayohamishwa ni kitu chochote kinachoweza kuhifadhiwa kielektroniki, kama vile programu zinazotekelezeka, msimbo wa chanzo, hati, picha, data ya usanidi, au maandishi au data nyingine ya nambari. Kifaa cha USB kinaonekana kama hifadhi ya nje kwa seva pangishi, kuwezesha uhamishaji wa files kupitia kuburuta na kudondosha.
A file mfumo unafafanua jinsi ya files zimepangwa katika vyombo vya habari vya kuhifadhi. Uainishaji wa darasa la hifadhi ya wingi wa USB hauhitaji mahususi yoyote file mfumo utakaotumika kwenye vifaa vinavyofanana. Badala yake, hutoa kiolesura rahisi cha kusoma na kuandika sekta za data kwa kutumia Kiolesura cha Mfumo wa Kompyuta Ndogo (SCSI) seti ya uwazi ya amri. Kwa hivyo, mifumo ya uendeshaji inaweza kutibu kiendeshi cha USB kama diski kuu, na inaweza kuiumbiza na yoyote file mfumo wanaoupenda.
Darasa la kifaa cha hifadhi ya wingi ya USB inasaidia itifaki mbili za usafiri, kama ifuatavyo:
Usafiri wa Usafiri wa Wingi Pekee (BOT) Udhibiti/Wingi/Kukatiza (CBI) Usafiri (hutumika tu kwa viendeshi vya diski kuu)
Darasa la kifaa cha kuhifadhi wingi hutekeleza amri ya uwazi ya SCSI iliyowekwa kwa kutumia itifaki ya BOT pekee, ambayo inaashiria kwamba ncha nyingi pekee ndizo zitatumika kusambaza data na taarifa ya hali. Utekelezaji wa MSC unaauni vitengo vingi vya kimantiki.
Utekelezaji wa MSC unazingatia masharti yafuatayo:
Uainishaji wa Hatari ya Uhifadhi wa Mabasi ya Jumla ya Mabasi Umeishaview, Marekebisho ya 1.3 Septemba 5, 2008. Daraja la Uhifadhi wa Mabasi kwa Wingi wa Usafiri wa Wingi Pekee, Marekebisho ya 1.0 Septemba 31, 1999.
Kifaa cha USB MSC aCl ss Overview
Darasa la Pointi za Mwisho za Itifaki Huomba Kiolesura Kidogo cha Mfumo wa Kompyuta (SCSI)
Itifaki
Katika sehemu hii, tutajadili itifaki ya Usafiri wa Wingi Pekee (BOT) ya Darasa la Uhifadhi wa Wingi. Itifaki ya Usafiri wa Wingi Pekee ina sehemu tatutages:
Usafirishaji wa Amri Usafirishaji wa Data Usafiri wa Hali
Amri za uhifadhi wa wingi hutumwa na mwenyeji kupitia muundo unaoitwa Command Block Wrapper (CBW). Kwa amri zinazohitaji usafiri wa data stage, seva pangishi itajaribu kutuma au kupokea idadi kamili ya baiti kutoka kwa kifaa kama ilivyobainishwa na urefu na sehemu za bendera za CBW. Baada ya usafirishaji wa data stage, seva pangishi hujaribu kupokea Kifunga Hali ya Amri (CSW) kutoka kwa kifaa ambacho kinatoa maelezo kuhusu hali ya amri na masalio yoyote ya data (ikiwa

Hakimiliki © 2025 Silicon Laboratories. Haki zote zimehifadhiwa.

43/174

Zaidiview
yoyote). Kwa amri ambazo hazijumuishi usafiri wa data stage, mwenyeji hujaribu kupokea CSW moja kwa moja baada ya CBW kutumwa. Itifaki imeelezewa kwa kina katika Kielelezo - Itifaki ya MSC.
Kielelezo - Itifaki ya MSC

Mwisho
Kwa upande wa kifaa, kwa kutii vipimo vya BOT, MSC ina vipengele vifuatavyo vya mwisho: Jozi ya vidhibiti vya IN na OUT vinaitwa ncha-msingi. Jozi ya sehemu nyingi za IN na OUT.
Jedwali hapa chini linaonyesha matumizi tofauti ya miisho.
Jedwali - Matumizi ya Mwisho wa MSC

Mwisho
Control IN Control OUT Wingi KATIKA Wingi OUT

Mwelekeo
Kifaa cha Kupangisha Seva kwa Kifaa ili Kupangisha Seva kwa Kifaa

Matumizi
Maombi ya kuhesabu na darasa mahususi ya MSC Kuhesabu na maombi mahususi ya darasa la MSC Tuma CSW na data Pokea CBW na data

Maombi ya darasa
Kuna maombi mawili yaliyofafanuliwa ya udhibiti wa itifaki ya MSC BOT. Maombi haya na maelezo yao yamefafanuliwa katika jedwali hapa chini.

Jedwali - Maombi ya Darasa la Uhifadhi wa Misa

Maombi ya darasa
Rudisha Uhifadhi wa Wingi Pekee

Maelezo
Ombi hili linatumika kuweka upya kifaa cha kuhifadhi wingi na kiolesura chake kinachohusika. Ombi hili husoma kifaa ili kupokea kizuizi cha amri kinachofuata.

Hakimiliki © 2025 Silicon Laboratories. Haki zote zimehifadhiwa.

44/174

Zaidiview

Maombi ya darasa

Maelezo

Pata Upeo Zaidi Ombi hili linatumika kurudisha nambari ya juu zaidi ya mantiki (LUN) inayoauniwa na kifaa. Kwa mfanoample, a

LUN

kifaa chenye LUN 0 na LUN 1 kitarudisha thamani ya 1. Kifaa chenye kitengo kimoja cha kimantiki kitarudisha 0 au kusimamisha

ombi. Thamani ya juu zaidi inayoweza kurejeshwa ni 15.

Kiolesura Ndogo cha Mfumo wa Kompyuta SCSI

Katika kiwango cha kiolesura cha programu, kifaa cha MSC hutekeleza mojawapo ya itifaki za kawaida za mawasiliano ya uhifadhi-midia, kama vile SCSI na SFF-8020i (ATAPI). "Kiolesura cha Kuratibu" hubainisha itifaki inayotekelezwa, na husaidia mfumo wa uendeshaji wa seva pangishi kupakia kiendesha kifaa kinachofaa kwa ajili ya kuwasiliana na kifaa cha hifadhi cha USB. SCSI ndiyo itifaki ya kawaida inayotumiwa na vifaa vya hifadhi vya USB MSC. Tunatoa utekelezaji kwa darasa dogo la MSC SCSI ambalo watumiaji wetu wa GSDK wanaweza kutumia nje ya boksi.
SCSI ni seti ya viwango vya kushughulikia mawasiliano kati ya kompyuta na vifaa vya pembeni. Viwango hivi ni pamoja na amri, itifaki, miingiliano ya umeme na miingiliano ya macho. Vifaa vya kuhifadhi vinavyotumia violesura vingine vya maunzi, kama vile USB, hutumia amri za SCSI kupata maelezo ya kifaa/mwenyeshi na kudhibiti uendeshaji wa kifaa na kuhamisha vizuizi vya data katika midia ya hifadhi.
Amri za SCSI hushughulikia anuwai kubwa ya aina na vitendaji vya kifaa na kwa hivyo, vifaa vinahitaji seti ndogo ya amri hizi. Kwa ujumla, amri zifuatazo ni muhimu kwa mawasiliano ya kimsingi:
UJUZI SOMA UWEZO(10) SOMA(10) OMBA KITENGO CHA JARIBIO LA AKILI TAYARI ANDIKA(10)
Mahitaji ya Nyenzo ya Hatari ya MSC ya Kifaa cha USB kutoka Msingi

Kila wakati unapoongeza mfano wa darasa la MSC kwenye usanidi wa USB kupitia chaguo za kukokotoa sl_usbd_msc_add_to_configuration() , nyenzo zifuatazo zitatolewa kutoka msingi.

Rasilimali
Violesura Violesura Mbadala Vikundi vya Kiolesura cha Pointi za Mwisho

Kiasi
1 1 2 0

Kumbuka kuwa nambari hizo ni kwa usanidi. Unapoweka SL_USBD_INTERFACE_QUANTITY , SL_USBD_ALT_INTERFACE_QUANTITY , SL_USBD_INTERFACE_GROUP_QUANTITY na SL_USBD_DESCRIPTOR_QUANTITY thamani za usanidi, usisahau kuzingatia ni usanidi ngapi ambao darasa utaongezwa. Kwa thamani ya usanidi ya SL_USBD_OPEN_ENDPOINTS_QUANTITY, kwa kuwa sehemu za mwisho hufunguliwa tu wakati usanidi umewekwa na seva pangishi, unahitaji tu kuzingatia idadi ya vituo vinavyohitajika kwa mfano wa darasa.
Usanidi wa Hatari wa Kifaa cha USB MSC

Vikundi viwili vya vigezo vya usanidi hutumiwa kusanidi darasa la MSC:
Usanidi wa Hatari wa Kifaa cha USB MSC-Mipangilio Maalum ya Kifaa cha USB cha Hatari cha MSC Usanidi wa Kitengo cha Mantiki.
Mipangilio Maalum ya Programu ya Kifaa cha USB MSC

Uundaji wa Mipangilio ya Hatari ya Kukusanya Muda

Hakimiliki © 2025 Silicon Laboratories. Haki zote zimehifadhiwa.

45/174

Zaidiview

Mipangilio ya Muda wa Kukusanya Muda
Darasa la MSC la Kifaa cha USB cha Silicon Labs na aina ndogo ya SCSI zinaweza kusanidiwa kwa wakati wa mkusanyiko kupitia #defines iliyo katika sl_usbd_core_config.h file.
Jedwali - Mipangilio ya Kawaida ya Usanidi

Jina la Usanidi

Maelezo

SL_USBD_MSC_CLASS_INST Idadi ya matukio ya darasa utakayotenga kupitia simu kwa chaguo la kukokotoa.

ANCE_QUANTITY

sl_usbd_msc_scsi_create_instance() .

SL_USBD_MSC_CONFIGURA Idadi ya usanidi ambayo mfano wa darasa unaweza kuongezwa kupitia simu kwa

TION_QUANTITY

kazi sl_usbd_msc_scsi_add_to_configuration() .

SL_USBD_MSC_LUN_QUANT Idadi ya vitengo vya kimantiki kwa kila mfano wa darasa ambavyo utaongeza kupitia simu kwa

ITY

kazi sl_usbd_msc_scsi_lun_add() .

SL_USBD_MSC_SCSI_64_BIT Huwasha au kulemaza usaidizi kwa Anwani ya Kizuizi cha Kimantiki (LBA) ya biti 64.
_LBA_EN

SL_USBD_MSC_DATA_BUFF Ukubwa wa akiba ya data kwa kila mfano wa darasa katika baiti ER_SIZE

Thamani Chaguomsingi
2
1
2
0
512

Uundaji wa Mfano wa Hatari
Kuunda mfano wa darasa la SCSI wa Kifaa cha USB MSC hufanywa kwa kuita sl_usbd_msc_scsi_create_instance() chaguo la kukokotoa. Chaguo hili la kukokotoa huchukua hoja moja ya usanidi ambayo imefafanuliwa hapa chini.
p_scsi_callbacks
p_scsi_callbacks ni kielekezi kwa muundo wa usanidi wa aina sl_usbd_msc_scsi_callbacks_t . Kando na simu za kawaida za darasa la kifaa cha usb kuunganisha/kukata, hutoa darasa la MSC seti ya vitendaji vya hiari vya urejeshaji simu ambavyo huitwa tukio linapotokea kwenye kitengo cha kimantiki. Kielekezi batili ( NULL ) kinaweza kupitishwa kwa hoja hii ikiwa hakuna urejeshaji wa simu unaohitajika.
Jedwali hapa chini linaelezea kila sehemu ya usanidi inayopatikana katika muundo huu wa usanidi.
Jedwali - sl_usbd_msc_scsi_callbacks_t Muundo wa Usanidi

Viwanja

Maelezo

.wezesha

Inaitwa wakati mfano wa darasa la USB umewezeshwa.

.zima Imeitwa wakati mfano wa darasa la USB umezimwa.

.host_eject Kazi inayoitwa wakati kitengo cha kimantiki kimetolewa kutoka kwa seva pangishi.

Sahihi ya Kazi
programu batili_usbd_msc_scsi_enable(uint8_t class_nbr);
programu batili_usbd_msc_scsi_disable(uint8_t class_nbr); programu batili_usbd_msc_scsi_host_eject(uint8_t class_nbr, uint8_t lu_nbr);

Usanidi wa Kitengo cha Mantiki cha Kifaa cha USB MSC

Kuongeza kitengo cha kimantiki kwa mfano wa darasa la MSC hufanywa kwa kuita chaguo za kukokotoa sl_usbd_msc_lun_add() . Chaguo hili la kukokotoa huchukua hoja moja ya usanidi ambayo imefafanuliwa hapa chini.

p_lu_maelezo

p_lu_info ni kiashirio kwa muundo wa aina sl_usbd_msc_scsi_lun_info_t . Madhumuni yake ni kutoa taarifa juu ya kitengo cha kimantiki kwa darasa la MSC.
Jedwali hapa chini linaelezea kila sehemu ya usanidi inayopatikana katika muundo huu wa usanidi.

Jedwali – sl_usbd_msc_scsi_lun_info_t Muundo wa Usanidi

Hakimiliki © 2025 Silicon Laboratories. Haki zote zimehifadhiwa.

46/174

Zaidiview

Shamba

Maelezo

Shamba
.scsi_lun_api_p tr

Maelezo
Elekeza kwa API ya kiendeshi cha media ambayo itashughulikia kitengo hiki cha kimantiki. Tazama Viendesha Hatari vya Hifadhi ya Kifaa cha MSC cha USB kwa maelezo zaidi kuhusu viendeshi vya hifadhi.

.ve nd o r_id _ p tr
.product_id_ptr
.p ro d uct_ re v isi kwenye_level .ni_ tangazo _o pekee

Elekeza kwa mfuatano ulio na kitambulisho cha muuzaji wa kitengo cha kimantiki. Urefu wa juu wa safu ni herufi 8. Elekeza kwa mfuatano ulio na kitambulisho cha bidhaa cha kitengo cha kimantiki. Urefu wa juu wa safu ni herufi 16. Kiwango cha marekebisho ya bidhaa.
Bendera inayoonyesha ikiwa kitengo cha kimantiki kinapaswa kuonekana kuwa kimesomwa kutoka kwa uhakika wa view ya mwenyeji ( kweli ) au la ( sivyo ).

Mwongozo wa Kuandaa Hatari wa Kifaa cha USB MSC

Sehemu hii inaelezea jinsi ya kutumia darasa la MSC.
Kuanzisha Daraja la Kifaa cha USB MSC Kuongeza Kifaa cha USB MSC SCSI Hatari ya Kifaa kwenye Kifaa chako cha USB cha Ushughulikiaji wa Kitengo cha Kimantiki cha Kifaa cha USB.
Kuanzisha Daraja la MSC la Kifaa cha USB

Ili kuongeza utendakazi wa darasa la MSC SCSI kwenye kifaa chako, kwanza anzisha darasa la msingi la MSC na darasa dogo la SCSI kwa kupiga chaguo za kukokotoa sl_usbd_msc_init() na sl_usbd_msc_init() .
Example hapa chini inaonyesha jinsi ya kupiga simu sl_usbd_msc_init() na sl_usbd_msc_scsi_init() .

Example - Inapiga simu sl_usbd_msc_init() na sl_usbd_msc_scsi_init()

sl_status_t hali;
hali = sl_usbd_msc_init(); ikiwa (hali ! SL_STATUS_OK) { /* Hitilafu ilitokea. Ushughulikiaji wa hitilafu unapaswa kuongezwa hapa. */
}
hali = sl_usbd_msc_scsi_init(); ikiwa (hali ! SL_STATUS_OK) { /* Hitilafu ilitokea. Ushughulikiaji wa hitilafu unapaswa kuongezwa hapa. */
}
Kuongeza Kifaa cha USB MSC SCSI Hatari ya Kifaa kwenye Kifaa chako
Ili kuongeza utendaji wa darasa la MSC SCSI kwenye kifaa chako, kwanza unda mfano, kisha uuongeze kwenye usanidi wa kifaa chako. Lazima uongeze angalau kitengo kimoja cha kimantiki kwa mfano wako.
Kuunda Mfano wa Hatari wa MSC SCSI
Unda mfano wa darasa la MSC SCSI kwa kupiga chaguo za kukokotoa sl_usbd_msc_scsi_create_instance() .
Example hapa chini inaonyesha jinsi ya kupiga simu sl_usbd_msc_scsi_create_instance() kwa kutumia hoja chaguo-msingi. Kwa maelezo zaidi kuhusu hoja za usanidi za kupitisha sl_usbd_msc_scsi_create_instance() , angalia Mipangilio Maalum ya Kifaa cha USB MSC .
Example - Kupiga simu kwa sl_usbd_ msc_scsi_create_instance()

Hakimiliki © 2025 Silicon Laboratories. Haki zote zimehifadhiwa.

47/174

Zaidiview

uint8_t class_nbr; sl_status_t hali;
sl_usbd_msc_scsi_callbacks_t app_usbd_msc_scsi_callbacks = { .wezesha = NULL, .zima = NULL, .host_eject = NULL };
status = sl_usbd_msc_scsi_create_instance(&app_usbd_msc_callbacks_,0 &class_nbr);
ikiwa (hali ! SL_STATUS_OK) { /* Hitilafu ilitokea. Ushughulikiaji wa hitilafu unapaswa kuongezwa hapa. */}
Kuongeza Tukio la Hatari la MSC kwenye Usanidi wa Kifaa chako.
Baada ya kuunda mfano wa darasa la MSC, unaweza kuiongeza kwa usanidi kwa kupiga chaguo la kukokotoa
sl_usbd_msc_add_to_configuration() .
Exampna hapa chini onyesha jinsi ya kupiga simu sl_usbd_msc_scsi_add_to_configuration() kwa kutumia hoja chaguo-msingi.
Example - Inapiga simu sl_usbd_ msc_scsi_add_to_configuration()

sl_status_t hali;

status = sl_usbd_msc_scsi_add_to_configuration(class_nbr,

(1)

config_nbr_fs);

(2)

ikiwa (hali ! SL_STATUS_OK) {

/* Hitilafu imetokea. Ushughulikiaji wa hitilafu unapaswa kuongezwa hapa. */

}

(1) Nambari ya darasa ya kuongeza kwenye usanidi iliyorejeshwa na sl_usbd_msc_scsi_create_instance() . (32) Nambari ya usanidi (hapa inaiongeza kwa usanidi wa Kasi Kamili).
Ushughulikiaji wa Kitengo cha Mantiki cha Kifaa cha USB MSC Hatari
Kuongeza Kitengo cha Mantiki Kuambatanisha/Kutenganisha Hifadhi ya Kati
Kuongeza Kitengo cha Mantiki
Wakati wa kuongeza kitengo cha kimantiki kwa mfano wako wa darasa la MSC SCSI, lazima ifungwe kwa njia ya kuhifadhi (RAMDisk, kadi ya SD, kumbukumbu ya flash, nk). Darasa la MSC hutumia kiendeshi cha kuhifadhi kuwasiliana na hifadhi ya media. Dereva huyu atahitaji kuwa na usambazaji wakati wa kuongeza kitengo cha mantiki.
Example hapa chini inaonyesha jinsi ya kuongeza kitengo cha kimantiki kupitia sl_usbd_msc_scsi_lun_add() .
Example - Kuongeza Kitengo cha Mantiki kupitia sl_usbd_msc_scsi_lun_add()

Hakimiliki © 2025 Silicon Laboratories. Haki zote zimehifadhiwa.

48/174

Zaidiview

sl_usbd_msc_scsi_lun_t *lu_object_ptr = NULL;

sl_usbd_msc_scsi_lun_info_t lu_info;

sl_status_t

hali;

lu_info.sl_usbd_msc_scsi_lun_api_t = &app_usbd_scsi_storage_block_device_api;

lu_info.vendor_id_ptr

= "Maabara ya Silicon";

lu_info.product_id_ptr

= "zuia kifaa example";

lu_info.product_revision_level = 0x1000u;

lu_info.is_somwa_pekee

= uongo;

status = sl_usbd_msc_scsi_lun_add(class_nbr, &lu_info, &lu_object_ptr);
ikiwa (hali ! SL_STATUS_OK) { /* Hitilafu ilitokea. Ushughulikiaji wa hitilafu unapaswa kuongezwa hapa. */}

Kuambatanisha/Kutenganisha Hifadhi ya Kati
Baada ya kitengo cha mantiki kuongezwa, chombo cha kuhifadhi lazima kiambatishwe ili kupatikana kutoka upande wa mwenyeji. Darasa la MSC linatoa vitendakazi viwili ili kudhibiti uhusiano wa hifadhi ya midia kwa kitengo cha kimantiki: sl_usbd_msc_scsi_lun_attach() na sl_usbd_msc_scsi_lun_detach() . Vitendaji hivi hukuruhusu kuiga uondoaji wa kifaa cha kuhifadhi ili kupata tena ufikiaji kutoka kwa programu iliyopachikwa ikiwa ni lazima.
Example hapa chini inaonyesha jinsi ya kutumia chaguo za kukokotoa sl_usbd_msc_scsi_lun_attach() na sl_usbd_msc_scsi_lun_detach() .
Example – Ambatisha/Futa Vyombo vya habari

sl_status_t hali;

hali = sl_usbd_msc_scsi_lun_attach(lu_object_ptr); ikiwa (hali ! SL_STATUS_OK) { /* Hitilafu ilitokea. Ushughulikiaji wa hitilafu unapaswa kuongezwa hapa. */
}

(1)

hali = sl_usbd_msc_scsi_lun_detach(lu_object_ptr); ikiwa (hali ! SL_STATUS_OK) {
/* Hitilafu imetokea. Ushughulikiaji wa hitilafu unapaswa kuongezwa hapa. */
}

(2)

status = sl_usbd_msc_scsi_lun_attach(lu_object_ptr) ikiwa (hali ! SL_STATUS_OK) {
/* Hitilafu imetokea. Ushughulikiaji wa hitilafu unapaswa kuongezwa hapa. */
}

(3)

(1) Kuanzia wakati huu, ikiwa kifaa cha MSC kimeunganishwa kwa seva pangishi, midia ya hifadhi inapatikana.
(2) Ikiwa kifaa cha MSC kimeunganishwa kwa seva pangishi, midia sasa itaonekana kama haipatikani. Kwa wakati huu, shughuli zinaweza kufanywa kwenye media kutoka kwa programu iliyopachikwa.
(3) Tena, ikiwa kifaa cha MSC kimeunganishwa kwa seva pangishi, midia ya hifadhi itaonekana kama imeunganishwa.
Viendeshi vya Hifadhi ya Hatari ya Kifaa cha USB MSC
Darasa la MSC la Kifaa cha USB linahitaji kiendeshi cha hifadhi ili kuwasiliana na kifaa cha kuhifadhi. Kwa sasa, Silicon Labs haitoi madereva.

Hakimiliki © 2025 Silicon Laboratories. Haki zote zimehifadhiwa.

49/174

Zaidiview
TPY aa yeye dereva AI inafafanuliwa na typedef sl_usbd_msc_scsi_lun_api_t . sl_usbd_msc_scsi_lun_api_t v ri ble yetu lazima ijumuishwe ili aaaaaaaaa sl_usbd_msc_scsi_lun_info_t v ri ble, p ssed s rgument unapoweka kitengo cha mantiki kwa sl_usbd_msc_dd() _lun_a. Tazama sehemu ya API ya Kifaa cha USB MSC SCSI kwa maelezo zaidi kuhusu miundo. Utekelezaji wa kiendesha hifadhi inaweza kuwa rahisi kama safu ya sekta katika RAM. Ukubwa wa kawaida wa sekta (yaani, ukubwa wa block) ni 512 kwa vifaa vingi vya kuhifadhi, na 2048 kwa CD-ROM.

Hakimiliki © 2025 Silicon Laboratories. Haki zote zimehifadhiwa.

50/174

Zaidiview
Zaidiview
Darasa la Muuzaji wa Kifaa cha USB
Darasa la Muuzaji wa Kifaa cha USB Imeishaview Mahitaji ya Darasa la Nyenzo ya Muuzaji wa Kifaa cha USB kutoka kwa Usanidi wa Hatari wa Darasa la Muuzaji wa Kifaa cha USB Mwongozo wa Kupanga Hatari wa Muuzaji wa Kifaa cha USB Darasa la Wauzaji hukuruhusu kuunda vifaa mahususi vya muuzaji ambavyo vinaweza kutekeleza itifaki ya umiliki. Inategemea jozi ya ncha nyingi ili kuhamisha data kati ya seva pangishi na kifaa. Uhamisho wa wingi ni rahisi kwa kuhamisha kiasi kikubwa cha data isiyo na muundo na kutoa ubadilishanaji wa kuaminika wa data kwa kutumia utaratibu wa kugundua makosa na kujaribu tena. Kando na sehemu nyingi za mwisho, darasa la Wauzaji pia linaweza kutumia jozi ya hiari ya vituo vya kukatiza. Mfumo wowote wa uendeshaji (OS) unaweza kufanya kazi na darasa la Muuzaji mradi OS ina dereva kushughulikia darasa la Wauzaji. Kulingana na OS, dereva anaweza kuwa asili au muuzaji maalum. Kwa mfano, chini ya Microsoft Windows®, programu yako inaingiliana na kiendeshi cha WinUSB kilichotolewa na Microsoft ili kuwasiliana na kifaa cha mchuuzi.
Darasa la Muuzaji wa Kifaa cha USB Imeishaview
Kielelezo - Usanifu wa Jumla Kati ya Mpangishi wa Windows na Hatari ya Wauzaji inaonyesha usanifu wa jumla kati ya seva pangishi na kifaa kwa kutumia darasa la Wauzaji. Katika hii exampna, mfumo wa uendeshaji mwenyeji ni MS Windows.
Kielelezo - Usanifu Mkuu Kati ya Mpangishi wa MS Windows na Hatari ya Wauzaji

Kwa upande wa MS Windows, programu huwasiliana na kifaa cha mchuuzi kwa kuingiliana na maktaba ya USB. Maktaba, kama vile libusb, hutoa API ya kudhibiti kifaa na mirija inayohusishwa nayo, na kuwasiliana na kifaa kupitia udhibiti, wingi na kukatiza miisho.
Kwa upande wa kifaa, darasa la Wauzaji linajumuisha miisho ifuatayo:
Jozi ya vidhibiti vya IN na OUT vinaitwa mwisho chaguomsingi. Jozi ya sehemu nyingi za IN na OUT.

Hakimiliki © 2025 Silicon Laboratories. Haki zote zimehifadhiwa.

51/174

Zaidiview

Jozi ya vituo vya kukatiza vya NDANI na NJE. Jozi hii ni ya hiari. Jedwali hapa chini linaonyesha matumizi ya miisho tofauti:
Jedwali - Matumizi ya Vidokezo vya Hatari ya Wauzaji

Mwelekeo wa Mwisho

Dhibiti IN
Udhibiti
NJE
Wingi NDANI

Kifaa-kwa mwenyeji
> Kifaa-mwenyeshi
Kifaa-kwa mwenyeji

Wingi OUT
Katisha IN
Katiza
NJE

Kifaa cha mwenyeji
Kifaa-kwa mwenyeji
Kifaa cha mwenyeji

Matumizi
Maombi ya kawaida ya kuhesabiwa na maombi mahususi ya muuzaji.
Maombi ya kawaida ya kuhesabiwa na maombi mahususi ya muuzaji.
Mawasiliano ghafi ya data. Data inaweza kupangwa kulingana na itifaki ya wamiliki.
Mawasiliano ghafi ya data. Data inaweza kupangwa kulingana na itifaki ya wamiliki.
Mawasiliano ghafi ya data au arifa. Data inaweza kupangwa kulingana na itifaki ya wamiliki. Mawasiliano ghafi ya data au arifa. Data inaweza kupangwa kulingana na itifaki ya wamiliki.

Programu ya kifaa inaweza kutumia vituo vingi na kukatiza kutuma au kupokea data kwa au kutoka kwa seva pangishi. Inaweza tu kutumia mwisho-msingi ili kusimbua maombi mahususi ya muuzaji yanayotumwa na mwenyeji. Maombi ya kawaida yanadhibitiwa ndani na safu ya Msingi ya Kifaa cha USB cha Silicon Labs.
Mahitaji ya Nyenzo ya Hatari ya Muuzaji wa Kifaa cha USB kutoka Msingi

Kila wakati unapoongeza mfano wa darasa la muuzaji kwenye usanidi kupitia chaguo za kukokotoa sl_usbd_vendor_add_to_configuration() , rasilimali zifuatazo zitatolewa kutoka msingi.

Rasilimali
Violesura Violesura Mbadala Vikundi vya Kiolesura cha Pointi za Mwisho

Kiasi
1 1 2 (4 ikiwa umewezesha miisho ya kukatiza) 0

Kumbuka kuwa nambari hizo ni kwa usanidi. Unapoweka SL_USBD_INTERFACE_QUANTITY , SL_USBD_ALT_INTERFACE_QUANTITY , SL_USBD_INTERFACE_GROUP_QUANTITY na SL_USBD_DESCRIPTOR_QUANTITY thamani za usanidi, usisahau kuzingatia ni usanidi ngapi ambao darasa utaongezwa. Kwa thamani ya usanidi ya SL_USBD_OPEN_ENDPOINTS_QUANTITY, kwa kuwa sehemu za mwisho hufunguliwa tu wakati usanidi umewekwa na seva pangishi, unahitaji tu kuzingatia idadi ya vituo vinavyohitajika kwa mfano wa darasa.
Usanidi wa Daraja la Muuzaji wa Kifaa cha USB

Vikundi viwili vya vigezo vya usanidi hutumiwa kusanidi darasa la Wauzaji:
Mipangilio Maalum ya Daraja la Muuzaji wa Kifaa cha USB-Mipangilio Maalum ya Muuzaji wa Kifaa cha USB
Mipangilio Maalum ya Darasa la Muuzaji wa Kifaa cha USB
Kwanza, ili kutumia moduli ya darasa la Muuzaji wa kifaa cha USB cha Silicon Labs, rekebisha usanidi wa muda wa mkusanyiko wa Muuzaji kulingana na mahitaji yako ya programu. Zimeunganishwa upya ndani ya kichwa cha sl_usbd_core_config.h file chini ya sehemu ya Muuzaji. Madhumuni ya usanidi wa wingi ni kufahamisha moduli ya kifaa cha USB kuhusu ni vitu ngapi vya Wauzaji wa USB vya kutenga.
Jedwali hapa chini linaelezea kila ufafanuzi wa usanidi.

Hakimiliki © 2025 Silicon Laboratories. Haki zote zimehifadhiwa.

52/174

Zaidiview

Jedwali - Usanidi wa Muuzaji wa Kifaa cha USB Unafafanua

Jina la Usanidi

Maelezo

Thamani Chaguomsingi

SL_USBD_VENDOR_CLASS_INSTANCE_QUANTITY Idadi ya matukio ya darasa utakayotenga kupitia simu kwa chaguo 2 za kukokotoa sl_usbd_vendor_create_instance() .

SL_USBD_VENDOR_CONFIGURATION_QUANTITY Idadi ya usanidi. Matukio ya darasa la muuzaji yanaweza kuongezwa 1 kwa usanidi mmoja au zaidi kupitia simu kwa chaguo za kukokotoa sl_usbd_vendor_add_to_configuration() .

Mipangilio ya Kiwango cha Muuzaji wa Kifaa cha USB

Sehemu hii inafafanua usanidi unaohusiana na hali za darasa la Wauzaji.
Class Instance Creation intr_en muda p_vendor_callbacks
Uundaji wa Mfano wa Hatari

Kuunda mfano wa darasa la Wauzaji hufanywa kwa kuita kazi sl_usbd_vendor_create_instance() , ambayo inachukua hoja tatu za usanidi ambazo zimefafanuliwa hapa chini.

intr_sw
Boolean ambayo inaonyesha kama jozi ya miisho ya kukatiza inapaswa kuongezwa au la.

Thamani
kweli uongo

Maelezo
Jozi za ncha za IN/OUT zitaongezwa na kupatikana kwa programu iliyopachikwa. Hakuna kituo cha kukatiza kitakachoongezwa. Jozi ya mwisho ya Wingi IN/OUT ndiyo itapatikana.

muda
Ukiweka intr_en kuwa true , unaweza kubainisha muda wa upigaji kura wa vituo vya kukatiza (katika milisekunde). Ukiweka intr_en kuwa false , unaweza kuweka muda kuwa 0 kwani itapuuzwa na darasa.
p_vendor_callbacks
p_vendor_callbacks ni kiashirio kwa muundo wa muundo wa kurudi nyuma. ambayo unaweza kubainisha kushughulikia maombi maalum ya udhibiti wa darasa. Ikiwa hutumii maombi yoyote maalum ya darasa au mahitaji wezesha/zima arifa, unaweza kuweka hii kuwa NULL .
Example hapa chini hutoa saini inayotarajiwa ya kishughulikia maombi maalum cha darasa lako.
Example - Saini ya Kazi ya Ombi Maalum la Darasa

programu batili_usbd_vendor_req_handle(uint8_t

darasa_nbr, (1)

const sl_usbd_setup_req_t *p_setup_req); (2)

sl_usbd_vendor_callbacks_t app_usbd_vendor_callback_functions =
{
.wezesha = NULL, .zima = NULL, .setup_req = app_usbd_vendor_req_handle,
};

(1) Nambari ya mfano ya darasa la muuzaji.

Hakimiliki © 2025 Silicon Laboratories. Haki zote zimehifadhiwa.

53/174

Zaidiview

(2) Ashiria ombi la usanidi lililopokelewa kutoka kwa mpangishaji.
Mwongozo wa Kuandaa Daraja la Wauzaji wa Kifaa cha USB
Sehemu hii inaelezea jinsi ya kutumia darasa la Wauzaji. Kuanzisha Daraja la Muuzaji wa Kifaa cha USB Kuongeza Tukio la Hatari la Muuzaji wa Kifaa cha USB kwenye Kifaa chako Kuwasiliana kwa kutumia Daraja la Muuzaji wa Kifaa cha USB
Kuanzisha Daraja la Muuzaji wa Kifaa cha USB
Ili kuongeza utendakazi wa Daraja la Wauzaji kwenye kifaa chako, kwanza anzisha darasa kwa kupiga chaguo za kukokotoa USBD_Vendor_Init(). Example hapa chini inaonyesha jinsi ya kupiga simu sl_usbd_vendor_init() .
Example - kupiga simu sl_usbd_vendor_init()

sl_status_t hali;
hali = sl_usbd_vendor_init(); ikiwa (hali ! SL_STATUS_OK) { /* Hitilafu ilitokea. Ushughulikiaji wa hitilafu unapaswa kuongezwa hapa. */}
Inaongeza Tukio la Daraja la Muuzaji wa Kifaa cha USB kwenye Kifaa chako
Ili kuongeza utendaji wa darasa la muuzaji kwenye kifaa chako, lazima kwanza uunde mfano, kisha uuongeze kwenye usanidi wa kifaa chako.
Kuunda Tukio la Daraja la Muuzaji Kuongeza Tukio la Daraja la Muuzaji kwenye Mipangilio ya Kifaa chako
Kuunda Mfano wa Hatari ya Wauzaji
Unda mfano wa darasa la Wauzaji kwa kupiga kazi sl_usbd_vendor_create_instance() . Example hapa chini inaonyesha jinsi ya kupiga simu sl_usbd_vendor_create_instance() kwa kutumia hoja chaguo-msingi. Kwa maelezo zaidi kuhusu hoja za usanidi za kupitisha sl_usbd_vendor_create_instance() , angalia Mipangilio ya Hali ya Hatari ya Muuzaji wa Kifaa cha USB.
Example - Kupiga simu kwa sl_usbd_vendor_create_instance()

uint8_t class_nbr; sl_status_t hali;

status = sl_usbd_vendor_create_instance(uongo,

(1)

0u,

(2)

programu_usbd_vendor_callback_functions, (3)

&class_nbr);

ikiwa (hali ! SL_STATUS_OK) {

/* Hitilafu imetokea. Ushughulikiaji wa hitilafu unapaswa kuongezwa hapa. */

}

(1) Hakuna miisho ya Kukatiza na mfano wa darasa hili. (2) Kipindi hakizingatiwi kwa kuwa sehemu za Kukatiza zimezimwa.

Hakimiliki © 2025 Silicon Laboratories. Haki zote zimehifadhiwa.

54/174

Zaidiview

(3) Kitendaji cha kupiga simu ambacho ni sehemu ya programu yako inayoshughulikia maombi ya darasa mahususi ya muuzaji. Angalia Kuwasiliana kwa kutumia Daraja la Muuzaji wa Kifaa cha USB kwa maelezo zaidi. Kuongeza Mfano wa Daraja la Muuzaji kwenye Usanidi wa Kifaa Chako Baada ya kuunda mfano wa darasa la muuzaji, unaweza kuuongeza kwenye usanidi kwa kuita kitendakazi USBD_Vendor_ConfigAdd(). Example hapa chini inaonyesha jinsi ya kupiga simu sl_usbd_vendor_add_to_configuration() kwa kutumia hoja chaguo-msingi.
Example - Kupigia simu sl_usbd_vendor_add_to_configuration()

sl_status_t hali;

status = sl_usbd_vendor_add_to_configuration(class_nbr,

(1)

config_nbr_fs);

(2)

ikiwa (hali ! SL_STATUS_OK) {

/* Hitilafu imetokea. Ushughulikiaji wa hitilafu unapaswa kuongezwa hapa. */

}

(1) Nambari ya darasa ya kuongeza kwenye usanidi iliyorejeshwa na sl_usbd_vendor_create_instance() . (2) Nambari ya usanidi (hapa ikiiongeza kwa usanidi wa Kasi Kamili).
Kuwasiliana kwa Kutumia Daraja la Muuzaji wa Kifaa cha USB
Mawasiliano ya Jumla Yanayolandanishwa Ombi la Jumla la Muuzaji wa Mawasiliano Yanayofanana Kwa Jumla Darasa la Wauzaji hutoa vipengele vifuatavyo ili kuwasiliana na mwenyeji. Kwa maelezo zaidi kuhusu vigezo vya chaguo la kukokotoa, angalia API ya Muuza Kifaa cha USB.
Jedwali - Muhtasari wa API ya Mawasiliano ya Wauzaji

Jina la kazi
sl_usb d _v e nd o r_ tangazo _b ulk_sy nc() sl_usb d _v e nd o r_andika _b ulk_sy nc() sl_usb d _v e nd o r_ re ad _b ulk_s olv _usb) 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_andika _inte rrup t_sy nc() sl_usb drr drr t_asy nc
()
sl_usb d _v e nd o r_andika _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-
kuzuia.
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

Hakimiliki © 2025 Silicon Laboratories. Haki zote zimehifadhiwa.

55/174

Zaidiview

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

hali;

status = sl_usbd_vendor_read_bulk_sync(class_nbr,

(1)

(void *)&rx_buf[0],

(2)

2u,

0u,

(3)

&xfer_len);

ikiwa (hali ! SL_STATUS_OK) {

/* $$$$ Shughulikia hitilafu. */

}

status = sl_usbd_vendor_write_bulk_sync( class_nbr,

(1)

(void *)&tx_buf[0],

(4)

2u,

0u,

(3)

false,

(5)

&xfer_len);

ikiwa (hali ! SL_STATUS_OK) {

/* $$$$ Shughulikia hitilafu. */

}

(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) Programu hutoa bafa ya kusambaza iliyoanzishwa.
(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.
Mawasiliano ya 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

Hakimiliki © 2025 Silicon Laboratories. Haki zote zimehifadhiwa.

56/174

Zaidiview

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

hali;

status = sl_usbd_vendor_read_bulk_async(class_nbr,

(void *)&rx_buf[0],

(2)

2u,

app_usbd_vendor_rx_completed,

NULL);

(4)

ikiwa (hali ! SL_STATUS_OK) {

/* $$$$ Shughulikia hitilafu. */

}

status = sl_usbd_vendor_write_bulk_async(class_nbr,

(void *)&tx_buf[0],

(5)

2u,

app_usbd_vendor_tx_completed,

NULL,

(4)

false);

(6)

ikiwa (hali ! SL_STATUS_OK) {

/* $$$$ Shughulikia hitilafu. */

}

}

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

{

ikiwa (hali ! SL_STATUS_OK) {

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

} nyengine {

/* $$$$ Shughulikia hitilafu. */

}

}

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)

{

ikiwa (hali ! SL_STATUS_OK) {

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

} nyengine {

/* $$$$ Shughulikia hitilafu. */

}

}

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

Hakimiliki © 2025 Silicon Laboratories. Haki zote zimehifadhiwa.

57/174

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

Hakimiliki © 2025 Silicon Laboratories. Haki zote zimehifadhiwa.

58/174

Zaidiview

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

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;

chaguo-msingi:

(6)

// Request is not supported.

Hakimiliki © 2025 Silicon Laboratories. Haki zote zimehifadhiwa.

59/174

Zaidiview

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

muundo wa typedef {

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

*/

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

Hakimiliki © 2025 Silicon Laboratories. Haki zote zimehifadhiwa.

60/174

Nyaraka za API
Nyaraka za API
Nyaraka za API
Orodha ya moduli
USB Device API USB Device ACM API USB Device CDC API USB Device Core API USB Device HID API USB Device MSC API USB Device MSC SCSI API USB Device Vendor API

Maelezo
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

Hakimiliki © 2025 Silicon Laboratories. Haki zote zimehifadhiwa.

61/174

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

Hakimiliki © 2025 Silicon Laboratories. Haki zote zimehifadhiwa.

62/174

USB Device ACM API

USB Device ACM API

USB Device ACM API

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

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

Hakimiliki © 2025 Silicon Laboratories. Haki zote zimehifadhiwa.

63/174

USB Device ACM API
Macros
#define SL_USBD_CDC_ACM_NBR_NONE 255u
MODULI.
#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
Hakimiliki © 2025 Silicon Laboratories. Haki zote zimehifadhiwa.

64/174

USB Device ACM API

Aina
utupu

Direction N/A

Argument Name

MACROS GLOBAL CONSTANTS FUNCTION PROTOTYPES CDC ACM FUNCTIONS

Initialize the CDC ACM serial emulation subclass.
Inarudi

Returns SL_STATUS_OK on success or another SL_STATUS code on failure.

Maelezo

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

Aina
uint16_t
uint16_t

Direction Argument Name

Maelezo

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.

Inarudi

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

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

Inarudi

Hakimiliki © 2025 Silicon Laboratories. Haki zote zimehifadhiwa.

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

Aina

Mwelekeo

Argument Name

Maelezo

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

Nyaraka / Rasilimali

SILICON LABS USB Device Stack [pdf] Mwongozo wa Maelekezo
USB Device Stack, Device Stack, Stack

Marejeleo

Acha maoni

Barua pepe yako haitachapishwa. Sehemu zinazohitajika zimetiwa alama *