Isitaki Sedivayisi ye-USB
Imininingwane
- Inguqulo ye-USB: 1.5.1
- Idethi yokukhishwa: Julayi 21, 2025
- Inguqulo ye-SDK elula: 2025.6.1
Umkhiqizo Uphelileview
Isitaki sedivayisi ye-USB yi-Silicon Labs sihlinzeka ngezinto ezihlukahlukene futhi
okulula ukukusebenzisa ukuxhumana kwe-USB kumaphrojekthi we-IoT, kuyasiza
ukuxhumana phakathi kwama-co-processors enethiwekhi nababungazi.
Izici
- Isitaki sedivayisi ye-USB esisebenzayo
- Ilungele amaphrojekthi we-IoT
- Ukusekela ukuxhumana phakathi kwama-co-processors enethiwekhi kanye
ababungazi
Imiyalo yokusetshenziswa komkhiqizo
Ukucushwa Kwedivayisi ye-USB
Lungiselela izilungiselelo zedivayisi ye-USB ngokuya ngephrojekthi yakho
izidingo ngokubhekisela esigabeni Sokucushwa Kwedivayisi ye-USB
embhalweni.
I-USB Device Programming Guide
Landela Umhlahlandlela Wokuhlela Wedivayisi ye-USB ukuze uqonde ukuthi kwenziwa kanjani
Uhlelo futhi uhlanganyele nedivayisi ye-USB kwezinhlobonhlobo
izicelo.
Amakilasi edivayisi ye-USB
Isigaba samakilasi wedivayisi ye-USB sinikeza i-overview ezahlukene
amakilasi afana ne-CDC ACM, HID, MSC SCSI, kanye Nekilasi Lomthengisi. Khetha i-
isigaba esifanele ngokusekelwe ekusebenzeni kwedivayisi yakho.
Ukuxazulula Inkinga Yedivayisi ye-USB
Uma uhlangabezana nanoma yiziphi izinkinga ngedivayisi ye-USB, bheka ku
Isigaba sokuxazulula inkinga Sedivayisi ye-USB ukuze uthole izixazululo nokulungisa iphutha
amathiphu.
I-Microsoft Windows OS USB Host
Uma usebenzisa idivayisi ye-USB ene-Microsoft Windows OS USB
Umsingathi, qiniseka ukuthi ulandela imihlahlandlela enikeziwe ku
imibhalo yokuhlanganiswa okungenamthungo.
FAQ
Umbuzo: Yiziphi ezinye ze-ex ezivamileampamadivaysi amancane engingawakha ngiwasebenzisa
lesi sitaki se-USB?
A: Isitaki se-USB sikuvumela ukuthi wakhe amadivaysi afana
Ama-adaptha e-USB-to-serial, amagundane noma amakhibhodi, isitoreji esikhiphekayo
amadivayisi, namadivayisi ngokwezifiso.
Q: Ingabe zikhona izidingo ezithile zesofthiwe zokusebenzisa lokhu
Isitaki sedivayisi ye-USB?
A: Isofthiwe ehambisanayo ifaka i-Siplicity SDK, Ubulula
Isitudiyo, I-Siplicity Commander, i-GCC (Iqoqo Le-GNU Compiler),
I-IAR Embedded Workbench ye-ARM, kanye ne-IAR EWARM.
I-Universal Serial Bus USB
I-Universal Serial Bus USB
I-USB Overview Kuphelileview
Khipha Amanothi e-USB
Imininingwane kanye nezici Overview
Ukucushwa Kwedivayisi ye-USB Kuphelileview
I-USB Device Programming Guide Overview
Amakilasi edivayisi ye-USB Aphelileview I-CDC ACM Class Overview HID Class Overview I-MSC SCSI Class Overview I-Vendor Class Overview
I-USB API API Documentation USB Device API USB Device 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 API
sl_usbd_device_config_t sl_usbd_setup_req_t
i-sl_usbd_cl ss_driver_t Idivayisi ye-USB HID API
sl_usbd_hid_callbacks_t Idivayisi ye-USB ye-MSC API
a sl_usbd_msc_subcl ss_driver_t USB Kudivayisi MSC SCSI API
sl_usbd_msc_callbacks_t
Copyright © 2025 Silicon Laboratories. Wonke Amalungelo Agodliwe.
1/174
I-Universal Serial Bus USB
i-sl_usbd_msc_lun_ pi
sl_usbd_msc_scsi_lun_info sl_usbd_msc_scsi_lun
USB Device Vendor API sl_usbd_vendor_callbacks_t
I-API Documentation ye-USB Device Troubleshooting
Kuphelileview I-Microsoft Windows OS USB Host
Kuphelileview
Copyright © 2025 Silicon Laboratories. Wonke Amalungelo Agodliwe.
2/174
Kuphelileview
Kuphelileview
Idivayisi ye-USB
I-USB ingenye yezindlela zokuxhumana eziphumelela kakhulu emlandweni wezinhlelo zamakhompiyutha futhi iyindinganiso ye-de facto yokuxhuma ama-peripheral ekhompyutha. Isitaki Sedivayisi Ye-Silicon Labs siyimojuli yedivayisi ye-USB eklanyelwe ngokuqondile amasistimu ashumekiwe. Yakhelwe kusukela phansi ngekhwalithi, ukukala, nokuthembeka kwe-Silicon Labs, idlule enqubweni yokuqinisekisa eqinile ukuze ihambisane nokucaciswa kwe-USB 2.0. Le mibhalo ichaza indlela yokuqalisa, ukuqala, nokusebenzisa isitaki Sedivayisi ye-USB Yamalebhu e-Silicon. Ichaza amanani ahlukahlukene okucushwa kanye nokusetshenziswa kwawo. Kuhlanganisa ne-overview yobuchwepheshe, izinhlobo zamathuba okumisa, izinqubo zokuqalisa, kanye nesibampukusetshenziswa okuvamile kwawo wonke amakilasi atholakalayo.
Ukukusiza uqonde imiqondo ye-USB ngokushesha, amadokhumenti afaka ama-ex amaningiampi-USB enemisebenzi eyisisekelo. Lezi exampI-les izokunikeza ngohlaka olukuvumela ukuthi wakhe amadivayisi ngokushesha. Lezi exampzihlanganisa:
I-adaptha ye-USB-to-serial (Ikilasi Ledivayisi Yezokuxhumana) Igundane noma ikhibhodi (Ikilasi ledivayisi ye-Human Interface) Idivayisi yesitoreji ekhiphekayo (Ikilasi Lesitoreji Sobuningi) Idivayisi yangokwezifiso (Ikilasi Lomthengisi)
Okulandelayo kuphelileview kwezigaba zamadokhumenti:
Ukucaciswa nezici Ukucushwa Kwedivayisi ye-USB Umhlahlandlela Wokuhlela Wedivayisi ye-USB Amakilasi Wedivayisi ye-USB
Ikilasi le-CDC ACM Ikilasi le-HID Ikilasi le-MSC SCSI Ikilasi Lomthengisi Ikilasi Ledivayisi ye-USB Ukuxazulula izinkinga nge-Microsoft Windows OS Umsingathi we-USB
Copyright © 2025 Silicon Laboratories. Wonke Amalungelo Agodliwe.
3/174
I-USB
I-USB
Inguqulo ye-USB 1.5.1 Julayi 21, 2025 - Amanothi Okukhishwa
Inguqulo ye-SDK elula 2025.6.1
Isitaki sedivayisi ye-USB esebenza kahle ye-Silicon Labs sinikeza ukuxhumana kwe-USB okuguquguqukayo, okulula ukukusebenzisa kumaphrojekthi we-IoT, okuhlanganisa ukuxhumana phakathi kwamaphrosesa enethiwekhi nabasingathi. Chofoza lapha ukuze uthole ukukhishwa kwangaphambilini.
Isifinyezo Sokukhishwa
Izici Ezibalulekile | Izinguquko ze-API | Ukulungisa Iziphazamisi | Ukunika amandla i-Chip
Izici Eziyinhloko
Inkundla eyisisekelo iyashintsha kuphela.
Izinguquko ze-API
Lutho.
Ukulungiswa Kweziphazamisi
Lutho.
Ukunika amandla i-Chip
Lutho.
Izici Eziyinhloko
Izici Ezintsha | Izithuthukisi | Izici Ezisusiwe | Izici Ezihoxisiwe
Izici Ezintsha
Lutho.
Izithuthukisi
Inkundla eyisisekelo iyashintsha kuphela.
Izici ezisusiwe
Lutho.
Izici ezehlisiwe
Lutho.
Izinguquko ze-API
Ama-API amasha | Ama-API ashintshiwe | Ama-API asusiwe | Ama-API ahoxisiwe
Ama-API amasha
Copyright © 2025 Silicon Laboratories. Wonke Amalungelo Agodliwe.
4/174
I-USB
Lutho.
Ama-API ashintshiwe
Lutho.
Ama-API asusiwe
Lutho.
Ama-API ahoxisiwe
Lutho.
Ukulungiswa Kweziphazamisi
Lutho.
Ukunika amandla i-Chip
Lutho.
Isicelo Example Izinguquko
Exampibe | Isibampibe | Kukhishiwe Exampibe | Kwehlisiwe ExampLes
ExampLes
Lutho.
IsibampLes
Lutho.
Kukhishiwe ExampLes
Lutho.
Kwehlisiwe ExampLes
Lutho.
Umthelela Wezinguquko Zokukhishwa
Izitatimende Zomthelela | Umhlahlandlela Wokufuduka
Izitatimende Zomthelela
Lutho.
Umhlahlandlela Wokufuduka
Lutho.
Izinkinga Ezaziwayo Nemikhawulo
Lutho.
Ukusebenzisa Lokhu Kukhululwa
Copyright © 2025 Silicon Laboratories. Wonke Amalungelo Agodliwe.
5/174
I-USB
Yini ekukhishweni? | Isoftware Ehambisanayo | Ukufakwa nokusebenzisa | Usizo Nempendulo
Yini ekukhishweni?
Isicelo Sesitaki Sedivayisi ye-USB ExampLes
Isoftware Ehambisanayo
Isofthiwe
I-Siplicity SDK Simplicity Studio Simplicity Commander GCC Iqoqo le-GNU Compiler) I-IAR Eshumekiwe Workbench ye-ARM IAR EWARM
Inguqulo Ehambisanayo noma Okuhlukile
2025.5.0
Ukufakwa nokusetshenziswa
Ukuze uqale ukuthuthukiswa kwakho bona:
I-USB Device Programming Guide. API Documentation.
Ukuze uthole ulwazi mayelana ne-Secure Vault Integration, bheka I-Vault Evikelekile.
Ukwenza kabushaview Izaziso Zokuvikeleka Nokwelulekwa Kwesoftware futhi uphathe izintandokazi zakho zezaziso:
ò Iya ku-https://community.silabs.com/. ó Ngena ngemvume ngemininingwane ye-akhawunti yakho. ô Chofoza uchwepheshe wakhofile isithonjana ekhoneni eliphezulu kwesokudla sekhasi.
õ Khetha Izaziso kumenyu eyehlayo. ö Esigabeni Sezaziso, yiya kuthebhu ethi Izaziso Zomkhiqizo Wami ukuze uphindeview Ukwelulekwa ngokomlando Kokuphepha kanye Nesofthiwe
izaziso
÷ Ukuze ulawule izintandokazi zakho, sebenzisa ithebhu ethi Phatha Izaziso ukuze wenze ngendlela oyifisayo ukuthi yiziphi izibuyekezo zomkhiqizo nezeluleko onazo.
thola.
Ukuze uthole izilungiselelo ezinconyiwe zokucushwa, bona lapha.
Ukuze ufunde kabanzi mayelana nesofthiwe kulokhu kukhululwa, ngena kumibhalo yethu eku-inthanethi.
Usizo Nempendulo
Xhumana Nokusekelwa Kwelebhu Ye-Silicon. Ukuze usebenzise ithuluzi lethu le-Ask AI ukuze uthole izimpendulo, bona inkambu yokusesha phezulu kuleli khasi.
Qaphela: Ukubuza i-AI kuwukuhlola.
Thola usizo emphakathini wethu wonjiniyela.
Inqubomgomo Yokukhishwa Nokugcinwa Kwe-SDK
Bona Ukukhishwa Kwe-SDK Nenqubomgomo Yesondlo yethu.
Copyright © 2025 Silicon Laboratories. Wonke Amalungelo Agodliwe.
6/174
Kuphelileview
Kuphelileview
Imininingwane
Ithobelana “Nenguqulo 2.0 yokucaciswa kwe-Universal Serial Bus” Isebenzisa “I-Interface Association Descriptor Engineering Change Notice (ECN)” Izinhlobo Zokudlulisela
Lawula Amakilasi Okuphazamisa Ngobuningi be-USB Ikilasi Ledivayisi Yokuxhumana (CDC) Imodeli Yokulawula Okungaziwa (ACM) Idivayisi Yesixhumi Esibonakalayo Somuntu (HID) Ikilasi Lokugcina Inqwaba (MSC) Uhlaka lwekilasi oluthize lomthengisi
Izici
Kuyalinganiseka ukuze kufakwe izici ezidingekayo kuphela ukuze kuncishiswe isigxivizo sememori Isekela isivinini esigcwele (12 Mbit/s) Isekela amadivayisi ayinhlanganisela (imisebenzi eminingi) Isekela amadivayisi wokucushwa okuningi Isekela imisebenzi yokonga amandla ye-USB (idivayisi imisa okwesikhashana futhi iqalise) Ukuhlanganiswa okuphelele Kwekilasi Lokulondoloza Inqwaba ku-Micrium OS File Imojula yesistimu Ithuthukiswe nge-CMSIS-RTOS2 abstraction layer ukuze ikwazi ukusebenza nama-OS ahlukene. I-Silicon Labs GSDK iza namachweba we-FreeRTOS kanye ne-Micrium OS.
Copyright © 2025 Silicon Laboratories. Wonke Amalungelo Agodliwe.
7/174
Kuphelileview
Kuphelileview
Ukucushwa Kwedivayisi ye-USB
Lesi sigaba sidingida indlela yokumisa Idivayisi Ye-USB Yamalebhu e-Silicon. Kunamaqembu amathathu amapharamitha wokumisa, alandelayo:
Ukucushwa Kwedivayisi Ye-USB Okuyinhloko Ukucushwa Kolwazi Lwedivayisi ye-USB Ukucushwa Kwehadiwe Yedivayisi ye-USB
Ukucushwa Kwedivayisi Ye-USB
Idivayisi Ye-USB Yamalebhu E-Silicon ingalungiswa ngesikhathi sokuhlanganiswa ngesethi ye-#defines etholakala ku-sl_usbd_core_config.h file. Idivayisi ye-USB isebenzisa okuthi #defines uma kungenzeka ngoba ivumela ikhodi nosayizi bedatha ukuthi bakalwe ngesikhathi sokuhlanganiswa ngokusekelwe ekutheni yiziphi izici ezinikwe amandla. Lokhu kuvumela inkumbulo efundwayo kuphela (i-ROM) kanye nenkumbulo yokufinyelela okungahleliwe (i-RAM) yedivayisi ye-USB ye-Silicon Labs ukuthi ilungiswe kuya ngezidingo zohlelo lwakho lokusebenza.
Kunconyiwe: Qala inqubo yokumisa ngamavelu azenzakalelayo (agqanyiswe ngokugqamile).
Izigaba ezingezansi zihlelwe ngokusekelwe kuhlelo lokucushwa kwesifanekiso file, sl_usbd_core_config.h.
Ukucushwa Kwamakilasi Okucushwa Okubalulekile
Ukucushwa Okubalulekile
Ithebula – I-USB Core Constant Constant Constants
Incazelo Eqhubekayo
Inani elizenzakalelayo
SL_USBD_TA SK_STACK_ SIZE
Ilungiselela usayizi wesitaki ngamabhayithi womsebenzi oyinhloko we-USBD
4096
SL_USBD_TA SK_PRIORIT Y
Ilungiselela okubalulekile komsebenzi oyinhloko we-USBD. Lokhu kubalulekile kwe-CMSIS-RTOS2.
osPriorityHigh
SL_USBD_A UTO_START _USB_DEVIC E
Uma inikwe amandla, idivayisi ye-USB izoqalwa ngokuzenzakalela uma i-kernel isiqalisiwe kanye nomsebenzi oyinhloko we-USBD ohleliwe uhlelelwe okokuqala ngqa. Uma lukhutshaziwe, uhlelo lwakho lokusebenza luzodinga ukushayela ku-sl_usbd_core_start_device() uma selilungele ukutholwa umsingathi we-USB.
SL_USBD_C Isamba senani lokucushwa elizongezwa nge-sl_usbd_add_configuration()
1
Umsebenzi we-ONFIGURATI.
ON_QUANTI
TY
Copyright © 2025 Silicon Laboratories. Wonke Amalungelo Agodliwe.
8/174
Kuphelileview
Njalo
SL_USBD _INTERF ACE_QU ANTITY
SL_USBD _ALT_INT ERFACE_ QUANTI
TY
SL_USBD _INTERF ACE_GR
OUP_QU
I-ANTITY
SL_USBD _DESCRI
PTOR_Q
UANTITY
SL_USBD _STRING _QUANTI
TY
SL_USBD _OPEN_E NDPOIN TS_QUA NTITY
Ingqikithi yenani lezixhumanisi ze-USB ezizokwengezwa kukho konke ukucupha kwakho. Lokhu kuncike kakhulu ekilasini(ama)elisetshenzisiwe. Ukuze uthole ulwazi olwengeziwe mayelana nokuthi zingaki izixhumi ezibonakalayo ezidingwa yisibonelo sekilasi, bheka isigaba esithi “Izidingo Zensiza ezivela kumgogodla” we(ama)kilasi akho.
Isamba senani lezinye izixhumi ezibonakalayo ze-USB ezizongezwa kukho konke ukulungiselelwa kwakho. Lokhu kuncike kakhulu ekilasini(ama)elisetshenzisiwe. Leli nani kufanele lihlale lilingana noma likhulu kuno-SL_USBD_INTERFACE_QUANTITY . Ukuze uthole ulwazi olwengeziwe ngokuthi zingaki ezinye izindawo zokusebenzelana ezidingwa yisibonelo sekilasi, bheka isigaba esithi “Izidingo Zensiza Ezisuka Ku-Core” zekilasi lakho.
Isamba senani lamaqembu esixhumi esibonakalayo se-USB azokwengezwa kukho konke ukucupha kwakho. Lokhu kuncike kakhulu ekilasini(ama)elisetshenzisiwe. Ukuze uthole ulwazi olwengeziwe ngokuthi mangaki ama-interface amaqembu adinga isibonelo sekilasi, bheka isigaba esithi “Izidingo Zensiza Ezisuka Ku-Core” zekilasi lakho.
Isamba senani lezincazelo ze-Endpoint ezizongezwa kukho konke ukulungiselelwa kwakho. Lokhu kuncike kakhulu ekilasini(ama)elisetshenzisiwe. Ukuze uthole ulwazi olwengeziwe mayelana nokuthi zingaki izichazi zephoyinti lokugcina isibonelo sekilasi esizidingayo, bheka “Inani lamaphoyinti okugcina” esigabeni esithi “Izidingo Zensiza Kusuka Ku-Core” zekilasi lakho. Qaphela ukuthi amaphoyinti okulawula awadingi ukucatshangelwa lapha. Isamba senani lezintambo ze-USB. Ukusetha inani libe uziro kuzokhubaza isici. Ukukhubaza lokhu kuzobangela ukuthi idivayisi ingagcini noma yiziphi izintambo zokuchaza i-USB ezidluliswe ohlelweni. Lokhu kusho ukuthi umsingathi ngeke akwazi ukubuyisa iyunithi yezinhlamvu zencazelo (njengomkhiqizi negama lomkhiqizo). Isamba senani lamaphoyinti okuphela avuliwe ekucushweni ngakunye. Idivayisi idinga okungenani iziphetho ezimbili ezivuliwe ukuze udlulise ukulawula, kodwa kufanele futhi wengeze amaphoyinti esigaba(ama)kilasi asetshenzisiwe. Ukuze uthole ulwazi olwengeziwe ngokuthi mangaki amaphoyinti okuphela avuliwe isibonelo sekilasi esiwadingayo, bheka “Inani lamaphoyinti okugcina” esigabeni esithi “Izidingo Zensiza Kusuka Ku-Core” zekilasi(ama)kilasi akho.
Inani elizenzakalelayo
10 10
2
20 30 20
Ukucushwa kwamakilasi
Amakilasi anezilungiselelo ezithile zesikhathi sokuhlanganisa. Bheka kumakilasi edivayisi ye-USB ukuze uthole ulwazi olwengeziwe.
Ukucushwa Kolwazi Lwedivayisi ye-USB
Ukucushwa kwe-sl_usbd_device_config.h file ihlanganisa kabusha isikhathi sokuhlanganisa i-#define-s ukuze kusethwe ulwazi oluyisisekelo mayelana nedivayisi yakho, njenge-ID Yomthengisi/Yomkhiqizo, izintambo zedivayisi, njll. Ithebula elingezansi lichaza incazelo yokwaziswa ngakunye okutholakala kulokhu kulungiselelwa. file.
Ithebula – Ukucushwa Kolwazi Lwedivayisi ye-USB Kuyachaza
Njalo
SL_USBD_DEVIC E_VENDOR_ID
SL_USBD_DEVIC E_PRODUCT_ID
Inombolo yakho kamazisi njengoba ilethwe yi-USB Implementers Forum. Ukuze uthole ulwazi olwengeziwe mayelana nokuthi ungayithola kanjani i-ID yomthengisi, bheka ku-http://www.usb.org/developers/vendor/. Inombolo yakho kamazisi yomkhiqizo.
Copyright © 2025 Silicon Laboratories. Wonke Amalungelo Agodliwe.
9/174
Kuphelileview
Njalo
Incazelo
SL_USBD_DEVICE_RELEASE Inombolo yokukhishwa yedivayisi yakho. _NUMBER
SL_USBD_DEVICE_MANUFA Iyunithi yezinhlamvu echaza umkhiqizi wedivayisi yakho. Lokhu kulungiselelwa kuzitshwa lapho
CTURER_STRING
ukucushwa kwe-SL_USBD_STRING_QUANTITY kusethelwe ku-0.
SL_USBD_DEVICE_PRODUC Uchungechunge oluchaza umkhiqizo wakho. Lokhu kulungiselelwa kuzitshwa lapho kulungiselelwa
T_STRING
SL_USBD_STRING_QUANTITY isethwe ku-0.
SL_USBD_DEVICE_SERIAL_N Iyunithi yezinhlamvu equkethe inombolo yesiriyali yedivayisi yakho. Lokhu kulungiselelwa kuzitshwa lapho
UBER_STRING
ukucushwa kwe-SL_USBD_STRING_QUANTITY kusethelwe ku-0.
SL_USBD_DEVICE_LANGUA Inombolo yokuhlonza yolimi lweyunithi yezinhlamvu zedivayisi yakho. Amanani angenzeka yilawa:
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
Lokhu kulungiselelwa kuzitshwa lapho ukucushwa kwe-SL_USBD_STRING_QUANTITY kusethelwe ku-0.
Ukucushwa kwe-Hardware Yedivayisi ye-USB
Kuya ngedivayisi ye-Silicon Labs oyisebenzisayo, kungenzeka ube nephinikhodi ye-GPIO kanye nembobo ukuze ulungiselele isignali ye-USB VBUS Sense. Izincazelo zokumisa zikusihloko esithi sl_usbd_hardware_config.h file.
Njalo
SL_USBD_DRIVER_VBUS_SENSE_PORT SL_USBD_DRIVER_VBUS_SENSE_PIN
Incazelo
I-GPIO Port yesiginali ye-USB VBUS Sense ebhodini lakho. Iphinikhodi ye-GPIO yesiginali ye-USB VBUS Sense ebhodini lakho.
Copyright © 2025 Silicon Laboratories. Wonke Amalungelo Agodliwe.
10/174
Kuphelileview
Kuphelileview
I-USB Device Programming Guide
Lesi sigaba sichaza indlela yokusebenzisa imojula Yedivayisi ye-USB.
Ukusethwa Kwasekuqaleni Kwemojuli Yedivayisi ye-USB
Lesi sigaba sichaza izinyathelo eziyisisekelo ezidingekayo ukuze uqalise imojuli Yedivayisi ye-USB kanye nokwengeza, ukulungiselela, nokuqalisa idivayisi. Ukuqalisa Imojula Yedivayisi Ye-USB Ukuqalisa I-USB Device Core Ukuqalisa I-aCl ss(es) Yengeza Idivayisi Yakho ye-USB Ukwakha Idivayisi Yakho ye-USB Kwengeza Ukucushwa Kwengeza Imisebenzi ye-USB Ukuqalisa Idivayisi Yakho ye-USB
Imisebenzi Hook Yomcimbi
Iqalisa Imojula Yedivayisi ye-USB
Iqalisa i-USB Device Core
a US a Qalisa ngokuqalisa uhlaka lwemojuli yedivayisi engu-B ngokuhlanganisa umsebenzi sl_usbd_core_init() . Isibonelo esingezansi sibonisa okuthi c lling sl_usbd_core_init() .
Example - Ishayela i-sl_usbd_core_init()
sl_status_t isimo; isimo = sl_usbd_core_init(); uma (isimo ! SL_STATUS_OK) {/* Kwenzeke iphutha. Ukuphatha iphutha kufanele kwengezwe lapha. */
}
Ukuqala Amakilasi
Ngemva kokuthi imojuli yemojuli yedivayisi ye-USB isiqalisiwe, kufanele uqalise ikilasi ngalinye ohlose ukulisebenzisa. Bona isigaba “Umhlahlandlela Wohlelo” se-acl ss(s) yakho ukuze uthole ulwazi olwengeziwe.
Ukwakha Idivayisi Yakho ye-USB
Yengeza ukumisa
Ngemva kokuthi uqalise ngempumelelo idivayisi yakho, ungaqala ukwengeza imisebenzi ye-USB kuyo, uqale ngokucushwa okusha. Idivayisi kufanele ibe nokucushwa okungenani okukodwa. Ukwengeza izilungiselelo, shayela umsebenzi othi aa sl_usbd_core_ dd_configur tion() function. Lo msebenzi kufanele ubizwe ekucushweni ngakunye ofuna ukukwengeza. I-exampI-le engezansi ibonisa indlela yokwengeza isivinini esigcwele.
Example - Ukwengeza ukucushwa kudivayisi yakho
Copyright © 2025 Silicon Laboratories. Wonke Amalungelo Agodliwe.
11/174
Kuphelileview
sl_status_t isimo; uint8_t config_nbr_fs;
/* Ingeza ukucushwa kwesivinini esigcwele kudivayisi. */
isimo = sl_usbd_core_add_configuration(0,
/* Azikho izibaluli ezikhethekile ekucushweni. */
100u,
/* Ukusetshenziswa kwamandla okuphezulu: 100mA.
*/
SL_USBD_DEVICE_SPEED_FULL,
/* Ukucushwa kwe-Full-Speed.
*/
“Lungisa Engeza Example-Full-Speed config”,
&config_nbr_fs);
uma (isimo ! SL_STATUS_OK) {
/* Kwenzeke iphutha. Ukuphatha iphutha kufanele kwengezwe lapha. */
}
Ingeza Imisebenzi ye-USB
Ngemva kokwengeza ngempumelelo okungenani ukulungiselelwa okukodwa kudivayisi yakho, ungakwazi ukwengeza izixhumanisi zokuxhuma namaphoyinti wokugcina kudivayisi yakho. Ikilasi le-USB ngalinye linezidingo zalo ngokuya ngesixhumi esibonakalayo kanye nohlobo lwamaphoyinti okugcina, inani, namanye amapharamitha. Idivayisi ye-USB Yamalebhu e-Silicon ingeza izindawo kanye namaphoyinti okugcina emakilasini ewanikezayo.
Kusukela kuhlelo lwakho lokusebenza, ungakwazi ukufaka ikilasi le-USB futhi ulingeze ekucushweni. Ukuze uthole ulwazi olwengeziwe ngomqondo wezimo zekilasi ledivayisi ye-USB, bona Amakilasi Wedivayisi ye-USB. Qaphela ukuthi ungakwazi ukufakazela futhi wengeze izimo eziningi zekilasi ezahlukene ekucushweni ukuze udale idivayisi enemisebenzi eminingi (ehlanganisiwe).
I-exampI-le engezansi ibonisa ukuthi ungasidala kanjani isibonelo sekilasi futhi usengeze ekucushweni.
Example - Ukwengeza Isimo Sekilasi Kudivayisi Yakho
sl_status_t isimo; uint8_t class_nbr;
/* Dala isibonelo sekilasi ofuna ukulisebenzisa.*/ /* Qaphela ukuthi kuye ngesigaba lo msebenzi ungaba nezimpikiswano ezengeziwe. */ isimo = sl_usbd_ _dala_isibonelo(&class_nbr); uma (isimo ! SL_STATUS_OK) {/* Kwenzeke iphutha. Ukuphatha iphutha kufanele kwengezwe lapha. */}
/* Engeza isibonelo sekilasi ekucushweni kwe-Full-Speed. */ isimo = sl_usbd_ _add_to_configuration(class_nbr, /* Inombolo yekilasi ibuyiselwe ngu-sl_usbd_ _dala_isibonelo. */
config_nbr_fs); /* Inombolo yokumisa ibuyiswe ngu-sl_usbd_core_add_configuration(). */ uma (isimo ! SL_STATUS_OK) {/* Kwenzeke iphutha. Ukuphatha iphutha kufanele kwengezwe lapha. */}
Iqalisa idivayisi yakho ye-USB
Ngokuzenzakalela, idivayisi izoqalwa ngokuzenzakalelayo umsebenzi oyinhloko wedivayisi ye-USB ngemva kokuqedwa kokuqaliswa kwedivayisi nokuqalwa kwekernel. Ukuze ulawule ukuthi idivayisi iqaliswa nini futhi ibonakale kumsingathi we-USB, sebenzisa i-define yokumisa i-SL_USBD_AUTO_START_USB_DEVICE ukuze ukhubaze isici sokuqalisa ngokuzenzakalela. Uma ivaliwe, ngemva kokwakha/ukulungisa idivayisi yakho, ungayiqala futhi uyenze ibonakale kumsingathi we-USB ngokushayela umsebenzi sl_usbd_core_start_device() .
I-example ngezansi ikhombisa ukuthi ungayiqala kanjani idivayisi yakho usebenzisa umsebenzi we-sl_usbd_core_start_device().
Example - Ukuqala Idivayisi Yakho
Copyright © 2025 Silicon Laboratories. Wonke Amalungelo Agodliwe.
12/174
Kuphelileview
sl_status_t isimo;
isimo = sl_usbd_core_start_device(); uma (isimo ! SL_STATUS_OK) {/* Kwenzeke iphutha. Ukuphatha iphutha kufanele kwengezwe lapha. */}
Imisebenzi Hook Yomcimbi
Imojuli yedivayisi ye-USB inikezela ngemisebenzi emibili ebuthakathaka ongayichaza kabusha kuhlelo lwakho lokusebenza. Inhloso yabo ukwazisa uma ibhasi nemicimbi yokumisa kwenzeka.
Ithebula - Imisebenzi yeHook Yomcimbi we-USB
Umcimbi
Incazelo
Ibhasi
Ibizwa uma umcimbi Webhasi le-USB wenzeka
Ukucushwa Kubizwa uma umcimbi wokucushwa kwe-USB kwenzeka
Isiginesha Yomsebenzi
i-void sl_usbd_on_bus_event(sl_usbd_bus_event_t umcimbi); i-void sl_usbd_on_config_event(sl_usbd_config_event_t umcimbi, uint8_t config_nbr);
Example - Imisebenzi Hook Yomcimbi
i-void sl_usbd_on_bus_event(sl_usbd_bus_event_t umcimbi) {shintsha (umcimbi) { case SL_USBD_EVENT_BUS_CONNECT:
// ebizwa lapho ikhebula le-USB lifakwe kukhefu lesilawuli somsingathi;
icala SL_USBD_EVENT_BUS_DISCONNECT: // elibizwa lapho ikhebula le-USB likhishwa ekuqhekezeni kwesilawuli somsingathi;
icala SL_USBD_EVENT_BUS_RESET: // ebizwa lapho umsingathi ethumela ikhefu lomyalo wokusetha kabusha;
icala SL_USBD_EVENT_BUS_SUSPEND: // kubizwa lapho umsingathi ethumela ikhefu lomyalo wokumisa;
icala SL_USBD_EVENT_BUS_RESUME: // kubizwa lapho umsingathi ethumela ikhefu lomyalo wokuvuka;
okuzenzakalelayo: ikhefu; }}
i-void sl_usbd_on_config_event(sl_usbd_config_event_t umcimbi, uint8_t config_nbr) {shintsha (umcimbi) { case SL_USBD_EVENT_CONFIG_SET:
// ebizwa lapho umsingathi esetha ikhefu lokucushwa;
icala SL_USBD_EVENT_CONFIG_UNSET: // ebizwa lapho ukucushwa kungasethiwe ngekhefu;
okuzenzakalelayo: ikhefu; }}
Copyright © 2025 Silicon Laboratories. Wonke Amalungelo Agodliwe.
13/174
Kuphelileview
Copyright © 2025 Silicon Laboratories. Wonke Amalungelo Agodliwe.
14/174
Kuphelileview
Kuphelileview
Amakilasi edivayisi ye-USB
Amakilasi e-USB atholakala ku-Silicon Labs USB Device abelana ngezici ezithile ezijwayelekile. Lesi sigaba sichaza lezi zici nokusebenzisana kwazo nesendlalelo esiwumgogodla.
Ukuze uthole ulwazi olwengeziwe ngekilasi elithile, bheka okulandelayo:
I-CDC ACM Class HID Class Ikilasi le-MSC SCSI Ikilasi Lomthengisi
Mayelana Nezimo Zekilasi
Izigaba ze-USB ezitholakala Kudivayisi ye-USB zisebenzisa umqondo wezimo zekilasi. Isibonelo sekilasi simele umsebenzi owodwa ngaphakathi kwedivayisi. Umsebenzi ungachazwa ngesixhumi esibonakalayo esisodwa noma iqembu lezixhumi ezibonakalayo futhi ungokwesigaba esithile.
Ukuqaliswa ngakunye kwekilasi le-USB kunokucushwa okuthile nemisebenzi efanayo, ngokusekelwe kumqondo wesibonelo sekilasi. Ukucushwa okujwayelekile kanye nemisebenzi kuvezwe kuthebula elingezansi. Esihlokweni sekholomu 'Constants or Function', isimeli XXXX singathathelwa indawo igama lesigaba: CDC, HID, MSC, CDC_ACM noma VENDOR (Umthengisi wamagama emisebenzi).
Ithebula - Izikhathi Nemisebenzi Ehlobene Nomqondo Wezimo Zezigaba Eziningi
Okuqhubekayo noma Umsebenzi
SL_USBD_XXX_CL ASS_INS TANCE_QUANTITY
SL_USBD_XXX_CONFIGUR ATION_QUANTITY
I-sl_usb d _XXXX_cre idle _insta nce ()
sl_usbd_XXXX_add_to_conf iguration()
Incazelo
Ilungiselela inombolo enkulu yezigameko zekilasi.
Ilungiselela inombolo enkulu yokucushwa. Phakathi nokuqaliswa kwekilasi, isibonelo sekilasi esidaliwe sizongezwa ekucushweni okukodwa noma ngaphezulu. Idala isenzakalo sekilasi elisha.
Ingeza isenzakalo sekilasi esikhona ekucushweni kwedivayisi okucacisiwe.
Mayelana nokusetshenziswa kwekhodi, ikilasi lizomemezela okuguquguqukayo kwasendaweni okuqukethe isakhiwo sokulawula isigaba. Lesi sakhiwo sokulawula isigaba sihlotshaniswa nesenzakalo sekilasi elilodwa futhi sizoqukatha ulwazi oluthile lokuphatha isenzakalo sekilasi.
Izibalo ezilandelayo zibonisa izimo ezimbalwa. Isibalo ngasinye sihlanganisa ikhodi example okuhambisana nesimo secala.
Umfanekiso - Izimo Zezigaba Eziningi - Idivayisi ye-FS (Ukucushwa oku-1 okunesixhumi esibonakalayo esi-1) simele idivayisi ye-USB evamile. Idivayisi ine-Full-Speed (FS) futhi iqukethe ukucushwa okukodwa. Umsebenzi wedivayisi uchazwa isixhumi esibonakalayo esisodwa esakhiwe ngamaphoyinti amabili wokugcina wokuxhumana kwedatha. Isenzakalo sekilasi esisodwa siyadalwa futhi sizokuvumela ukuthi uphathe sonke isixhumi esibonakalayo nesiphetho saso esihlobene.
Umfanekiso - Izimo zamakilasi amaningi - Ukucushwa kwedivayisi ye-FS 1 nge-Interface engu-1)
Copyright © 2025 Silicon Laboratories. Wonke Amalungelo Agodliwe.
15/174
Kuphelileview
Ikhodi ehambisana neFigure - Multiple Class Instances - FS Device (1 Ukucushwa ngesixhumi esibonakalayo esi-1) kukhonjisiwe ku-ex.ample ngezansi.
Example – Multiple Class Instances – FS Device 1 Configuration with 1 Interface)
sl_status_t isimo; uint8_t class_0;
i-void app_usbd_XXX_enable(uint8_t class_nbr) {/* Phatha umcimbi wekilasi. */}
i-void app_usbd_XXX_disable(uint8_t class_nbr) {/* Phatha umcimbi wokukhubaza Ikilasi. */}
sl_usbd_XXX_callbacks_t class_callbacks = {
(1)
.vula = app_usbd_XXX_vula,
.khubaza = app_usbd_XXX_disable
};
isimo = sl_usbd_XXX_init();
(2)
uma (isimo ! SL_STATUS_OK) {
/* $$$$ Phatha iphutha. */
}
isimo = sl_usbd_XXX_create_instance(&class_callbacks,
(3)
&class_0);
uma (isimo ! SL_STATUS_OK) {
/* $$$$ Phatha iphutha. */
}
isimo = sl_usbd_XXX_add_to_configuration(class_0, config_0);
(4)
uma (isimo ! SL_STATUS_OK) {
/* $$$$ Phatha iphutha. */
}
(1) Ikilasi ngalinye linikeza isethi yemisebenzi yokushayela emuva yokuxhuma/ukunqamula imicimbi kanye nezehlakalo ezithile zekilasi. Into yesakhiwo se-callback idluliswa njengengxabano lapho kwakhiwa isibonelo sekilasi ngokuthi sl_usbd_XXX_create_instance()
umsebenzi.
(1) Qalisa ikilasi. Zonke izinto eziguquguqukayo zangaphakathi, izakhiwo, nezimbobo zekilasi zizoqalwa. Qaphela ukuthi umsebenzi we-Init() kwamanye amakilasi ungathatha ezinye izimpikiswano.
Copyright © 2025 Silicon Laboratories. Wonke Amalungelo Agodliwe.
16/174
Kuphelileview
(2) Dala isibonelo sekilasi, okuyi-class_0 . Umsebenzi sl_usbd_XXXX_create_instance() unikeza isakhiwo sokulawula isigaba esihlotshaniswa ne-class_0 . Kuye ngekilasi, i-sl_usbd_XXX_create_instance() ingase ibe nemingcele eyengeziwe eceleni kwenombolo yekilasi emele ulwazi oluthize lwekilasi olugcinwe esakhiweni sokulawula sekilasi. aaa (3) Engeza i-cl ss inst nce, class_0 , enombolweni yokumisa eshiwo, config_0 . I-sl_usbd_XXXX_add_to_configuration() izodala isixhumi esibonakalayo 0 kanye namaphoyinti aso okugcina e-IN kanye ne-OUT. Njengomphumela, isibonelo sekilasi sihlanganisa isikhombimsebenzisi esingu-0 namaphoyinti aso wokuphela. Noma yikuphi ukuxhumana okwenziwa kusixhumi esibonakalayo 0 kuzosebenzisa inombolo yesibonelo yekilasi, class_0 . Umfanekiso - Izimo zamakilasi amaningi - Idivayisi ye-FS (Ukucushwa okungu-2 kanye Nokusebenzelana Okuningi) imele i-ex eyinkimbinkimbi kakhuluample. Idivayisi enesivinini esigcwele yakhiwe ukucushwa okubili. Idivayisi inemisebenzi emibili eyesigaba esifanayo, kodwa umsebenzi ngamunye uchazwa yizindawo ezimbili zokusebenzelana futhi unepheya yamaphoyinti okugcina aqondiswa kabili. Kulesi example, izimo zekilasi ezimbili ziyadalwa. Isenzakalo sekilasi ngalinye sihlotshaniswa neqembu lezokuxhumana ngokuphambene ne-Figure - Multiple Class Instances - FS Device (1 Ukucushwa ngesixhumi esibonakalayo esi-1) kanye nomfanekiso - Izimo zamakilasi amaningi - Idivayisi ye-FS (Ukucushwa okungu-2 Nokusebenzelana Okuningi) lapho isibonelo sekilasi sasihlotshaniswa nesixhumi esibonakalayo esisodwa.
Umfanekiso - Izimo zamakilasi amaningi - Ukucushwa kwedivayisi ye-FS 2 kanye Nokusebenzelana Okuningi)
Ikhodi ehambisana neFigure - Multiple Class Instances - FS Device (2 Configurations and Multiple Interfaces) iboniswa ku-ex.ample ngezansi. Ukuphathwa kwephutha kukhishiwe ukuze kucace.
Example - Izimo zamakilasi amaningi - Ukucushwa kwedivayisi ye-FS 2 kanye Nokusebenzelana Okuningi)
Copyright © 2025 Silicon Laboratories. Wonke Amalungelo Agodliwe.
17/174
Kuphelileview
sl_status_t isimo; uint8_t class_0; uint8_t class_1;
isimo = sl_usbd_XXX_init();
isimo = sl_usbd_XXX_create_instance(&class_0); isimo = sl_usbd_XXX_create_instance(&class_1);
isimo = sl_usbd_XXX_add_to_configuration(class_0, cfg_0); isimo = sl_usbd_XXX_add_to_configuration(class_1, cfg_0);
isimo = sl_usbd_XXX_add_to_configuration(class_0, cfg_1); isimo = sl_usbd_XXX_add_to_configuration(class_1, cfg_1);
(1)
(2) (3)
(4) (5)
(6) (6)
(1) Qalisa ikilasi. Noma yikuphi okuhlukile kwangaphakathi, izakhiwo, nezimbobo zekilasi kuzoqalwa.
(2) Dala isibonelo sekilasi, class_0 . Umsebenzi sl_usbd_XXXX_create_instance() unikeza isakhiwo sokulawula isigaba esihlotshaniswa ne-class_0 .
(3) Dala isibonelo sekilasi, class_1 . Umsebenzi sl_usbd_XXXX_create_instance() unikeza esinye isakhiwo sokulawula isigaba esihlotshaniswa nesigaba_1 .
(4) Engeza isibonelo sekilasi, class_0 , ekucushweni, cfg_0 . sl_usbd_XXXX_add_to_configuration() izodala isixhumi esibonakalayo 0, isixhumi esibonakalayo 1, ezinye izindawo zokusebenzelana, kanye namaphoyinti okugcina e-IN kanye ne-OUT. Inombolo yesibonelo yekilasi, class_0 , izosetshenziselwa noma yikuphi ukuxhumana kwedatha kusixhumi esibonakalayo 0 noma isixhumi esibonakalayo 1.
(5) Engeza isibonelo sekilasi, class_1 , ekucushweni, cfg_0 . I-sl_usbd_XXXX_add_to_configuration() izodala isixhumi esibonakalayo 2, isixhumi esibonakalayo 3 kanye namaphoyinti okugcina ahlobene angu-IN kanye ne-OUT. Inombolo yesibonelo yekilasi, class_1 , izosetshenziselwa noma yikuphi ukuxhumana kwedatha kusixhumi esibonakalayo 2 noma esibonakalayo 3.
(6) Engeza izimo zekilasi ezifanayo, class_0 kanye ne-class_1 , kokunye ukumisa, cfg_1 .
Isigaba ngasinye sichaza isakhiwo sohlobo sl_usbd_XXX_callbacks_t . Inhloso yawo ukunikeza ikilasi ngalinye isethi yemisebenzi yokuphinda ushayele emuva ezobizwa uma umcimbi wenzeka. Imisebenzi yokushayela emuva emibili ikhona ekilasini ngalinye. Zethulwa kuleli tafula elingezansi.
Ithebula – Imisebenzi Ye-Callback Yekilasi Elivamile
Incazelo Yezindawana .vumela ukuthi Kushayelwe lapho isenzakalo sekilasi le-USB sinikwe amandla ngempumelelo. .khubaza Ishayelwe uma isenzakalo sekilasi le-USB sikhutshaziwe.
I-app yeSiginesha engasebenzi_usbd_XXX_enable(uint8_t class_nbr); uhlelo lokusebenza olungenalutho_usbd_XXX_disable(uint8_t class_nbr);
Copyright © 2025 Silicon Laboratories. Wonke Amalungelo Agodliwe.
18/174
Kuphelileview
Kuphelileview
Idivayisi ye-USB CDC ACM Class
Idivayisi ye-USB CDC Base Class Overview Idivayisi ye-USB ye-CDC ACM Class Insiza Idinga kusuka ku-Core USB Kudivayisi CDC ACM Subclass Overview Idivayisi ye-USB Ukucushwa Kwekilasi le-CDC ye-ACM Idivayisi ye-USB ye-CDC I-ACM Class Programming Guide
Lesi sigaba sichaza Ikilasi Ledivayisi Yezokuxhumana (CDC) kanye nesigaba esingaphansi se-CDC esihambisanayo esisekelwa isitaki Sedivayisi ye-USB ye-Silicon Labs. I-Silicon Labs USB-Device okwamanje isekela i-Abstract Control Model (ACM) subclass, evame ukusetshenziselwa ukulingisa uchungechunge.
I-CDC ihlanganisa izinsiza ezihlukahlukene zokuxhumana ngocingo nezokuxhumana. Imishini yokuxhumana ngocingo ihlanganisa amamodemu e-analog, izingcingo ze-analog nedijithali, ama-adaptha etheminali e-ISDN, njll.ample, amadivayisi enethiwekhi aqukethe i-ADSL namamodemu ekhebula, ama-adaptha e-Ethernet, namahabhu. I-CDC ichaza uhlaka lokuhlanganisa amazinga ezinsiza zokuxhumana akhona, njenge-V.250 (kumamodemu ngenethiwekhi yocingo) kanye ne-Ethernet (yamadivayisi enethiwekhi yendawo), kusetshenziswa isixhumanisi se-USB. Idivayisi yokuxhumana iphethe ukuphathwa kwedivayisi, ukuphathwa kwekholi lapho kudingeka, kanye nokudluliswa kwedatha.
I-CDC ichaza amaqembu amakhulu ayisikhombisa wamadivayisi. Iqembu ngalinye liyingxenye yemodeli yokuxhumana, engafaka ama-subclass ambalwa. Iqembu ngalinye lamadivayisi linombhalo walo wokucaciswa ngaphandle kwesigaba sesisekelo se-CDC. Amaqembu ayisikhombisa yilawa:
Inethiwekhi Yocingo Eshintshiwe Yomphakathi (i-PSTN), amadivayisi afaka amamodemu ebhendi yezwi, amafoni, namadivayisi okulingisa ama-serial. Amadivayisi e-Integrated Services Digital Network (ISDN), afaka ama-adaptha esitheminali namafoni. Amadivayisi e-Ethernet Control Model (ECM), okuhlanganisa amadivayisi asekela umndeni we-IEEE 802 (isb.: ikhebula namamodemu e-ADSL, ama-adaptha e-WiFi). Amadivayisi e-Asynchronous Transfer Mode (ATM), okuhlanganisa amamodemu e-ADSL namanye amadivaysi axhunywe kumanethiwekhi e-ATM (iziteshi zokusebenzela, amarutha, amaswishi e-LAN). Amadivayisi e-Wireless Mobile Communications (WMC), okuhlanganisa amadivaysi ehendisethi emisebenzi eminingi asetshenziselwa ukuphatha izwi nedatha yokuxhumana. Amadivayisi e-Ethernet Emulation Model (EEM) ashintshanisa idatha enozimele we-Ethernet. Amadivayisi emodeli yokulawula inethiwekhi (NCM), afaka amadivayisi enethiwekhi enesivinini esikhulu (amamodemu okufinyelela ephaketheni lesivinini esikhulu, Izisetshenziswa zetheminali yomugqa)
I-CDC kanye nokuqaliswa kwe-subclass ehambisanayo kuthobela le mibandela elandelayo:
I-Universal Serial Bus, Izincazelo Zekilasi Zamadivayisi Okuxhumana, Isibuyekezo 1.2, Novemba 3 2010. I-Universal Serial Bus, Ukuxhumana, I-Subclass yamadivayisi e-PSTN, Ukubuyekeza 1.2, February 9 2007.
Idivayisi ye-USB CDC Base Class Overview
Idivayisi ye-CDC yakhiwe yizixhumi ezibonakalayo ezilandelayo ukuze kusetshenziswe amandla okuxhumana:
I-Communication Class Interface (CCI) inesibopho sokuphatha idivayisi futhi ngokuzikhethela ukuphatha ikholi. I
ukuphathwa kwedivayisi kunika amandla ukucushwa okuvamile nokulawula idivayisi kanye nesaziso semicimbi kumsingathi. Ukuphathwa kwezingcingo kuvumela ukusungulwa nokunqanyulwa kwezingcingo. Ukuphathwa kwekholi kungase kuphindwe nge-DCI. I-CCI iyadingeka kuwo wonke amadivayisi e-CDC. Ihlonza umsebenzi we-CDC ngokucacisa imodeli yokuxhumana esekelwa idivayisi ye-CDC. Isixhumi esibonakalayo esilandela i-CCI singaba noma isiphi isixhumi esibonakalayo sekilasi le-USB, njengomsindo noma isixhumi esibonakalayo esiqondene nomthengisi. Isixhumi esibonakalayo esiqondene nomthengisi simelelwa ngokukhethekile i-DCI.
I-Data Class Interface (DCI) inesibopho sokudluliswa kwedatha. Idatha edlulisiwe kanye/noma eyamukelwe ayilandeli okuthile
ifomethi. Idatha ingaba idatha eluhlaza evela kulayini wokuxhumana, idatha elandela ifomethi yobunikazi, njll. Wonke ama-DCI alandela i-CCI angabonakala njengezindawo zokusebenzelana ezingaphansi.
Idivayisi ye-CDC kufanele okungenani ibe ne-CCI eyodwa noziro noma ama-DCI amaningi. I-CCI eyodwa kanye nanoma iyiphi i-DCI engaphansi ndawonye inikeza isici kumsingathi. Leli khono libuye libizwe ngokuthi umsebenzi. Edivayisini eyinhlanganisela ye-CDC, ungaba nokumbalwa
Copyright © 2025 Silicon Laboratories. Wonke Amalungelo Agodliwe.
19/174
Kuphelileview
imisebenzi. Ngakho-ke, idivayisi izokwakhiwa amasethi amaningana e-CCI kanye ne-DCI (ama) njengoba kukhonjisiwe Emdwebeni - I-CDC Composite Device.
Umfanekiso - I-CDC Composite Device
Idivayisi ye-CDC kungenzeka isebenzise inhlanganisela elandelayo yamaphoyinti okugcina:
Ipheya yokulawula IN kanye ne-OUT endpoints ebizwa ngokuthi i-endpoint ezenzakalelayo. Inqwaba yokuzikhethela noma ukuphazamisa IN endpoint. Ipheya yenqwaba noma i-isochronous IN kanye ne-OUT endpoints. Qaphela ukuthi isitaki sedivayisi ye-USB yama-Silicon Labs asiwasekeli amaphoyinti wokuphela we-isochronous.
Ithebula elingezansi libonisa ukusetshenziswa kwamaphoyinti ahlukene nokuthi asetshenziswa ngasiphi isixhumi esibonakalayo se-CDC.
Ithebula – CDC Endpoint Ukusetshenziswa
Iphoyinti lokugcina
Lawula IN
Lawula OUT
Phakamisa noma inqwaba IN Ubuningi noma i-isochronous IN Ubuningi noma i-isochronous
PHUMA
Isiqondiso
I-Deviceto-host
I-Host-todevice
I-Deviceto-host
I-Deviceto-host
I-Host-todevice
Ukusetshenziswa kwesixhumi esibonakalayo
I-CCI
Izicelo ezijwayelekile zokubala, izicelo eziqondene nekilasi, idivayisi
ukuphathwa, kanye nokuphathwa kwekholi ngokuzikhethela.
I-CCI
Izicelo ezijwayelekile zokubala, izicelo eziqondene nekilasi, idivayisi
ukuphathwa, kanye nokuphathwa kwekholi ngokuzikhethela.
I-CCI
Isaziso semicimbi, njengokutholwa kwendandatho, isimo somugqa we-serial, isimo senethiwekhi.
I-DCI
Ukuxhumana kwedatha okungahluziwe noma okufomethiwe.
I-DCI
Ukuxhumana kwedatha okungahluziwe noma okufomethiwe.
Amadivayisi amaningi okuxhumana asebenzisa indawo yokugcina ephazamisayo ukuze azise umsingathi wemicimbi. Amaphoyinti okugcina e-Isochronous akufanele asetshenziselwe ukudluliswa kwedatha uma umthetho olandelwayo wobunikazi uncike ekudluliseleni kabusha idatha uma kwenzeka kuba namaphutha ephrothokholi ye-USB. Ukuxhumana kwe-Isochronous kungalahlekelwa idatha ngokwemvelo njengoba ingenazo izindlela zokuphinda uzame.
Izinhlobo eziyisikhombisa ezinkulu zokuxhumana zihlanganisa izigaba eziningana. I-subclass ichaza indlela idivayisi okufanele isebenzise ngayo i-CCI ukuze iphathe ukuphathwa kwedivayisi nokuphathwa kwekholi. Ithebula elingezansi libonisa zonke izigaba ezingaphansi okungenzeka kanye nemodeli yokuxhumana ezikuzo.
Ithebula – CDC Subclasses
Isigaba esingaphansi
Imodeli Yokulawula Umugqa Oqondile Imodeli Ye-Abstract
Imodeli Yokuxhumana
I-PSTN
I-PSTN
Example Yamadivayisi Asebenzisa Lesi sigaba Esingaphansi
Amadivayisi emodemu alawulwa ngokuqondile umsingathi we-USB
Amadivayisi okulingisa ama-serial, amadivayisi emodemu alawulwa ngesethi yomyalo we-serial
Copyright © 2025 Silicon Laboratories. Wonke Amalungelo Agodliwe.
20/174
Kuphelileview
Isigaba esingaphansi
Imodeli Yokuxhumana
Example Yamadivayisi Asebenzisa Lesi sigaba Esingaphansi
Imodeli Yokulawula Ifoni
I-PSTN
Imodeli Ye-ISDN Yokulawula Iziteshi Eziningi
Imodeli Yokulawula I-CAPI ISDN
Imodeli Yokulawula ye-Ethernet Networking ECM
I-ATM Networking
I-ATM
Imodeli Yokulawula
Imodeli Yokulawula Ihendisethi Engenantambo
WMC
Ukuphathwa Kwedivayisi WMC
Imodeli Yomugqa Oqondile Yeselula
WMC
OBEX
WMC
I-Ethernet Emulation EEM Model
Imodeli Yokulawula Inethiwekhi
NCM
Imishini yocingo lwezwi
Ama-adaptha amatheminali esilinganiso esiyisisekelo, ama-adaptha amatheminali ayisisekelo, izingcingo
Ama-adaptha amatheminali esilinganiso esiyisisekelo, ama-adaptha amatheminali ayisisekelo, amamodemu ekhebula e-DOC-SIS amafoni, amamodemu e-ADSL asekela ukulingiswa kwe-PPPoE, ama-adaptha e-Wi-Fi (IEEE 802.11-umndeni), i-IEEE 802.3 ama-adaptha amamodemu e-ADSL
Itheminali yeselula exhunywa kumadivayisi angenawaya
Itheminali ephathwayo exhuma kumadivayisi angenazintambo Imishini yetheminali engumakhalekhukhwini exhuma kumadivayisi angenawaya
Itheminali yeselula exhuma kumadivayisi angenantambo Amadivayisi asebenzisa amafreyimu e-Ethernet njengesendlalelo esilandelayo sezokuthutha. Ayihloselwe umzila kanye nama-adaptha okuxhumana kwe-inthanethi e-IEEE 802.3 aphethe umkhawulokudonsa wedatha wesivinini esikhulu kunethiwekhi
Izidingo Zensiza Yekilasi ye-CDC ye-CDC ye-ACM evela ku-Core
Ngaso sonke isikhathi uma ungeza isenzakalo sekilasi le-CDC ACM ekucushweni kwe-USB ngocingo kumsebenzi sl_usbd_cdc_acm_add_to_configuration() , izinsiza ezilandelayo zizokwabiwa kusukela kungqikithi.
Insiza
I-interfaces Enye indawo yokusebenzelana Amaqembu e-Endpoints Interface
Ubuningi
2 2 3 1
Qaphela ukuthi lezo zinombolo zingokucushwa ngakunye. Uma usetha amanani akho okumisa i-SL_USBD_INTERFACE_QUANTITY , SL_USBD_ALT_INTERFACE_QUANTITY , SL_USBD_INTERFACE_GROUP_QUANTITY kanye ne-SL_USBD_DESCRIPTOR_QUANTITY amanani okucushwa, ungakhohlwa ukucabangela ukuthi zingaki izilungiselelo ezizongezwa ikilasi. Ngokwevelu yokucushwa kwe-SL_USBD_OPEN_ENDPOINTS_QUANTITY, njengoba izindawo zokugcina zivulwa kuphela uma ukulungiselelwa kusethwa umsingathi, udinga nje ukucabangela inani lamaphoyinti okugcina adingekayo kusenzakalo sekilasi.
Idivayisi ye-USB CDC ACM Subclass Overview
Ikilasi eliyisisekelo le-CDC lakhiwe i-Communication Class Interface (CCI) kanye ne-Data Class Interface (DCI), okuxoxwa ngayo ngokuningiliziwe Kudivayisi ye-USB CDC Base Class Over.view . Lesi sigaba sidingida i-CCI yohlobo lwe-ACM. Iqukethe isiphetho esizenzakalelayo sesici sokuphatha kanye nesiphetho esiphazamisayo sesici sesaziso. Ipheya yezindawo zokugcina eziningi zisetshenziselwa ukuthwala idatha engacacisiwe nge-DCI.
I-ACM subclass isetshenziswa izinhlobo ezimbili zamadivayisi okuxhumana:
Amadivayisi asekela imiyalo ye-AT (isibonelo, amamodemu e-voiceband). Amadivaysi okulingisa ama-serial abuye abizwe ngokuthi amadivaysi embobo ye-Virtual COM.
Kunezicelo ezimbalwa eziqondene ne-subclass ye-ACM subclass. Zikuvumela ukuthi ulawule futhi ulungiselele idivayisi. Uhlu oluphelele kanye nencazelo yazo zonke izicelo ze-ACM ingatholakala ekucacisweni
Copyright © 2025 Silicon Laboratories. Wonke Amalungelo Agodliwe.
21/174
Kuphelileview I-Subclass yamadivayisi e-PSTN, ukubuyekezwa 1.2, February 9, 2007=, isigaba 6.2.2.
Kulolu hlu, i-Silicon Labs9 ACM subclass isekela okulandelayo:
Ithebula - Izicelo ze-ACM Ezisekelwa I-Silicon Labs
Incazelo Yesicelo Sesigaba Esingaphansi
SetCommFeature GetCommFeature ClearCommFeature
Umsingathi uthumela lesi sicelo ukuze alawule izilungiselelo zesici esithile sokuxhumana. Ayisetshenziselwa ukulingiswa kwe-serial.
Umsingathi uthumela lesi sicelo ukuze athole izilungiselelo zamanje zesici esithile sokuxhumana. Ayisetshenziselwa ukulingiswa kwe-serial.
Umsingathi uthumela lesi sicelo ukuze asule izilungiselelo zesici esithile sokuxhumana. Ayisetshenziselwa ukulingiswa kwe-serial.
Setha i-LineCoding
Umsingathi uthumela lesi sicelo ukuze alungiselele izilungiselelo zedivayisi ye-ACM: izinga le-baud, inani lamabhithi amisiwe, uhlobo lokulinganisa kanye nenani lamabhithi edatha. Ukuze uthole ukulingiswa kwe-serial, lesi sicelo sithunyelwa ngokuzenzakalelayo itheminali ye-serial isikhathi ngasinye lapho ulungisa izilungiselelo ze-serial port evulekile ye-COM.
I-GetLineCoding
Umsingathi uthumela lesi sicelo ukuze athole izilungiselelo zamanje ze-ACM (izinga le-baud, ama-stop bits, ukulingana, amabhithi edatha). Ukuze uthole ukulingiswa kwe-serial, amatheminali e-serial athumela lesi sicelo ngokuzenzakalelayo ngesikhathi sokuvulwa kwembobo ye-COM ebonakalayo.
I-SetControlLineState Umsingathi uthumela lesi sicelo ukuze alawule inkampani yenethiwekhi amamodemu ayi-duplex ewuhhafu futhi abonise ukuthi Izisetshenziswa Zesikhumulo Sedatha (i-DTE) sezilungile noma cha. Kucala lokulingisa le-serial, i-DTE iyitheminali ye-serial. Ukuze uthole ukulingiswa kwe-serial, amatheminali athile we-serial akuvumela ukuthi uthumele lesi sicelo ngesethi yokulawula.
SethaBreak
Umsingathi uthumela lesi sicelo ukuze enze ikhefu lesitayela se-RS-232. Ukuze uthole ukulingiswa kwe-serial, amatheminali athile we-serial akuvumela ukuthi uthumele lesi sicelo.
I-Silicon Labs9 ACM subclass isebenzisa isiphetho esithi IN ukuphazamisa ukwazisa umsingathi mayelana nesimo samanje somugqa we-serial. I-serial
line state yi-bitmap eyazisa umsingathi mayelana:
Idatha ilahliwe ngenxa yephutha le-Parity eyeqile Iphutha Lokuhlakala Isimo sokutholwa kwesiginali yendandatho Isimo sendlela yokuthola ikhefu
Ukuqaliswa kwe-subclass ye-Silicon Labs9 ACM kuhambisana nokucaciswa okulandelayo:
I-Universal Serial Bus, Ezokuxhumana, I-Subclass yamadivayisi e-PSTN, ukubuyekezwa 1.2, February 9, 2007.
Idivayisi ye-USB CDC ACM Class Ukucushwa
Lesi sigaba sidingida indlela yokulungiselela Ikilasi le-CDC ACM (Ikilasi Ledivayisi Yokuxhumana, Imodeli Yokulawula Okungaziwa). Kunamaqembu amabili amapharamitha wokumisa:
Idivayisi ye-USB CDC ACM Class Isicelo Ukucushwa okuqondile Idivayisi ye-USB CDC ACM Class Instance Configurations
Idivayisi ye-USB CDC ACM Class Isicelo Ukucushwa okuqondile
I-CDC Base Class ACM Subclass
I-CDC Base Class
Okokuqala, ukuze usebenzise imojuli yekilasi le-CDC yedivayisi ye-Silicon Labs ye-USB, uzodinga ukulungisa ukucushwa kwe-CDC compile-time #define-s ngokuya ngezidingo zakho zohlelo lokusebenza. Ahlanganiswe kabusha ngaphakathi kwesihloko esithi sl_usbd_core_config.h file ngaphansi kwesigaba se-CDC. Inhloso yabo ukwazisa imojuli yedivayisi ye-USB mayelana nokuthi zingaki izinto ze-USB CDC ezizonikezwa.
Copyright © 2025 Silicon Laboratories. Wonke Amalungelo Agodliwe.
22/174
Kuphelileview
Ithebula elingezansi lichaza inkambu yokumisa ngayinye etholakalayo kulesi sakhiwo sokumisa.
Ithebula - Ukucushwa Kwedivayisi ye-USB ye-CDC Kuyachaza
Igama lokucushwa
SL_USBD_CDC_CL AS S_INSTANCE_QUANT ITY
SL_USBD_CDC_CONF IGURATION_QUANTI
TY
SL_USBD_CDC_DATA _INTERFACE_QUANTI
TY
Incazelo
Inombolo yezimo zekilasi ozozaba ngokushayela umsebenzi
sl_usbd_cdc_acm_create_instance() .
Inombolo yokucushwa. Izimo zekilasi le-ACM zingangezwa kokucushwa kwe-aaaa eyodwa noma ngaphezulu vi c ll ku-sl_usbd_cdc_acm_add_to_configuration() .
Isamba senani lezixhumi ezibonakalayo (DCI) zayo yonke imisebenzi ye-CDC. Umsebenzi ngamunye we-CDC ACM aaaaaaaaa wengeze i-vi c ll kumsebenzi othi sl_usbd_cdc_acm_create_instance() uzothi dd dt interf ce.
Inani elizenzakalelayo
2
1
2
I-ACM Subclass
Isigaba esingaphansi se-ACM sinokucushwa kwesikhathi esisodwa sokuhlanganisa okuboniswe kuthebula elingezansi.
Ithebula – Idivayisi ye-USB CDC ACM Configuration Define
Igama lokucushwa
SL_USBD_CDC_ACM_SUBCL ASS_I NSTANCE_QUANTITY
Incazelo
Ilungiselela inombolo yezigameko ze-subclass ozozaba ngekholi eya ku-
umsebenzi sl_usbd_cdc_acm_create_instance() .
Inani elizenzakalelayo
2
I-USB Device CDC ACM Class Instance Configurations
Lesi sigaba sichaza ukulungiselelwa okuhlobene nezimo ze-CDC ACM zesigaba somkhiqizo. I-Class Instance Creation yesimo somugqa wesikhathi socingo amakhono we-mgmt p_acm_callbacks
I-Class Instance Creation
Ukuze udale isibonelo se-serial class ye-CDC ACM, shayela umsebenzi T a sl_usbd_cdc_acm_create_instance() . umsebenzi wakhe t uhlanganisa izimpikiswano ezintathu zokumisa, njengoba kuchazwe lapha.
line_state_interval
Lesi isikhawu (ngama-millisecond) lapho isibonelo sakho se-CDC ACM sesigaba somkhiqizo sizobika izaziso zesimo somugqa kumsingathi we-T aa. amandla akhe kufanele kube amandla amabili (1, 2, 4, 8, 16, njll).
call_mgmt_capabilities
I-bitmap yamakhono okuphatha ikholi. Amanani angenzeka we-bitmap ami kanje:
Inani (kancane)
SL_USBD_ACM_SERIAL_CALL_MGMT_DEV
SL_USBD_ACM_SERIAL_CALL_MGMT_DATA_CCI _DCI
Incazelo
Idivayisi iphatha ukuphathwa kwekholi ngokwayo. Idivayisi ingathumela/yamukele ulwazi lokuphathwa kwekholi ngesixhumi esibonakalayo Sekilasi Ledatha.
p_acm_callbacks
Copyright © 2025 Silicon Laboratories. Wonke Amalungelo Agodliwe.
23/174
Kuphelileview
I-aa M aa p_acm_callbacks iyisikhombi esakhiweni sohlobo sl_usbd_cdc_acm_callbacks_t . Inhloso yayo ukunikeza i-CDC AC Cl ss isethi yemisebenzi yokuphinda kubizwe uma kwenzeka umcimbi we-CDC ACM. Akuwona wonke ama-callbacks ayimpoqo futhi i-null pointer ( NULL ) ingadluliswa ngokuguquguquka kwesakhiwo sokufona emuva lapho ukuphinda ukushaya kungadingeki. Ithebula elingezansi lichaza inkambu yokumisa ngayinye etholakalayo kulesi sakhiwo sokumisa.
Ithebula – sl_usbd_cdc_acm _callbacks_t Ukumisa Isakhiwo
Izinkambu
Incazelo
.vumela
Ibizwa uma isenzakalo sekilasi le-USB sinikwe amandla
ngempumelelo.
.khubaza
Ibizwa lapho isenzakalo sekilasi le-USB sikhutshaziwe.
.line_control_changed Ishayelwe uma ushintsho lokulawula ulayini lwamukelwe.
line_coding_changed Ibizwe uma ushintsho lwekhodi yolayini lwamukelwe.
Isiginesha Yomsebenzi
uhlelo lokusebenza olungenalutho_usbd_cdc_acm_enable(uint8_t subclass_nbr);
uhlelo lokusebenza olungenalutho_usbd_cdc_acm_disable(uint8_t subclass_nbr);
uhlelo lokusebenza olungenalutho_usbd_cdc_acm_line_control_changed(uint8_t subclass_nbr, uint8_t event, uint8_t event_chngd); i-bool app_usbd_cdc_acm_line_coding_changed(uint8_t subclass_nbr, subclass_nbr, sl_usbd_cdc_acm_line_coding_t
*p_line_coding
Bheka isigaba Sokubhalisa Isaziso Somcimbi Wokufona Ngemisebenzi yokuphinda ushayele isibample.
I-USB yedivayisi ye-CDC ACM Class Programming Guide
Lesi sigaba sichaza indlela yokusebenzisa iklasi le-CDC Abstract Control Model. Ukuqalisa Idivayisi ye-USB Ikilasi le-CDC le-ACM Yengeza Idivayisi Ye-USB I-CDC I-ACM Class Instance kudivayisi yakho Ixhumana kusetshenziswa i-CDC ACM Class
Iqalisa Ikilasi Ledivayisi ye-USB CDC ACM
Ukuze ungeze ukusebenza kwekilasi le-CDC ACM kudivayisi yakho, kuzomele uqale uqalise ikilasi lesisekelo se-CDC kanye nesigaba esingaphansi se-ACM ngokwenza i-aac lling imisebenzi sl_usbd_cdc_init() nd sl_usbd_cdc_acm_init() . T aaaaa yena sibonelo ngezansi ukhombisa ukuthi kubhalwe kanjani okuthi sl_usbd_cdc_init() nd sl_usbd_cdc_acm_init() kusetshenziswa izingxabano ezinde.
Example – Ukuqaliswa kwe-CDC ACM Class
sl_status_t isimo;
isimo = sl_usbd_cdc_init(); uma (isimo ! SL_STATUS_OK) {/* Kwenzeke iphutha. Ukuphatha iphutha kufanele kwengezwe lapha. */
}
isimo = sl_usbd_cdc_acm_init(); uma (isimo ! SL_STATUS_OK) {/* Kwenzeke iphutha. Ukuphatha iphutha kufanele kwengezwe lapha. */
}
Ingeza Idivayisi ye-USB I-CDC ACM Class Instance kudivayisi yakho
Ukuze ungeze ukusebenza kwekilasi le-CDC ACM kudivayisi yakho, kufanele udale isenzakalo, bese usingeza ekucushweni kwedivayisi yakho.
Ukudala i-CDC ACM Class Instance
Copyright © 2025 Silicon Laboratories. Wonke Amalungelo Agodliwe.
24/174
Kuphelileview
Ukwengeza I-CDC ACM Class Instance Ekucushweni Kwedivayisi Yakho Kokubhalisa Isaziso Somcimbi
Ukudala i-CDC ACM Class Instance
aa M aaa Yenza i-CDC AC cl ss inst nce ngokuhlanganisa umsebenzi sl_usbd_cdc_acm_create_instance() . T aaa M aaa isibonelo esingezansi sibonisa indlela yokwenza i-CDC AC cl ss inst nce vi sl_usbd_cdc_acm_create_instance() .
Example - Ukudala Umsebenzi we-CDC ACM nge-sl_usbd_cdc_acm_create_instance()
i-uint8_t subclass_nbr; sl_status_t isimo;
isimo = 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);
uma (isimo ! SL_STATUS_OK) {/* Kwenzeke iphutha. Ukuphatha iphutha kufanele kwengezwe lapha. */
}
Ukwengeza I-CDC ACM Class Instance Ekucushweni Kwedivayisi Yakho
Ngemuva kokuthi udale isibonelo sekilasi le-CDC ACM, ungayengeza ekucushweni ngokubiza umsebenzi
sl_usbd_cdc_acm_add_to_configuration() .
Isibonelo esingezansi sibonisa ukuthi ucll sl_usbd_cdc_acm_add_to_configuration() .
Example – Shayela ku-USBD ACM sl_usbd_cdc_acm_add_to_configuration()
sl_status_t isimo;
isimo = sl_usbd_cdc_acm_add_to_configuration(subclass_nbr,
(1)
config_nbr_fs);
(2)
uma (isimo ! SL_STATUS_OK) {
/* Kwenzeke iphutha. Ukuphatha iphutha kufanele kwengezwe lapha. */
}
aaa (1) Cl ss inombolo ukuze ungeze ekucushweni ibuyiselwe ngu-sl_usbd_cdc_acm_create_instance() . (2) Inombolo yokumisa (lapha ingeza ekucushweni kwe-Full-Speed).
Ukubhalisa Izaziso Zomcimbi
Ikilasi le-CDC ACM Serial lingazisa uhlelo lwakho lokusebenza nganoma yiziphi izinguquko ekulawuleni ulayini noma ekubhaleni ngekhodi ngemisebenzi yesaziso yokuphinda ushayele. Isakhiwo semisebenzi ye-callback singadluliswa njenge-agumenti ngesikhathi sokudalwa kwesenzakalo se-ACM. Qaphela ukuthi lawo ma-callback angokuzithandela. ExampI-CDC ACM Callbacks Registration ibonisa ukusetshenziswa kwemisebenzi yokubhalisa ukushaya ucingo. ExampI-CDC ACM Callbacks Implementation ibonisa i-exampukusetshenziswa kwemisebenzi yokuphinda ushayele.
Example – CDC ACM Callbacks Registration
Copyright © 2025 Silicon Laboratories. Wonke Amalungelo Agodliwe.
25/174
Kuphelileview
i-uint8_t subclass_nbr; sl_status_t isimo;
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, appcd_acm_usbd_
isimo = sl_usbd_cdc_acm_create_instance(64u, SL_USBD_ACM_SERIAL_CALL_MGMT_DATA_CCI_DCI | SL_USBD_ACM_SERIAL_CALL_MGMT_DEV, &sli_usbd_cdc_acm_callbacks);
uma (isimo ! SL_STATUS_OK) {/* Kwenzeke iphutha. Ukuphatha iphutha kufanele kwengezwe lapha. */}
Example – CDC ACM Callbacks Implementation
i-bool app_usbd_cdc_acm_line_coding_changed (uint8_t
subclass_nbr,
sl_usbd_cdc_acm_line_coding_t *p_line_coding)
{
uint32_t baudrate_new;
uint8_t ukulingana_okusha;
uint8_t stop_bits_new;
uint8_t idatha_bits_new;
/* OKUZOKWENZIWA Faka ikhodi yomugqa omusha.*/ baudrate_new = p_line_coding->BaudRate; ukulingana_okusha = p_line_coding->Ukulingana; stop_bits_new = p_line_coding->StopBits; idatha_bits_new = p_line_coding->DataBits;
buya (iqiniso);
(1)
}
uhlelo lokusebenza olungenalutho_usbd_cdc_acm_line_control_changed (uint8_t subclass_nbr, uint8_t event, uint8_t event_changed)
{bool rts_state; i-bool rts_state_changed; bool dtr_state; bool dtr_state_changed; bool brk_state; bool brk_state_changed;
/* TODO Faka isilawuli somugqa esisha. */rts_state = ((umcimbi & SL_USBD_CDC_ACM_CTRL_RTS) ! 0) ? iqiniso : amanga; rts_state_changed = ((event_changed & SL_USBD_CDC_ACM_CTRL_RTS) ! 0) ? iqiniso : amanga; dtr_state = ((umcimbi & SL_USBD_CDC_ACM_CTRL_DTR) ! 0) ? iqiniso : amanga; dtr_state_changed = ((event_changed & SL_USBD_CDC_ACM_CTRL_DTR) ! 0) ? iqiniso : amanga; brk_state = ((umcimbi & SL_USBD_CDC_ACM_CTRL_BREAK) ! 0) ? iqiniso : amanga; brk_state_changed = ((umcimbi_ushintshile & SL_USBD_CDC_ACM_CTRL_BREAK) ! 0) ? iqiniso : amanga;
}
(1) Kubalulekile ukubuyisela okungamanga kulo msebenzi uma ukusetshenziswa komugqa wekhodi kuhlulekile. Uma kungenjalo, buyisela iqiniso.
Ukuxhumana Ngokusebenzisa Ikilasi le-CDC ACM
Isimo se-Serial
Ukulawulwa Komugqa Wekhodi Yomugqa
Copyright © 2025 Silicon Laboratories. Wonke Amalungelo Agodliwe.
26/174
Kuphelileview
Line State Subclass Instance Communication
Isimo se-Serial
Ukufakwa Kwekhodi Komugqa
Umsingathi we-USB ulawula ukubhalwa kwekhodi komugqa (isilinganiso se-baud, ukulingana, njll) yedivayisi ye-CDC ACM. Uma kudingekile, uhlelo lokusebenza lunesibopho sokusetha ikhodi yomugqa. Kunemisebenzi emibili enikeziwe ukuze kubuyiswe futhi kusethwe umugqa wamakhodi wamanje, njengoba kuchazwe kuthebula elingezansi.
Ithebula – CDC ACM Line Coding Functions
Umsebenzi
sl_usbd_cdc_acm_g e t_line _co d ing ()
sl_usbd_cdc_acm_s e t_line _co d ing ()
Incazelo
Uhlelo lwakho lokusebenza lingathola izilungiselelo zamanje zokubhala ikhodi ezisethwe kumsingathi ngezicelo ze-SetLineCoding noma ngomsebenzi sl_usbd_cdc_acm_set_line_coding() .
Uhlelo lwakho lokusebenza lungasetha umugqa wekhodi. Umsingathi angakwazi ukubuyisa izilungiselelo ngesicelo se-GetLineCoding.
Ukulawula Ulayini
Umsingathi we-USB ulawula ulayini wokulawula (amaphinikhodi e-RTS kanye ne-DTR, isignali yekhefu, nokunye) kwedivayisi ye-CDC ACM. Uma kudingeka, isicelo sakho sinesibopho sokusebenzisa izilawuli zolayini. Umsebenzi unikeziwe ukuze kutholwe futhi kusethwe izilawuli zolayini zamanje, njengoba kuchazwe kuthebula elingezansi.
Ithebula – CDC ACM Line Control Functions
Umsebenzi
sl_usb d _cd c_acm_g e t_line _co ntr o l_state ()
Uhlelo lwakho lokusebenza lungathola isimo somugqa wokulawula samanje esisethwe umsingathi ngesicelo se-SetControlLineState.
Line State
Umsingathi we-USB ubuyisela isimo somugqa ngesikhathi esijwayelekile. Isicelo sakho kufanele sibuyekeze isimo somugqa njalo lapho sishintsha. Uma kudingeka, isicelo sakho sinesibopho sokusetha isimo somugqa. Imisebenzi emibili inikeziwe ukuze kutholwe futhi kusethwe izilawuli zolayini zamanje, njengoba kuchazwe kuthebula elingezansi.
Ithebula – CDC ACM Line S tate Imisebenzi
Umsebenzi
sl_usb d _cd c_acm_se t _line _state _e ve nt()
sl_usbd_cdc_acm_cle ar_line _state _e ve nt()
Uhlelo lwakho lokusebenza lungasetha noma yimuphi umcimbi wesimo somugqa. Ngenkathi isetha isimo somugqa, ukudlulisa okuphazamisile kuka-IN kuthunyelwa kumsingathi ukwazisa ngakho ngoshintsho esimweni somugqa we-serial.
Uhlelo lokusebenza lungasula izehlakalo ezimbili zesimo somugqa: isithwali sokudlulisela kanye nokutholwa kwenkampani yenethiwekhi. Yonke eminye imicimbi izisulwe ngokwazo yi-ACM serial emulation subclass.
I-Subclass Instance Communication
I-Silicon Labs' ACM subclass inikeza imisebenzi elandelayo ukuze uxhumane nomsingathi. Ukuze uthole imininingwane eyengeziwe mayelana namapharamitha we-funcns9, bheka ireferensi ye-CDC ACM Subclass Functions.
Igama lomsebenzi
sl_usb d _cd c_acm_ isikhangiso kabusha () sl_usb d _cd c_acm_write ()
Ukusebenza
Ithola idatha evela kumsingathi ngephoyinti lenqwaba le-OUT. Lo msebenzi uyavimba. Ithumela idatha ukusingatha ngenqwaba IN isiphetho. Lo msebenzi uyavimba.
Copyright © 2025 Silicon Laboratories. Wonke Amalungelo Agodliwe.
27/174
Kuphelileview
Ithebula – I-CDC ACM Communication API Isifinyezo aaaaa sl_usbd_cdc_acm_read() nd sl_usbd_cdc_acm_write() inikeza ukuxhumana okuvumelanayo, mina engithi inkambo ivinjwa. Ngamanye amazwi, lapho ubiza umsebenzi, uhlelo luvimba kuze kuqedwe ukudlulisa ngephutha noma ngaphandle kwephutha. Isikhathi sokuvala singacaciswa ukuze kugwenywe ukulinda unomphela. I-example ngezansi ikhombisa i-ex yokufunda nokubhalaampi-le ethola idatha kumsingathi isebenzisa iphoyinti lokugcina le-OUT ngobuningi futhi ithumela idatha kumsingathi isebenzisa iphoyinti lokugcina elithi IN.
Ukufakwa kuhlu - I-Serial Read and Write Example
__KULUNGILE(4) uint8_t rx_buf[2];
__KULUNGILE(4) uint8_t tx_buf[2];
uint32_t
xfer_len;
sl_isimo_t
isimo;
isimo = sl_usbd_cdc_acm_read(subclass_nbr,
(1)
rx_buf,
(2)
2u,
0u,
(3)
&xfer_len);
uma (isimo ! SL_STATUS_OK) {
/* Kwenzeke iphutha. Ukuphatha iphutha kufanele kwengezwe lapha. */
}
isimo = sl_usbd_cdc_acm_write(subclass_nbr,
(1)
tx_buf,
(4)
2u,
0u,
(3)
&xfer_len);
uma (isimo ! SL_STATUS_OK) {
/* Kwenzeke iphutha. Ukuphatha iphutha kufanele kwengezwe lapha. */
}
T aaaaa M (1) uzofaka inombolo ethi sl_usbd_cdc_acm_create_instance() inikeza ireferensi yomfundi kusigaba esingaphansi se-AC ukuhambisa ukudluliselwa kunqwaba efanele OUT noma IN endpoint. (2) Isicelo sakho kufanele siqinisekise ukuthi isigcinalwazi esinikezwe umsebenzi sikhulu ngokwanele ukuthwala yonke imininingwane. Uma kungenjalo, izinkinga zokuvumelanisa zingenzeka. (3) Ukuze ugweme isimo esingapheli sokuvimbela, cacisa isikhathi sokuvala esivezwe ngama-millisecond. Inani elingu-809 lenza umsebenzi wesicelo ulinde unomphela. (4) Uhlelo lokusebenza luhlinzeka ngebhafa yokudlulisa eqalisiwe.
Copyright © 2025 Silicon Laboratories. Wonke Amalungelo Agodliwe.
28/174
Kuphelileview
Kuphelileview
Ikilasi le-HID yedivayisi ye-USB
I-USB yedivayisi ye-HID Class Overview Isisetshenziswa Sekilasi Sedivayisi ye-USB Idinga Insiza Yekilasi Le-USB kusuka ku-Core Kudivayisi ye-USB Ukucushwa Kwekilasi le-USB Idivayisi ye-USB Umhlahlandlela Wokuhlela Wekilasi HID Umsebenzi Wemibiko Yokufaka Wesikhathi Esithile
Lesi sigaba sichaza ikilasi le-Human Interface Device (HID) elisekelwa idivayisi ye-USB yama-Silicon Labs.
Isigaba se-HID sihlanganisa amadivayisi asetshenziswa abantu ukulawula ukusebenza kwekhompyutha, njengamakhibhodi, amagundane, izisetshenziswa zokukhomba, namadivayisi egeyimu.
Isigaba se-HID singasetshenziswa futhi kudivayisi eyinhlanganisela equkethe izilawuli ezifana namafindo, amaswishi, izinkinobho, nezilayida. Okwesiboneloampi-le, izilawuli zokuthulisa kanye nevolumu kumahedsethi alalelwayo zilawulwa umsebenzi we-HID wamahedsethi. Ikilasi le-HID lingashintshanisa idatha nganoma iyiphi injongo lisebenzisa kuphela ukulawula nokuphazamisa ukudluliselwa.
Ikilasi le-HID lingelinye lamakilasi e-USB amadala kakhulu futhi asetshenziswa kakhulu. Onke amasistimu amakhulu wokusebenza komsingathi ahlinzeka ngomshayeli womdabu ukuthi aphathe amadivayisi e-HID, yingakho izinhlobonhlobo zamadivayisi aqondene nabathengisi zisebenza nekilasi le-HID. Leli klasi futhi lifaka izinhlobo ezahlukahlukene zezinto eziphumayo njengama-LED, umsindo, impendulo ethintekayo, njll.
Ukuqaliswa kwe-HID kuhambisana nemibandela elandelayo:
Incazelo Yekilasi Ledivayisi Yamadivayisi E-Human Interface (HID), 6/27/01, Inguqulo 1.11. Amathebula Okusetshenziswa Kwebhasi Eliyimfihlo Lomhlaba Wonke, 10/28/2004, Inguqulo 1.12.
I-USB yedivayisi ye-HID Class Overview
Kuphelileview
Idivayisi ye-HID yakhiwe ngamaphoyinti okugcina alandelayo:
Ipheya yokulawula IN kanye ne-OUT endpoint ebizwa ngokuthi i-endpoint ezenzakalelayo An interrupt IN endpoint An an optional interrupt OUT endpoint
Ithebula elingezansi lichaza ukusetshenziswa kweziphetho ezahlukene:
Ithebula - Ukusetshenziswa Kwamaphuzu Okuphela Kwekilasi le-HID
Ukusetshenziswa kwe-Endpoint Direction
Lawula IN
Lawula
PHUMA
Phakamisa IN
Phakamisa
PHUMA
I-Deviceto-host
I-Host-todevice
I-Deviceto-host
I-Host-todevice
Izicelo ezijwayelekile zokubala, izicelo eziqondene nekilasi, kanye nokuxhumana kwedatha (Okokufaka, Imibiko yesici ithunyelwe kumsingathi ngesicelo se-GET_REPORT). Izicelo ezijwayelekile zokubala, izicelo eziqondene nekilasi kanye nokuxhumana kwedatha (Okukhiphayo, Imibiko yesici etholwe kumsingathi ngesicelo se-SET_REPORT). Ukuxhumana kwedatha (Imibiko yokokufaka nesici).
Ukuxhumana kwedatha (Okuphumayo kanye nemibiko yesici).
Bika
Copyright © 2025 Silicon Laboratories. Wonke Amalungelo Agodliwe.
29/174
Kuphelileview
Umsingathi kanye nedatha yedivayisi ye-HID bashintshisana kusetshenziswa imibiko. Umbiko uqukethe idatha efomethiwe enikeza ulwazi mayelana nezilawuli nezinye izinto ezibonakalayo zedivayisi ye-HID. Isilawuli sishintshwa umsebenzisi futhi sisebenzisa isici sedivayisi. OkwesiboneloampLe, isilawuli singaba inkinobho yegundane noma ikhibhodi, iswishi, njll. Ezinye izinhlangano zazisa umsebenzisi mayelana nesimo sezici ezithile zedivayisi. Okwesiboneloample, ama-LED akukhibhodi azisa umsebenzisi mayelana nokukhiywa kofeleba, ikhiphedi yezinombolo iyasebenza, njll.
Ifomethi kanye nokusetshenziswa kwedatha yombiko kuqondwa umsingathi ngokuhlaziya okuqukethwe kwesichazi sombiko. Ukuhlaziya okuqukethwe kwenziwa umhlahleli. Isichazi Sombiko sichaza idatha enikezwe isilawuli ngasinye kudivayisi. Yakhiwe ngezinto eziyizingcezu zolwazi mayelana nedivayisi futhi iqukethe isiqalo esingu-1-byte nobude obuguquguqukayo.
idatha. Ukuze uthole imininingwane eyengeziwe mayelana nefomethi yento, bheka
1.11=, isigaba 5.6 kanye no-6.2.2.
Kunezinhlobo ezintathu eziyinhloko zezinto:
Into eyinhloko ichaza noma iqoqe izinhlobo ezithile zezinkambu zedatha.
Into yomhlaba wonke ichaza izici zedatha yesilawuli.
Into yendawo ichaza izici zedatha yesilawuli.
Uhlobo ngalunye lwento luchazwa ngemisebenzi ehlukene. Umsebenzi wento ungabuye ubizwe ngokuthi a tag. Umsebenzi wento ungabonwa njengento encane eyingxenye yezinhlobo ezintathu zezinto eziyinhloko. Ithebula elingezansi linikeza kafushaneview yemisebenzi yento9 ohlotsheni lwento ngayinye. Ukuze uthole incazelo ephelele yezinto ezisesigabeni ngasinye, bheka
Ithebula – Incazelo Yomsebenzi Wento Yohlobo Lwento Ngayinye
Umsebenzi Wohlobo Lwento
Incazelo
Okokufaka Okuyinhloko
Ichaza ulwazi mayelana nedatha enikezwe isilawuli esibonakalayo esisodwa noma ngaphezulu.
Okukhiphayo Okuyinhloko Kuchaza idatha ethunyelwe ocingweni.
Isici Esiyinhloko
Ichaza imininingwane yokucushwa kwedivayisi ethunyelwe noma etholwe kusukela kudivayisi enomthelela ekuziphatheni kukonke kwedivayisi noma enye yezingxenye zayo.
Izinto ezihlobene neQembu Elikhulu (Okokufaka, Okukhiphayo noma Isici).
Isiphetho Esiyinhloko Sokuvala iqoqo. Iqoqo
Copyright © 2025 Silicon Laboratories. Wonke Amalungelo Agodliwe.
30/174
Kuphelileview
Umsebenzi Wohlobo Lwento
Incazelo
Ikhasi Lokusetshenziswa Kwembulunga yonke
Ihlonza umsebenzi otholakala ngaphakathi ocingweni.
I-Global Logical Ichaza umkhawulo ophansi wamanani abikiwe kumayunithi anengqondo. Ubuncane
I-Global Logical Ichaza umkhawulo ophezulu wamanani abikiwe kumayunithi anengqondo. Ubuningi
I-Global Physical Ichaza umkhawulo ophansi wamanani abikiwe kumayunithi aphathekayo, okungukuthi I-Logical Minimum Minimum evezwa ngamayunithi aphathekayo.
I-Global Physical Ichaza umkhawulo ongaphezulu wamanani abikiwe kumayunithi aphathekayo, okungukuthi Umkhawulo Omkhulu Onengqondo ovezwa ngamayunithi aphathekayo.
Global Unit
Ibonisa i-eksponenti yeyunithi kusisekelo 10. I-eksponenti isuka ku- -8 iye ku-+7.
I-Exponent
Global Unit
Ibonisa iyunithi yamanani abikiwe. Isibonelo, ubude, isisindo, amayunithi okushisa, njll.
Usayizi Wombiko Womhlaba Wonke
Ibonisa usayizi wezinkambu zombiko ngamabhithi.
I-Global Report ID Ikhombisa isiqalo esengezwe embikweni othile.
I-Global Report count
Ibonisa inombolo yezinkambu zedatha yento ethile.
I-Global Push
Ibeka ikhophi yethebula lesimo sezinto zomhlaba wonke kusitaki se-CPU.
I-Global Pop
Ifaka esikhundleni sethebula lesimo sokugcina kusuka kusitaki.
Ukusetshenziswa Kwendawo
Imele inkomba ukuze iveze Ukusetshenziswa okuthile ngaphakathi Kwekhasi Lokusetshenziswa. Ikhombisa ukusetshenziswa okuphakanyisiwe komthengisi kulawulo oluthile noma iqembu lezilawuli. Ukusetshenziswa kunikeza ulwazi kumthuthukisi wohlelo lokusebenza mayelana nokuthi isilawuli silinganisa ini ngempela.
Ukusetshenziswa Kwendawo
Ichaza ukusetshenziswa kokuqala okuhlotshaniswa ne-array noma i-bitmap.
Ubuncane
Ukusetshenziswa Kwendawo
Ichaza ukusetshenziswa kokuphela okuhlotshaniswa ne-array noma i-bitmap.
Ubuningi
Umklami Wendawo Unquma isitho somzimba esisetshenziselwa ukulawula. Inkomba ikhomba kumklami ku-Physical
Inkomba
umchazi.
Umklami Wendawo Uchaza inkomba yesiklami esiqala esihlotshaniswa ne-array noma i-bitmap. Ubuncane
Umklami Wendawo Uchaza inkomba yesiqambi sokugcina esihlotshaniswa namalungu afanayo noma i-bitmap. Ubuningi
Inkomba Yezintambo Zasendaweni
Inkomba yeyunithi yezinhlamvu yesichazi Sezintambo. Ivumela iyunithi yezinhlamvu ukuthi ihlotshaniswe nento ethile noma isilawuli.
Intambo Yasendaweni
Icacisa inkomba yochungechunge lokuqala lapho yabela iqembu lamayunithi ezinhlamvu alandelanayo kuzilawuli kuhlelo
Ubuncane noma i-bitmap.
Local Local
Ubuningi beyunithi yezinhlamvu
I-Delimiter
Icacisa inkomba yeyunithi yezinhlamvu yokugcina lapho yabela iqembu lamayunithi ezinhlamvu alandelanayo kuzilawuli kuhlelo noma i-bitmap.
Ichaza isiqalo noma isiphetho sesethi yezinto zasendaweni.
Idatha yesilawuli kufanele ichaze okungenani izinto ezilandelayo:
Okokufaka, Okukhiphayo noma Isici Izinto eziyinhloko Ukusetshenziswa Into yasendaweni Ukusetshenziswa Ikhasi Into yomhlaba wonke Enengqondo Isilinganiso esincane se-Global Into Enengqondo Ubuningi bento yomhlaba wonke Bika Usayizi Into yomhlaba wonke
Copyright © 2025 Silicon Laboratories. Wonke Amalungelo Agodliwe.
31/174
Kuphelileview
Bika Ukubala into yomhlaba wonke Ithebula elingezansi libonisa ukumelwa kokuqukethwe kwesichazi Sombiko Wegundane ngokombono womhlanganisi we-HID. Igundane linezinkinobho ezintathu (kwesokunxele, kwesokudla, nesondo). Ikhodi eyethulwe ku-example ngezansi ukusetshenziswa kwekhodi ehambisana nalesi sichazamazwi se-mouse Bika.
Umfanekiso - Bika Okuqukethwe Kwesichazi Kusuka Ku-Host HID Parser View
(1) Umsebenzi wento Yekhasi Lokusebenzisa ucacisa umsebenzi ojwayelekile wocingo. Kulesi example, idivayisi ye-HID ingeye-a
isilawuli sedeskithophu esijwayelekile.
(2) Amaqembu ezicelo zokuqoqa Izinto eziyinhloko ezinenhloso efanayo futhi ezingase zijwayele izinhlelo zokusebenza. Emdwebeni, iqembu lakhiwe izinto ezintathu Ezibalulekile Zokufaka. Kuleli qoqo, ukusetshenziswa okuphakanyisiwe kwezilawuli kuyigundane njengoba kukhonjiswa into yokusetshenziswa. (3) Amaqoqo afakwe esidlekeni angase asetshenziselwe ukunikeza imininingwane eyengeziwe mayelana nokusetshenziswa kwesilawuli esisodwa noma iqembu lezilawuli ezinhlelweni zokusebenza. Kulesi exampI-le, I-Collection Physical, efakwe kuhlelo Lokusebenza Lokuqoqwa, yakhiwe ngezinto ezintathu ezifanayo Zokokufaka ezakha Isicelo Seqoqo. I-Collection Physical isetshenziselwa iqoqo lezinto zedatha ezimelela amaphuzu edatha aqoqwe endaweni eyodwa yejometri. Ku-example, ukusetshenziswa okuphakanyisiwe kuyisikhombi njengoba kukhonjiswe into yokusetshenziswa. Lapha ukusetshenziswa kwesikhombi kusho izixhumanisi zendawo yegundane futhi isofthiwe yesistimu izohumusha izixhumanisi zegundane ekuhambeni kwekhesa yesikrini. (4) Amakhasi okusetshenziswa afakwe esidlekeni nawo angenzeka futhi anikeze imininingwane eyengeziwe mayelana nesici esithile ngaphakathi komsebenzi ojwayelekile wocingo. Kulesi simo, izinto ezimbili Zokokufaka zihlanganiswa futhi zihambisana nezinkinobho zegundane. Into Yokufaka Okukodwa ichaza izinkinobho ezintathu zegundane (kwesokudla, kwesokunxele kanye nesondo) ngokwenani lezinkambu zedatha yento (Bika Intwana yento), usayizi wenkambu yedatha (Bika into ethi Usayizi) kanye namanani angaba khona enkambu yedatha ngayinye (Ukusetshenziswa Okuncane Nobukhulu, Izinto Ezincane Ezinengqondo kanye Nobukhulu). Enye into yokokufaka iwu-13-bit njalo evumela idatha yombiko Wokokufaka ukuthi iqondaniswe emngceleni we-byte. Le nto Yokufaka isetshenziselwa izinjongo zokupheda kuphela. (5) Elinye ikhasi lokusetshenziswa elifakwe esidlekeni elibhekisela kusilawuli sedeskithophu evamile lichazwe kuzixhumanisi zendawo yegundane. Kuleli khasi lokusetshenziswa, into yokokufaka ichaza izinkambu zedatha ezihambisana ne-eksisi ka-x kanye no-y njengoba kucaciswe Ukusetshenziswa okubili.
izinto.
Ngemva kokuhlaziya okuqukethwe kwesichazi segundane langaphambilini Lombiko, umhlahleli we-HID we-HID uyakwazi ukuhumusha idatha yombiko Wokokufaka othunyelwe idivayisi ngokudlulisa ukuphazamisa IN noma ngokuphendula isicelo se-GET_REPORT. Idatha yombiko Wokokufaka ehambisana nesichazi Sombiko segundane esiboniswe Emfanekisweni – Bika Okuqukethwe Kwesichazi Sokusuka Ku-HID Yomsingathi View is
Copyright © 2025 Silicon Laboratories. Wonke Amalungelo Agodliwe.
32/174
Kuphelileview
kukhonjiswe kulelithebula elingezansi. Usayizi ophelele wedatha yombiko ungamabhayithi angu-4. Izinhlobo ezahlukene zemibiko zingathunyelwa endaweni efanayo yokugcina. Ngenhloso yokuhlukanisa izinhlobo ezahlukene zemibiko, isiqalo se-ID sombiko we-1-byte siyengezwa embikweni wedatha. Uma i-ID yombiko isetshenziswe ku-exampkumbiko wegundane, usayizi ophelele wedatha yombiko uzoba ngamabhayithi angu-5.
Ithebula – Umbiko Wokokufaka Uthunyelwe Kusokhaya futhi Uhambisana Nesimo Segundane Lezinkinobho Ezi-3
I-Bit Offset
0 1 2 3 16 24
Inani elincane 1 1 1 13 8 8
Incazelo Inkinobho 1 (inkinobho yesobunxele). Inkinobho 2 (inkinobho yesokudla). Inkinobho 3 (inkinobho yesondo). Ayisetshenziswa. Isikhundla ku-eksisi X. Isikhundla ku-eksisi Y.
Isichazi somzimba sikhombisa ingxenye noma izingxenye zomzimba ezihloselwe ukwenza kusebenze isilawuli noma izilawuli. Uhlelo lokusebenza lungasebenzisa lolu lwazi ukuze lunikeze umsebenzi ekulawuleni idivayisi. Isichazi Somzimba siyizichazi eziqondene nekilasi ozikhethelayo futhi iningi lamadivayisi linenzuzo encane yokulisebenzisa. Bukela ku
Izidingo Zensiza Yekilasi Ledivayisi ye-USB ye-HID evela ku-Core
Ngaso sonke isikhathi uma ungeza isibonelo sekilasi le-HID ekucushweni kwe-USB ngekholi kumsebenzi othi sl_usbd_hid_add_to_configuration() , izinsiza ezilandelayo zizokwabiwa kusukela kungqikithi.
Insiza
I-interfaces Enye indawo yokusebenzelana Amaqembu e-Endpoints Interface
Ubuningi
1 1 1 (2 uma isiphetho se-OUT sokuphazamisa sivuliwe) 0
Qaphela ukuthi lezo zinombolo zingokucushwa ngakunye. Uma usetha amanani akho okumisa i-SL_USBD_INTERFACE_QUANTITY , SL_USBD_ALT_INTERFACE_QUANTITY , SL_USBD_INTERFACE_GROUP_QUANTITY kanye ne-SL_USBD_DESCRIPTOR_QUANTITY amanani okucushwa, ungakhohlwa ukucabangela ukuthi zingaki izilungiselelo ezizongezwa ikilasi. Ngokwevelu yokucushwa kwe-SL_USBD_OPEN_ENDPOINTS_QUANTITY, njengoba izindawo zokugcina zivulwa kuphela uma ukulungiselelwa kusethwa umsingathi, udinga nje ukucabangela inani lamaphoyinti okugcina adingekayo kusenzakalo sekilasi.
Ukucushwa Kwekilasi Ledivayisi ye-USB ye-HID
Amaqembu amabili amapharamitha wokumisa asetshenziselwa ukulungisa isigaba se-HID:
Isicelo Sekilasi le-USB yedivayisi ye-HID-Ukucushwa okuqondile Idivayisi ye-USB Ukulungiselelwa Kwekilasi le-HID
Ukucushwa okuqondile kwekilasi ledivayisi ye-USB ye-HID
Okokuqala, ukusebenzisa imojuli yekilasi le-HID yedivayisi ye-Silicon Labs, lungisa ukucushwa kwesikhathi se-HID okuchazayo ngokuya ngezidingo zakho zohlelo lokusebenza. Ahlanganiswe kabusha ngaphakathi kwesihloko esithi sl_usbd_core_config.h file ngaphansi kwesigaba se-HID. Angahlukaniswa abe izigaba ezimbili, ukucushwa kwenani kanye nokucushwa komsebenzi we-HID. Inhloso yokucushwa kwenani ukwazisa imojuli yedivayisi ye-USB mayelana nokuthi zingaki izinto ze-USB HID ezokwaba.
Ithebula elingezansi lichaza ukucushwa ngakunye okuchazwayo.
Ithebula - Ukucushwa Kwedivayisi ye-USB HID Kuyachaza
Copyright © 2025 Silicon Laboratories. Wonke Amalungelo Agodliwe.
33/174
Kuphelileview
Igama lokucushwa
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
Incazelo
Inombolo yezimo zekilasi ozozaba ngokushayela umsebenzi
sl_usbd_hid_create_instance() .
Inombolo yokucushwa. Izimo zekilasi le-HID zingangezwa kokucushwa kwe-aaaa eyodwa noma ngaphezulu vi c ll kumsebenzi sl_usbd_hid_add_to_configuration() . Ilungiselela inani eliphelele lama-ID ombiko azokwabiwa.
Ilungiselela inani eliphelele lezinto ze-Push/Pop ezizonikezwa.
Umsebenzi wesibali sikhathi uphatha yonke imisebenzi ye-HID esekwe kusikhathi. Lokhu kulungiselelwa kukuvumela ukuthi usethe usayizi wesitaki (ngenani lamabhayithi). Okubalulekile komsebenzi we-HID. yakhe ibaluleke kakhulu ku-CMSIS-RTOS2.
Inani elizenzakalelayo
2 1 2 0 2048
osPriorityHigh
Isigaba esingaphansi Sokudala Isimo Sedivayisi Yedivayisi ye-USB ye-HID
ikhodi yezwe_yephrothokholi
interval_in and interval_out p_hid_callback HID Isichazi Sombiko Wekilasi Example Lesi sigaba sichaza ukulungiselelwa okuhlobene nezimo zekilasi le-HID.
I-Class Instance Creation
Ukudala isibonelo sesigaba se-HID kwenziwa ngokubiza umsebenzi aaa sl_usbd_hid_create_instance() , ohlukanisa izimpikiswano zokumisa ezichazwe ngezansi.
isigaba esincane
Ikhodi ye-HID subclass. Amanani angenzeka yilawa:
SL_USBD_HID_SUBCL ASS_NONE SL_USBD_HID_SUBCL ASS_BOOT
Idivayisi ye-HID esebenzisa i-boot subclass kufanele isebenzise amafomethi ombiko ajwayelekile. Ukuze uthole ulwazi olwengeziwe ngamakhodi e-subclass, bheka isigaba 4.2 sesibuyekezo sokucaciswa kwe-HID 1.11.
Iphrothokholi
Iphrothokholi esetshenziswa idivayisi ye-HID. Amanani angenzeka yilawa:
SL_USBD_HID_PROTOCOL_NONE SL_USBD_HID_PROTOCOL_KBD SL_USBD_HID_PROTOCOL_MOUSE
Uma umsebenzi wakho we-HID kuyigundane, umthetho olandelwayo kufanele usethelwe ku-aa SL_USBD_HID_PROTOCOL_MOUSE . Uma kuyi-keybo rd, kufanele O isethwe kokuthi SL_USBD_HID_PROTOCOL_KBD . ngakho-ke, umthetho olandelwayo kufanele usethelwe ku-SL_USBD_HID_PROTOCOL_NONE . Ukuze uthole ulwazi olwengeziwe ngamakhodi esigaba esingaphansi, bheka isigaba 4.3 sesibuyekezo sokucaciswa kwe-HID 1.11.
Ikhodi_yezwe
I-ID yekhodi yezwe. Amanani angenzeka yilawa:
SL_USBD_HID_COUNTRY_CODE_NOT_SUPPORTED
Copyright © 2025 Silicon Laboratories. Wonke Amalungelo Agodliwe.
34/174
Kuphelileview
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_CZE_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_BREW_COUNTRY_ 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_COUNTRYD_ICADHI_CODE SL_USBD_HID_COUNTRY_CODE_NETHERL ANDS_DUTCH SL_USBD_HID_COUNTRY_CODE_NORWEGIAN SL_USBD_HID_COUNTRY_CODE_PERSIAN_FARSI SL_USBD_HID_COUNTRY_CODE_POL KANYE SL_USBD_HID_COUNTRY_CODE_SLUDRY_COUNTRY_CODE_USDRUDRY_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_CODE_USB_GERMAN_CODE_SWISS_GERMAN_CODE 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_ISHD_CODE_HID
Ikhodi yezwe ikhomba ukuthi ihardware yenziwe yasendaweni yaliphi izwe. Izingxenyekazi zekhompuyutha eziningi awenziwa ezasendaweni ngakho-ke le aaaav lue ingaba yi-SL_USBD_HID_COUNTRY_CODE_NOT_SUPPORTED (0). Nokho, ukhiye uthi ukusebenzisa kwami inkambu ukukhombisa ulimi lwamakepisi okhiye.
Ukuze uthole ulwazi olwengeziwe ngamakhodi ezwe, bheka isigaba 6.2.1 sesibuyekezo sokucaciswa kwe-HID 1.11.
interval_in and interval_out
i-interval_in kanye ne-interval_out imele isikhawu sokuvota sephoyinti lokugcina lokuphazamiseka elingu-IN kanye nendawo yokugcina yokuphazamisa ye-OUT.
Lokhu kumelela isikhawu sokuvota sephoyinti lokugcina, ngama-millisecond. Ukusetha leli nani kuncike ekutheni idivayisi yakho isengozini kaningi kangakanani ukukhiqiza umbiko omusha womsingathi. Isibonelo, uma umbiko ukhiqizwa njalo ngama-millisecond angu-16, isikhawu kufanele sibe ngu-16 noma ngaphansi.
Inani kufanele libe amandla angu-2 (1, 2, 4, 8, 16, njll.).
i-interval_out v lue ishaywa indiva uma okuthi ctrl_rd_en kusethwe kuqiniso.
p_hid_callback
aaaa p_hid_callback iyisikhombi esakhiweni sohlobo sl_usbd_hid_callbacks_t . Inhloso yayo ukunikeza i-HID Cl ss isethi yemisebenzi yokuphinda kubizwe uma kwenzeka umcimbi we-HID.
Copyright © 2025 Silicon Laboratories. Wonke Amalungelo Agodliwe.
35/174
Kuphelileview
Akuwona wonke ama-callbacks ayimpoqo futhi i-null pointer ( NULL ) ingadluliswa ngokuguquguquka kwesakhiwo sokufona emuva lapho ukuphinda ukushaya kungadingeki. Ithebula elingezansi lichaza inkambu yokumisa ngayinye etholakalayo kulesi sakhiwo sokumisa.
Ithebula – sl_usbd_hid_callbacks_t Isakhiwo Sokucushwa
Izinkambu
Incazelo
Isiginesha Yomsebenzi
.vumela .khubaza .get_report_desc
.get_phy_desc
.set_output_report .get_feature_report .set_feature_report
Ibizwa uma isenzakalo sekilasi le-USB sinikwe amandla ngempumelelo. Ibizwa lapho isenzakalo sekilasi le-USB sikhutshaziwe.
Ishayelwe ngesikhathi sokudalwa kwe-HID Instance ukuze kudluliswe isichazi sombiko wakho. Kumsebenzi wakho ngamunye we-HID, kufanele unikeze isichazi sombiko. Isichazi sombiko sikhombisa kumsingathi ukuthi umbiko wezikhathi ezithile ozothunyelwa idivayisi kufanele udluliswe kanjani. Ukubhala isichazi sombiko wakho kungaba inselele, yingakho kunezinsiza zokusiza. Lona ukuphela komsebenzi we-callback oyimpoqo. Ishayelwe ngesikhathi sokudalwa kwe-HID Instance ukuze kudlule isichazi sakho esibonakalayo. Isichazi somzimba siyincazelo ehlinzeka ngolwazi mayelana nengxenye ethile noma izingxenye zomzimba womuntu ezenza kusebenze isilawuli noma izilawuli. Ukuze uthole ulwazi olwengeziwe ngezincazelo ezibonakalayo, bheka isigaba 6.2.3 sesibuyekezo sokucaciswa kwe-HID 1.11. Isichazi esibonakalayo siyazikhethela futhi isikhathi esiningi siyazitshwa. Isigcinalwazi esidlule lapha singasethwa ukuze sithi NULL futhi ubude bumiswe ukuze bube ngu-0. Ibizwa lapho umsingathi esetha umbiko njengoba kuchazwe encazelweni yombiko wakho (uma ithumela umbiko).
Ibizwa uma umsingathi ecela umbiko wesici njengoba kuchazwe esichazisweni sombiko wakho.
Ibizwa uma umsingathi esetha umbiko wesici njengoba kuchazwe esichazisweni sombiko wakho.
uhlelo lokusebenza olungenalutho_usbd_hid_enable(uint8_t class_nbr); uhlelo lokusebenza olungenalutho_usbd_hid_disable(uint8_t class_nbr); uhlelo lokusebenza olungenalutho_usbd_hid_get_report_desc(uint8_t class_nbr, const uint8_t *p_report_ptr, uint16_tp_report_len);
uhlelo lokusebenza olungenalutho_usbd_hid_get_phy_desc(uint8_t class_nbr, const uint8_t *p_report_ptr, uint16_tp_report_len);
uhlelo lokusebenza olungenalutho_usbd_hid_set_output_report(uint8_t class_nbr, uint8_t report_id, uint8_t *p_report_buf, uint16_t report_len); uhlelo lokusebenza olungenalutho_usbd_hid_get_feature_report(uint8_t class_nbr, uint8_t report_id, uint8_t *p_report_buf, uint16_t report_len); uhlelo lokusebenza olungenalutho_usbd_hid_set_feature_report(uint8_t class_nbr, uint8_t report_id, uint8_t *p_report_buf, uint16_t report_len);
.thola_iphrothokholi
Ibuyisa iphrothokholi esebenzayo yamanje.
uhlelo lokusebenza olungenalutho_usbd_hid_get_protocol(uint8_t class_nbr, uint8_t *p_protocol);
.setha_iphrothokholi
Isetha iphrothokholi esebenzayo yamanje.
uhlelo lokusebenza olungenalutho_usbd_hid_set_protocol(uint8_t class_nbr, uint8_t protocol);
Isichazi Sombiko Wekilasi Le-HID Example
Silicon Labs 'HID class sample application inikeza i example yesichazi sombiko segundane elilula. I-exampi-le engezansi ibonisa isichazi sombiko wegundane.
Example – Isichazi Sombiko Wegundane
static uint8_t app_usbd_hid_report_desc[] = {
(1) (2)
SL_USBD_HID_GLOBAL_USAGE_PAGE + 1, SL_USBD_HID_USAGE_PAGE_GENERIC_DESKTOP_CONTROLS,
SL_USBD_HID_LOCAL_USAGE + 1, SL_USBD_HID_CA_MOUSE,
(3)
Copyright © 2025 Silicon Laboratories. Wonke Amalungelo Agodliwe.
36/174
Kuphelileview
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) Ithebula elimele isichazi sombiko wegundane liqalwa ngendlela yokuthi umugqa ngamunye uhambisane nento emfushane. Lokhu kwakamuva kwakhiwa kusukela kusiqalo esingu-1-byte kanye nedatha yebhayithi elingu-1. Bukela ku viewihlelwe ngumhlaziyi we-HID ophethe Emfanekisweni - Bika Okuqukethwe Kwesichazi Kusuka Ku-Host HID Parser View.
(2) Kusetshenziswa Ikhasi Lokusetshenziswa Kwedeskithophu Ejwayelekile.
(3) Ngaphakathi Kwekhasi Lokusetshenziswa Kwedeskithophu Ejwayelekile, ukusetshenziswa tag iphakamisa ukuthi iqembu lezilawuli elokulawula igundane. Iqoqo legundane ngokuvamile liqukethe izimbazo ezimbili (X kanye no-Y) kanye nenkinobho eyodwa, ezimbili, noma ezintathu.
(4) Iqoqo legundane liyaqalwa.
(5) Ngaphakathi kweqoqo legundane, ukusetshenziswa tag iphakamisa ngokuqondile ukuthi izilawuli zegundane ezeqoqo lezikhombisi. Iqoqo lesikhombi iqoqo lezimbazo elikhiqiza inani lokuqondisa, ukukhombisa, noma ukukhomba izinhloso zomsebenzisi kuhlelo lokusebenza.
(6) Iqoqo lesikhombi liyaqalwa.
(7) Ikhasi Lokusetshenziswa Kwezinkinobho lichaza Into Yokufaka eyenziwe ngezinkambu ezintathu ze-1-bit. Inkambu ngayinye ye-1-bit imelela inkinobho ye-mouse9s 1, 2 kanye no-3 ngokulandelanayo futhi ingabuyisela inani elingu-0 noma elingu-1.
(8) Into Yokufaka Yekhasi Lokusebenzisa Izinkinobho ihlanganiswe nezinye izingcezu eziyi-13.
(9) Elinye Ikhasi Lokusetshenziswa Kwedeskithophu Ejwayelekile liboniswa ngokuchaza indawo yegundane ngezimbazo X kanye no-Y. Into Yokufaka yenziwe ngezinkambu ezimbili ze-8-bit inani lazo lingaba phakathi kuka- -127 no-127.
(10) Iqoqo lesikhombi livaliwe.
(11) Iqoqo legundane livaliwe.
Ikhasi Le-USB.org Elifihliwe
Copyright © 2025 Silicon Laboratories. Wonke Amalungelo Agodliwe.
37/174
Kuphelileview
I-USB Implementers Forum (USB-IF) inikeza ithuluzi elibizwa ngokuthi “HID Descriptor Tool” kanye nolunye ulwazi kufomethi yesichazi sombiko. Bhekahttp://www.usb.org/developers/hidpage/ ukuze uthole ulwazi olwengeziwe.
Umhlahlandlela Wokuhlela Wekilasi Ledivayisi ye-USB ye-HID
Lesi sigaba sichaza indlela yokusebenzisa ikilasi le-HID. Ukuqalisa Ikilasi le-HID Yedivayisi Ye-USB Yengeza Isimo Sekilasi Sedivayisi ye-USB ye-HID Kudivayisi yakho Ikhuluma kusetshenziswa Ikilasi le-HID Yedivayisi ye-USB
Iqalisa Ikilasi le-HID Yedivayisi ye-USB
Ukuze ungeze ukusebenza Kwekilasi le-HID kudivayisi yakho, kufanele uqale uqalise ikilasi ngokushayela umsebenzi sl_usbd_hid_init() . I-example ngezansi ikhombisa indlela yokubiza sl_usbd_hid_init() usebenzisa izimpikiswano ezizenzakalelayo. Ukuze uthole ulwazi olwengeziwe ngama-agumenti okumisa azodlulela ku-sl_usbd_hid_init() , bona Ukulungiselelwa Okuqondile Kwekilasi Ledivayisi ye-USB HID .
Example – Ishayela u-sl_usbd_hid_init()
sl_status_t isimo;
isimo = sl_usbd_hid_init(); uma (isimo ! SL_STATUS_OK) {/* Kwenzeke iphutha. Ukuphatha iphutha kufanele kwengezwe lapha. */
}
Ukwengeza i-USB Device HID Class Instance kudivayisi yakho
Ukuze ungeze ukusebenza kwekilasi le-HID kudivayisi yakho, kufanele udale isenzakalo, bese usingeza ekucushweni kwedivayisi yakho.
Ukudala I-HID Class Instance
Dala isibonelo sekilasi le-HID ngokubiza umsebenzi sl_usbd_hid_create_instance() . I-example ngezansi ikhombisa ukuthi ungawakha kanjani umsebenzi wegundane olula usebenzisa sl_usbd_hid_create_instance() usebenzisa izimpikiswano ezizenzakalelayo. Ukuze uthole ulwazi olwengeziwe ngama-agumenti okumisa azodlulela ku-sl_usbd_hid_create_instance() , bheka Ukulungiselelwa Kwekilasi Ledivayisi ye-USB HID.
Example - Ukwengeza Umsebenzi Wegundane nge-sl_usbd_hid_create_instance()
Copyright © 2025 Silicon Laboratories. Wonke Amalungelo Agodliwe.
38/174
Kuphelileview
/* Izilinganiso zomhlaba wonke. */ static const uint8_t app_usbd_hid_mouse_report_desc[] = {
SL_USBD_HID_GLOBAL_USAGE_PAGE + 1, SL_USBD_HID_USAGE_PAGE_GENERIC_DESKTOP_CONTROLS, SL_USBD_HID_LOCAL_USAGE + 1, SL_USBD_HID_CA_MOUSE, SL_USBD_HID_MAIN_COLLE 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, 0, 0 SLG_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_DV_USB_DV_USB 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 };
/* Okuguquguqukayo kwasendaweni.*/ uint8_t class_nbr; sl_status_t isimo;
sl_usbd_hid_callbacks_t app_usbd_hid_callbacks = { NULL, NULL, app_usbd_hid_get_report_desc, NULL, NULL, NULL, NULL, NULL, NULL };
uhlelo lokusebenza olungenalutho_usbd_hid_get_report_desc(uint8_t class_nbr, const uint8_t **p_report_ptr, uint16_t *p_report_len)
{(engenalutho) class_nbr;
*p_report_ptr = app_usbd_hid_mouse_report_desc; *p_report_len = sizeof(app_usbd_hid_mouse_report_desc); }
isimo = sl_usbd_hid_create_instance(SL_USBD_HID_SUBCLASS_BOOT, SL_USBD_HID_PROTOCOL_MOUSE, SL_USBD_HID_COUNTRY_CODE_AKUSEKELWE, Ex_USBD_HID_Mouse_ReportDesc, usayizi we-Report_USB_USB),Umbiko_I-USB iqiniso, &app_usbd_hid_callbacks, &class_nbr);
Copyright © 2025 Silicon Laboratories. Wonke Amalungelo Agodliwe.
39/174
Kuphelileview
/* Kwenzeke iphutha. Ukuphatha iphutha kufanele kwengezwe lapha. */}
Ukwengeza I-HID Class Instance Ekucushweni Kwedivayisi Yakho Ngemva kokuthi udale isibonelo sekilasi le-HID, ungakwazi ukusengeza ekucushweni ngokubiza umsebenzi.
sl_usbd_hid_add_to_configuration() .
I-example ngezansi ikhombisa indlela yokubiza sl_usbd_hid_add_to_configuration() .
Example - Ishayela u-sl_usbd_hid_add_to_configuration()
sl_status_t isimo;
sl_usbd_hid_add_to_configuration(class_nbr,
(1)
config_nbr_fs); (2)
uma (isimo ! SL_STATUS_OK) {
/* Kwenzeke iphutha. Ukuphatha iphutha kufanele kwengezwe lapha. */
}
(1) Inombolo yekilasi ezongezwa ekucushweni ibuyiselwe ngu-sl_usbd_hid_create_instance(). (2) Inombolo yokumisa (lapha ingeza ekucushweni kwe-Full-Speed).
Ukuxhumana kusetshenziswa Ikilasi le-HID Yedivayisi ye-USB
Ukuxhumana Okuvumelanayo Kwekilasi Ukuxhumana Okuvumelanayo Kwekilasi Isigaba se-HID sinikeza imisebenzi elandelayo ukuze uxhumane nomsingathi.
Ithebula - Isifinyezo se-HID Communication API
Igama lomsebenzi
sl_usb d _hid _ isikhangiso _sy nc() sl_usb d _hid _bhala _sy nc()
I-Operation Ithola idatha kumsingathi ngokuphazamiseka kwe-OUT endpoint. Lo msebenzi uyavimba. Ithumela idatha kumsingathi ngokuphazamiseka IN endpoint. Lo msebenzi uyavimba.
Ukuxhumana Okuvumelanayo Ukuxhumana okuvumelanayo kusho ukuthi ukudlulisa kuyavinjwa. Ocingweni lomsebenzi, izinhlelo zokusebenza ziyavimba kuze kuqedwe ukudlulisa ngephutha noma ngaphandle kwephutha. Isikhathi sokuvala singacaciswa ukuze kugwenywe ukulinda unomphela. I-exampI-le engezansi ibonisa ukufunda nokubhala okwamukela idatha kumsingathi esebenzisa isiphetho esiphazamisayo se-OUT futhi ithumela idatha kumsingathi kusetshenziswa iphoyinti lokuphazamisa elithi IN.
Example – I-HID Evumelanisiwe Funda futhi Ubhale
__KULUNGILE(4) uint8_t rx_buf[2];
__KULUNGILE(4) uint8_t tx_buf[2];
uint32_t
xfer_len;
sl_isimo_t
isimo;
isimo = sl_usbd_hid_read_sync(class_nbr,
(1)
(okungenalutho *)rx_buf,
(2)
2u,
0u,
(3)
&xfer_len);
uma (isimo ! SL_STATUS_OK) {
/* Kwenzeke iphutha. Ukuphatha iphutha kufanele kwengezwe lapha. */
}
Copyright © 2025 Silicon Laboratories. Wonke Amalungelo Agodliwe.
40/174
Kuphelileview
isimo =sl_usbd_hid_read_sync(class_nbr,(1)(void *)rx_buf,(2)2u,0u,(3)&xfer_len);if(isimo ! SL_STATUS_OK){/* Kwenzeke iphutha. Ukuphatha iphutha kufanele kwengezwe lapha. */}
isimo =sl_usbd_hid_write_sync(class_nbr,(1)(void *)tx_buf,(4)2u,0u,(3)&xfer_len);if(isimo ! SL_STATUS_OK){/* Kwenzeke iphutha. Ukuphatha iphutha kufanele kwengezwe lapha. */}
(1) Inombolo yesibonelo yekilasi edalwe kusukela ku-sl_usbd_hid_create_instance() inikeza ireferensi yangaphakathi yekilasi le-HID ukuhambisa ukudluliselwa endaweni yokuphazamiseka efanele OUT noma IN endpoint.
(2) Isicelo kufanele siqinisekise ukuthi isilondolozi esihlinzekwe emsebenzini sikhulu ngokwanele ukuthwala yonke imininingwane. Uma kungenjalo, izinkinga zokuvumelanisa zingenzeka. Ngaphakathi, umsebenzi wokufundwayo wenziwa ngephoyinti lokugcina lokulawula noma ngephoyinti lokugcina eliphazamisayo, kuye ngokuthi ifulegi lifundeka ngesilawuli esethiwe lapho ubiza sl_usbd_hid_create_instance() .
(3) Ukuze ugweme isimo sokuvinjwa esingapheli, isikhathi sokuvala esivezwa ngama-millisecond singacaciswa. Inani elingu-809 lenza umsebenzi wohlelo lokusebenza ulinde unomphela.
(4) Uhlelo lokusebenza luhlinzeka ngebhafa yokudlulisa eqalisiwe.
Umsebenzi we-HID wemibiko yokufaka yezikhathi ezithile
Ukuze wonge umkhawulokudonsa, umsingathi unamandla okuthulisa imibiko evela endaweni yokugcina yokuphazamisa ngokukhawulela imvamisa yokubika. Ukuze wenze njalo, umsingathi kufanele athumele isicelo se-SET_IDLE. Isigaba se-HID esisetshenziswa yi-Silicon Labs siqukethe umsebenzi wangaphakathi ohlonipha umkhawulo wokubika ongawusebenzisa embikweni wokufakwayo owodwa noma eminingana. Umsebenzi wemibiko yokufaka yesikhathi esithile ubonisa ukusebenza kwemisebenzi yemibiko yokufaka yezikhathi ezithile.
Umfanekiso – Umsebenzi Wemibiko Yokufaka Kwezikhathi ezithile
(1) Idivayisi ithola isicelo se-SET_IDLE. Lesi sicelo sicacisa ubude besikhathi sokungenzi lutho ku-ID yombiko enikeziwe. Ukuze uthole imininingwane eyengeziwe mayelana nesicelo se-SET_IDLE, bona
(2) Isakhiwo se-ID yombiko (esinikezwe phakathi nesigaba sokuqala sekilasi le-HID) sibuyekezwa kanye nesikhathi sokungenzi lutho. Ikhawunta yesikhathi sokungenzi lutho iqalwa ngevelu yesikhathi sokungenzi lutho. Isakhiwo se-ID yombiko sifakwe ekugcineni kohlu oluxhunyiwe oluqukethe izakhiwo ze-ID yemibiko yokufaka. Inani lesikhathi sokungenzi lutho livezwa ngeyunithi engu-4-ms enikeza ububanzi obungu-4 ukuya ku-1020 ms.
Copyright © 2025 Silicon Laboratories. Wonke Amalungelo Agodliwe.
41/174
Kuphelileview
Uma ubude besikhathi sokungenzi lutho bungaphansi kwesikhawu sokuvota sokuphazamiseka kwe-IN endpoint, imibiko ikhiqizwa ngesikhathi sokuvota.
(3) Njalo ngo-4 ms, umsebenzi wombiko wokufakwayo uphequlula uhlu lwe-ID yemibiko yokufaka. Ku-ID ngayinye yombiko wokufakwayo, umsebenzi wenza okukodwa kokubili okungenzeka. Ubude besikhathi somsebenzi bufana neyunithi engu-4-ms esetshenziswe isikhathi sokungenzi lutho. Uma zingekho izicelo ze-SET_IDLE ezithunyelwe umsingathi, uhlu lwe-ID yemibiko yokufaka alunalutho futhi umsebenzi awunalutho olungacutshungulwa. Izinqubo zomsebenzi zibika kuphela ama-ID ahlukile ku-0 futhi anesikhathi sokungenzi lutho esingaphezu kuka-0.
(4) Ku-ID yombiko wokufakwayo onikeziwe, umsebenzi uqinisekisa ukuthi isikhathi sokungenzi lutho sesidlulile yini. Uma ubude besikhathi bokungenzi lutho bungakapheli, ikhawunta iyancishiswa futhi awukho umbiko wokufakwayo othunyelwa kumsingathi.
(5) Uma isikhathi sokungenzi lutho sesidlulile (okungukuthi, isikhathi sokubala sokungenzi lutho sifinyelele uziro), umbiko wokufakwayo uthunyelwa kumsingathi ngokushayela umsebenzi othi sl_usbd_hid_write_sync() kusetshenziswa indawo yokugcina ethi IN.
(6) Idatha yombiko wokufakwayo othunyelwe umsebenzi isuka kubhafa yedatha yangaphakathi eyabelwe umbiko ngamunye wokufakwayo ochazwe encazelweni Yombiko. Umsebenzi wohlelo lokusebenza ungabiza umsebenzi we-sl_usbd_hid_write_sync() ukuze uthumele umbiko wokufaka. Ngemva kokuthumela idatha yombiko wokufakwayo, i-sl_usbd_hid_write_sync() ibuyekeza ibhafa yangaphakathi ehlobene ne-ID yombiko wokufakwayo nedatha esanda kuthunyelwa. Bese, umsebenzi wemibiko yokufaka ngezikhathi ezithile uthumela njalo idatha efanayo yombiko wokufaka ngemva kokuphela kwesikhathi sokungenzi lutho ngakunye kuze kube yilapho umsebenzi wohlelo lokusebenza ubuyekeza idatha kubhafa yangaphakathi. Kukhona indlela yokukhiya ukugwema ukonakala kwedatha ye-ID yombiko wokufakwayo uma kwenzeka ukuguqulwa kwenzeka ngesikhathi esiqondile sokudlulisela okwenziwa umsebenzi wombiko wokufakwayo wezikhathi ezithile.
Copyright © 2025 Silicon Laboratories. Wonke Amalungelo Agodliwe.
42/174
Kuphelileview
Kuphelileview
Ikilasi ledivayisi ye-USB ye-MSC
Idivayisi ye-USB ye-MSC Class Overview I-USB yedivayisi ye-MSC Class Insiza Idinga kusukela ku-Core USB Kudivayisi ye-MSC Ikilasi Ukucushwa Kwedivayisi ye-USB Umhlahlandlela Wokuhlela Wekilasi le-MSC Idivayisi ye-USB Idrayivu Yesitoreji Sekilasi le-MSC
Lesi sigaba sichaza isigaba sedivayisi yokugcinwa kwenqwaba (i-MSC) esekelwa idivayisi ye-USB yama-Silicon Labs. I-MSC iphrothokholi evumela ukudluliswa kolwazi phakathi kwedivayisi ye-USB nomsingathi. Ulwazi oludluliswayo luyinoma yini engagcinwa ngekhompyutha, njengezinhlelo ezisebenzisekayo, ikhodi yomthombo, amadokhumenti, izithombe, idatha yokumisa, noma enye idatha yombhalo noma yezinombolo. Idivayisi ye-USB ibonakala njengendawo yokugcina yangaphandle kumsingathi, okuvumela ukudluliswa kwe files ngokuhudula bese uphonsa.
A file isistimu ichaza ukuthi i- files ihlelwe kumidiya yokugcina. Ukucaciswa kwekilasi lesitoreji esikhulu se-USB akudingi okuthile file uhlelo oluzosetshenziswa kumadivayisi ahambisanayo. Kunalokho, inikeza ukusebenzelana okulula ukuze ufunde futhi ubhale imikhakha yedatha usebenzisa isethi yomyalo esobala ye-Small Computer System Interface (SCSI). Kanjalo, amasistimu wokusebenza angaphatha idrayivu ye-USB njenge-hard drive, futhi angayifometha nganoma iyiphi file uhlelo abaluthandayo.
Isigaba sedivayisi ye-USB yesitoreji esikhulu sisekela imigomo emibili yezokuthutha, kanje:
I-Bulk-Only Transport (BOT) Control/Bulk/Interrupt (CBI) Transport (isetshenziswa kuphela kuma-floppy disk drives)
Isigaba sedivayisi yesitoreji esiningi sisebenzisa umyalo osobala we-SCSI osethwe kusetshenziswa iphrothokholi ye-BOT kuphela, okubonisa ukuthi izindawo zokugcina kuphela ezizosetshenziswa ukudlulisa idatha nolwazi lwesimo. Ukuqaliswa kwe-MSC kusekela amayunithi amaningi anengqondo.
Ukuqaliswa kwe-MSC kuhambisana nale mibandela elandelayo:
Ukucaciswa Kwekilasi Lokulondolozwa Kwebhasi Lomhlaba Wonke Lomhlaba Wonkeview, Isibuyekezo 1.3 Sept. 5, 2008. Ikilasi Lokulondolozwa Kwebhasi Elikhulu Lomhlaba Wonke, Isibuyekezo 1.0 Sep. 31, 1999.
Idivayisi ye-USB ye-MSC aCl ss Overview
I-Protocol Endpoints Class Icela I-Small Computer System Interface (SCSI)
Iphrothokholi
Kulesi sigaba, sizoxoxa ngephrothokholi ye-Bulk-Only Transport (BOT) yeClass Storage Class. Iphrothokholi Yezokuthutha Ngobuningi Kuphela inezigaba ezintathutages:
I-Command Transport The Data Transport The Status Transport
Imiyalo yesitoreji esiningi ithunyelwa umsingathi ngesakhiwo esibizwa nge-Command Block Wrapper (CBW). Ngemiyalo edinga ukuthuthwa kwedatha stage, umsingathi uzozama ukuthumela noma ukwamukela inani eliqondile lamabhayithi kusuka kudivayisi njengoba kucaciswe ubude nezinkambu zefulegi ze-CBW. Ngemva kokuthutha idatha stage, umsingathi uzama ukuthola i-Command Status Wrapper (CSW) kusuka kudivayisi enemininingwane yesimo somyalo kanye nanoma iyiphi insalela yedatha (uma
Copyright © 2025 Silicon Laboratories. Wonke Amalungelo Agodliwe.
43/174
Kuphelileview
noma yikuphi). Ngemiyalo engafaki ukuthutha kwedatha stage, umsingathi uzama ukuthola i-CSW ngqo ngemuva kokuthi i-CBW ithunyelwe. Iphrothokholi inemininingwane ku-Figure - MSC Protocol.
Umfanekiso - Iphrothokholi ye-MSC
Amaphuzu okugcina
Ohlangothini lwedivayisi, ngokuhambisana nokucaciswa kwe-BOT, i-MSC yakhiwe amaphoyinti wokugcina alandelayo: Ipheya yokulawula IN kanye ne-OUT endpoints ebizwa ngokuthi iphoyinti lokugcina elizenzakalelayo. Ipheya yenqwaba yezindawo zokugcina ezingu-IN kanye ne-OUT.
Ithebula elingezansi libonisa ukusetshenziswa okuhlukene kwamaphoyinti okugcina.
Ithebula - Ukusetshenziswa kwe-MSC Endpoint
Iphoyinti lokugcina
Control IN Control OUT Bulk IN Bulk OUT
Isiqondiso
Idivayisi ukuze isingathe umsingathi kudivayisi yedivayisi ukuze isingathe umsingathi kudivayisi
Ukusetshenziswa
Izicelo zokubala kanye nekilasi le-MSC Izibalo kanye nezicelo zekilasi ze-MSC Thumela i-CSW kanye nedatha Thola i-CBW nedatha
Izicelo Zekilasi
Kunezicelo ezimbili ezichaziwe zokulawula zephrothokholi ye-MSC BOT. Lezi zicelo nezincazelo zazo zichazwe kabanzi kulelithebula elingezansi.
Ithebula – Izicelo Zekilasi Lokugcina Isitoreji
Izicelo Zekilasi
Ukusetha Kabusha Isitoreji Esiyinqwaba Kuphela
Incazelo
Lesi sicelo sisetshenziselwa ukusetha kabusha idivayisi yesitoreji esiningi kanye nesixhumi esibonakalayo esihlotshaniswa nayo. Lesi sicelo sifunda idivayisi ukuze yamukele umyalo olandelayo wokuvinjwa.
Copyright © 2025 Silicon Laboratories. Wonke Amalungelo Agodliwe.
44/174
Kuphelileview
Izicelo Zekilasi
Incazelo
Thola Ubukhulu Lesi sicelo sisetshenziselwa ukubuyisela inombolo yeyunithi enengqondo (LUN) esekelwa idivayisi. Okwesiboneloample, a
I-LUN
idivayisi ene-LUN 0 kanye ne-LUN 1 izobuyisela inani elingu-1. Idivayisi eneyunithi eyodwa enengqondo izobuyisela u-0 noma imise
isicelo. Inani eliphakeme elingabuyiswa lingu-15.
I-Small Computer System Interface SCSI
Ezingeni lokusebenzelana kwezinhlelo, idivayisi ye-MSC isebenzisa enye yezimiso ezijwayelekile zokuxhumana zesitoreji nemidiya, njenge-SCSI ne-SFF-8020i (ATAPI). "I-Programming Interface" icacisa ukuthi iyiphi iphrothokholi esetshenziswayo, futhi isiza isistimu yokusebenza yomsingathi ukulayisha umshayeli wedivayisi ofanelekile ukuze axhumane nedivayisi yesitoreji se-USB. I-SCSI iwumthetho olandelwayo osetshenziswa kakhulu namadivayisi esitoreji se-USB MSC. Sihlinzeka ngokusetshenziswa kwe-MSC SCSI subclass abasebenzisi bethu be-GSDK abangakusebenzisa ngaphandle kwebhokisi.
I-SCSI iqoqo lamazinga okuphatha ukuxhumana phakathi kwamakhompiyutha kanye namadivayisi axhumene ne-peripheral. Lawa mazinga afaka imiyalo, amaphrothokholi, izixhumanisi zikagesi nezixhumi ezibonakalayo. Imishini yokugcina esebenzisa ezinye izixhumanisi zezingxenyekazi zekhompuyutha, njenge-USB, zisebenzisa imiyalo ye-SCSI ukuthola ulwazi lwedivayisi/umsingathi kanye nokulawula ukusebenza kwedivayisi kanye nokudlulisa amabhulokhi wedatha kumidiya yokugcina.
Imiyalo ye-SCSI ihlanganisa uhla olukhulu lwezinhlobo zedivayisi nemisebenzi futhi ngenxa yalokho, amadivaysi adinga isethi engaphansi yale miyalo. Ngokuvamile, imiyalo elandelayo iyadingeka ekuxhumaneni okuyisisekelo:
UMBUZO FUNDA AMANDLA(10) FUNDA(10) CELA IPHITHI LOKUHLOLA IMIZWA ILUNGELE UKUBHALA(10)
Izidingo Zensiza Yekilasi Yedivayisi ye-USB ye-MSC evela ku-Core
Ngaso sonke isikhathi uma ungeza isibonelo sekilasi le-MSC ekucushweni kwe-USB usebenzisa umsebenzi sl_usbd_msc_add_to_configuration() , izinsiza ezilandelayo zizokwabiwa kusukela kungqikithi.
Insiza
I-interfaces Enye indawo yokusebenzelana Amaqembu e-Endpoints Interface
Ubuningi
1 1 2 0
Qaphela ukuthi lezo zinombolo zingokucushwa ngakunye. Uma usetha amanani akho okumisa i-SL_USBD_INTERFACE_QUANTITY , SL_USBD_ALT_INTERFACE_QUANTITY , SL_USBD_INTERFACE_GROUP_QUANTITY kanye ne-SL_USBD_DESCRIPTOR_QUANTITY amanani okucushwa, ungakhohlwa ukucabangela ukuthi zingaki izilungiselelo ezizongezwa ikilasi. Ngokwevelu yokucushwa kwe-SL_USBD_OPEN_ENDPOINTS_QUANTITY, njengoba izindawo zokugcina zivulwa kuphela uma ukulungiselelwa kusethwa umsingathi, udinga nje ukucabangela inani lamaphoyinti okugcina adingekayo kusenzakalo sekilasi.
Ukucushwa Kwekilasi Ledivayisi ye-USB ye-MSC
Amaqembu amabili amapharamitha wokumisa asetshenziswa ukulungisa isigaba se-MSC:
Isicelo Sekilasi Ledivayisi ye-USB ye-MSC-Ukucushwa okukhethekile Idivayisi ye-USB Ikilasi le-MSC Ukucushwa Kweyunithi Enengqondo
I-USB Device MSC Class Application-Specific Configurations
I-Class Compile-Time Configurations Class Instance Creation
Copyright © 2025 Silicon Laboratories. Wonke Amalungelo Agodliwe.
45/174
Kuphelileview
I-Class Compile-Time Configurations
Ikilasi le-Silicon Labs USB Device MSC kanye ne-SCSI subclass kuyalungiseka ngesikhathi sokuhlanganiswa nge-#defines etholakala ku-sl_usbd_core_config.h file.
Ithebula – I-Generic Configuration Constants
Igama lokucushwa
Incazelo
SL_USBD_MSC_CLASS_INST Inombolo yezimo zekilasi ozozaba ngocingo lomsebenzi
ANCE_QUANTITY
sl_usbd_msc_scsi_create_instance() .
SL_USBD_MSC_CONFIGURA Inombolo yokucushwa lapho isenzakalo sekilasi singengezwa khona ngokushaya ucingo
TION_QUANTITY
umsebenzi sl_usbd_msc_scsi_add_to_configuration() .
SL_USBD_MSC_LUN_QUANT Inombolo yamayunithi anengqondo esigabeni ngasinye ozowengeza ngocingo ku-
I-ITY
umsebenzi sl_usbd_msc_scsi_lun_add() .
I-SL_USBD_MSC_SCSI_64_BIT Inika amandla noma ikhubaza usekelo Lwekheli Lokuvimba Okunengqondo (LBA) lamabhithi angu-64.
_LBA_EN
SL_USBD_MSC_DATA_BUFF Usayizi webhafa yedatha ngesigaba ngasinye ngamabhayithi ER_SIZE
Inani elizenzakalelayo
2
1
2
0
512
I-Class Instance Creation
Ukudala isibonelo sekilasi ledivayisi ye-USB ye-MSC SCSI kwenziwa ngokubiza umsebenzi we-sl_usbd_msc_scsi_create_instance(). Lo msebenzi uthatha i-agumenti yokumisa eyodwa echazwe ngezansi.
p_scsi_callbacks
I-p_scsi_callbacks iyisikhombi esakhiweni sokumisa sohlobo sl_usbd_msc_scsi_callbacks_t . Ngokungeziwe ekushayeleni emuva kwekilasi ledivayisi ye-usb evamile ukuxhuma/ukunqamula, kunikeza ikilasi le-MSC isethi yemisebenzi yokuzithandela ebizwa ngokuthi uma isigameko senzeka kuyunithi enengqondo. Isikhombi esingenalutho ( NULL ) singadluliswa kule mpikiswano uma kungekho ukuphinda ushayele okudingekayo.
Ithebula elingezansi lichaza inkambu yokumisa ngayinye etholakalayo kulesi sakhiwo sokumisa.
Ithebula – sl_usbd_msc_scsi_callbacks_t Isakhiwo Sokulungiselela
Izinkambu
Incazelo
.vumela
Ibizwa uma isenzakalo sekilasi le-USB sinikwe amandla ngempumelelo.
.khubaza Ishayelwe uma isenzakalo sekilasi le-USB sikhutshaziwe.
.host_eject Umsebenzi obizwa lapho iyunithi enengqondo ikhishwa kumsingathi.
Isiginesha Yomsebenzi
uhlelo lokusebenza olungenalutho_usbd_msc_scsi_enable(uint8_t class_nbr);
uhlelo lokusebenza olungenalutho_usbd_msc_scsi_disable(uint8_t class_nbr); uhlelo lokusebenza olungenalutho_usbd_msc_scsi_host_eject(uint8_t class_nbr, uint8_t lu_nbr);
Ukucushwa kweyunithi ye-USB yedivayisi ye-MSC Yekilasi Enengqondo
Ukwengeza iyunithi enengqondo esimweni sekilasi le-MSC kwenziwa ngokubiza umsebenzi sl_usbd_msc_lun_add() . Lo msebenzi uthatha i-agumenti yokumisa eyodwa echazwe ngezansi.
p_lu_info
I-p_lu_info iyinkomba yesakhiwo sohlobo sl_usbd_msc_scsi_lun_info_t . Inhloso yawo ukuhlinzeka ngolwazi lweyunithi enengqondo ekilasini le-MSC.
Ithebula elingezansi lichaza inkambu yokumisa ngayinye etholakalayo kulesi sakhiwo sokumisa.
Ithebula – sl_usbd_msc_scsi_lun_info_t Ukumisa Isakhiwo
Copyright © 2025 Silicon Laboratories. Wonke Amalungelo Agodliwe.
46/174
Kuphelileview
Inkambu
Incazelo
Inkambu
.scsi_lun_api_p tr
Incazelo
Isikhombi ku-API yomshayeli wemidiya ezophatha le yunithi enengqondo. Bona Izishayeli Zesitoreji Sekilasi Ledivayisi ye-USB ye-MSC ukuze uthole ulwazi olwengeziwe mayelana nezishayeli zesitoreji.
.ve n o r_id _ p tr
.product_id_ptr
.p ro d uct_ re v isi on_level .is_ ad _o kuphela
Khomba iyunithi yezinhlamvu equkethe ukuhlonza umthengisi weyunithi enengqondo. Ubude obukhulu beyunithi yezinhlamvu yizinhlamvu ezingu-8. Khomba iyunithi yezinhlamvu equkethe ukuhlonza umkhiqizo weyunithi enengqondo. Ubude obukhulu beyunithi yezinhlamvu yizinhlamvu eziyi-16. Izinga lokubuyekezwa komkhiqizo.
Maka okubonisa uma iyunithi enengqondo kufanele ibonakale njengefundwa kuphela endaweni ye view womsingathi ( weqiniso ) noma cha ( amanga ).
I-USB yedivayisi ye-MSC Class Programming Guide
Lesi sigaba sichaza indlela yokusebenzisa ikilasi le-MSC.
Ukuqalisa Ikilasi Ledivayisi ye-USB ye-MSC Yengeza Idivayisi Ye-USB I-MSC SCSI Class Instance kudivayisi yakho ye-USB Kudivayisi ye-MSC Yekilasi Lokuphatha Iyunithi Enengqondo
Iqalisa Ikilasi Ledivayisi ye-USB ye-MSC
Ukuze ungeze ukusebenza kwekilasi le-MSC SCSI kudivayisi yakho, qala ngokuqalisa isigaba sesisekelo se-MSC kanye nesigaba esingaphansi se-SCSI ngokubiza umsebenzi sl_usbd_msc_init() kanye no-sl_usbd_mscsi_init() .
I-example ngezansi ibonisa indlela yokubiza sl_usbd_msc_init() kanye sl_usbd_msc_scsi_init() .
Example - Ishayela u-sl_usbd_msc_init() kanye no-sl_usbd_msc_scsi_init()
sl_status_t isimo;
isimo = sl_usbd_msc_init(); uma (isimo ! SL_STATUS_OK) {/* Kwenzeke iphutha. Ukuphatha iphutha kufanele kwengezwe lapha. */
}
isimo = sl_usbd_msc_scsi_init(); uma (isimo ! SL_STATUS_OK) {/* Kwenzeke iphutha. Ukuphatha iphutha kufanele kwengezwe lapha. */
}
Ukwengeza Idivayisi ye-USB ye-MSC SCSI Class Instance kudivayisi yakho
Ukuze ungeze ukusebenza kwekilasi le-MSC SCSI kudivayisi yakho, qala udale isenzakalo, bese uyengeza ekucushweni kwedivayisi yakho. Kufanele wengeze okungenani iyunithi eyodwa enengqondo esimweni sakho.
Ukudala i-MSC SCSI Class Instance
Dala isibonelo sekilasi le-MSC SCSI ngokubiza umsebenzi sl_usbd_msc_scsi_create_instance() .
I-example ngezansi ikhombisa indlela yokubiza sl_usbd_msc_create_instance() usebenzisa izimpikiswano ezizenzakalelayo. Ukuze uthole ulwazi olwengeziwe ngama-agumenti okumisa azodlulela ku-sl_usbd_msc_scsi_create_instance() , bheka Ukulungiselelwa Okuqondile Kwekilasi Ledivayisi ye-USB ye-MSC .
Example – Ishayela u-sl_usbd_ msc_scsi_create_instance()
Copyright © 2025 Silicon Laboratories. Wonke Amalungelo Agodliwe.
47/174
Kuphelileview
uint8_t class_nbr; sl_status_t isimo;
sl_usbd_msc_scsi_callbacks_t app_usbd_msc_scsi_callbacks = { .vula = NULL, .khubaza = NULL, .host_eject = NULL };
isimo = sl_usbd_msc_scsi_create_instance(&app_usbd_msc_callbacks,0 &class_nbr);
uma (isimo ! SL_STATUS_OK) {/* Kwenzeke iphutha. Ukuphatha iphutha kufanele kwengezwe lapha. */}
Ukwengeza I-MSC Class Instance Ekucushweni Kwedivayisi Yakho
Ngemuva kokuthi udale isibonelo sekilasi le-MSC, ungayengeza ekucushweni ngokubiza umsebenzi
sl_usbd_msc_add_to_configuration() .
I-exampLe ngezansi ikhombisa indlela yokubiza sl_usbd_msc_add_to_configuration() usebenzisa izimpikiswano ezizenzakalelayo.
Example – Ishayela u-sl_usbd_ msc_scsi_add_to_configuration()
sl_status_t isimo;
isimo = sl_usbd_msc_scsi_add_to_configuration(class_nbr,
(1)
config_nbr_fs);
(2)
uma (isimo ! SL_STATUS_OK) {
/* Kwenzeke iphutha. Ukuphatha iphutha kufanele kwengezwe lapha. */
}
(1) Inombolo yekilasi ezongezwa ekucushweni ibuyiselwe ngu-sl_usbd_msc_scsi_create_instance() . (32) Inombolo yokumisa (lapha ingeza ekucushweni kwe-Full-Speed).
Ukuphathwa kweyunithi ye-USB yedivayisi ye-MSC Yekilasi Enengqondo
Ukungeza Iyunithi Enengqondo Ukunamathisela/Ukukhipha Indawo Yesitoreji
Ukwengeza Iyunithi Enengqondo
Uma wengeza iyunithi enengqondo esibonelweni sakho sekilasi le-MSC SCSI, kufanele iboshwe endaweni yokugcina (RAMDisk, ikhadi le-SD, imemori ye-flash, njll). Ikilasi le-MSC lisebenzisa umshayeli wesitoreji ukuxhumana nemidiya yesitoreji. Lo mshayeli uzodinga ukuhlinzekwa lapho wengeza iyunithi enengqondo.
I-example ngezansi ikhombisa indlela yokwengeza iyunithi enengqondo nge-sl_usbd_msc_scsi_lun_add() .
Example - Ukwengeza Iyunithi Enengqondo nge-sl_usbd_msc_scsi_lun_add()
Copyright © 2025 Silicon Laboratories. Wonke Amalungelo Agodliwe.
48/174
Kuphelileview
sl_usbd_msc_scsi_lun_t *lu_object_ptr = NULL;
sl_usbd_msc_scsi_lun_info_t lu_info;
sl_isimo_t
isimo;
lu_info.sl_usbd_msc_scsi_lun_api_t = &app_usbd_scsi_storage_block_device_api;
lu_info.vendor_id_ptr
= “Amalebhu eSilicon”;
lu_info.product_id_ptr
= "vimba idivayisi example”;
lu_info.product_revision_level = 0x1000u;
lu_info.ifundwa_kuphela
= amanga;
isimo = sl_usbd_msc_scsi_lun_add(class_nbr, &lu_info, &lu_object_ptr);
uma (isimo ! SL_STATUS_OK) {/* Kwenzeke iphutha. Ukuphatha iphutha kufanele kwengezwe lapha. */}
Ukunamathisela/Ukukhipha Indawo Yesitoreji
Ngemuva kokuthi iyunithi enengqondo yengeziwe, indawo yokugcina kufanele ifakwe ukuze itholakale ohlangothini lokusingatha. Isigaba se-MSC sinikeza imisebenzi emibili yokulawula ukuhlobana kwemidiya yesitoreji kuyunithi enengqondo: sl_usbd_msc_scsi_lun_attach() kanye ne-sl_usbd_msc_scsi_lun_detach() . Le misebenzi ikuvumela ukuthi ulingise ukukhishwa kwedivayisi yesitoreji ukuze uphinde uthole ukufinyelela ohlelweni olushumekiwe uma kudingeka.
I-example ngezansi ibonisa indlela yokusebenzisa umsebenzi sl_usbd_msc_scsi_lun_attach() kanye no-sl_usbd_msc_scsi_lun_detach() .
Example – Namathisela imidiya/Nqamula
sl_status_t isimo;
isimo = sl_usbd_msc_scsi_lun_attach(lu_object_ptr); uma (isimo ! SL_STATUS_OK) {/* Kwenzeke iphutha. Ukuphatha iphutha kufanele kwengezwe lapha. */
}
…
(1)
isimo = sl_usbd_msc_scsi_lun_detach(lu_object_ptr); uma (isimo ! SL_STATUS_OK) {
/* Kwenzeke iphutha. Ukuphatha iphutha kufanele kwengezwe lapha. */
}
…
(2)
isimo = sl_usbd_msc_scsi_lun_attach(lu_object_ptr) uma (isimo ! SL_STATUS_OK) {
/* Kwenzeke iphutha. Ukuphatha iphutha kufanele kwengezwe lapha. */
}
…
(3)
(1) Kusukela kulo mzuzu, uma idivayisi ye-MSC ixhunywe kumsingathi, imidiya yokugcina iyafinyeleleka.
(2) Uma idivayisi ye-MSC ixhunywe kumsingathi, imidiya manje izovela njengengatholakali. Ngalesi sikhathi, imisebenzi ingenziwa kwabezindaba kusuka kuhlelo lokusebenza olushumekiwe.
(3) Futhi, uma idivayisi ye-MSC ixhunywe kumsingathi, imidiya yokugcina izovela njengexhunyiwe.
Abashayeli Besitoreji Sekilasi Ledivayisi ye-USB ye-MSC
Ikilasi Ledivayisi ye-USB ye-MSC idinga umshayeli wesitoreji ukuze axhumane ngendawo yokubeka. Okwamanje, i-Silicon Labs ayinikezi abashayeli.
Copyright © 2025 Silicon Laboratories. Wonke Amalungelo Agodliwe.
49/174
Kuphelileview
I-TPY aa umshayeli we-AI ichazwa ngo-typedef sl_usbd_msc_scsi_lun_api_t . I-sl_usbd_msc_scsi_lun_api_t v rible yethu kufanele ifakwe ku-aaaaaaaa i-sl_usbd_msc_scsi_lun_info_t v ri ble yakho, i-p ssed s rgument lapho ufaka iyunithi ye-logic nge-sl_usbd_msc_scsi_lun_a. Bheka isigaba se-USB Device MSC SCSI API ukuze uthole imininingwane eyengeziwe ngezakhiwo. Ukuqaliswa komshayeli wesitoreji kungaba lula njengohlu lwemikhakha ku-RAM. Usayizi womkhakha ojwayelekile (okungukuthi, usayizi webhulokhi) ungu-512 kumadivayisi esitoreji esiningi, kanye no-2048 wama-CD-ROM.
Copyright © 2025 Silicon Laboratories. Wonke Amalungelo Agodliwe.
50/174
Kuphelileview
Kuphelileview
Ikilasi Lomthengisi Wedivayisi ye-USB
Ikilasi Lomthengisi Wedivayisi ye-USB Liphelileview Izidingo Zekilasi Lomthengisi Wedivayisi ye-USB Izidingo Zekilasi Lomthengisi Wedivayisi Ye-USB Eyisisekelo Umhlahlandlela Wokuhlela Ikilasi Lomthengisi Wedivayisi ye-USB Ikilasi Lomthengisi likuvumela ukuthi wakhe amadivayisi aqondene nomthengisi angasebenzisa iphrothokholi yobunikazi. Incike kumaphoyinti okugcina enqwaba ukuze idlulise idatha phakathi komsingathi nedivayisi. Ukudluliswa kwenqwaba kulungele ukudlulisa amanani amakhulu edatha engahlelekile futhi kunikeze ukushintshana okuthembekile kwedatha ngokusebenzisa indlela yokuthola iphutha bese uzama kabusha. Ngokungeziwe kumaphoyinti okugcina enqwaba, ikilasi Lomthengisi lingaphinda lisebenzise ipheya yokuzithandela yamaphoyinti okuphela aphazamisayo. Noma iyiphi isistimu yokusebenza (OS) ingasebenza nekilasi Lomthengisi inqobo nje uma i-OS inomshayeli wokusingatha ikilasi Lomthengisi. Kuye nge-OS, umshayeli angaba owomdabu noma aqondene nomthengisi. Ngokwesibonelo, ngaphansi kwe-Microsoft Windows®, uhlelo lwakho lokusebenza lusebenzisana nomshayeli we-WinUSB onikezwe i-Microsoft ukuze axhumane nedivayisi yomthengisi.
Ikilasi Lomthengisi Wedivayisi ye-USB Liphelileview
Umfanekiso – Isakhiwo Esivamile Phakathi Kwe-Windows Host kanye Nekilasi Lomthengisi sibonisa ukwakheka okuvamile phakathi komsingathi kanye nedivayisi kusetshenziswa isigaba Somthengisi. Kulesi exampNokho, uhlelo lokusebenza lomsingathi yi-MS Windows.
Umfanekiso - Isakhiwo Esijwayelekile Phakathi Kwe-MS Windows Host kanye Nekilasi Lomthengisi
Ohlangothini lwe-MS Windows, uhlelo lokusebenza luxhumana nedivayisi yomthengisi ngokusebenzisana nelabhulali ye-USB. Amalabhulali, njenge-libusb, anikezela nge-API yokuphatha idivayisi namapayipi ayo ahlobene, nokuxhumana nedivayisi ngokulawula, inqwaba nokuphazamisa amaphoyinti.
Ohlangothini lwedivayisi, ikilasi Lomthengisi lakhiwe amaphoyinti wokugcina alandelayo:
Ipheya yokulawula IN kanye ne-OUT endpoints ebizwa ngokuthi i-endpoint ezenzakalelayo. Ipheya yenqwaba yezindawo zokugcina ezingu-IN kanye ne-OUT.
Copyright © 2025 Silicon Laboratories. Wonke Amalungelo Agodliwe.
51/174
Kuphelileview
Ipheya yokuphazamiseka kwe-IN kanye ne-OUT endpoints. Lokhu kubhangqa kuyinketho. Ithebula elingezansi libonisa ukusetshenziswa kweziphetho ezahlukene:
Ithebula - Ukusetshenziswa Kwamaphuzu Okuphela Kwekilasi Lomthengisi
I-Endpoint Direction
Lawula IN
Lawula
PHUMA
Inqwaba IN
Ukusingatha idivayisi
>Idivayisi yokusingatha
Ukusingatha idivayisi
Inqwaba OUT
Phakamisa IN
Phakamisa
PHUMA
I-Host-todevice
Ukusingatha idivayisi
I-Host-todevice
Ukusetshenziswa
Izicelo ezijwayelekile zokubala kanye nezicelo eziqondene nomthengisi.
Izicelo ezijwayelekile zokubala kanye nezicelo eziqondene nomthengisi.
Ukuxhumana kwedatha okungahluziwe. Idatha ingahlelwa ngokuya ngephrothokholi yobunikazi.
Ukuxhumana kwedatha okungahluziwe. Idatha ingahlelwa ngokuya ngephrothokholi yobunikazi.
Ukuxhumana kwedatha eluhlaza noma isaziso. Idatha ingahlelwa ngokuya ngephrothokholi yobunikazi. Ukuxhumana kwedatha eluhlaza noma isaziso. Idatha ingahlelwa ngokuya ngephrothokholi yobunikazi.
Uhlelo lokusebenza lwedivayisi lungasebenzisa iziphetho eziningi futhi luphazamise ukuthumela noma ukwamukela idatha kuya noma kusuka kumsingathi. Ingasebenzisa kuphela indawo yokugcina ezenzakalelayo ukuze inqume izicelo eziqondene nomthengisi ezithunyelwe umsingathi. Izicelo ezijwayelekile ziphathwa ngaphakathi isendlalelo se-Core se-Silicon Labs USB Device.
Izidingo Zekilasi Lomthengisi Wedivayisi ye-USB kusuka ku-Core
Ngaso sonke isikhathi uma ungeza isibonelo sekilasi lomthengisi ekucushweni usebenzisa umsebenzi sl_usbd_vendor_add_to_configuration() , izinsiza ezilandelayo zizonikezwa kusukela kungqikithi.
Insiza
I-interfaces Enye indawo yokusebenzelana Amaqembu e-Endpoints Interface
Ubuningi
1 1 2 (4 uma unike amandla iziphetho zokuphazamiseka) 0
Qaphela ukuthi lezo zinombolo zingokucushwa ngakunye. Uma usetha amanani akho okumisa i-SL_USBD_INTERFACE_QUANTITY , SL_USBD_ALT_INTERFACE_QUANTITY , SL_USBD_INTERFACE_GROUP_QUANTITY kanye ne-SL_USBD_DESCRIPTOR_QUANTITY amanani okucushwa, ungakhohlwa ukucabangela ukuthi zingaki izilungiselelo ezizongezwa ikilasi. Ngokwevelu yokucushwa kwe-SL_USBD_OPEN_ENDPOINTS_QUANTITY, njengoba izindawo zokugcina zivulwa kuphela uma ukulungiselelwa kusethwa umsingathi, udinga nje ukucabangela inani lamaphoyinti okugcina adingekayo kusenzakalo sekilasi.
Ukucushwa Kwekilasi Lomthengisi Wedivayisi ye-USB
Amaqembu amabili amapharamitha wokumisa asetshenziselwa ukulungisa isigaba somthengisi:
Isicelo Sekilasi Lomthengisi Wedivayisi ye-USB-Ukulungiselelwa Okuqondile Ukulungiselelwa Kwekilasi Lomthengisi Wedivayisi ye-USB
I-USB Device Class Application-Specific Configurations
Okokuqala, ukusebenzisa imojuli yekilasi Lomthengisi wedivayisi ye-Silicon Labs, lungisa ukucushwa kweqoqo lesikhathi somthengisi kuchaza ngokwezidingo zakho zohlelo lokusebenza. Ahlanganiswe kabusha ngaphakathi kwesihloko esithi sl_usbd_core_config.h file ngaphansi kwesigaba Somthengisi. Inhloso yokucushwa kwenani ukwazisa imojuli yedivayisi ye-USB mayelana nokuthi zingaki izinto ezizonikezwa Umthengisi we-USB.
Ithebula elingezansi lichaza ukucushwa ngakunye okuchazwayo.
Copyright © 2025 Silicon Laboratories. Wonke Amalungelo Agodliwe.
52/174
Kuphelileview
Ithebula - Ukucushwa Komthengisi Wedivayisi ye-USB Kuyachaza
Igama lokucushwa
Incazelo
Inani elizenzakalelayo
SL_USBD_VENDOR_CLASS_INSTANCE_QUANTITY Inombolo yezimo zekilasi ozozaba ngocingo kumsebenzi ongu-2 sl_usbd_vendor_create_instance() .
SL_USBD_VENDOR_CONFIGURATION_QUANTITY Inombolo yokucushwa. Izimo zesigaba somthengisi zingangezwa okungu-1 ekucushweni okukodwa noma ngaphezulu ngekholi kumsebenzi othi sl_usbd_vendor_add_to_configuration() .
Ukulungiselelwa Kwekilasi Lomthengisi Wedivayisi ye-USB
Lesi sigaba sichaza ukulungiselelwa okuhlobene nezimo zekilasi Lomthengisi.
I-Class Instance Creation intr_en interval p_vendor_callbacks
I-Class Instance Creation
Ukudala isibonelo sekilasi Lomthengisi kwenziwa ngokubiza umsebenzi sl_usbd_vendor_create_instance() , okuthatha izimpikiswano ezintathu zokumisa ezichazwe ngezansi.
intr_zu
I-boolean ekhombisa uma ipheya yeziphetho eziphazamisayo kufanele zengezwe noma cha.
Inani
amanga eqiniso
Incazelo
Ipheya yezindawo zokugcina ezingu-IN/OUT zizokwengezwa futhi zenziwe zitholakale kuhlelo lokusebenza olushumekiwe. Ayikho iphoyinti lokugcina elizokwengezwa. Ipheya kuphela ye-Bulk IN/OUT endpoint izotholakala.
isikhawu
Uma usetha okuthi intr_en kuthi iqiniso , ungacacisa umkhawulo wokuvota wamaphoyinti okugcina (ngama-millisecond). Uma usetha okuthi intr_en kumanga , ungasetha isikhawu sibe ngu-0 njengoba isigaba sizokuzitshwa.
p_vendor_callbacks
p_vendor_callbacks iyisikhombi sokuguquguquka kwesakhiwo se-callback. ongayicacisa ukuze uphathe izicelo zokulawula eziqondile zekilasi. Uma ungasebenzisi noma yiziphi izicelo zekilasi ezithile noma izidingo zinike amandla/khubaza isaziso, ungasetha lokhu kokuthi NULL .
I-example ngezansi inikeza isiginesha elindelwe yesibambi sezicelo zekilasi lakho.
Example – Isiginesha Yomsebenzi Wesicelo Esikhethekile Sekilasi
uhlelo lokusebenza olungenalutho_usbd_vendor_req_handle(uint8_t
class_nbr, (1)
const sl_usbd_setup_req_t *p_setup_req); (2)
sl_usbd_vendor_callbacks_t app_usbd_vendor_callback_functions =
{
.vula = NULL, .khubaza = NULL, .setup_req = app_usbd_vendor_req_handle,
};
(1) Inombolo yesibonelo sekilasi lomthengisi.
Copyright © 2025 Silicon Laboratories. Wonke Amalungelo Agodliwe.
53/174
Kuphelileview
(2) Isikhombi esicelweni sokusetha esamukelwe esivela kumsingathi.
Umhlahlandlela Wokuhlela Wekilasi Lomthengisi Wedivayisi ye-USB
Lesi sigaba sichaza indlela yokusebenzisa ikilasi Lomthengisi. Ukuqalisa Ikilasi Lomthengisi Wedivayisi ye-USB Ukwengeza Isimo Sekilasi Lomthengisi Wedivayisi ye-USB kudivayisi yakho Ixhumana kusetshenziswa Ikilasi Lomthengisi Wedivayisi ye-USB
Iqalisa Ikilasi Lomthengisi Wedivayisi ye-USB
Ukuze ungeze ukusebenza Kwekilasi Lomthengisi kudivayisi yakho, qala uqalise ikilasi ngokushayela umsebenzi USBD_Vendor_Init(). I-example ngezansi ikhombisa indlela yokubiza sl_usbd_vendor_init() .
Example - Ishayela i-sl_usbd_vendor_init()
sl_status_t isimo;
isimo = sl_usbd_vendor_init(); uma (isimo ! SL_STATUS_OK) {/* Kwenzeke iphutha. Ukuphatha iphutha kufanele kwengezwe lapha. */}
Ukwengeza I-USB Device Class Instance kudivayisi yakho
Ukuze ungeze ukusebenza kwesigaba somthengisi kudivayisi yakho, kufanele uqale udale isenzakalo, bese usingeza ekucushweni kwedivayisi yakho.
Ukudala Isimo Sekilasi Lomthengisi Kwengeza Isimo Sekilasi Lomthengisi Ekucushweni Kwedivayisi Yakho (s)
Ukudala Isimo Sekilasi Lomthengisi
Dala isibonelo sekilasi Lomthengisi ngokubiza umsebenzi sl_usbd_vendor_create_instance() . I-example ngezansi ikhombisa indlela yokubiza sl_usbd_vendor_create_instance() usebenzisa izimpikiswano ezizenzakalelayo. Ukuze uthole ulwazi olwengeziwe mayelana nama-agumenti okumisa okufanele adlulele ku-sl_usbd_vendor_create_instance() , bona Ukulungiselelwa Kwekilasi Lomthengisi Wedivayisi ye-USB.
Example - Ukushayela i-sl_usbd_vendor_create_instance()
uint8_t class_nbr; sl_status_t isimo;
isimo = sl_usbd_vendor_create_instance(amanga,
(1)
0u,
(2)
app_usbd_vendor_callback_functions, (3)
&class_nbr);
uma (isimo ! SL_STATUS_OK) {
/* Kwenzeke iphutha. Ukuphatha iphutha kufanele kwengezwe lapha. */
}
(1) Azikho iziphetho eziphazamisayo ngalesi senzakalo sekilasi. (2) Isikhawu asinakwa njengoba izindawo zokugcina eziphazamisayo zikhutshaziwe.
Copyright © 2025 Silicon Laboratories. Wonke Amalungelo Agodliwe.
54/174
Kuphelileview
(3) Umsebenzi wokuphinda ushaye oyingxenye yohlelo lwakho lokusebenza olusingatha izicelo zekilasi eziqondene nomthengisi. Bona Ukuxhumana usebenzisa Ikilasi Lomthengisi Wedivayisi ye-USB ukuze uthole ulwazi olwengeziwe. Ukwengeza Isimo Sekilasi Lomthengisi Ekucushweni Kwedivayisi Yakho Ngemva kokuthi udale isibonelo sekilasi lomthengisi, ungasengeza ekucushweni ngokubiza umsebenzi USBD_Vendor_ConfigAdd(). I-example ngezansi ikhombisa indlela yokubiza sl_usbd_vendor_add_to_configuration() usebenzisa izimpikiswano ezizenzakalelayo.
Example - Ishayela i-sl_usbd_vendor_add_to_configuration()
sl_status_t isimo;
isimo = sl_usbd_vendor_add_to_configuration(class_nbr,
(1)
config_nbr_fs);
(2)
uma (isimo ! SL_STATUS_OK) {
/* Kwenzeke iphutha. Ukuphatha iphutha kufanele kwengezwe lapha. */
}
(1) Inombolo yekilasi ezongezwa ekucushweni ibuyiselwe ngu-sl_usbd_vendor_create_instance() . (2) Inombolo yokumisa (lapha ingeza ekucushweni kwe-Full-Speed).
Ukuxhumana Ngokusebenzisa Ikilasi Lomthengisi Wedivayisi ye-USB
Ukuxhumana Okujwayelekile Okuvumelanayo Okuvumelanayo Isicelo Esijwayelekile Somthengisi Wokuxhumana Isigaba Somthengisi sinikeza imisebenzi elandelayo ukuze uxhumane nomsingathi. Ukuze uthole imininingwane eyengeziwe mayelana namapharamitha omsebenzi, bona I-API Yedivayisi Yokuthengisa Yedivayisi.
Ithebula - Isifinyezo se-API Yokuxhumana Nomthengisi
Igama lomsebenzi
sl_usb d _v e nd o r_ re ad _b ulk_sy nc() sl_usb d _v e nd o r_write _b ulk_sy nc() sl_usb d _v e nd o r_ re ad _b ulk_asy nc() sl_usb d _v e nd o r_write _b ulk_asy nc() sl_usb d _v e nd o r_ re ad _inte rrup t_sy nc() sl_usb d _v e nd o r_write _inte rrup t_sy nc() sl_usb d _v e nd o r_ re ad _inte rrup t_asy nc
()
sl_usb d _v e nd o r_write _inte rrup t_asy nc
()
Operation Receives data from host through bulk OUT endpoint. This function is blocking. Sends data to host through bulk IN endpoint. This function is blocking. Receives data from host through bulk OUT endpoint. This function is non-blocking. Sends data to host through bulk IN endpoint. This function is non-blocking. Receives data from host through interrupt OUT endpoint. This function is blocking. Sends data to host through interrupt IN endpoint. This function is blocking. Receives data from host through interrupt OUT endpoint. This function is non-
ukuvimba.
Sends data to host through interrupt IN endpoint. This function is non-blocking.
The vendor requests are also another way to communicate with the host. When managing vendor requests sent by the host, the application can receive or send data from or to the host using the control endpoint; you will need to provide an application callback passed as a parameter of sl_usbd_vendor_create_instance() . Synchronous Communication
Copyright © 2025 Silicon Laboratories. Wonke Amalungelo Agodliwe.
55/174
Kuphelileview
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
__KULUNGILE(4) uint8_t rx_buf[2];
__KULUNGILE(4) uint8_t tx_buf[2];
uint32_t
xfer_len;
sl_isimo_t
isimo;
status = sl_usbd_vendor_read_bulk_sync(class_nbr,
(1)
(void *)&rx_buf[0],
(2)
2u,
0u,
(3)
&xfer_len);
uma (isimo ! SL_STATUS_OK) {
/* $$$$ Phatha iphutha. */
}
status = sl_usbd_vendor_write_bulk_sync( class_nbr,
(1)
(void *)&tx_buf[0],
(4)
2u,
0u,
(3)
false,
(5)
&xfer_len);
uma (isimo ! SL_STATUS_OK) {
/* $$$$ Phatha iphutha. */
}
(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) Uhlelo lokusebenza luhlinzeka ngebhafa yokudlulisa eqalisiwe.
(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.
I-Asynchronous Communication
Asynchronous communication means that the transfer is non-blocking. When a function is called, the application passes the transfer information to the device stack and does not block. Other application processing can be done while the transfer is in progress over the USB bus. Once the transfer has completed, a callback function is called by the device stack to inform the application about the transfer completion. The example below shows asynchronous read and write.
Example – Asynchronous Bulk Read and Write
Copyright © 2025 Silicon Laboratories. Wonke Amalungelo Agodliwe.
56/174
Kuphelileview
void app_usbd_vendor_comm (uint8_t class_nbr)
{
__KULUNGILE(4) uint8_t rx_buf[2];
__KULUNGILE(4) uint8_t tx_buf[2];
sl_isimo_t
isimo;
status = sl_usbd_vendor_read_bulk_async(class_nbr,
(void *)&rx_buf[0],
(2)
2u,
app_usbd_vendor_rx_completed,
NULL);
(4)
uma (isimo ! SL_STATUS_OK) {
/* $$$$ Phatha iphutha. */
}
status = sl_usbd_vendor_write_bulk_async(class_nbr,
(void *)&tx_buf[0],
(5)
2u,
app_usbd_vendor_tx_completed,
AKUKHO,
(4)
false);
(6)
uma (isimo ! SL_STATUS_OK) {
/* $$$$ Phatha iphutha. */
}
}
(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)
{
uma (isimo ! SL_STATUS_OK) {
/* $$$$ Do some processing. */
} okunye {
/* $$$$ Phatha iphutha. */
}
}
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)
{
uma (isimo ! SL_STATUS_OK) {
/* $$$$ Do some processing. */
} okunye {
/* $$$$ Phatha iphutha. */
}
}
(1) The class instance number provides an internal reference to the Vendor class to route the transfer to the proper bulk OUT or IN endpoint. (2) The application must ensure that the buffer provided is large enough to accommodate all the data. Otherwise, there may be synchronization issues. (3) The application provides a callback function pointer passed as a parameter. Upon completion of the transfer, the device stack calls this callback function so that the application can finalize the transfer by analyzing the transfer result. For instance, on completion of a read operation, the application might perform processing on the received data. Upon write completion, the application can indicate if the write was successful and how many bytes were sent.
Copyright © 2025 Silicon Laboratories. Wonke Amalungelo Agodliwe.
57/174
Kuphelileview
(4) An argument associated with the callback can be also passed. Then in the callback context, some private information can be retrieved. (5) The application provides the initialized transmit buffer. (6) If this flag is set to true , and the transfer length is a multiple of the endpoint maximum packet size, the device stack will send a zero-length packet to the host to signal the end of transfer. The use of interrupt endpoint communication functions, sl_usbd_vendor_read_interrupt_async() and sl_usbd_vendor_write_interrupt_async() , is similar to the bulk endpoint communication functions presented in Example Asynchronous Bulk Read and Write.
Vendor Request
The USB 2.0 specification defines three types of requests: standard, class, and vendor. All standard requests are handled directly by the core layer, while class requests are managed by the proper associated class. Vendor requests can be processed by the vendor class. To process vendor requests, you must provide an application callback as a parameter of sl_usbd_vendor_create_instance() . After a vendor request is received by the USB device, it must be decoded properly. The example below shows vendor request decoding. Certain requests may be required to receive from or send to the host during the data stage of a control transfer. If no data stage is present, you only have to decode the Setup packet. This example shows the three types of data stage management: no data, data OUT and data IN.
Example – Vendor Request Decoding
Copyright © 2025 Silicon Laboratories. Wonke Amalungelo Agodliwe.
58/174
Kuphelileview
#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 isimo;
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;
okuzenzakalelayo:
(6)
// Request is not supported.
Copyright © 2025 Silicon Laboratories. Wonke Amalungelo Agodliwe.
59/174
Kuphelileview
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):
uhlobo lwe-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 khona.
*/
} sl_usbd_setup_req_t;
(2) Determine the request. You may use a switch statement if you are using different requests. In this example, there are three different requests corresponding to the three types of the data stage: APP_VENDOR_REQ_NO_DATA, APP_VENDOR_REQ_RECEIVE_DATA_FROM_HOST, and APP_VENDOR_REQ_SEND_DATA_TO_HOST.
(3) If no data stage is present, you only need to decode the other fields. The presence of a data stage or not is indicated by the field wLength being non-null or null.
(4) If the host sends data to the device, you must call the function sl_usbd_core_read_control_sync() . The buffer provided should be able to contain up to wLength bytes. If any error occurs, return false to the core that will stall the status stage of the control transfer, indicating to the host that the request cannot be processed. true is returned in case of success.
(5) If the host receives data from the device, you must call the function sl_usbd_core_write_control_sync() . If any error occurs, return false to the core that will stall the status stage of the control transfer, indicating to the host that the request cannot be processed. true is returned in case of success.
(6) In this example, all requests not recognized are marked by returning false to the core. This one will stall the data or status stage of the control transfer indicating to the host that the request is not supported.
The host sends vendor requests through a host vendor application. USb libraries, such as libusb, can be used to help you develop your custom host vendor application.
Copyright © 2025 Silicon Laboratories. Wonke Amalungelo Agodliwe.
60/174
API Documentation
API Documentation
API Documentation
Uhlu lwamamojula
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
Incazelo
USB Device API USB Device ACM API USB Device CDC API USB Device Core API USB Device HID API USB Device MSC API USB Device MSC SCSI API USB Device Vendor API
Copyright © 2025 Silicon Laboratories. Wonke Amalungelo Agodliwe.
61/174
USB Device API
USB Device API
USB Device API
USB Device API.
Amamojula
USB Device ACM API USB Device CDC API USB Device Core API USB Device HID API USB Device MSC API USB Device MSC SCSI API USB Device Vendor API
Copyright © 2025 Silicon Laboratories. Wonke Amalungelo Agodliwe.
62/174
USB Device ACM API
USB Device ACM API
USB Device ACM API
USB Device CDC ACM API.
Amamojula
a sl_usbd_cdc_ cm_line_coding_t sl_usbd_cdc_acm_callbacks_t
Imisebenzi
sl_status_t sl_status_t
sl_status_t sl_status_t sl_status_t
sl_isimo_t
sl_isimo_t
sl_isimo_t
sl_status_t sl_status_t sl_status_t sl_status_t sl_status_t
a sl_usbd_cdc_ cm_init(void)
GLOBAL VARIABLES.
ssll__uussbbdd__ccddcc__aaccmm__ccraellabtaec_kins_stta*npc_ea(cumin_tc1a6l_lbtalicnkes_,sutaintte8__int t*eprv_saul,bucinlats1s6__nt bcra)ll_mgmt_capabilities,
Add a new instance of the CDC ACM serial emulation subclass.
a a a a sl_usbd_cdc_ cm_ dd_to_configur tion(uint8_t subcl ss_nbr, uint8_t config_nbr)
Add a CDC ACM subclass class instance into USB device configuration.
a a sl_usbd_cdc_ cm_is_en bled(uint8_t subclass_nbr, bool *p_enabled)
Get the CDC ACM serial emulation subclass enable state.
a a a sl_usbd_cdc_ cm_re d(uint8_t subcl ss_nbr, uint8_t *p_buf, uint32_t buf_len, uint16_t timeout, uint32_t
*p_xfer_len) Receive data on the CDC ACM serial emulation subclass.
a a a a sl_usbd_cdc_ cm_re d_ sync(uint8_t subcl ss_nbr, uint8_t *p_buf, uint32_t buf_len, a a a a sl_usbd_cdc_ sync_function_t sync_fnct, void *p_ sync_ rg)
Receive data on the CDC ACM serial emulation subclass asynchronously.
a a sl_usbd_cdc_ cm_write(uint8_t subcl ss_nbr, uint8_t *p_buf, uint32_t buf_len, uint16_t timeout, uint32_t
*p_xfer_len) Send data on the CDC ACM serial emulation subclass.
a a a sl_usbd_cdc_ cm_write_ sync(uint8_t subcl ss_nbr, uint8_t *p_buf, uint32_t buf_len, a a a a sl_usbd_cdc_ sync_function_t sync_fnct, void *p_ sync_ rg)
Send data on the CDC ACM serial emulation subclass asynchronously.
a a a sl_usbd_cdc_ cm_get_line_control_st te(uint8_t subcl ss_nbr, uint8_t *p_line_ctrl)
Return the state of control lines.
a a a sl_usbd_cdc_ cm_get_line_coding(uint8_t subcl ss_nbr, sl_usbd_cdc_ cm_line_coding_t *p_line_coding)
Get the current state of the line coding.
a a a sl_usbd_cdc_ cm_set_line_coding(uint8_t subcl ss_nbr, sl_usbd_cdc_ cm_line_coding_t *p_line_coding)
Set a new line coding.
a a a sl_usbd_cdc_ cm_set_line_st te_event(uint8_t subcl ss_nbr, uint8_t events)
Set a line state event(s).
a a a a sl_usbd_cdc_ cm_cle r_line_st te_event(uint8_t subcl ss_nbr, uint8_t events)
Clear a line state event(s).
Copyright © 2025 Silicon Laboratories. Wonke Amalungelo Agodliwe.
63/174
USB Device ACM API
Amakhrosi
#define SL_USBD_CDC_ACM_NBR_NONE 255u
MODULE.
#define SL_USBD_CDC_ACM_PARITY_NONE 0u
PORT SETTINGS DEFINES.
#define SL_USBD_CDC_ACM_PARITY_ODD 1u #define SL_USBD_CDC_ACM_PARITY_EVEN 2u #define SL_USBD_CDC_ACM_PARITY_MARK 3u #define SL_USBD_CDC_ACM_PARITY_SPACE 4u #define SL_USBD_CDC_ACM_STOP_BIT_1 0u #define SL_USBD_CDC_ACM_STOP_BIT_1_5 1u #define SL_USBD_CDC_ACM_STOP_BIT_2 2u #define SL_USBD_CDC_ACM_CTRL_BREAK 0 01u
LINE EVENTS FLAGS DEFINES.
#define SL_USBD_CDC_ACM_CTRL_RTS 0 02u #define SL_USBD_CDC_ACM_CTRL_DTR 0 04u #define SL_USBD_CDC_ACM_STATE_DCD 0 01u #define SL_USBD_CDC_ACM_STATE_DSR 0 02u #define SL_USBD_CDC_ACM_STATE_BREAK 0 04u #define SL_USBD_CDC_ACM_STATE_RING 0 08u #define SL_USBD_CDC_ACM_STATE_FRAMING 0 10u #define SL_USBD_CDC_ACM_STATE_PARITY 0 20u #define SL_USBD_CDC_ACM_STATE_OVERUN 0 40u #define SL_USBD_CDC_ACM_CALL_MGMT_DEV 0 01u
CALL MANAGEMENT CAPABILITIES.
#define SL_USBD_CDC_ACM_CALL_MGMT_DATA_CCI_DCI 0 02u #define SL_USBD_CDC_ACM_CALL_MGMT_DATA_OVER_DCI 0 02u | 0 01u)
Function Documentation
sl_usbd_cdc_acm_init
sl_status_t sl_usbd_cdc_acm_init (void )
GLOBAL VARIABLES. Parameters
Copyright © 2025 Silicon Laboratories. Wonke Amalungelo Agodliwe.
64/174
USB Device ACM API
Uhlobo
ize
Direction N/A
Argument Name
MACROS GLOBAL CONSTANTS FUNCTION PROTOTYPES CDC ACM FUNCTIONS
Initialize the CDC ACM serial emulation subclass.
Iyabuya
Returns SL_STATUS_OK on success or another SL_STATUS code on failure.
Incazelo
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.
Amapharamitha
Uhlobo
uint16_t
uint16_t
Direction Argument Name
Incazelo
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.
Iyabuya
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.
Amapharamitha
Uhlobo
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.
Iyabuya
Copyright © 2025 Silicon Laboratories. Wonke Amalungelo Agodliwe.
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.
Amapharamitha
Uhlobo
Isiqondiso
Argument Name
Incazelo
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
Amadokhumenti / Izinsiza
![]() |
SILICON LABS USB Device Stack [pdf] Incwadi Yeziqondiso USB Device Stack, Device Stack, Stack |