Ngwunye ngwaọrụ USB
Nkọwapụta
- Ụdị USB: 1.5.1
- Ụbọchị mwepụta: Julaị 21, 2025
- Ụdị SDK dị mfe: 2025.6.1
Ngwaahịa gafereview
Ngwunye ngwaọrụ USB nke Silicon Labs na-enye ọtụtụ yana
Njikọ USB dị mfe iji maka ọrụ IoT, na-enyere aka
nkwukọrịta n'etiti ndị na-arụkọ ọrụ netwọkụ na ndị ọbịa.
Atụmatụ
- Ngwunye ngwaọrụ USB dị mma
- Dị mma maka ọrụ IoT
- Nkwado maka nkwurịta okwu n'etiti netwọk ngalaba-processors na
ndị ọbịa
Ntuziaka ojiji ngwaahịa
Nhazi ngwaọrụ USB
Hazie ntọala ngwaọrụ USB dịka ọrụ gị siri dị
ihe a choro site na izo aka na ngalaba nhazi ngwaọrụ USB
na akwụkwọ.
Ntuziaka mmemme ngwaọrụ USB
Soro ntuziaka mmemme ngwaọrụ USB ka ị ghọta ka esi eme
mmemme na jikọọ na ngwaọrụ USB maka dị iche iche
ngwa.
Klas Ngwaọrụ USB
Ngalaba klaasị ngwaọrụ USB na-enye njedebeview nke dị iche iche
klaasị dị ka CDC ACM, HID, MSC SCSI, na klaasị ndị na-ere ahịa. Họrọ nke
klaasị kwesịrị ekwesị dabere na arụmọrụ ngwaọrụ gị.
Nchọpụta nsogbu ngwaọrụ USB
Ọ bụrụ na ị zutere nsogbu ọ bụla na ngwaọrụ USB, rụtụ aka na ya
Ngalaba nsogbu ngwaọrụ USB maka ngwọta na nbipu
ndụmọdụ.
Microsoft Windows OS USB Host
Ọ bụrụ na ị na-eji USB ngwaọrụ na Microsoft Windows OS USB
Onye ọbịa, jide n'aka na ị na-agbaso ntuziaka enyere na
akwụkwọ maka njikọta enweghị nkebi.
FAQ
Ajụjụ: Gịnị bụ ụfọdụ nkịtị examples nke ngwaọrụ m nwere ike iji wuo
eriri USB a?
A: Ngwunye USB na-enye gị ohere ịrụ ngwaọrụ dịka
Ihe nkwụnye USB-na-serial, ụmụ oke ma ọ bụ ahụigodo, nchekwa mbughari
ngwaọrụ, na ngwaọrụ omenala.
Ajụjụ: Enwere ngwa ngwa chọrọ maka iji nke a
Ngwunye ngwaọrụ USB?
A: Akụrụngwa dakọtara gụnyere mfe SDK, ịdị mfe
Studio, Ọchịagha dị mfe, GCC (GNU Compiler Collection),
IAR agbakwunyere Workbench maka ARM, yana IAR EWARM.
Universal Serial ụgbọ ala USB
Universal Serial ụgbọ ala USB
USB gafereview gafereview
Hapụ Notes USB
Nkọwapụta na atụmatụ gafereview
Nhazi ngwaọrụ USB gafereview
Ntuziaka mmemme ngwaọrụ USB gafereview
Klas Ngwaọrụ USB gafereview CDC ACM Klas gafereview Klas HID gafereview MSC SCSI Klas gafereview Klas nke ire ere gafereview
Akwụkwọ USB API API Ngwaọrụ USB API Ngwaọrụ USB ACM API a sl_usbd_cdc_ cm_line_coding_t sl_usbd_cdc_acm_callbacks_t Ngwaọrụ USB CDC API a sl_usbd_cdc_subcl ss_driver_t USB Ngwaọrụ API Core
sl_usbd_device_config_t sl_usbd_setup_req_t
a sl_usbd_cl ss_driver_t USB Ngwaọrụ HID API
sl_usbd_hid_callbacks_t USB Ngwaọrụ MSC API
a sl_usbd_msc_subcl ss_driver_t USB Ngwaọrụ MSC SCSI API
sl_usbd_msc_scsi_callbacks_t
Nwebiisinka © 2025 Silicon Laboratories. Ikike niile echekwabara.
1/174
Universal Serial ụgbọ ala USB
a sl_usbd_msc_scsi_lun_ pi
sl_usbd_msc_scsi_lun_info sl_usbd_msc_scsi_lun
API Onye na-ere ngwaọrụ USB sl_usbd_vendor_callbacks_t
Akwụkwọ API Nchọpụta nsogbu ngwaọrụ USB
gafereview Microsoft Windows OS USB Host
gafereview
Nwebiisinka © 2025 Silicon Laboratories. Ikike niile echekwabara.
2/174
gafereview
gafereview
Ngwaọrụ USB
USB bụ otu n'ime mgbasa ozi kacha aga nke ọma na akụkọ ihe mere eme nke sistemụ kọmputa na ọ bụ ọkọlọtọ de facto maka ijikọ akụkụ kọmpụta. Ngwa USB Silicon Labs bụ modul ngwaọrụ USB emebere maka sistemu agbakwunyere. Ejiri àgwà Silicon Labs rụọ site na ala elu, scalability, na ntụkwasị obi, ọ gaferela usoro nkwado siri ike iji kwado nkọwa USB 2.0. Akwụkwọ a na-akọwa otu esi ebido, ibido, na iji ngwugwu ngwaọrụ USB Silicon Labs. Ọ na-akọwa ụkpụrụ nhazi dị iche iche na ojiji ha. Ọ gụnyekwara ngafeview nke teknụzụ, ụdị nke ohere nhazi, usoro mmejuputa iwu, na examples nke ahụkarị ojiji maka klaasị ọ bụla dị.
Iji nyere gị aka ịghọta echiche USB ngwa ngwa, akwụkwọ ahụ nwere ọtụtụ ndị examples nke USB nwere isi ọrụ. Ndị a bụ examples ga-enye gị usoro nke na-enye gị ohere ịmepụta ngwaọrụ ngwa ngwa. Ndị a bụ examples gụnyere:
USB-na-Oghere Usoro nkwụnye ọkụ (Klas ngwaọrụ nkwurịta okwu) Òké ma ọ bụ ahụigodo (Human Interface Device Class) Ngwaọrụ nchekwa mbughari (Klas Nchekwa Mass) Ngwaọrụ omenala (Klas ndị na-ere ahịa)
Ihe a agwụlaview nke ngalaba akwụkwọ:
Nkọwa na atụmatụ nhazi ngwaọrụ USB Nduzi mmemme mmemme ngwaọrụ USB klas ngwaọrụ USB
CDC ACM Klas HID Klas MSC SCSI Klas onye na-ere klaasị USB ngwaọrụ nchọpụta nsogbu Microsoft Windows OS USB Host
Nwebiisinka © 2025 Silicon Laboratories. Ikike niile echekwabara.
3/174
USB
USB
Ụdị USB 1.5.1 Julaị 21, 2025 – Ndetu mwepụta
Ụdị SDK dị mfe 2025.6.1
Ngwakọta ngwaọrụ USB dị mma nke Silicon Labs na-enye njikọta USB dị mfe iji rụọ ọrụ maka ọrụ IoT, gụnyere nkwukọrịta n'etiti ndị na-arụkọ ọrụ netwọkụ na ndị ọbịa. Pịa ebe a maka mwepụta ndị mbụ.
Nchịkọta mwepụta
Atụmatụ igodo | Mgbanwe API | Mmezi mperi | Nkwanye mgbawa
Atụmatụ igodo
N'okpuru ikpo okwu na-agbanwe naanị.
Mgbanwe API
Ọ dịghị.
Mmezi ahụhụ
Ọ dịghị.
Nkwanye mgbawa
Ọ dịghị.
Atụmatụ igodo
Atụmatụ ọhụrụ | Nkwalite | Atụmatụ ewepụrụ | Atụmatụ emebi emebi
Atụmatụ ọhụrụ
Ọ dịghị.
Nkwalite
N'okpuru ikpo okwu na-agbanwe naanị.
Atụmatụ ewepụrụ
Ọ dịghị.
Atụmatụ ndị dara ala
Ọ dịghị.
Mgbanwe API
API ọhụrụ | API ndị emegharịrị | API ewepụrụ | API ndị ebibiri
API ọhụrụ
Nwebiisinka © 2025 Silicon Laboratories. Ikike niile echekwabara.
4/174
USB
Ọ dịghị.
API ndị emegharịrị
Ọ dịghị.
API ewepụrụ
Ọ dịghị.
API ndị ebibiri
Ọ dịghị.
Mmezi ahụhụ
Ọ dịghị.
Nkwanye mgbawa
Ọ dịghị.
Ngwa Example Mgbanwe
Ọhụrụ Examples | Emegharịrị Examples | Ewepụrụ Examples | Akwụsịla Examples
Ọhụrụ Examples
Ọ dịghị.
Emegharịrị Examples
Ọ dịghị.
Ewepụrụ Examples
Ọ dịghị.
Akwụsịla Examples
Ọ dịghị.
Mmetụta Mgbanwe Ntọhapụ
Nkwupụta mmetụta | Ntuziaka Mbugharị
Nkwupụta mmetụta
Ọ dịghị.
Ntuziaka Mbugharị
Ọ dịghị.
Okwu na oke ama ama
Ọ dịghị.
Iji Ntọhapụ a
Nwebiisinka © 2025 Silicon Laboratories. Ikike niile echekwabara.
5/174
USB
Kedu ihe dị na Mwepụta ahụ? | Ngwa dakọtara | Nwụnye na Jiri | Enyemaka na nzaghachi
Kedu ihe dị na Mwepụta ahụ?
Ngwa ngwugwu ngwaọrụ USB Examples
Ngwa dakọtara
Ngwa ngwa
Mfe SDK Simplicity Studio Simplicity Commander GCC GNU Compiler Collection) IAR agbakwunyere Workbench maka ARM IAR EWARM
Ụdị ma ọ bụ Variant dakọtara
2025.6.0 5.11.0 1.18.2 (nyere na Simplicity Studio) 12.2.1 (nyere na Simplicity Studio) 9.40.1 (nyere na Simplicity Studio)
Nwụnye na Jiri
Iji malite mmepe gị hụ anyị:
Ntuziaka mmemme ngwaọrụ USB. Akwụkwọ API.
Maka ozi gbasara njikọta nchekwa nchekwa, lee Secure Vault.
Maka review Ozi ndụmọdụ nchekwa na ngwanrọ ma jikwaa mmasị ngosi gị:
ọ Gaa na https://community.silabs.com/. ó jiri nzere akaụntụ gị wee banye. ô Pịa pro gịfile akara ngosi dị n'akụkụ aka nri elu nke ibe ahụ.
õ Họrọ Amamọkwa site na menu ndọpụta. ö Na ngalaba ngosi, gaa na taabụ ngosi ngwaahịa m ka ịdegharịaview Ndụmọdụ nchekwa na ngwanrọ akụkọ ihe mere eme
ngosi
÷ Iji jikwaa mmasị gị, jiri taabụ Jikwaa Ịma Ọkwa ka hazie mmelite ngwaahịa na ndụmọdụ gị.
nata.
Maka ntọala nhazi akwadoro, lee ebe a.
Iji mụtakwuo maka ngwanrọ dị na ntọhapụ a, banye n'ime akwụkwọ ntanetị anyị.
Enyemaka na nzaghachi
Kpọtụrụ Nkwado Labs Silicon. Iji jiri ngwa jụọ AI iji nweta azịza, lee ebe ọchụchọ dị n'elu ibe a.
Mara: Jụọ AI bụ nnwale.
Nweta enyemaka n'aka obodo ndị nrụpụta anyị.
Amụma Mwepụta na Nchekwa SDK
Hụ amụma mwepụta na mmezi SDK anyị.
Nwebiisinka © 2025 Silicon Laboratories. Ikike niile echekwabara.
6/174
gafereview
gafereview
Nkọwapụta
Dabara na “Universal Serial Bus nkọwapụta nkọwapụta 2.0” na-emejuputa ụdị mbufe “Interface Association Descriptor Engineering Change Notice (ECN)”
Jikwaa nnukwu akwụsị klaasị USB Nkwukọrịta ngwaọrụ Klas (CDC) Ihe njikwa njikwa Abstract (ACM) Ngwaọrụ Interface mmadụ (HID) Klas Nchekwa Mass (MSC) klaasị akọwapụtara nke onye na-ere ahịa.
Atụmatụ
Enwere ike itinye naanị atụmatụ achọrọ iji belata akara ukwu ebe nchekwa na-akwado ngwa ngwa zuru oke (12 Mbit / s) Na-akwado ngwaọrụ mejupụtara (ọtụtụ ọrụ) na-akwado ngwaọrụ nhazi ọtụtụ na-akwado ọrụ nchekwa USB (ngwaọrụ kwụsịtụrụ ma maliteghachi) Njikọ zuru oke nke Klas Nchekwa Mass n'ime Micrium OS. File Modul sistemu ejiri CMSIS-RTOS2 abstraction oyi akwa wee rụọ ọrụ na OS dị iche iche. Silicon Labs GSDK na-abịa na ọdụ ụgbọ mmiri FreeRTOS na Micrium OS.
Nwebiisinka © 2025 Silicon Laboratories. Ikike niile echekwabara.
7/174
gafereview
gafereview
Nhazi ngwaọrụ USB
Akụkụ a na-atụle otu esi ahazi ngwaọrụ USB Silicon Labs. Enwere otu atọ nke paramita nhazi, dị ka ndị a:
Nhazi Isi Ngwaọrụ USB Nhazi ozi ngwaọrụ USB Nhazi ngwaike ngwaọrụ USB
Nhazi isi ngwaọrụ USB
Enwere ike ịhazi ngwaọrụ USB Silicon Labs n'oge a na-achịkọta site na otu #defines dị na sl_usbd_core_config.h file. Ngwaọrụ USB na-eji #akọwapụta mgbe enwere ike n'ihi na ha na-ekwe ka ọnụọgụ koodu na nha data n'oge chịkọta dabere na njirimara ndị enyere. Nke a na-enye ohere ka agbanwee akara naanị ebe nchekwa ọgụgụ (ROM) na ebe nchekwa ohere ịnweta (RAM) nke Silicon Labs USB Device dabere na ihe ngwa gị chọrọ.
Akwadoro: Jiri ụkpụrụ ndabara malite usoro nhazi ahụ (nke a na-egosipụta na nkwuwa okwu).
A na-ahazi ngalaba ndị dị n'okpuru na-adabere n'usoro dị na nhazi template file, sl_usbd_core_config.h.
Nhazi klaasị nhazi isi
Nhazi isi
Tebụl – USB isi nhazi nhazi
Nkọwa mgbe niile
Uru ndabara
SL_USBD_TA SK_STACK_ SIZE
Na-ahazi nha njupụta na bytes nke isi ọrụ USBD
4096
SL_USBD_TA SK_PRIORIT Y
Na-ahazi mkpa nke ọrụ isi USBD. Nke a bụ mkpa CMSIS-RTOS2.
osPriorityHigh
SL_USBD_A UTO_START _USB_DEVIC E
Ọ bụrụ na agbanyere ya, ngwaọrụ USB ga-amalite na-akpaghị aka ozugbo kernel malitere yana na 1 USBD isi ọrụ akwadoro maka oge mbụ. Ọ bụrụ na ọ nwere nkwarụ, ngwa gị ga-achọ ịkpọ sl_usbd_core_start_device() mgbe ọ dị njikere ịchọta ya site na USB host.
SL_USBD_C Ngụkọta ọnụ ọgụgụ nhazi nke a ga-agbakwunye site na sl_usbd_add_configuration()
1
Ọrụ ONFIGURATI.
ON_QUANTI
TY
Nwebiisinka © 2025 Silicon Laboratories. Ikike niile echekwabara.
8/174
gafereview
Na-adịgide adịgide
SL_USBD _INTERF ACE_QU ANTITY
SL_USBD _ALT_INT ERFACE_ QUANTI
TY
SL_USBD _INTERF ACE_GR
OUP_QU
ANTITY
SL_USBD _DESCRI
PTOR_Q
UFỌN
SL_USBD _STRING _QUANTI
TY
SL_USBD _OPEN_E NDPOIN TS_QUA NTITY
Ngụkọta ọnụ ọgụgụ USB interface ga-agbakwunye maka nhazi gị niile. Nke a dabere na klaasị ejiri mee ihe. Maka ozi ndị ọzọ gbasara ọnụọgụ ihu otu ihe atụ klaasị chọrọ, rụtụ aka na ngalaba “Akụkụ mkpa sitere na isi” nke klaasị gị.
Ngụkọta ọnụọgụ ihu USB ọzọ nke a ga-agbakwunye maka nhazi gị niile. Nke a dabere na klaasị ejiri mee ihe. Uru a ga-enwerịrị nha nha ma ọ bụ karịa SL_USBD_INTERFACE_QUANTITY . Maka ozi ndị ọzọ gbasara ọnụọgụ ọzọ nke ihe atụ klas chọrọ, rụtụ aka na ngalaba “Akụkụ mkpa sitere na isi” nke klaasị gị.
Ngụkọta ọnụ ọgụgụ nke otu interface USB nke a ga-agbakwunye maka nhazi gị niile. Nke a dabere na klaasị ejiri mee ihe. Maka ozi ndị ọzọ gbasara otu interface dị ole chọrọ ihe atụ klaasị, rụtụ aka na ngalaba “Akụkụ mkpa sitere na isi” nke klaasị gị.
Ngụkọta ọnụọgụ nkọwa njedebe nke a ga-agbakwunye maka nhazi gị niile. Nke a dabere na klaasị ejiri mee ihe. Maka ozi ndị ọzọ gbasara ọnụọgụ ngwụcha nke ihe atụ klaasị chọrọ, rụtụ aka na "Ọnụ ọgụgụ nke njedebe" na ngalaba "Akụkụ mkpa sitere na isi" nke klaasị gị. Rịba ama na njedebe njikwa adịghị mkpa ka a tụlee ebe a. Ngụkọta ọnụọgụ nke eriri USB. Ịtọpụta ọnụọgụ na efu ga-ewepụ njirimara ahụ. Ịkwụsị nke a ga-eme ka ngwaọrụ ahụ ghara ịchekwa eriri nkọwa USB ọ bụla gafere na ngwa ahụ. Nke a pụtara na onye ọbịa agaghị enwe ike iweghachite eriri nkọwa (dị ka onye nrụpụta na aha ngwaahịa). Ngụkọta ọnụ ọgụgụ njedebe meghere kwa nhazi. Ngwaọrụ chọrọ opekata mpe oghere abụọ mepere emepe maka mbufe njikwa, mana ị ga-agbakwunyerịrị njedebe nke klaasị eji. Maka ozi ndị ọzọ gbasara ọnụọgụ ngwụcha nke otu klas chọrọ, rụtụ aka na “Ọnụ ọgụgụ nke njedebe” na ngalaba “Akụkụ mkpa sitere na isi” nke klaasị gị.
Uru ndabara
10 10
2
20 30 20
Nhazi klaasị
Klas nwere nhazi oge mkpokọta kpọmkwem. Rụtụ aka na klaasị ngwaọrụ USB maka ozi ndị ọzọ.
Nhazi ozi ngwaọrụ USB
Nhazi sl_usbd_device_config.h file regroups compile-time #define-s iji tọọ ozi bụ isi gbasara ngwaọrụ gị, dị ka NJ Vendor/Product, eriri ngwaọrụ, wdg. Tebụlụ dị n'okpuru na-akọwa nhazi ozi ọ bụla akọwapụtara dị na nhazi a. file.
Tebụl – Nhazi ozi ngwaọrụ USB na-akọwapụta
Na-adịgide adịgide
SL_USBD_DEVIC E_VENDOR_ID
SL_USBD_DEVIC E_PRODUCT_ID
Nkọwa nọmba njirimara onye na-ere gị dịka ọgbakọ ndị mmejuputa USB weputara. Maka ozi ndị ọzọ gbasara otu ị ga-esi nweta ID onye na-ere ahịa, lee http://www.usb.org/developers/vendor/ . Nọmba njirimara ngwaahịa gị.
Nwebiisinka © 2025 Silicon Laboratories. Ikike niile echekwabara.
9/174
gafereview
Na-adịgide adịgide
Nkọwa
SL_USBD_DEVICE_RELEASE Nọmba mwepụta nke ngwaọrụ gị. _NUMBER
Eriri SL_USBD_DEVICE_MANUFA na-akọwa onye nrụpụta ngwaọrụ gị. A na-eleghara nhazi a anya mgbe
CTURER_STRING
nhazi SL_USBD_STRING_QUANTITY ka atọrọ ka 0.
Eriri SL_USBD_DEVICE_PRODUC na-akọwa ngwaahịa gị. A na-eleghara nhazi a anya mgbe nhazi
T_STRING
SL_USBD_STRING_QUANTITY atọrọ ka ọ bụrụ 0.
Eriri SL_USBD_DEVICE_SERIAL_N nwere ọnụọgụ ngwaọrụ gị. A na-eleghara nhazi a anya mgbe
UMBER_STRING
nhazi SL_USBD_STRING_QUANTITY ka atọrọ ka 0.
SL_USBD_DEVICE_LANGUA Nọmba njirimara nke asụsụ nke eriri ngwaọrụ gị. Ụkpụrụ nwere ike ịbụ:
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_ITALIA
- SL_USBD_LANG_ID_PORTUGUESE
- SL_USBD_LANG_ID_SANSKRIT
A na-eleghara nhazi a anya mgbe atọrọ nhazi SL_USBD_STRING_QUANTITY ka ọ bụrụ 0.
Nhazi ngwaike ngwaọrụ USB
Dabere na ngwaọrụ Silicon Labs ị na-eji, ị ga-enwe ike ịnwe pin na ọdụ ụgbọ mmiri GPIO iji hazie maka mgbama USB VBUS Sense. Nhazi ahụ na-akọwa bụ na sl_usbd_hardware_config.h nkụnye eji isi mee file.
Na-adịgide adịgide
SL_USBD_DRIVER_VBUS_SENSE_PORT SL_USBD_DRIVER_VBUS_SENSE_PIN
Nkọwa
Port GPIO maka mgbama USB VBUS Sense na bọọdụ gị. GPIO Pin maka mgbama USB VBUS Sense na bọọdụ gị.
Nwebiisinka © 2025 Silicon Laboratories. Ikike niile echekwabara.
10/174
gafereview
gafereview
Ntuziaka mmemme ngwaọrụ USB
Akụkụ a na-akọwa otu esi eji modul ngwaọrụ USB.
Ntọlite mbụ nke modul ngwaọrụ USB
Akụkụ a na-akọwa usoro ndị bụ isi achọrọ iji malite modul ngwaọrụ USB na ịgbakwunye, kwado ma malite ngwaọrụ. Ịmalite modul ngwaọrụ USB Ịmalite isi ngwaọrụ USB Na-ebute aCl ss(es) Ịtinye ngwaọrụ USB gị iwuli ngwaọrụ USB gị na-agbakwụnye nhazi (s) na-agbakwunye ọrụ USB na-amalite ngwaọrụ USB gị.
Ọrụ nko mmemme
Na-amalite modul ngwaọrụ USB
Na-amalite Core Device USB
a US a Malite site na ibido lising the B device module core site clling the function sl_usbd_core_init() . T aa he exmple n'okpuru na-egosi c lling sl_usbd_core_init() .
Example – Na-akpọ sl_usbd_core_init()
sl_status_t ọkwa; ọnọdụ = sl_usbd_core_init (); ma ọ bụrụ (ọnọdụ ! SL_STATUS_OK) {/*Enwere mperi. Ekwesịrị ịgbakwunye njikwa mperi ebe a. */
}
Ịmalite Klas (s)
Ka ebidochara isi modul ngwaọrụ USB, ị ga-ebido klaasị ọ bụla ịchọrọ iji. Lee ngalaba “Nduzi mmemme” nke acl ss (es) gị maka ozi ndị ọzọ.
Wulite ngwaọrụ USB gị
Na-agbakwụnye nhazi(s)
Mgbe ịmalitechara ngwaọrụ gị nke ọma, ị nwere ike ịmalite ịgbakwunye ọrụ USB na ya, malite na nhazi ọhụrụ. Ngwaọrụ ga-enwerịrị opekata mpe otu nhazi. Ka ịgbakwunye nhazi (s), kpọọ ọrụ aa sl_usbd_core_ dd_configur tion() ọrụ. A ghaghị ịkpọ ọrụ a maka nhazi ọ bụla ịchọrọ ịgbakwunye. The example n'okpuru na-egosi ka esi tinye a Full-ọsọ.
Example – Na-agbakwụnye nhazi(s) na ngwaọrụ gị
Nwebiisinka © 2025 Silicon Laboratories. Ikike niile echekwabara.
11/174
gafereview
sl_status_t ọkwa; uint8_t config_nbr_fs;
/* Na-agbakwunye nhazi ngwa ngwa na ngwaọrụ ahụ. */
ọnọdụ = sl_usbd_core_add_configuration (0,
/ * Enweghị àgwà pụrụ iche na nhazi ahụ. */
100u,
/* Oke ike oriri: 100mA.
*/
SL_USBD_DEVICE_SPEED_FULL,
/* Nhazi ọsọ zuru oke.
*/
"Config Tinye Example Full-Speed config",
& config_nbr_fs);
ọ bụrụ (ọnọdụ ! SL_STATUS_OK) {
/* Njehie mere. Ekwesịrị ịgbakwunye njikwa mperi ebe a. */
}
Na-agbakwụnye Ọrụ(s) USB
Mgbe itinyechara opekata mpe otu nhazi na ngwaọrụ gị nke ọma, ị nwere ike itinye oghere na njedebe na ngwaọrụ gị. Klas USB nke ọ bụla nwere mkpa nke ya n'ihe gbasara interface na ụdị njedebe, ọnụọgụ na paramita ndị ọzọ. Ngwa USB Silicon Labs na-agbakwunye oghere na njedebe na klaasị ọ na-enye.
Site na ngwa gị, ị nwere ike ịmegharị klaasị USB wee tinye ya na nhazi. Maka ozi ndị ọzọ gbasara echiche klaasị ngwaọrụ USB, lee klaasị ngwaọrụ USB. Rịba ama na ị nwere ike iwepụta ngwa ngwa ma gbakwunye ọtụtụ oge klaasị dị iche iche na nhazi iji mepụta ngwaọrụ multi-function (composite).
The example n'okpuru na-egosi otu esi emepụta ihe atụ klas wee tinye ya na nhazi.
Example – Tinye ihe atụ klas na ngwaọrụ gị
sl_status_t ọkwa; uint8_t klas_nbr;
/* Mepụta ihe atụ nke klaasị ịchọrọ iji.*/ /* Rịba ama na dabere na klaasị ọrụ a nwere ike inwekwu arụmụka. */ ọnọdụ = sl_usbd_ _create_intance (&class_nbr); ma ọ bụrụ (ọnọdụ ! SL_STATUS_OK) {/*Enwere mperi. Ekwesịrị ịgbakwunye njikwa mperi ebe a. */}
/* Tinye ihe atụ klas na nhazi ọsọ ọsọ. */ ọnọdụ = sl_usbd_ _add_to_configuration(class_nbr, /* Nọmba klaasị sl_usbd_ weghachiri _mepụta_ihe atụ. */
config_nbr_fs); /* Nọmba nhazi weghachiri sl_usbd_core_add_configuration(). */ ma ọ bụrụ (ọnọdụ ! SL_STATUS_OK) {/*Enwere mperi. Ekwesịrị ịgbakwunye njikwa mperi ebe a. */}
Malite ngwaọrụ USB gị
Site na ndabara, ngwaọrụ USB ga-amalite na-akpaghị aka site na ọrụ bụ isi ngwaọrụ ka emechara mmalite ngwaọrụ wee malite kernel. Iji jikwaa mgbe ngwaọrụ malitere wee bụrụ nke ndị ọbịa USB na-ahụ ya, jiri nhazi kọwapụta SL_USBD_AUTO_START_USB_DEVICE iji gbanyụọ njirimara mmalite akpaaka. Mgbe ị nwere nkwarụ, mgbe ịmechara / kwadobere ngwaọrụ gị, ị nwere ike ịmalite ya wee mee ka ọ hụ onye ọbịa USB site na ịkpọ ọrụ sl_usbd_core_start_device() .
The example n'okpuru na-egosi ka esi malite ngwaọrụ gị site na iji sl_usbd_core_start_device() ọrụ.
Example – Malite ngwaọrụ gị
Nwebiisinka © 2025 Silicon Laboratories. Ikike niile echekwabara.
12/174
gafereview
sl_status_t ọkwa;
ọnọdụ = sl_usbd_core_start_device (); ma ọ bụrụ (ọnọdụ ! SL_STATUS_OK) {/*Enwere mperi. Ekwesịrị ịgbakwunye njikwa mperi ebe a. */}
Ọrụ nko mmemme
Igwe USB isi modul na-enye ọrụ nko abụọ na-adịghị ike nke ị nwere ike ịkọwapụta ọzọ na ngwa gị. Ebumnobi ha bụ igosi mgbe mmemme ụgbọ ala na nhazi mere.
Tebụl – Ọrụ nko mmemme USB
Ihe omume
Nkọwa
Ụgbọ ala
Akpọrọ ya mgbe mmemme ụgbọ ala USB mere
A na-akpọ nhazi mgbe mmemme nhazi USB mere
mbinye aka ọrụ
efu sl_usbd_on_bus_event(mmemme sl_usbd_bus_event_t); efu sl_usbd_on_config_event (mmemme sl_usbd_config_event_t, uint8_t config_nbr);
Example - Ọrụ nko Omume
efu sl_usbd_on_bus_event(sl_usbd_bus_event_t omume) {mgbanwe (mmemme) {ikpe SL_USBD_EVENT_BUS_CONNECT:
// a na-akpọ mgbe etinyere eriri USB na nkwụsịtụ njikwa onye ọbịa;
ikpe SL_USBD_EVENT_BUS_DISCONNECT: // a na-akpọ mgbe ewepụrụ eriri USB na nkwụsịtụ njikwa onye ọbịa;
ikpe SL_USBD_EVENT_BUS_RESET: // a na-akpọ mgbe onye ọbịa na-eziga nkwụsị iwu nrụpụta;
ikpe SL_USBD_EVENT_BUS_SUSPEND: // a na-akpọ mgbe onye ọbịa zitere nkwụsịtụ iwu nkwụsịtụ;
ikpe SL_USBD_EVENT_BUS_RESUME: // a na-akpọ mgbe onye ọbịa na-eziga ezumike iwu edemede;
ndabara: agbaji; } }
void sl_usbd_on_config_event(sl_usbd_config_event_t event, uint8_t config_nbr) {mgbanwe (omume) {ikpe SL_USBD_EVENT_CONFIG_SET:
// a na-akpọ mgbe onye ọbịa na-edozi nkwụsịtụ nhazi;
ikpe SL_USBD_EVENT_CONFIG_UNSET: // a na-akpọ mgbe nkwụsịtụ edozighị nhazi;
ndabara: agbaji; } }
Nwebiisinka © 2025 Silicon Laboratories. Ikike niile echekwabara.
13/174
gafereview
Nwebiisinka © 2025 Silicon Laboratories. Ikike niile echekwabara.
14/174
gafereview
gafereview
Klas Ngwaọrụ USB
Klas USB dị na Silicon Labs USB Device na-ekerịta ụfọdụ njirimara. Akụkụ a na-akọwa njirimara ndị a na mmekọrịta ha na oyi akwa isi.
Maka ozi ndị ọzọ gbasara otu klas, hụ ihe ndị a:
Klas CDC ACM HID Klas MSC SCSI klaasị ndị na-ere ahịa
Banyere ihe atụ klaasị
Klas USB dị na ngwaọrụ USB na-emejuputa echiche nke oge klaasị. Otu ihe atụ klaasị na-anọchi anya otu ọrụ dị n'ime ngwaọrụ. Enwere ike ịkọwa ọrụ ahụ site na otu interface ma ọ bụ site na otu interface ma bụrụ nke otu klas.
Mmejuputa klaasị USB ọ bụla nwere ụfọdụ nhazi na ọrụ jikọrọ ọnụ, dabere na echiche nke klaasị. A na-egosipụta nhazi na ọrụ ndị a na-emekarị na tebụl n'okpuru. N'aha kọlụm 'Constant or Function', onye na-edebe XXXX nwere ike dochie ya site na aha klas: CDC, HID, MSC, CDC_ACM ma ọ bụ VENDOR (Onye na-ere maka aha ọrụ).
Tebụl - Constants na Ọrụ metụtara echiche nke ọtụtụ klas oge
Na-adịgide adịgide ma ọ bụ Ọrụ
SL_USBD_XXX_CL ASS_INS TANCE_QUANTITY
SL_USBD_XXX_CONFIGUR ATION_QUANTITY
sl_usb d _XXX_cre ate _insta nce ()
sl_usbd_XXX_add_to_conf iguration()
Nkọwa
Na-ahazi ọnụ ọgụgụ kacha elu nke klaasị.
Na-ahazi ọnụọgụ nhazi kachasị elu. N'oge mmalite klaasị, a ga-agbakwunye ihe atụ klaasị emepụtara na nhazi otu ma ọ bụ karịa. Na-emepụta ihe atụ klaasị ọhụrụ.
Na-agbakwụnye ihe atụ klaasị dị na nhazi ngwaọrụ akọwapụtara.
N'ihe gbasara mmejuputa koodu, klaasị ga-ekwupụta mgbanwe mpaghara ụwa nke nwere nhazi njikwa klaasị. Ejikọtara usoro njikwa klaasị a na otu ihe atụ ma ga-enwe ozi akọwapụtara maka ijikwa ihe atụ klaasị.
Ọnụọgụ ndị a na-egosi ọtụtụ ọnọdụ ọnọdụ. Ọnụọgụ ọ bụla gụnyere koodu exampnke ahụ dabara na ọnọdụ ahụ.
Ọgụgụ - Ọtụtụ klaasị - Ngwaọrụ FS (1 Nhazi na 1 Interface) na-anọchite anya ngwaọrụ USB. Ngwa a bụ Full-Speed (FS) ma nwee otu nhazi. A na-akọwa ọrụ nke ngwaọrụ ahụ site na otu interface mejupụtara ụzọ njedebe maka nzikọrịta ozi data. Emepụtara otu ihe atụ klaasị ga-enye gị ohere ijikwa interface niile yana njedebe njedebe metụtara ya.
Ọgụgụ - Ọtụtụ klaasị - Ngwa FS 1 Nhazi ya na interface 1)
Nwebiisinka © 2025 Silicon Laboratories. Ikike niile echekwabara.
15/174
gafereview
Koodu kwekọrọ na eserese - Ọtụtụ ihe atụ klas - Ngwaọrụ FS (1 Nhazi na 1 Interface) ka egosiri na mbụ.ample n'okpuru.
Example - Ọtụtụ klaasị - Ngwa FS 1 Nhazi na 1 Interface)
sl_status_t ọkwa; uint8_t klas_0;
Void app_usbd_XXX_enable(uint8_t class_nbr) {/* Jikwaa emume klaasị. */}
Void app_usbd_XXX_disable(uint8_t class_nbr) {/* Gbanyụọ mmemme klaasị. */}
sl_usbd_XXX_callbacks_t class_callbacks = {
(1)
.enable = ngwa_usbd_XXX_enable,
.gbanyụọ = ngwa_usbd_XXX_gbanyụọ
};
ọnọdụ = sl_usbd_XXX_init();
(2)
ọ bụrụ (ọnọdụ ! SL_STATUS_OK) {
/* $$$$ Jikwaa njehie ahụ. */
}
ọnọdụ = sl_usbd_XXX_create_intance(&class_callbacks,
(3)
&klas_0);
ọ bụrụ (ọnọdụ ! SL_STATUS_OK) {
/* $$$$ Jikwaa njehie ahụ. */
}
ọnọdụ = sl_usbd_XXX_add_to_configuration (class_0, config_0);
(4)
ọ bụrụ (ọnọdụ ! SL_STATUS_OK) {
/* $$$$ Jikwaa njehie ahụ. */
}
(1) Klas ọ bụla na-enye usoro ọrụ ịkpọghachi maka mmemme jikọọ/ịpụpụ ngwaọrụ yana maka mmemme klaasị. A na-agafe ihe nhazi oku azụ ka ọ bụrụ arụmụka mgbe ị na-emepụta ihe atụ klas na sl_usbd_XXX_create_instance()
ọrụ.
(1) Malite klas. A ga-ebulite mgbanwe niile dị n'ime, ụlọ na ọdụ ụgbọ mmiri klaasị. Mara na ọrụ Init() na klaasị ụfọdụ nwere ike were arụmụka ndị ọzọ.
Nwebiisinka © 2025 Silicon Laboratories. Ikike niile echekwabara.
16/174
gafereview
(2) Mepụta ihe atụ klaasị, nke bụ klas_0 . Ọrụ sl_usbd_XXX_create_instance() na-ekenye usoro njikwa klaasị jikọtara ya na klas_0. Dabere na klaasị, sl_usbd_XXXX_create_instance() nwere ike ịnwe paramita ndị ọzọ ewezuga nọmba klaasị na-anọchite ozi akọwapụtara klaasị echekwara na nhazi njikwa klaasị. aaa (3) Tinye cl ss inst nce, class_0, na nọmba nhazi ahaziri ahazi, config_0. sl_usbd_XXX_add_to_configuration () ga-emepụta interface 0 yana njedebe IN na OUT jikọtara ya. N'ihi ya, ihe atụ klas ahụ gụnyere interface 0 na njedebe ya. Nzikọrịta ọ bụla emere na interface 0 ga-eji akara atụ klas, class_0 . Ọgụgụ - Ọtụtụ klaasị - Ngwaọrụ FS (Nhazi 2 na ọtụtụ Interfaces) na-anọchite anya ihe mgbagwoju anya.ample. Ngwa ngwa ngwa nwere nhazi abụọ mejupụtara. Ngwaọrụ nwere ọrụ abụọ bụ nke otu klaasị, mana arụrụ arụ ọ bụla na-akọwa ya site na ihu abụọ ma nwee otu ụzọ njedebe bidirectional. Na nke a example, abụọ klas ihe na-kere. A na-ejikọta ihe atụ klas ọ bụla na otu interface dị iche iche na-emegide ihe oyiyi - Multiple Class Classes - FS Device (1 Configuration with 1 Interface) na Figure - Multiple Class Classes - FS Device (2 Configurations and Multiple Interfaces) ebe ihe atụ klas jikọtara ya na otu interface.
Ọgụgụ - Ọtụtụ klaasị - FS Ngwaọrụ 2 Nhazi na ọtụtụ interface)
Koodu nke kwekọrọ na ọnụ ọgụgụ - Ọtụtụ ụdị klas - Ngwaọrụ FS (Nhazi 2 na Multiple Interface) ka egosiri na mbụ.ample n'okpuru. Ewepụrụ njikwa njehie ahụ maka idoanya.
Example - Ọtụtụ klaasị - FS Ngwaọrụ 2 nhazi na otutu interface)
Nwebiisinka © 2025 Silicon Laboratories. Ikike niile echekwabara.
17/174
gafereview
sl_status_t ọkwa; uint8_t klas_0; uint8_t klas_1;
ọnọdụ = sl_usbd_XXX_init();
ọnọdụ = sl_usbd_XXX_create_instance(&class_0); ọnọdụ = sl_usbd_XXX_create_instance(&class_1);
ọnọdụ = sl_usbd_XXX_add_to_configuration (class_0, cfg_0); ọnọdụ = sl_usbd_XXX_add_to_configuration (klas_1, cfg_0);
ọnọdụ = sl_usbd_XXX_add_to_configuration (class_0, cfg_1); ọnọdụ = sl_usbd_XXX_add_to_configuration (klas_1, cfg_1);
(1)
(2) (3)
(4) (5)
(6) (6)
(1) Malite klas. A ga-ebudo mgbanwe ọ bụla dị n'ime, ihe owuwu na ọdụ ụgbọ mmiri klaasị.
(2) Mepụta ihe atụ klaasị, klas_0 . Ọrụ sl_usbd_XXX_create_instance() na-ekenye usoro njikwa klaasị jikọtara ya na klas_0.
(3) Mepụta ihe atụ klaasị, klas_1 . Ọrụ sl_usbd_XXX_create_instance() na-ekenye usoro njikwa klaasị ọzọ jikọtara na klas_1.
(4) Tinye ihe atụ klaasị, klas_0, na nhazi, cfg_0 . sl_usbd_XXX_add_to_configuration () ga-emepụta interface 0, interface 1, interface ọzọ, yana njedebe IN na OUT jikọtara ya. A ga-eji akara atụ klaasị, class_0, maka nzikọrịta ozi ọ bụla na interface 0 ma ọ bụ interface 1.
(5) Tinye ihe atụ klaasị, klaasị_1, na nhazi, cfg_0. sl_usbd_XXX_add_to_configuration () ga-emepụta interface 2, interface 3 yana njedebe IN na OUT jikọtara ya. A ga-eji akara atụ klaasị, class_1, maka nzikọrịta ozi ọ bụla na interface 2 ma ọ bụ interface 3.
(6) Tinye otu ihe atụ klaasị, klaasị_0 na klas_1, na nhazi nke ọzọ, cfg_1.
Klas ọ bụla na-akọwa nhazi nke ụdị sl_usbd_XXX_callbacks_t . Nzube ya bụ inye klaasị ọ bụla otu ọrụ azụghachị ka a ga-akpọ mgbe mmemme mere. Ọrụ ịkpọghachite ugboro abụọ dị na klaasị ọ bụla. E gosipụtara ha na tebụl dị n'okpuru.
Tebụl – Ọrụ ịkpọghachi klaasị nkịtị
Nkọwa ubi .na-eme ka a kpọọ ya mgbe agbanyere ihe atụ USB nke ọma. .gbanyụọ Akpọrọ mgbe agbanyụrụ klaasị USB.
Mbinye aka ọrụ efu app_usbd_XXX_enable(uint8_t class_nbr); ngwa efu_usbd_XXX_disable(uint8_t class_nbr);
Nwebiisinka © 2025 Silicon Laboratories. Ikike niile echekwabara.
18/174
gafereview
gafereview
Ngwaọrụ USB CDC ACM klas
Ngwaọrụ USB CDC klaasị gafereview Ngwa USB CDC ACM Klas akụrụngwa chọrọ site na Core USB Device CDC ACM Subclass Overview Ngwa USB CDC ACM klaasị nhazi USB Ngwaọrụ CDC ACM ntuziaka mmemme klas
Akụkụ a na-akọwa klaasị Ngwaọrụ Nkwukọrịta (CDC) yana klaasị CDC jikọtara ya na ngwugwu ngwaọrụ USB nke Silicon Labs na-akwado. Ngwa Silicon Labs USB-Device na-akwado ugbu a subclass njikwa Model Abstract (ACM), nke a na-ejikarị maka emulation nso.
CDC gụnyere ngwaọrụ nkwukọrịta na netwọk dị iche iche. Ngwa nzikọrịta ozi gụnyere modem analog, ekwentị analọg na dijitalụ, ihe nkwụnye ọnụ ISDN, wdg. Maka ex.ampNgwaọrụ ịkparịta ụka n'Ịntanet nwere ADSL na modem USB, ihe nkwụnye Ethernet, na hub. CDC na-akọwapụta usoro iji kpuchie ụkpụrụ ọrụ nkwukọrịta dị ugbu a, dị ka V.250 (maka modems na netwọk ekwentị) na Ethernet (maka ngwaọrụ netwọk mpaghara), na-eji njikọ USB. Ngwa nzikọrịta ozi na-ahụ maka njikwa ngwaọrụ, njikwa oku mgbe achọrọ, yana nnyefe data.
CDC na-akọwapụta otu ngwaọrụ asaa isi. Otu ọ bụla bụ nke ụdị nzikọrịta ozi, nke nwere ike ịgụnye ọtụtụ subclass. Otu ngwaọrụ ọ bụla nwere akwụkwọ nkọwapụta nke ya ma e wezụga klas ntọala CDC. Otu asaa ahụ bụ:
Network Switched Telephone Network (PSTN), ngwaọrụ gụnyere modem ụda olu, ekwentị, na ngwaọrụ emulation. Ngwa ọrụ Integrated Services Digital Network (ISDN), gụnyere ihe nkwụnye ọnụ na ekwentị. Ngwaọrụ njikwa njikwa Ethernet (ECM), gụnyere ngwaọrụ na-akwado ezinụlọ IEEE 802 (dịka: eriri na modem ADSL, ihe nkwụnye WiFi). Ngwaọrụ nfefe asynchronous (ATM), gụnyere modem ADSL na ngwaọrụ ndị ọzọ ejikọrọ na netwọk ATM (ọdụ ọrụ, ndị na-anya ụgbọ elu, LAN switches). Ngwaọrụ ekwentị mkpanaaka ikuku (WMC), gụnyere ngwaọrụ ekwentị na-arụ ọtụtụ ọrụ ejiri jikwaa nkwukọrịta olu na data. Ngwaọrụ Ethernet Emulation Model (EEM) nke na-agbanwe data emebere Ethernet. Ngwaọrụ njikwa netwọkụ (NCM), gụnyere ngwaọrụ netwọk dị elu (Modems Packet Access High Speed, Equipment Line)
CDC na mmejuputa subclass emetụtara na-agbaso nkọwa ndị a:
Ụgbọ ala Serial Universal, Nkọwa klaasị maka Ngwa Nkwukọrịta, Ndozigharị 1.2, Nọvemba 3 2010. Universal Serial Bus, Communications, Subclass for PSTN Devices, Revision 1.2, February 9 2007.
Ngwaọrụ USB CDC klaasị gafereview
Ngwa CDC nwere oghere ndị a iji mejuputa ike nzikọrịta ozi:
Nkwukọrịta Klas Interface (CCI) na-ahụ maka njikwa ngwaọrụ yana nhọrọ njikwa oku. Nke
njikwa ngwaọrụ na-enyere nhazi izugbe na njikwa ngwaọrụ na ngosi nke ihe omume nye onye ọbịa. Njikwa oku na-eme ka nrụpụta oku na nkwụsị. Enwere ike ịgbatị njikwa oku site na DCI. CCI bụ iwu maka ngwaọrụ CDC niile. Ọ na-achọpụta ọrụ CDC site na ịkọwapụta usoro nzikọrịta ozi nke ngwaọrụ CDC kwadoro. Ihe interface(s) na-eso CCI nwere ike ịbụ interface klas USB ọ bụla akọwapụtara, dị ka Audio ma ọ bụ onye na-ere ahịa kpọmkwem. DCI na-anọchi anya interface nke onye na-ere ihe kpọmkwem.
Data Class Interface (DCI) na-ahụ maka nnyefe data. Data ebutere na/ma ọ bụ natara anaghị eso kpọmkwem
usoro. Data nwere ike ịbụ raw data sitere na ahịrị nzikọrịta ozi, data na-eso usoro nke nwe ya, wdg. Enwere ike ịhụ DCI niile na-eso CCI dị ka oghere ndị nọ n'okpuru.
Ngwa CDC ga-enwerịrị opekata mpe otu CCI na efu ma ọ bụ karịa DCI. Otu CCI na DCI ọ bụla nọ n'okpuru ọnụ na-enye onye ọbịa ihe njirimara. A na-akpọkwa ikike a dị ka ọrụ. Na ngwaọrụ mejupụtara CDC, ị nwere ike ịnwe ọtụtụ
Nwebiisinka © 2025 Silicon Laboratories. Ikike niile echekwabara.
19/174
gafereview
ọrụ. Ya mere, ngwaọrụ ga-abụ nke ọtụtụ usoro nke CCI na DCI(s) dị ka egosiri na Figure - CDC Composite Device.
Ọgụgụ – Ngwaọrụ mejupụtara CDC
Ngwa CDC nwere ike iji nchikota njedebe ndị a:
Otu ụzọ njikwa IN na OUT njedebe a na-akpọ ebe njedebe ndabara. Nnukwu nhọrọ ma ọ bụ nkwụsịtụ na njedebe njedebe. Otu ụzọ nnukwu ma ọ bụ isochronous IN na OUT njedebe. Rịba ama na ngwugwu ngwaọrụ USB Silicon Labs anaghị akwado isi ihe njedebe ugbu a.
Tebụlụ dị n'okpuru na-egosi ojiji nke njedebe njedebe dị iche iche yana nke interface nke CDC ejiri ha.
Tebụl – CDC Endpoint Ojiji
Ebe njedebe
Njikwa IN
Jikwaa Mpụ
Kwụsị ma ọ bụ nnukwu na nnukwu ma ọ bụ isochronous na nnukwu ma ọ bụ isochronous
Mpụ
Ntuziaka
Deviceto-onye ọbịa
Ngwa-ngwaọrụ
Deviceto-onye ọbịa
Deviceto-onye ọbịa
Ngwa-ngwaọrụ
Ojiji Interface
CCI
Arịrịọ ọkọlọtọ maka ngụkọ, arịrịọ klaasị akọwapụtara, ngwaọrụ
njikwa, na njikwa ịkpọ oku nhọrọ.
CCI
Arịrịọ ọkọlọtọ maka ngụkọ, arịrịọ klaasị akọwapụtara, ngwaọrụ
njikwa, na njikwa ịkpọ oku nhọrọ.
CCI
ngosi ihe omume, dị ka nchọpụta mgbanaka, ọkwa akara, ọkwa netwọkụ.
DCI
Nzikọrịta data raw ma ọ bụ ahaziri.
DCI
Nzikọrịta data raw ma ọ bụ ahaziri.
Imirikiti ngwaọrụ nzikọrịta ozi na-eji nkwụsị nkwụsị iji gwa ndị ọbịa ihe omume. E kwesịghị iji ngwụcha ngwụcha nke isochronous mee ihe maka nnyefe data mgbe protocol nwe ụlọ dabere na mbufe data ma ọ bụrụ na njehie protocol USB. Nzikọrịta ozi nwere ike tufuo data n'ihi na ọ nweghị usoro nnwale ọzọ.
Ụdị nzikọrịta ozi asaa bụ isi gụnyere ọtụtụ subclass. Otu subclass na-akọwa ụzọ ngwaọrụ kwesịrị iji CCI jikwaa njikwa ngwaọrụ na njikwa oku. Tebụlụ dị n'okpuru na-egosi klaasị niile enwere ike yana ụdị nkwukọrịta ha nwere.
Tebụl - Subclass CDC
Subclass
Ihe Nlereanya Njikwa Ngwa Direct Line
Ụdị nzikọrịta ozi
PSTN
PSTN
Example of Devices Iji Nke a Subclass
Ngwaọrụ modem nke ndị ọbịa USB na-achịkwa ozugbo
Ngwaọrụ emulation serial, ngwaọrụ modem na-achịkwa site na usoro iwu serial
Nwebiisinka © 2025 Silicon Laboratories. Ikike niile echekwabara.
20/174
gafereview
Subclass
Ụdị nzikọrịta ozi
Example of Devices Iji Nke a Subclass
Ụdị njikwa ekwentị
PSTN
Multi-Chanel Control ISDN Model
Ụdị njikwa CAPI ISDN
Ihe Nlereanya Njikwa ECM ịkparịta ụka n'Ịntanet
ATM netwọk
ATM
Ụdị njikwa
Ụdị njikwa ekwentị ikuku ikuku
WMC
Njikwa ngwaọrụ WMC
Mobile Direct Line Model
WMC
OBEX
WMC
Ihe nlere Ethernet EEM
Ụdị njikwa netwọkụ
NCM
Ngwa ekwentị olu
Ihe nkwụnye ọnụ ọnụ ọnụ ahịa bụ isi, ihe nkwụnye ọnụ ọnụ ọnụ ahịa, ekwentị
Ihe nkwụnye ọnụ ọnụ ọnụ ahịa nke isi, ihe nkwụnye ọnụ ọnụ ọnụ ahịa mbụ, ekwentị DOC-SIS modem USB, modem ADSL na-akwado emulation PPPoE, ihe nkwụnye Wi-Fi (ezinụlọ IEEE 802.11), IEEE 802.3 ihe nkwụnye ADSL modems.
Ngwa ọnụ ọnụ ekwentị na-ejikọ na ngwaọrụ ikuku
Ngwa ọnụ ọnụ ekwentị na-ejikọ na ngwaọrụ ikuku Ngwa ọnụ ọnụ ekwentị na-ejikọ na ngwaọrụ ikuku
Ngwa ọnụ ọnụ ekwentị na-ejikọ na ngwaọrụ ikuku na ngwaọrụ na-eji okpokolo agba Ethernet dị ka akwa ụgbọ njem na-esote. Ezubereghị maka ụzọ na ngwaọrụ njikọta ịntanetị IEEE 802.3 nkwụnye na-ebu bandwidth data dị elu na netwọkụ.
Ngwaọrụ USB CDC ACM Klas akụrụngwa chọrọ site na isi
Oge ọ bụla ị gbakwunye ihe atụ klas CDC ACM na nhazi USB site na oku na ọrụ sl_usbd_cdc_acm_add_to_configuration() , a ga-ekenye ihe ndị a site na isi.
Akụrụngwa
Oghere ndị ọzọ dị iche iche Njikọ njedebe
Ọnụọgụ
2 2 3 1
Rịba ama na ọnụọgụ ndị ahụ bụ maka nhazi. Mgbe ị na-edozi ụkpụrụ nhazi SL_USBD_INTERFACE_QUANTITY , SL_USBD_ALT_INTERFACE_QUANTITY , SL_USBD_INTERFACE_GROUP_QUANTITY na SL_USBD_DESCRIPTOR_QUANTITY nhazi ụkpụrụ, echefula iburu n'uche nhazi ole a ga-agbakwunye na klas ahụ. Maka uru nhazi SL_USBD_OPEN_ENDPOINTS_QUANTITY, ebe ọ bụ na a na-emepe njedebe njedebe naanị mgbe onye ọbịa na-ahazi nhazi, naanị ị ga-eburu n'uche ọnụọgụ njedebe achọrọ maka ihe atụ klaasị.
Ngwaọrụ USB CDC ACM Subclass Overview
Ihe mejupụtara klas CDC bụ Interface Class Communications (CCI) na Data Class Interface (DCI), nke a tụlere nke ọma na USB Device CDC Base Class Over.view . Akụkụ a na-atụle CCI nke ụdị ACM. Ọ nwere njedebe ndabara maka mmewere njikwa yana nkwụsị nkwụsị maka mmewere ngosi. A na-eji otu ụzọ njedebe buru ibu buru data akọwapụtaghị n'elu DCI.
A na-eji subclass ACM site na ụdị ngwaọrụ nkwukọrịta abụọ:
Ngwaọrụ na-akwado iwu AT (dịka ọmụmaatụ, modem ụda olu). Ngwaọrụ emulation nke a na-akpọkwa ngwaọrụ ọdụ ụgbọ mmiri Virtual COM.
Enwere ọtụtụ arịrịọ akọwapụtara maka subclass ACM. Ha na-enye gị ohere ijikwa ma hazie ngwaọrụ ahụ. Enwere ike ịchọta ndepụta zuru oke na nkọwa nke arịrịọ ACM niile na nkọwapụta
Nwebiisinka © 2025 Silicon Laboratories. Ikike niile echekwabara.
21/174
gafereview Klas maka ngwaọrụ PSTN, ngbanwe 1.2, February 9, 2007=, ngalaba 6.2.2.
Site na ndepụta a, Silicon Labs9 ACM subclass na-akwado ihe ndị a:
Tebụl – Arịrịọ ACM nke Silicon Labs kwadoro
Nkọwa arịrịọ Subclass
SetCommFeature GetCommFeature ClearCommFeature
Onye ọbịa na-eziga arịrịọ a iji jikwaa ntọala maka njirimara nkwukọrịta enyere. Ejighi ya mee emulation nso.
Onye ọbịa na-eziga arịrịọ a iji nweta ntọala dị ugbu a maka njirimara nkwukọrịta enyere. Ejighi ya mee emulation nso.
Onye ọbịa ahụ na-eziga arịrịọ a iji kpochapụ ntọala maka njirimara nkwukọrịta enyere. Ejighi ya mee emulation nso.
SetLineCoding
Onye ọbịa ahụ na-eziga arịrịọ a iji hazie ntọala ngwaọrụ ACM: ọnụego baud, ọnụọgụ nkwụsị, ụdị parity na ọnụọgụ data bits. Maka nṅomi usoro, a na-eziga arịrịọ a na-akpaghị aka site na ọnụ ọgụgụ serial oge ọ bụla ị haziri ntọala serial maka ọdụ ụgbọ mmiri COM mepere emepe.
GetLineCoding
Onye ọbịa na-eziga arịrịọ a iji nweta ntọala ACM dị ugbu a (ọnụego baud, nkwụsị nkwụsị, parity, bit data). Maka emuomi nsonazụ, ọnụ ụzọ serial na-eziga arịrịọ a na-akpaghị aka n'oge oghere ọdụ ụgbọ mmiri COM mebere.
SetControlLineState Onye ọbịa ahụ na-eziga arịrịọ a iji jikwaa onye na-ebu ya maka modem ọkara duplex wee gosi na Ngwa Terminal Data (DTE) adịla njikere ma ọ bụ na ọ bụghị. N'okwu ikpe emulation serial, DTE bụ ọnụ ala. Maka emuomi nsonso, ụfọdụ ọdụ nsoro na-enye gị ohere izipu arịrịọ a site na iji njikwa njikwa.
Ntọala nkwụsịtụ
Onye ọbịa ahụ na-eziga arịrịọ a ka imepụta oge ezumike ụdị RS-232. Maka emuomi nsonazụụ, ụfọdụ ọdụ serial na-enye gị ohere izipu arịrịọ a.
Silicon Labs9 ACM subclass na-eji nkwụsịtụ IN njedebe iji mee ka onye ọbịa mara maka ọnọdụ ahịrị dị ugbu a. Oghere Usoro ahụ
line state bụ bitmap na-agwa onye ọbịa gbasara:
Atụfuru data n'ihi ngabigara mperi mperi Parity Ịmepụta njehie ọnọdụ mgbanaka nchọpụta mgbanaka Ọnọdụ nke usoro nchọpụta nkwụsịtụ Ọnọdụ mbufe steeti nchọpụta ihe na-ebufe ihe
Mmejuputa subclass Silicon Labs9 ACM na-akwado nkọwa ndị a:
Ụgbọ ala Serial Universal, Communications, Subclass for PSTN Devices, Ndozigharị 1.2, February 9, 2007.
Ngwa USB CDC ACM nhazi klas
Akụkụ a na-atụle otu esi ahazi klas CDC ACM (Klas ngwaọrụ nzikọrịtara, Model Control Abstract). Enwere otu abụọ nke paramita nhazi:
Ngwa klaasị CDC CDC ACM nhazi nhazi ọkwa klas USB Ngwaọrụ CDC ACM
Ngwa klaasị CDC CDC ACM nhazi nhazi
CDC Base Class ACM Subclass
Klas nke CDC
Mbụ, iji jiri Silicon Labs USB ngwaọrụ CDC klas modul, ị ga-mkpa ịgbanwe CDC ikpokọta-oge nhazi #define-s dị ka ngwa gị chọrọ. Achikọtara ha n'ime isi sl_usbd_core_config.h file n'okpuru ngalaba CDC. Ebumnuche ha bụ ịgwa modul ngwaọrụ USB gbasara ole ihe USB CDC ga-ekenye.
Nwebiisinka © 2025 Silicon Laboratories. Ikike niile echekwabara.
22/174
gafereview
Tebụlụ dị n'okpuru na-akọwa mpaghara nhazi ọ bụla dị na nhazi nhazi a.
Tebụl – Nhazi ngwaọrụ USB CDC kọwapụta
Aha nhazi
SL_USBD_CDC_CL AS S_INSTANCE_QUANT ITY
SL_USBD_CDC_CONF IGURATION_QUANTI
TY
SL_USBD_CDC_DATA _INTERFACE_QUANTI
TY
Nkọwa
Ọnụọgụ klaasị ị ga-ekenye site na oku na ọrụ ahụ
sl_usbd_cdc_acm_create_instance() .
Ọnụọgụ nhazi. Enwere ike itinye oge klaasị ACM na otu ma ọ bụ karịa aaa configur tions vi c ll na sl_usbd_cdc_acm_add_to_configuration() .
Ngụkọta ọnụọgụ ọnụọgụ data (DCI) maka ọrụ CDC niile. Ọrụ CDC ACM ọ bụla aaaaaaaaa dded vi c ll na ọrụ sl_usbd_cdc_acm_create_instance() ga-ddt interf ce.
Uru ndabara
2
1
2
ACM Subclass
Subclass ACM nwere otu nhazi oge nchikota egosiri na tebụl dị n'okpuru.
Tebụl – Ngwaọrụ USB CDC ACM Nhazi Kọwaa
Aha nhazi
SL_USBD_CDC_ACM_SUBCL ASS_I NSTANCE_QUANTITY
Nkọwa
Na-ahazi ọnụọgụ nke ikpe subclass ị ga-ekenye site na oku na-aga
ọrụ sl_usbd_cdc_acm_create_instance() .
Uru ndabara
2
Ngwa USB CDC ACM nhazi ọkwa klas
Akụkụ a na-akọwa nhazi ndị metụtara CDC ACM serial class class. klaasị Creation ahịrị steeti etiti oge oku mgmt ike p_acm_callbacks
Okike ihe atụ
Iji mepụta ihe atụ klas serial CDC ACM, kpọọ ọrụ T a sl_usbd_cdc_acm_create_instance() . ọrụ ya t kes atọ nhazi arụmụka, dị ka akọwara ebe a.
ogologo oge_steeti
Nke a bụ nkeji (na milliseconds) ka ihe atụ klaasị CDC ACM gị ga-akọ ọkwa ọkwa steeti ahụ nye ndị ọbịa T aa. vlue ya ga-abụrịrị ike nke abụọ (1, 2, 4, 8, 16, wdg).
ịkpọ_mgmt_ike
Bitmap Ike njikwa oku. Uru enwere ike nke bitmap bụ ndị a:
Uru (bit)
SL_USBD_ACM_SERIAL_CALL_MGMT_DEV
SL_USBD_ACM_SERIAL_CALL_MGMT_DATA_CCI _DCI
Nkọwa
Ngwaọrụ na-ejikwa njikwa oku n'onwe ya. Ngwaọrụ nwere ike izipu/nata ozi njikwa oku n'elu interface Class Data.
p_acm_callbacks
Nwebiisinka © 2025 Silicon Laboratories. Ikike niile echekwabara.
23/174
gafereview
aa M aa p_acm_callbacks bụ ntụnye aka na nhazi nke ụdị sl_usbd_cdc_acm_callbacks_t. Ebumnuche ya bụ inye CDC AC Cl ss setịpụ ọrụ ịkpọghachi ka a ga-akpọ mgbe ihe omume CDC ACM mere. Ọ bụghị nkwụghachi azụ niile bụ iwu na enwere ike ịfefe pointer null (NULL) na mgbanwe nhazi oku azụ mgbe ọ dịghị mkpa. Tebụlụ dị n'okpuru na-akọwa mpaghara nhazi ọ bụla dị na nhazi nhazi a.
Tebụl – sl_usbd_cdc_acm _callbacks_t Nhazi Nhazi
Ubi
Nkọwa
.kwaa
A na-akpọ mgbe agbanyere ihe atụ USB
nke ọma.
.gbanyụọ
Akpọrọ ya mgbe agbanyụrụ ihe atụ klaasị USB.
.line_control_changed Akpọrọ mgbe enwetara mgbanwe njikwa ahịrị.
line_coding_changed A na-akpọ mgbe anabatara mgbanwe koodu ahịrị.
mbinye aka ọrụ
ngwa efu_usbd_cdc_acm_enable(uint8_t subclass_nbr);
ngwa efu_usbd_cdc_acm_disable(uint8_t subclass_nbr);
efu app_usbd_cdc_acm_line_control_changed (uint8_t subclass_nbr, uint8_t omume, uint8_t event_chngd); bool app_usbd_cdc_acm_line_coding_changed (uint8_t subclass_nbr, subclass_nbr, sl_usbd_cdc_acm_line_coding_t
*p_line_coding
Hụ ngalaba Ịdenye aha ngosi ihe omume azụghachi azụ maka ọrụ ịkpọghachite example.
Ngwaọrụ USB CDC ACM ntuziaka mmemme klas
Akụkụ a na-akọwa otu esi eji klas CDC Abstract Control Model. Ịmalite ngwaọrụ USB CDC ACM Klas Na-agbakwunye ngwaọrụ USB CDC ACM klaasị na ngwaọrụ gị iji klas CDC ACM na-ekwurịta okwu.
Na-ebido klaasị CDC ACM USB ngwaọrụ
Iji tinye arụmọrụ klas CDC ACM na ngwaọrụ gị, ị ga-ebu ụzọ malite klaasị CDC na subclass ACM site n'ịgụ ọrụ sl_usbd_cdc_init() nd sl_usbd_cdc_acm_init() . T aaaaa he exmple n'okpuru na-egosi ka esi cll sl_usbd_cdc_init() nd sl_usbd_cdc_acm_init() iji def ult rguments.
Example – Mmalite klas CDC ACM
sl_status_t ọkwa;
ọnọdụ = sl_usbd_cdc_init (); ma ọ bụrụ (ọnọdụ ! SL_STATUS_OK) {/*Enwere mperi. Ekwesịrị ịgbakwunye njikwa mperi ebe a. */
}
ọnọdụ = sl_usbd_cdc_acm_init (); ma ọ bụrụ (ọnọdụ ! SL_STATUS_OK) {/*Enwere mperi. Ekwesịrị ịgbakwunye njikwa mperi ebe a. */
}
Ịtinye ngwaọrụ USB CDC ACM klas na ngwaọrụ gị
Ka ịgbakwunye arụmọrụ klas CDC ACM na ngwaọrụ gị, ị ga-emepụta ihe atụ, wee tinye ya na nhazi(s) ngwaọrụ gị.
Ịmepụta CDC ACM Class Class
Nwebiisinka © 2025 Silicon Laboratories. Ikike niile echekwabara.
24/174
gafereview
Na-agbakwụnye klaasị CDC ACM na nhazi(s) ngwaọrụ gị ịdenye aha ngosi ihe omume azụghachi azụ
Ịmepụta CDC ACM Class Class
aa M aaa Cre te CDC AC cl ss inst nce site na clling ọrụ sl_usbd_cdc_acm_create_instance() . T aaa M aaa he ex mple n'okpuru na-egosi otu esi emepụta CDC AC cl ss inst nce vi sl_usbd_cdc_acm_create_instance() .
Example - Mepụta ọrụ CDC ACM site na sl_usbd_cdc_acm_create_instance()
uint8_t subclass_nbr; sl_status_t ọkwa;
ọnọdụ = 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);
ma ọ bụrụ (ọnọdụ ! SL_STATUS_OK) {/*Enwere mperi. Ekwesịrị ịgbakwunye njikwa mperi ebe a. */
}
Na-agbakwunye CDC ACM klas na nhazi(s) ngwaọrụ gị
Mgbe ịmechara ihe atụ klas CDC ACM, ị nwere ike itinye ya na nhazi site na ịkpọ ọrụ ahụ
sl_usbd_cdc_acm_add_to_configuration() .
T aa he exmple n'okpuru na-egosi ka esi cll sl_usbd_cdc_acm_add_to_configuration() .
Example - Kpọọ na USBD ACM sl_usbd_cdc_acm_add_to_configuration()
sl_status_t ọkwa;
ọnọdụ = sl_usbd_cdc_acm_add_to_configuration (subclass_nbr,
(1)
config_nbr_fs);
(2)
ọ bụrụ (ọnọdụ ! SL_STATUS_OK) {
/* Njehie mere. Ekwesịrị ịgbakwunye njikwa mperi ebe a. */
}
aaa (1) Cl ss nọmba iji dd na nhazi nhazi nke sl_usbd_cdc_acm_create_instance() weghachiri . (2) Nọmba nhazi (ebe a na-agbakwunye ya na nhazi ọsọ ọsọ).
Ịdenye aha ngosi ihe omume azụghachi azụ
Klas Serial CDC ACM nwere ike ịgwa ngwa gị maka mgbanwe ọ bụla na njikwa ahịrị ma ọ bụ itinye koodu site na ọrụ ịkpọghachite ọkwa. Enwere ike ịgafe nhazi ọrụ ịkpọghachi azụ dị ka arụmụka n'oge ihe atụ ACM. Rịba ama na nkwụghachi azụ ndị ahụ bụ nhọrọ. ỌpụampNdebanye aha oku CDC ACM na-egosi ojiji nke ọrụ ndebanye aha oku. Ọpụample – CDC ACM mmejuputa oku azu na-egosi ihe mbuample nke mmejuputa atumatu nke callback ọrụ.
Example – CDC ACM Ndebanye aha oku
Nwebiisinka © 2025 Silicon Laboratories. Ikike niile echekwabara.
25/174
gafereview
uint8_t subclass_nbr; sl_status_t ọkwa;
sl_usbd_cdc_acm_callbacks_t sli_usbd_cdc_acm_callbacks = {app_usbd_cdc_acm_connect, app_usbd_cdc_acm_disconnect, app_usbd_cdc_acm_line_control_changed_, app_uscod
ọnọdụ = 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_nbr);
ma ọ bụrụ (ọnọdụ ! SL_STATUS_OK) {/*Enwere mperi. Ekwesịrị ịgbakwunye njikwa mperi ebe a. */}
Example – Mmejuputa oku CDC ACM
bool app_usbd_cdc_acm_line_coding_changed (uint8_t
subclass_nbr,
sl_usbd_cdc_acm_line_coding_t *p_line_coding)
{
uint32_t baudrate_new;
uint8_t parity_ọhụrụ;
uint8_t stop_bits_ọhụrụ;
uint8_t data_bits_ọhụrụ;
/* TODO Tinye koodu ntinye ọhụrụ.*/ baudrate_new = p_line_coding->BaudRate; parity_new = p_line_coding->Parity; stop_bits_new = p_line_coding->StopBits; data_bits_new = p_line_coding->DataBits;
nloghachi (ezi);
(1)
}
efu app_usbd_cdc_acm_line_control_changed (uint8_t subclass_nbr, uint8_t omume, uint8_t event_changed)
{bool rts_state; bool rts_state_gbanwere; bool dtr_state; bool dtr_state_gbanwere; bool brk_state; bool brk_state_gbanwere;
/* TODO Tinye akara ahịrị ọhụrụ. */ rts_state = ((omume & SL_USBD_CDC_ACM_CTRL_RTS) ! 0)? eziokwu: ụgha; rts_state_changed = ((omume_gbanwere & SL_USBD_CDC_ACM_CTRL_RTS) ! 0)? eziokwu: ụgha; dtr_state = ((omume & SL_USBD_CDC_ACM_CTRL_DTR) ! 0)? eziokwu: ụgha; dtr_state_changed = ((omume_gbanwere & SL_USBD_CDC_ACM_CTRL_DTR) ! 0)? eziokwu: ụgha; brk_state = ((omume & SL_USBD_CDC_ACM_CTRL_BREAK) ! 0)? eziokwu: ụgha; brk_state_changed = ((omume_gbanwere & SL_USBD_CDC_ACM_CTRL_BREAK) ! 0)? eziokwu: ụgha;
}
(1) Ọ dị mkpa ịlaghachi ụgha na ọrụ a ma ọ bụrụ na ntinye ahịrị etinyeghị. Ma ọ bụghị ya, laghachi eziokwu.
Iji Klas CDC ACM na-ekwurịta okwu
Oghere Usoro Ọnọdụ
Njikwa akara akara ahịrị
Nwebiisinka © 2025 Silicon Laboratories. Ikike niile echekwabara.
26/174
gafereview
Line State Subclass Instance Nkwukọrịta
Oghere Usoro Ọnọdụ
Ntinye ahịrị
Ndị ọbịa USB na-ejikwa akara ahịrị (ọnụego baud, parity, wdg) nke ngwaọrụ CDC ACM. Mgbe ọ dị mkpa, ngwa ahụ na-ahụ maka ịtọ koodu ntinye ahịrị. Enwere ọrụ abụọ enyere iji weghachite ma tọọ koodu ahịrị dị ugbu a, dịka akọwara na tebụl dị n'okpuru.
Tebụl – Ọrụ Ndokwa Ahịrị CDC ACM
Ọrụ
sl_usbd_cdc_acm_g e t_line _co d ing ()
sl_usbd_cdc_acm_s e t_line _co d ing ()
Nkọwa
Ngwa gị nwere ike nweta ntọala nzuzo nke dị ugbu a ma ọ bụ site na onye ọbịa nwere arịrịọ SetLineCoding ma ọ bụ jiri ọrụ sl_usbd_cdc_acm_set_line_coding() .
Ngwa gị nwere ike ịtọ koodu ntinye ahịrị. Onye ọbịa nwere ike weghachite ntọala site na arịrịọ GetLineCoding.
Njikwa ahịrị
Ndị ọbịa USB na-ejikwa akara ahịrị (RTS na DTR pin, mgbanaka nkwụsịtụ, na ihe ndị ọzọ) nke ngwaọrụ CDC ACM. Mgbe ọ dị mkpa, ngwa gị nwere ọrụ maka itinye njikwa ahịrị. A na-enye ọrụ iji weghachite na ịtọ njikwa ahịrị dị ugbu a, dịka akọwara na tebụl dị n'okpuru.
Tebụl - Ọrụ njikwa akara CDC ACM
Ọrụ
sl_usb d _cd c_acm_g e t_line _co ntr o l_state ()
Ngwa gị nwere ike nweta ọnọdụ ahịrị njikwa ugbu a site n'aka onye ọbịa nwere arịrịọ SetControlLineState.
Steeti Line
Onye nnabata USB na-eweghachite steeti ahịrị n'otu oge. Ngwa gị ga-emelite steeti ahịrị oge ọ bụla ọ gbanwere. Mgbe ọ dị mkpa, ngwa gị na-ahụ maka ịtọ steeti ahịrị. Enyere ọrụ abụọ iji weghachite na ịtọ njikwa ahịrị dị ugbu a, dịka akọwara na tebụl dị n'okpuru.
Tebụl – Ọrụ CDC ACM Line S tate
Ọrụ
sl_usb d _cd c_acm_se t _line _state _e ve nt()
sl_usbd_cdc_acm_cle ar_line _state _e ve nt()
Ngwa gị nwere ike ịtọ mmemme steeti ọ bụla. Mgbe ị na-edozi steeti ahịrị, a na-eziga nkwụsịtụ IN nyefe na onye ọbịa ka ọ gwa maka mgbanwe na steeti ahịrị.
Ngwa nwere ike ikpochapụ ihe omume abụọ nke steeti ahịrị: onye na-ebufe nnyefe na nchọpụta ihe nnata. Ihe omume ndị ọzọ niile bụ nke ACM serial emulation subclass na-ehichapụ onwe ya.
Nkwukọrịta Subclass Instance
Silicon Labs'ACM subclass na-enye ọrụ ndị a iji soro onye ọbịa kparịta ụka. Maka nkọwa ndị ọzọ gbasara paramita ọrụ9, hụ ntụnye aka ọrụ CDC ACM Subclass.
Aha ọrụ
sl_usb d _cd c_acm_ re ad () sl_usb d _cd c_acm_write ()
Ọrụ
Na-enweta data sitere n'aka onye ọbịa site na nnukwu njedebe njedebe. Ọrụ a na-egbochi. Na-eziga data na nnabata site na nnukwu ebe njedebe. Ọrụ a na-egbochi.
Nwebiisinka © 2025 Silicon Laboratories. Ikike niile echekwabara.
27/174
gafereview
Tebụl – CDC ACM Nkwukọrịta API Nchịkọta aaaaa sl_usbd_cdc_acm_read() nd sl_usbd_cdc_acm_write() na-enye nzikọrịta mmekọrịta, nke m na-egbochi ndị tr nsfer. N'ikwu ya n'ụzọ ọzọ, mgbe ị na-akpọ ọrụ ahụ, ngwa ahụ na-egbochi ruo mgbe mbufe zuru ezu ma ọ bụ na-enweghị njehie. Enwere ike ịkọwa oge nkwụsịtụ iji zere ichere ruo mgbe ebighị ebi. The example n'okpuru na-egosi a ịgụ na ide example na-enweta data n'aka onye ọbịa na-eji nnukwu njedebe OUT wee ziga data na onye ọbịa na-eji nnukwu njedebe IN njedebe.
Ndepụta – Serial Gụọ wee dee Example
__ALIGNED (4) uint8_t rx_buf[2];
__ALIGNED (4) uint8_t tx_buf[2];
uint32_t
xfer_len;
sl_status_t
ọnọdụ;
ọnọdụ = sl_usbd_cdc_acm_read(subclass_nbr,
(1)
rx_buf,
(2)
2u,
0u,
(3)
& xfer_len);
ọ bụrụ (ọnọdụ ! SL_STATUS_OK) {
/* Njehie mere. Ekwesịrị ịgbakwunye njikwa mperi ebe a. */
}
ọnọdụ = sl_usbd_cdc_acm_write (subclass_nbr,
(1)
tx_buf,
(4)
2u,
0u,
(3)
& xfer_len);
ọ bụrụ (ọnọdụ ! SL_STATUS_OK) {
/* Njehie mere. Ekwesịrị ịgbakwunye njikwa mperi ebe a. */
}
T aaaaa M (1) he cl ss inst nce nọmba cre ted with sl_usbd_cdc_acm_create_instance() na-enye n intern l ntụaka na AC subclass ka ụzọ nyefe na kwesịrị ekwesị nnukwu OUT ma ọ bụ na njedebe. (2) Ngwa gị ga-ahụrịrị na ihe nchekwa enyere maka ọrụ ahụ buru oke ibu iji nabata data niile. Ma ọ bụghị ya, nsogbu mmekọrịta nwere ike ime. (3) Iji zere ọnọdụ nkwụsị na-enweghị ngwụcha, kọwaa oge egosipụtara na milliseconds. Uru nke 809 na-eme ka ọrụ ngwa na-echere ruo mgbe ebighị ebi. (4) Ngwa a na-enye ihe nchekwa mbufe izizi.
Nwebiisinka © 2025 Silicon Laboratories. Ikike niile echekwabara.
28/174
gafereview
gafereview
Klas HID Ngwaọrụ USB
Ngwa USB HID Klas gafereview Ngwa USB HID klaasị mkpa sitere na Core USB Device HID Class Configuration USB Device HID Class Programming Guide HID Ọrụ mkpesa ntinye oge
Akụkụ a na-akọwa klaasị Ngwa Interface Human (HID) nke Silicon Labs USB Device kwadoro.
Klas HID gụnyere ngwaọrụ ndị mmadụ na-eji ejikwa arụ ọrụ kọmputa, dị ka ahụigodo, oke, ngwaọrụ na-atụ aka, na ngwaọrụ egwuregwu.
Enwere ike iji klaasị HID n'ime ngwaọrụ agwakọtara nwere njikwa dị ka knobs, switches, bọtịnụ, na sliders. Maka example, ogbi na njikwa olu na ekweisi ọdịyo bụ ọrụ HID nke ekweisi na-achịkwa. Klas HID nwere ike ịgbanwe data maka ebumnuche ọ bụla na-eji naanị njikwa na kwụsịtụ mbufe.
Klas HID bụ otu n'ime klaasị USB kacha ochie na a na-ejikarị eme ihe. Sistemụ arụ ọrụ nnabata niile na-enye onye ọkwọ ụgbọ ala iji jikwaa ngwaọrụ HID, nke mere na ngwaọrụ dị iche iche nke ndị na-ere ahịa na-arụ ọrụ na klas HID. Klas a gụnyekwara ụdị ihe mmepụta dị iche iche dị ka LEDs, ọdịyo, nzaghachi tactile, wdg.
Mmejuputa HID na-agbaso nkọwa ndị a:
Nkọwa klaasị ngwaọrụ maka ngwaọrụ ihu mmadụ (HID), 6/27/01, Ụdị 1.11. Tebụl eji eji ụgbọ ala Serial Universal, 10/28/2004, Ụdị 1.12.
Ngwa USB HID Klas gafereview
gafereview
Ngwa HID nwere njedebe njedebe ndị a:
Otu ụzọ njikwa IN na Ọpụpụ a na-akpọ ebe njedebe ndabara Nkwụsị na njedebe njedebe Nhọrọ nhọrọ nkwụsịtụ njedebe.
Tebụlụ dị n'okpuru na-akọwa ojiji nke njedebe njedebe dị iche iche:
Tebụl – HID klaasị njedebe ojiji
Ojiji ntụzịaka ngwụcha
Njikwa IN
Njikwa
Mpụ
Kwụsị IN
Kwụsị
Mpụ
Deviceto-onye ọbịa
Ngwa-ngwaọrụ
Deviceto-onye ọbịa
Ngwa-ngwaọrụ
Arịrịọ ọkọlọtọ maka ngụkọ, arịrịọ klaasị akọwapụtara, yana nzikọrịta data (Ntinye, akụkọ atụmatụ ezigara onye ọbịa na arịrịọ GET_REPORT). Arịrịọ ọkọlọtọ maka ngụkọ, arịrịọ klaasị akọwapụtara yana nzikọrịta data (Mpụta, akụkọ njirimara enwetara n'aka onye ọbịa nwere arịrịọ SET_REPORT). Nkwukọrịta data (Nkwupụta ntinye na atụmatụ).
Nkwukọrịta data (mpụta na atụmatụ atụmatụ).
Akuko
Nwebiisinka © 2025 Silicon Laboratories. Ikike niile echekwabara.
29/174
gafereview
Onye ọbịa na ngwaọrụ HID na-agbanwe data site na iji akụkọ. Akụkọ nwere data ahaziziri na-enye ozi gbasara njikwa na ihe anụ ahụ ndị ọzọ nke ngwaọrụ HID. Onye ọrụ nwere ike iji njikwa ma rụọ ọrụ akụkụ nke ngwaọrụ ahụ. Maka example, njikwa nwere ike ịbụ bọtịnụ na òké ma ọ bụ ahụigodo, mgba ọkụ, wdg. Ụlọ ọrụ ndị ọzọ na-agwa onye ọrụ gbasara ọnọdụ ụfọdụ njirimara ngwaọrụ9s. Maka example, LEDs na kiiboodu na-agwa onye ọrụ gbasara mkpọchi mkpuchi, igodo ọnụọgụ na-arụ ọrụ, wdg.
A na-aghọta usoro na ojiji nke data akụkọ site n'aka onye ọbịa site na nyochaa ọdịnaya nke onye na-akọwa akụkọ. A na-eme nyocha ọdịnaya site na nzacha. Onye na-akọwa akụkọ na-akọwa data nke njikwa ọ bụla na-enye na ngwaọrụ. Ọ mejupụtara ihe bụ iberibe ozi gbasara ngwaọrụ ma nwee prefix 1-byte na ogologo agbanwe agbanwe.
data. Maka nkọwa ndị ọzọ gbasara usoro ihe, rụtụ aka
1.11=, ngalaba 5.6 na 6.2.2.
Enwere ụdị ihe atọ bụ isi:
Isi ihe na-akọwa ma ọ bụ na-achịkọta ụfọdụ ụdị mpaghara data.
Ihe zuru ụwa ọnụ na-akọwa njirimara data nke njikwa.
Ihe mpaghara na-akọwa njirimara data nke njikwa.
A na-akọwa ụdị ihe ọ bụla site na ọrụ dị iche iche. Enwere ike ịkpọ ọrụ ihe a tag. Enwere ike ịhụ ọrụ ihe dị ka obere ihe bụ nke otu n'ime ụdị ihe atọ bụ isi. Tebụl dị n'okpuru na-enye nkọwa nkenkeview nke item9s na-arụ n'ụdị ihe ọ bụla. Maka nkọwa zuru oke nke ihe dị na ngalaba nke ọ bụla, lee
Tebụl – Nkọwapụta ọrụ nke ihe maka ụdị ihe ọ bụla
Ọrụ Ụdị Ihe
Nkọwa
Ntinye isi
Na-akọwa ozi gbasara data nke otu ma ọ bụ karịa njikwa anụ ahụ nyere.
Isi ihe na-akọwa data ezigara na ngwaọrụ ahụ.
Isi njirimara
Na-akọwa ozi nhazi ngwaọrụ ezigara ma ọ bụ natara na ngwaọrụ nke na-emetụta mkpokọta ngwaọrụ ma ọ bụ otu akụkụ ya.
Ihe ndị metụtara mkpokọta isi (Ntinye, mmepụta ma ọ bụ atụmatụ).
Isi njedebe nke na-emechi mkpokọta. Nchịkọta
Nwebiisinka © 2025 Silicon Laboratories. Ikike niile echekwabara.
30/174
gafereview
Ọrụ Ụdị Ihe
Nkọwa
Ibe ojiji zuru ụwa ọnụ
Na-achọpụta ọrụ dị n'ime ngwaọrụ.
Ihe mgbagha zuru ụwa ọnụ na-akọwapụta oke ala nke ụkpụrụ akọpụtara na nkeji ezi uche dị na ya. Opekempe
Ihe mgbagha zuru ụwa ọnụ na-akọwapụta oke elu nke ụkpụrụ akọpụtara na nkeji ezi uche dị na ya. Kachasị
Ahụhụ zuru ụwa ọnụ na-akọwapụta njedebe dị ala nke ụkpụrụ akọpụtara na nkeji anụ ahụ, ya bụ Opekempe Logical nke egosipụtara na nkeji anụ ahụ.
Anụ ahụ zuru ụwa ọnụ na-akọwapụta oke elu nke ụkpụrụ akọpụtara na nkeji anụ ahụ, ya bụ oke ezi uche dị na nkeji anụ ahụ.
Ngalaba zuru ụwa ọnụ
Na-egosi mgbanaka otu n'ime isi 10. Ihe nkwubi okwu sitere na -8 ruo +7.
Exponent
Ngalaba zuru ụwa ọnụ
Na-egosi nkeji nke ụkpụrụ a kọrọ. Dịka ọmụmaatụ, ogologo, oke, nkeji okpomọkụ, wdg.
Nha mkpesa zuru ụwa ọnụ
Na-egosi nha mpaghara akụkọ na ibe n'ibe.
NJ mkpesa zuru ụwa ọnụ na-egosi prefix agbakwunyere na otu akụkọ.
Ọnụọgụ mkpesa zuru ụwa ọnụ
Na-egosi ọnụọgụ mpaghara data maka ihe.
Push zuru ụwa ọnụ
Dowe otu tebụl steeti ihe zuru ụwa ọnụ na ngwugwu CPU.
Pop zuru ụwa ọnụ
Dochie tebụl steeti ihe ahụ na nhazi ikpeazụ site na tojupụtara.
Ojiji mpaghara
Na-anọchite anya ndeksi iji wepụta otu ojiji n'ime ibe ojiji. Ọ na-egosi ndị na-ere ahịa 9 tụrụ aro iji maka otu njikwa ma ọ bụ otu njikwa. Ojiji na-enye onye nrụpụta ngwa ozi gbasara ihe njikwa na-atụ n'ezie.
Ojiji mpaghara
Na-akọwapụta ojiji mmalite jikọtara ya na nhazi ma ọ bụ bitmap.
Opekempe
Ojiji mpaghara
Na-akọwapụta ojiji njedebe jikọtara ya na nhazi ma ọ bụ bitmap.
Kachasị
Onye nrụpụta mpaghara na-ekpebi akụkụ ahụ ejiri maka njikwa. Index na-atụ aka na onye na-emepụta ihe na anụ ahụ
Index
nkọwa.
Onye nrụpụta mpaghara na-akọwapụta ndeksi mmalite nke onye nrụpụta jikọtara ya na nhazi ma ọ bụ bitmap. Opekempe
Onye nrụpụta mpaghara na-akọwapụta ndeksi nke onye nrụpụta njedebe jikọtara ya na nhazi ma ọ bụ bitmap. Kachasị
Ndekọ eriri mpaghara
Ndekọ eriri maka onye nkọwa eriri. Ọ na-enye ohere ijikọ eriri na otu ihe ma ọ bụ njikwa.
eriri mpaghara
Na-akọwapụta ndepụta ahịrị eriri nke mbụ mgbe ị na-ekenye otu eriri usoro na njikwa n'usoro
Opekempe ma ọ bụ bitmap.
Mpaghara Mpaghara
Eriri kacha
Ihe mgbochi
Na-akọwapụta ndepụta eriri ikpeazụ mgbe ị na-ekenye otu eriri usoro na njikwa n'usoro ma ọ bụ bitmap.
Na-akọwa mmalite ma ọ bụ njedebe nke otu ihe mpaghara.
Data control9s ga-akọwarịrị opekata mpe ihe ndị a:
Ntinye, mpụta ma ọ bụ atụmatụ bụ isi ihe eji ihe mpaghara ojiji ibe ibe ihe zuru ụwa ọnụ ihe ezi uche dị na ya kacha nta zuru ụwa ọnụ ihe ezi uche dị na ya kacha ihe zuru ụwa ọnụ Akụkọ nha ihe zuru ụwa ọnụ
Nwebiisinka © 2025 Silicon Laboratories. Ikike niile echekwabara.
31/174
gafereview
Kpọọ gụta ihe zuru ụwa ọnụ Tebụlụ dị n'okpuru na-egosi nnochite anya ihe nkọwapụta akụkọ òké sitere na nzacha HID ndị ọbịa. Òké ahụ nwere bọtịnụ atọ (aka ekpe, aka nri na wiil). Koodu ewepụtara na example n'okpuru ebe a bụ koodu mmejuputa iwu kwekọrọ na nke a òké Report nkọwa nnọchiteanya.
Ọnụọgụgụ – Kpọọ ọdịnaya nkọwa sitere na Parser HID onye ọbịa View
(1) Ọrụ ihe eji arụ ọrụ na-akọwapụta ọrụ izugbe nke ngwaọrụ ahụ. Na nke a example, ngwaọrụ HID bụ nke a
njikwa desktọpụ ọnyà.
(2) Otu mkpokọta ngwa ngwa bụ isi ihe nwere ebumnuche nwere ike mara ngwa. N'ime eserese ahụ, otu ahụ nwere ihe isi ntinye atọ. Maka mkpokọta a, ihe atụ aro maka njikwa bụ òké dịka ihe eji egosi. (3) Enwere ike iji mkpokọta akwụ ụgwọ nye nkọwa ndị ọzọ gbasara iji otu njikwa ma ọ bụ otu njikwa na ngwa. Na nke a example, mkpokọta anụ ahụ, nke etinyere n'ime Ngwa mkpokọta, bụ otu ihe ntinye atọ ahụ mejupụtara Ngwa mkpokọta. A na-eji ahụ mkpokọta mkpokọta maka usoro ihe data na-anọchite anya isi data anakọtara n'otu ebe geometric. Na examplee, ojiji a tụrụ aro bụ ntụnye dị ka ihe eji egosi. N'ebe a, ojiji pointer na-ezo aka na nhazi ọnọdụ òké na sọftụwia sistemụ ga-atụgharị asụsụ nhazi nke òké na mmegharị nke cursor ihuenyo. (4) Ibe ojiji etinyere nwekwara ike inye nkọwa ndị ọzọ gbasara otu akụkụ n'ime ọrụ izugbe nke ngwaọrụ ahụ. N'okwu a, a na-achịkọta ihe ntinye abụọ ma kwekọọ na bọtịnụ òké. Otu ihe ntinye na-akọwa bọtịnụ atọ nke òké (aka nri, aka ekpe na wiil) n'ihe gbasara ọnụọgụ data maka ihe (Ngụkọta akụkọ), nha nke mpaghara data (ihe nha mkpesa) na ụkpụrụ enwere ike maka mpaghara data ọ bụla (Ojiji kacha nta na nke kachasị, ihe ezi uche dị na ya kacha nta na ihe kachasị). Ihe ntinye nke ọzọ bụ 13-bit mgbe niile na-ekwe ka data mkpesa ntinye kwekọọ na oke byte. A na-eji ihe ntinye a naanị maka ihe nkpuchi. (5) Ibe ojiji ọzọ akwụkwụ na-ezo aka na njikwa desktọpụ ọnyà ka akọwara maka nhazi ọnọdụ òké. Maka ibe ojiji a, ihe ntinye na-akọwa mpaghara data kwekọrọ na x- na y-axis dị ka ejiri ụzọ abụọ ahụ akọwapụtara.
ihe.
Mgbe nyochachara ọdịnaya ihe nkọwa òké gara aga, onye nyocha HID host9s nwere ike ịtụgharị data mkpesa ntinye nke ngwaọrụ zitere site na nkwụsịtụ na mbufe ma ọ bụ na nzaghachi na arịrịọ GET_REPORT. Data mkpesa ntinye kwekọrọ na nkọwa nkọwa òké egosiri na ọnụ ọgụgụ - Kọwaa ọdịnaya nke nkọwa sitere na onye nyocha HID onye ọbịa. View is
Nwebiisinka © 2025 Silicon Laboratories. Ikike niile echekwabara.
32/174
gafereview
gosiri na tebụl n'okpuru. Ngụkọta nha nke data akụkọ bụ 4 bytes. Enwere ike izipu ụdị akụkọ dị iche iche n'otu ebe njedebe. Maka ebumnuche ịmata ọdịiche dị iche iche nke akụkọ, a na-agbakwunye prefix ID akụkọ 1-byte na akụkọ data. Ọ bụrụ na ejiri ID akụkọ na exampN'ime akụkọ òké, mkpokọta data akụkọ ga-abụ 5 bytes.
Tebụl – Ozi ntinye aka ezigara onye ọbịa yana kwekọrọ na steeti òké bọtịnụ 3
Bit Offset
0 1 2 3 16
Ọnụ ọgụgụ Bit 1 1 1 13 8 8
Bọtịnụ nkọwa 1 (bọtịnụ aka ekpe). Bọtịnụ 2 (bọtịnụ aka nri). Bọtịnụ 3 (bọtịnụ wheel). Ejighi ya. Ọnọdụ na axis X. Ọnọdụ na axis Y.
Nkọwa nke anụ ahụ na-egosi akụkụ ma ọ bụ akụkụ ahụ ezubere iji mee ka njikwa ma ọ bụ njikwa rụọ ọrụ. Ngwa nwere ike iji ozi a ekenye ọrụ na njikwa ngwaọrụ. Nkọwa anụ ahụ bụ nhọrọ klaasị akọwapụtara nke ọma yana ọtụtụ ngwaọrụ enweghị obere uru maka iji ya. Tụtụ aka na
Ngwa USB HID Klas akụrụngwa chọrọ site na isi
Oge ọ bụla ị gbakwunye ihe atụ klaasị HID na nhazi USB site na oku na ọrụ sl_usbd_hid_add_to_configuration() , a ga-ekenye ihe ndị a site na isi.
Akụrụngwa
Oghere ndị ọzọ dị iche iche Njikọ njedebe
Ọnụọgụ
1 1 1 (2 ma ọ bụrụ na agbanyere nkwụsị njedebe OUT) 0
Rịba ama na ọnụọgụ ndị ahụ bụ maka nhazi. Mgbe ị na-edozi ụkpụrụ nhazi SL_USBD_INTERFACE_QUANTITY , SL_USBD_ALT_INTERFACE_QUANTITY , SL_USBD_INTERFACE_GROUP_QUANTITY na SL_USBD_DESCRIPTOR_QUANTITY nhazi ụkpụrụ, echefula iburu n'uche nhazi ole a ga-agbakwunye na klas ahụ. Maka uru nhazi SL_USBD_OPEN_ENDPOINTS_QUANTITY, ebe ọ bụ na a na-emepe njedebe njedebe naanị mgbe onye ọbịa na-ahazi nhazi, naanị ị ga-eburu n'uche ọnụọgụ njedebe achọrọ maka ihe atụ klaasị.
Nhazi klas HID ngwaọrụ USB
A na-eji otu abụọ nhazi nhazi nhazi klaasị HID:
Ngwa klaasị HID Ngwaọrụ USB-Nhazi klaasị Ngwa USB Ngwaọrụ HID klaasị Nhazi klaasị
Ngwa klaasị HID Ngwaọrụ USB-Nhazi akọwapụtara
Nke mbụ, iji jiri Silicon Labs USB ngwaọrụ HID klaasị, gbanwee nhazi oge nchịkọta oge HID na-akọwa dịka mkpa ngwa gị siri dị. Achikọtara ha n'ime isi sl_usbd_core_config.h file n'okpuru ngalaba HID. Enwere ike kewaa ha na ngalaba abụọ, nhazi ọnụọgụ na nhazi ọrụ HID. Ebumnuche nhazi ọnụọgụgụ bụ ịgwa modul ngwaọrụ USB gbasara ole ihe USB HID ga-ekenye.
Tebụl dị n'okpuru na-akọwa nhazi ọ bụla akọwapụtara.
Tebụl – Ngwa USB HID Nhazi Kọwaa
Nwebiisinka © 2025 Silicon Laboratories. Ikike niile echekwabara.
33/174
gafereview
Aha nhazi
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
Nkọwa
Ọnụọgụ klaasị ị ga-ekenye site na oku na ọrụ ahụ
sl_usbd_hid_create_intance() .
Ọnụọgụ nhazi. Enwere ike ịgbakwunye ihe atụ klaasị HID na otu ma ọ bụ karịa aaa configur tions vi c ll na ọrụ sl_usbd_hid_add_to_configuration() . Na-ahazi mkpokọta ọnụọgụ NJ mkpesa iji kenye.
Na-ahazi ọnụọgụgụ ihe Push/Pop iji kenye.
Ọrụ ngụ oge na-ejikwa ọrụ HID niile dabere na ngụ oge. Nhazi a na-enye gị ohere ịtọ nha nha (na ọnụọgụ bytes). Ihe mbụ nke ọrụ HID. nke ya bụ CMSIS-RTOS2 mkpa.
Uru ndabara
2 1 2 0 2048
osPriorityHigh
Ngwa USB HID Klas Nhazi klaasị subclass Creation Instance
protocol obodo_code
interval_in na interval_out p_hid_callback HID klaasị nkọwa ExampAkụkụ a na-akọwa nhazi ndị metụtara ọnọdụ klas HID.
Okike ihe atụ
Ịmepụta ihe atụ klaasị HID na-eme site n'ịkpọ ọrụ aaa sl_usbd_hid_create_instance() , nke t kes sever l configur tion arụmụka akọwara n'okpuru.
subclass
Koodu nke subclass HID. Ụkpụrụ nwere ike ịbụ:
SL_USBD_HID_SUBCL ASS_NONE SL_USBD_HID_SUBCL ASS_BOOT
Ngwa HID nke na-eji subclass boot ga-eji ụdị mkpesa ọkọlọtọ. Maka ozi ndị ọzọ na koodu subclass, lee ngalaba 4.2 nke nkọwa nkọwa HID 1.11.
protocol
Protocol nke ngwaọrụ HID na-eji. Ụkpụrụ nwere ike ịbụ:
SL_USBD_HID_PROTOCOL_NONE SL_USBD_HID_PROTOCOL_KBD SL_USBD_HID_PROTOCOL_MOUSE
Ọ bụrụ na ọrụ HID gị bụ òké, ekwesịrị ịtọ protocol ka ọ bụrụ SL_USBD_HID_PROTOCOL_MOUSE . Ọ bụrụ na ọ bụ igodo igodo, ekwesịrị ịtọ ya na SL_USBD_HID_PROTOCOL_KBD . ya mere, a ga-edozi protocol ka ọ bụrụ SL_USBD_HID_PROTOCOL_NONE . Maka ozi ndị ọzọ na koodu subclass, lee ngalaba 4.3 nke nkọwa nkọwa HID 1.11.
koodu obodo
NJ koodu obodo. Ụkpụrụ nwere ike ịbụ:
SL_USBD_HID_COUNTRY_CODE_NOT_SUPPORTED
Nwebiisinka © 2025 Silicon Laboratories. Ikike niile echekwabara.
34/174
gafereview
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_COUNTERY_CODE_CPUAL 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_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_COSLRY_USBD_COSLRY ATIN_AMERICAN 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 NA SL_USBD_COUNTRY_CODE_POL SL_USBD_HID_COUNTRY_CODE_RUSSIA SL_USBD_HID_COUNTRY_CODE_SLOVAKIA SL_USBD_HID_COUNTRY_CODE_SPANISH SL_USBD_HID_COUNTRY_CODE_SWEDISH SL_USBD_HID_COUNTRY_CODE_SWISS_FRENCH SL_USBD_HID_COUNTRY_CODE_SWISS_GERMAN SL_USBD_HID_COUNTRY_CODE_SWITZERL NA SL_USBD_HID_COUNTRY_CODE_TAIWAN SL_USBD_HID_COUNTRY_CODE_TURKISH_Q SL_USBD_HID_COUNTRY_COBD_UK SL_USBD_HID_COUNTRY_COBD SL_USBD_HID_COUNTRY_CODE_YUG OSL AVIA SL_USBD_HID_COUNTRY_CODE_TURKISH_F
Koodu obodo na-achọpụta obodo nke etinyere maka ngwaike. Ọtụtụ ngwaike anaghị ahazi ya, yabụ aaaav lue a ga-abụ SL_USBD_HID_COUNTRY_CODE_NOT_SUPPORTED (0). Agbanyeghị, igodo igodo ka m jiri ubi ahụ gosi asụsụ nke isi igodo.
Maka ozi ndị ọzọ na koodu obodo, lee ngalaba 6.2.1 nke nkọwa nkọwa HID 1.11.
interval_in na interval_out
interval_in na interval_out na-anọchi anya oge ntuli aka nke IN nkwụsị nkwụsị na njedebe nkwụsị OUT.
Nke a na-anọchite anya oge ntuli aka nke njedebe njedebe, na milliseconds. Ịtọlite uru a dabere na ugboro ole ngwaọrụ gị nwere ike iwepụta akụkọ ọhụrụ maka onye ọbịa. Dịka ọmụmaatụ, ọ bụrụ na ewepụtara akụkọ ọ bụla milliseconds 16, etiti oge kwesịrị ịbụ 16 ma ọ bụ obere.
Uru ahụ ga-abụrịrị ike nke 2 (1, 2, 4, 8, 16, wdg).
A na-eleghara interval_out v lue anya ma ọ bụrụ na edobere ctrl_rd_en ka ọ bụrụ eziokwu.
p_hid_ịkpọghachi
aaa p_hid_callback bụ ntụnye aka na nhazi nke ụdị sl_usbd_hid_callbacks_t. Ebumnuche ya bụ inye HID Cl ss setịpụ ọrụ ịkpọghachi ka a ga-akpọ mgbe mmemme HID mere.
Nwebiisinka © 2025 Silicon Laboratories. Ikike niile echekwabara.
35/174
gafereview
Ọ bụghị nkwụghachi azụ niile bụ iwu na enwere ike ịfefe pointer null (NULL) na mgbanwe nhazi oku azụ mgbe ọ dịghị mkpa. Tebụlụ dị n'okpuru na-akọwa mpaghara nhazi ọ bụla dị na nhazi nhazi a.
Tebụl – sl_usbd_hid_callbacks_t Nhazi Nhazi
Ubi
Nkọwa
mbinye aka ọrụ
.gbanyụọ .get_report_desc
.nweta_phy_desc
.set_output_akụkọ . nweta_feature_akụkọ .set_feature_report
A na-akpọ mgbe agbanyere ihe atụ USB nke ọma. Akpọrọ ya mgbe agbanyụrụ ihe atụ klaasị USB.
A na-akpọ ya n'oge mmepụta HID ka ọ nyefee onye na-akọwa akụkọ gị. Maka ọrụ HID gị ọ bụla, ị ga-enyerịrị nkọwa nkọwa. Onye na-akọwa akụkọ na-egosi onye ọbịa ka esi atụgharị akụkọ oge nke ngwaọrụ ga-ezite. Ide nkọwa nkọwa nke gị nwere ike bụrụ ihe ịma aka, ya mere enwere ụfọdụ akụrụngwa iji nyere aka. Nke a bụ naanị ọrụ nkwụghachi azụ a manyere iwu. A na-akpọ ya n'oge okike HID ka ọ gafere onye nkọwa anụ ahụ gị. Nkọwa nke anụ ahụ bụ nkọwa nke na-enye ozi gbasara akụkụ ma ọ bụ akụkụ nke ahụ mmadụ na-arụ ọrụ njikwa ma ọ bụ njikwa. Maka ozi ndị ọzọ gbasara nkọwa anụ ahụ, lee ngalaba 6.2.3 nke nkọwa nkọwa HID 1.11. Nkọwa anụ ahụ bụ nhọrọ ma na-eleghara ọtụtụ oge anya. Enwere ike ịtọ ihe nchekwa ahụ gafere ebe a ka ọ bụrụ NULL na ogologo ya ka ọ bụrụ 0. A na-akpọ ya mgbe onye ọbịa na-ahazi akụkọ dịka akọwara na onye na-akọwa akụkọ gị (mgbe ọ na-eziga akụkọ).
A na-akpọ mgbe onye nnabata rịọrọ mkpesa atụmatụ dịka akọwara n'ime onye na-akọwa akụkọ gị.
A na-akpọ ya mgbe onye nnabata na-ahazi mkpesa atụmatụ dịka akọwara n'ime onye na-akọwa akụkọ gị.
ngwa efu_usbd_hid_enable(uint8_t class_nbr); ngwa efu_usbd_hid_disable(uint8_t class_nbr); ngwa efu_usbd_hid_get_report_desc (uint8_t class_nbr, const uint8_t *p_report_ptr, uint16_tp_report_len);
ngwa efu_usbd_hid_get_phy_desc(uint8_t class_nbr, const uint8_t *p_report_ptr, uint16_tp_report_len);
void app_usbd_hid_set_output_report(uint8_t class_nbr, uint8_t report_id, uint8_t *p_report_buf, uint16_t report_len); ngwa efu_usbd_hid_get_feature_report (uint8_t class_nbr, uint8_t report_id, uint8_t *p_report_buf, uint16_t report_len); efu app_usbd_hid_set_feature_report (uint8_t class_nbr, uint8_t report_id, uint8_t *p_report_buf, uint16_t report_len);
.nweta_protocol
Na-eweghachite protocol na-arụ ọrụ ugbu a.
ngwa efu_usbd_hid_get_protocol(uint8_t class_nbr, uint8_t *p_protocol);
.set_protocol
Na-edozi protocol na-arụ ọrụ ugbu a.
ngwa efu_usbd_hid_set_protocol(uint8_t class_nbr, uint8_t protocol);
Onye nkọwa akụkọ klaasị HID Example
Klas HID nke Silicon Labsample ngwa na-enye example nke onye na-akọwa akụkọ maka òké dị mfe. The example n'okpuru na-egosi a òké akụkọ nkọwa.
Example – Mouse Report Descriptor
static uint8_t app_usbd_hid_report_desc[] = {
(1) (2)
SL_USBD_HID_GLOBAL_USAGE_PAGE + 1, SL_USBD_HID_USAGE_PAGE_GENERIC_DESKTOP_CONTROLS,
SL_USBD_HID_LOCAL_USAGE + 1, SL_USBD_HID_CA_MOUSE,
(3)
Nwebiisinka © 2025 Silicon Laboratories. Ikike niile echekwabara.
36/174
gafereview
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) Tebụl na-anọchite anya nkọwa nkọwa òké ka ewepụtara n'ụzọ nke na ahịrị ọ bụla dabara na obere ihe. Emebere nke ikpeazụ site na prefix 1-byte na data 1-byte. Tụtụ aka na viewed site n'aka onye nnabata HID parser na eserese - Kpesa ọdịnaya nkọwa sitere na onye nyocha HID onye ọbịa View.
(2) A na-eji ibe ojiji Desktop Generic.
(3) N'ime ibe ojiji nke Desktọpụ, ojiji a tag na-atụ aro na otu njikwa bụ maka ịchịkwa òké. Nchịkọta òké na-enwekarị anyụike abụọ (X na Y) na otu, abụọ, ma ọ bụ atọ bọtịnụ.
(4) A na-amalite nchịkọta òké.
(5) N'ime mkpokọta òké, ojiji tag na-atụ aro karia na njikwa òké so na nchịkọta pointer. Nchịkọta ntụaka bụ nchịkọta anyụike na-ewepụta uru iji duzie, gosi, ma ọ bụ tụọ ebumnobi onye ọrụ na ngwa.
(6) A malitela nchịkọta ntụnye ahụ.
(7) Ibe ojiji bọtịnụ na-akọwapụta ihe ntinye nke mpaghara 1-bit nwere atọ. Oghere 1-bit ọ bụla na-anọchi anya bọtịnụ mouse9s 1, 2 na 3 n'otu n'otu ma nwee ike weghachi uru nke 0 ma ọ bụ 1.
(8) Ihe ntinye maka ibe ojiji bọtịnụ nwere ibe iri na atọ ọzọ.
(9) Ọzọ Generic Desktop Usage Page ka egosiri maka iji axes X na Y akọwa ọnọdụ òké. Ihe ntinye ihe mejupụtara ubi abụọ 8-bit nke uru ya nwere ike ịdị n'etiti -127 na 127.
(10) A na-emechi mkpokọta pointer.
(11) A na-emechi mkpokọta òké.
Ibe HID USB.org
Nwebiisinka © 2025 Silicon Laboratories. Ikike niile echekwabara.
37/174
gafereview
The USB Immplementers Forum (USB-IF) na-enye ngwá ọrụ a na-akpọ "Ngwaọrụ Descriptor HID" yana ozi ndị ọzọ na usoro nkọwa akụkọ. Hụ http://www.usb.org/developers/hidpage/ maka ozi ndị ọzọ.
Ntuziaka mmemme klas HID ngwaọrụ USB
Akụkụ a na-akọwa otu esi eji klas HID. Ịmalite klaasị HID ngwaọrụ USB na-agbakwunye ngwaọrụ USB HID klas na ngwaọrụ gị site na iji klas HID ngwaọrụ USB
Na-amalite Klas HID Ngwaọrụ USB
Iji tinye arụmọrụ klaasị HID na ngwaọrụ gị, ị ga-ebu ụzọ bido klas ahụ site na ịkpọ ọrụ sl_usbd_hid_init() . The example n'okpuru ebe a na-egosi otu esi akpọ sl_usbd_hid_init() site na iji arụmụka ndabara. Maka ozi ndị ọzọ gbasara arụmụka nhazi ka ị gafere sl_usbd_hid_init() , lee Nhazi ngwa ngwa USB Device HID Class Specific .
Example – Na-akpọ sl_usbd_hid_init()
sl_status_t ọkwa;
ọnọdụ = sl_usbd_hid_init (); ma ọ bụrụ (ọnọdụ ! SL_STATUS_OK) {/*Enwere mperi. Ekwesịrị ịgbakwunye njikwa mperi ebe a. */
}
Ịgbakwunye ngwaọrụ USB HID klas na ngwaọrụ gị
Iji tinye arụmọrụ klaasị HID na ngwaọrụ gị, ị ga-emerịrị ihe atụ, wee tinye ya na nhazi(s) ngwaọrụ gị.
Ịmepụta ihe atụ klaasị HID
Mepụta ihe atụ klaasị HID site na ịkpọ ọrụ sl_usbd_hid_create_instance() . The example n'okpuru na-egosi otu esi emepụta ọrụ òké dị mfe site na sl_usbd_hid_create_instance() site na iji arụmụka ndabara. Maka ozi ndị ọzọ na arụmụka nhazi ịgafe sl_usbd_hid_create_instance() , lee Nhazi Nhazi Klas HID Ngwaọrụ USB.
Example - Na-agbakwunye ọrụ òké site na sl_usbd_hid_create_instance()
Nwebiisinka © 2025 Silicon Laboratories. Ikike niile echekwabara.
38/174
gafereview
/* Ihe ngbanwe zuru ụwa ọnụ. */ 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_COLLECTION + 1 SL_USBD_HID_COLLECTION_APPLICATION , SL_USBD_HID_LOCAL_USAGE + 1 , SL_USBD_HID_CP_POINTER , SL_USBD_HID_MAIN_COLLECTION + 1 , SL_USBD_HID_COLLECTION_PHYSICAL , SL_USBD_HID_COLLECTION_PHYSICAL , SL_GBD_1 SL_USBD_HID_USAGE_PAGE_BUTTON, SL_USBD_HID_LOCAL_USAGE_MIN + 1, 0 01, SL_USBD_HID_LOCAL_USAGE_MAX + 1, 0 03, SL_USBD_HID_GLOBAL_LOG_MIN + 0, 0 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_MA 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_SLINT_US 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_USSL_LOCBD_1 SL_USBD_HID_GLOBAL_LOG_MIN + 1, 0 81, SL_USBD_HID_GLOBAL_LOG_MAX + 1, 0 7F, SL_USBD_HID_GLOBAL_REPORT_SIZE + 1, 0 08, SL_USBD_AL_HID_PORT +2 SL_USBD_ALRE_PORT 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};
/* Mgbanwe mpaghara.*/ uint8_t class_nbr; sl_status_t ọkwa;
sl_usbd_hid_callbacks_t app_usbd_hid_callbacks = {NULL, NULL, app_usbd_hid_get_report_desc, NULL, NULL, NULL, NULL, NULL, NULL};
ngwa efu_usbd_hid_get_report_desc(uint8_t class_nbr, const uint8_t **p_report_ptr, uint16_t *p_report_len)
{(ihe efu)class_nbr;
*p_report_ptr = app_usbd_hid_mouse_report_desc; *p_report_len = sizeof (app_usbd_hid_mouse_report_desc); }
ọnọdụ = sl_usbd_hid_create_instance(SL_USBD_HID_SUBCLASS_BOOT, SL_USBD_HID_PROTOCOL_MOUSE, SL_USBD_HID_COUNTRY_CODE_NOT_SUPPORTED, Ex_USBD_HID_Mouse_ReportDesc,Report_Mouse_2ReportDesc, size of(Ex_Mouse_Mouse) 2u, eziokwu, &app_usbd_hid_callbacks, &class_nbr);
Nwebiisinka © 2025 Silicon Laboratories. Ikike niile echekwabara.
39/174
gafereview
/* Njehie mere. Ekwesịrị ịgbakwunye njikwa mperi ebe a. */}
Na-agbakwunye HID Class Standard na nhazi (s) ngwaọrụ gị Mgbe ịmechara ihe atụ klaasị HID, ị nwere ike itinye ya na nhazi site na ịkpọ ọrụ ahụ.
sl_usbd_hid_add_to_configuration() .
The example n'okpuru ebe a na-egosi otu esi akpọ sl_usbd_hid_add_to_configuration() .
Example - Na-akpọ sl_usbd_hid_add_to_configuration()
sl_status_t ọkwa;
sl_usbd_hid_add_to_configuration (class_nbr,
(1)
config_nbr_fs); (2)
ọ bụrụ (ọnọdụ ! SL_STATUS_OK) {
/* Njehie mere. Ekwesịrị ịgbakwunye njikwa mperi ebe a. */
}
(1) Nọmba klaasị iji gbakwunye na nhazi nke sl_usbd_hid_create_instance() weghachiri. (2) Nọmba nhazi (ebe a na-agbakwunye ya na nhazi ọsọ ọsọ).
Iji klaasị HID ngwaọrụ USB na-ekwurịta okwu
Nkwukọrịta Nkwukọrịta Nkwukọrịta Oge Nkwukọrịta Klas Nkwukọrịta Nzikọrịta Ihe Nkwukọrịta Klas HID na-enye ọrụ ndị a iji soro onye ọbịa kparịta ụka.
Tebụl - Nchịkọta API Nkwukọrịta HID
Aha ọrụ
sl_usb d _hid _ re ad _sy nc() sl_usb d _hid _write _sy nc()
Ọrụ na-enweta data sitere n'aka onye ọbịa site na nkwụsịtụ njedebe. Ọrụ a na-egbochi. Na-eziga data na onye ọbịa site na nkwụsịtụ NA njedebe. Ọrụ a na-egbochi.
Nkwukọrịta mmekọrịta nkwurịta okwu mmekọrịta pụtara na mbufe na-egbochi. Mgbe oku na-arụ ọrụ, ngwa ndị ahụ na-egbochi ruo mgbe mbufe ga-agwụ ma ọ bụ na-enweghị njehie. Enwere ike ịkọwa oge nkwụsịtụ iji zere ichere ruo mgbe ebighị ebi. The example n'okpuru na-egosi ịgụ na ide nke na-enweta data sitere n'aka onye ọbịa site na iji nkwụsịtụ OUT endpoint wee zigara onye ọbịa data site na iji nkwụsịtụ IN endpoint.
Example – HID na-emekọrịta ihe Gụọ na dee
__ALIGNED (4) uint8_t rx_buf[2];
__ALIGNED (4) uint8_t tx_buf[2];
uint32_t
xfer_len;
sl_status_t
ọnọdụ;
ọnọdụ = sl_usbd_hid_read_sync (class_nbr,
(1)
(efu *)rx_buf,
(2)
2u,
0u,
(3)
& xfer_len);
ọ bụrụ (ọnọdụ ! SL_STATUS_OK) {
/* Njehie mere. Ekwesịrị ịgbakwunye njikwa mperi ebe a. */
}
Nwebiisinka © 2025 Silicon Laboratories. Ikike niile echekwabara.
40/174
gafereview
status = sl_usbd_hid_read_sync(class_nbr,(1)(void *)rx_buf,(2)2u,0u,(3)&xfer_len);ma ọ bụrụ na (ọnọdụ ! SL_STATUS_OK){/*Enwere njehie. Ekwesịrị ịgbakwunye njikwa mperi ebe a. */}
status = sl_usbd_hid_write_sync(class_nbr,(1)(void *)tx_buf,(4)2u,0u,(3)&xfer_len);ma ọ bụrụ na(ọnọdụ ! SL_STATUS_OK){/*Enwere mperi. Ekwesịrị ịgbakwunye njikwa mperi ebe a. */}
(1) Nọmba atụ klaasị emepụtara site na sl_usbd_hid_create_instance() na-enye ntụaka dị n'ime maka klaasị HID iji nyefee mbufe gaa na nkwụsịtụ kwesịrị ekwesị OUT ma ọ bụ NA njedebe.
(2) Ngwa ahụ ga-ahụrịrị na ihe nchekwa enyere maka ọrụ ahụ buru ibu iji nabata data niile. Ma ọ bụghị ya, nsogbu mmekọrịta nwere ike ime. N'ime ime, a na-arụ ọrụ agụ ma ọ bụ jiri njedebe njikwa ma ọ bụ jiri njedebe nkwụsịtụ, dabere na akara ọkọlọtọ na-agụ mgbe ị na-akpọ sl_usbd_hid_create_instance() .
(3) Iji zere ọnọdụ nkwụsị na-enweghị ngwụcha, enwere ike ịkọwapụta oge egosipụtara na milliseconds. Uru nke 809 na-eme ka ọrụ ngwa na-echere ruo mgbe ebighị ebi.
(4) Ngwa a na-enye ihe nchekwa mbufe izizi.
Ọrụ mkpesa ntinye oge HID
Iji chekwaa bandwit, onye ọbịa nwere ikike imechi akụkọ sitere na nkwụsịtụ IN njedebe site na ịmachi oge mkpesa. Iji mee nke a, onye ọbịa ga-ezigarịrị arịrịọ SET_IDLE. Klas HID nke Silicon Labs mebere nwere ọrụ dị n'ime nke na-asọpụrụ mmachi oge mkpesa nke ị nwere ike itinye na mkpesa ntinye ma ọ bụ ọtụtụ. Ọrụ mkpesa ntinye oge n'ọgụgụ na-egosi ọrụ nke ọrụ mkpesa ntinye oge.
Ọgụgụ – Ọrụ Mbubata oge
(1) Ngwaọrụ na-enweta arịrịọ SET_IDLE. Arịrịọ a na-akọwapụta oge na-adịghị arụ ọrụ maka ID mkpesa enyere. Maka nkọwa ndị ọzọ gbasara arịrịọ SET_IDLE, hụ
(2) A na-emelite usoro NJ akụkọ (nke ekenyela n'oge usoro mbido klaasị HID) n'oge adịghị arụ ọrụ. A na-eji uru oge arụ ọrụ wee malite counter oge na-adịghị arụ ọrụ. A na-etinye ụkpụrụ NJ akụkọ a na njedebe nke ndepụta ejikọrọ nwere nhazi ndekọ ndekọ ntinye. A na-egosipụta uru oge na-abaghị uru na nkeji 4-ms nke na-enye oke nke 4 ruo 1020 ms.
Nwebiisinka © 2025 Silicon Laboratories. Ikike niile echekwabara.
41/174
gafereview
Ọ bụrụ na oge na-abaghị uru erughị oge ntuli aka nke nkwụsịtụ NA njedebe, a na-emepụta akụkọ ndị ahụ n'oge oge ntuli aka.
(3) Ms 4 ọ bụla, ọrụ ntinye ntinye oge na-eme nchọgharị na ndepụta ndenye ndenye ndenye. Maka NJ ntinye ntinye ọ bụla, ọrụ a na-arụ otu n'ime arụmọrụ abụọ enwere ike. Ogologo oge ọrụ ahụ dabara na nkeji 4-ms ejiri maka oge na-abaghị uru. Ọ bụrụ na ọnweghị arịrịọ SET_IDLE nke onye ọbịa eziterela, ndetu ndenye ndenye ndenye ID enweghị ihe ọ ga-eme. Usoro ọrụ a na-akọ naanị NJ dị iche na 0 yana ogologo oge na-adịghị arụ ọrụ karịrị 0.
(4) Maka NJ ndenye ndenye enyere, ọrụ a na-enyocha ma ọ bụrụ na oge arụghị ọrụ agafeela. Ọ bụrụ na oge arụghị ọrụ agafebeghị, counter na-ebelata ma ọ nweghị mkpesa ntinye ọ bụla ezigara onye ọbịa ahụ.
(5) Ọ bụrụ na oge arụghị ọrụ agafeela (ya bụ, counter-time counter eruola efu), a na-ezigara onye ọbịa akụkọ ntinye site na ịkpọ sl_usbd_hid_write_sync() ọrụ site na nkwụsịtụ NA njedebe.
(6) Ozi ndenye ndenye ozi ezigara nke ọrụ ahụ sitere na nchekwa data dị n'ime ekenyere maka akụkọ ntinye ọ bụla akọwara na nkọwa akụkọ. Ọrụ ngwa nwere ike ịkpọ ọrụ sl_usbd_hid_write_sync() iji zipu mkpesa ntinye. Mgbe izipu data ndenye ndenye, sl_usbd_hid_write_sync() na-emelite ihe nchekwa dị n'ime jikọtara na NJ ndenye nke nwere data ezitere. Mgbe ahụ, ọrụ mkpesa ntinye oge nke oge na-ezigara otu data ntinye aka mgbe oge ọ bụla gafechara yana ruo mgbe ọrụ ngwa na-emelite data na nchekwa ime. Enwere ụfọdụ usoro mkpọchi iji zere nrụrụ aka nke data ID ndenye ndenye ma ọ bụrụ na mgbanwe na-eme n'oge nnyefe nke ọrụ mkpesa ntinye oge na-eme.
Nwebiisinka © 2025 Silicon Laboratories. Ikike niile echekwabara.
42/174
gafereview
gafereview
Ngwa USB Klas MSC
Ngwaọrụ USB MSC Klas gafereview Ngwa USB MSC klaasị mkpa sitere na Core USB Device MSC nhazi klaasị USB Ngwaọrụ MSC klaasị Ntuziaka Mmemme USB Ngwaọrụ MSC Ndị ọkwọ nchekwa klaasị USB
Akụkụ a na-akọwa klas nchekwa ngwaọrụ (MSC) nke Silicon Labs USB Device kwadoro. MSC bụ protocol na-enyere aka ịnyefe ozi n'etiti ngwaọrụ USB na onye ọbịa. Ozi a na-ebufe bụ ihe ọ bụla enwere ike ịchekwa na kọmputa, dị ka mmemme nwere ike ime, koodu isi mmalite, akwụkwọ, onyonyo, data nhazi, ma ọ bụ ederede ọzọ ma ọ bụ data ọnụọgụ. Ngwaọrụ USB na-egosi dị ka ebe nchekwa mpụga nye onye ọbịa, na-enye ohere ịnyefe files site na ịdọrọ na dobe.
A file usoro na-akọwa otú ndị fileA haziri s na mgbasa ozi nchekwa. Nkọwapụta klaasị nchekwa oke USB anaghị achọ ihe ọ bụla file usoro a ga-eji na ngwaọrụ na-emekọrịta ihe. Kama, ọ na-enye interface dị mfe ịgụ na dee ngalaba nke data site na iji obere usoro iwu kọmpụta (SCSI). Dị ka nke a, sistemụ arụmọrụ nwere ike na-emeso draịvụ USB ka draịvụ ike, ma nwee ike hazie ya na nke ọ bụla file sistemụ na-amasị ha.
Klas ngwaọrụ nchekwa oke USB na-akwado protocol njem abụọ, dịka ndị a:
Ụgbọ njem naanị nnukwu (BOT) Njikwa / nnukwu / nkwụsị (CBI) (eji naanị maka draịvụ diski floppy)
Klaasị ngwaọrụ nchekwa oke na-eji usoro iwu BOT emejuputa usoro iwu nghọta SCSI, nke na-egosi na ọ bụ naanị nnukwu njedebe ka a ga-eji bufee data na ozi ọkwa. Mmejuputa MSC na-akwado ọtụtụ nkeji ezi uche.
Mmejuputa nke MSC na-agbaso nkọwapụta ndị a:
Oghere Usoro Nchekwa ụgbọ ala zuru ụwa ọnụ nkọwapụta klaasị gafereview, Ndozigharị 1.3 Sept. 5, 2008. Universal Serial Bus Mass Nchekwa klaasị nnukwu-Naanị Ụgbọ njem, Ndozigharị 1.0 Sept. 31, 1999.
Ngwaọrụ USB MSC aCl ss Overview
Arịrịọ klaasị ngwụcha Protocol Arịrịọ Obere Sistemu Kọmputa (SCSI)
Protocol
N'akụkụ a, anyị ga-atụle ụkpụrụ nnukwu ụgbọ njem naanị (BOT) nke klas Nchekwa Mass. Protocol njem naanị nnukwu nwere s atọtages:
The Command Transport Ụgbọ njem data Ọnọdụ Transportgbọ njem
Ndị ọbịa na-eziga iwu nchekwa oke site na nhazi akpọrọ Command Block Wrapper (CBW). Maka iwu chọrọ ụgbọ njem data stage, onye ọbịa ahụ ga-anwa izipu ma ọ bụ nata ọnụ ọgụgụ bytes kpọmkwem site na ngwaọrụ dị ka ogologo na ọkọlọtọ ọkọlọtọ nke CBW akọwapụtara. Mgbe njem data stage, onye ọbịa ahụ na-anwa ịnata Iwu Ọnọdụ Wrapper (CSW) site na ngwaọrụ nke na-akọwa ọkwa nke iwu yana ihe fọdụrụ data ọ bụla (ọ bụrụ na
Nwebiisinka © 2025 Silicon Laboratories. Ikike niile echekwabara.
43/174
gafereview
ọ bụla). Maka iwu na-agụnyeghị ụgbọ njem data stage, onye ọbịa ahụ na-anwa ịnata CSW ozugbo ezipụchara CBW. A kọwapụtara ụkpụrụ ahụ na eserese - Protocol MSC.
Ọgụgụ - MSC Protocol
Njedebe
N'akụkụ ngwaọrụ, n'ikwekọ na nkọwapụta BOT, MSC nwere njedebe njedebe ndị a: Otu ụzọ njikwa IN na OUT a na-akpọ njedebe njedebe. Otu ụzọ nnukwu ibu IN na OUT njedebe.
Tebụlụ dị n'okpuru na-egosi ojiji dị iche iche nke njedebe njedebe.
Tebụl – MSC Ọgwụgwụ ojiji
Ebe njedebe
Njikwa na-achịkwa nnukwu n'ime nnukwu
Ntuziaka
Ngwaọrụ na-anabata ndị ọbịa na ngwaọrụ ngwaọrụ iji kwado ndị ọbịa na ngwaọrụ
Ojiji
Ngụkọta na arịrịọ klaasị kpọmkwem MSC Ịgụ na arịrịọ klaasị MSC Zipụ CSW na data Nweta CBW na data
Arịrịọ klas
Enwere arịrịọ njikwa abụọ akọwapụtara maka ụkpụrụ MSC BOT. Arịrịọ ndị a na nkọwa ha zuru ezu na tebụl dị n'okpuru.
Tebụl – Arịrịọ klaasị nchekwa oke
Arịrịọ klas
Ntọgharị Nchekwa nnukwu naanị-naanị
Nkọwa
A na-eji arịrịọ a iji tọgharịa ngwaọrụ nchekwa oke yana ihe jikọrọ ya. Arịrịọ a na-akwado ngwaọrụ iji nweta ngọngọ iwu na-esote.
Nwebiisinka © 2025 Silicon Laboratories. Ikike niile echekwabara.
44/174
gafereview
Arịrịọ klas
Nkọwa
Get Max A na-eji arịrịọ a weghachi nọmba ọnụọgụ ezi uche kachasị elu (LUN) nke ngwaọrụ kwadoro. Maka example, a
LUN
Ngwaọrụ nwere LUN 0 na LUN 1 ga-eweghachite uru nke 1. Ngwa nwere otu ihe ezi uche ga-eweghachi 0 ma ọ bụ kwụsị
arịrịọ. Uru kacha nke enwere ike iweghachi bụ 15.
Obere Kọmputa Sistemu Interface SCSI
N'ọkwa mmemme mmemme, ngwaọrụ MSC na-arụ otu n'ime usoro nzikọrịta ozi mgbasa ozi ọkọlọtọ, dịka SCSI na SFF-8020i (ATAPI). "Mmemme mmemme" na-akọwapụta usoro a na-emejuputa atumatu, ma na-enyere ndị ọrụ ụlọ ọrụ aka ịkwanye onye ọkwọ ụgbọala kwesịrị ekwesị maka iji ngwaọrụ nchekwa USB na-ekwurịta okwu. SCSI bụ protocol a na-ejikarị eme ihe na ngwaọrụ nchekwa USB MSC. Anyị na-enye mmejuputa iwu maka MSC SCSI subclass nke ndị ọrụ GSDK anyị nwere ike iji n'ime igbe ahụ.
SCSI bụ ụkpụrụ maka ijikwa nzikọrịta ozi n'etiti kọmpụta na ngwaọrụ dị n'akụkụ. Ụkpụrụ ndị a gụnyere iwu, protocol, oghere eletrik na oghere anya. Ngwaọrụ nchekwa nke na-eji oghere ngwaike ndị ọzọ, dị ka USB, na-eji iwu SCSI maka inweta ozi ngwaọrụ/onye nnabata yana ịchịkwa ọrụ ngwaọrụ na ịnyefe ngọngọ data na mgbasa ozi nchekwa.
Iwu SCSI na-ekpuchi ụdị na ọrụ dị iche iche nke ngwaọrụ yana dị ka nke a, ngwaọrụ chọrọ ntinye nke iwu ndị a. N'ozuzu, iwu ndị a dị mkpa maka nzikọrịta ozi bụ isi:
AJỤJỤ ỌGỤGỤ IKE (10) GỤỌ (10) Nnwale Nnwale Arịrịọ NDỊ MMADỤ NDỊ DỊ MMADỤ (10)
Ngwa USB MSC Klas akụrụngwa chọrọ si Core
Oge ọ bụla ị gbakwunye ihe atụ klaasị MSC na nhazi USB site na ọrụ sl_usbd_msc_add_to_configuration() , a ga-ekenye ihe ndị a site na isi.
Akụrụngwa
Oghere ndị ọzọ dị iche iche Njikọ njedebe
Ọnụọgụ
1 1 2 0
Rịba ama na ọnụọgụ ndị ahụ bụ maka nhazi. Mgbe ị na-edozi ụkpụrụ nhazi SL_USBD_INTERFACE_QUANTITY , SL_USBD_ALT_INTERFACE_QUANTITY , SL_USBD_INTERFACE_GROUP_QUANTITY na SL_USBD_DESCRIPTOR_QUANTITY nhazi ụkpụrụ, echefula iburu n'uche nhazi ole a ga-agbakwunye na klas ahụ. Maka uru nhazi SL_USBD_OPEN_ENDPOINTS_QUANTITY, ebe ọ bụ na a na-emepe njedebe njedebe naanị mgbe onye ọbịa na-ahazi nhazi, naanị ị ga-eburu n'uche ọnụọgụ njedebe achọrọ maka ihe atụ klaasị.
Nhazi Klas Ngwaọrụ USB
A na-eji otu abụọ nke nhazi nhazi iji hazie klas MSC:
Ngwa klaasị MSC Ngwa USB-Nhazi akọwapụtara nke ọma Ngwa USB Ngwa MSC Klas Logical Unit Nhazi
Ngwa klaasị MSC Ngwa USB-Nhazi akọwapụtara
Nhazi klaasị-Oge Ịmepụta ihe atụ
Nwebiisinka © 2025 Silicon Laboratories. Ikike niile echekwabara.
45/174
gafereview
Nhazi oge klaasị
Silicon Labs USB Device MSC klas na SCSI subclass bụ nhazi n'oge a na-achịkọta site na #defines dị na sl_usbd_core_config.h file.
Tebụl - Nhazi nhazi oge niile
Aha nhazi
Nkọwa
SL_USBD_MSC_CLASS_INST Ọnụọgụ klaasị ị ga-ekenye site na oku na ọrụ ahụ.
ANCE_QUANTITY
sl_usbd_msc_scsi_create_intance() .
SL_USBD_MSC_CONFIGURA Ọnụọgụ nhazi nke enwere ike ịgbakwunye ihe atụ klaasị site na oku gaa na
TION_QUANTITY
ọrụ sl_usbd_msc_scsi_add_to_configuration() .
SL_USBD_MSC_LUN_QUANT Ọnụọgụ ezi uche dị n'otu klaasị ị ga-agbakwunye site na oku na
ITY
ọrụ sl_usbd_msc_scsi_lun_add() .
SL_USBD_MSC_SCSI_64_BIT Na-enyere ma ọ bụ gbanyụọ nkwado maka Logical Block Address (LBA) nke 64bits.
_LBA_EN
SL_USBD_MSC_DATA_BUFF Oke nchekwa data kwa klaasị na bytes ER_SIZE
Uru ndabara
2
1
2
0
512
Okike ihe atụ
Ịmepụta ngwaọrụ USB MSC SCSI klas na-eme site na ịkpọ ọrụ sl_usbd_msc_scsi_create_instance(). Ọrụ a na-ewe otu arụmụka nhazi nke akọwara n'okpuru.
p_scsi_callbacks
p_scsi_callbacks bụ ntụnye aka na nhazi nhazi nke ụdị sl_usbd_msc_scsi_callbacks_t. Na mgbakwunye na klaasị ngwa USB nkịtị jikọọ/kwụpụ, ọ na-enye klaasị MSC otu ọrụ azụghachị nhọrọ nke a na-akpọ mgbe mmemme mere na ngalaba ezi uche dị na ya. Enwere ike ịfefe pointer null (NULL) na arụmụka a ma ọ bụrụ na ọ dịghị mkpa ịkpọghachi azụ.
Tebụlụ dị n'okpuru na-akọwa mpaghara nhazi ọ bụla dị na nhazi nhazi a.
Tebụl – sl_usbd_msc_scsi_callbacks_t Nhazi nhazi
Ubi
Nkọwa
.kwaa
A na-akpọ mgbe agbanyere ihe atụ USB nke ọma.
.gbanyụọ Akpọrọ mgbe agbanyụrụ klaasị USB.
.host_eject Ọrụ a na-akpọ mgbe a na-achụpụ unit ezi uche na onye ọbịa.
mbinye aka ọrụ
ngwa efu_usbd_msc_scsi_enable(uint8_t class_nbr);
ngwa efu_usbd_msc_scsi_disable(uint8_t class_nbr); ngwa efu_usbd_msc_scsi_host_eject(uint8_t class_nbr, uint8_t lu_nbr);
Ngwa USB MSC Klas Nhazi nkeji ezi uche
Ịtinye otu ihe ezi uche dị na ya na ihe atụ klaasị MSC na-eme site na ịkpọ ọrụ sl_usbd_msc_lun_add() . Ọrụ a na-ewe otu arụmụka nhazi nke akọwara n'okpuru.
p_lu_info
p_lu_info bụ ntụnye aka na nhazi ụdị sl_usbd_msc_scsi_lun_info_t. Ebumnuche ya bụ ịnye ozi dị na ngalaba ezi uche na klaasị MSC.
Tebụlụ dị n'okpuru na-akọwa mpaghara nhazi ọ bụla dị na nhazi nhazi a.
Tebụl – sl_usbd_msc_scsi_lun_info_t Nhazi nhazi
Nwebiisinka © 2025 Silicon Laboratories. Ikike niile echekwabara.
46/174
gafereview
Ubi
Nkọwa
Ubi
.scsi_lun_api_p tr
Nkọwa
Ntụ aka na API ọkwọ ụgbọ ala nke ga-ejikwa otu a ezi uche dị na ya. Hụ Ngwaọrụ USB MSC Class Drivers maka ozi ndị ọzọ gbasara ndị ọkwọ ụgbọ ala nchekwa.
.ve nd o r_id _ p tr
.product_id_ptr
.p ro d uct_ re v isi on_level .is_ re ad _o nly
Na-atụ aka na eriri nwere njirimara onye na-ere ihe nke otu ihe ezi uche dị na ya. Ogologo kachasị nke eriri ahụ bụ mkpụrụedemede 8. Ntụ aka na eriri nwere njirimara ngwaahịa nke ngalaba ezi uche dị na ya. Ogologo kachasị nke eriri ahụ bụ mkpụrụedemede 16. Ọkwa nlegharị anya ngwaahịa.
Ọkọlọtọ na-egosi ma ọ bụrụ na ihe ezi uche unit kwesịrị ka a na-ahụ ka na-agụ naanị site n'ókè nke view nke onye ọbịa (ezigbo) ma ọ bụ na ọ bụghị (ụgha).
Ntuziaka mmemme klaasị MSC ngwaọrụ USB
Akụkụ a na-akọwa otu esi eji klas MSC.
Ịmalite klaasị USB Ngwaọrụ MSC na-agbakwunye ngwaọrụ USB MSC SCSI klaasị na ngwaọrụ gị USB Ngwaọrụ MSC Klas Logical Unit Handling
Na-ebido klaasị MSC nke USB
Iji tinye arụmọrụ klaasị MSC SCSI na ngwaọrụ gị, buru ụzọ bido klaasị ntọala MSC yana subclass SCSI site na ịkpọ ọrụ sl_usbd_msc_init() na sl_usbd_msc_scsi_init() .
The example n'okpuru na-egosi otu esi akpọ sl_usbd_msc_init() na sl_usbd_msc_scsi_init() .
Example – Na-akpọ sl_usbd_msc_init() na sl_usbd_msc_scsi_init()
sl_status_t ọkwa;
ọnọdụ = sl_usbd_msc_init(); ma ọ bụrụ (ọnọdụ ! SL_STATUS_OK) {/*Enwere mperi. Ekwesịrị ịgbakwunye njikwa mperi ebe a. */
}
ọnọdụ = sl_usbd_msc_scsi_init(); ma ọ bụrụ (ọnọdụ ! SL_STATUS_OK) {/*Enwere mperi. Ekwesịrị ịgbakwunye njikwa mperi ebe a. */
}
Ịtinye ngwaọrụ USB MSC SCSI klas na ngwaọrụ gị
Ka ịgbakwunye arụmọrụ klas MSC SCSI na ngwaọrụ gị, buru ụzọ mepụta ihe atụ, wee tinye ya na nhazi(s) ngwaọrụ gị. Ị ga-agbakwunye ma ọ dịkarịa ala otu nkeji ezi uche na ihe atụ gị.
Ịmepụta ihe atụ klas MSC SCSI
Mepụta ihe atụ klaasị MSC SCSI site na ịkpọ ọrụ sl_usbd_msc_scsi_create_instance() .
The example n'okpuru na-egosi otu esi akpọ sl_usbd_msc_scsi_create_instance() site na iji arụmụka ndabara. Maka ozi ndị ọzọ na arụmụka nhazi ka ị gafere sl_usbd_msc_scsi_create_instance() , lee USB Device MSC Class Specific Configurations.
Example – Na-akpọ sl_usbd_ msc_scsi_create_instance()
Nwebiisinka © 2025 Silicon Laboratories. Ikike niile echekwabara.
47/174
gafereview
uint8_t klas_nbr; sl_status_t ọkwa;
sl_usbd_msc_scsi_callbacks_t app_usbd_msc_scsi_callbacks = {.enable = NULL, .disable = NULL, .host_eject = NULL};
ọnọdụ = sl_usbd_msc_scsi_create_instance (&app_usbd_msc_scsi_callbacks,0 &class_nbr);
ma ọ bụrụ (ọnọdụ ! SL_STATUS_OK) {/*Enwere mperi. Ekwesịrị ịgbakwunye njikwa mperi ebe a. */}
Na-agbakwụnye ihe atụ Klas MSC na nhazi(s) ngwaọrụ gị
Mgbe ịmechara ihe atụ klaasị MSC, ị nwere ike itinye ya na nhazi site na ịkpọ ọrụ ahụ
sl_usbd_msc_add_to_configuration() .
The example n'okpuru gosi otu esi akpọ sl_usbd_msc_scsi_add_to_configuration() iji arụmụka ndabara.
Example - Na-akpọ sl_usbd_ msc_scsi_add_to_configuration()
sl_status_t ọkwa;
ọnọdụ = sl_usbd_msc_scsi_add_to_configuration (class_nbr,
(1)
config_nbr_fs);
(2)
ọ bụrụ (ọnọdụ ! SL_STATUS_OK) {
/* Njehie mere. Ekwesịrị ịgbakwunye njikwa mperi ebe a. */
}
(1) Nọmba klaasị iji gbakwunye na nhazi nke sl_usbd_msc_scsi_create_instance() weghachiri . (32) Nọmba nhazi (ebe a na-agbakwunye ya na nhazi ọsọ ọsọ).
Ngwa USB MSC Klas Lojikal Ijikwa
Na-agbakwụnye otu ihe ezi uche dị na ya na-ejikọta/iwepụ ọkara nchekwa
Na-agbakwunye nkeji ezi uche
Mgbe ị na-agbakwunye otu ihe ezi uche dị na ya na klaasị MSC SCSI gị, ọ ga-abụrịrị na ọ ga-ejikọta ya na ebe nchekwa (RAMDisk, kaadị SD, ebe nchekwa ọkụ, wdg). Klas MSC na-eji onye ọkwọ ụgbọ ala nchekwa na-ekwurịta okwu na mgbasa ozi nchekwa. Ọ ga-adị mkpa ịnye ọkwọ ụgbọ ala a mgbe ị na-agbakwunye nkeji ezi uche.
The example n'okpuru na-egosi otu esi etinye otu ihe ezi uche dị na ya site na sl_usbd_msc_scsi_lun_add() .
Example - Na-agbakwunye otu ihe ezi uche dị na ya site na sl_usbd_msc_scsi_lun_add()
Nwebiisinka © 2025 Silicon Laboratories. Ikike niile echekwabara.
48/174
gafereview
sl_usbd_msc_scsi_lun_t *lu_object_ptr = NULL;
sl_usbd_msc_scsi_lun_info_t lu_info;
sl_status_t
ọnọdụ;
lu_info.sl_usbd_msc_scsi_lun_api_t = &app_usbd_scsi_storage_block_device_api;
lu_info.vendor_id_ptr
= "Silicon Labs";
lu_info.product_id_ptr
= “gbochi ngwaọrụ example";
lu_info.product_revision_level = 0x1000u;
lu_info.is_agụ_naanị
= ụgha;
ọnọdụ = sl_usbd_msc_scsi_lun_add (class_nbr, &lu_info, &lu_object_ptr);
ma ọ bụrụ (ọnọdụ ! SL_STATUS_OK) {/*Enwere mperi. Ekwesịrị ịgbakwunye njikwa mperi ebe a. */}
Na-agbakwunye/Na-ewepụta Ọkara Nchekwa
Mgbe agbakwunyere otu ihe ezi uche dị na ya, a ga-etinyerịrị ihe nchekwa nchekwa ka ọ dị n'akụkụ ndị ọbịa. Klas MSC na-enye ọrụ abụọ iji jikwaa njikọ mgbasa ozi nchekwa na ngalaba ezi uche: sl_usbd_msc_scsi_lun_attach () na sl_usbd_msc_scsi_lun_detach() . Ọrụ ndị a na-enye gị ohere iṅomi mwepụ nke ngwaọrụ nchekwa ka ị nwetaghachi ohere na ngwa agbakwunyere ma ọ bụrụ na ọ dị mkpa.
The example n'okpuru na-egosi otu esi eji ọrụ sl_usbd_msc_scsi_lun_attach() na sl_usbd_msc_scsi_lun_detach() .
Example – Media Mgbakwụnye/Detach
sl_status_t ọkwa;
ọnọdụ = sl_usbd_msc_scsi_lun_attach(lu_object_ptr); ma ọ bụrụ (ọnọdụ ! SL_STATUS_OK) {/*Enwere mperi. Ekwesịrị ịgbakwunye njikwa mperi ebe a. */
}
…
(1)
ọnọdụ = sl_usbd_msc_scsi_lun_detach(lu_object_ptr); ọ bụrụ (ọnọdụ ! SL_STATUS_OK) {
/* Njehie mere. Ekwesịrị ịgbakwunye njikwa mperi ebe a. */
}
…
(2)
ọnọdụ = sl_usbd_msc_scsi_lun_attach (lu_object_ptr) ma ọ bụrụ (ọnọdụ! SL_STATUS_OK) {
/* Njehie mere. Ekwesịrị ịgbakwunye njikwa mperi ebe a. */
}
…
(3)
(1) Site na oge a, ọ bụrụ na ejikọrọ ngwaọrụ MSC na onye ọbịa, enwere ike ịnweta mgbasa ozi nchekwa.
(2) Ọ bụrụ na ejikọrọ ngwaọrụ MSC na onye ọbịa, mgbasa ozi ga-apụta ugbu a ka ọ nweghị. N'oge a, enwere ike ịrụ ọrụ na mgbasa ozi site na ngwa agbakwunyere.
(3) Ọzọ, ọ bụrụ na ejikọrọ ngwaọrụ MSC na onye ọbịa, mgbasa ozi nchekwa ga-apụta dị ka ejikọrọ.
Ngwaọrụ USB MSC Ndị ọkwọ ụgbọ ala nchekwa
Ngwaọrụ USB MSC Klas chọrọ onye ọkwọ ụgbọ ala nchekwa ka ya na igwe nchekwa akpakọrịta. Maka oge a, Silicon Labs anaghị enye ndị ọkwọ ụgbọ ala.
Nwebiisinka © 2025 Silicon Laboratories. Ikike niile echekwabara.
49/174
gafereview
A kọwara TPY aa onye ọkwọ ụgbọ ala AI site na typedef sl_usbd_msc_scsi_lun_api_t . anyị sl_usbd_msc_scsi_lun_api_t v ri ble ga-agụnye na aaaaaaa gị sl_usbd_msc_scsi_lun_info_t v ri ble, p ssed s rgument mgbe ị dd logic l unit na sl_usbd_msc_ssid. Hụ ngalaba USB Ngwaọrụ MSC SCSI API maka nkọwa ndị ọzọ gbasara nhazi ahụ. Mmejuputa ọkwọ ụgbọ ala nchekwa nwere ike ịdị mfe dị ka ọtụtụ ngalaba na RAM. Nha ngalaba (ntụgharị, nha ngọngọ) bụ 512 maka ngwaọrụ nchekwa oke, yana 2048 maka CD-ROM.
Nwebiisinka © 2025 Silicon Laboratories. Ikike niile echekwabara.
50/174
gafereview
gafereview
Klas ndị na-ere ngwaọrụ USB
Klas nke ngwaọrụ USB gafereview Ihe enyemaka klaasị ndị na-ere ngwaọrụ USB chọrọ site na nhazi klas nhazi nke ngwaọrụ USB onye na-ere klaasị klas ndị na-ere ahịa na-enye gị ohere iwupụta ngwaọrụ ndị na-ere ahịa nke nwere ike mejuputa usoro iwu nwe. Ọ na-adabere na otu ụzọ njedebe nnukwu ibufe data n'etiti onye ọbịa na ngwaọrụ ahụ. Ntufe buru ibu na-adaba adaba maka ịnyefe nnukwu data na-enweghị nhazi ma nye mgbanwe data a pụrụ ịdabere na ya site na iji nchọpụta njehie na usoro nyochagharị. Na mgbakwunye na nnukwu njedebe njedebe, klaasị ndị na-ere ahịa nwekwara ike iji ụzọ nkwụsị nkwụsịtụ nhọrọ. Sistemu arụ ọrụ ọ bụla (OS) nwere ike ịrụ ọrụ na klaasị ndị na-ere ahịa ma ọ bụrụhaala na OS nwere ọkwọ ụgbọ ala na-ejikwa klaasị Vendor. Dabere na OS, ọkwọ ụgbọ ala nwere ike ịbụ nwa amaala ma ọ bụ onye na-ere ahịa. Dịka ọmụmaatụ, n'okpuru Microsoft Windows®, ngwa gị na onye ọkwọ ụgbọ ala WinUSB nke Microsoft nyere na-emekọrịta ihe na ngwaọrụ ndị na-ere ahịa.
Klas nke ngwaọrụ USB gafereview
Ọnụọgụgụ - Nhazi Ozuruọnụ n'etiti Windows Host na Class Vendor na-egosi nhazi izugbe n'etiti onye ọbịa na ngwaọrụ na-eji klaasị Vendor. Na nke a exampLee, ndị ọbịa sistemụ arụmọrụ bụ MS Windows.
Ọgụgụ - Nhazi Ozuruọnụ n'etiti MS Windows Host and Vendor Class
N'akụkụ MS Windows, ngwa a na-ekwurịta okwu na ngwaọrụ ndị na-ere ahịa site na iji ọbá akwụkwọ USB na-emekọrịta ihe. Ụlọ akwụkwọ ọbá akwụkwọ, dị ka libusb, na-enye API iji jikwaa ngwaọrụ na ọkpọkọ ndị metụtara ya, yana iso ngwaọrụ kparịta ụka site na njikwa, nnukwu na nkwụsịtụ njedebe.
N'akụkụ ngwaọrụ, klaasị Vendor nwere njedebe njedebe ndị a:
Otu ụzọ njikwa IN na OUT njedebe a na-akpọ ebe njedebe ndabara. Otu ụzọ nnukwu ibu IN na OUT njedebe.
Nwebiisinka © 2025 Silicon Laboratories. Ikike niile echekwabara.
51/174
gafereview
Otu ụzọ nkwụsịtụ IN na Ọpụpụ. Ụzọ a bụ nhọrọ. Tebụlụ dị n'okpuru na-egosi ojiji nke njedebe njedebe dị iche iche:
Tebụl – Ihe ngwụcha klaasị onye na-ere ahịa
Ntuziaka njedebe
Njikwa IN
Njikwa
Mpụ
Nnukwu IN
Ngwaọrụ-tohost
> Ngwa ndị ọbịa
Ngwaọrụ-tohost
Nnukwu Mpụ
Kwụsị IN
Kwụsị
Mpụ
Ngwa-ngwaọrụ
Ngwaọrụ-tohost
Ngwa-ngwaọrụ
Ojiji
Arịrịọ ọkọlọtọ maka ngụkọ yana arịrịọ ndị na-ere ahịa akọwapụtara.
Arịrịọ ọkọlọtọ maka ngụkọ yana arịrịọ ndị na-ere ahịa akọwapụtara.
Nkwukọrịta data raw. Enwere ike ịhazi data dị ka usoro iwu nwe.
Nkwukọrịta data raw. Enwere ike ịhazi data dị ka usoro iwu nwe.
Nkwukọrịta data ma ọ bụ ngosi. Enwere ike ịhazi data dị ka usoro iwu nwe. Nkwukọrịta data ma ọ bụ ngosi. Enwere ike ịhazi data dị ka usoro iwu nwe.
Ngwa ngwaọrụ nwere ike iji nnukwu ma kwụsịtụ njedebe iji zipu ma ọ bụ nata data na ma ọ bụ n'aka onye ọbịa. Ọ nwere ike iji naanị njedebe ndabara iji dekọọ arịrịọ akọwapụtara nke onye na-ere ahịa zitere. A na-achịkwa arịrịọ ọkọlọtọ n'ime site na Core oyi akwa nke Silicon Labs USB Device.
Ndị na-ere ngwaọrụ klaasị USB chọrọ site na isi
Oge ọ bụla ị gbakwunye ihe atụ klas onye na-ere ahịa na nhazi site na ọrụ sl_usbd_vendor_add_to_configuration() , a ga-ekenye ihe ndị a site na isi.
Akụrụngwa
Oghere ndị ọzọ dị iche iche Njikọ njedebe
Ọnụọgụ
1 1 2 (4 ma ọ bụrụ na ị nyere aka nkwụsị nkwụsịtụ) 0
Rịba ama na ọnụọgụ ndị ahụ bụ maka nhazi. Mgbe ị na-edozi ụkpụrụ nhazi SL_USBD_INTERFACE_QUANTITY , SL_USBD_ALT_INTERFACE_QUANTITY , SL_USBD_INTERFACE_GROUP_QUANTITY na SL_USBD_DESCRIPTOR_QUANTITY nhazi ụkpụrụ, echefula iburu n'uche nhazi ole a ga-agbakwunye na klas ahụ. Maka uru nhazi SL_USBD_OPEN_ENDPOINTS_QUANTITY, ebe ọ bụ na a na-emepe njedebe njedebe naanị mgbe onye ọbịa na-ahazi nhazi, naanị ị ga-eburu n'uche ọnụọgụ njedebe achọrọ maka ihe atụ klaasị.
Nhazi klaasị ngwaọrụ USB
A na-eji otu abụọ nhazi nhazi nhazi klaasị:
Ngwa klaasị ngwa onye na-ere ngwaọrụ USB-Nhazi klaasị nke ngwaọrụ USB Nhazi ọkwa ọkwa ọkwa.
Ngwa klaasị onye na-ere ngwaọrụ USB-Nhazi akọwapụtara
Nke mbụ, ijiri modul klaasị ndị na-ere ngwaọrụ USB Silicon Labs, dozie nhazi oge nke Vendor na-akọwa dịka mkpa ngwa gị siri dị. Achikọtara ha n'ime isi sl_usbd_core_config.h file n'okpuru ngalaba Vendor. Ebumnuche nhazi ọnụọgụgụ bụ ịgwa modul ngwaọrụ USB gbasara ole ihe ndị na-ere USB ga-ekenye.
Tebụl dị n'okpuru na-akọwa nhazi ọ bụla akọwapụtara.
Nwebiisinka © 2025 Silicon Laboratories. Ikike niile echekwabara.
52/174
gafereview
Tebụl - Nhazi nhazi ngwaọrụ USB na-akọwa
Aha nhazi
Nkọwa
Uru ndabara
SL_USBD_VENDOR_CLASS_INSTANCE_QUANTITY Ọnụọgụ klaasị ị ga-ekenye site na oku na ọrụ 2 sl_usbd_vendor_create_instance() .
SL_USBD_VENDOR_CONFIGURATION_QUANTITY Ọnụọgụ nhazi. Enwere ike itinye oge klaasị ndị na-ere ahịa na otu nhazi ma ọ bụ karịa site na oku na ọrụ sl_usbd_vendor_add_to_configuration() .
Nhazi klaasị ndị na-ere ngwaọrụ USB
Akụkụ a na-akọwa nhazi ndị metụtara ọnọdụ klas ndị na-ere ere.
Klas Creation Creation intr_en nkeji oge p_vendor_callbacks
Okike ihe atụ
Ịmepụta ihe atụ klaasị Vendor na-eme site na ịkpọ ọrụ sl_usbd_vendor_create_instance() , nke na-ewe arụmụka nhazi atọ akọwapụtara n'okpuru.
intr_en
Boolean nke na-egosi ma ọ bụrụ na ekwesịrị ịgbakwunye otu ụzọ nkwụsịtụ ma ọ bụ ghara.
Uru
ezi ụgha
Nkọwa
A ga-agbakwunye otu ụzọ njedebe IN/OUT wee mee ka ọ dị na ngwa agbakwunyere. Agaghị agbakwunye nkwụsị nkwụsịtụ. Naanị ụzọ njedebe nnukwu IN/OUT ga-adị.
etiti oge
Ọ bụrụ na ịtọọ intr_en ka ọ bụrụ eziokwu, ị nwere ike ịkọwapụta oge nkwụsịtụ njedebe ntuli aka (na milliseconds). Ọ bụrụ na ịtọ intr_en ka ọ bụrụ ụgha, ị nwere ike ịtọ oge ka ọ bụrụ 0 n'ihi na klaasị ga-eleghara ya anya.
p_vendor_callbacks
p_vendor_callbacks bụ ihe ntụnye aka maka mgbanwe nhazi ọrụ azụghachi. na ị nwere ike ezipụta iji jikwaa arịrịọ njikwa klaasị kpọmkwem. Ọ bụrụ na ị naghị eji arịrịọ klaasị ọ bụla ma ọ bụ mkpa mee ka/ gbanyụọ ngosi, ị nwere ike ịtọ nke a ka ọ bụrụ NULL .
The example n'okpuru na-enye mbinye aka atụ anya nke onye na-ahụ maka arịrịọ klas gị.
Example – mbinye aka nke ọrụ arịrịọ klaasị akọwapụtara
ngwa efu_usbd_vendor_req_handle(uint8_t
klas_nbr, (1)
const sl_usbd_setup_req_t *p_setup_req); (2)
sl_usbd_vendor_callbacks_t app_usbd_vendor_callback_functions =
{
.enable = NULL, .gbanyụọ = NULL, .setup_req = app_usbd_vendor_req_handle,
};
(1) Nọmba klaasị onye na-ere ahịa.
Nwebiisinka © 2025 Silicon Laboratories. Ikike niile echekwabara.
53/174
gafereview
(2) Ntụ aka na arịrịọ ntọlite natara sitere n'aka onye ọbịa.
Ntuziaka mmemme klaasị ndị na-ere ngwaọrụ USB
Akụkụ a na-akọwa otu esi eji klas ndị na-ere ere. Ịmalite klaasị onye na-ere ngwaọrụ USB na-agbakwunye klaasị onye na-ere ngwaọrụ USB na ngwaọrụ gị site na iji klas ndị na-ere ngwaọrụ USB na-ekwurịta okwu.
Ịmalite klas ndị na-ere ngwaọrụ USB
Ka ịgbakwunye arụmọrụ klaasị ndị na-ere ahịa na ngwaọrụ gị, buru ụzọ malite klas site na ịkpọ ọrụ USBD_Vendor_Init(). The example n'okpuru na-egosi otu esi akpọ sl_usbd_vendor_init() .
Example – Na-akpọ sl_usbd_vendor_init()
sl_status_t ọkwa;
ọnọdụ = sl_usbd_vendor_init (); ma ọ bụrụ (ọnọdụ ! SL_STATUS_OK) {/*Enwere mperi. Ekwesịrị ịgbakwunye njikwa mperi ebe a. */}
Ịgbakwunye klaasị onye na-ere ngwaọrụ USB na ngwaọrụ gị
Ka ịgbakwunye ọrụ klas ndị na-ere ahịa na ngwaọrụ gị, ị ga-ebu ụzọ mepụta ihe atụ, wee tinye ya na nhazi(s) ngwaọrụ gị.
Ịmepụta klaasị onye na-ere ihe na-agbakwunye klaasị onye na-ere ihe na nhazi(s) ngwaọrụ gị
Ịmepụta klaasị klaasị
Mepụta ihe atụ klas onye na-ere ere site na ịkpọ ọrụ sl_usbd_vendor_create_instance() . The example n'okpuru na-egosi otu esi akpọ sl_usbd_vendor_create_instance() site na iji arụmụka ndabara. Maka ozi ndị ọzọ gbasara arụmụka nhazi ka ị gafere sl_usbd_vendor_create_instance() , lee nhazi nhazi ọkwa klas nke ngwaọrụ USB.
Example – Na-akpọ sl_usbd_vendor_create_instance()
uint8_t klas_nbr; sl_status_t ọkwa;
ọnọdụ = sl_usbd_vendor_create_intance (ụgha,
(1)
0u,
(2)
app_usbd_vendor_callback_functions, (3)
&class_nbr);
ọ bụrụ (ọnọdụ ! SL_STATUS_OK) {
/* Njehie mere. Ekwesịrị ịgbakwunye njikwa mperi ebe a. */
}
(1) Enweghị nkwụsị njedebe n'ụkpụrụ klas a. (2) A na-eleghara nkeji oge anya ebe ọ bụ na enweghị nkwarụ.
Nwebiisinka © 2025 Silicon Laboratories. Ikike niile echekwabara.
54/174
gafereview
(3) Ọrụ ịkpọghachi azụ bụ akụkụ nke ngwa gị nke na-ejikwa arịrịọ klaasị akọwapụtara nke onye na-ere ahịa. Hụ Mmekọrịta site na iji klas ndị na-ere ngwaọrụ USB maka ozi ndị ọzọ. Ịgbakwunye klaasị onye na-ere ere na nhazi (s) ngwaọrụ gị Mgbe ịmechara ihe atụ klas ndị na-ere ihe, ị nwere ike itinye ya na nhazi site na ịkpọ ọrụ USBD_Vendor_ConfigAdd(). The example n'okpuru ebe a na-egosi otu esi akpọ sl_usbd_vendor_add_to_configuration () site na iji arụmụka ndabara.
Example - Na-akpọ sl_usbd_vendor_add_to_configuration()
sl_status_t ọkwa;
ọnọdụ = sl_usbd_vendor_add_to_configuration (class_nbr,
(1)
config_nbr_fs);
(2)
ọ bụrụ (ọnọdụ ! SL_STATUS_OK) {
/* Njehie mere. Ekwesịrị ịgbakwunye njikwa mperi ebe a. */
}
(1) Nọmba klaasị iji gbakwunye na nhazi nke sl_usbd_vendor_create_instance() weghachiri. (2) Nọmba nhazi (ebe a na-agbakwunye ya na nhazi ọsọ ọsọ).
Iji klaasị ndị na-ere ngwaọrụ USB na-ekwurịta okwu
Nkwukọrịta mmekọrịta izugbe Asynchronous Nkwukọrịta Onye na-ere ahịa Arịrịọ izugbe Klas ndị na-ere ahịa na-enye ọrụ ndị a iji soro onye ọbịa kparịta ụka. Maka nkọwa ndị ọzọ gbasara paramita nke ọrụ ahụ, lee API Onye na-ere ngwaọrụ USB.
Tebụl – Nchịkọta API Nkwukọrịta Onye Ahịa
Aha ọrụ
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 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
()
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-
igbochi.
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
Nwebiisinka © 2025 Silicon Laboratories. Ikike niile echekwabara.
55/174
gafereview
Synchronous communication means that the transfer is blocking. When a function is called, the application blocks until the transfer completes with or without an error. A timeout can be specified to avoid waiting forever. The example below shows a read and write that receives data from the host using the bulk OUT endpoint and sends data to the host using the bulk IN endpoint.
Example – Synchronous Bulk Read and Write
__ALIGNED (4) uint8_t rx_buf[2];
__ALIGNED (4) uint8_t tx_buf[2];
uint32_t
xfer_len;
sl_status_t
ọnọdụ;
status = sl_usbd_vendor_read_bulk_sync(class_nbr,
(1)
(void *)&rx_buf[0],
(2)
2u,
0u,
(3)
& xfer_len);
ọ bụrụ (ọnọdụ ! SL_STATUS_OK) {
/* $$$$ Jikwaa njehie ahụ. */
}
status = sl_usbd_vendor_write_bulk_sync( class_nbr,
(1)
(void *)&tx_buf[0],
(4)
2u,
0u,
(3)
false,
(5)
& xfer_len);
ọ bụrụ (ọnọdụ ! SL_STATUS_OK) {
/* $$$$ Jikwaa njehie ahụ. */
}
(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) Ngwa a na-enye ihe nchekwa mbufe izizi.
(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.
Nkwukọrịta na-enweghị atụ
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
Nwebiisinka © 2025 Silicon Laboratories. Ikike niile echekwabara.
56/174
gafereview
void app_usbd_vendor_comm (uint8_t class_nbr)
{
__ALIGNED (4) uint8_t rx_buf[2];
__ALIGNED (4) uint8_t tx_buf[2];
sl_status_t
ọnọdụ;
status = sl_usbd_vendor_read_bulk_async(class_nbr,
(void *)&rx_buf[0],
(2)
2u,
app_usbd_vendor_rx_completed,
NULL);
(4)
ọ bụrụ (ọnọdụ ! SL_STATUS_OK) {
/* $$$$ Jikwaa njehie ahụ. */
}
status = sl_usbd_vendor_write_bulk_async(class_nbr,
(void *)&tx_buf[0],
(5)
2u,
app_usbd_vendor_tx_completed,
Ọ BỤGHỊ,
(4)
false);
(6)
ọ bụrụ (ọnọdụ ! SL_STATUS_OK) {
/* $$$$ Jikwaa njehie ahụ. */
}
}
(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)
{
ọ bụrụ (ọnọdụ ! SL_STATUS_OK) {
/* $$$$ Do some processing. */
} ọzọ {
/* $$$$ Jikwaa njehie ahụ. */
}
}
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)
{
ọ bụrụ (ọnọdụ ! SL_STATUS_OK) {
/* $$$$ Do some processing. */
} ọzọ {
/* $$$$ Jikwaa njehie ahụ. */
}
}
(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.
Nwebiisinka © 2025 Silicon Laboratories. Ikike niile echekwabara.
57/174
gafereview
(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
Nwebiisinka © 2025 Silicon Laboratories. Ikike niile echekwabara.
58/174
gafereview
#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 ọkwa;
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;
ndabara:
(6)
// Request is not supported.
Nwebiisinka © 2025 Silicon Laboratories. Ikike niile echekwabara.
59/174
gafereview
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):
struct 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 ugbu.
*/
} 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.
Nwebiisinka © 2025 Silicon Laboratories. Ikike niile echekwabara.
60/174
Akwụkwọ API
Akwụkwọ API
Akwụkwọ API
Ndepụta modul
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
Nkọwa
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
Nwebiisinka © 2025 Silicon Laboratories. Ikike niile echekwabara.
61/174
USB Device API
USB Device API
USB Device API
USB Device API.
Modul
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
Nwebiisinka © 2025 Silicon Laboratories. Ikike niile echekwabara.
62/174
USB Device ACM API
USB Device ACM API
USB Device ACM API
USB Device CDC ACM API.
Modul
a sl_usbd_cdc_ cm_line_coding_t sl_usbd_cdc_acm_callbacks_t
Ọrụ
sl_status_t sl_status_t
sl_status_t sl_status_t sl_status_t
sl_status_t
sl_status_t
sl_status_t
sl_status_t sl_status_t sl_status_t sl_status_t sl_status_t
a sl_usbd_cdc_ cm_init(void)
GLOBAL VARIABLES.
ssll__uussbbdd__ccddcc__aaccmm__ccraellabtaec_kins_stta*npc_ea(cumin_tc1a6l_lbtalicnkes_,sutaintte8__int t*eprv_saul,bucinlats1s6__nt bcra)ll_mgmt_capabilities,
Add a new instance of the CDC ACM serial emulation subclass.
a a a a sl_usbd_cdc_ cm_ dd_to_configur tion(uint8_t subcl ss_nbr, uint8_t config_nbr)
Add a CDC ACM subclass class instance into USB device configuration.
a a sl_usbd_cdc_ cm_is_en bled(uint8_t subclass_nbr, bool *p_enabled)
Get the CDC ACM serial emulation subclass enable state.
a a a sl_usbd_cdc_ cm_re d(uint8_t subcl ss_nbr, uint8_t *p_buf, uint32_t buf_len, uint16_t timeout, uint32_t
*p_xfer_len) Receive data on the CDC ACM serial emulation subclass.
a a a a sl_usbd_cdc_ cm_re d_ sync(uint8_t subcl ss_nbr, uint8_t *p_buf, uint32_t buf_len, a a a a sl_usbd_cdc_ sync_function_t sync_fnct, void *p_ sync_ rg)
Receive data on the CDC ACM serial emulation subclass asynchronously.
a a sl_usbd_cdc_ cm_write(uint8_t subcl ss_nbr, uint8_t *p_buf, uint32_t buf_len, uint16_t timeout, uint32_t
*p_xfer_len) Send data on the CDC ACM serial emulation subclass.
a a a sl_usbd_cdc_ cm_write_ sync(uint8_t subcl ss_nbr, uint8_t *p_buf, uint32_t buf_len, a a a a sl_usbd_cdc_ sync_function_t sync_fnct, void *p_ sync_ rg)
Send data on the CDC ACM serial emulation subclass asynchronously.
a a a sl_usbd_cdc_ cm_get_line_control_st te(uint8_t subcl ss_nbr, uint8_t *p_line_ctrl)
Return the state of control lines.
a a a sl_usbd_cdc_ cm_get_line_coding(uint8_t subcl ss_nbr, sl_usbd_cdc_ cm_line_coding_t *p_line_coding)
Get the current state of the line coding.
a a a sl_usbd_cdc_ cm_set_line_coding(uint8_t subcl ss_nbr, sl_usbd_cdc_ cm_line_coding_t *p_line_coding)
Set a new line coding.
a a a sl_usbd_cdc_ cm_set_line_st te_event(uint8_t subcl ss_nbr, uint8_t events)
Set a line state event(s).
a a a a sl_usbd_cdc_ cm_cle r_line_st te_event(uint8_t subcl ss_nbr, uint8_t events)
Clear a line state event(s).
Nwebiisinka © 2025 Silicon Laboratories. Ikike niile echekwabara.
63/174
USB Device ACM API
Macros
#define SL_USBD_CDC_ACM_NBR_NONE 255u
MODULE.
#define SL_USBD_CDC_ACM_PARITY_NONE 0u
PORT SETTINGS DEFINES.
#define SL_USBD_CDC_ACM_PARITY_ODD 1u #define SL_USBD_CDC_ACM_PARITY_EVEN 2u #define SL_USBD_CDC_ACM_PARITY_MARK 3u #define SL_USBD_CDC_ACM_PARITY_SPACE 4u #define SL_USBD_CDC_ACM_STOP_BIT_1 0u #define SL_USBD_CDC_ACM_STOP_BIT_1_5 1u #define SL_USBD_CDC_ACM_STOP_BIT_2 2u #define SL_USBD_CDC_ACM_CTRL_BREAK 0 01u
LINE EVENTS FLAGS DEFINES.
#define SL_USBD_CDC_ACM_CTRL_RTS 0 02u #define SL_USBD_CDC_ACM_CTRL_DTR 0 04u #define SL_USBD_CDC_ACM_STATE_DCD 0 01u #define SL_USBD_CDC_ACM_STATE_DSR 0 02u #define SL_USBD_CDC_ACM_STATE_BREAK 0 04u #define SL_USBD_CDC_ACM_STATE_RING 0 08u #define SL_USBD_CDC_ACM_STATE_FRAMING 0 10u #define SL_USBD_CDC_ACM_STATE_PARITY 0 20u #define SL_USBD_CDC_ACM_STATE_OVERUN 0 40u #define SL_USBD_CDC_ACM_CALL_MGMT_DEV 0 01u
CALL MANAGEMENT CAPABILITIES.
#define SL_USBD_CDC_ACM_CALL_MGMT_DATA_CCI_DCI 0 02u #define SL_USBD_CDC_ACM_CALL_MGMT_DATA_OVER_DCI 0 02u | 0 01u)
Function Documentation
sl_usbd_cdc_acm_init
sl_status_t sl_usbd_cdc_acm_init (void )
GLOBAL VARIABLES. Parameters
Nwebiisinka © 2025 Silicon Laboratories. Ikike niile echekwabara.
64/174
USB Device ACM API
Ụdị
efu
Direction N/A
Argument Name
MACROS GLOBAL CONSTANTS FUNCTION PROTOTYPES CDC ACM FUNCTIONS
Initialize the CDC ACM serial emulation subclass.
Na-alaghachi
Returns SL_STATUS_OK on success or another SL_STATUS code on failure.
Nkọwa
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.
Oke
Ụdị
uint16_t
uint16_t
Direction Argument Name
Nkọwa
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
*
nkeji 8_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.
Na-alaghachi
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.
Oke
Ụdị
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.
Na-alaghachi
Nwebiisinka © 2025 Silicon Laboratories. Ikike niile echekwabara.
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.
Oke
Ụdị
Ntuziaka
Argument Name
Nkọwa
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
Akwụkwọ / akụrụngwa
![]() |
SILICON LABS USB Device Stack [pdf] Akwụkwọ ntuziaka USB Device Stack, Device Stack, Stack |