SILICON LABS USB Device Stack

သတ်မှတ်ချက်များ

  • USB ဗားရှင်း- 1.5.1
  • ထုတ်ဝေသည့်ရက်စွဲ- ဇူလိုင် ၁၄၊ ၂၀၁၀
  • ရိုးရှင်းသော SDK ဗားရှင်း- 2025.6.1

ကုန်ပစ္စည်းကျော်view

Silicon Labs မှ USB စက်ပစ္စည်းအစုအဝေးသည် IoT ပရောဂျက်များအတွက် စွယ်စုံရလွယ်ကူပြီး အသုံးပြုရလွယ်ကူသော USB ချိတ်ဆက်မှုကို ပံ့ပိုးပေးကာ ကွန်ရက်ပူးတွဲပရိုဆက်ဆာများနှင့် လက်ခံဆောင်ရွက်ပေးသူများအကြား ဆက်သွယ်မှုကို လွယ်ကူချောမွေ့စေပါသည်။

အင်္ဂါရပ်များ

  • ထိရောက်သော USB ကိရိယာအစုအဝေး
  • IoT ပရောဂျက်များအတွက် စံပြ
  • ကွန်ရက်ပူးတွဲပရိုဆက်ဆာများနှင့် လက်ခံဆောင်ရွက်ပေးသူများအကြား ဆက်သွယ်ရေးအတွက် ပံ့ပိုးမှု

USB ကိရိယာ ဖွဲ့စည်းမှု

စာရွက်စာတမ်းရှိ USB ကိရိယာဖွဲ့စည်းပုံအပိုင်းကို ရည်ညွှန်းခြင်းဖြင့် သင့်ပရောဂျက်လိုအပ်ချက်များနှင့်အညီ USB စက်ပစ္စည်းဆက်တင်များကို ပြင်ဆင်သတ်မှတ်ပါ။

USB ကိရိယာ ပရိုဂရမ်ရေးဆွဲခြင်း လမ်းညွှန်
အစီအစဉ်အမျိုးမျိုးအတွက် USB စက်ပစ္စည်းနှင့် မည်သို့တုံ့ပြန်ရမည်ကို နားလည်ရန် USB စက်ပစ္စည်းပရိုဂရမ်ရေးဆွဲခြင်းလမ်းညွှန်ကို လိုက်နာပါ။

USB စက်ပစ္စည်း အတန်းများ
USB Device Classes အပိုင်းသည် ပြီးသွားပါသည်။view CDC ACM၊ HID၊ MSC SCSI နှင့် Vendor Class ကဲ့သို့သော မတူညီသောအတန်းများ။ သင့်စက်၏လုပ်ဆောင်နိုင်စွမ်းအပေါ်အခြေခံ၍ သင့်လျော်သောအတန်းကို ရွေးချယ်ပါ။

USB စက်ပစ္စည်း ပြဿနာဖြေရှင်းခြင်း။
USB စက်ပစ္စည်းတွင် ပြဿနာတစ်စုံတစ်ရာ ကြုံတွေ့ရပါက ဖြေရှင်းနည်းများနှင့် အမှားပြင်ဆင်ခြင်းဆိုင်ရာ အကြံပြုချက်များအတွက် USB စက်ပစ္စည်း ပြဿနာဖြေရှင်းခြင်းကဏ္ဍကို ကိုးကားပါ။

Release Notes USB
Specifications နှင့် Features များ ကျော်သွားပါပြီ။view
USB Device Configuration ပြီးသွားပါပြီ။view
USB စက်ပစ္စည်း ပရိုဂရမ်ရေးဆွဲခြင်း လမ်းညွှန်view
USB Device Class များပြီးသွားပါပြီ။view CDC ACM Class Overview HID အတန်းကျော်view MSC SCSI Class Overview Vendor Class Overview


USB API API Documentation USB Device API USB Device ACM API a sl_usbd_cdc_ cm_line_coding_t sl_usbd_cdc_acm_callbacks_t USB Device CDC API a sl_usbd_cdc_subcl ss_driver_t USB Device Core API
sl_usbd_device_config_t sl_usbd_setup_req_t
sl_usbd_cl ss_driver_t USB ကိရိယာ HID API တစ်ခု
sl_usbd_hid_callbacks_t USB စက် MSC API
sl_usbd_msc_subcl ss_driver_t USB စက် MSC SCSI API
sl_usbd_msc_scsi_callbacks_t

မူပိုင်ခွင့် © 2025 Silicon Laboratories မူပိုင်ခွင့်ကိုလက်ဝယ်ထားသည်။

၅/၅

Universal Serial Bus USB
sl_usbd_msc_scsi_lun_ pi တစ်ခု
sl_usbd_msc_scsi_lun_info sl_usbd_msc_scsi_lun
USB စက်ပစ္စည်းရောင်းချသူ API sl_usbd_vendor_callbacks_t
API Documentation USB ကိရိယာ ပြဿနာဖြေရှင်းခြင်း
ကျော်view Microsoft Windows OS USB Host
ကျော်view

မူပိုင်ခွင့် © 2025 Silicon Laboratories မူပိုင်ခွင့်ကိုလက်ဝယ်ထားသည်။

၅/၅

ကျော်view
ကျော်view
USB ကိရိယာ
USB သည် ကွန်ပျူတာစနစ်များ၏ သမိုင်းတွင် အအောင်မြင်ဆုံး ဆက်သွယ်ရေး အင်တာဖေ့စ်များထဲမှ တစ်ခုဖြစ်ပြီး ကွန်ပြူတာ အရံပစ္စည်းများကို ချိတ်ဆက်ခြင်းအတွက် စံနှုန်းတစ်ခုဖြစ်သည်။ Silicon Labs USB Device stack သည် မြှုပ်သွင်းထားသော စနစ်များအတွက် အထူးထုတ်လုပ်ထားသည့် USB စက်ပစ္စည်း မော်ဂျူးတစ်ခုဖြစ်သည်။ Silicon Labs ၏ အရည်အသွေး၊ တိုးချဲ့နိုင်မှုနှင့် ယုံကြည်စိတ်ချရမှုတို့ဖြင့် အခြေခံတည်ဆောက်ထားပြီး USB 2.0 သတ်မှတ်ချက်ကို လိုက်နာရန် ပြင်းထန်သော တရားဝင်အတည်ပြုခြင်းလုပ်ငန်းစဉ်ကို ဖြတ်သန်းခဲ့သည်။ ဤစာရွက်စာတမ်းတွင် Silicon Labs USB Device stack ကို စတင်ရန်၊ စတင်ပုံနှင့် အသုံးပြုပုံတို့ကို ဖော်ပြထားပါသည်။ အမျိုးမျိုးသော configuration တန်ဖိုးများနှင့် ၎င်းတို့၏အသုံးပြုမှုများကို ရှင်းပြသည်။ အပေါ်မှာ လည်း ပါဝင်ပါတယ်။view နည်းပညာ၊ ဖွဲ့စည်းမှုဖြစ်နိုင်ခြေ အမျိုးအစားများ၊ အကောင်အထည်ဖော်မှု လုပ်ထုံးလုပ်နည်းများနှင့် ဥပမာampရရှိနိုင်သောအတန်းတိုင်းအတွက် ပုံမှန်အသုံးပြုမှု les များ။


USB သဘောတရားများကို လျင်မြန်စွာ နားလည်နိုင်စေရန်အတွက် စာရွက်စာတမ်းတွင် ဥပမာများစွာ ပါဝင်ပါသည်။ampUSB ၏ အခြေခံလုပ်ဆောင်ချက်များ။ ဒါတွေက examples သည် သင့်အား စက်များကို လျင်မြန်စွာ တည်ဆောက်နိုင်စေမည့် မူဘောင်တစ်ခု ပေးလိမ့်မည်။ ဒါတွေက exampပါဝင်သည်-
USB-to-serial adapter (ဆက်သွယ်ရေးစက်အမျိုးအစား) မောက်စ် သို့မဟုတ် ကီးဘုတ် (Human Interface Device Class) ဖယ်ရှားနိုင်သော သိုလှောင်မှုကိရိယာ (Mass Storage Class) စိတ်ကြိုက်စက်ပစ္စည်း (Vendor Class)
ပြီးသည်နှင့်view စာရွက်စာတမ်းအပိုင်းများ
သတ်မှတ်ချက်များနှင့် အင်္ဂါရပ်များ USB ကိရိယာ ဖွဲ့စည်းမှု USB ကိရိယာ ပရိုဂရမ်ရေးဆွဲခြင်း လမ်းညွှန် USB ကိရိယာ အတန်းများ
CDC ACM Class HID Class MSC SCSI Class Vendor Class USB ကိရိယာ Microsoft Windows OS USB Host ပြဿနာဖြေရှင်းခြင်း

မူပိုင်ခွင့် © 2025 Silicon Laboratories မူပိုင်ခွင့်ကိုလက်ဝယ်ထားသည်။

၅/၅

USB
USB

USB ဗားရှင်း 1.5.1 ဇူလိုင် 21၊ 2025 - ထုတ်ဝေမှု မှတ်စုများ
ရိုးရှင်းသော SDK ဗားရှင်း 2025.6.1
Silicon Labs ၏ ထိရောက်သော USB ကိရိယာ stack သည် IoT ပရောဂျက်များအတွက် စွယ်စုံရ၊ အသုံးပြုရလွယ်ကူသော USB ချိတ်ဆက်မှုအား ပံ့ပိုးပေးပါသည်။ ကွန်ရက်တွဲဖက်ပရိုဆက်ဆာများနှင့် လက်ခံဆောင်ရွက်ပေးသူများအကြား ဆက်သွယ်မှုအပါအဝင် IoT ပရောဂျက်များအတွက် စံပြဖြစ်သည်။ အစောပိုင်းထုတ်ဝေမှုများအတွက် ဤနေရာကိုနှိပ်ပါ။
ထုတ်ဝေမှု အကျဉ်းချုပ်
အဓိကအင်္ဂါရပ်များ | API အပြောင်းအလဲများ | ချွတ်ယွင်းချက်ပြင်ဆင်မှုများ | Chip ဖွင့်ခြင်း။
အဓိကအင်္ဂါရပ်များ
အခြေခံပလက်ဖောင်းပြောင်းလဲမှုများသာ။
API အပြောင်းအလဲများ
တစ်ခုမှ
ချွတ်ယွင်းချက်ပြင်ဆင်မှုများ
တစ်ခုမှ
Chip ဖွင့်ခြင်း။
တစ်ခုမှ
အဓိကအင်္ဂါရပ်များ
အင်္ဂါရပ်များ | မြှင့်တင် | ဖယ်ရှားထားသောအင်္ဂါရပ်များ | ကန့်ကွက်ထားသော အင်္ဂါရပ်များ
အင်္ဂါရပ်အသစ်များ
တစ်ခုမှ
မြှင့်တင်မှုများ
အခြေခံပလက်ဖောင်းပြောင်းလဲမှုများသာ။
အင်္ဂါရပ်များကို ဖယ်ရှားထားသည်။
တစ်ခုမှ
ကန့်ကွက်ခံထားရသောအင်္ဂါရပ်များ
တစ်ခုမှ
API အပြောင်းအလဲများ
API အသစ်များ | ပြုပြင်ထားသော APIs | ဖယ်ရှားထားသော APIs | ကန့်ကွက်ထားသော API များ
API အသစ်များ

မူပိုင်ခွင့် © 2025 Silicon Laboratories မူပိုင်ခွင့်ကိုလက်ဝယ်ထားသည်။

၅/၅

USB
တစ်ခုမှ
မွမ်းမံထားသော API များ
တစ်ခုမှ
API များကို ဖယ်ရှားထားသည်။
တစ်ခုမှ
ကန့်ကွက်ထားသော API များ
တစ်ခုမှ
ချွတ်ယွင်းချက်ပြင်ဆင်မှုများ
တစ်ခုမှ
Chip ဖွင့်ခြင်း။
တစ်ခုမှ
လျှောက်လွှာထွample အပြောင်းအလဲများ
အသစ်ထွamples | ပြင်ဆင်ထားသော Examples | Ex ကို ဖယ်လိုက်သည်amples | ကန့်ကွက်ထားသော Examples
အသစ်ထွamples
တစ်ခုမှ
ပြင်ဆင်ထားသော Examples
တစ်ခုမှ
Ex ကို ဖယ်လိုက်သည်amples
တစ်ခုမှ
ကန့်ကွက်ထားသော Examples
တစ်ခုမှ
ဖြန့်ချိမှုပြောင်းလဲမှုများ၏သက်ရောက်မှု
သက်ရောက်မှုထုတ်ပြန်ချက်များ | ရွှေ့ပြောင်းခြင်းလမ်းညွှန်
သက်ရောက်မှုထုတ်ပြန်ချက်များ
တစ်ခုမှ
ရွှေ့ပြောင်းခြင်းလမ်းညွှန်
တစ်ခုမှ
သိထားသော ပြဿနာများနှင့် ကန့်သတ်ချက်များ
တစ်ခုမှ
ဤဖြန့်ချိမှုကို အသုံးပြု

မူပိုင်ခွင့် © 2025 Silicon Laboratories မူပိုင်ခွင့်ကိုလက်ဝယ်ထားသည်။

၅/၅

USB

ထုတ်ဝေမှုမှာ ဘာတွေပါလဲ။ | လိုက်ဖက်သောဆော့ဖ်ဝဲ | တပ်ဆင်ခြင်းနှင့် အသုံးပြုခြင်း | အကူအညီနှင့် အကြံပြုချက်

ဖြန့်ချိမှုမှာ ဘာတွေပါလဲ။

USB Device Stack Application Examples
လိုက်ဖက်သောဆော့ဖ်ဝဲ

ဆော့ဝဲ
Simplicity SDK Simplicity Studio ရိုးရှင်းသော Commander GCC GNU Compiler Collection) ARM IAR EWARM အတွက် IAR Embedded Workbench

တွဲဖက်ဗားရှင်း သို့မဟုတ် ဗားရှင်း
2025.6.0 5.11.0 1.18.2 (Simplicity Studio ဖြင့် ပံ့ပိုးထားသည်) 12.2.1 (Simplicity Studio ဖြင့် ပံ့ပိုးထားသည်) 9.40.1 (Simplicity Studio ဖြင့် ပံ့ပိုးထားသည်)

တပ်ဆင်ခြင်းနှင့်အသုံးပြုခြင်း။

သင်၏ ဖွံ့ဖြိုးတိုးတက်မှုကို စတင်ရန် ကျွန်ုပ်တို့၏:
USB ကိရိယာ ပရိုဂရမ်ရေးဆွဲခြင်း လမ်းညွှန်။ API စာရွက်စာတမ်း။
Secure Vault ပေါင်းစည်းခြင်းဆိုင်ရာ အချက်အလက်အတွက်၊ Secure Vault ကို ကြည့်ပါ။
ပြန်လည်ကျင်းပရန်view လုံခြုံရေးနှင့် ဆော့ဖ်ဝဲ အကြံပေး အသိပေးချက်များ နှင့် သင်၏ အသိပေးချက် ဦးစားပေးများကို စီမံပါ-
ò https://community.silabs.com/ သို့သွားပါ။ ó သင့်အကောင့်အထောက်အထားများဖြင့် ဝင်ရောက်ပါ။ ô သင့်လိုလားသူကို နှိပ်ပါ။file စာမျက်နှာ၏ အထက်ညာဘက်ထောင့်ရှိ အိုင်ကွန်။
õ dropdown menu မှ အကြောင်းကြားချက်များကို ရွေးပါ။ ö အကြောင်းကြားချက်များကဏ္ဍတွင်၊ ပြန်လည်လုပ်ဆောင်ရန် ကျွန်ုပ်၏ထုတ်ကုန်သတိပေးချက်များတက်ဘ်သို့ သွားပါ။view သမိုင်းဆိုင်ရာ လုံခြုံရေးနှင့် ဆော့ဖ်ဝဲ အကြံပေး
အသိပေးချက်များ
÷ သင့်စိတ်ကြိုက်ရွေးချယ်မှုများကို စီမံခန့်ခွဲရန်၊ သင့်အား မည်သည့်ထုတ်ကုန်အပ်ဒိတ်များနှင့် အကြံပေးချက်များကို စိတ်ကြိုက်ပြင်ဆင်ရန် အကြောင်းကြားချက်များ စီမံခန့်ခွဲရန် တက်ဘ်ကို အသုံးပြုပါ။
လက်ခံသည်။
အကြံပြုထားသော ဖွဲ့စည်းမှုဆက်တင်များအတွက်၊ ဤနေရာတွင် ကြည့်ပါ။
ဤထုတ်ဝေမှုတွင် ဆော့ဖ်ဝဲအကြောင်း ပိုမိုလေ့လာရန်၊ ကျွန်ုပ်တို့၏ အွန်လိုင်းစာရွက်စာတမ်းများကို ဝင်ရောက်ကြည့်ရှုပါ။
အကူအညီနှင့် အကြံပြုချက်

Silicon Labs ပံ့ပိုးကူညီမှုထံ ဆက်သွယ်ပါ။ အဖြေများရရှိရန် ကျွန်ုပ်တို့၏ Ask AI ကိရိယာကို အသုံးပြုရန်၊ ဤစာမျက်နှာ၏ထိပ်ရှိ ရှာဖွေမှုအကွက်ကို ကြည့်ပါ။

မှတ်ချက်- အမေး AI သည် စမ်းသပ်ဆဲဖြစ်သည်။

ကျွန်ုပ်တို့၏ developer အသိုင်းအဝိုင်းထံမှ အကူအညီရယူပါ။
SDK ထုတ်ဝေမှုနှင့် ပြုပြင်ထိန်းသိမ်းမှုမူဝါဒ
ကျွန်ုပ်တို့၏ SDK ထုတ်ဝေမှုနှင့် ပြုပြင်ထိန်းသိမ်းမှုမူဝါဒကို ကြည့်ပါ။

မူပိုင်ခွင့် © 2025 Silicon Laboratories မူပိုင်ခွင့်ကိုလက်ဝယ်ထားသည်။

၅/၅

ကျော်view
ကျော်view
သတ်မှတ်ချက်များ
"Universal Serial Bus သတ်မှတ်ချက် ပြန်လည်ပြင်ဆင်မှု 2.0" နှင့် ကိုက်ညီပြီး "Interface Association Descriptor Engineering Change Notice (ECN)" လွှဲပြောင်းမှု အမျိုးအစားများကို အကောင်အထည်ဖော်ပါ
Control Bulk Interrupt USB အတန်းများ Communication Device Class (CDC) Abstract Control Model (ACM) Human Interface Device (HID) Mass Storage Class (MSC) Vendor-specific class framework
အင်္ဂါရပ်များ
မှတ်ဉာဏ်ခြေရာကို လျှော့ချရန် လိုအပ်သော အင်္ဂါရပ်များသာ ပါဝင်ရန် အရွယ်တင်နိုင်သော မြန်နှုန်းအပြည့် (12 Mbit/s) ပံ့ပိုးမှု ပေါင်းစပ် (ဘက်စုံသုံး) စက်များကို ပံ့ပိုးပေးသည် အစုံလိုက်ဖွဲ့စည်းမှုဆိုင်ရာ ကိရိယာများကို ပံ့ပိုးပေးသည် USB ပါဝါချွေတာသည့် လုပ်ဆောင်ချက်များကို ပံ့ပိုးပေးသည် (စက်ပစ္စည်းကို ဆိုင်းငံ့ထားပြီး ပြန်လည်စတင်ခြင်း) Mass Storage Class ၏ Mass Storage Class ၏ အပြည့်အ၀ပေါင်းစပ်မှုကို Micrium OS File စနစ် module သည် CMSIS-RTOS2 abstraction layer ဖြင့် ဖန်တီးထားသောကြောင့် မတူညီသော OS များနှင့် အလုပ်လုပ်နိုင်သည်။ Silicon Labs GSDK သည် FreeRTOS နှင့် Micrium OS ပေါက်များပါရှိသည်။

မူပိုင်ခွင့် © 2025 Silicon Laboratories မူပိုင်ခွင့်ကိုလက်ဝယ်ထားသည်။

၅/၅

ကျော်view
ကျော်view

USB ကိရိယာ ဖွဲ့စည်းမှု

ဤအပိုင်းတွင် Silicon Labs USB ကိရိယာကို မည်သို့ configure လုပ်ရမည်ကို ဆွေးနွေးထားသည်။ အောက်ပါအတိုင်း configuration parameters အုပ်စုသုံးစုရှိသည်။
USB Device Core ဖွဲ့စည်းမှု USB ကိရိယာ အချက်အလက် ပြင်ဆင်မှု USB ကိရိယာ ဟာ့ဒ်ဝဲ ဖွဲ့စည်းမှု
USB ကိရိယာ Core ဖွဲ့စည်းမှု
Silicon Labs USB Device ကို sl_usbd_core_config.h တွင်ရှိသော #defines အစုတစ်ခုမှတစ်ဆင့် compile time တွင် configure လုပ်နိုင်ပါသည်။ file. USB စက်ပစ္စည်းသည် မည်သည့်အင်္ဂါရပ်များကို ဖွင့်ထားသည်ကို အခြေခံ၍ ကုဒ်နှင့် ဒေတာအရွယ်အစားများကို စီစကေးခွင့်ပြုထားသောကြောင့် ဖြစ်နိုင်သည့်အခါတွင် USB စက်ပစ္စည်းသည် #defines ကို အသုံးပြုပါသည်။ ၎င်းသည် Silicon Labs USB စက်ပစ္စည်း၏ ဖတ်သာမှတ်ဉာဏ် (ROM) နှင့် ကျပန်းအသုံးပြုခွင့်မှတ်ဉာဏ် (RAM) ခြေရာများကို သင့်အပလီကေးရှင်း၏လိုအပ်ချက်များအပေါ်အခြေခံ၍ ချိန်ညှိနိုင်စေပါသည်။
အကြံပြုထားသည်- ပုံသေတန်ဖိုးများ (စာလုံးကြီးဖြင့် မီးမောင်းထိုးပြထားသည်) ဖြင့် ဖွဲ့စည်းမှုလုပ်ငန်းစဉ်ကို စတင်ပါ။
နမူနာပုံစံဖွဲ့စည်းမှုတွင် အမှာစာပေါ်အခြေခံ၍ အောက်ပါကဏ္ဍများကို စီစဥ်ထားသည်။ file, sl_usbd_core_config.h။
Core Configuration Classes Configuration
Core ဖွဲ့စည်းမှု
ဇယား – USB ကိရိယာ Core ဖွဲ့စည်းမှုပုံစံ အဆက်များ

အဆက်မပြတ်ဖော်ပြချက်

မူရင်းတန်ဖိုး

SL_USBD_TA SK_STACK_ SIZE

USBD core task ၏ bytes တွင် stack size ကို configure လုပ်သည်

4096

SL_USBD_TA SK_PRIORIT Y

USBD core အလုပ်၏ ဦးစားပေးကို စီစဉ်သတ်မှတ်သည်။ ၎င်းသည် CMSIS-RTOS2 ဦးစားပေးဖြစ်သည်။

osPriorityHigh

SL_USBD_A UTO_START _USB_DEVIC E

ဖွင့်ထားပါက၊ kernel ကိုစတင်ပြီးသည်နှင့် USB စက်ပစ္စည်းသည် အလိုအလျောက်စတင်မည်ဖြစ်ပြီး 1 USBD core လုပ်ဆောင်စရာကို ပထမဆုံးအကြိမ်အဖြစ် စီစဉ်ထားပါသည်။ ပိတ်ထားပါက၊ USB host မှရှာဖွေတွေ့ရှိရန်အဆင်သင့်ဖြစ်သောအခါ သင့်အပလီကေးရှင်းသည် sl_usbd_core_start_device() ကိုခေါ်ဆိုရန် လိုအပ်ပါသည်။

SL_USBD_C sl_usbd_add_configuration() မှတဆင့် ထည့်သွင်းမည့် စုစုပေါင်းဖွဲ့စည်းပုံများ

1

ONFIGURATI လုပ်ဆောင်ချက်။

ON_QUANTI

TY

မူပိုင်ခွင့် © 2025 Silicon Laboratories မူပိုင်ခွင့်ကိုလက်ဝယ်ထားသည်။

၅/၅

ကျော်view

အဆက်မပြတ်
SL_USBD _INTERF ACE_QU ANTITY
SL_USBD _ALT_INT ERFACE_ QUANTI
TY
SL_USBD _INTERF ACE_GR
OUP_QU
ဆန့်ကျင်မှု
SL_USBD _DESCRI
PTOR_Q
UANTITY
SL_USBD _STRING _QUANTI
TY
SL_USBD _OPEN_E NDPOIN TS_QUA NTITY

ဖော်ပြချက် သင်၏ဖွဲ့စည်းမှုအားလုံးအတွက် ထည့်ရမည့် USB အင်တာဖေ့စ်စုစုပေါင်း အရေအတွက်။ ၎င်းသည် အသုံးပြုထားသော အတန်းများပေါ်တွင် များစွာမူတည်ပါသည်။ class instance တစ်ခုအတွက် အင်တာဖေ့စ်မည်မျှလိုအပ်သည်နှင့် ပတ်သက်၍ နောက်ထပ်အချက်အလက်များအတွက်၊ သင့်အတန်း(es) ၏ “အရင်းအမြစ်လိုအပ်ချက်များမှ အဓိကလိုအပ်ချက်များ” ကဏ္ဍကို ကိုးကားပါ။
သင်၏ဖွဲ့စည်းပုံများ အားလုံးအတွက် ထည့်ရမည့် USB အစားထိုး အင်တာဖေ့စ် စုစုပေါင်း အရေအတွက်။ ၎င်းသည် အသုံးပြုထားသော အတန်းများပေါ်တွင် များစွာမူတည်ပါသည်။ ဤတန်ဖိုးသည် SL_USBD_INTERFACE_QUANTITY ထက် အမြဲတန်းတူ သို့မဟုတ် ကြီးနေရပါမည်။ class instance တစ်ခုအတွက် အစားထိုး interface မည်မျှလိုအပ်သည်နှင့် ပတ်သက်၍ နောက်ထပ်အချက်အလက်များအတွက်၊ သင်၏ class(es) ၏ "အရင်းအမြစ်လိုအပ်ချက်များမှ Core လိုအပ်ချက်များ" ကဏ္ဍကို ကိုးကားပါ။
သင်၏ဖွဲ့စည်းမှုအားလုံးအတွက် ထပ်ထည့်မည့် USB အင်တာဖေ့စ်အုပ်စု စုစုပေါင်းအရေအတွက်။ ၎င်းသည် အသုံးပြုထားသော အတန်းများပေါ်တွင် များစွာမူတည်ပါသည်။ အတန်းအစား အင်စတီကျုတစ်ခု လိုအပ်သည့် အင်တာဖေ့စ်အဖွဲ့ မည်မျှရှိသည်နှင့် ပတ်သက်သည့် နောက်ထပ်အချက်အလက်များအတွက်၊ သင့်အတန်း(es) ၏ “အရင်းအမြစ်လိုအပ်ချက်များမှ အရင်းအနှီးများ” ကဏ္ဍကို ကိုးကားပါ။
သင်၏ဖွဲ့စည်းပုံများအားလုံးကို ထည့်သွင်းမည့် Endpoint ဖော်ပြချက် စုစုပေါင်းအရေအတွက်။ ၎င်းသည် အသုံးပြုထားသော အတန်းများပေါ်တွင် များစွာမူတည်ပါသည်။ အတန်းဥပမာတစ်ခုအတွက် အဆုံးမှတ်ဖော်ပြသူ မည်မျှလိုအပ်သည်နှင့် ပတ်သက်၍ နောက်ထပ်အချက်အလက်များအတွက်၊ သင့်အတန်း(es) ၏ "အဆုံးမှတ်အရေအတွက်" ကို ကိုးကားပါ။ ထိန်းချုပ်မှု အဆုံးမှတ်များကို ဤနေရာတွင် ထည့်သွင်းစဉ်းစားရန် မလိုအပ်ကြောင်း သတိပြုပါ။ USB ကြိုး စုစုပေါင်း အရေအတွက်။ ပမာဏကို သုညသို့ သတ်မှတ်ခြင်းသည် အင်္ဂါရပ်ကို ပိတ်ပါမည်။ ၎င်းကိုပိတ်ထားခြင်းဖြင့် စက်ပစ္စည်းသည် အပလီကေးရှင်းမှပေးပို့သော USB ဖော်ပြချက်စာကြောင်းများကို သိမ်းဆည်းထားမည်မဟုတ်ပါ။ ဆိုလိုသည်မှာ အိမ်ရှင်သည် ဖော်ပြချက်စာကြောင်းများ (ထုတ်လုပ်သူနှင့် ထုတ်ကုန်အမည်ကဲ့သို့) ကို ပြန်လည်ရယူနိုင်မည်မဟုတ်ဟု ဆိုလိုသည်။ ဖွဲ့စည်းမှုတစ်ခုစီတွင် ဖွင့်လှစ်ထားသော အဆုံးမှတ်စုစုပေါင်းအရေအတွက်။ စက်ပစ္စည်းတစ်ခုသည် ထိန်းချုပ်လွှဲပြောင်းမှုများအတွက် အနည်းဆုံး ဖွင့်လှစ်ထားသော အဆုံးမှတ်နှစ်ခု လိုအပ်သော်လည်း၊ အသုံးပြုထားသော အတန်း(es) ၏ အဆုံးမှတ်များကိုလည်း ထည့်သွင်းရပါမည်။ အတန်းဥပမာတစ်ခုအတွက် ဖွင့်လှစ်ထားသော အဆုံးမှတ်အရေအတွက်မည်မျှလိုအပ်သည်နှင့် ပတ်သက်၍ နောက်ထပ်အချက်အလက်များအတွက်၊ သင့်အတန်း(es) ၏ "အဆုံးမှတ်အရေအတွက်" ကို ကိုးကားပါ။

မူရင်းတန်ဖိုး
၇၁၄၀၅ ၀.၀၃၅
2
၁၃၀၀ ၇၆၉ ၆၈၈

Classes Configuration
အတန်းများတွင် သတ်မှတ်ထားသော compile-time configuration များရှိသည်။ နောက်ထပ်အချက်အလက်များအတွက် USB စက်ပစ္စည်းအတန်းများကို ကိုးကားပါ။
USB ကိရိယာ အချက်အလက် ဖွဲ့စည်းမှု

sl_usbd_device_config.h ဖွဲ့စည်းမှု file ရောင်းချသူ/ထုတ်ကုန် ID၊ ကိရိယာကြိုးများ စသည်တို့ကဲ့သို့သော သင့်စက်ပစ္စည်းနှင့်ပတ်သက်သည့် အခြေခံအချက်အလက်များကို သတ်မှတ်ရန် အချိန်ကာလ #define-s ကို ပြန်လည်စုဖွဲ့သည်။ အောက်ပါဇယားတွင် ဤဖွဲ့စည်းပုံတွင် ရရှိနိုင်သော အချက်အလက်တစ်ခုစီကို ဖွဲ့စည်းမှုသတ်မှတ်ဖော်ပြသည် file.

ဇယား – USB ကိရိယာ အချက်အလက် ပြင်ဆင်သတ်မှတ်မှု သတ်မှတ်သည်။

အဆက်မပြတ်
SL_USBD_DEVIC E_VENDOR_ID
SL_USBD_DEVIC E_PRODUCT_ID

ဖော်ပြချက် USB Implementers Forum မှ ပေးပို့ထားသည့်အတိုင်း သင့်ရောင်းချသူ မှတ်ပုံတင်နံပါတ် စျေးရောင်းချသူ ID ကို သင်မည်သို့ရရှိနိုင်ကြောင်း အချက်အလက်များပိုမိုသိရှိလိုပါက http://www.usb.org/developers/vendor/ တွင် ကြည့်ရှုပါ။ သင့်ထုတ်ကုန် မှတ်ပုံတင်နံပါတ်

မူပိုင်ခွင့် © 2025 Silicon Laboratories မူပိုင်ခွင့်ကိုလက်ဝယ်ထားသည်။

၅/၅

ကျော်view

အဆက်မပြတ်

ဖော်ပြချက်

SL_USBD_DEVICE_RELEASE သင့်စက်ပစ္စည်း၏ နံပါတ်ကို ထုတ်ဝေပါ။ _NUMBER

SL_USBD_DEVICE_MANUFA သင့်စက်ပစ္စည်း၏ ထုတ်လုပ်သူအား ဖော်ပြသည့် စာကြောင်း။ ဤဖွဲ့စည်းပုံကို လျစ်လျူရှုလိုက်သောအခါ၊

CTURER_STRING

ဖွဲ့စည်းမှုပုံစံ SL_USBD_STRING_QUANTITY ကို 0 ဟု သတ်မှတ်ထားသည်။

သင့်ထုတ်ကုန်ကိုဖော်ပြသည့် SL_USBD_DEVICE_PRODUC စာတန်း။ စီစဉ်သတ်မှတ်သည့်အခါ ဤဖွဲ့စည်းပုံကို လျစ်လျူရှုထားသည်။

T_STRING

SL_USBD_STRING_QUANTITY ကို 0 ဟု သတ်မှတ်ထားသည်။

SL_USBD_DEVICE_SERIAL_N သင့်စက်ပစ္စည်း၏ အမှတ်စဉ်နံပါတ်ပါရှိသော စာတန်း။ ဤဖွဲ့စည်းပုံကို လျစ်လျူရှုလိုက်သောအခါ၊

UMBER_STRING

ဖွဲ့စည်းမှုပုံစံ SL_USBD_STRING_QUANTITY ကို 0 ဟု သတ်မှတ်ထားသည်။

SL_USBD_DEVICE_LANGUA သင့်စက်ပစ္စည်း၏ စာကြောင်းများဘာသာစကား၏ သက်သေခံနံပါတ်။ ဖြစ်နိုင်သောတန်ဖိုးများမှာ-
GE_ID

– SL_USBD_LANG_ID_ARABIC_SAUDI_ARABIA

– SL_USBD_LANG_ID_CHINESE_TAIWAN

– SL_USBD_LANG_ID_ENGLISH_US

– SL_USBD_LANG_ID_ENGLISH_UK

– SL_USBD_LANG_ID_FRENCH

– SL_USBD_LANG_ID_GERMAN

– SL_USBD_LANG_ID_GREEK

– SL_USBD_LANG_ID_ITALIAN

– SL_USBD_LANG_ID_PORTUGUESE

– SL_USBD_LANG_ID_SANSkrIT

စီစဉ်သတ်မှတ်မှု SL_USBD_STRING_QUANTITY ကို 0 ဟု သတ်မှတ်ထားသောအခါ ဤဖွဲ့စည်းပုံကို လျစ်လျူရှုထားသည်။

USB ကိရိယာ ဟာ့ဒ်ဝဲ ဖွဲ့စည်းမှု

သင်အသုံးပြုနေသော Silicon Labs စက်ပစ္စည်းပေါ် မူတည်၍ USB VBUS Sense အချက်ပြမှုအတွက် စီစဉ်သတ်မှတ်ရန် သင့်တွင် GPIO pin နှင့် port များ ရှိနိုင်ပါမည်။ ဖွဲ့စည်းမှု သတ်မှတ်ချက်များသည် sl_usbd_hardware_config.h ခေါင်းစီးတွင် ရှိသည် file.

အဆက်မပြတ်
SL_USBD_DRIVER_VBUS_SENSE_PORT SL_USBD_DRIVER_VBUS_SENSE_PIN

ဖော်ပြချက်
သင့်ဘုတ်ပေါ်ရှိ USB VBUS Sense အချက်ပြမှုအတွက် GPIO အပေါက်။ သင့်ဘုတ်ပေါ်ရှိ USB VBUS Sense အချက်ပြမှုအတွက် GPIO ပင်နံပါတ်။

မူပိုင်ခွင့် © 2025 Silicon Laboratories မူပိုင်ခွင့်ကိုလက်ဝယ်ထားသည်။

၅/၅

ကျော်view
ကျော်view
USB ကိရိယာ ပရိုဂရမ်ရေးဆွဲခြင်း လမ်းညွှန်
ဤအပိုင်းတွင် USB ကိရိယာ မော်ဂျူးကို အသုံးပြုပုံကို ရှင်းပြထားသည်။
USB Device Module ၏ ကနဦးတပ်ဆင်မှု
ဤကဏ္ဍသည် USB ကိရိယာ မော်ဂျူးကို စတင်ရန်နှင့် စက်ပစ္စည်းတစ်ခုကို ထည့်သွင်းရန်၊ ပြင်ဆင်ရန်နှင့် စတင်ရန် လိုအပ်သည့် အခြေခံအဆင့်များကို ဖော်ပြသည်။ USB Device Module ကို စတင်ခြင်း USB ကိရိယာ Core ကို စတင်ခြင်း aCl ss(es) ကို အစပြုခြင်း သင်၏ USB ကိရိယာကို ထည့်သွင်းခြင်း သင့် USB ကိရိယာကို တည်ဆောက်ခြင်း ပုံစံသတ်မှတ်ချက်များ ထည့်ခြင်း (များ) USB လုပ်ဆောင်ချက်ပေါင်းထည့်ခြင်း (များ) သင့် USB ကိရိယာကို စတင်ခြင်း
Event Hook လုပ်ဆောင်ချက်များ
USB Device Module ကို စတင်နေပါသည်။
USB Device Core ကို စတင်နေပါသည်။
a US a သည် function sl_usbd_core_init() ကို c lling လုပ်ခြင်းဖြင့် B device module core ကို ling လုပ်ခြင်းဖြင့် စတင်ပါ။ T aa he ex mple သည် c lling sl_usbd_core_init() ကို ပြသည် ။
Example – sl_usbd_core_init() ကို ခေါ်သည်
sl_status_t အခြေအနေ၊ အခြေအနေ = sl_usbd_core_init(); အကယ်၍ (အခြေအနေ ! SL_STATUS_OK) { /* အမှားအယွင်းတစ်ခု ဖြစ်ပေါ်ခဲ့သည်။ ကိုင်တွယ်မှု အမှားအယွင်းကို ဤနေရာတွင် ထည့်သွင်းသင့်သည်။ */
}
အတန်း(များ)ကို စတင်ခြင်း
USB ကိရိယာ မော်ဂျူး core ကို စတင်လုပ်ဆောင်ပြီးနောက်၊ သင်အသုံးပြုရန် ရည်ရွယ်ထားသော အတန်းတစ်ခုစီကို စတင်ရပါမည်။ နောက်ထပ်အချက်အလက်များအတွက် သင်၏ acl ss(es) ၏ “ပရိုဂရမ်ရေးဆွဲခြင်းလမ်းညွှန်” အပိုင်းကို ကြည့်ပါ။
သင်၏ USB ကိရိယာကို တည်ဆောက်ခြင်း။
ဖွဲ့စည်းမှု(များ) ထည့်ခြင်း
သင့်စက်ပစ္စည်းကို အောင်မြင်စွာစတင်ပြီးနောက်၊ ပုံစံအသစ်ဖြင့် စတင်ပြီး ၎င်းတွင် USB လုပ်ဆောင်ချက်များကို စတင်ထည့်သွင်းနိုင်ပါသည်။ စက်ပစ္စည်းတစ်ခုတွင် အနည်းဆုံး စီစဉ်သတ်မှတ်မှုတစ်ခု ရှိရပါမည်။ configur tion(s) တစ်ခုထည့်ရန်၊ function aa sl_usbd_core_ dd_configur tion() function ကိုခေါ်ဆိုပါ။ သင်ထည့်သွင်းလိုသော ဖွဲ့စည်းမှုတစ်ခုစီအတွက် ဤလုပ်ဆောင်ချက်ကို ခေါ်ရပါမည်။ ရည်းစားဟောင်းampအောက်မှာတော့ Full-speed ထည့်နည်းကို ပြထားပါတယ်။
Example – သင့်စက်ပစ္စည်းသို့ ချိန်ညှိချက်(များ) ထည့်ခြင်း။

မူပိုင်ခွင့် © 2025 Silicon Laboratories မူပိုင်ခွင့်ကိုလက်ဝယ်ထားသည်။

၅/၅

ကျော်view

sl_status_t အခြေအနေ၊ uint8_t config_nbr_fs;

/* စက်ပစ္စည်းသို့ မြန်နှုန်းအပြည့် ဖွဲ့စည်းမှုထည့်သွင်းခြင်း။ */

status = sl_usbd_core_add_configuration(0၊

/* ဖွဲ့စည်းမှုတွင် အထူးရည်ညွှန်းချက်များ မရှိပါ။ */

100u၊

/* အမြင့်ဆုံးပါဝါသုံးစွဲမှု: 100mA။

*/

SL_USBD_DEVICE_SPEED_FULL၊

/* မြန်နှုန်းအပြည့် ဖွဲ့စည်းမှု။

*/

“Config Add Example Full-Speed ​​config"၊

&config_nbr_fs);

အကယ်၍ (အခြေအနေ ! SL_STATUS_OK) {

/* အမှားအယွင်းတစ်ခု ဖြစ်ပွားခဲ့သည်။ ကိုင်တွယ်မှု အမှားအယွင်းကို ဤနေရာတွင် ထည့်သွင်းသင့်သည်။ */

}

USB လုပ်ဆောင်ချက်(များ) ထည့်ခြင်း
သင့်စက်ပစ္စည်းတွင် အနည်းဆုံး ဖွဲ့စည်းမှုပုံစံတစ်ခုကို အောင်မြင်စွာထည့်သွင်းပြီးနောက်၊ သင့်စက်ပစ္စည်းတွင် အင်တာဖေ့စ်များနှင့် အဆုံးမှတ်များကို သင်ထည့်သွင်းနိုင်သည်။ USB အတန်းတစ်ခုစီတွင် အင်တာဖေ့စ်နှင့် အဆုံးမှတ်အမျိုးအစား၊ အရေအတွက်နှင့် အခြားသော ကန့်သတ်ချက်များဆိုင်ရာ သတ်မှတ်ချက်များတွင် ၎င်း၏ကိုယ်ပိုင်လိုအပ်ချက်များရှိသည်။ Silicon Labs USB ကိရိယာသည် ၎င်းကမ်းလှမ်းသည့်အတန်းများတွင် အင်တာဖေ့စ်များနှင့် အဆုံးမှတ်များကို ပေါင်းထည့်သည်။
သင့်အပလီကေးရှင်းမှ၊ သင်သည် USB အတန်းကို ချက်ချင်းလုပ်ဆောင်နိုင်ပြီး ၎င်းကို ဖွဲ့စည်းမှုတစ်ခုသို့ ထည့်နိုင်သည်။ USB စက်ပစ္စည်းအတန်းအစား သဘောတရားဆိုင်ရာ နောက်ထပ်အချက်အလက်များအတွက်၊ USB စက်ပစ္စည်းအတန်းများကို ကြည့်ပါ။ Multi-function (ပေါင်းစပ်) စက်ပစ္စည်းကိုဖန်တီးရန် အမျိုးအစားများစွာကို ပေါင်းစပ်ဖွဲ့စည်းမှုတစ်ခုတွင် ကွဲပြားသော အတန်းအစားများကို ပေါင်းစပ်ထည့်သွင်းနိုင်သည်ကို သတိပြုပါ။
ရည်းစားဟောင်းampအောက်တွင် class instance တစ်ခုကို ဖန်တီးပြီး ၎င်းကို configuration တစ်ခုတွင် ထည့်နည်းကို အောက်တွင် ပြထားသည်။
Example – သင့်စက်ပစ္စည်းသို့ Class Instance တစ်ခုထည့်ခြင်း။

sl_status_t အခြေအနေ၊ uint8_t class_nbr;
/* သင်အသုံးပြုလိုသော class ၏ instance တစ်ခုကို ဖန်တီးပါ။*/ /* class ပေါ်မူတည်၍ ဤ function သည် arguments များ ပိုမိုရှိနိုင်သည်ကို သတိပြုပါ။ */ အခြေအနေ = sl_usbd_ _create_instance(&class_nbr); အကယ်၍ (အခြေအနေ ! SL_STATUS_OK) { /* အမှားအယွင်းတစ်ခု ဖြစ်ပေါ်ခဲ့သည်။ ကိုင်တွယ်မှု အမှားအယွင်းကို ဤနေရာတွင် ထည့်သွင်းသင့်သည်။ */ }
/* Class instance ကို Full-Speed ​​configuration တွင် ထည့်ပါ။ */ အခြေအနေ = sl_usbd_ _add_to_configuration(class_nbr၊ /* sl_usbd_ ဖြင့် ပြန်ပေးထားသော အတန်းနံပါတ် _create_instance */
config_nbr_fs); /* ဖွဲ့စည်းမှုနံပါတ် sl_usbd_core_add_configuration() ဖြင့် ပြန်ပေးသည်။ */ if (အခြေအနေ ! SL_STATUS_OK) { /* အမှားအယွင်းတစ်ခု ဖြစ်ပွားခဲ့သည်။ ကိုင်တွယ်မှု အမှားအယွင်းကို ဤနေရာတွင် ထည့်သွင်းသင့်သည်။ */ }
သင်၏ USB ကိရိယာကို စတင်ခြင်း။
ပုံမှန်အားဖြင့်၊ စက်ပစ္စည်း စတင်ခြင်း ပြီးမြောက်ပြီး kernel စတင်ပြီးနောက် USB ကိရိယာ၏ ပင်မတာဝန်ဖြင့် စက်ပစ္စည်းကို အလိုအလျောက် စတင်နိုင်မည်ဖြစ်သည်။ စက်ပစ္စည်းကို စတင်ပြီး USB လက်ခံသူမှ မြင်နိုင်သည့်အခါတွင် ထိန်းချုပ်ရန်၊ အလိုအလျောက်စတင်သည့်အင်္ဂါရပ်ကို ပိတ်ရန် SL_USBD_AUTO_START_USB_DEVICE ၏ သတ်မှတ်ဖွဲ့စည်းပုံကို အသုံးပြုပါ။ ပိတ်ထားသည့်အခါ၊ သင်သည် သင့်စက်ပစ္စည်းကို တည်ဆောက်/ပြင်ဆင်ပြီးနောက်၊ လုပ်ဆောင်ချက် sl_usbd_core_start_device() ကိုခေါ်ဆိုခြင်းဖြင့် ၎င်းကို စတင်နိုင်ပြီး USB လက်ခံအား မြင်နိုင်စေရန် ပြုလုပ်နိုင်သည်။
ရည်းစားဟောင်းampsl_usbd_core_start_device() လုပ်ဆောင်ချက်ကို အသုံးပြု၍ သင့်စက်ပစ္စည်းကို စတင်ပုံအောက်တွင် ဖော်ပြထားပါသည်။
Example – သင့်စက်ကို စတင်ပါ။

မူပိုင်ခွင့် © 2025 Silicon Laboratories မူပိုင်ခွင့်ကိုလက်ဝယ်ထားသည်။

၅/၅

ကျော်view

sl_status_t အခြေအနေ၊
အခြေအနေ = sl_usbd_core_start_device(); အကယ်၍ (အခြေအနေ ! SL_STATUS_OK) { /* အမှားအယွင်းတစ်ခု ဖြစ်ပေါ်ခဲ့သည်။ ကိုင်တွယ်မှု အမှားအယွင်းကို ဤနေရာတွင် ထည့်သွင်းသင့်သည်။ */ }

Event Hook လုပ်ဆောင်ချက်များ
USB Device core module သည် သင့်အပလီကေးရှင်းတွင် သင်ပြန်လည်သတ်မှတ်နိုင်သည့် အားနည်းသောချိတ်လုပ်ဆောင်ချက်နှစ်ခုကို ပေးဆောင်ပါသည်။ ၎င်းတို့၏ ရည်ရွယ်ချက်မှာ ဘတ်စ်ကားနှင့် ဖွဲ့စည်းမှုဆိုင်ရာ ဖြစ်ရပ်များ ပေါ်ပေါက်လာသည့်အခါ အသိပေးရန်ဖြစ်သည်။
ဇယား – USB Event Hook လုပ်ဆောင်ချက်များ

ပွဲ

ဖော်ပြချက်

ဘတ်စ်ကား

USB Bus ဖြစ်ရပ် ဖြစ်ပေါ်သည့်အခါ ခေါ်သည်။

USB Configuration event ပေါ်ပေါက်လာသောအခါတွင် ဖွဲ့စည်းမှုပုံစံကို ခေါ်သည်။

လုပ်ဆောင်ချက် လက်မှတ်
sl_usbd_on_bus_event(sl_usbd_bus_event_t အစီအစဉ်); sl_usbd_on_config_event(sl_usbd_config_event_t ဖြစ်ရပ်၊ uint8_t config_nbr);

Example – Event Hook လုပ်ဆောင်ချက်များ

sl_usbd_on_bus_event(sl_usbd_bus_event_t ပွဲပျက်ပြယ်) { switch (ဖြစ်ရပ်) { case SL_USBD_EVENT_BUS_CONNECT-
// USB ကြိုးကို host controller break တစ်ခုတွင် ထည့်သွင်းသည့်အခါ ခေါ်သည်။
အိတ်စဥ် SL_USBD_EVENT_BUS_DISCONNECT: // USB ကြိုးအား လက်ခံသူ ထိန်းချုပ်ကိရိယာ ပြတ်တောက်မှုမှ ဖယ်ရှားလိုက်သောအခါ ခေါ်သည်။
ဖြစ်ရပ်မှန် SL_USBD_EVENT_BUS_RESET:// ဟို့စ်မှ reset command break ပေးပို့သောအခါ ခေါ်သည်၊
case SL_USBD_EVENT_BUS_SUSPEND: // လက်ခံသူက suspend command break ပေးပို့သောအခါ ခေါ်သည်၊
case SL_USBD_EVENT_BUS_RESUME: // host က wake up command break ပေးပို့သောအခါ ခေါ်သည်၊
ပုံသေ- ချိုးဖျက်; } }
sl_usbd_on_config_event(sl_usbd_config_event_t event၊ uint8_t config_nbr) { switch (ဖြစ်ရပ်) { case SL_USBD_EVENT_CONFIG_SET-
// host သည် configuration break ကို သတ်မှတ်သောအခါ ခေါ်သည်;
ဖြစ်ရပ်မှန် SL_USBD_EVENT_CONFIG_UNSET: // သတ်မှတ်ဖွဲ့စည်းမှုအား မသတ်မှတ်ဘဲ ချိုးဖျက်သည့်အခါ ခေါ်သည်။
ပုံသေ- ချိုးဖျက်; } }

မူပိုင်ခွင့် © 2025 Silicon Laboratories မူပိုင်ခွင့်ကိုလက်ဝယ်ထားသည်။

၅/၅

ကျော်view

မူပိုင်ခွင့် © 2025 Silicon Laboratories မူပိုင်ခွင့်ကိုလက်ဝယ်ထားသည်။

၅/၅

ကျော်view
ကျော်view

USB စက်ပစ္စည်း အတန်းများ

Silicon Labs USB Device တွင်ရရှိနိုင်သော USB အတန်းများသည် ဘုံလက္ခဏာအချို့ကို မျှဝေပါသည်။ ဤကဏ္ဍတွင် ဤဝိသေသလက္ခဏာများနှင့် ပင်မအလွှာနှင့် ၎င်းတို့၏ အပြန်အလှန်တုံ့ပြန်မှုများကို ရှင်းပြထားသည်။
သီးခြားအတန်းတစ်ခုအတွက် နောက်ထပ်အချက်အလက်များအတွက်၊ အောက်ပါတို့ကို ကြည့်ပါ။
CDC ACM Class HID Class MSC SCSI Class Vendor Class
Class Instances အကြောင်း
USB စက်ပစ္စည်းတွင်ရရှိနိုင်သော USB အတန်းများသည် class instances သဘောတရားကို အကောင်အထည်ဖော်သည်။ class instance သည် device တစ်ခုအတွင်းရှိ function တစ်ခုကို ကိုယ်စားပြုသည်။ လုပ်ဆောင်ချက်ကို အင်တာဖေ့စ်တစ်ခု သို့မဟုတ် အင်တာဖေ့စ်အုပ်စုတစ်ခုဖြင့် ဖော်ပြနိုင်ပြီး သီးခြားအတန်းတစ်ခုမှ ပိုင်ဆိုင်သည်။
USB class အကောင်အထည်ဖော်မှုတစ်ခုစီတွင် class instance သဘောတရားအပေါ် အခြေခံ၍ တူညီသောပုံစံများနှင့် လုပ်ဆောင်ချက်များအချို့ရှိသည်။ ဘုံဖွဲ့စည်းပုံများနှင့် လုပ်ဆောင်ချက်များကို အောက်ပါဇယားတွင် ဖော်ပြထားပါသည်။ ကော်လံခေါင်းစဉ် 'Constants သို့မဟုတ် Function' တွင်၊ placeholder XXXX ကို အတန်း၏အမည်ဖြင့် အစားထိုးနိုင်သည်- CDC၊ HID၊ MSC၊ CDC_ACM သို့မဟုတ် VENDOR (လုပ်ဆောင်ချက်အမည်များအတွက် ရောင်းချသူ)။
ဇယား – Multiple Class Instances ၏ သဘောတရားများနှင့် ဆက်စပ်နေသော ကိန်းသေများနှင့် လုပ်ဆောင်ချက်များ

ကိန်းသေ သို့မဟုတ် လုပ်ဆောင်ချက်
SL_USBD_XXXX_CL ASS_INS TANCE_QUANTITY
SL_USBD_XXXX_CONFIGUR ATION_QUANTITY
sl_usb d _XXXX_cre သည် _instance () ကိုစားသည်
sl_usbd_XXXX_add_to_conf ပုံဖေါ်ခြင်း()

ဖော်ပြချက်
အတန်းအစား အများဆုံးအရေအတွက်ကို စီစဉ်သတ်မှတ်သည်။
အများဆုံးဖွဲ့စည်းမှုအရေအတွက်ကို စီစဉ်သတ်မှတ်သည်။ အတန်းစတင်ခြင်းကာလအတွင်း၊ ဖန်တီးထားသော class instance တစ်ခုကို တစ်ခု သို့မဟုတ် တစ်ခုထက်ပိုသော configurations များသို့ ပေါင်းထည့်ပါမည်။ အတန်းအစားအသစ်တစ်ခုကို ဖန်တီးပါ။
သတ်မှတ်ထားသော စက်ဖွဲ့စည်းပုံသို့ ရှိပြီးသား အတန်းအစားတစ်ခုကို ပေါင်းထည့်ပါ။

ကုဒ်အကောင်အထည်ဖော်မှုဆိုင်ရာ သတ်မှတ်ချက်များတွင်၊ အတန်းသည် အတန်းထိန်းချုပ်မှုဖွဲ့စည်းပုံပါရှိသော ဒေသဆိုင်ရာ ကမ္ဘာလုံးဆိုင်ရာကိန်းရှင်တစ်ခုကို ကြေညာမည်ဖြစ်သည်။ ဤအတန်းထိန်းချုပ်မှုဖွဲ့စည်းပုံသည် class instance တစ်ခုနှင့်ဆက်စပ်နေပြီး class instance ကိုစီမံခန့်ခွဲရန် တိကျသောအချက်အလက်များပါရှိသည်။
အောက်ပါကိန်းဂဏာန်းများသည် အမှုအခင်းများစွာကို ပြသသည်။ ပုံတစ်ပုံချင်းစီတွင် ကုဒ် ex ပါရှိပါသည်။ampအမှုကိစ္စနှင့် ကိုက်ညီသော le။
ပုံ – Multiple Class Instances – FS Device (1 Configuration with 1 Interface) သည် ပုံမှန် USB စက်ကို ကိုယ်စားပြုသည်။ စက်သည် Full-Speed ​​(FS) ဖြစ်ပြီး တစ်ခုတည်းသော configuration ပါရှိသည်။ စက်ပစ္စည်း၏လုပ်ဆောင်ချက်ကို ဒေတာဆက်သွယ်ရေးအတွက် အဆုံးမှတ်တစ်စုံဖြင့် ဖွဲ့စည်းထားသည့် အင်တာဖေ့စ်တစ်ခုက ဖော်ပြသည်။ class instance တစ်ခုကို ဖန်တီးထားပြီး အင်တာဖေ့စ်တစ်ခုလုံးကို ၎င်းနှင့်ဆက်စပ်နေသော အဆုံးအမှတ်ဖြင့် စီမံခန့်ခွဲနိုင်စေမည်ဖြစ်သည်။
ပုံ – Multiple Class Instances – FS Device 1 Configuration 1 Interface နှင့်အတူ)

မူပိုင်ခွင့် © 2025 Silicon Laboratories မူပိုင်ခွင့်ကိုလက်ဝယ်ထားသည်။

၅/၅

ကျော်view

Figure – Multiple Class Instances – FS Device (1 Configuration with 1 Interface) နှင့် သက်ဆိုင်သော ကုဒ်ကို ex တွင် ပြထားသည်။ample အောက်တွင်။
Example – Multiple Class Instances – FS Device 1 နှင့် Interface 1 Configuration)

sl_status_t အခြေအနေ၊ uint8_t class_0;

void app_usbd_XXXX_enable(uint8_t class_nbr) { /* Handle Class ဖြစ်ရပ်ကို ဖွင့်ပါ။ */ }

void app_usbd_XXXX_disable(uint8_t class_nbr) { /* Handle Class အစီအစဉ်ကို ပိတ်ပါ။ */ }

sl_usbd_XXXX_callbacks_t class_callbacks = {

(၄)

.enable = app_usbd_XXXX_enable၊

.disable = app_usbd_XXXX_disable

};

အခြေအနေ = sl_usbd_XXXX_init();

(၄)

အကယ်၍ (အခြေအနေ ! SL_STATUS_OK) {

/* $$$$ အမှားကို ကိုင်တွယ်ပါ။ */

}

status = sl_usbd_XXXX_create_instance(&class_callbacks၊

(၄)

&class_0);

အကယ်၍ (အခြေအနေ ! SL_STATUS_OK) {

/* $$$$ အမှားကို ကိုင်တွယ်ပါ။ */

}

အခြေအနေ = sl_usbd_XXXX_add_to_configuration(class_0၊ config_0);

(၄)

အကယ်၍ (အခြေအနေ ! SL_STATUS_OK) {

/* $$$$ အမှားကို ကိုင်တွယ်ပါ။ */

}

(1) အတန်းတိုင်းသည် စက်ချိတ်ဆက်မှု/ချိတ်ဆက်မှုပြတ်တောက်သည့်ဖြစ်ရပ်များနှင့် အတန်းသီးသန့်ဖြစ်ရပ်များအတွက် ပြန်ခေါ်သည့်လုပ်ဆောင်ချက်အစုံကို ပေးပါသည်။ sl_usbd_XXXX_create_instance() ဖြင့် class instance ကိုဖန်တီးသောအခါ callback structure object ကို argument အဖြစ် ကျော်သွားသည်
လုပ်ဆောင်ချက်။
(၁) အတန်းကို စတင်ပါ။ အတွင်းပိုင်း ကိန်းရှင်များ၊ တည်ဆောက်ပုံများနှင့် အတန်းအစား ဆိပ်ကမ်းများအားလုံးကို စတင်လုပ်ဆောင်ပါမည်။ အချို့သောအတန်းများတွင် Init() လုပ်ဆောင်ချက်သည် အခြားသော အကြောင်းပြချက်များကို ယူဆောင်နိုင်သည်ကို သတိပြုပါ။

မူပိုင်ခွင့် © 2025 Silicon Laboratories မူပိုင်ခွင့်ကိုလက်ဝယ်ထားသည်။

၅/၅

ကျော်view
(၂) class_0 ဖြစ်သည့် class instance ကိုဖန်တီးပါ။ လုပ်ဆောင်ချက် sl_usbd_XXXX_create_instance() သည် class_0 နှင့်ဆက်စပ်နေသော အတန်းထိန်းချုပ်မှုဖွဲ့စည်းပုံကို ခွဲဝေပေးသည်။ အတန်းပေါ်မူတည်၍ sl_usbd_XXXX_create_instance() သည် အတန်းထိန်းချုပ်မှုတည်ဆောက်ပုံတွင် သိမ်းဆည်းထားသော အတန်းအလိုက် အချက်အလက်များကို ကိုယ်စားပြုသည့် အတန်းနံပါတ်မှလွဲ၍ နောက်ထပ် ကန့်သတ်ချက်များ ရှိနိုင်ပါသည်။ aaa (3) cl ss instnce, class_0 ၊ သတ်မှတ်ထားသော configur tion နံပါတ်၊ config_0 သို့ထည့်ပါ။ sl_usbd_XXXX_add_to_configuration() သည် အင်တာဖေ့စ် 0 နှင့် ၎င်း၏ဆက်စပ်နေသော IN နှင့် OUT အဆုံးမှတ်များကို ဖန်တီးပေးလိမ့်မည်။ ရလဒ်အနေဖြင့် class instance သည် interface 0 နှင့် ၎င်း၏ endpoints ကို လွှမ်းခြုံထားသည်။ အင်တာဖေ့စ် 0 တွင် လုပ်ဆောင်သော မည်သည့်ဆက်သွယ်ရေးမဆို အတန်းအစား နံပါတ်၊ class_0 ကို အသုံးပြုပါမည်။ ပုံ – Multiple Class Instances – FS Device (2 Configurations and Multiple Interfaces) သည် ပိုမိုရှုပ်ထွေးသော ex ကို ကိုယ်စားပြုသည်ampလဲ့ မြန်နှုန်းအပြည့် စက်ပစ္စည်းတစ်ခုသည် ပုံစံနှစ်မျိုးဖြင့် ဖွဲ့စည်းထားသည်။ စက်တွင် တူညီသော အတန်းအစားနှင့် သက်ဆိုင်သည့် လုပ်ဆောင်ချက်များ နှစ်ခုပါရှိသော်လည်း လုပ်ဆောင်ချက်တစ်ခုစီကို အင်တာဖေ့စ်နှစ်ခုဖြင့် ဖော်ပြထားပြီး နှစ်ထပ်လမ်းကြောင်း အဆုံးမှတ်များ တွဲလျက် ရှိသည်။ ဒီ exampဒီတော့ class instance နှစ်ခုကို ဖန်တီးထားတယ်။ class instance တစ်ခုစီသည် ပုံ – Multiple Class Instances – FS Device (1 Configuration with 1 Interface) နှင့် Figure – Multiple Class Instances – FS Device (2 Configurations and Multiple Interfaces) နှင့် class instance သည် class instance တစ်ခုတည်းနှင့် ဆက်စပ်နေပါသည်။
ပုံ – Multiple Class Instances – FS Device 2 Configurations နှင့် Multiple Interfaces)

Figure – Multiple Class Instances – FS Device (2 Configurations and Multiple Interfaces) နှင့် သက်ဆိုင်သော ကုဒ်ကို ex တွင် ပြထားသည်။ample အောက်တွင်။ ရှင်းလင်းပြတ်သားမှုအတွက် အမှားအယွင်း ကိုင်တွယ်ခြင်းကို ချန်လှပ်ထားသည်။
Example – Multiple Class Instances – FS Device 2 Configurations နှင့် Multiple Interfaces)

မူပိုင်ခွင့် © 2025 Silicon Laboratories မူပိုင်ခွင့်ကိုလက်ဝယ်ထားသည်။

၅/၅

ကျော်view

sl_status_t အခြေအနေ၊ uint8_t class_0; uint8_t class_1;
အခြေအနေ = sl_usbd_XXXX_init();
အခြေအနေ = sl_usbd_XXXX_create_instance(&class_0); အခြေအနေ = sl_usbd_XXXX_create_instance(&class_1);
အခြေအနေ = sl_usbd_XXXX_add_to_configuration(class_0၊ cfg_0); အခြေအနေ = sl_usbd_XXXX_add_to_configuration(class_1၊ cfg_0);
အခြေအနေ = sl_usbd_XXXX_add_to_configuration(class_0၊ cfg_1); အခြေအနေ = sl_usbd_XXXX_add_to_configuration(class_1၊ cfg_1);

(၄)
(၀.၃၀၀) (၀.၀)၊
(၀.၃၀၀) (၀.၀)၊
(၀.၃၀၀) (၀.၀)၊

(၁) အတန်းကို စတင်ပါ။ မည်သည့် internal variables၊ structures နှင့် class ports များကိုမဆို အစပြုပါမည်။
(၂) class instance၊ class_0 ကို ဖန်တီးပါ။ လုပ်ဆောင်ချက် sl_usbd_XXXX_create_instance() သည် class_0 နှင့်ဆက်စပ်နေသော အတန်းထိန်းချုပ်မှုဖွဲ့စည်းပုံကို ခွဲဝေပေးသည်။
(၃) class instance၊ class_1 ကို ဖန်တီးပါ။ လုပ်ဆောင်ချက် sl_usbd_XXXX_create_instance() သည် class_1 နှင့်ဆက်စပ်နေသော အခြားသော အတန်းထိန်းချုပ်မှုဖွဲ့စည်းပုံကို ခွဲဝေပေးသည်။
(4) class instance၊ class_0 ၊ configuration တွင် cfg_0 ကိုထည့်ပါ။ sl_usbd_XXXX_add_to_configuration() သည် အင်တာဖေ့စ် 0၊ အင်တာဖေ့စ် 1၊ အစားထိုး အင်တာဖေ့စ်များနှင့် ဆက်စပ်သော IN နှင့် OUT အဆုံးမှတ်များကို ဖန်တီးပေးလိမ့်မည်။ အတန်းအစား နံပါတ်၊ class_0 သည် အင်တာဖေ့စ် 0 သို့မဟုတ် အင်တာဖေ့စ် 1 တွင် မည်သည့်ဒေတာဆက်သွယ်ရေးအတွက်မဆို အသုံးပြုမည်ဖြစ်သည်။
(5) class instance၊ class_1 ၊ configuration တွင် cfg_0 ကိုထည့်ပါ။ sl_usbd_XXXX_add_to_configuration() သည် အင်တာဖေ့စ် 2၊ အင်တာဖေ့စ် 3 နှင့် ၎င်းတို့၏ဆက်စပ်နေသော IN နှင့် OUT အဆုံးမှတ်များကို ဖန်တီးပေးလိမ့်မည်။ အတန်းအစား နံပါတ်၊ class_1 သည် အင်တာဖေ့စ် 2 သို့မဟုတ် အင်တာဖေ့စ် 3 တွင် မည်သည့်ဒေတာဆက်သွယ်ရေးအတွက်မဆို အသုံးပြုမည်ဖြစ်သည်။
(၆) တူညီသော အတန်းအစား၊ class_0 နှင့် class_1၊ အခြားဖွဲ့စည်းပုံ၊ cfg_1 သို့ ထည့်ပါ။
အတန်းတိုင်းသည် sl_usbd_XXXX_callbacks_t အမျိုးအစား၏ ဖွဲ့စည်းပုံကို သတ်မှတ်သည်။ ၎င်း၏ ရည်ရွယ်ချက်မှာ အတန်းတိုင်းကို အဖြစ်အပျက် ဖြစ်ပေါ်လာသည့်အခါ ခေါ်ရန် ပြန်ခေါ်သည့် လုပ်ဆောင်ချက် အစုတစ်ခု ပေးရန်ဖြစ်သည်။ class တစ်ခုစီတွင် callback function နှစ်ခုရှိသည်။ ၎င်းတို့ကို အောက်ပါဇယားတွင် ဖော်ပြထားပါသည်။
ဇယား – ဘုံအတန်းအစား ပြန်ခေါ်ခြင်း လုပ်ဆောင်ချက်များ

Fields ဖော်ပြချက် .Enable USB class instance ကို အောင်မြင်စွာ ဖွင့်ထားသောအခါ ဟုခေါ်သည် ။ USB class instance ကို disable လုပ်ထားသောအခါတွင် .disable ဟု ခေါ်သည်။

Function Signature void app_usbd_XXXX_enable(uint8_t class_nbr); app_usbd_XXXX_disable(uint8_t class_nbr);

မူပိုင်ခွင့် © 2025 Silicon Laboratories မူပိုင်ခွင့်ကိုလက်ဝယ်ထားသည်။

၅/၅

ကျော်view
ကျော်view
USB စက် CDC ACM အတန်း
USB Device CDC Base Class Overview USB ကိရိယာ CDC ACM အတန်းအစား အရင်းအမြစ်လိုအပ်ချက်များ Core USB ကိရိယာ CDC ACM အတန်းခွဲများ ကျော်လွန်သည်။view USB ကိရိယာ CDC ACM အတန်းအစား ဖွဲ့စည်းမှု USB ကိရိယာ CDC ACM အတန်းအစား ပရိုဂရမ်ရေးဆွဲခြင်း လမ်းညွှန်
ဤကဏ္ဍသည် ဆက်သွယ်ရေးကိရိယာအတန်းအစား (CDC) အတန်းနှင့် Silicon Labs ၏ USB ကိရိယာစဥ်မှ ပံ့ပိုးပေးသည့် ဆက်စပ် CDC အတန်းအစားကို ဖော်ပြသည်။ Silicon Labs USB-Device သည် လက်ရှိတွင် အမှတ်စဉ် အတုယူရန်အတွက် အသုံးများသော Abstract Control Model (ACM) subclass ကို ပံ့ပိုးပေးပါသည်။
CDC တွင် တယ်လီဖုန်း ဆက်သွယ်ရေးနှင့် ကွန်ရက်ချိတ်ဆက်မှုဆိုင်ရာ ကိရိယာမျိုးစုံ ပါဝင်သည်။ ဆက်သွယ်ရေးစက်များတွင် analog modems၊ analog နှင့် digital တယ်လီဖုန်းများ၊ ISDN terminal adapters စသည်တို့ ပါဝင်ပါသည်။ ဥပမာ၊ampထို့ကြောင့်၊ ကွန်ရက်ချိတ်ဆက်သည့်ကိရိယာများတွင် ADSL နှင့် ကေဘယ်မုဒ်မ်များ၊ Ethernet အဒက်တာများနှင့် hubs များပါရှိသည်။ CDC သည် USB လင့်ခ်ကို အသုံးပြု၍ V.250 (တယ်လီဖုန်းကွန်ရက်ရှိ မိုဒမ်များအတွက်) နှင့် Ethernet (ဒေသခံကွန်ရက်စက်ပစ္စည်းများအတွက်) ကဲ့သို့သော လက်ရှိဆက်သွယ်ရေးဝန်ဆောင်မှုစံနှုန်းများကို ခြုံငုံဖော်ပြရန် မူဘောင်တစ်ခုကို သတ်မှတ်သည်။ ဆက်သွယ်ရေးစက်သည် စက်ပစ္စည်းစီမံခန့်ခွဲမှု၊ လိုအပ်သည့်အခါ ခေါ်ဆိုမှုစီမံခန့်ခွဲရေးနှင့် ဒေတာပေးပို့ခြင်းတို့ကို တာဝန်ယူပါသည်။
CDC သည် စက်ပစ္စည်းအုပ်စုကြီးခုနစ်ခုကို သတ်မှတ်သည်။ အုပ်စုတစ်ခုစီသည် အမျိုးအစားခွဲများစွာပါဝင်နိုင်သည့် ဆက်သွယ်ရေးပုံစံတစ်ခုမှ ပိုင်ဆိုင်သည်။ စက်ပစ္စည်းအုပ်စုတစ်ခုစီတွင် CDC အခြေခံလူတန်းစားမှတပါး ၎င်း၏ကိုယ်ပိုင်သတ်မှတ်ချက်စာရွက်စာတမ်းရှိသည်။ အဖွဲ့ခုနစ်ဖွဲ့မှာ-
Public Switched Telephone Network (PSTN)၊ အသံကြိုးမုဒ်မ်များ၊ တယ်လီဖုန်းများနှင့် အမှတ်စဉ် အတုယူကိရိယာများ အပါအဝင် စက်များ။ terminal adapters များနှင့် တယ်လီဖုန်းများ အပါအဝင် ပေါင်းစပ်ဝန်ဆောင်မှုများ ဒစ်ဂျစ်တယ်ကွန်ရက် (ISDN) ကိရိယာများ။ IEEE 802 မိသားစု (ဥပမာ- ကေဘယ်လ်နှင့် ADSL မိုဒမ်များ၊ WiFi အဒက်တာများ) အပါအဝင် အီသာနက်ထိန်းချုပ်မှုပုံစံ (ECM) စက်ပစ္စည်းများ။ ADSL မိုဒမ်များနှင့် ATM ကွန်ရက်များသို့ ချိတ်ဆက်ထားသော အခြားစက်ပစ္စည်းများအပါအဝင် အပြိုင်အဆိုင် ပြောင်းရွှေ့ခြင်းမုဒ် (ATM) စက်များ။ အသံနှင့် ဒေတာ ဆက်သွယ်မှုများကို စီမံခန့်ခွဲရန် အသုံးပြုသည့် ဘက်စုံသုံး ဆက်သွယ်ရေး ဟန်းဆက် ကိရိယာများ အပါအဝင် ကြိုးမဲ့ မိုဘိုင်းဆက်သွယ်ရေး (WMC) စက်ပစ္စည်းများ။ Ethernet-framed data များကိုဖလှယ်သည့် Ethernet Emulation Model (EEM) စက်များ။ ကွန်ရက်ထိန်းချုပ်မှုပုံစံ (NCM) ကိရိယာများ အပါအဝင် မြန်နှုန်းမြင့် ကွန်ရက်စက်ပစ္စည်းများ (High Speed ​​Packet Access Modems၊ Line Terminal Equipment)
CDC နှင့် ဆက်နွယ်သော အတန်းခွဲ အကောင်အထည်ဖော်မှုသည် အောက်ပါသတ်မှတ်ချက်များနှင့် ကိုက်ညီသည်-
Universal Serial Bus၊ Class Definitions for Communications Devices၊ Revision 1.2၊ November 3 2010။ Universal Serial Bus၊ Communications၊ Subclass for PSTN Devices၊ Revision 1.2၊ February 9 2007။
USB Device CDC Base Class Overview
CDC စက်ပစ္စည်းသည် ဆက်သွယ်ရေးစွမ်းရည်ကို အကောင်အထည်ဖော်ရန် အောက်ပါ interface များဖြင့် ဖွဲ့စည်းထားသည်။
Communications Class Interface (CCI) သည် စက်ပစ္စည်းစီမံခန့်ခွဲမှုအတွက် တာဝန်ရှိပြီး ခေါ်ဆိုမှုစီမံခန့်ခွဲမှုကို ရွေးချယ်နိုင်သည်။ ဟိ
စက်ပစ္စည်းစီမံခန့်ခွဲမှုသည် စက်ပစ္စည်း၏ ယေဘူယျဖွဲ့စည်းပုံနှင့် ထိန်းချုပ်မှုနှင့် အဖြစ်အပျက်များကို အိမ်ရှင်ထံ အကြောင်းကြားပေးသည်။ ခေါ်ဆိုမှုစီမံခန့်ခွဲမှုသည် ခေါ်ဆိုမှုများကို တည်ထောင်ခြင်းနှင့် ရပ်စဲခြင်းတို့ကို လုပ်ဆောင်ပေးသည်။ ခေါ်ဆိုမှု စီမံခန့်ခွဲမှုကို DCI မှတဆင့် ပေါင်းထည့်နိုင်သည်။ CCI သည် CDC စက်များအားလုံးအတွက် မဖြစ်မနေလိုအပ်ပါသည်။ ၎င်းသည် CDC စက်ပစ္စည်းမှပံ့ပိုးပေးသည့် ဆက်သွယ်ရေးမော်ဒယ်ကို သတ်မှတ်ခြင်းဖြင့် CDC လုပ်ဆောင်ချက်ကို ခွဲခြားသတ်မှတ်သည်။ CCI ၏အောက်ပါ အင်တာဖေ့စ်(များ)သည် အသံ သို့မဟုတ် ရောင်းချသူ-သတ်မှတ်ထားသော အင်တာဖေ့စ်ကဲ့သို့ သတ်မှတ်ထားသော USB အတန်းအစား တစ်ခုခုဖြစ်နိုင်သည်။ ရောင်းချသူ-သတ်သတ်မှတ်မှတ် အင်တာဖေ့စ်ကို DCI က အထူးကိုယ်စားပြုသည်။
Data Class Interface (DCI) သည် data transmission အတွက် တာဝန်ရှိသည်။ ပေးပို့သော ဒေတာနှင့်/သို့မဟုတ် လက်ခံရရှိထားသော အချက်အလက်များသည် သီးခြားတစ်ခုအား မလိုက်နာပါ။
ပုံစံ ဒေတာသည် ဆက်သွယ်ရေးလိုင်းတစ်ခုမှ ကုန်ကြမ်းဒေတာ၊ တစ်ဦးတည်းပိုင်ဖော်မတ်တစ်ခုမှ ဒေတာများဖြစ်နိုင်သည်။
CDC စက်တွင် အနည်းဆုံး CCI တစ်ခုနှင့် သုည သို့မဟုတ် ထို့ထက်ပိုသော DCI များ ရှိရပါမည်။ CCI တစ်ခုနှင့် လက်အောက်ခံ DCI တို့သည် အိမ်ရှင်အား အင်္ဂါရပ်တစ်ခု ပေးဆောင်သည်။ ဤစွမ်းရည်ကို လုပ်ဆောင်ချက်တစ်ခုအဖြစ်လည်း ရည်ညွှန်းသည်။ CDC ပေါင်းစပ်ကိရိယာတွင် သင်သည် များစွာရှိနိုင်သည်။

မူပိုင်ခွင့် © 2025 Silicon Laboratories မူပိုင်ခွင့်ကိုလက်ဝယ်ထားသည်။

၅/၅

ကျော်view
လုပ်ဆောင်ချက်များ။ ထို့ကြောင့်၊ ပုံ – CDC Composite Device တွင် ပြထားသည့်အတိုင်း CCI နှင့် DCI(များ) အစုံအလင်ဖြင့် စက်ပစ္စည်းကို ဖွဲ့စည်းထားမည်ဖြစ်သည်။
ပုံ – CDC ပေါင်းစပ်ကိရိယာ

CDC စက်သည် အောက်ဖော်ပြပါ အဆုံးမှတ်များ ပေါင်းစပ်မှုကို အသုံးပြုဖွယ်ရှိသည်-
ပုံသေ အဆုံးမှတ်ဟု ခေါ်သော IN နှင့် OUT endpoints တစ်စုံ။ ရွေးချယ်နိုင်သော အစုလိုက် သို့မဟုတ် အဆုံးမှတ် IN ကို အနှောင့်အယှက်ပေးသည်။ အမြောက်အများ သို့မဟုတ် isochronous IN နှင့် OUT endpoints တစ်စုံ။ Silicon Labs USB စက်ပစ္စည်း stack သည် လောလောဆယ် isochronous endpoints များကို မပံ့ပိုးနိုင်သည်ကို သတိပြုပါ။
အောက်ဖော်ပြပါဇယားတွင် မတူညီသော အဆုံးမှတ်များ၏ အသုံးပြုမှုနှင့် CDC ၏ မည်သည့် interface ကို အသုံးပြုကြောင်း ပြသထားသည်။
ဇယား - CDC အဆုံးမှတ်အသုံးပြုမှု

အဆုံးမှတ်
ထိန်းချုပ်ပါ။
OUT ထိန်းချုပ်ပါ။
အစုလိုက် အစုလိုက် သို့မဟုတ် အစုလိုက် အစီအစဥ် ပြတ်တောက်ခြင်း သို့မဟုတ် အစုလိုက် ပြတ်တောက်ခြင်း
ထုတ်လိုက်

ဦးတည်ချက်
Deviceto-host
အိမ်ရှင်-ကိရိယာ
Deviceto-host
Deviceto-host
အိမ်ရှင်-ကိရိယာ

အင်တာဖေ့စ်အသုံးပြုမှု

CCI

စာရင်းပေးသွင်းခြင်းအတွက် စံတောင်းဆိုမှုများ၊ အတန်းအလိုက် တောင်းဆိုချက်များ၊ စက်ပစ္စည်း

စီမံခန့်ခွဲမှုနှင့် ရွေးချယ်နိုင်သော စီမံခန့်ခွဲမှုဟု ခေါ်သည်။

CCI

စာရင်းပေးသွင်းခြင်းအတွက် စံတောင်းဆိုမှုများ၊ အတန်းအလိုက် တောင်းဆိုချက်များ၊ စက်ပစ္စည်း

စီမံခန့်ခွဲမှုနှင့် ရွေးချယ်နိုင်သော စီမံခန့်ခွဲမှုဟု ခေါ်သည်။

CCI

ring detect၊ အမှတ်စဉ်လိုင်းအခြေအနေ၊ ကွန်ရက်အခြေအနေ ကဲ့သို့သော ဖြစ်ရပ်များ အသိပေးချက်။

DCI

ကုန်ကြမ်း သို့မဟုတ် ဖော်မတ်လုပ်ထားသည့် ဒေတာဆက်သွယ်ရေး။

DCI

ကုန်ကြမ်း သို့မဟုတ် ဖော်မတ်လုပ်ထားသည့် ဒေတာဆက်သွယ်ရေး။

ဆက်သွယ်ရေးစက်အများစုသည် ပွဲများကိုလက်ခံရန် အသိပေးရန် ကြားဖြတ်အဆုံးမှတ်ကို အသုံးပြုသည်။ USB ပရိုတိုကော အမှားအယွင်းများရှိသောအခါတွင် မူပိုင်ပရိုတိုကောသည် ဒေတာပြန်လည်ပေးပို့ခြင်းအပေါ် အားကိုးနေသောအခါတွင် Isochronous endpoints များကို အသုံးမပြုသင့်ပါ။ Isochronous ဆက်သွယ်ရေးသည် ပြန်လည်ကြိုးစားသည့် ယန္တရားများမရှိသောကြောင့် ဒေတာဆုံးရှုံးနိုင်သည်။
ဆက်သွယ်ရေး၏ အဓိက မော်ဒယ်ခုနစ်ခုတွင် အမျိုးအစားခွဲများစွာ ပါဝင်သည်။ အတန်းခွဲတစ်ခုသည် စက်ပစ္စည်းစီမံခန့်ခွဲမှုနှင့် ခေါ်ဆိုမှုစီမံခန့်ခွဲမှုကို ကိုင်တွယ်ရန် CCI ကို အသုံးပြုသင့်ပုံကို ဖော်ပြသည်။ အောက်ဖော်ပြပါဇယားသည် ဖြစ်နိုင်ချေရှိသော အတန်းခွဲများအားလုံးနှင့် ၎င်းတို့ပိုင်ဆိုင်သည့် ဆက်သွယ်မှုပုံစံကို ပြသထားသည်။
ဇယား – CDC အတန်းခွဲများ

အတန်းခွဲများ
Direct Line Control Model Abstract Control Model

ဆက်သွယ်ရေးပုံစံ
PSTN
PSTN

Exampဤ Subclass ကိုအသုံးပြုထားသော စက်ပစ္စည်းများ၏ le
USB host မှ တိုက်ရိုက်ထိန်းချုပ်ထားသော Modem ပစ္စည်းများ
အမှတ်စဉ် အတုယူသည့် ကိရိယာများ၊ အမှတ်စဉ် ကွန်မန်းတစ်ခုဖြင့် ထိန်းချုပ်ထားသော မိုဒမ် ကိရိယာများ

မူပိုင်ခွင့် © 2025 Silicon Laboratories မူပိုင်ခွင့်ကိုလက်ဝယ်ထားသည်။

၅/၅

ကျော်view

အတန်းခွဲများ

ဆက်သွယ်ရေးပုံစံ

Exampဤ Subclass ကိုအသုံးပြုထားသော စက်ပစ္စည်းများ၏ le

တယ်လီဖုန်းထိန်းချုပ်မှုပုံစံ

PSTN

Multi-Channel ထိန်းချုပ်မှု ISDN မော်ဒယ်

CAPI ထိန်းချုပ်မှုပုံစံ ISDN

Ethernet Networking ECM ထိန်းချုပ်မှုပုံစံ

ATM ကွန်ရက်ချိတ်ဆက်ခြင်း။

အေတီအမ်

ထိန်းချုပ်မှုပုံစံ

ကြိုးမဲ့ဟန်းဆက်ထိန်းချုပ်မှုမော်ဒယ်

WMC

စက်ပစ္စည်းစီမံခန့်ခွဲမှု WMC

မိုဘိုင်းတိုက်ရိုက်လိုင်းမော်ဒယ်

WMC

OBEX

WMC

Ethernet Emulation EEM မော်ဒယ်

ကွန်ရက်ထိန်းချုပ်မှုပုံစံ

NCM

အသံ တယ်လီဖုန်း ကိရိယာများ
အခြေခံနှုန်းထား terminal adaptors၊ ပင်မနှုန်း terminal adaptors၊ တယ်လီဖုန်းများ
အခြေခံနှုန်းထား terminal adaptors၊ ပင်မနှုန်းထား terminal adaptors၊ တယ်လီဖုန်းများ DOC-SIS ကေဘယ်မုဒ်မ်များ၊ PPPoE အတုယူခြင်းကို ပံ့ပိုးပေးသော ADSL မိုဒမ်များ၊ Wi-Fi adapters (IEEE 802.11-family)၊ IEEE 802.3 အဒက်တာ ADSL modems
ကြိုးမဲ့ကိရိယာများနှင့် ချိတ်ဆက်နေသည့် မိုဘိုင်းဂိတ်ကိရိယာ
ကြိုးမဲ့ကိရိယာများသို့ ချိတ်ဆက်သည့် မိုဘိုင်းဂိတ်ကိရိယာများ ကြိုးမဲ့စက်ပစ္စည်းများနှင့် ချိတ်ဆက်သည့် မိုဘိုင်းဂိတ်ကိရိယာများ
ကြိုးမဲ့ကိရိယာများနှင့် ချိတ်ဆက်သည့် မိုဘိုင်းဂိတ်ကိရိယာ စက်ပစ္စည်းများသည် သယ်ယူပို့ဆောင်မှု၏နောက်ထပ်အလွှာအဖြစ် Ethernet frames ကိုအသုံးပြုသည့် ကိရိယာများ။ လမ်းကြောင်းလမ်းကြောင်းနှင့် အင်တာနက်ချိတ်ဆက်မှုဆိုင်ရာစက်ပစ္စည်းများအတွက် ရည်ရွယ်ခြင်းမဟုတ်ပါ IEEE 802.3 အဒက်တာများသည် ကွန်ရက်ပေါ်တွင် မြန်နှုန်းမြင့်ဒေတာ ဘန်ဝဒ်ကိုသယ်ဆောင်သည့်

USB ကိရိယာ CDC ACM အတန်းအစား အရင်းအမြစ် လိုအပ်ချက်များသည် Core မှ ဖြစ်သည်။

လုပ်ဆောင်ချက် sl_usbd_cdc_acm_add_to_configuration() သို့ ခေါ်ဆိုမှုမှတစ်ဆင့် USB configuration တွင် CDC ACM အတန်းအစား instance တစ်ခုကို ထည့်လိုက်တိုင်း၊ အောက်ပါအရင်းအမြစ်များကို core မှ ခွဲဝေပေးမည်ဖြစ်သည်။

အရင်းအမြစ်
Interfaces Alternate interfaces Endpoints Interface အုပ်စုများ

အရေအတွက်
၄ ၆၀၂၈၃၀၆ ၄ ၆၀၂၈၃၅၂

ထိုနံပါတ်များသည် ဖွဲ့စည်းမှုအလိုက်ဖြစ်ကြောင်း သတိပြုပါ။ သင်၏ SL_USBD_INTERFACE_QUANTITY ၊ SL_USBD_ALT_INTERFACE_QUANTITY ၊ SL_USBD_INTERFACE_GROUP_QUANTITY နှင့် SL_USBD_DESCRIPTOR_QUANTITY ဖွဲ့စည်းမှုတန်ဖိုးများကို စနစ်ထည့်သွင်းသည့်အခါ၊ အတန်းအစား မည်မျှထည့်သွင်းမည်ကို ထည့်သွင်းစဉ်းစားရန် မမေ့ပါနှင့်။ SL_USBD_OPEN_ENDPOINTS_QUANTITY ဖွဲ့စည်းမှုတန်ဖိုးအတွက်၊ အဆုံးမှတ်များကို လက်ခံဆောင်ရွက်ပေးသူမှ စီစဉ်သတ်မှတ်ထားမှသာ ဖွင့်ထားသောကြောင့်၊ အတန်းဥပမာတစ်ခုအတွက် လိုအပ်သော အဆုံးအမှတ်အရေအတွက်ကို ထည့်သွင်းစဉ်းစားရန် လိုအပ်ပါသည်။
USB Device CDC ACM Subclass Overview

CDC base class သည် Communications Class Interface (CCI) နှင့် Data Class Interface (DCI) ဖြင့် ဖွဲ့စည်းထားပြီး USB Device CDC Base Class တွင် အသေးစိတ် ဆွေးနွေးထားသည်။view . ဤအပိုင်းတွင် ACM အမျိုးအစား CCI အကြောင်း ဆွေးနွေးထားသည်။ ၎င်းတွင် စီမံခန့်ခွဲမှုဒြပ်စင်အတွက် မူရင်းအဆုံးမှတ်နှင့် အကြောင်းကြားချက်ဒြပ်စင်အတွက် အနှောင့်အယှက်အဆုံးမှတ်တို့ ပါဝင်သည်။ DCI တွင် မဖော်ပြထားသော အချက်အလက်များကို သယ်ဆောင်ရန်အတွက် အစုလိုက် အဆုံးမှတ်တစ်စုံကို အသုံးပြုသည်။
ACM အမျိုးအစားခွဲကို ဆက်သွယ်ရေးကိရိယာ နှစ်မျိုးဖြင့် အသုံးပြုသည်-
AT အမိန့်များကို ပံ့ပိုးပေးသည့် စက်များ (ဥပမာ၊ အသံကြိုးမုဒ်မ်)။ Virtual COM port devices များဟုလည်း ခေါ်သည့် အမှတ်စဉ် အတုယူကိရိယာများ။
ACM အတန်းခွဲအတွက် အမျိုးအစားခွဲ-သီးသန့် တောင်းဆိုချက်များစွာ ရှိပါသည်။ ၎င်းတို့သည် သင့်အား စက်ပစ္စည်းကို ထိန်းချုပ်ရန်နှင့် စီစဉ်သတ်မှတ်ရန် ခွင့်ပြုထားသည်။ ACM တောင်းဆိုမှုအားလုံး၏ ပြီးပြည့်စုံသောစာရင်းနှင့် ဖော်ပြချက်ကို သတ်မှတ်ချက်များတွင် တွေ့နိုင်ပါသည်။

မူပိုင်ခွင့် © 2025 Silicon Laboratories မူပိုင်ခွင့်ကိုလက်ဝယ်ထားသည်။

၅/၅

ကျော်view PSTN စက်များအတွက် အမျိုးအစားခွဲများ၊ တည်းဖြတ်မှု 1.2၊ ဖေဖော်ဝါရီ 9၊ 2007=၊ အပိုင်း 6.2.2။
ဤစာရင်းမှ၊ Silicon Labs9 ACM အမျိုးအစားခွဲများသည် အောက်ပါတို့ကို ပံ့ပိုးပေးသည်-
ဇယား - Silicon Labs မှပံ့ပိုးပေးသော ACM တောင်းဆိုမှုများ

အတန်းခွဲတောင်းဆိုမှု ဖော်ပြချက်

SetCommFeature GetCommFeature ClearCommFeature

ပေးထားသော ဆက်သွယ်မှုအင်္ဂါရပ်အတွက် ဆက်တင်များကို ထိန်းချုပ်ရန် အိမ်ရှင်သည် ဤတောင်းဆိုချက်ကို ပေးပို့သည်။ အမှတ်စဉ် အတုယူခြင်းအတွက် အသုံးမပြုပါ။
ပေးထားသော ဆက်သွယ်မှုအင်္ဂါရပ်အတွက် လက်ရှိဆက်တင်များကို ရယူရန် အိမ်ရှင်သည် ဤတောင်းဆိုချက်ကို ပေးပို့သည်။ အမှတ်စဉ် အတုယူခြင်းအတွက် အသုံးမပြုပါ။
ပေးထားသော ဆက်သွယ်မှုအင်္ဂါရပ်အတွက် ဆက်တင်များကို ရှင်းလင်းရန် ဤတောင်းဆိုချက်ကို အိမ်ရှင်က ပေးပို့သည်။ အမှတ်စဉ် အတုယူခြင်းအတွက် အသုံးမပြုပါ။

SetLineCoding

အိမ်ရှင်သည် ACM စက်ပစ္စည်းဆက်တင်များကို ပြင်ဆင်သတ်မှတ်ရန် ဤတောင်းဆိုချက်ကို ပေးပို့သည်- baud နှုန်း၊ ရပ်တန့်ဘစ်အရေအတွက်၊ တူညီမှုအမျိုးအစားနှင့် ဒေတာဘစ်အရေအတွက်။ အမှတ်စဉ်အတုယူမှုတစ်ခုအတွက်၊ သင်ဖွင့်ထားသော virtual COM port တစ်ခုအတွက် serial ဆက်တင်များကို configure လုပ်တိုင်း ဤတောင်းဆိုချက်ကို serial terminal မှ အလိုအလျောက်ပေးပို့ပါသည်။

GetLineCoding

အိမ်ရှင်သည် လက်ရှိ ACM ဆက်တင်များ (baud နှုန်း၊ stop bits၊ parity၊ data bits) ကို ရယူရန် ဤတောင်းဆိုချက်ကို ပေးပို့ပါသည်။ အမှတ်စဉ်အတုယူမှုတစ်ခုအတွက်၊ အမှတ်စဉ် terminal များသည် virtual COM port ကိုဖွင့်စဉ်တွင် ဤတောင်းဆိုချက်ကို အလိုအလျောက်ပေးပို့ပါသည်။

SetControlLineState သည် ဝန်ဆောင်မှုပေးသူအား half-duplex modem အတွက် ထိန်းချုပ်ရန် ဤတောင်းဆိုချက်ကို လက်ခံဆောင်ရွက်ပေးပြီး Data Terminal Equipment (DTE) အဆင်သင့်ဖြစ်မဖြစ်ကို ညွှန်ပြပါသည်။ serial emulation case တွင်၊ DTE သည် serial terminal တစ်ခုဖြစ်သည်။ အမှတ်စဉ် အတုယူမှုတစ်ခုအတွက်၊ အချို့သော အမှတ်စဉ် ဂိတ်များသည် သင့်အား ထိန်းချုပ်မှု သတ်မှတ်ချက်များဖြင့် ဤတောင်းဆိုချက်ကို ပေးပို့ခွင့်ပြုသည်။

SetBreak

အိမ်ရှင်သည် RS-232 စတိုင်ချိုးဖျက်မှုကို ထုတ်လုပ်ရန် ဤတောင်းဆိုချက်ကို ပေးပို့သည်။ အမှတ်စဉ်အတုယူမှုတစ်ခုအတွက်၊ အချို့သော အမှတ်စဉ် ဂိတ်များသည် သင့်အား ဤတောင်းဆိုချက်ကို ပေးပို့ခွင့်ပြုသည်။

Silicon Labs9 ACM အမျိုးအစားခွဲများသည် လက်ရှိ serial line အခြေအနေအကြောင်း လက်ခံအား အသိပေးရန် ကြားဖြတ် IN endpoint ကို အသုံးပြုသည်။ အမှတ်စဉ်
line state သည် host အား အသိပေးသည့် bitmap တစ်ခုဖြစ်သည်။

အချိုးညီမှု အမှားအယွင်း ကျော်လွန်သွားခြင်းကြောင့် ဒေတာကို စွန့်ပစ်လိုက်ခြင်း

Silicon Labs9 ACM အမျိုးအစားခွဲ အကောင်အထည်ဖော်မှုသည် အောက်ပါသတ်မှတ်ချက်များနှင့် ကိုက်ညီသည်-
Universal Serial Bus၊ Communications၊ PSTN စက်များအတွက် Subclass၊ တည်းဖြတ်မှု 1.2၊ ဖေဖော်ဝါရီ 9၊ 2007။
USB ကိရိယာ CDC ACM အတန်းအစား ဖွဲ့စည်းမှု

ဤအပိုင်းတွင် CDC ACM Class (ဆက်သွယ်ရေးစက်အမျိုးအစား၊ Abstract Control Model) ကို မည်သို့ configure လုပ်ရမည်ကို ဆွေးနွေးထားသည်။ configuration parameters အုပ်စုနှစ်စုရှိသည်-
USB ကိရိယာ CDC ACM အတန်းအစား အပလီကေးရှင်း သီးသန့်ဖွဲ့စည်းပုံများ USB ကိရိယာ CDC ACM အတန်းအစား ဆက်စပ်ဖွဲ့စည်းပုံများ
USB ကိရိယာ CDC ACM အတန်းအစား အက်ပ်လီကေးရှင်း သီးသန့်ဖွဲ့စည်းပုံများ

CDC Base Class ACM Subclass
CDC အခြေခံလူတန်းစား

ပထမဦးစွာ၊ Silicon Labs USB စက်ပစ္စည်း CDC အတန်းအစား module ကိုအသုံးပြုရန်၊ သင့်လျှောက်လွှာလိုအပ်ချက်အရ CDC compile-time configuration #define-s ကို ချိန်ညှိရန် လိုအပ်မည်ဖြစ်ပါသည်။ ၎င်းတို့ကို sl_usbd_core_config.h ခေါင်းစီးအတွင်းတွင် ပြန်လည်စုဖွဲ့ထားသည်။ file CDC ကဏ္ဍအောက်တွင်။ ၎င်းတို့၏ ရည်ရွယ်ချက်မှာ USB CDC ပစ္စည်းများ မည်မျှခွဲဝေချထားမည်အကြောင်း USB ကိရိယာ module အား အသိပေးရန်ဖြစ်သည်။

မူပိုင်ခွင့် © 2025 Silicon Laboratories မူပိုင်ခွင့်ကိုလက်ဝယ်ထားသည်။

၅/၅

ကျော်view

အောက်ဖော်ပြပါဇယားသည် ဤဖွဲ့စည်းပုံဖွဲ့စည်းပုံတွင် ရရှိနိုင်သော ဖွဲ့စည်းမှုပုံစံအကွက်တစ်ခုစီကို ဖော်ပြသည်။
ဇယား – USB ကိရိယာ CDC ဖွဲ့စည်းမှုပုံစံ သတ်မှတ်သည်။

ဖွဲ့စည်းမှုအမည်
SL_USBD_CDC_CL AS S_INSTANCE_QUANT ITY
SL_USBD_CDC_CONF IGURATION_QUANTI
TY
SL_USBD_CDC_DATA _INTERFACE_QUANTI
TY

ဖော်ပြချက်
လုပ်ဆောင်ချက်သို့ ခေါ်ဆိုခြင်းဖြင့် သင်ခွဲဝေပေးမည့် အတန်းအစား အရေအတွက်
sl_usbd_cdc_acm_create_instance()။
ဖွဲ့စည်းမှုပုံစံများ။ ACM အတန်းအစားများကို sl_usbd_cdc_acm_add_to_configuration() သို့ aaaa configur tions vi c ll တစ်ခု သို့မဟုတ် တစ်ခုထက်ပိုသော aaaa configur tions တွင် ထည့်နိုင်သည်။
CDC လုပ်ဆောင်ချက်အားလုံးအတွက် စုစုပေါင်းဒေတာ အင်တာဖေ့စ် (DCI)။ CDC ACM လုပ်ဆောင်ချက်တစ်ခုစီသည် aaaaaaaaa dded vi c ll function sl_usbd_cdc_acm_create_instance() သို့ dd dt interf ce ဖြစ်လိမ့်မည်။

မူရင်းတန်ဖိုး
2
1
2

ACM အမျိုးအစားခွဲ
ACM အတန်းခွဲတွင် အောက်ပါဇယားတွင်ပြသထားသည့် compile-time configuration တစ်ခုရှိသည်။
ဇယား – USB ကိရိယာ CDC ACM ဖွဲ့စည်းမှု သတ်မှတ်မှု

ဖွဲ့စည်းမှုအမည်
SL_USBD_CDC_ACM_SUBCL ASS_I NSTANCE_QUANTITY

ဖော်ပြချက်
ခေါ်ဆိုမှုမှတစ်ဆင့် သင်ခွဲဝေပေးမည့် အတန်းခွဲအသေးစိတ်ဖြစ်ရပ်များ အရေအတွက်ကို စီစဉ်သတ်မှတ်ပေးသည်။
လုပ်ဆောင်ချက် sl_usbd_cdc_acm_create_instance()။

မူရင်းတန်ဖိုး
2

USB ကိရိယာ CDC ACM အတန်းအစား အင်စတန့်ပုံစံများ

ဤအပိုင်းသည် CDC ACM အမှတ်စဉ် အတန်းအစား ဖြစ်ရပ်များနှင့် ဆက်စပ်သော ဖွဲ့စည်းမှုများအား သတ်မှတ်သည်။ Class Instance Creation line state interval call mgmt စွမ်းရည် p_acm_callbacks
Class Instance ဖန်တီးခြင်း။

CDC ACM အမှတ်စဉ်အတန်းအစား စံနမူနာတစ်ခုကို ဖန်တီးရန်၊ လုပ်ဆောင်ချက် T ကို sl_usbd_cdc_acm_create_instance() ဟုခေါ်ဆိုပါ။ ဤနေရာတွင် ဖော်ပြထားသည့်အတိုင်း သူ၏ function သည် configuration argument သုံးခုကို ပေးသည်။

line_state_interval
ဤသည်မှာ သင်၏ CDC ACM အမှတ်စဉ် အတန်းအစား စံနမူနာမှ T aa လက်ခံသူထံ လိုင်းအခြေအနေ သတိပေးချက်များကို အစီရင်ခံမည့် ကြားကာလ (မီလီစက္ကန့်အတွင်း) ဖြစ်သည်။ ၎င်း၏ v lue သည် နှစ်လုံးပါဝါဖြစ်ရမည် (1၊ 2၊ 4၊ 8၊ 16 စသည်ဖြင့်)။

call_mgmt_capabilities
စီမံခန့်ခွဲမှုစွမ်းရည် bitmap ကိုခေါ်ဆိုပါ။ bitmap ၏ဖြစ်နိုင်သောတန်ဖိုးများမှာ အောက်ပါအတိုင်းဖြစ်သည် ။

တန်ဖိုး (နည်းနည်း)
SL_USBD_ACM_SERIAL_CALL_MGMT_DEV
SL_USBD_ACM_SERIAL_CALL_MGMT_DATA_CCI _DCI

ဖော်ပြချက်
စက်ပစ္စည်းသည် ခေါ်ဆိုမှုစီမံခန့်ခွဲမှုကို ကိုယ်တိုင်လုပ်ဆောင်သည်။ စက်ပစ္စည်းသည် Data Class အင်တာဖေ့စ်မှတဆင့် ခေါ်ဆိုမှုစီမံခန့်ခွဲမှုအချက်အလက်ကို ပေးပို့နိုင်/လက်ခံနိုင်သည်။

p_acm_callbacks

မူပိုင်ခွင့် © 2025 Silicon Laboratories မူပိုင်ခွင့်ကိုလက်ဝယ်ထားသည်။

၅/၅

ကျော်view

aa M aa p_acm_callbacks သည် sl_usbd_cdc_acm_callbacks_t အမျိုးအစား၏ ဖွဲ့စည်းပုံကို ညွှန်ပြသည်။ ၎င်း၏ ရည်ရွယ်ချက်မှာ CDC AC Cl ss ကို CDC ACM ဖြစ်ရပ်တစ်ခု ပေါ်ပေါက်လာသောအခါတွင် ပြန်လည်ခေါ်ဆိုရန် လုပ်ဆောင်ချက်များကို ပေးဆောင်ရန်ဖြစ်သည်။ ခေါ်ဆိုမှုအားလုံးသည် မဖြစ်မနေမဖြစ်မနေဖြစ်ပြီး ပြန်ခေါ်ရန်မလိုအပ်သည့်အခါ ပြန်လည်ခေါ်ဆိုမှုတည်ဆောက်ပုံပြောင်းနိုင်သောကိန်းရှင်တွင် null pointer (NULL) ကို ပေးပို့နိုင်ပါသည်။ အောက်ဖော်ပြပါဇယားသည် ဤဖွဲ့စည်းပုံဖွဲ့စည်းပုံတွင် ရရှိနိုင်သော ဖွဲ့စည်းမှုပုံစံအကွက်တစ်ခုစီကို ဖော်ပြသည်။
ဇယား – sl_usbd_cdc_acm _callbacks_t ဖွဲ့စည်းမှုဖွဲ့စည်းပုံ

လယ်ကွင်းများ

ဖော်ပြချက်

.ဖွင့်ပါ။

USB class instance ကို ဖွင့်ထားသောအခါ ခေါ်သည်။

အောင်မြင်စွာ။

.disable

USB class instance ကို ပိတ်ထားသည့်အခါ ခေါ်သည်။

.line_control_changed လိုင်းထိန်းချုပ်မှုပြောင်းလဲမှုကို လက်ခံရရှိသည့်အခါ ခေါ်ဆိုသည်။

line_coding_changed လိုင်းကုဒ်ပြောင်းခြင်းကို လက်ခံရရှိသောအခါ ခေါ်သည်။

လုပ်ဆောင်ချက် လက်မှတ်
app_usbd_cdc_acm_enable(uint8_t subclass_nbr);
app_usbd_cdc_acm_disable(uint8_t subclass_nbr);
void app_usbd_cdc_acm_line_control_changed(uint8_t subclass_nbr၊ uint8_t event၊ uint8_t event_chngd); bool app_usbd_cdc_acm_line_coding_changed(uint8_t subclass_nbr၊ subclass_nbr၊ sl_usbd_cdc_acm_line_coding_t
*p_line_coding

ပြန်လည်ခေါ်ဆိုခြင်းဆိုင်ရာ လုပ်ဆောင်ချက်များအတွက် မှတ်ပုံတင်ခြင်း အခမ်းအနား အကြောင်းကြားချက် ခေါ်ဆိုမှု အပိုင်းကို ကြည့်ပါ။ampလဲ့
USB ကိရိယာ CDC ACM အတန်းအစား ပရိုဂရမ်းမင်းလမ်းညွှန်

ဤအပိုင်းတွင် CDC Abstract Control Model အတန်းအစားကို အသုံးပြုပုံကို ရှင်းပြထားသည်။ USB ကိရိယာ CDC ACM အတန်းကို စတင်ခြင်း CDC ACM အတန်းကို အသုံးပြု၍ ဆက်သွယ်ခြင်း သင့်စက်ပစ္စည်းသို့ USB ကိရိယာ CDC ACM အတန်းအစား ထည့်သွင်းခြင်း
USB ကိရိယာ CDC ACM Class ကို စတင်နေပါသည်။

သင့်စက်ပစ္စည်းသို့ CDC ACM အတန်းအစား လုပ်ဆောင်နိုင်စွမ်းကို ထည့်သွင်းရန်အတွက်၊ သင်သည် sl_usbd_cdc_init() nd sl_usbd_cdc_acm_init() လုပ်ဆောင်ချက်များကို aac lling လုပ်ခြင်းဖြင့် ဦးစွာ CDC အခြေခံအတန်းနှင့် ACM အတန်းခွဲကို စတင်ရပါမည်။ T aaaaa he ex mple သည် def ult rguments ကိုအသုံးပြု၍ c ll sl_usbd_cdc_init() nd sl_usbd_cdc_acm_init() ကိုမည်သို့ပြသမည်နည်း။

Example – CDC ACM Class ကို စတင်ခြင်း

sl_status_t အခြေအနေ၊
အခြေအနေ = sl_usbd_cdc_init(); အကယ်၍ (အခြေအနေ ! SL_STATUS_OK) { /* အမှားအယွင်းတစ်ခု ဖြစ်ပေါ်ခဲ့သည်။ ကိုင်တွယ်မှု အမှားအယွင်းကို ဤနေရာတွင် ထည့်သွင်းသင့်သည်။ */
}
အခြေအနေ = sl_usbd_cdc_acm_init(); အကယ်၍ (အခြေအနေ ! SL_STATUS_OK) { /* အမှားအယွင်းတစ်ခု ဖြစ်ပေါ်ခဲ့သည်။ ကိုင်တွယ်မှု အမှားအယွင်းကို ဤနေရာတွင် ထည့်သွင်းသင့်သည်။ */
}
USB စက်ပစ္စည်း CDC ACM Class Instance ကို သင့်စက်ပစ္စည်းသို့ ပေါင်းထည့်ခြင်း။
သင့်စက်တွင် CDC ACM အတန်းအစား လုပ်ဆောင်နိုင်စွမ်းကို ထည့်သွင်းရန်၊ သင်သည် စံနမူနာတစ်ခုကို ဖန်တီးရမည်၊ ထို့နောက် ၎င်းကို သင့်စက်ပစ္စည်း၏ ဖွဲ့စည်းမှုပုံစံ(များ)တွင် ထည့်ပါ။
CDC ACM Class Instance တစ်ခုကို ဖန်တီးခြင်း။

မူပိုင်ခွင့် © 2025 Silicon Laboratories မူပိုင်ခွင့်ကိုလက်ဝယ်ထားသည်။

၅/၅

ကျော်view
CDC ACM Class Instance ကို သင့်စက်၏ဖွဲ့စည်းပုံပုံစံ(များ) တွင် မှတ်ပုံတင်ခြင်း ဖြစ်ရပ်သတိပေးချက် ပြန်ခေါ်ခြင်း
CDC ACM Class Instance တစ်ခုကို ဖန်တီးခြင်း။
aa M aaa Crete CDC AC cl ss instnce လုပ်ဆောင်ချက် sl_usbd_cdc_acm_create_instance() ကို c lling လုပ်ပါ။ T aaa M aaa he ex mple သည် CDC AC cl ss instnce vi sl_usbd_cdc_acm_create_instance() ကို ဖန်တီးနည်းကို ပြထားသည်။
Example – sl_usbd_cdc_acm_create_instance() မှတဆင့် CDC ACM လုပ်ဆောင်ချက်ကို ဖန်တီးခြင်း

uint8_t subclass_nbr; sl_status_t အခြေအနေ၊
အခြေအနေ = 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);
အကယ်၍ (အခြေအနေ ! SL_STATUS_OK) { /* အမှားအယွင်းတစ်ခု ဖြစ်ပေါ်ခဲ့သည်။ ကိုင်တွယ်မှု အမှားအယွင်းကို ဤနေရာတွင် ထည့်သွင်းသင့်သည်။ */
}
CDC ACM Class Instance ကို သင့်စက်၏ဖွဲ့စည်းပုံ(များ) တွင် ထည့်သွင်းခြင်း
သင် CDC ACM အတန်းအစား စံနမူနာတစ်ခုကို ဖန်တီးပြီးနောက်၊ လုပ်ဆောင်ချက်ကိုခေါ်ဆိုခြင်းဖြင့် ၎င်းကို ဖွဲ့စည်းမှုတစ်ခုသို့ သင်ထည့်နိုင်သည်။
sl_usbd_cdc_acm_add_to_configuration()။
T aa he ex mple သည် sl_usbd_cdc_acm_add_to_configuration() ကို cll လုပ်နည်းကို ပြထားသည်။
Example – USBD ACM sl_usbd_cdc_acm_add_to_configuration() သို့ ခေါ်ဆိုပါ။

sl_status_t အခြေအနေ၊

အခြေအနေ = sl_usbd_cdc_acm_add_to_configuration(subclass_nbr၊

(၄)

config_nbr_fs);

(၄)

အကယ်၍ (အခြေအနေ ! SL_STATUS_OK) {

/* အမှားအယွင်းတစ်ခု ဖြစ်ပွားခဲ့သည်။ ကိုင်တွယ်မှု အမှားအယွင်းကို ဤနေရာတွင် ထည့်သွင်းသင့်သည်။ */

}

aaa (1) sl_usbd_cdc_acm_create_instance() ဖြင့် ပြန်ပေးသော configur tion သို့ dd သို့ Cl ss နံပါတ် (၂) Configuration နံပါတ် (ဤနေရာတွင် ၎င်းကို Full-Speed ​​configuration တွင် ထည့်ထားသည်)။
ဖြစ်ရပ်သတိပေးချက် ပြန်လည်ခေါ်ဆိုမှုများကို မှတ်ပုံတင်ခြင်း။
CDC ACM Serial အတန်းသည် လိုင်းထိန်းချုပ်မှု သို့မဟုတ် ကုဒ်ပြောင်းခြင်းဆိုင်ရာ အကြောင်းကြားချက် ပြန်ခေါ်သည့်လုပ်ဆောင်ချက်များမှတစ်ဆင့် သင့်လျှောက်လွှာကို အသိပေးနိုင်သည်။ ACM စံနမူနာဖန်တီးနေစဉ်အတွင်း ပြန်လည်ခေါ်ဆိုမှု လုပ်ဆောင်ချက်များ တည်ဆောက်ပုံအား အငြင်းအခုံအဖြစ် ကျော်ဖြတ်နိုင်သည်။ ထိုခေါ်ဆိုမှုများသည် ရွေးချယ်နိုင်သည်ဟု သတိပြုပါ။ ထွample – CDC ACM ခေါ်ဆိုမှု မှတ်ပုံတင်ခြင်း ခေါ်ဆိုမှု မှတ်ပုံတင်ခြင်း လုပ်ဆောင်ချက်များကို အသုံးပြုခြင်းအား သရုပ်ဖော်သည်။ ထွample – CDC ACM Callbacks Implementation သည် ex ကို ပြသည်။ampပြန်ခေါ်ခြင်းလုပ်ဆောင်ချက်များကို အကောင်အထည်ဖော်ခြင်း။
Example – CDC ACM ပြန်လည်ခေါ်ဆိုမှု မှတ်ပုံတင်ခြင်း။

မူပိုင်ခွင့် © 2025 Silicon Laboratories မူပိုင်ခွင့်ကိုလက်ဝယ်ထားသည်။

၅/၅

ကျော်view

uint8_t subclass_nbr; sl_status_t အခြေအနေ၊
sl_usbd_cdc_acm_callbacks_t sli_usbd_cdc_acm_callbacks = { app_usbd_cdc_acm_connect, app_usbd_cdc_acm_disconnect, app_usbd_cdc_acm_line_control_changed၊ app_usbd_cdc_acm_changed;
အခြေအနေ = sl_usbd_cdc_acm_create_instance(64u၊ SL_USBD_ACM_SERIAL_CALL_MGMT_DATA_CCI_DCI | SL_USBD_ACM_SERIAL_CALL_MGMT_DEV, &sli_usbd_cdc_acm_callbacks, &subclass_usbd_cdc_acm_br);
အကယ်၍ (အခြေအနေ ! SL_STATUS_OK) { /* အမှားအယွင်းတစ်ခု ဖြစ်ပေါ်ခဲ့သည်။ ကိုင်တွယ်မှု အမှားအယွင်းကို ဤနေရာတွင် ထည့်သွင်းသင့်သည်။ */ }
Example – CDC ACM ပြန်လည်ခေါ်ဆိုမှုများကို အကောင်အထည်ဖော်ခြင်း။

bool app_usbd_cdc_acm_line_coding_changed (uint8_t

အတန်းခွဲ_nbr၊

sl_usbd_cdc_acm_line_coding_t *p_line_coding)

{

uint32_t baudrate_new;

uint8_t parity_new;

uint8_t stop_bits_new;

uint8_t data_bits_new;

/* TODO လိုင်းကုဒ်အသစ်ကို အသုံးပြုပါ။*/ 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;

ပြန်လာ (အမှန်);

(၄)

}

void app_usbd_cdc_acm_line_control_changed (uint8_t subclass_nbr၊ uint8_t ပွဲ၊ uint8_t event_changed)
{ bool rts_state; bool rts_state_changed; bool dtr_state; bool dtr_state_changed; bool brk_state; bool brk_state_changed;

/* TODO လိုင်းထိန်းချုပ်မှုအသစ်ကို အသုံးပြုပါ။ */ rts_state = ((ဖြစ်ရပ် & SL_USBD_CDC_ACM_CTRL_RTS) ! 0) ? true : false; rts_state_changed = ((event_changed & SL_USBD_CDC_ACM_CTRL_RTS) ! 0) ? true : false; dtr_state = ((ဖြစ်ရပ် & SL_USBD_CDC_ACM_CTRL_DTR) ! 0) ? true : false; dtr_state_changed = ((event_changed & SL_USBD_CDC_ACM_CTRL_DTR) ! 0) ? true : false; brk_state = ((ဖြစ်ရပ် & SL_USBD_CDC_ACM_CTRL_BREAK) ! 0) ? true : false; brk_state_changed = ((event_changed & SL_USBD_CDC_ACM_CTRL_BREAK) ! 0) ? true : false;
}

(၁) လိုင်းကုဒ်အသုံးပြုခြင်း မအောင်မြင်ပါက ဤလုပ်ဆောင်ချက်သို့ false ပြန်ပေးရန် အရေးကြီးသည်။ မဟုတ်ရင် အမှန်ပြန်ပါ။
CDC ACM Class ကို အသုံးပြု၍ ဆက်သွယ်ခြင်း။
အမှတ်စဉ် အဆင့်အတန်း
Line Coding လိုင်းထိန်းချုပ်မှု

မူပိုင်ခွင့် © 2025 Silicon Laboratories မူပိုင်ခွင့်ကိုလက်ဝယ်ထားသည်။

၅/၅

ကျော်view

Line State Subclass Instance Communication
အမှတ်စဉ် အဆင့်အတန်း
လိုင်းကုဒ်
USB host သည် CDC ACM စက်၏ လိုင်းကုဒ်နံပါတ် (baud rate၊ parity, etc) ကို ထိန်းချုပ်သည်။ လိုအပ်သောအခါတွင်၊ အပလီကေးရှင်းသည် လိုင်းကုဒ်ကို သတ်မှတ်ရန် တာဝန်ရှိသည်။ အောက်တွင်ဖော်ပြထားသည့်ဇယားတွင်ဖော်ပြထားသည့်အတိုင်းလက်ရှိလိုင်းကုဒ်ကိုပြန်လည်ရယူရန်နှင့်သတ်မှတ်ရန်လုပ်ဆောင်မှုနှစ်ခုရှိသည်။
ဇယား – CDC ACM Line Coding Functions

လုပ်ဆောင်ချက်
sl_usbd_cdc_acm_g e t_line _co d ing ()
sl_usbd_cdc_acm_s e t_line _co d ing ()

ဖော်ပြချက်
သင့်အပလီကေးရှင်းသည် SetLineCoding တောင်းဆိုမှုများဖြင့် လက်ခံဆောင်ရွက်ပေးသူထံမှ သို့မဟုတ် လုပ်ဆောင်ချက် sl_usbd_cdc_acm_set_line_coding() ဖြင့် သတ်မှတ်ထားသော လက်ရှိလိုင်းကုဒ်ဆက်တင်များကို ရနိုင်ပါသည်။
သင့်အပလီကေးရှင်းသည် လိုင်းကုဒ်ကို သတ်မှတ်နိုင်သည်။ လက်ခံသူသည် GetLineCoding တောင်းဆိုမှုဖြင့် ဆက်တင်များကို ပြန်လည်ရယူနိုင်သည်။

လိုင်းထိန်းချုပ်မှု
USB host သည် CDC ACM စက်ပစ္စည်း၏ လိုင်းထိန်းချုပ်မှု (RTS နှင့် DTR ပင်များ၊ break signal နှင့် အခြားအရာများ) ကို ထိန်းချုပ်သည်။ လိုအပ်သောအခါတွင်၊ သင့်လျှောက်လွှာသည် လိုင်းထိန်းချုပ်မှုများကို ကျင့်သုံးရန် တာဝန်ရှိသည်။ အောက်ဖော်ပြပါဇယားတွင်ဖော်ပြထားသည့်အတိုင်း လက်ရှိလိုင်းထိန်းချုပ်မှုများကို ပြန်လည်ရယူပြီး သတ်မှတ်ရန် လုပ်ဆောင်ချက်တစ်ခုကို ပံ့ပိုးထားသည်။
ဇယား – CDC ACM လိုင်းထိန်းချုပ်မှုလုပ်ဆောင်ချက်များ

လုပ်ဆောင်ချက်
sl_usb d _cd c_acm_g e t_line _co ntr o l_state ()

သင့်အပလီကေးရှင်းသည် SetControlLineState တောင်းဆိုမှုဖြင့် အိမ်ရှင်မှသတ်မှတ်ထားသော လက်ရှိထိန်းချုပ်လိုင်းအခြေအနေကို ရရှိနိုင်ပါသည်။

လိုင်းပြည်နယ်
USB host သည် ပုံမှန်ကြားကာလတွင် လိုင်းအခြေအနေကို ထုတ်ယူသည်။ သင့်အပလီကေးရှင်းသည် ပြောင်းလဲသည့်အခါတိုင်း လိုင်းအခြေအနေကို အပ်ဒိတ်လုပ်ရပါမည်။ လိုအပ်သောအခါတွင်၊ သင်၏ application သည် line state ကိုသတ်မှတ်ရန်တာဝန်ရှိသည်။ အောက်တွင်ဖော်ပြထားသည့်ဇယားတွင်ဖော်ပြထားသည့်အတိုင်းလက်ရှိလိုင်းထိန်းချုပ်မှုများကိုပြန်လည်ရယူရန်နှင့်သတ်မှတ်ရန်အတွက်လုပ်ဆောင်မှုနှစ်ခုကိုပေးထားသည်။
ဇယား – CDC ACM Line S tate လုပ်ဆောင်ချက်များ

လုပ်ဆောင်ချက်
sl_usb d _cd c_acm_se t _line _state _e ve nt()
sl_usbd_cdc_acm_cle ar_line _state _e ve nt()

သင့်အပလီကေးရှင်းသည် မည်သည့်လိုင်းအခြေအနေဖြစ်ရပ်(များ)ကိုမဆို သတ်မှတ်နိုင်သည်။ လိုင်းအခြေအနေသတ်မှတ်နေစဉ်တွင်၊ နံပါတ်စဉ်လိုင်းအခြေအနေပြောင်းလဲမှုတစ်ခုအကြောင်း အသိပေးရန်အတွက် လက်ခံသူထံ ဖြတ်တောက်ထားသော IN လွှဲပြောင်းမှုကို ပေးပို့ပါသည်။
အပလီကေးရှင်းသည် လိုင်းအခြေအနေ၏ဖြစ်ရပ်နှစ်ခုကို ရှင်းလင်းနိုင်သည်- ဂီယာဝန်ဆောင်မှုပေးသူနှင့် လက်ခံသူဝန်ဆောင်မှုပေးသူကို ထောက်လှမ်းနိုင်သည်။ အခြားဖြစ်ရပ်များအားလုံးကို ACM serial emulation subclass မှ ကိုယ်တိုင်ရှင်းလင်းပါသည်။

Subclass Instance ဆက်သွယ်ရေး

Silicon Labs ၏ ACM အမျိုးအစားခွဲများသည် အိမ်ရှင်နှင့် ဆက်သွယ်ရန်အတွက် အောက်ပါလုပ်ဆောင်ချက်များကို ပေးဆောင်သည်။ functions9 parameters များအကြောင်း နောက်ထပ်အသေးစိတ်အချက်အလက်များအတွက်၊ CDC ACM Subclass Functions ရည်ညွှန်းချက်ကို ကြည့်ပါ။

လုပ်ဆောင်ချက်အမည်
sl_usb d _cd c_acm_ re ad() sl_usb d _cd c_acm_write()

စစ်ဆင်ရေး
OUT endpoint မှတဆင့် host ထံမှ ဒေတာကို လက်ခံရရှိသည် ။ ဤလုပ်ဆောင်ချက်သည် ပိတ်ဆို့နေသည်။ အစုလိုက် IN endpoint မှတဆင့် host သို့ ဒေတာ ပို့သည် ။ ဤလုပ်ဆောင်ချက်သည် ပိတ်ဆို့နေသည်။

မူပိုင်ခွင့် © 2025 Silicon Laboratories မူပိုင်ခွင့်ကိုလက်ဝယ်ထားသည်။

၅/၅

ကျော်view

ဇယား – CDC ACM ဆက်သွယ်ရေး API အကျဉ်းချုပ် aaaaa sl_usbd_cdc_acm_read() nd sl_usbd_cdc_acm_write() သည် ကျွန်ုပ်၏ tr nsfer မှ ပိတ်ဆို့နေသည့် တစ်ပြိုင်တည်း ဆက်သွယ်မှုကို ပံ့ပိုးပေးပါသည်။ တစ်နည်းဆိုရသော်၊ လုပ်ဆောင်ချက်ကို ခေါ်ဆိုသောအခါ၊ အမှားအယွင်းမရှိဘဲ လွှဲပြောင်းမှုပြီးမြောက်သည်အထိ အပလီကေးရှင်းသည် ပိတ်ဆို့သွားမည်ဖြစ်သည်။ ထာဝစဉ်စောင့်ဆိုင်းခြင်းကို ရှောင်ရှားရန် အချိန်ကုန်သွားနိုင်သည်။ ရည်းစားဟောင်းample အောက်တွင် ရေးတတ်ဖတ်တတ်ပုံကို ပြထားသည်။ampအစုလိုက် OUT endpoint ကိုအသုံးပြု၍ host မှဒေတာကိုလက်ခံရရှိပြီး bulk IN endpoint ကိုအသုံးပြု၍ host သို့ data ပေးပို့သည်။
Listing – Serial Read and Write Example

__ALIGNED(4) uint8_t rx_buf[2];

__ALIGNED(4) uint8_t tx_buf[2];

uint32_t

xfer_len;

sl_status_t

အဆင့်အတန်း;

အခြေအနေ = sl_usbd_cdc_acm_read(subclass_nbr၊

(၄)

rx_buf၊

(၄)

2u၊

0u၊

(၄)

&xfer_len);

အကယ်၍ (အခြေအနေ ! SL_STATUS_OK) {

/* အမှားအယွင်းတစ်ခု ဖြစ်ပွားခဲ့သည်။ ကိုင်တွယ်မှု အမှားအယွင်းကို ဤနေရာတွင် ထည့်သွင်းသင့်သည်။ */

}

အခြေအနေ = sl_usbd_cdc_acm_write(subclass_nbr၊

(၄)

tx_buf၊

(၄)

2u၊

0u၊

(၄)

&xfer_len);

အကယ်၍ (အခြေအနေ ! SL_STATUS_OK) {

/* အမှားအယွင်းတစ်ခု ဖြစ်ပွားခဲ့သည်။ ကိုင်တွယ်မှု အမှားအယွင်းကို ဤနေရာတွင် ထည့်သွင်းသင့်သည်။ */

}

T aaaaa M (1) he cl ss instnce နံပါတ် cre တွင် sl_usbd_cdc_acm_create_instance() သည် သင့်လျော်သော အစုလိုက် OUT သို့မဟုတ် IN endpoint သို့ လွှဲပြောင်းခြင်းကို သင့်လျော်သော OUT သို့မဟုတ် IN endpoint သို့ ပို့ဆောင်ရန် n intern l ကို ရည်ညွှန်းပေးပါသည်။ (၂) သင့်အပလီကေးရှင်းသည် ဒေတာအားလုံးကို လိုက်လျောညီထွေဖြစ်စေရန်အတွက် လုပ်ဆောင်ပေးထားသည့် ကြားခံကြားခံသည် ကြီးမားကြောင်း သေချာစေရမည်။ မဟုတ်ပါက ထပ်တူပြုခြင်း ပြဿနာများ ဖြစ်ပေါ်လာနိုင်သည်။ (၃) အကန့်အသတ်မဲ့ပိတ်ဆို့ခြင်းအခြေအနေကို ရှောင်ရှားရန်၊ မီလီစက္ကန့်အတွင်း ဖော်ပြသည့် အချိန်ကုန်ဆုံးမှုကို သတ်မှတ်ပါ။ 809 တန်ဖိုးသည် အပလီကေးရှင်းလုပ်ငန်းကို ထာဝစဉ်စောင့်စေသည်။ (4) အပလီကေးရှင်းသည် ကနဦးထုတ်လွှတ်မှုကြားခံကို ထောက်ပံ့ပေးသည်။

မူပိုင်ခွင့် © 2025 Silicon Laboratories မူပိုင်ခွင့်ကိုလက်ဝယ်ထားသည်။

၅/၅

ကျော်view
ကျော်view

USB ကိရိယာ HID အတန်း

USB Device သည် HID Class Over ဖြစ်သည်။view USB ကိရိယာ HID အတန်းအစား အရင်းအမြစ်လိုအပ်ချက်များ Core USB ကိရိယာ HID အတန်းအစား ဖွဲ့စည်းမှု USB ကိရိယာ HID အတန်းအစား ပရိုဂရမ်ရေးဆွဲခြင်း လမ်းညွှန် HID Periodic ထည့်သွင်းမှု အစီရင်ခံစာများ လုပ်ဆောင်စရာ
ဤအပိုင်းတွင် Silicon Labs USB ကိရိယာမှပံ့ပိုးပေးထားသော Human Interface Device (HID) အတန်းကို ဖော်ပြထားပါသည်။
HID အတန်းသည် ကီးဘုတ်များ၊ ကြွက်များ၊ ညွှန်ပြသည့် စက်များနှင့် ဂိမ်းစက်များကဲ့သို့သော ကွန်ပျူတာလုပ်ဆောင်မှုများကို ထိန်းချုပ်ရန်အတွက် လူသားများအသုံးပြုသည့် စက်ပစ္စည်းများကို လွှမ်းခြုံထားသည်။
HID အတန်းအစားကို ခလုတ်များ၊ ခလုတ်များ၊ ခလုတ်များနှင့် ဆလိုက်ဒါများကဲ့သို့သော ထိန်းချုပ်မှုများပါရှိသော ပေါင်းစပ်ကိရိယာတွင်လည်း အသုံးပြုနိုင်သည်။ ဟောင်းအတွက်ampအသံနားကြပ်ရှိ le၊ အသံတိတ်ခြင်းနှင့် အသံအတိုးအကျယ်ထိန်းချုပ်မှုများကို နားကြပ်၏ HID လုပ်ဆောင်ချက်ဖြင့် ထိန်းချုပ်ထားသည်။ HID အတန်းအစားသည် ထိန်းချုပ်မှုနှင့် ကြားဖြတ်လွှဲပြောင်းမှုများကိုသာ အသုံးပြု၍ မည်သည့်ရည်ရွယ်ချက်အတွက်မဆို ဒေတာဖလှယ်နိုင်သည်။
HID အတန်းသည် ရှေးအကျဆုံးနှင့် အသုံးအများဆုံး USB အတန်းများထဲမှ တစ်ခုဖြစ်သည်။ အဓိက လည်ပတ်မှုစနစ်များအားလုံးသည် HID စက်ပစ္စည်းများကို စီမံခန့်ခွဲရန် မူရင်းဒရိုက်ဗာကို ပေးဆောင်ထားသောကြောင့် အရောင်းကိုယ်စားလှယ်-သီးသန့် စက်ပစ္စည်းအမျိုးမျိုးသည် HID အတန်းအစားနှင့် အလုပ်လုပ်ပါသည်။ ဤအတန်းတွင် LED များ၊ အသံ၊ ထိတွေ့နိုင်သော တုံ့ပြန်ချက် အစရှိသည့် အထွက်ပစ္စည်းများ အမျိုးအစားများစွာ ပါဝင်သည်။
HID အကောင်အထည်ဖော်မှုသည် အောက်ပါသတ်မှတ်ချက်များနှင့် ကိုက်ညီသည်-
Human Interface Devices (HID)၊ 6/27/01၊ ဗားရှင်း 1.11 အတွက် စက်ပစ္စည်း အတန်းအစား အဓိပ္ပာယ်ဖွင့်ဆိုချက်။ Universal Serial Bus HID Usage Tables၊ 10/28/2004၊ ဗားရှင်း 1.12။
USB Device သည် HID Class Over ဖြစ်သည်။view
ကျော်view
HID စက်သည် အောက်ပါ အဆုံးမှတ်များဖြင့် ဖွဲ့စည်းထားသည်-
ထိန်းချုပ်မှု IN နှင့် OUT အဆုံးမှတ်တစ်စုံသည် မူရင်းအဆုံးမှတ်ဟုခေါ်သော နှောင့်ယှက်မှုအတွင်း အဆုံးမှတ်တစ်ခု ရွေးချယ်နိုင်သော နှောင့်ယှက်မှု OUT အဆုံးမှတ်
အောက်ဖော်ပြပါဇယားတွင် မတူညီသောအဆုံးမှတ်များ၏အသုံးပြုမှုကို ဖော်ပြသည်-
ဇယား - HID အတန်းအစား အဆုံးမှတ်များ အသုံးပြုမှု

Endpoint Direction အသုံးပြုမှု

ထိန်းချုပ်ပါ။
ထိန်းချုပ်မှု
ထုတ်လိုက်
ဝင်ရန် နှောင့်ယှက်သည်။
နှောက်ယှက်သည်။
ထုတ်လိုက်

Deviceto-host
အိမ်ရှင်-ကိရိယာ
Deviceto-host
အိမ်ရှင်-ကိရိယာ

စာရင်းကောက်ခြင်း၊ အတန်းခွဲအလိုက် တောင်းဆိုချက်များနှင့် ဒေတာဆက်သွယ်ရေးအတွက် စံတောင်းဆိုချက်များ (ထည့်သွင်းမှု၊ အင်္ဂါရပ်အစီရင်ခံစာများကို GET_REPORT တောင်းဆိုမှုဖြင့် အိမ်ရှင်ထံ ပေးပို့သည်)။ စာရင်းကောက်ခြင်း၊ အတန်းအလိုက် သီးသန့်တောင်းဆိုမှုများနှင့် ဒေတာဆက်သွယ်မှုများအတွက် စံတောင်းဆိုချက်များ (SET_REPORT တောင်းဆိုမှုဖြင့် လက်ခံရရှိသည့် ဝန်ဆောင်မှုအစီရင်ခံစာများ)။ ဒေတာဆက်သွယ်မှု (Input and Feature reports)။
ဒေတာဆက်သွယ်ရေး (Output and Feature reports)။

သတင်းပို့တယ်။

မူပိုင်ခွင့် © 2025 Silicon Laboratories မူပိုင်ခွင့်ကိုလက်ဝယ်ထားသည်။

၅/၅

ကျော်view

လက်ခံသူနှင့် HID စက်တစ်ခုသည် အစီရင်ခံစာများကို အသုံးပြု၍ ဒေတာဖလှယ်သည်။ အစီရင်ခံစာတစ်ခုတွင် ထိန်းချုပ်မှုများနှင့် HID စက်ပစ္စည်း၏ အခြားရုပ်ပိုင်းဆိုင်ရာ အကြောင်းအရာများအကြောင်း အချက်အလက်ပေးသည့် ဖော်မတ်လုပ်ထားသည့်ဒေတာ ပါရှိသည်။ ထိန်းချုပ်မှုတစ်ခုသည် အသုံးပြုသူမှ စီမံခန့်ခွဲနိုင်ပြီး စက်ပစ္စည်း၏ အသွင်အပြင်ကို လုပ်ဆောင်သည်။ ဟောင်းအတွက်ampထိန်းချုပ်မှုတစ်ခုသည် မောက်စ် သို့မဟုတ် ကီးဘုတ်ပေါ်ရှိ ခလုတ်တစ်ခု၊ ခလုတ်တစ်ခု၊ စသည်ဖြင့် ဖြစ်နိုင်သည်။ အခြားအရာများသည် အချို့သော device9s အင်္ဂါရပ်များ၏ အခြေအနေကို သုံးစွဲသူအား အသိပေးသည်။ ဟောင်းအတွက်ample၊ ကီးဘုတ်ပေါ်ရှိ LED များသည် caps လော့ခ်ဖွင့်ခြင်း၊ ဂဏန်းကီးပတ်ဖွင့်ခြင်း စသည်ဖြင့် သုံးစွဲသူအား အသိပေးပါသည်။
ဖော်မတ်နှင့် အစီရင်ခံစာဒေတာအသုံးပြုမှုကို အစီရင်ခံစာဖော်ပြသူ၏ အကြောင်းအရာကို ခွဲခြမ်းစိတ်ဖြာခြင်းဖြင့် အိမ်ရှင်က နားလည်သည်။ အကြောင်းအရာကို ခွဲခြမ်းစိတ်ဖြာခြင်းအား parser တစ်ခုဖြင့် ပြုလုပ်ပါသည်။ အစီရင်ခံစာဖော်ပြသူသည် စက်တစ်ခုရှိ ထိန်းချုပ်မှုတစ်ခုစီမှ ပံ့ပိုးပေးသည့် အချက်အလက်များကို ဖော်ပြသည်။ ၎င်းသည် စက်ပစ္စည်းနှင့်ပတ်သက်သော အချက်အလက်အပိုင်းအစများဖြစ်သည့် အရာများဖြင့် ဖွဲ့စည်းထားပြီး 1-byte ရှေ့ဆက်နှင့် ပြောင်းလဲနိုင်သော-အရှည် ပါဝင်ပါသည်။
ဒေတာ။ ပစ္စည်းဖော်မတ်အကြောင်း နောက်ထပ်အသေးစိတ်အတွက် ကိုးကားပါ။
1.11=၊ အပိုင်း 5.6 နှင့် 6.2.2။
အဓိက ပစ္စည်း အမျိုးအစား သုံးမျိုး ရှိပါသည်။
ပင်မအကြောင်းအရာသည် ဒေတာအကွက်အချို့ကို အမျိုးအစားများသတ်မှတ်ခြင်း သို့မဟုတ် အုပ်စုဖွဲ့သည်။
Global item သည် ထိန်းချုပ်မှုတစ်ခု၏ ဒေတာလက္ခဏာများကို ဖော်ပြသည်။
ဒေသဆိုင်ရာ အကြောင်းအရာသည် ထိန်းချုပ်မှုတစ်ခု၏ ဒေတာလက္ခဏာများကို ဖော်ပြသည်။
အမျိုးအစားတစ်ခုစီကို မတူညီသောလုပ်ဆောင်ချက်များဖြင့် သတ်မှတ်သည်။ item function ကို a ဟုခေါ်နိုင်သည်။ tag. အကြောင်းအရာ လုပ်ဆောင်ချက်ကို အဓိက အကြောင်းအရာ အမျိုးအစား သုံးခုအနက်မှ တစ်ခုနှင့် သက်ဆိုင်သည့် အကြောင်းအရာ ခွဲအဖြစ် ရှုမြင်နိုင်ပါသည်။ အောက်ဖော်ပြပါဇယားသည် အကျဉ်းချုပ်ဖော်ပြသည်။view item အမျိုးအစားတစ်ခုစီရှိ item9s ၏လုပ်ဆောင်ချက်များ။ အမျိုးအစားတစ်ခုစီရှိ ပစ္စည်းများ၏ ပြီးပြည့်စုံသော ဖော်ပြချက်အတွက် ကြည့်ပါ။
ဇယား – အမျိုးအစားတစ်ခုစီအတွက် Item ၏ Function ဖော်ပြချက်

Item Item Type Function

ဖော်ပြချက်

ပင်မထည့်သွင်းမှု

တစ်ခု သို့မဟုတ် တစ်ခုထက်ပိုသော ရုပ်ပိုင်းဆိုင်ရာ ထိန်းချုပ်မှုများက ပေးဆောင်သည့် ဒေတာအကြောင်း အချက်အလက်ကို ဖော်ပြသည်။

Main Output သည် စက်ပစ္စည်းသို့ ပေးပို့သည့် ဒေတာကို ဖော်ပြသည်။

ပင်မအင်္ဂါရပ်

စက်ပစ္စည်း၏ အလုံးစုံအပြုအမူ သို့မဟုတ် ၎င်း၏ အစိတ်အပိုင်းများထဲမှ တစ်ခုကို လွှမ်းမိုးသည့် စက်ပစ္စည်းမှ ပေးပို့သော သို့မဟုတ် လက်ခံရရှိသည့် စက်ပစ္စည်းဖွဲ့စည်းပုံဆိုင်ရာ အချက်အလက်ကို ဖော်ပြသည်။

ပင်မ စုစည်းမှု အုပ်စုနှင့် ပတ်သက်သည့် အရာများ (အဝင်၊ အထွက် သို့မဟုတ် အင်္ဂါရပ်)။

Main End of Closes စုစည်းမှု။ စုစည်းမှု

မူပိုင်ခွင့် © 2025 Silicon Laboratories မူပိုင်ခွင့်ကိုလက်ဝယ်ထားသည်။

၅/၅

ကျော်view

Item Item Type Function

ဖော်ပြချက်

ကမ္ဘာလုံးဆိုင်ရာအသုံးပြုမှုစာမျက်နှာ

စက်ပစ္စည်းအတွင်း ရရှိနိုင်သော လုပ်ဆောင်ချက်ကို ဖော်ထုတ်ပါ။

Global Logical သည် ယုတ္တိယူနစ်များတွင် အစီရင်ခံထားသော တန်ဖိုးများ၏ အောက်ခြေကန့်သတ်ချက်ကို သတ်မှတ်သည်။ အနိမ့်ဆုံး

Global Logical သည် ယုတ္တိယူနစ်များတွင် အစီရင်ခံထားသော တန်ဖိုးများ၏ အထက်ကန့်သတ်ချက်ကို သတ်မှတ်သည်။ အများဆုံး

Global Physical သည် ရုပ်ပိုင်းဆိုင်ရာယူနစ်များတွင် အစီရင်ခံထားသောတန်ဖိုးများ၏ အောက်ခြေကန့်သတ်ချက်ကို သတ်မှတ်သည်၊ ၎င်းသည် ရုပ်ပိုင်းဆိုင်ရာယူနစ်များတွင်ဖော်ပြသော ယုတ္တိအနိမ့်ဆုံးအနိမ့်ဆုံးဖြစ်သည်။

Global Physical သည် ရုပ်ပိုင်းဆိုင်ရာယူနစ်များတွင် အစီရင်ခံထားသော တန်ဖိုးများ၏ အထက်ကန့်သတ်ချက်ကို သတ်မှတ်သည်၊ ၎င်းသည် ရုပ်ပိုင်းဆိုင်ရာယူနစ်များတွင် ဖော်ပြထားသော ယုတ္တိအမြင့်ဆုံး အမြင့်ဆုံးဖြစ်သည်။

ကမ္ဘာလုံးဆိုင်ရာ ယူနစ်

အခြေ 10 ရှိ ယူနစ်ထပ်ကိန်းကို ညွှန်ပြသည်။ ထပ်ကိန်းသည် -8 မှ +7 အထိရှိသည်။

ထပ်ညွှန်း

ကမ္ဘာလုံးဆိုင်ရာ ယူနစ်

အစီရင်ခံထားသော တန်ဖိုးများ၏ ယူနစ်ကို ညွှန်ပြသည်။ ဥပမာအားဖြင့်၊ အလျား၊ ဒြပ်ထု၊ အပူချိန် ယူနစ် စသဖြင့်။

ကမ္ဘာလုံးဆိုင်ရာအစီရင်ခံစာအရွယ်အစား

အစီရင်ခံစာအကွက်များ၏ အရွယ်အစားကို bits ဖြင့် ဖော်ပြသည်။

ကမ္ဘာလုံးဆိုင်ရာ အစီရင်ခံစာ ID သည် သီးခြားအစီရင်ခံစာတစ်ခုတွင် ထည့်သွင်းထားသော ရှေ့ဆက်ကို ညွှန်ပြသည်။

ကမ္ဘာလုံးဆိုင်ရာ အစီရင်ခံစာ အရေအတွက်

ပစ္စည်းတစ်ခုအတွက် ဒေတာအကွက်အရေအတွက်ကို ညွှန်ပြသည်။

ကမ္ဘာလုံးဆိုင်ရာ တွန်းအားပေးမှု

CPU stack ပေါ်တွင် ကမ္ဘာလုံးဆိုင်ရာ အကြောင်းအရာ အခြေအနေဇယား၏ မိတ္တူကို ထားရှိပါ။

ဂလိုဘယ်ပေါ့ပ်

stack မှနောက်ဆုံးဖွဲ့စည်းပုံနှင့် item state table ကိုအစားထိုးသည်။

ပြည်တွင်းအသုံးပြုမှု

အသုံးပြုမှုစာမျက်နှာတစ်ခုအတွင်း သီးခြားအသုံးပြုမှုတစ်ခုကို သတ်မှတ်ရန် အညွှန်းတစ်ခုကို ကိုယ်စားပြုသည်။ ၎င်းသည် သတ်မှတ်ထားသော ထိန်းချုပ်မှု သို့မဟုတ် ထိန်းချုပ်မှုအုပ်စုအတွက် ရောင်းချသူ9s အကြံပြုထားသော အသုံးပြုမှုကို ညွှန်ပြသည်။ အသုံးပြုမှုတစ်ခုသည် ထိန်းချုပ်မှုအား အမှန်တကယ်တိုင်းတာခြင်းနှင့်ပတ်သက်၍ အပလီကေးရှင်းဆော့ဖ်ဝဲရေးသားသူကို သတင်းအချက်အလက်ပေးသည်။

ပြည်တွင်းအသုံးပြုမှု

array သို့မဟုတ် bitmap နှင့်ဆက်စပ်သည့် စတင်အသုံးပြုမှုကို သတ်မှတ်သည်။

အနိမ့်ဆုံး

ပြည်တွင်းအသုံးပြုမှု

array သို့မဟုတ် bitmap နှင့်ဆက်စပ်နေသော အဆုံးအသုံးပြုမှုကို သတ်မှတ်သည်။

အများဆုံး

Local Designator သည် ထိန်းချုပ်မှုတစ်ခုအတွက် အသုံးပြုသည့် ခန္ဓာကိုယ်အစိတ်အပိုင်းကို ဆုံးဖြတ်သည်။ Index သည် Physical တွင် သတ်မှတ်ပေးသူအား ညွှန်ပြသည်။

အညွှန်း

ဖော်ပြချက်။

Local Designator သည် array သို့မဟုတ် bitmap နှင့်ဆက်စပ်နေသည့် start designator ၏ အညွှန်းကို သတ်မှတ်သည်။ အနိမ့်ဆုံး

Local Designator သည် array သို့မဟုတ် bitmap နှင့်ဆက်စပ်နေသော အဆုံးသတ်မှတ်ပေးသူ၏ အညွှန်းကို သတ်မှတ်သည်။ အများဆုံး

Local String အညွှန်း

စာကြောင်းဖော်ပြသူအတွက် စာကြောင်းအညွှန်း။ ၎င်းသည် သီးခြားအရာ သို့မဟုတ် ထိန်းချုပ်မှုတစ်ခုနှင့် ချိတ်ဆက်ရန် စာကြောင်းကို ခွင့်ပြုသည်။

Local String

array တစ်ခုတွင် ထိန်းချုပ်ရန် စီတန်းထားသော ကြိုးများအုပ်စုကို သတ်မှတ်သည့်အခါ ပထမ string အညွှန်းကို သတ်မှတ်သည်

အနည်းဆုံး သို့မဟုတ် ဘစ်မြေပုံ။

ပြည်တွင်းပြည်ပ

စာတန်းအများဆုံး
ကန့်သတ်ချက်

array သို့မဟုတ် bitmap တွင် ထိန်းချုပ်ရန် စီတန်းထားသော ကြိုးများအုပ်စုကို သတ်မှတ်သည့်အခါ နောက်ဆုံးစာတန်းအညွှန်းကို သတ်မှတ်သည်။
ဒေသန္တရပစ္စည်းအစုံ၏အစ သို့မဟုတ် အဆုံးကို သတ်မှတ်သည်။

control9s ဒေတာတစ်ခုသည် အနည်းဆုံး အောက်ပါအရာများကို သတ်မှတ်ရပါမည်-
ထည့်သွင်းခြင်း၊ ထုတ်ပေးခြင်း သို့မဟုတ် လုပ်ဆောင်ချက် ပင်မအရာများ အသုံးပြုမှု ဒေသဆိုင်ရာ အကြောင်းအရာ အသုံးပြုမှု စာမျက်နှာ ကမ္ဘာလုံးဆိုင်ရာ အကြောင်းအရာ ယုတ္တိအနည်းဆုံး ကမ္ဘာလုံးဆိုင်ရာ အကြောင်းအရာ ယုတ္တိအများဆုံး ကမ္ဘာလုံးဆိုင်ရာ အကြောင်းအရာ အစီရင်ခံစာ အရွယ်အစား ကမ္ဘာလုံးဆိုင်ရာ အကြောင်းအရာ

မူပိုင်ခွင့် © 2025 Silicon Laboratories မူပိုင်ခွင့်ကိုလက်ဝယ်ထားသည်။

၅/၅

ကျော်view
Report Count Global item အောက်တွင်ဖော်ပြထားသောဇယားသည် host HID parser ရှုထောင့်မှ Mouse Report descriptor အကြောင်းအရာ၏ကိုယ်စားပြုမှုကိုပြသသည်။ မောက်စ်တွင် ခလုတ်သုံးခု (ဘယ်၊ ညာနှင့် ဘီး) ရှိသည်။ ex တွင်ဖော်ပြထားသောကုဒ်ample သည် ဤ mouse Report descriptor ကိုယ်စားပြုမှုနှင့် သက်ဆိုင်သော ကုဒ်အကောင်အထည်ဖော်မှုဖြစ်သည်။
ပုံ – Host HID Parser တစ်ခုမှ ဖော်ပြချက်အကြောင်းအရာကို သတင်းပို့ပါ။ View

(1) အသုံးပြုမှု စာမျက်နှာ အကြောင်းအရာ လုပ်ဆောင်ချက်သည် စက်၏ ယေဘူယျလုပ်ဆောင်ချက်ကို သတ်မှတ်ပေးသည်။ ဒီ exampHID စက်ပစ္စည်းသည် a နှင့်သက်ဆိုင်သည်။
ယေဘူယျ desktop ထိန်းချုပ်မှု။
(၂) စုစည်းမှု အက်ပလီကေးရှင်းသည် ဘုံရည်ရွယ်ချက်တစ်ခုရှိ၍ အပလီကေးရှင်းများနှင့် အကျွမ်းတဝင်ရှိနိုင်သည့် ပင်မအကြောင်းအရာများကို အုပ်စုဖွဲ့ထားသည်။ ပုံတွင်၊ အုပ်စုကို ထည့်သွင်းသည့် အဓိကအရာ ၃ ခုဖြင့် ဖွဲ့စည်းထားသည်။ ဤစုစည်းမှုအတွက်၊ ထိန်းချုပ်မှုများအတွက် အကြံပြုထားသောအသုံးပြုမှုသည် အသုံးပြုမှုအကြောင်းအရာက ဖော်ပြထားသည့်အတိုင်း မောက်စ်တစ်ခုဖြစ်သည်။ (၃) ထိန်းချုပ်မှုတစ်ခုတည်း သို့မဟုတ် ထိန်းချုပ်မှုအုပ်စုများကို အက်ပ်လီကေးရှင်းများအတွက် ထိန်းချုပ်မှုတစ်ခုအသုံးပြုခြင်းအကြောင်း နောက်ထပ်အသေးစိတ်အချက်အလက်များကို ပေးရန်အတွက် Nested စုစည်းမှုများကို အသုံးပြုနိုင်သည်။ ဒီ example၊ စုစည်းမှု အက်ပလီကေးရှင်းတွင် အသိုက်အဝန်းရှိသော စုစည်းမှု ရုပ်ပိုင်းဆိုင်ရာ၊ စုစည်းမှု အက်ပလီကေးရှင်းကို ဖွဲ့စည်းသည့် တူညီသော ထည့်သွင်းမှု သုံးခုဖြင့် ဖွဲ့စည်းထားသည်။ Collection Physical ကို ဂျီဩမေတြီအမှတ်တစ်ခုတွင် ကောက်ယူထားသော ဒေတာအမှတ်များကို ကိုယ်စားပြုသည့် ဒေတာပစ္စည်းအစုအဝေးအတွက် အသုံးပြုသည်။ ဟောင်း၌ample၊ အကြံပြုထားသောအသုံးပြုမှုသည် အသုံးပြုမှုအကြောင်းအရာက ဖော်ပြထားသည့်အတိုင်း ညွှန်ပြချက်တစ်ခုဖြစ်သည်။ ဤနေရာတွင် ညွှန်ပြအသုံးပြုမှုသည် မောက်စ်တည်နေရာ သြဒိနိတ်များကို ရည်ညွှန်းပြီး စနစ်ဆော့ဖ်ဝဲသည် မျက်နှာပြင်ကာဆာ၏ ရွေ့လျားမှုတွင် မောက်စ်သြဒိနိတ်များကို ဘာသာပြန်ပေးမည်ဖြစ်သည်။ (4) Nested အသုံးပြုမှုစာမျက်နှာများကိုလည်း ဖြစ်နိုင်ပြီး စက်ပစ္စည်း၏ ယေဘူယျလုပ်ဆောင်ချက်အတွင်း အချို့သော ကဏ္ဍတစ်ခုအကြောင်း အသေးစိတ်အချက်အလက်များကို ပေးပါ။ ဤကိစ္စတွင်၊ Inputs နှစ်ခုကို အုပ်စုဖွဲ့ပြီး mouse ၏ ခလုတ်များနှင့် ကိုက်ညီပါသည်။ Input item တစ်ခုသည် မောက်စ် (ညာဘက်၊ ဘယ်နှင့် ဘီး) ၏ ခလုတ်သုံးခု (ညာဘက်၊ ဘယ်နှင့် ဘီး) သည် အရာ (အစီရင်ခံချက် Count item)၊ ဒေတာအကွက်တစ်ခု၏ အရွယ်အစား (Report Size item) နှင့် ဒေတာအကွက်တစ်ခုစီအတွက် ဖြစ်နိုင်သည့်တန်ဖိုးများ (အနိမ့်ဆုံးအသုံးပြုမှုနှင့် အများဆုံး၊ ယုတ္တိနည်းအနိမ့်ဆုံးနှင့် အများဆုံးအရာများ)။ အခြား Input item သည် 13-bit constant ဖြစ်ပြီး Input report data အား byte နယ်နိမိတ်ပေါ်တွင် ချိန်ညှိနိုင်စေပါသည်။ ဤထည့်သွင်းသည့်အရာအား အကွက်ဖော်ရန်အတွက်သာ အသုံးပြုပါသည်။ (5) ယေဘုယျ desktop ထိန်းချုပ်မှုကို ရည်ညွှန်းသော နောက်ထပ် အသိုက်အဝန်းအသုံးပြုမှု စာမျက်နှာကို မောက်စ်အနေအထား သြဒိနိတ်များအတွက် သတ်မှတ်ထားသည်။ ဤအသုံးပြုမှုစာမျက်နှာအတွက်၊ ထည့်သွင်းသည့်အရာသည် အသုံးပြုမှုနှစ်ခုမှသတ်မှတ်ထားသည့်အတိုင်း x- နှင့် y-ဝင်ရိုးတို့နှင့်သက်ဆိုင်သည့် ဒေတာအကွက်များကို ဖော်ပြသည်
ပစ္စည်းများ။
ယခင် mouse ၏ Report descriptor အကြောင်းအရာကို ပိုင်းခြားစိတ်ဖြာပြီးနောက်၊ host9s HID parser သည် စက်မှပေးပို့သော Input အစီရင်ခံစာဒေတာကို အနှောင့်အယှက်ဖြစ်စေသော IN လွှဲပြောင်းခြင်း သို့မဟုတ် GET_REPORT တောင်းဆိုချက်ကို တုံ့ပြန်မှုဖြင့် အဓိပ္ပာယ်ပြန်ဆိုနိုင်မည်ဖြစ်သည်။ ပုံတွင်ပြသထားသည့် မောက်စ်အစီရင်ခံစာဖော်ပြချက်နှင့် သက်ဆိုင်သည့် ထည့်သွင်းမှု ဒေတာ အချက်အလက် – Host HID Parser တစ်ခုမှ ဖော်ပြချက်အကြောင်းအရာကို တိုင်ကြားခြင်း View is

မူပိုင်ခွင့် © 2025 Silicon Laboratories မူပိုင်ခွင့်ကိုလက်ဝယ်ထားသည်။

၅/၅

ကျော်view

အောက်ပါဇယားတွင်ပြထားသည်။ အစီရင်ခံစာဒေတာ၏ စုစုပေါင်းအရွယ်အစားမှာ 4 bytes ဖြစ်သည်။ ကွဲပြားသော အစီရင်ခံစာများကို တူညီသော အဆုံးမှတ်သို့ ပေးပို့နိုင်သည်။ မတူညီသော အစီရင်ခံစာများ၏ အမျိုးအစားများကို ခွဲခြားရန် ရည်ရွယ်ချက်အတွက် ဒေတာအစီရင်ခံစာတွင် 1-byte အစီရင်ခံစာ ID ရှေ့ဆက်ကို ထည့်သွင်းထားသည်။ အကယ်၍ အစီရင်ခံစာ ID ဟောင်းကို အသုံးပြုခဲ့သည်။ampမောက်စ်အစီရင်ခံစာ၏ le၊ အစီရင်ခံစာဒေတာ၏ စုစုပေါင်းအရွယ်အစားသည် 5 bytes ဖြစ်လိမ့်မည်။
ဇယား – Host သို့ ပေးပို့ပြီး Input Report 3 Button Mouse ၏ အခြေအနေနှင့် သက်ဆိုင်ပါသည်။

ဘစ်အော့ဖ်ဆက်
၄ ၆ ၀၂ ၅၆ ၀ ၀

Bit Count 1 1 1 13 8 ၈

ဖော်ပြချက်ခလုတ် 1 (ဘယ်ဘက်ခလုတ်)။ ခလုတ် 2 (ညာဘက်ခလုတ်)။ Button 3 (ဘီးခလုတ်)။ အသုံးမပြုပါ။ ဝင်ရိုး X တွင် အနေအထား။ ဝင်ရိုး Y တွင် အနေအထား

ရုပ်ပိုင်းဆိုင်ရာဖော်ပြချက်တစ်ခုသည် ထိန်းချုပ်မှု သို့မဟုတ် ထိန်းချုပ်မှုများကို လုပ်ဆောင်ရန် ရည်ရွယ်သည့် ခန္ဓာကိုယ်အစိတ်အပိုင်း သို့မဟုတ် အစိတ်အပိုင်းများကို ညွှန်ပြသည်။ အပလီကေးရှင်းတစ်ခုသည် စက်၏ထိန်းချုပ်မှုတွင် လုပ်ဆောင်နိုင်စွမ်းတစ်ခုသတ်မှတ်ရန် ဤအချက်အလက်ကို အသုံးပြုနိုင်သည်။ Physical descriptor သည် ရွေးချယ်နိုင်သော အတန်းအစားအလိုက် ဖော်ပြချက်တစ်ခုဖြစ်ပြီး စက်အများစုသည် ၎င်းကိုအသုံးပြုရန်အတွက် အကျိုးကျေးဇူးအနည်းငယ်သာရှိသည်။ ကိုးကားပါ။
USB စက်ပစ္စည်း HID အတန်းအစား အရင်းအမြစ် လိုအပ်ချက်များ Core မှ

လုပ်ဆောင်ချက် sl_usbd_hid_add_to_configuration() သို့ ခေါ်ဆိုမှုမှတစ်ဆင့် USB configuration တွင် HID အတန်းအစားတစ်ခုကို ထည့်သွင်းလိုက်တိုင်း၊ အောက်ပါအရင်းအမြစ်များကို core မှ ခွဲဝေပေးမည်ဖြစ်သည်။

အရင်းအမြစ်
Interfaces Alternate interfaces Endpoints Interface အုပ်စုများ

အရေအတွက်
1 1 1 (2 if interrupt OUT endpoint is enabled) 0

ထိုနံပါတ်များသည် ဖွဲ့စည်းမှုအလိုက်ဖြစ်ကြောင်း သတိပြုပါ။ သင်၏ SL_USBD_INTERFACE_QUANTITY ၊ SL_USBD_ALT_INTERFACE_QUANTITY ၊ SL_USBD_INTERFACE_GROUP_QUANTITY နှင့် SL_USBD_DESCRIPTOR_QUANTITY ဖွဲ့စည်းမှုတန်ဖိုးများကို စနစ်ထည့်သွင်းသည့်အခါ၊ အတန်းအစား မည်မျှထည့်သွင်းမည်ကို ထည့်သွင်းစဉ်းစားရန် မမေ့ပါနှင့်။ SL_USBD_OPEN_ENDPOINTS_QUANTITY ဖွဲ့စည်းမှုတန်ဖိုးအတွက်၊ အဆုံးမှတ်များကို လက်ခံဆောင်ရွက်ပေးသူမှ စီစဉ်သတ်မှတ်ထားမှသာ ဖွင့်ထားသောကြောင့်၊ အတန်းဥပမာတစ်ခုအတွက် လိုအပ်သော အဆုံးအမှတ်အရေအတွက်ကို ထည့်သွင်းစဉ်းစားရန် လိုအပ်ပါသည်။
USB ကိရိယာ HID အတန်းအစား ဖွဲ့စည်းမှု

HID class ကို configure လုပ်ရန် configuration parameters အုပ်စုနှစ်စုကို အသုံးပြုသည်-
USB စက်ပစ္စည်း HID အတန်းအစား အပလီကေးရှင်း-သီးသန့်ဖွဲ့စည်းပုံများ USB ကိရိယာ HID အတန်းအစား ဆက်စပ်ဖွဲ့စည်းပုံများ
USB ကိရိယာ HID အတန်းအစား အပလီကေးရှင်း-သီးသန့်ဖွဲ့စည်းပုံများ

ပထမဦးစွာ၊ Silicon Labs USB စက်ပစ္စည်း HID အတန်းအစား module ကိုအသုံးပြုရန်၊ သင်၏ application လိုအပ်ချက်အရ သတ်မှတ်ထားသော HID compile-time configuration ကို ချိန်ညှိပါ။ ၎င်းတို့ကို sl_usbd_core_config.h ခေါင်းစီးအတွင်းတွင် ပြန်လည်စုဖွဲ့ထားသည်။ file HID အပိုင်းအောက်မှာ။ ၎င်းတို့ကို အပိုင်းနှစ်ပိုင်း၊ ပမာဏဖွဲ့စည်းပုံများနှင့် HID အလုပ်ဖွဲ့စည်းပုံများ ခွဲခြားနိုင်သည်။ ပမာဏဖွဲ့စည်းပုံများ ရည်ရွယ်ချက်မှာ USB HID အရာများကို မည်မျှခွဲဝေပေးမည်အကြောင်း USB စက်ပစ္စည်း module အား အသိပေးရန်ဖြစ်သည်။
အောက်ပါဇယားတွင် configuration တစ်ခုစီ၏ define ကိုဖော်ပြသည်။
ဇယား – USB ကိရိယာ HID ဖွဲ့စည်းမှု သတ်မှတ်မှု

မူပိုင်ခွင့် © 2025 Silicon Laboratories မူပိုင်ခွင့်ကိုလက်ဝယ်ထားသည်။

၅/၅

ကျော်view

ဖွဲ့စည်းမှုအမည်
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

ဖော်ပြချက်
လုပ်ဆောင်ချက်သို့ ခေါ်ဆိုခြင်းဖြင့် သင်ခွဲဝေပေးမည့် အတန်းအစား အရေအတွက်
sl_usbd_hid_create_instance()။
ဖွဲ့စည်းမှုပုံစံများ။ HID အတန်းအစားများကို function sl_usbd_hid_add_to_configuration() သို့ aaaa configur tions vi c ll တစ်ခု သို့မဟုတ် တစ်ခုထက်ပိုသော aaaa configur tions တွင် ပေါင်းထည့်နိုင်သည်။ ခွဲဝေသတ်မှတ်ရန် စုစုပေါင်း အစီရင်ခံစာ ID အရေအတွက်ကို သတ်မှတ်ပေးသည်။
ခွဲဝေပေးရန် Push/Pop ပစ္စည်းများ စုစုပေါင်းအရေအတွက်ကို စီစဉ်သတ်မှတ်ပေးသည်။
timer အလုပ်သည် timer-based HID လုပ်ဆောင်ချက်အားလုံးကို ကိုင်တွယ်သည်။ ဤဖွဲ့စည်းပုံသည် သင့်အား stack အရွယ်အစား (bytes အရေအတွက်) သတ်မှတ်ရန် ခွင့်ပြုသည်။ HID အလုပ်၏ဦးစားပေး။ သူသည် CMSIS-RTOS2 ဦးစားပေးဖြစ်သည်။

မူရင်းတန်ဖိုး
၁၉၅၁ ၅ ၇၁၂ ၂ ၄
osPriorityHigh

USB စက်ပစ္စည်း HID အတန်းအစား Instance Configurations အတန်းအစား Instance ဖန်တီးမှု အမျိုးအစားခွဲများ
ပရိုတိုကော country_code
interval_in နှင့် interval_out p_hid_callback HID အတန်းအစား အစီရင်ခံတင်ပြသူ Example ဤကဏ္ဍသည် HID အတန်းအစား ဖြစ်ရပ်များနှင့် ဆက်စပ်သော ဖွဲ့စည်းမှုများကို သတ်မှတ်သည်။
Class Instance ဖန်တီးခြင်း။
HID class instance တစ်ခုကိုဖန်တီးခြင်းသည် aaa sl_usbd_hid_create_instance() ကိုခေါ်ဆိုခြင်းဖြင့်၊ အောက်တွင်ဖော်ပြထားသောဖော်ပြထားသော configur tion arguments များကို sever l configur တွင်မလုပ်ဆောင်နိုင်ပါ။
အတန်းခွဲများ
HID အမျိုးအစားခွဲ၏ကုဒ်။ ဖြစ်နိုင်သောတန်ဖိုးများမှာ-
SL_USBD_HID_SUBCL ASS_NONE SL_USBD_HID_SUBCL ASS_BOOT
boot အတန်းခွဲကို အသုံးပြုသည့် HID စက်ပစ္စည်းသည် ပုံမှန်အစီရင်ခံစာဖော်မတ်များကို အသုံးပြုရပါမည်။ အတန်းခွဲကုဒ်များအကြောင်း နောက်ထပ်အချက်အလက်များအတွက် HID သတ်မှတ်ချက် ပြန်လည်ပြင်ဆင်မှု 1.11 ၏ အပိုင်း 4.2 ကို ကြည့်ပါ။
ပရိုတိုကော
HID စက်ပစ္စည်းမှ အသုံးပြုသည့် ပရိုတိုကော။ ဖြစ်နိုင်သောတန်ဖိုးများမှာ-
SL_USBD_HID_PROTOCOL_NONE SL_USBD_HID_PROTOCOL_KBD SL_USBD_HID_PROTOCOL_MOUSE
သင်၏ HID လုပ်ဆောင်ချက်သည် မောက်စ်ဖြစ်ပါက၊ ပရိုတိုကောကို aa SL_USBD_HID_PROTOCOL_MOUSE အဖြစ် သတ်မှတ်သင့်သည်။ ၎င်းသည် keybo rd ဖြစ်ပါက O သည် SL_USBD_HID_PROTOCOL_KBD ဟု သတ်မှတ်သင့်သည်။ သို့မဟုတ်ပါက၊ ပရိုတိုကောကို SL_USBD_HID_PROTOCOL_NONE အဖြစ် သတ်မှတ်သင့်သည်။ အတန်းခွဲကုဒ်များအကြောင်း နောက်ထပ်အချက်အလက်များအတွက် HID သတ်မှတ်ချက် ပြန်လည်ပြင်ဆင်မှု 1.11 ၏ အပိုင်း 4.3 ကို ကြည့်ပါ။
နိုင်ငံ_ကုဒ်
နိုင်ငံကုဒ်၏ ID။ ဖြစ်နိုင်သောတန်ဖိုးများမှာ-
SL_USBD_HID_COUNTRY_CODE_NOT_SUPPORTED

မူပိုင်ခွင့် © 2025 Silicon Laboratories မူပိုင်ခွင့်ကိုလက်ဝယ်ထားသည်။

၅/၅

ကျော်view
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_COUNTCRY_COUNTRY 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_WDREBCODE 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_COUNTRY_CODE_KORE 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_POLBD_COUNTRYCODE_COUNTRY_CODE_POLBD ANDHDE 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_FRENCH SL_USBD_HID_COUNTRY_CODE_SWITZERL AND SL_USBD_HID_COUNTRY_CODE_TAIWAN SL_USBD_HID_COUNTRY_CODE_TURKISH_Q SL_USBD_HID_COUNTRY_CODE_UK SL_USBD_HID_COUNTRY_USBD_USID SL_USBD_COUNTRY_USBD_USID SL_USBD_HID_COUNTRY_CODE_TURKISH_F
နိုင်ငံကုဒ်သည် မည်သည့်နိုင်ငံအတွက် ဟာ့ဒ်ဝဲကို ဒေသန္တရပြုထားသည်ကို ခွဲခြားသတ်မှတ်သည်။ ဟာ့ဒ်ဝဲအများစုသည် ဒေသန္တရပုံစံမဟုတ်သောကြောင့် ဤ aaaav lue သည် SL_USBD_HID_COUNTRY_CODE_NOT_SUPPORTED (0) ဖြစ်လိမ့်မည်။ သို့သော်လည်း၊ keybo rds my သည် key caps ၏ဘာသာစကားကိုညွှန်ပြရန်အကွက်ကိုအသုံးပြုသည်။
နိုင်ငံကုဒ်များအကြောင်း နောက်ထပ်အချက်အလက်များအတွက်၊ HID သတ်မှတ်ချက် ပြန်လည်ပြင်ဆင်မှု 1.11 ၏ အပိုင်း 6.2.1 ကို ကြည့်ပါ။
interval_in နှင့် interval_out
interval_in နှင့် interval_out သည် IN interrupt endpoint နှင့် OUT interrupt endpoint ၏ မဲရုံကြားကာလကို ကိုယ်စားပြုသည်။
၎င်းသည် အဆုံးမှတ်၏ မဲရုံကြားကာလကို မီလီစက္ကန့်အတွင်း ကိုယ်စားပြုသည်။ ဤတန်ဖိုးကို သတ်မှတ်ခြင်းသည် သင့်စက်ပစ္စည်းအတွက် လက်ခံသူအတွက် အစီရင်ခံစာအသစ်တစ်ခုကို ထုတ်ပေးရန် အကြိမ်ရေမည်မျှကြာနိုင်သည်အပေါ် မူတည်ပါသည်။ ဥပမာအားဖြင့်၊ အစီရင်ခံစာတစ်ခုကို 16 မီလီစက္ကန့်တိုင်း ထုတ်ပေးပါက၊ ကြားကာလသည် 16 သို့မဟုတ် ထိုထက်နည်းသင့်သည်။
တန်ဖိုးသည် 2 ပါဝါဖြစ်ရမည် (1၊ 2၊ 4၊ 8၊ 16 စသည်ဖြင့်)။
ctrl_rd_en ကို အမှန်ဟု သတ်မှတ်ပါက interval_out v lue ကို လျစ်လျူရှုထားသည်။
p_hid_callback
aaaa p_hid_callback သည် sl_usbd_hid_callbacks_t အမျိုးအစား၏ ဖွဲ့စည်းပုံကို ညွှန်ပြသည်။ ၎င်း၏ရည်ရွယ်ချက်မှာ HID ဖြစ်ရပ်တစ်ခုဖြစ်ပွားသည့်အခါခေါ်ဆိုရန် HID Cl ss အစုအဝေးကိုခေါ်ဆိုရန်ဖြစ်သည်။

မူပိုင်ခွင့် © 2025 Silicon Laboratories မူပိုင်ခွင့်ကိုလက်ဝယ်ထားသည်။

၅/၅

ကျော်view

ခေါ်ဆိုမှုအားလုံးသည် မဖြစ်မနေမဖြစ်မနေဖြစ်ပြီး ပြန်ခေါ်ရန်မလိုအပ်သည့်အခါ ပြန်လည်ခေါ်ဆိုမှုတည်ဆောက်ပုံပြောင်းနိုင်သောကိန်းရှင်တွင် null pointer (NULL) ကို ပေးပို့နိုင်ပါသည်။ အောက်ဖော်ပြပါဇယားသည် ဤဖွဲ့စည်းပုံဖွဲ့စည်းပုံတွင် ရရှိနိုင်သော ဖွဲ့စည်းမှုပုံစံအကွက်တစ်ခုစီကို ဖော်ပြသည်။
ဇယား – sl_usbd_hid_callbacks_t ဖွဲ့စည်းမှုဖွဲ့စည်းပုံ

လယ်ကွင်းများ

ဖော်ပြချက်

လုပ်ဆောင်ချက် လက်မှတ်

.enable .disable .get_report_desc
.get_phy_desc
.set_output_report .get_feature_report .set_feature_report

USB class instance ကို အောင်မြင်စွာ ဖွင့်ထားသောအခါတွင် ခေါ်သည်။ USB class instance ကို ပိတ်ထားသည့်အခါ ခေါ်သည်။
သင့်အစီရင်ခံစာဖော်ပြချက်ကို ကျော်ဖြတ်ရန် HID Instance ဖန်တီးမှုအတွင်း ခေါ်ဆိုခဲ့သည်။ သင်၏ HID လုပ်ဆောင်ချက်တစ်ခုစီအတွက်၊ သင်သည် အစီရင်ခံစာဖော်ပြချက်တစ်ခုကို ပေးရပါမည်။ အစီရင်ခံစာဖော်ပြသူသည် စက်မှပေးပို့မည့် အချိန်အပိုင်းအခြားအလိုက် အစီရင်ခံစာကို မည်သို့ခွဲခြမ်းစိတ်ဖြာရမည်ကို အိမ်ရှင်အား ညွှန်ပြသည်။ သင်၏ကိုယ်ပိုင် အစီရင်ခံစာဖော်ပြသူကို ရေးသားခြင်းသည် စိန်ခေါ်မှုဖြစ်နိုင်ပြီး၊ ထို့ကြောင့် ကူညီရန် အရင်းအမြစ်အချို့ရှိပါသည်။ ဤသည်မှာ တစ်ခုတည်းသောမဖြစ်မနေပြန်ခေါ်သည့်လုပ်ဆောင်ချက်ဖြစ်သည်။ HID Instance ဖန်တီးမှုအတွင်း သင့်ရုပ်ပိုင်းဆိုင်ရာဖော်ပြချက်ကို ကျော်ဖြတ်ရန် ခေါ်ဆိုခဲ့သည်။ ရုပ်ပိုင်းဆိုင်ရာဖော်ပြချက်သည် ထိန်းချုပ်မှု သို့မဟုတ် ထိန်းချုပ်မှုများကို အသက်ဝင်စေသည့် လူ့ခန္ဓာကိုယ်၏ သီးခြားအစိတ်အပိုင်း သို့မဟုတ် အစိတ်အပိုင်းများအကြောင်း အချက်အလက်များကို ပေးဆောင်သည့် ဖော်ပြချက်တစ်ခုဖြစ်သည်။ ရုပ်ပိုင်းဆိုင်ရာဖော်ပြချက်များဆိုင်ရာ နောက်ထပ်အချက်အလက်များအတွက်၊ HID သတ်မှတ်ချက် ပြန်လည်ပြင်ဆင်မှု 1.11 ၏ အပိုင်း 6.2.3 ကို ကြည့်ပါ။ ရုပ်ပိုင်းဆိုင်ရာဖော်ပြချက်သည် စိတ်ကြိုက်ရွေးချယ်နိုင်ပြီး အများစုကို လျစ်လျူရှုထားသည်။ ဤနေရာမှ ဖြတ်သွားသော ကြားခံအား NULL နှင့် အရှည် 0 ဟု သတ်မှတ်နိုင်သည်။ လက်ခံသူက သင့်အစီရင်ခံစာဖော်ပြသူတွင် ဖော်ပြထားသည့်အတိုင်း အစီရင်ခံစာကို သတ်မှတ်သောအခါ (အစီရင်ခံစာတစ်ခုပေးပို့သည့်အခါ) ဟုခေါ်သည်။
သင့်အစီရင်ခံစာဖော်ပြသူတွင် ဖော်ပြထားသည့် အင်္ဂါရပ်အစီရင်ခံစာကို အိမ်ရှင်က တောင်းဆိုသောအခါ ဖုန်းခေါ်ဆိုသည်။
သင့်အစီရင်ခံစာဖော်ပြသူတွင် ဖော်ပြထားသည့် အင်္ဂါရပ်အစီရင်ခံစာကို လက်ခံဆောင်ရွက်ပေးသူက သတ်မှတ်သည့်အခါ ခေါ်ဆိုသည်။

void app_usbd_hid_enable(uint8_t class_nbr); app_usbd_hid_disable(uint8_t class_nbr); app_usbd_hid_get_report_desc(uint8_t class_nbr၊ const uint8_t *p_report_ptr၊ uint16_tp_report_len);
app_usbd_hid_get_phy_desc(uint8_t class_nbr၊ const uint8_t *p_report_ptr၊ uint16_tp_report_len);
app_usbd_hid_set_output_report(uint8_t class_nbr၊ uint8_t report_id၊ uint8_t *p_report_buf၊ uint16_t report_len); app_usbd_hid_get_feature_report(uint8_t class_nbr၊ uint8_t report_id၊ uint8_t *p_report_buf၊ uint16_t report_len); app_usbd_hid_set_feature_report(uint8_t class_nbr၊ uint8_t report_id၊ uint8_t *p_report_buf၊ uint16_t report_len);

.get_protocol

လက်ရှိအသုံးပြုနေသော ပရိုတိုကောကို ပြန်လည်ရယူသည်။

app_usbd_hid_get_protocol(uint8_t class_nbr၊ uint8_t *p_protocol);

.set_protocol

လက်ရှိအသုံးပြုနေသော ပရိုတိုကောကို သတ်မှတ်သည်။

app_usbd_hid_set_protocol(uint8_t class_nbr၊ uint8_t ပရိုတိုကော);

HID အတန်းအစား အစီရင်ခံတင်ပြသူ Example

Silicon Labs ၏ HID အတန်းများample application သည် ex ကိုပေးသည်။ampရိုးရှင်းသောမောက်စ်အတွက် အစီရင်ခံစာဖော်ပြချက်တစ်ခု၏ le ရည်းစားဟောင်းample အောက်တွင် mouse report descriptor ကို ပြထားသည်။
Example – Mouse အစီရင်ခံစာ ဖော်ပြချက်

static uint8_t app_usbd_hid_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၊

(၄)

မူပိုင်ခွင့် © 2025 Silicon Laboratories မူပိုင်ခွင့်ကိုလက်ဝယ်ထားသည်။

၅/၅

ကျော်view

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

(၁၁)};

(၁) မောက်စ်အစီရင်ခံစာဖော်ပြချက်ပေးသည့် ဇယားအား စာကြောင်းတစ်ခုစီသည် တိုတောင်းသောအကြောင်းအရာနှင့် သက်ဆိုင်သည့်ပုံစံဖြင့် အစပြုထားသည်။ နောက်ဆုံးကို 1-byte ရှေ့ဆက်နှင့် 1-byte data တို့မှ ဖွဲ့စည်းထားသည်။ ကိုးကားပါ။ viewFigure ရှိ host HID parser ဖြင့်ပြုလုပ်ထားသည် - Host HID Parser တစ်ခုမှဖော်ပြချက်အကြောင်းအရာကိုအစီရင်ခံသည် View.
(၂) Generic Desktop Usage Page ကို အသုံးပြုသည်။
(၃) Generic Desktop Usage Page အတွင်းတွင် အသုံးပြုမှု tag ထိန်းချုပ်မှုအုပ်စုသည် မောက်စ်ကို ထိန်းချုပ်ရန်အတွက်ဖြစ်ကြောင်း အကြံပြုသည်။ မောက်စ်စုစည်းမှုတွင် ပုံမှန်အားဖြင့် axes နှစ်ခု (X နှင့် Y) နှင့် ခလုတ်တစ်ခု၊ နှစ်ခု သို့မဟုတ် သုံးခုပါရှိသည်။
(4) Mouse စုဆောင်းမှုကို စတင်ပါပြီ။
(5) mouse collection အတွင်းတွင် အသုံးပြုမှုတစ်ခု tag မောက်စ်ထိန်းချုပ်မှုများသည် pointer collection နှင့်သက်ဆိုင်ကြောင်း ပိုမိုတိကျစွာ အကြံပြုသည်။ pointer collection သည် အပလီကေးရှင်းတစ်ခုသို့ အသုံးပြုသူ၏ ရည်ရွယ်ချက်များကို ညွှန်ပြရန်၊ ညွှန်ပြရန် သို့မဟုတ် ညွှန်ပြရန်အတွက် တန်ဖိုးတစ်ခုထုတ်ပေးသည့် ပုဆိန်အစုအဝေးတစ်ခုဖြစ်သည်။
(၆) ညွှန်ပြ စုဆောင်းမှုကို စတင်ပါပြီ။
(၇) Buttons Usage Page သည် 1-bit အကွက်သုံးခုဖြင့် ဖွဲ့စည်းထားသော Input item တစ်ခုကို သတ်မှတ်သည်။ 1-bit အကွက်တစ်ခုစီသည် mouse9s ခလုတ် 1၊ 2 နှင့် 3 အသီးသီးကို ကိုယ်စားပြုပြီး 0 သို့မဟုတ် 1 တန်ဖိုးကို ပြန်ပေးနိုင်သည်။
(၈) Buttons Usage Page အတွက် Input Item ကို အခြားသော bits 13 ခုဖြင့် ခင်းထားသည်။
(၉) ယေဘူယျဒက်စ်တော့အသုံးပြုမှုစာမျက်နှာတွင် axes X နှင့် Y ဖြင့် mouse အနေအထားကို ဖော်ပြရန်အတွက် ညွှန်ပြထားသည်။ ထည့်သွင်းသည့်အရာသည် -127 နှင့် 127 ကြားရှိ 8-bit အကွက်နှစ်ခုဖြင့် ဖွဲ့စည်းထားသည်။
(10) pointer collection ကို ပိတ်ထားသည်။
(၁၁) Mouse စုဆောင်းမှုကို ပိတ်ထားသည်။
USB.org HID စာမျက်နှာ

မူပိုင်ခွင့် © 2025 Silicon Laboratories မူပိုင်ခွင့်ကိုလက်ဝယ်ထားသည်။

၅/၅

ကျော်view
USB Implementers Forum (USB-IF) သည် “HID Descriptor Tool” ဟုခေါ်သော ကိရိယာတစ်ခုကို အစီရင်ခံစာဖော်ပြသူဖော်မတ်ရှိ အခြားအချက်အလက်များနှင့်အတူ ပံ့ပိုးပေးပါသည်။ နောက်ထပ်အချက်အလက်များအတွက် http://www.usb.org/developers/hidpage/ တွင်ကြည့်ပါ။
USB စက်ပစ္စည်း HID အတန်းအစား ပရိုဂရမ်းမင်းလမ်းညွှန်
ဤအပိုင်းတွင် HID အတန်းကို အသုံးပြုပုံကို ရှင်းပြထားသည်။ USB ကိရိယာ HID အတန်းကို စတင်ခြင်း USB ကိရိယာ HID အတန်းအစား ထည့်သွင်းခြင်း USB စက်ပစ္စည်း HID အတန်းကို အသုံးပြု၍ ဆက်သွယ်ခြင်း
USB ကိရိယာ HID အတန်းကို စတင်နေပါသည်။
သင့်စက်တွင် HID Class လုပ်ဆောင်ချက်ကို ထည့်သွင်းရန်၊ လုပ်ဆောင်ချက် sl_usbd_hid_init() ကိုခေါ်ဆိုခြင်းဖြင့် အတန်းကို ဦးစွာ စတင်ရပါမည်။ ရည်းစားဟောင်းampပုံသေအငြင်းအခုံများကို အသုံးပြု၍ sl_usbd_hid_init() ကို မည်သို့ခေါ်ဆိုရမည်ကို အောက်တွင်ဖော်ပြထားသည်။ sl_usbd_hid_init() သို့ ပေးပို့ရန် စီစဉ်သတ်မှတ်မှုဆိုင်ရာ အကြောင်းပြချက်များဆိုင်ရာ နောက်ထပ်အချက်အလက်များအတွက်၊ USB ကိရိယာ HID အတန်းအစား အပလီကေးရှင်း သီးခြားဖွဲ့စည်းပုံများကို ကြည့်ပါ။
Example – sl_usbd_hid_init() ကို ခေါ်သည်
sl_status_t အခြေအနေ၊
အခြေအနေ = sl_usbd_hid_init(); အကယ်၍ (အခြေအနေ ! SL_STATUS_OK) { /* အမှားအယွင်းတစ်ခု ဖြစ်ပေါ်ခဲ့သည်။ ကိုင်တွယ်မှု အမှားအယွင်းကို ဤနေရာတွင် ထည့်သွင်းသင့်သည်။ */
}
USB စက်ပစ္စည်း HID Class Instance ကို သင့်စက်ပစ္စည်းသို့ ပေါင်းထည့်ခြင်း။
သင့်စက်တွင် HID အတန်းအစား လုပ်ဆောင်နိုင်စွမ်းကို ထည့်သွင်းရန်၊ သင်သည် စံနမူနာတစ်ခုကို ဖန်တီးရမည်၊ ထို့နောက် ၎င်းကို သင့်စက်ပစ္စည်း၏ ဖွဲ့စည်းမှုပုံစံ(များ) တွင် ထည့်ပါ။
HID Class Instance ဖန်တီးခြင်း။
လုပ်ဆောင်ချက် sl_usbd_hid_create_instance() ကိုခေါ်ဆိုခြင်းဖြင့် HID အတန်းအစားကိုဖန်တီးပါ။ ရည်းစားဟောင်းampပုံသေအငြင်းအခုံများကိုအသုံးပြု၍ sl_usbd_hid_create_instance() မှတဆင့် ရိုးရှင်းသောမောက်စ်လုပ်ဆောင်ချက်ကို ဖန်တီးနည်းကို အောက်တွင်ဖော်ပြထားသည်။ sl_usbd_hid_create_instance() သို့ ပေးပို့ရန် စီစဉ်သတ်မှတ်မှုဆိုင်ရာ အကြောင်းပြချက်များဆိုင်ရာ နောက်ထပ်အချက်အလက်များအတွက်၊ USB ကိရိယာ HID အတန်းအစား ချိတ်ဆက်မှုပုံစံများကို ကြည့်ပါ။
Example – sl_usbd_hid_create_instance() မှတဆင့် Mouse Function ကိုထည့်ခြင်း

မူပိုင်ခွင့် © 2025 Silicon Laboratories မူပိုင်ခွင့်ကိုလက်ဝယ်ထားသည်။

၅/၅

ကျော်view
/* ကမ္ဘာလုံးဆိုင်ရာကိန်းသေများ။ */ static const uint8_t app_usbd_hid_mouse_report_desc[] = {
SL_USBD_HID_GLOBAL_USAGE_PAGE + 1၊ SL_USBD_HID_USAGE_PAGE_GENERIC_DESKTOP_CONTROLS၊ SL_USBD_HID_LOCAL_USAGE + 1၊ SL_USBD_HID_CA_MOUSE၊ SL_USBD_HID_MAIN_1၊ SL_USBD_HID_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_1၊ SL_USBD_HID_USAGE_PAGE_BUTTON, SL_USBD_HID_LOCAL_USAGE_MIN + 1, 0 01, SL_USBD_HID_LOCAL_USAGE_MAX + 1, 0 03, SL_USBD_HID_GLOBAL_LOG_MIN + 1, 0 +00ID_USAGE_MIN, 1, 0 01, SL_USBD_HID_GLOBAL_REPORT_COUNT + 1, 0 03, SL_USBD_HID_GLOBAL_REPORT_SIZE + 1, 0 01, SL_USBD_HID_MAIN_INPUT + 1, SL_USBD_HID_MAIN_DATA SL_USBD_HID_MAIN_VARIABLE | SL_USBD_HID_MAIN_ABSOLUTE၊ SL_USBD_HID_GLOBAL_REPORT_COUNT + 1, 0 01, SL_USBD_HID_GLOBAL_REPORT_SIZE + 1, 0 0D, SL_USBD_HID_MAIN_INPUT + 1, SLANT_STMA, - 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_0,0,08၊ 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 };
/* Local variables.*/ uint8_t class_nbr; sl_status_t အခြေအနေ၊
sl_usbd_hid_callbacks_t app_usbd_hid_callbacks = { NULL၊ NULL၊ app_usbd_hid_get_report_desc၊ NULL၊ NULL၊ NULL၊ NULL၊ NULL၊ NULL };
void app_usbd_hid_get_report_desc(uint8_t class_nbr၊ const uint8_t **p_report_ptr၊ uint16_t *p_report_len)
{ (ပျက်ပြယ်) class_nbr;
*p_report_ptr = app_usbd_hid_mouse_report_desc; *p_report_len = sizeof(app_usbd_hid_mouse_report_desc); }
အခြေအနေ = 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၊ အရွယ်အစား(ID_USB)၊ အရွယ်အစား(Export)၊ 2u၊ true၊ &app_usbd_hid_callbacks၊ &class_nbr);
မူပိုင်ခွင့် © 2025 Silicon Laboratories မူပိုင်ခွင့်ကိုလက်ဝယ်ထားသည်။

၅/၅

ကျော်view
/* အမှားအယွင်းတစ်ခု ဖြစ်ပွားခဲ့သည်။ ကိုင်တွယ်မှု အမှားအယွင်းကို ဤနေရာတွင် ထည့်သွင်းသင့်သည်။ */}
HID အတန်းအစား Instance ကို သင့်စက်၏ဖွဲ့စည်းပုံပုံစံ(များ)တွင် ထည့်သွင်းခြင်း HID အတန်းအစား စံနမူနာတစ်ခုကို ဖန်တီးပြီးနောက်၊ လုပ်ဆောင်ချက်ကို ခေါ်ဆိုခြင်းဖြင့် ၎င်းကို ဖွဲ့စည်းမှုတစ်ခုသို့ ထည့်သွင်းနိုင်သည်
sl_usbd_hid_add_to_configuration()။
ရည်းစားဟောင်းampsl_usbd_hid_add_to_configuration() ကို ဘယ်လိုခေါ်ရမလဲဆိုတာ အောက်မှာ ပြထားပါတယ်။
Example – sl_usbd_hid_add_to_configuration() ကိုခေါ်ဆိုနေသည်

sl_status_t အခြေအနေ၊

sl_usbd_hid_add_to_configuration(class_nbr၊

(၄)

config_nbr_fs); (၂)

အကယ်၍ (အခြေအနေ ! SL_STATUS_OK) {

/* အမှားအယွင်းတစ်ခု ဖြစ်ပွားခဲ့သည်။ ကိုင်တွယ်မှု အမှားအယွင်းကို ဤနေရာတွင် ထည့်သွင်းသင့်သည်။ */

}

(1) sl_usbd_hid_create_instance(). (၂) Configuration နံပါတ် (ဤနေရာတွင် ၎င်းကို Full-Speed ​​configuration တွင် ထည့်ထားသည်)။
USB Device HID Class ကို အသုံးပြု၍ ဆက်သွယ်ခြင်း။
Class Instance Communication Synchronous Communication Class Instance Communication HID class သည် host နှင့် ဆက်သွယ်ရန်အတွက် အောက်ပါလုပ်ဆောင်ချက်များကို ပေးဆောင်ပါသည်။
ဇယား - HID ဆက်သွယ်ရေး API အနှစ်ချုပ်

လုပ်ဆောင်ချက်အမည်
sl_usb d _hid _ re ad _sy nc() sl_usb d _hid _write _sy nc()

Operation သည် OUT endpoint ကို နှောက်ယှက်ခြင်းဖြင့် host ထံမှ ဒေတာကို လက်ခံရရှိသည် ။ ဤလုပ်ဆောင်ချက်သည် ပိတ်ဆို့နေသည်။ Interrupt IN endpoint မှတဆင့် ဒေတာကို လက်ခံဆောင်ရွက်ပေးသည်။ ဤလုပ်ဆောင်ချက်သည် ပိတ်ဆို့နေသည်။

Synchronous Communication Synchronous communication ဆိုသည်မှာ လွှဲပြောင်းခြင်းကို ပိတ်ဆို့နေခြင်းကို ဆိုလိုသည်။ လုပ်ဆောင်ချက်ခေါ်ဆိုမှုတွင်၊ အပလီကေးရှင်းများသည် အမှားအယွင်းမရှိ လွှဲပြောင်းခြင်း မပြီးမချင်း ပိတ်ဆို့ထားသည်။ ထာဝစဉ်စောင့်ဆိုင်းခြင်းကို ရှောင်ရှားရန် အချိန်ကုန်သွားနိုင်သည်။ ရည်းစားဟောင်းample အောက်တွင် ကြားဖြတ် OUT endpoint ကို အသုံးပြု၍ host ထံမှ ဒေတာလက်ခံရရှိသည့် read and write တစ်ခုကို ပြပြီး interrupt IN endpoint ကို အသုံးပြု၍ host သို့ data ပေးပို့ပါသည်။
Example – synchronous HID ကို ဖတ်ပြီး ရေးပါ။

__ALIGNED(4) uint8_t rx_buf[2];

__ALIGNED(4) uint8_t tx_buf[2];

uint32_t

xfer_len;

sl_status_t

အဆင့်အတန်း;

အခြေအနေ = sl_usbd_hid_read_sync(class_nbr၊

(၄)

(ပျက်ပြယ် *)rx_buf၊

(၄)

2u၊

0u၊

(၄)

&xfer_len);

အကယ်၍ (အခြေအနေ ! SL_STATUS_OK) {

/* အမှားအယွင်းတစ်ခု ဖြစ်ပွားခဲ့သည်။ ကိုင်တွယ်မှု အမှားအယွင်းကို ဤနေရာတွင် ထည့်သွင်းသင့်သည်။ */

}

မူပိုင်ခွင့် © 2025 Silicon Laboratories မူပိုင်ခွင့်ကိုလက်ဝယ်ထားသည်။

၅/၅

ကျော်view
status =sl_usbd_hid_read_sync(class_nbr,(1)(void *)rx_buf,(2)2u,0u,(3)&xfer_len);if(status ! SL_STATUS_OK){/* အမှားအယွင်းတစ်ခု ဖြစ်ပွားခဲ့သည်။ ကိုင်တွယ်မှု အမှားအယွင်းကို ဤနေရာတွင် ထည့်သွင်းသင့်သည်။ */}
status =sl_usbd_hid_write_sync(class_nbr,(1)(void *)tx_buf,(4)2u,0u,(3)&xfer_len);if(status ! SL_STATUS_OK){/* အမှားအယွင်းတစ်ခု ဖြစ်ပွားခဲ့သည်။ ကိုင်တွယ်မှု အမှားအယွင်းကို ဤနေရာတွင် ထည့်သွင်းသင့်သည်။ */}
(1) sl_usbd_hid_create_instance() မှ ဖန်တီးထားသော class instance နံပါတ်သည် မှန်ကန်သော interrupt OUT သို့မဟုတ် IN endpoint သို့ လွှဲပြောင်းလွှဲပြောင်းမှုကို သင့်လျော်သော OUT သို့မဟုတ် IN endpoint သို့ ပို့ဆောင်ရန် HID အတန်းအတွက် အတွင်းအကိုးအကားကို ပေးပါသည်။
(၂) အပလီကေးရှင်းသည် ဒေတာအားလုံးကို လိုက်လျောညီထွေဖြစ်စေရန်အတွက် လုပ်ဆောင်ပေးထားသည့် ကြားခံကြားခံသည် ကြီးမားကြောင်း သေချာစေရမည်။ မဟုတ်ပါက ထပ်တူပြုခြင်း ပြဿနာများ ဖြစ်ပေါ်လာနိုင်သည်။ အတွင်းပိုင်းအနေဖြင့်၊ sl_usbd_hid_create_instance() ကိုခေါ်ဆိုသောအခါ ထိန်းချုပ်မှုဖတ်ခြင်းအလံသတ်မှတ်မှုအပေါ် မူတည်၍ read operation ကို control endpoint သို့မဟုတ် interrupt endpoint ဖြင့် လုပ်ဆောင်ပါသည်။
(၃) အကန့်အသတ်မရှိ ပိတ်ဆို့ခြင်းအခြေအနေကို ရှောင်ရှားရန်၊ မီလီစက္ကန့်အတွင်း ဖော်ပြသည့် အချိန်ကုန်ဆုံးမှုကို သတ်မှတ်နိုင်သည်။ 809 တန်ဖိုးသည် အပလီကေးရှင်းလုပ်ငန်းကို ထာဝရစောင့်စေသည်။
(4) အပလီကေးရှင်းသည် ကနဦးထုတ်လွှတ်မှုကြားခံကို ထောက်ပံ့ပေးသည်။
HID Periodic Input Reports Task
Bandwidth ကို ချွေတာရန်၊ host သည် အစီရင်ခံသည့် အကြိမ်ရေကို ကန့်သတ်ခြင်းဖြင့် ကြားဖြတ် IN endpoint မှ အစီရင်ခံစာများကို အသံတိတ်စေနိုင်သည်။ ထိုသို့ပြုလုပ်ရန်၊ အိမ်ရှင်သည် SET_IDLE တောင်းဆိုချက်ကို ပေးပို့ရပါမည်။ Silicon Labs မှ အကောင်အထည်ဖော်သည့် HID အတန်းတွင် သင်ထည့်သွင်းသည့် အစီရင်ခံစာတစ်ခု သို့မဟုတ် အများအပြားတွင် သင်အသုံးပြုနိုင်သည့် အစီရင်ခံမှုအကြိမ်ရေကန့်သတ်ချက်ကို လေးစားလိုက်နာသည့် လုပ်ငန်းတာဝန်တစ်ခုပါရှိသည်။ ပုံတွင် Periodic Input Reports Task သည် Periodic Input Reports လုပ်ငန်းဆောင်တာများကို ပြသသည်။
ပုံ – အချိန်အခါအလိုက် ထည့်သွင်းမှုအစီရင်ခံစာများ လုပ်ဆောင်စရာ

(1) စက်သည် SET_IDLE တောင်းဆိုချက်ကို လက်ခံရရှိသည် ။ ဤတောင်းဆိုချက်သည် ပေးထားသော အစီရင်ခံစာ ID အတွက် ပျင်းရိသည့်ကြာချိန်ကို သတ်မှတ်သည်။ SET_IDLE တောင်းဆိုမှုအကြောင်း နောက်ထပ်အသေးစိတ်အချက်အလက်များအတွက် ကြည့်ပါ။
(2) အစီရင်ခံစာ ID ဖွဲ့စည်းပုံ (HID အတန်းစတင်ခြင်းအဆင့်အတွင်း ခွဲဝေချထားပေးသည်) အား idle ကြာချိန်ဖြင့် အပ်ဒိတ်လုပ်ထားသည်။ idle ကြာချိန် တန်ပြန်ကို idle ကြာချိန်တန်ဖိုးဖြင့် အစပြုထားသည်။ အစီရင်ခံစာ ID ဖွဲ့စည်းပုံကို ထည့်သွင်းထားသော အစီရင်ခံစာ ID ဖွဲ့စည်းပုံများပါရှိသော ချိတ်ဆက်ထားသောစာရင်းတစ်ခု၏အဆုံးတွင် ထည့်သွင်းထားသည်။ အကွာအဝေး 4 မှ 1020 ms အထိပေးသော idle ကြာချိန်တန်ဖိုးကို 4-ms ယူနစ်တွင် ဖော်ပြသည်။

မူပိုင်ခွင့် © 2025 Silicon Laboratories မူပိုင်ခွင့်ကိုလက်ဝယ်ထားသည်။

၅/၅

ကျော်view
အနှောက်အယှက် IN အဆုံးမှတ်၏ မဲရုံကြားကာလသည် မဲရုံကြားကာလထက် လျော့နည်းပါက၊ အစီရင်ခံစာများကို မဲရုံကြားကာလတွင် ထုတ်ပေးပါသည်။
(3) 4 ms တိုင်း၊ အချိန်အပိုင်းအခြားအလိုက် ထည့်သွင်းမှုအစီရင်ခံစာလုပ်ဆောင်စရာသည် ထည့်သွင်းမှုအစီရင်ခံစာ ID စာရင်းကို ရှာဖွေသည်။ ထည့်သွင်းမှု အစီရင်ခံစာ ID တစ်ခုစီအတွက်၊ လုပ်ငန်းသည် ဖြစ်နိုင်သည့် လုပ်ဆောင်မှု နှစ်ခုထဲမှ တစ်ခုကို လုပ်ဆောင်သည်။ လုပ်ငန်းဆောင်တာကာလ၏ကြာချိန်သည် လှုပ်လှုပ်ရှားရှားကြာချိန်အတွက် အသုံးပြုသည့် 4-ms ယူနစ်နှင့် ကိုက်ညီပါသည်။ အကယ်၍ SET_IDLE တောင်းဆိုမှုများကို လက်ခံဆောင်ရွက်ပေးခြင်းမရှိပါက၊ ထည့်သွင်းမှုအစီရင်ခံစာ ID စာရင်းသည် ဗလာဖြစ်ပြီး လုပ်ဆောင်စရာမရှိပါ။ အလုပ်သည် 0 နှင့် ကွဲပြားသော ID များနှင့် 0 ထက် ပိုကြီးသော idle ကြာချိန်ဖြင့်သာ လုပ်ဆောင်ပါသည်။
(4) ပေးထားသော ထည့်သွင်းမှု အစီရင်ခံစာ ID အတွက်၊ အလုပ်သည် idle ကြာချိန် ကျော်လွန်သွားခြင်း ရှိမရှိ စစ်ဆေးပါသည်။ မလှုပ်မရှားကြာချိန် မကျော်လွန်ပါက၊ ကောင်တာသည် လျှော့ချလိုက်ပြီး ထည့်သွင်းမှုအစီရင်ခံစာကို လက်ခံဆောင်ရွက်ပေးသူထံ ပေးပို့မည်မဟုတ်ပါ။
(5) idle ကြာချိန် ကျော်လွန်သွားပါက (ဆိုလိုသည်မှာ၊ idle ကြာချိန်ကောင်တာသည် သုညသို့ရောက်ရှိသွားသည်)၊ sl_usbd_hid_write_sync() လုပ်ဆောင်ချက်ကို interrupt IN endpoint မှတစ်ဆင့် host သို့ခေါ်ခြင်းဖြင့် input report ကို host သို့ ပေးပို့ပါသည်။
(၆) လုပ်ငန်းတာဝန်မှပေးပို့သော ထည့်သွင်းအစီရင်ခံစာဒေတာသည် အစီရင်ခံစာဖော်ပြသူတွင်ဖော်ပြထားသော ထည့်သွင်းအစီရင်ခံစာတစ်ခုစီအတွက် ခွဲဝေချထားပေးသည့် အတွင်းဒေတာကြားခံတစ်ခုမှ လာသည်။ အပလီကေးရှင်းလုပ်ငန်းတာဝန်တစ်ခုသည် ထည့်သွင်းအစီရင်ခံစာတစ်ခုပေးပို့ရန် sl_usbd_hid_write_sync() လုပ်ဆောင်ချက်ကို ခေါ်ဆိုနိုင်သည်။ ထည့်သွင်းမှုအစီရင်ခံစာဒေတာကို ပေးပို့ပြီးနောက်၊ sl_usbd_hid_write_sync() သည် ပေးပို့လိုက်သော ဒေတာနှင့်အတူ ထည့်သွင်းအစီရင်ခံစာ ID တစ်ခုနှင့် ဆက်စပ်နေသည့် အတွင်းပိုင်းကြားခံကို အပ်ဒိတ်လုပ်သည်။ ထို့နောက်၊ အချိန်အပိုင်းအခြားအလိုက် ထည့်သွင်းမှုအစီရင်ခံစာများလုပ်ဆောင်သည့်လုပ်ငန်းသည် idle ကြာချိန်တစ်ခုစီကုန်ဆုံးပြီးနောက်နှင့် အပလီကေးရှင်းလုပ်ငန်းတာဝန်သည် အတွင်းပိုင်းကြားခံရှိဒေတာကို မွမ်းမံမွမ်းမံသည့်အချိန်အထိ တူညီသောထည့်သွင်းမှုအစီရင်ခံစာဒေတာကို အမြဲတမ်းပေးပို့ပါသည်။ အချိန်အပိုင်းအခြားအလိုက် ထည့်သွင်းမှုအစီရင်ခံစာလုပ်ဆောင်မှုလုပ်ဆောင်သော ထုတ်လွှင့်မှုအချိန်အတိအကျတွင် ပြုပြင်မွမ်းမံမှုပြုလုပ်သည့်အခါတွင် ထည့်သွင်းမှုအစီရင်ခံစာ ID ဒေတာကို အကျင့်ပျက်ခြစားမှုကို ရှောင်ရှားရန် လော့ခ်ချသည့် ယန္တရားအချို့ရှိသည်။

မူပိုင်ခွင့် © 2025 Silicon Laboratories မူပိုင်ခွင့်ကိုလက်ဝယ်ထားသည်။

၅/၅

ကျော်view
ကျော်view
USB စက် MSC အတန်း
USB Device MSC Class Overview USB စက်ပစ္စည်း MSC အတန်းအစား အရင်းအမြစ်လိုအပ်ချက်များ Core USB ကိရိယာ MSC အတန်းအစား ဖွဲ့စည်းမှု USB စက်ပစ္စည်း MSC အတန်းအစား ပရိုဂရမ်ရေးဆွဲခြင်း လမ်းညွှန် USB ကိရိယာ MSC အတန်းအစား သိုလှောင်မှု ယာဉ်မောင်းများ
ဤကဏ္ဍတွင် Silicon Labs USB ကိရိယာမှ ပံ့ပိုးပေးသည့် အစုလိုက်အပြုံလိုက် သိုလှောင်မှု ကိရိယာအတန်းအစား (MSC) ကို ဖော်ပြသည်။ MSC သည် USB device နှင့် host တစ်ခုကြားတွင် အချက်အလက်များ လွှဲပြောင်းခြင်းကို လုပ်ဆောင်ပေးသည့် protocol တစ်ခုဖြစ်သည်။ လွှဲပြောင်းပေးနေသည့် အချက်အလက်သည် လည်ပတ်နိုင်သော ပရိုဂရမ်များ၊ အရင်းအမြစ်ကုဒ်၊ စာရွက်စာတမ်းများ၊ ရုပ်ပုံများ၊ ဖွဲ့စည်းမှုဒေတာ သို့မဟုတ် အခြားသော စာသား သို့မဟုတ် ကိန်းဂဏာန်းအချက်အလက်များကဲ့သို့ အီလက်ထရွန်နစ်စနစ်ဖြင့် သိမ်းဆည်းထားနိုင်သည့် မည်သည့်အရာမဆိုဖြစ်သည်။ USB ကိရိယာသည် လက်ခံသူထံသို့ ပြင်ပသိုလှောင်မှုကြားခံအဖြစ် ပေါ်လာပြီး လွှဲပြောင်းမှုကို ဖွင့်ပေးသည်။ files ကို drag and drop မှတဆင့်။
A file စနစ်က ဘယ်လိုသတ်မှတ်လဲ။ files ကိုသိုလှောင်မှုမီဒီယာတွင်ဖွဲ့စည်းထားသည်။ USB အစုလိုက် အပြုံလိုက် သိုလှောင်မှု အတန်းအစား သတ်မှတ်ချက်သည် အထူးတလည် မလိုအပ်ပါ။ file လိုက်လျောညီထွေရှိသော စက်ပစ္စည်းများတွင် အသုံးပြုရမည့်စနစ်။ ယင်းအစား၊ ၎င်းသည် Small Computer System Interface (SCSI) transparent command set ကို အသုံးပြု၍ ဒေတာကဏ္ဍများကို ဖတ်ရန်နှင့် ရေးရန် ရိုးရှင်းသော အင်တာဖေ့စ်ကို ထောက်ပံ့ပေးသည်။ ထို့ကြောင့်၊ လည်ပတ်မှုစနစ်များသည် USB drive ကို ဟာ့ဒ်ဒရိုက်တစ်ခုကဲ့သို့ ပြုမူနိုင်ပြီး မည်သည့်အရာနှင့်မဆို ဖော်မတ်လုပ်နိုင်သည်။ file သူတို့ကြိုက်တဲ့စနစ်။
USB အစုလိုက် အပြုံလိုက် သိုလှောင်မှု ကိရိယာ အတန်းသည် အောက်ပါအတိုင်း သယ်ယူပို့ဆောင်ရေး ပရိုတိုကော နှစ်ခုကို ပံ့ပိုးပေးသည်-
Bulk-Only Transport (BOT) Control/Bulk/Interrupt (CBI) Transport (floppy disk drives များအတွက်သာသုံးသည်)
အစုလိုက်အပြုံလိုက် သိုလှောင်မှု ကိရိယာ အတန်းသည် BOT ပရိုတိုကော ကိုသာ အသုံးပြု၍ SCSI ဖောက်ထွင်းမြင်ရသော အမိန့်ကို သတ်မှတ် ပေးသည်၊၊ အစုလိုက် အဆုံးမှတ်များကို ဒေတာနှင့် အခြေအနေ အချက်အလက် ပို့လွှတ်ရန်အတွက်သာ အသုံးပြုရမည်ဟု ဆိုလိုပါသည်။ MSC အကောင်အထည်ဖော်မှုသည် ယုတ္တိယုတ္တိယူနစ်များစွာကို ပံ့ပိုးပေးသည်။
MSC အကောင်အထည်ဖော်မှုသည် အောက်ပါသတ်မှတ်ချက်များနှင့် ကိုက်ညီသည်-
Universal Serial Bus Mass Storage Class Specification ကျော်သွားပါပြီ။view၊ ပြင်ဆင်ချက် 1.3 စက်တင်ဘာ 5၊ 2008။ Universal Serial Bus Mass Storage Class Bulk-Only Transport၊ Revision 1.0 စက်တင်ဘာ 31၊ 1999။
USB Device MSC aCl ss ကျော်သွားပါပြီ။view
Protocol Endpoints Class Requests Small Computer System Interface (SCSI)
ပရိုတိုကော
ဤအပိုင်းတွင်၊ Mass Storage Class ၏ Bulk-Only Transport (BOT) protocol ကို ဆွေးနွေးပါမည်။ Bulk-Only Transport protocol တွင် s သုံးခုရှိသည်။tages-
ကွပ်ကဲမှုပို့ဆောင်ရေး ဒေတာပို့ဆောင်မှု အခြေအနေ ပို့ဆောင်ရေး
အစုလိုက်အပြုံလိုက် သိုလှောင်မှုအမိန့်များကို Command Block Wrapper (CBW) ဟုခေါ်သော တည်ဆောက်မှုမှတစ်ဆင့် အိမ်ရှင်မှ ပေးပို့သည်။ ဒေတာသယ်ယူပို့ဆောင်ရေး လိုအပ်သော အမိန့်များtage၊ လက်ခံသူသည် CBW ၏ အရှည်နှင့် အလံအကွက်များအလိုက် သတ်မှတ်ထားသည့် ကိရိယာမှ ဘိုက်အရေအတွက်အတိအကျကို ပေးပို့ရန် သို့မဟုတ် လက်ခံရန် ကြိုးပမ်းမည်ဖြစ်သည်။ ဒေတာသယ်ယူပို့ဆောင်ပြီးနောက် stage၊ လက်ခံသူသည် Command Status Wrapper (CSW) ကို လက်ခံရယူရန် ကြိုးပမ်းသည် (ဆိုပါက၊

မူပိုင်ခွင့် © 2025 Silicon Laboratories မူပိုင်ခွင့်ကိုလက်ဝယ်ထားသည်။

၅/၅

ကျော်view
တစ်ခုခု)။ ဒေတာသယ်ယူပို့ဆောင်ရေး s မပါဝင်သည့် အမိန့်များအတွက်tage၊ CBW ပေးပို့ပြီးနောက် အိမ်ရှင်သည် CSW ကို တိုက်ရိုက်လက်ခံရန် ကြိုးပမ်းသည်။ ပရိုတိုကောကို ပုံ – MSC Protocol တွင် အသေးစိတ်ဖော်ပြထားသည်။
ပုံ – MSC Protocol

အဆုံးမှတ်
စက်ဘက်တွင်၊ BOT သတ်မှတ်ချက်နှင့်အညီ၊ MSC သည် အောက်ဖော်ပြပါ အဆုံးမှတ်များဖြင့် ဖွဲ့စည်းထားသည်- ပုံသေမှတ်တိုင်ဟုခေါ်သော ထိန်းချုပ်မှု IN နှင့် OUT အဆုံးမှတ်တစ်စုံ။ အစုလိုက် IN နှင့် OUT အဆုံးမှတ်များ တစ်စုံ။
အောက်ဖော်ပြပါဇယားသည် အဆုံးမှတ်များ၏ မတူညီသောအသုံးပြုမှုများကို ဖော်ပြသည်။
ဇယား - MSC အဆုံးမှတ်အသုံးပြုမှု

အဆုံးမှတ်
အစုလိုက် အစုလိုက် အစုလိုက် အထွက်တွင် ထိန်းချုပ်ပါ။

ဦးတည်ချက်
Device မှ Host မှ Host သို့ Device မှ Device သို့ Host မှ Host သို့ Device သို့ လက်ခံဆောင်ရွက်ပေးပါသည်။

အသုံးပြုမှု
စာရင်းကောက်ခြင်းနှင့် MSC အတန်း- သီးသန့်တောင်းဆိုမှုများ စာရင်းကောက်ခြင်းနှင့် MSC အတန်းအလိုက် တောင်းဆိုချက်များ CSW ပေးပို့ခြင်းနှင့် ဒေတာ လက်ခံခြင်း CBW နှင့် ဒေတာ

အတန်းတောင်းဆိုမှုများ
MSC BOT ပရိုတိုကောအတွက် သတ်မှတ်ထားသော ထိန်းချုပ်မှု တောင်းဆိုချက် နှစ်ခုရှိသည်။ ဤတောင်းဆိုမှုများနှင့် ၎င်းတို့၏ဖော်ပြချက်များကို အောက်ပါဇယားတွင် အသေးစိတ်ဖော်ပြထားသည်။

ဇယား – အစုလိုက်အပြုံလိုက် သိုလှောင်မှု အတန်း တောင်းဆိုမှုများ

အတန်းတောင်းဆိုမှုများ
အစုလိုက်သီးသန့် အစုလိုက်အပြုံလိုက် သိုလှောင်မှု ပြန်လည်သတ်မှတ်ခြင်း။

ဖော်ပြချက်
ဤတောင်းဆိုချက်အား အစုလိုက်အပြုံလိုက် သိုလှောင်မှုကိရိယာနှင့် ၎င်း၏ဆက်စပ်နေသော မျက်နှာပြင်ကို ပြန်လည်သတ်မှတ်ရန် အသုံးပြုပါသည်။ ဤတောင်းဆိုချက်သည် စက်ပစ္စည်းအား နောက်ထပ်အမိန့်ပေးသည့်ပိတ်ဆို့ခြင်းကို လက်ခံရရှိရန် အဆင်သင့်ဖြစ်သည်။

မူပိုင်ခွင့် © 2025 Silicon Laboratories မူပိုင်ခွင့်ကိုလက်ဝယ်ထားသည်။

၅/၅

ကျော်view

အတန်းတောင်းဆိုမှုများ

ဖော်ပြချက်

Get Max ဤတောင်းဆိုချက်ကို စက်ပစ္စည်းမှပံ့ပိုးထားသော အမြင့်ဆုံးယုတ္တိယူနစ်နံပါတ် (LUN) ကို ပြန်ပေးရန် အသုံးပြုပါသည်။ ဟောင်းအတွက်ample, a

LUN

LUN 0 နှင့် LUN 1 ပါသော စက်ပစ္စည်းသည် 1 တန်ဖိုးကို ပြန်ပေးပါမည်။ ယုတ္တိယူနစ်တစ်ခုတည်းရှိသော စက်သည် 0 သို့ ပြန်သွားလိမ့်မည် သို့မဟုတ် ရပ်တန့်သွားပါမည်။

တောင်းဆိုချက်။ ပြန်ပေးနိုင်တဲ့ အများဆုံးတန်ဖိုးက 15 ဖြစ်ပါတယ်။

အသေးစားကွန်ပျူတာစနစ် Interface SCSI

ပရိုဂရမ်းမင်း၏ အင်တာဖေ့စ်အဆင့်တွင်၊ MSC စက်ပစ္စည်းသည် SCSI နှင့် SFF-8020i (ATAPI) ကဲ့သို့သော စံသိုလှောင်မှုမီဒီယာ ဆက်သွယ်မှုပရိုတိုကောများထဲမှ တစ်ခုကို အကောင်အထည်ဖော်သည်။ "Programming Interface" သည် မည်သည့်ပရိုတိုကောကို အကောင်အထည် ဖော်သည်ကို သတ်မှတ်ပေးကာ၊ USB သိုလှောင်မှုကိရိယာနှင့် ဆက်သွယ်ရန်အတွက် သင့်လျော်သော စက်ပစ္စည်းဒရိုက်ဗာကို လက်ခံဆောင်ရွက်ပေးသည့် လည်ပတ်မှုစနစ်ကို ကူညီပေးသည်။ SCSI သည် USB MSC သိုလှောင်မှုကိရိယာများတွင် အသုံးပြုသည့် အသုံးအများဆုံး ပရိုတိုကောဖြစ်သည်။ ကျွန်ုပ်တို့သည် ကျွန်ုပ်တို့၏ GSDK အသုံးပြုသူများသည် ဘောင်အပြင်ဘက်တွင် အသုံးပြုနိုင်သည့် MSC SCSI အတန်းခွဲများအတွက် အကောင်အထည်ဖော်မှုကို ပံ့ပိုးပေးပါသည်။
SCSI သည် ကွန်ပျူတာများနှင့် အရံစက်ပစ္စည်းများကြား ဆက်သွယ်ရေးကို ကိုင်တွယ်ရန်အတွက် စံသတ်မှတ်ချက်တစ်ခုဖြစ်သည်။ ဤစံနှုန်းများတွင် အမိန့်ပေးချက်များ၊ ပရိုတိုကောများ၊ လျှပ်စစ်အင်တာဖေ့စ်များနှင့် optical interface များပါဝင်သည်။ USB ကဲ့သို့သော အခြားသော ဟာ့ဒ်ဝဲ အင်တာဖေ့စ်များကို အသုံးပြုသည့် သိုလှောင်ကိရိယာများသည် စက်ပစ္စည်း/အိမ်ရှင် အချက်အလက်များ ရယူရန်နှင့် စက်ပစ္စည်း၏ လည်ပတ်မှုကို ထိန်းချုပ်ရန်နှင့် သိုလှောင်မှုမီဒီယာရှိ ဒေတာပိတ်ဆို့မှုများကို လွှဲပြောင်းရန်အတွက် SCSI ညွှန်ကြားချက်များကို အသုံးပြုသည်။
SCSI ညွှန်ကြားချက်များသည် စက်အမျိုးအစားနှင့် လုပ်ဆောင်ချက်များ အများအပြားကို အကျုံးဝင်သောကြောင့် စက်ပစ္စည်းများသည် ဤအမိန့်စာများ၏ အစုခွဲတစ်ခု လိုအပ်ပါသည်။ ယေဘုယျအားဖြင့် အခြေခံဆက်သွယ်ရေးအတွက် အောက်ပါ command များသည် လိုအပ်သည်-
စုံစမ်းရန် စွမ်းရည်(10) ဖတ်ရန်(10) REquest SENSE test unit အဆင်သင့်ရေးပါ(10)
USB စက်ပစ္စည်း MSC အတန်းအစား အရင်းအမြစ် လိုအပ်ချက်များ

လုပ်ဆောင်ချက် sl_usbd_msc_add_to_configuration() မှတဆင့် USB configuration တွင် MSC အတန်းအစား instance တစ်ခုကို ထည့်လိုက်တိုင်း၊ အောက်ပါအရင်းအမြစ်များကို core မှ ခွဲဝေပေးမည်ဖြစ်သည်။

အရင်းအမြစ်
Interfaces Alternate interfaces Endpoints Interface အုပ်စုများ

အရေအတွက်
၄ ၆၀၂၈၃၀၆ ၄ ၆၀၂၈၃၅၂

ထိုနံပါတ်များသည် ဖွဲ့စည်းမှုအလိုက်ဖြစ်ကြောင်း သတိပြုပါ။ သင်၏ SL_USBD_INTERFACE_QUANTITY ၊ SL_USBD_ALT_INTERFACE_QUANTITY ၊ SL_USBD_INTERFACE_GROUP_QUANTITY နှင့် SL_USBD_DESCRIPTOR_QUANTITY ဖွဲ့စည်းမှုတန်ဖိုးများကို စနစ်ထည့်သွင်းသည့်အခါ၊ အတန်းအစား မည်မျှထည့်သွင်းမည်ကို ထည့်သွင်းစဉ်းစားရန် မမေ့ပါနှင့်။ SL_USBD_OPEN_ENDPOINTS_QUANTITY ဖွဲ့စည်းမှုတန်ဖိုးအတွက်၊ အဆုံးမှတ်များကို လက်ခံဆောင်ရွက်ပေးသူမှ စီစဉ်သတ်မှတ်ထားမှသာ ဖွင့်ထားသောကြောင့်၊ အတန်းဥပမာတစ်ခုအတွက် လိုအပ်သော အဆုံးအမှတ်အရေအတွက်ကို ထည့်သွင်းစဉ်းစားရန် လိုအပ်ပါသည်။
USB ကိရိယာ MSC အတန်းအစား ဖွဲ့စည်းမှု

MSC class ကို configure လုပ်ရန် configuration parameters အုပ်စုနှစ်စုကို အသုံးပြုသည်-
USB စက်ပစ္စည်း MSC အတန်းအစား အပလီကေးရှင်း-သီးသန့်ဖွဲ့စည်းပုံများ USB ကိရိယာ MSC အတန်းအစား ယုတ္တိယူနစ် ဖွဲ့စည်းမှု
USB ကိရိယာ MSC အတန်းအစား အပလီကေးရှင်း-သီးသန့်ဖွဲ့စည်းပုံများ

Class Compile-Time Configurations Class Instance ဖန်တီးခြင်း။

မူပိုင်ခွင့် © 2025 Silicon Laboratories မူပိုင်ခွင့်ကိုလက်ဝယ်ထားသည်။

၅/၅

ကျော်view

Class Compile-Time Configurations
Silicon Labs USB စက်ပစ္စည်း MSC အတန်းအစား နှင့် SCSI အတန်းခွဲများသည် sl_usbd_core_config.h တွင်ရှိသော #defines မှတစ်ဆင့် compile time တွင် configure လုပ်နိုင်ပါသည်။ file.
ဇယား – ယေဘူယျ ဖွဲ့စည်းမှုပုံစံ ကိန်းသေများ

ဖွဲ့စည်းမှုအမည်

ဖော်ပြချက်

SL_USBD_MSC_CLASS_INST လုပ်ဆောင်ချက်ကို ခေါ်ဆိုခြင်းဖြင့် သင်ခွဲဝေပေးမည့် အတန်းအစား အရေအတွက်

ANCE_QUANTITY

sl_usbd_msc_scsi_create_instance()။

SL_USBD_MSC_CONFIGURA သို့ခေါ်ဆိုမှုမှတဆင့် class instance တစ်ခုထပ်ထည့်နိုင်သည့် configuration နံပါတ်

TION_QUANTITY

လုပ်ဆောင်ချက် sl_usbd_msc_scsi_add_to_configuration()။

SL_USBD_MSC_LUN_QUANT သို့ ခေါ်ဆိုမှုမှတစ်ဆင့် သင်ထည့်သွင်းမည့် အတန်းအစားတစ်ခုအတွက် ယုတ္တိယူနစ်အရေအတွက်

ITY

လုပ်ဆောင်ချက် sl_usbd_msc_scsi_lun_add()။

SL_USBD_MSC_SCSI_64_BIT 64 bits ၏ Logical Block Address (LBA) အတွက် ပံ့ပိုးမှုကို ဖွင့်ပါ သို့မဟုတ် ပိတ်ပါ။
_LBA_EN

SL_USBD_MSC_DATA_BUFF bytes ER_SIZE အတန်းအတွက် instance တစ်ခုစီအတွက် data buffer အရွယ်အစား

မူရင်းတန်ဖိုး
2
1
2
0
512

Class Instance ဖန်တီးခြင်း။
USB စက်ပစ္စည်း MSC SCSI အတန်းအစားကို ဖန်တီးခြင်းသည် sl_usbd_msc_scsi_create_instance() လုပ်ဆောင်ချက်ကို ခေါ်ဆိုခြင်းဖြင့် လုပ်ဆောင်သည်။ ဤလုပ်ဆောင်ချက်သည် အောက်တွင်ဖော်ပြထားသော configuration argument တစ်ခုယူသည်။
p_scsi_callbacks
p_scsi_callbacks သည် sl_usbd_msc_scsi_callbacks_t အမျိုးအစား၏ဖွဲ့စည်းပုံဖွဲ့စည်းပုံအတွက် ညွှန်ပြချက်တစ်ခုဖြစ်သည်။ အသုံးများသော usb စက်ပစ္စည်းအတန်းအစား ဖုန်းခေါ်ဆိုမှုများ ချိတ်ဆက်/ဖြတ်တောက်ခြင်းအပြင်၊ ၎င်းသည် ယုတ္တိယုတ္တိယူနစ်တွင် ဖြစ်ရပ်တစ်ခုဖြစ်ပွားသည့်အခါ ခေါ်ဝေါ်သည့် ရွေးချယ်နိုင်သော ဖုန်းခေါ်ဆိုမှုဆိုင်ရာ လုပ်ဆောင်ချက်အစုံနှင့်အတူ MSC အတန်းကို ပံ့ပိုးပေးပါသည်။ ပြန်ခေါ်ရန်မလိုအပ်ပါက null pointer (NULL) ကို ဤအငြင်းအခုံသို့ ကူးသွားနိုင်သည်။
အောက်ဖော်ပြပါဇယားသည် ဤဖွဲ့စည်းပုံဖွဲ့စည်းပုံတွင် ရရှိနိုင်သော ဖွဲ့စည်းမှုပုံစံအကွက်တစ်ခုစီကို ဖော်ပြသည်။
ဇယား – sl_usbd_msc_scsi_callbacks_t ဖွဲ့စည်းမှုဖွဲ့စည်းပုံ

လယ်ကွင်းများ

ဖော်ပြချက်

.ဖွင့်ပါ။

USB class instance ကို အောင်မြင်စွာ ဖွင့်ထားသောအခါတွင် ခေါ်သည်။

USB class instance ကို disable လုပ်ထားသောအခါတွင် .disable ဟု ခေါ်သည်။

လော့ဂျစ်ယူနစ်ကို host မှ ထုတ်ပစ်လိုက်သောအခါ .host_eject Function ဟုခေါ်သည်။

လုပ်ဆောင်ချက် လက်မှတ်
app_usbd_msc_scsi_enable(uint8_t class_nbr);
app_usbd_msc_scsi_disable(uint8_t class_nbr); app_usbd_msc_scsi_host_eject(uint8_t class_nbr၊ uint8_t lu_nbr);

USB ကိရိယာ MSC အတန်းအစား ယုတ္တိယူနစ် ဖွဲ့စည်းမှု

MSC အတန်းအစား instance တစ်ခုသို့ ယုတ္တိယူနစ်တစ်ခုထည့်ခြင်းသည် sl_usbd_msc_lun_add() ကိုခေါ်ဆိုခြင်းဖြင့် လုပ်ဆောင်သည်။ ဤလုပ်ဆောင်ချက်သည် အောက်တွင်ဖော်ပြထားသော configuration argument တစ်ခုယူသည်။

p_lu_info

p_lu_info သည် sl_usbd_msc_scsi_lun_info_t အမျိုးအစား၏ ဖွဲ့စည်းပုံအတွက် ညွှန်ပြချက်တစ်ခုဖြစ်သည်။ ၎င်း၏ရည်ရွယ်ချက်မှာ ယုတ္တိဗေဒယူနစ်ရှိ အချက်အလက်များကို MSC အတန်းသို့ ပေးဆောင်ရန်ဖြစ်သည်။
အောက်ဖော်ပြပါဇယားသည် ဤဖွဲ့စည်းပုံဖွဲ့စည်းပုံတွင် ရရှိနိုင်သော ဖွဲ့စည်းမှုပုံစံအကွက်တစ်ခုစီကို ဖော်ပြသည်။

ဇယား – sl_usbd_msc_scsi_lun_info_t ဖွဲ့စည်းမှုဖွဲ့စည်းပုံ

မူပိုင်ခွင့် © 2025 Silicon Laboratories မူပိုင်ခွင့်ကိုလက်ဝယ်ထားသည်။

၅/၅

ကျော်view

လယ်ကွင်း

ဖော်ပြချက်

လယ်ကွင်း
.scsi_lun_api_p tr

ဖော်ပြချက်
ဤယုတ္တိယူနစ်ကို ကိုင်တွယ်မည့် မီဒီယာဒရိုင်ဘာ API ကိုညွှန်ပြပါ။ သိုလှောင်မှုဒရိုက်ဗာများအကြောင်း နောက်ထပ်အချက်အလက်များအတွက် USB စက်ပစ္စည်း MSC အတန်းအစား သိုလှောင်မှုဒရိုက်ဗာများကို ကြည့်ပါ။

.ve nd o r_id _ p tr
.product_id_ptr
.p ro d uct_ re v isi on_level .is_ re ad _o nly

ယုတ္တိယုတ္တိယူနစ်၏ ရောင်းချသူ ခွဲခြားသတ်မှတ်ခြင်းပါရှိသော စာကြောင်းကို ညွှန်ပြပါ။ စာကြောင်း၏ အများဆုံးအရှည်မှာ စာလုံး 8 လုံးဖြစ်သည်။ ယုတ္တိယုတ္တိယူနစ်၏ ထုတ်ကုန်အမှတ်အသားပါရှိသော လိုင်းတစ်ခုကို ညွှန်ပြပါ။ စာကြောင်း၏ အများဆုံးအရှည်မှာ စာလုံး 16 လုံးဖြစ်သည်။ ထုတ်ကုန်ပြန်လည်ပြင်ဆင်မှုအဆင့်။
ယုတ္တိယုတ္တိယူနစ်ကို ဖတ်ရန်သာမှတ်အဖြစ် မြင်သင့်သည်ဆိုသည်ကို ညွှန်ပြသော အလံ view အိမ်ရှင်၏ (အမှန်) သို့မဟုတ် မ(false)။

USB စက်ပစ္စည်း MSC အတန်းအစား ပရိုဂရမ်းမင်းလမ်းညွှန်

ဤအပိုင်းတွင် MSC အတန်းကို အသုံးပြုပုံကို ရှင်းပြထားသည်။
USB ကိရိယာ MSC အတန်းကို စတင်ခြင်း USB ကိရိယာ MSC SCSI အတန်းအစား ထည့်သွင်းခြင်း သင့်စက်ပစ္စည်းသို့ USB ကိရိယာ MSC အတန်းအစား ယုတ္တိယူနစ် ကိုင်တွယ်ခြင်း
USB ကိရိယာ MSC Class ကို စတင်နေပါသည်။

သင့်စက်ပစ္စည်းသို့ MSC SCSI အတန်းအစား လုပ်ဆောင်နိုင်စွမ်းကို ထည့်သွင်းရန်၊ လုပ်ဆောင်ချက် sl_usbd_msc_init() နှင့် sl_usbd_msc_scsi_init() ကိုခေါ်ဆိုခြင်းဖြင့် MSC အခြေခံလူတန်းစားနှင့် SCSI အတန်းခွဲကို ဦးစွာအစပြုပါ။
ရည်းစားဟောင်းampsl_usbd_msc_init() နှင့် sl_usbd_msc_scsi_init() ကို မည်သို့ခေါ်ဆိုရမည်ကို အောက်တွင်ဖော်ပြထားသည်။

Example – sl_usbd_msc_init() နှင့် sl_usbd_msc_scsi_init() ကို ခေါ်သည်

sl_status_t အခြေအနေ၊
အခြေအနေ = sl_usbd_msc_init(); အကယ်၍ (အခြေအနေ ! SL_STATUS_OK) { /* အမှားအယွင်းတစ်ခု ဖြစ်ပေါ်ခဲ့သည်။ ကိုင်တွယ်မှု အမှားအယွင်းကို ဤနေရာတွင် ထည့်သွင်းသင့်သည်။ */
}
အခြေအနေ = sl_usbd_msc_scsi_init(); အကယ်၍ (အခြေအနေ ! SL_STATUS_OK) { /* အမှားအယွင်းတစ်ခု ဖြစ်ပေါ်ခဲ့သည်။ ကိုင်တွယ်မှု အမှားအယွင်းကို ဤနေရာတွင် ထည့်သွင်းသင့်သည်။ */
}
USB စက် MSC SCSI Class Instance ကို သင့်စက်သို့ ထည့်ခြင်း။
သင့်စက်တွင် MSC SCSI အတန်းအစား လုပ်ဆောင်နိုင်စွမ်းကို ထည့်သွင်းရန်၊ ဦးစွာ ဥပမာတစ်ခု ဖန်တီးပါ၊ ထို့နောက် ၎င်းကို သင့်စက်ပစ္စည်း၏ ဖွဲ့စည်းမှုပုံစံ(များ)တွင် ထည့်ပါ။ သင့်ဥပမာတွင် အနည်းဆုံး ယုတ္တိယူနစ်တစ်ခု ထည့်ရပါမည်။
MSC SCSI Class Instance ဖန်တီးခြင်း။
လုပ်ဆောင်ချက် sl_usbd_msc_scsi_create_instance() ကိုခေါ်ဆိုခြင်းဖြင့် MSC SCSI အတန်းအစား စံနမူနာတစ်ခု ဖန်တီးပါ။
ရည်းစားဟောင်းampပုံသေအငြင်းအခုံများကိုအသုံးပြု၍ sl_usbd_msc_scsi_create_instance() ကို မည်သို့ခေါ်ဆိုရမည်ကို အောက်တွင်ဖော်ပြထားသည်။ sl_usbd_msc_scsi_create_instance() သို့ ပေးပို့ရန် စီစဉ်သတ်မှတ်မှုဆိုင်ရာ အကြောင်းပြချက်များဆိုင်ရာ နောက်ထပ်အချက်အလက်များအတွက်၊ USB ကိရိယာ MSC အတန်းအစား အပလီကေးရှင်း သီးခြားဖွဲ့စည်းပုံများကို ကြည့်ပါ။
Example – sl_usbd_ msc_scsi_create_instance() ကို ခေါ်သည်

မူပိုင်ခွင့် © 2025 Silicon Laboratories မူပိုင်ခွင့်ကိုလက်ဝယ်ထားသည်။

၅/၅

ကျော်view

uint8_t class_nbr; sl_status_t အခြေအနေ၊
sl_usbd_msc_scsi_callbacks_t app_usbd_msc_scsi_callbacks = { .enable = NULL, .disable = NULL, .host_eject = NULL };
အခြေအနေ = sl_usbd_msc_scsi_create_instance(&app_usbd_msc_scsi_callbacks၊0 &class_nbr);
အကယ်၍ (အခြေအနေ ! SL_STATUS_OK) { /* အမှားအယွင်းတစ်ခု ဖြစ်ပေါ်ခဲ့သည်။ ကိုင်တွယ်မှု အမှားအယွင်းကို ဤနေရာတွင် ထည့်သွင်းသင့်သည်။ */ }
MSC Class Instance ကို သင့်စက်၏ဖွဲ့စည်းပုံ(များ) တွင်ထည့်ခြင်း
MSC class instance တစ်ခုကို ဖန်တီးပြီးပါက၊ function ကိုခေါ်ဆိုခြင်းဖြင့် ၎င်းကို configuration တစ်ခုတွင် ထည့်သွင်းနိုင်သည်။
sl_usbd_msc_add_to_configuration()။
ရည်းစားဟောင်းampပုံသေ အကြောင်းပြချက်များကို အသုံးပြု၍ sl_usbd_msc_scsi_add_to_configuration() ကို မည်သို့ခေါ်ဆိုရမည်ကို အောက်တွင် ပြထားသည်။
Example – sl_usbd_ msc_scsi_add_to_configuration() ကိုခေါ်ဆိုနေသည်

sl_status_t အခြေအနေ၊

အခြေအနေ = sl_usbd_msc_scsi_add_to_configuration(class_nbr၊

(၄)

config_nbr_fs);

(၄)

အကယ်၍ (အခြေအနေ ! SL_STATUS_OK) {

/* အမှားအယွင်းတစ်ခု ဖြစ်ပွားခဲ့သည်။ ကိုင်တွယ်မှု အမှားအယွင်းကို ဤနေရာတွင် ထည့်သွင်းသင့်သည်။ */

}

(1) sl_usbd_msc_scsi_create_instance() မှ ပြန်ပေးသော ဖွဲ့စည်းမှုသို့ ထည့်ရန် အတန်းနံပါတ်။ (32) Configuration number (ဤနေရာတွင် ၎င်းကို Full-Speed ​​configuration တွင် ထည့်ထားသည်)။
USB ကိရိယာ MSC Class Logical Unit ကိုင်တွယ်ခြင်း။
သိုလှောင်မှုအလတ်စားတစ်ခုကို ချိတ်ဆက်ခြင်း/ဖြုတ်ခြင်း ယုတ္တိယုတ္တိယူနစ်တစ်ခု ထည့်ခြင်း။
Logical Unit တစ်ခုထည့်ခြင်း။
သင်၏ MSC SCSI အတန်းအစား စံနမူနာတွင် ယုတ္တိယူနစ်တစ်ခုကို ပေါင်းထည့်သောအခါ၊ ၎င်းကို သိုလှောင်မှုကြားခံ (RAMDisk၊ SD ကတ်၊ flash memory၊ စသည်) နှင့် ချည်နှောင်ထားရမည်။ MSC အတန်းသည် သိုလှောင်မှုမီဒီယာနှင့် ဆက်သွယ်ရန်အတွက် သိုလှောင်မှုဒရိုက်ဗာကို အသုံးပြုသည်။ ယုတ္တိယူနစ်ကို ထည့်သွင်းသည့်အခါ ဤဒရိုင်ဘာသည် ထောက်ပံ့ပေးရန် လိုအပ်ပါသည်။
ရည်းစားဟောင်းample အောက်တွင် sl_usbd_msc_scsi_lun_add() မှတဆင့် ယုတ္တိယူနစ်တစ်ခုကို ထည့်သွင်းနည်းကို ပြထားသည်။
Example – sl_usbd_msc_scsi_lun_add() မှတဆင့် ယုတ္တိယူနစ်တစ်ခုကို ထည့်ခြင်း

မူပိုင်ခွင့် © 2025 Silicon Laboratories မူပိုင်ခွင့်ကိုလက်ဝယ်ထားသည်။

၅/၅

ကျော်view

sl_usbd_msc_scsi_lun_t *lu_object_ptr = NULL;

sl_usbd_msc_scsi_lun_info_t lu_info;

sl_status_t

အဆင့်အတန်း;

lu_info.sl_usbd_msc_scsi_lun_api_t = &app_usbd_scsi_storage_block_device_api;

lu_info.vendor_id_ptr

= “ဆီလီကွန်ဓာတ်ခွဲခန်းများ”;

lu_info.product_id_ptr

= “စက်ကိရိယာ example”;

lu_info.product_revision_level = 0x1000u;

lu_info.is_read_only

= မိစ္ဆာ;

အခြေအနေ = sl_usbd_msc_scsi_lun_add(class_nbr, &lu_info, &lu_object_ptr);
အကယ်၍ (အခြေအနေ ! SL_STATUS_OK) { /* အမှားအယွင်းတစ်ခု ဖြစ်ပေါ်ခဲ့သည်။ ကိုင်တွယ်မှု အမှားအယွင်းကို ဤနေရာတွင် ထည့်သွင်းသင့်သည်။ */ }

သိုလှောင်မှုအလတ်စားကို ပူးတွဲခြင်း/ဖြုတ်ခြင်း။
ယုတ္တိယုတ္တိယူနစ်ကို ထည့်သွင်းပြီးသောအခါ၊ လက်ခံသူဘက်ခြမ်းမှရရှိနိုင်ရန် သိုလှောင်မှုကြားခံတစ်ခုကို ပူးတွဲရပါမည်။ MSC အတန်းသည် ယုတ္တိယုတ္တိယူနစ်သို့ သိုလှောင်မှုမီဒီယာချိတ်ဆက်မှုကို ထိန်းချုပ်ရန် လုပ်ဆောင်ချက်နှစ်ခုကို ပေးဆောင်သည်- sl_usbd_msc_scsi_lun_attach() နှင့် sl_usbd_msc_scsi_lun_detach() ။ ဤလုပ်ဆောင်ချက်များသည် လိုအပ်ပါက ထည့်သွင်းထားသော အပလီကေးရှင်းမှ ပြန်လည်ဝင်ရောက်ခွင့်ရရှိစေရန်အတွက် သိုလှောင်ကိရိယာကို ဖယ်ရှားခြင်းကို အတုယူနိုင်စေပါသည်။
ရည်းစားဟောင်းample အောက်တွင် function sl_usbd_msc_scsi_lun_attach() နှင့် sl_usbd_msc_scsi_lun_detach() ကို အသုံးပြုပုံကို ပြထားသည်။
Example – Media Attach/Detach

sl_status_t အခြေအနေ၊

အခြေအနေ = sl_usbd_msc_scsi_lun_attach(lu_object_ptr); အကယ်၍ (အခြေအနေ ! SL_STATUS_OK) { /* အမှားအယွင်းတစ်ခု ဖြစ်ပေါ်ခဲ့သည်။ ကိုင်တွယ်မှု အမှားအယွင်းကို ဤနေရာတွင် ထည့်သွင်းသင့်သည်။ */
}

(၄)

အခြေအနေ = sl_usbd_msc_scsi_lun_detach(lu_object_ptr); အကယ်၍ (အခြေအနေ ! SL_STATUS_OK) {
/* အမှားအယွင်းတစ်ခု ဖြစ်ပွားခဲ့သည်။ ကိုင်တွယ်မှု အမှားအယွင်းကို ဤနေရာတွင် ထည့်သွင်းသင့်သည်။ */
}

(၄)

status = sl_usbd_msc_scsi_lun_attach(lu_object_ptr) အကယ်၍ (အခြေအနေ ! SL_STATUS_OK) {
/* အမှားအယွင်းတစ်ခု ဖြစ်ပွားခဲ့သည်။ ကိုင်တွယ်မှု အမှားအယွင်းကို ဤနေရာတွင် ထည့်သွင်းသင့်သည်။ */
}

(၄)

(1) ယခုအချိန်မှစ၍ MSC စက်ပစ္စည်းကို host တစ်ခုသို့ ချိတ်ဆက်ထားပါက သိုလှောင်မှုမီဒီယာကို အသုံးပြုနိုင်မည်ဖြစ်သည်။
(2) MSC စက်ပစ္စည်းကို host တစ်ခုသို့ ချိတ်ဆက်ထားပါက၊ မီဒီယာသည် ယခုအခါ မရနိုင်တော့သည့်အဖြစ် ပေါ်လာပါမည်။ ယခုအချိန်တွင် မြှုပ်သွင်းထားသော အပလီကေးရှင်းမှ မီဒီယာပေါ်တွင် လုပ်ဆောင်ချက်များကို လုပ်ဆောင်နိုင်သည်။
(၃) တစ်ဖန်၊ MSC စက်ပစ္စည်းကို host နှင့် ချိတ်ဆက်ထားပါက၊ storage media သည် ချိတ်ဆက်ထားသည့်အတိုင်း ပေါ်လာမည်ဖြစ်သည်။
USB စက်ပစ္စည်း MSC Class Storage Drivers
USB ကိရိယာ MSC Class သည် သိုလှောင်မှုကြားခံတစ်ခုနှင့် ဆက်သွယ်ရန်အတွက် သိုလှောင်မှုဒရိုက်ဗာတစ်ခု လိုအပ်သည်။ လောလောဆယ်တွင် Silicon Labs သည် ယာဉ်မောင်းများကို မကမ်းလှမ်းပါ။

မူပိုင်ခွင့် © 2025 Silicon Laboratories မူပိုင်ခွင့်ကိုလက်ဝယ်ထားသည်။

၅/၅

ကျော်view
TPY aa he driver AI ကို typedef sl_usbd_msc_scsi_lun_api_t မှ သတ်မှတ်သည်။ sl_usbd_msc_scsi_lun_api_t v ri ble သည် သင်၏ sl_usbd_msc_scsi_lun_info_t v ri ble, p ssed s rgument ကို sl_usbd_msc_scsi_lun() ဖြင့် dd logic l ယူနစ်တွင် ထည့်သွင်းရပါမည် ဖွဲ့စည်းပုံများဆိုင်ရာ အသေးစိတ်အချက်အလက်များအတွက် USB ကိရိယာ MSC SCSI API အပိုင်းကို ကြည့်ပါ။ သိုလှောင်မှုဒရိုက်ဗာကို အကောင်အထည်ဖော်ခြင်းသည် RAM ရှိ ကဏ္ဍများအခင်းအကျင်းကဲ့သို့ ရိုးရှင်းနိုင်သည်။ ပုံမှန်ကဏ္ဍအရွယ်အစား (ဆိုလိုသည်မှာ ပိတ်ဆို့အရွယ်အစား) သည် အစုလိုက်အပြုံလိုက် သိုလှောင်ကိရိယာများအတွက် 512 ဖြစ်ပြီး CD-ROM များအတွက် 2048 ဖြစ်သည်။

မူပိုင်ခွင့် © 2025 Silicon Laboratories မူပိုင်ခွင့်ကိုလက်ဝယ်ထားသည်။

၅/၅

ကျော်view
ကျော်view
USB ကိရိယာ ရောင်းချသူ အတန်းအစား
USB Device Vendor Class ကျော်သွားပါပြီ။view USB ကိရိယာ ရောင်းချသူ အတန်းအစား အရင်းအမြစ် လိုအပ်ချက်များ Core USB ကိရိယာ ရောင်းချသူ အတန်းအစား ဖွဲ့စည်းမှု USB စက်ပစ္စည်း ရောင်းချသူ အတန်းအစား ပရိုဂရမ်ရေးဆွဲခြင်း လမ်းညွှန် စျေးသည် အတန်းအစား သင့်အား တစ်ဦးတည်းပိုင် ပရိုတိုကောကို အကောင်အထည်ဖော်နိုင်သည့် ရောင်းချသူ-သီးသန့် စက်ပစ္စည်းများကို တည်ဆောက်ခွင့်ပြုသည်။ ၎င်းသည် host နှင့် device အကြား ဒေတာလွှဲပြောင်းရန် အစုလိုက် အဆုံးမှတ်တစ်စုံအပေါ် မူတည်သည်။ အစုလိုက်လွှဲပြောင်းမှုများသည် ဖွဲ့စည်းတည်ဆောက်ပုံမထားသောဒေတာအမြောက်အမြားကို လွှဲပြောင်းရာတွင် အဆင်ပြေပြီး အမှားအယွင်းရှာဖွေတွေ့ရှိခြင်းနှင့် ထပ်စမ်းကြည့်သည့်ယန္တရားကို အသုံးပြုခြင်းဖြင့် ဒေတာဖလှယ်မှုအား ယုံကြည်စိတ်ချရသော ဒေတာဖလှယ်မှုကို ပံ့ပိုးပေးရန်အတွက် အဆင်ပြေပါသည်။ အစုလိုက် အဆုံးမှတ်များအပြင် Vendor အတန်းသည် စိတ်ကြိုက်ရွေးချယ်နိုင်သော ပြတ်တောက်သည့် အဆုံးမှတ်များကို တွဲသုံးနိုင်သည်။ OS တွင် Vendor အတန်းကို ကိုင်တွယ်ရန် Driver ပါရှိပြီး မည်သည့် operating system (OS) မဆို Vendor class နှင့် အလုပ်လုပ်နိုင်သည်။ OS ပေါ်မူတည်၍ ယာဉ်မောင်းသည် ဇာတိ သို့မဟုတ် ရောင်းချသူ-သီးသန့်ဖြစ်နိုင်သည်။ ဥပမာအားဖြင့်၊ Microsoft Windows® အောက်တွင်၊ သင့်အပလီကေးရှင်းသည် ရောင်းချသူစက်ပစ္စည်းနှင့် ဆက်သွယ်ရန်အတွက် Microsoft မှပံ့ပိုးပေးထားသည့် WinUSB ဒရိုက်ဗာနှင့် အပြန်အလှန်အကျိုးသက်ရောက်သည်။
USB Device Vendor Class ကျော်သွားပါပြီ။view
ပုံ – Windows Host နှင့် Vendor Class အကြား အထွေထွေဗိသုကာပုံစံသည် Vendor အတန်းကို အသုံးပြု၍ host နှင့် device အကြား ယေဘူယျဗိသုကာကို ပြသသည်။ ဒီ exampဆိုတော့ host operating system က MS Windows ဖြစ်ပါတယ်။
ပုံ – MS Windows Host နှင့် Vendor Class အကြား အထွေထွေဗိသုကာ

MS Windows ဘက်တွင်၊ အပလီကေးရှင်းသည် USB စာကြည့်တိုက်နှင့် အပြန်အလှန်ဆက်သွယ်ခြင်းဖြင့် ရောင်းချသူစက်ပစ္စည်းနှင့် ဆက်သွယ်သည်။ libusb ကဲ့သို့ စာကြည့်တိုက်များသည် စက်ပစ္စည်းတစ်ခုနှင့် ၎င်း၏ဆက်စပ်ပိုက်များကို စီမံခန့်ခွဲရန်နှင့် ထိန်းချုပ်မှု၊ အစုလိုက်အပုံလိုက်နှင့် အဆုံးအဖြတ်များမှတစ်ဆင့် စက်နှင့် ဆက်သွယ်ရန် API ကို ပေးဆောင်သည်။
စက်ပစ္စည်းဘက်တွင်၊ ရောင်းချသူအတန်းအစားသည် အောက်ပါအဆုံးမှတ်များဖြင့် ဖွဲ့စည်းထားသည်-
ပုံသေ အဆုံးမှတ်ဟု ခေါ်သော IN နှင့် OUT endpoints တစ်စုံ။ အစုလိုက် IN နှင့် OUT အဆုံးမှတ်များ တစ်စုံ။

မူပိုင်ခွင့် © 2025 Silicon Laboratories မူပိုင်ခွင့်ကိုလက်ဝယ်ထားသည်။

၅/၅

ကျော်view

IN နှင့် OUT အဆုံးမှတ်များ ကြားဖြတ် တစ်စုံ။ ဤအတွဲသည် ရွေးချယ်နိုင်သည်။ အောက်ဖော်ပြပါဇယားသည် မတူညီသောအဆုံးအချက်များ၏အသုံးပြုမှုကို ဖော်ပြသည်-
ဇယား – ရောင်းချသူအတန်းအစား အဆုံးမှတ်များ အသုံးပြုမှု

အဆုံးမှတ် ဦးတည်ချက်

ထိန်းချုပ်ပါ။
ထိန်းချုပ်မှု
ထုတ်လိုက်
အစုလိုက်ဝင်

စက်ပစ္စည်း-tohost
> လက်ခံကိရိယာ
စက်ပစ္စည်း-tohost

အစုလိုက်ထုတ်သည်။
ဝင်ရန် နှောင့်ယှက်သည်။
နှောက်ယှက်သည်။
ထုတ်လိုက်

အိမ်ရှင်-ကိရိယာ
စက်ပစ္စည်း-tohost
အိမ်ရှင်-ကိရိယာ

အသုံးပြုမှု
စာရင်းပေးသွင်းခြင်းနှင့် ရောင်းချသူ-သီးသန့်တောင်းဆိုမှုများအတွက် စံတောင်းဆိုမှုများ။
စာရင်းပေးသွင်းခြင်းနှင့် ရောင်းချသူ-သီးသန့်တောင်းဆိုမှုများအတွက် စံတောင်းဆိုမှုများ။
ကုန်ကြမ်းဒေတာဆက်သွယ်ရေး။ သီးသန့် ပရိုတိုကောအရ ဒေတာကို တည်ဆောက်နိုင်သည်။
ကုန်ကြမ်းဒေတာဆက်သွယ်ရေး။ သီးသန့် ပရိုတိုကောအရ ဒေတာကို တည်ဆောက်နိုင်သည်။
ကုန်ကြမ်းဒေတာဆက်သွယ်ရေး သို့မဟုတ် အသိပေးချက်။ သီးသန့် ပရိုတိုကောအရ ဒေတာကို တည်ဆောက်နိုင်သည်။ ကုန်ကြမ်းဒေတာဆက်သွယ်ရေး သို့မဟုတ် အသိပေးချက်။ သီးသန့် ပရိုတိုကောအရ ဒေတာကို တည်ဆောက်နိုင်သည်။

စက်အပလီကေးရှင်းသည် လက်ခံသူထံသို့ ဒေတာပေးပို့ရန် သို့မဟုတ် လက်ခံရန် အစုလိုက်အပြုံလိုက်နှင့် အဆုံးမှတ်များကို ကြားဖြတ်အသုံးပြုနိုင်သည်။ ၎င်းသည် အိမ်ရှင်မှပေးပို့သော ရောင်းချသူ၏ သီးခြားတောင်းဆိုမှုများကို ကုဒ်လုပ်ရန်အတွက် မူရင်းအဆုံးမှတ်ကိုသာ အသုံးပြုနိုင်သည်။ စံတောင်းဆိုမှုများကို Silicon Labs USB ကိရိယာ၏ Core အလွှာက အတွင်းပိုင်းဖြင့် စီမံခန့်ခွဲပါသည်။
USB စက်ပစ္စည်း ရောင်းချသူ အတန်းအစား အရင်းအမြစ် လိုအပ်ချက်များ

လုပ်ဆောင်ချက် sl_usbd_vendor_add_to_configuration() မှတစ်ဆင့် ရောင်းချသူအတန်းအစား စံနမူနာတစ်ခုကို ထည့်သွင်းလိုက်တိုင်း၊ အောက်ပါအရင်းအမြစ်များကို core မှ ခွဲဝေပေးမည်ဖြစ်သည်။

အရင်းအမြစ်
Interfaces Alternate interfaces Endpoints Interface အုပ်စုများ

အရေအတွက်
1 1 2 (4 interrupt endpoints ကို သင်ဖွင့်ထားလျှင်) 0

ထိုနံပါတ်များသည် ဖွဲ့စည်းမှုအလိုက်ဖြစ်ကြောင်း သတိပြုပါ။ သင်၏ SL_USBD_INTERFACE_QUANTITY ၊ SL_USBD_ALT_INTERFACE_QUANTITY ၊ SL_USBD_INTERFACE_GROUP_QUANTITY နှင့် SL_USBD_DESCRIPTOR_QUANTITY ဖွဲ့စည်းမှုတန်ဖိုးများကို စနစ်ထည့်သွင်းသည့်အခါ၊ အတန်းအစား မည်မျှထည့်သွင်းမည်ကို ထည့်သွင်းစဉ်းစားရန် မမေ့ပါနှင့်။ SL_USBD_OPEN_ENDPOINTS_QUANTITY ဖွဲ့စည်းမှုတန်ဖိုးအတွက်၊ အဆုံးမှတ်များကို လက်ခံဆောင်ရွက်ပေးသူမှ စီစဉ်သတ်မှတ်ထားမှသာ ဖွင့်ထားသောကြောင့်၊ အတန်းဥပမာတစ်ခုအတွက် လိုအပ်သော အဆုံးအမှတ်အရေအတွက်ကို ထည့်သွင်းစဉ်းစားရန် လိုအပ်ပါသည်။
USB စက်ပစ္စည်း ရောင်းချသူ အတန်းအစား ဖွဲ့စည်းမှု

Vendor class ကို configure လုပ်ရန် configuration parameters အုပ်စုနှစ်စုကို အသုံးပြုသည်-
USB စက်ပစ္စည်း ရောင်းချသူ အတန်းအစား အပလီကေးရှင်း သီးသန့်ဖွဲ့စည်းပုံများ USB စက်ပစ္စည်း ရောင်းချသူ အတန်းအစား ဆက်စပ်ဖွဲ့စည်းပုံများ
USB စက်ပစ္စည်း ရောင်းချသူ အတန်းအစား အပလီကေးရှင်း-သီးသန့် ဖွဲ့စည်းမှုပုံစံများ
ပထမဦးစွာ၊ Silicon Labs USB စက်ပစ္စည်း Vendor အတန်းအစား module ကိုအသုံးပြုရန်၊ သင့်လျှောက်လွှာလိုအပ်ချက်အရ သတ်မှတ်ထားသော Vendor compile-time configuration ကို ချိန်ညှိပါ။ ၎င်းတို့ကို sl_usbd_core_config.h ခေါင်းစီးအတွင်းတွင် ပြန်လည်စုဖွဲ့ထားသည်။ file ရောင်းချသူအပိုင်းအောက်တွင်။ ပမာဏဖွဲ့စည်းပုံများ ရည်ရွယ်ချက်မှာ USB Vendor objects မည်မျှခွဲဝေပေးမည်အကြောင်း USB စက်ပစ္စည်း module အား အသိပေးရန်ဖြစ်သည်။
အောက်ပါဇယားတွင် configuration တစ်ခုစီ၏ define ကိုဖော်ပြသည်။

မူပိုင်ခွင့် © 2025 Silicon Laboratories မူပိုင်ခွင့်ကိုလက်ဝယ်ထားသည်။

၅/၅

ကျော်view

ဇယား – USB စက်ပစ္စည်း ရောင်းချသူ ဖွဲ့စည်းမှုပုံစံ သတ်မှတ်သည်။

ဖွဲ့စည်းမှုအမည်

ဖော်ပြချက်

မူရင်းတန်ဖိုး

SL_USBD_VENDOR_CLASS_INSTANCE_QUANTITY လုပ်ဆောင်ချက် 2 ခု sl_usbd_vendor_create_instance() သို့ ခေါ်ဆိုခြင်းဖြင့် သင်ခွဲဝေပေးမည့် အတန်းအစား အရေအတွက်။

SL_USBD_VENDOR_CONFIGURATION_QUANTITY ပုံစံဖွဲ့စည်းမှု အရေအတွက်။ ရောင်းချသူအတန်းအစားများကို လုပ်ဆောင်ချက် sl_usbd_vendor_add_to_configuration() သို့ ခေါ်ဆိုခြင်းဖြင့် တစ်ခု သို့မဟုတ် တစ်ခုထက်ပိုသော ဖွဲ့စည်းမှုပုံစံများသို့ 1 ပေါင်းထည့်နိုင်သည်။

USB စက်ပစ္စည်း ရောင်းချသူ အတန်းအစား အင်စတီကျူးရှင်း သတ်မှတ်ချက်များ

ဤကဏ္ဍသည် Vendor အမျိုးအစား ဖြစ်ရပ်များနှင့် ဆက်စပ်သော ဖွဲ့စည်းမှုများအား သတ်မှတ်ပေးပါသည်။
Class Instance ဖန်တီးမှု intr_en ကြားကာလ p_vendor_callbacks
Class Instance ဖန်တီးခြင်း။

အောက်တွင်ဖော်ပြထားသော configuration argument သုံးခုကိုယူသည့် function sl_usbd_vendor_create_instance() ကိုခေါ်ခြင်းဖြင့် Vendor class instance တစ်ခုကိုဖန်တီးခြင်းဖြင့် လုပ်ဆောင်ပါသည်။

intr_en
နှောက်ယှက်သည့် အဆုံးမှတ်တစ်စုံကို ထည့်သင့်သည် သို့မဟုတ် မထည့်သင့်ကြောင်း ဖော်ပြသော Boolean။

တန်ဖိုး
true false

ဖော်ပြချက်
IN/OUT endpoints တစ်စုံကို ပေါင်းထည့်မည်ဖြစ်ပြီး ထည့်သွင်းထားသော အပလီကေးရှင်းတွင် ရနိုင်စေမည်ဖြစ်သည်။ အနှောက်အယှက်အဆုံးမှတ်ကို ထည့်မည်မဟုတ်ပါ။ Bulk IN/OUT endpoint တစ်စုံသာ ရနိုင်ပါမည်။

ကြားကာလ
အကယ်၍ သင်သည် intr_en ကို အမှန်ဟု သတ်မှတ်ပါက၊ ကြားဖြတ် အဆုံးမှတ်များ ကောက်ယူမှု ကြားကာလ (မီလီစက္ကန့်အတွင်း) ကို သင် သတ်မှတ်နိုင်ပါသည်။ intr_en ကို false ဟု သတ်မှတ်ပါက၊ class မှ လျစ်လျူရှုထားသောကြောင့် ကြားကာလကို 0 သို့ သတ်မှတ်နိုင်ပါသည်။
p_vendor_callbacks
p_vendor_callbacks သည် callback လုပ်ဆောင်ချက်များ တည်ဆောက်ပုံ ပြောင်းလဲနိုင်သော ညွှန်ပြချက်တစ်ခုဖြစ်သည်။ အတန်းအလိုက် ထိန်းချုပ်မှုတောင်းဆိုချက်များကို ကိုင်တွယ်ရန် သင်သတ်မှတ်နိုင်သည်။ အကယ်၍ သင်သည် မည်သည့်အတန်းအတွက်မဆို သီးခြားတောင်းဆိုမှုများ သို့မဟုတ် အကြောင်းကြားချက်ကို ဖွင့်ရန်/ပိတ်ရန် လိုအပ်ပါက၊ ၎င်းကို NULL ဟု သတ်မှတ်နိုင်သည်။
ရည်းစားဟောင်းample အောက်တွင် သင့်အတန်း၏ သီးခြားတောင်းဆိုချက်များကို ကိုင်တွယ်သူ၏ မျှော်လင့်ထားသော လက်မှတ်ကို ပေးဆောင်ပါသည်။
Example – Class-Specific Request Function ၏ လက်မှတ်

app_usbd_vendor_req_handle(uint8_t

class_nbr၊ (၁)၊

const sl_usbd_setup_req_t *p_setup_req); (၂)

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

(၁) Vendor class instance နံပါတ်။

မူပိုင်ခွင့် © 2025 Silicon Laboratories မူပိုင်ခွင့်ကိုလက်ဝယ်ထားသည်။

၅/၅

ကျော်view

(၂) လက်ခံရရှိထားသော စနစ်ထည့်သွင်းရန် တောင်းဆိုချက်ကို ညွှန်ပြပါ။
USB စက်ပစ္စည်း ရောင်းချသူ အတန်းအစား ပရိုဂရမ်းမင်းလမ်းညွှန်
ဤအပိုင်းတွင် Vendor အတန်းကို အသုံးပြုပုံကို ရှင်းပြထားသည်။ USB Device Vendor Class ကို စတင်ခြင်း USB Device Vendor Class Instance ကို သင့် Device သို့ USB Device Vendor Class ကို အသုံးပြု၍ ဆက်သွယ်ခြင်း
USB Device Vendor Class ကို စတင်နေပါသည်။
သင့်စက်တွင် Vendor Class လုပ်ဆောင်ချက်ကို ထည့်သွင်းရန်၊ USBD_Vendor_Init() လုပ်ဆောင်ချက်ကို ခေါ်ခြင်းဖြင့် အတန်းကို စတင်ပါ။ ရည်းစားဟောင်းampsl_usbd_vendor_init() ကို မည်သို့ခေါ်ဆိုရမည်ကို အောက်တွင်ဖော်ပြထားသည်။
Example – sl_usbd_vendor_init() ကို ခေါ်နေသည်

sl_status_t အခြေအနေ၊
အခြေအနေ = sl_usbd_vendor_init(); အကယ်၍ (အခြေအနေ ! SL_STATUS_OK) { /* အမှားအယွင်းတစ်ခု ဖြစ်ပေါ်ခဲ့သည်။ ကိုင်တွယ်မှု အမှားအယွင်းကို ဤနေရာတွင် ထည့်သွင်းသင့်သည်။ */ }
USB Device Vendor Class Instance ကို သင့်စက်ပစ္စည်းသို့ ပေါင်းထည့်ခြင်း။
သင့်စက်ပစ္စည်းသို့ ရောင်းချသူအတန်းအစား လုပ်ဆောင်နိုင်စွမ်းကို ထည့်သွင်းရန်၊ သင်သည် ဦးစွာ စံနမူနာတစ်ခုကို ဖန်တီးရမည်ဖြစ်ပြီး ၎င်းကို သင့်စက်ပစ္စည်း၏ ဖွဲ့စည်းမှုပုံစံ(များ) တွင် ထည့်သွင်းရပါမည်။
Vendor Class Instance ဖန်တီးခြင်း Vendor Class Instance ကို သင့်စက်၏ဖွဲ့စည်းပုံ(များ) တွင် ထည့်သွင်းခြင်း
Vendor Class Instance ဖန်တီးခြင်း။
လုပ်ဆောင်ချက် sl_usbd_vendor_create_instance() ကိုခေါ်ဆိုခြင်းဖြင့် Vendor class instance တစ်ခုကို ဖန်တီးပါ။ ရည်းစားဟောင်းampပုံသေအငြင်းအခုံများကိုအသုံးပြု၍ sl_usbd_vendor_create_instance() ကို မည်သို့ခေါ်ဆိုရမည်ကို အောက်တွင်ဖော်ပြထားသည်။ sl_usbd_vendor_create_instance() သို့ ပေးပို့ရန် စီစဉ်သတ်မှတ်မှုဆိုင်ရာ အကြောင်းပြချက်များနှင့် ပတ်သက်သော နောက်ထပ်အချက်အလက်များအတွက်၊ USB စက်ပစ္စည်း ရောင်းချသူ အတန်းအစား အင်စတီကျူးရှင်း သတ်မှတ်ချက်များကို ကြည့်ပါ။
Example – sl_usbd_vendor_create_instance() ကို ခေါ်သည်

uint8_t class_nbr; sl_status_t အခြေအနေ၊

status = sl_usbd_vendor_create_instance(false၊

(၄)

0u၊

(၄)

app_usbd_vendor_callback_functions၊ (၃)

&class_nbr);

အကယ်၍ (အခြေအနေ ! SL_STATUS_OK) {

/* အမှားအယွင်းတစ်ခု ဖြစ်ပွားခဲ့သည်။ ကိုင်တွယ်မှု အမှားအယွင်းကို ဤနေရာတွင် ထည့်သွင်းသင့်သည်။ */

}

(၁) ဤအတန်းအစား စံနမူနာဖြင့် အနှောင့်အယှက် အဆုံးမှတ်များ မရှိပါ။ (2) Interrupt endpoints များကိုပိတ်ထားသောကြောင့် ကြားကာလကို လျစ်လျူရှုထားသည်။

မူပိုင်ခွင့် © 2025 Silicon Laboratories မူပိုင်ခွင့်ကိုလက်ဝယ်ထားသည်။

၅/၅

ကျော်view

(၃) ရောင်းချသူ-သတ်သတ်မှတ်မှတ် လူတန်းစား တောင်းဆိုချက်များကို ကိုင်တွယ်သည့် သင့်အပလီကေးရှင်း၏ တစ်စိတ်တစ်ပိုင်းဖြစ်သည့် Callback လုပ်ဆောင်ချက်။ နောက်ထပ်အချက်အလက်များအတွက် USB Device Vendor Class ကိုအသုံးပြု၍ ဆက်သွယ်ခြင်းကို ကြည့်ပါ။ Vendor Class Instance ကို သင့် Device's Configuration(များ) တွင် ထည့်သွင်းခြင်းဖြင့် သင်သည် ရောင်းချသူ အတန်းအစား စံနမူနာတစ်ခုကို ဖန်တီးပြီးနောက်၊ USBD_Vendor_ConfigAdd() ကိုခေါ်ဆိုခြင်းဖြင့် ၎င်းကို ဖွဲ့စည်းမှုတစ်ခုသို့ ထည့်သွင်းနိုင်ပါသည်။ ရည်းစားဟောင်းampပုံသေအငြင်းအခုံများကိုအသုံးပြု၍ sl_usbd_vendor_add_to_configuration() ကို မည်သို့ခေါ်ဆိုရမည်ကို အောက်တွင်ဖော်ပြထားသည်။
Example – sl_usbd_vendor_add_to_configuration() ကိုခေါ်ဆိုနေသည်

sl_status_t အခြေအနေ၊

အခြေအနေ = sl_usbd_vendor_add_to_configuration(class_nbr၊

(၄)

config_nbr_fs);

(၄)

အကယ်၍ (အခြေအနေ ! SL_STATUS_OK) {

/* အမှားအယွင်းတစ်ခု ဖြစ်ပွားခဲ့သည်။ ကိုင်တွယ်မှု အမှားအယွင်းကို ဤနေရာတွင် ထည့်သွင်းသင့်သည်။ */

}

(1) sl_usbd_vendor_create_instance() မှ ပြန်ပေးသော ဖွဲ့စည်းမှုသို့ ထည့်ရန် အတန်းနံပါတ်။ (၂) Configuration နံပါတ် (ဤနေရာတွင် ၎င်းကို Full-Speed ​​configuration တွင် ထည့်ထားသည်)။
USB Device Vendor Class ကို အသုံးပြု၍ ဆက်သွယ်ခြင်း။
General Synchronous Communication Asynchronous Communication Vendor Request General စျေးရောင်းသူအတန်းအစားသည် အိမ်ရှင်နှင့် ဆက်သွယ်ရန်အတွက် အောက်ပါလုပ်ဆောင်ချက်များကို ပေးဆောင်ပါသည်။ လုပ်ဆောင်ချက်၏ ကန့်သတ်ချက်များအကြောင်း နောက်ထပ်အသေးစိတ်အချက်အလက်များအတွက် USB စက်ပစ္စည်းရောင်းချသူ API ကို ကြည့်ပါ။
ဇယား – ရောင်းချသူ ဆက်သွယ်ရေး API အနှစ်ချုပ်

လုပ်ဆောင်ချက်အမည်
sl_usb d _v e nd o r_ re ad _b ulk_sy nc() sl_usb d _v e nd o r_write _b ulk_sy nc() sl_usb d _v e nd o r_ re ad _b ulk_sus _ nd ( d ) nd r_write _b ulk_asy nc() sl_usb d _v e nd o r_ re ad _inte rrup t_sy nc() sl_usb d _v e nd o r_write _inte rrup t_sy nc() sl_usb r nd re up _ d in t_asy nc
()
sl_usb d _v e nd o r_write _inte rrup t_asy nc
()

လုပ်ဆောင်ချက်သည် အစုလိုက် OUT endpoint မှတဆင့် host ထံမှ ဒေတာကို လက်ခံသည်။ ဤလုပ်ဆောင်ချက်သည် ပိတ်ဆို့နေသည်။ အစုလိုက် IN endpoint မှတဆင့် host သို့ ဒေတာ ပို့သည် ။ ဤလုပ်ဆောင်ချက်သည် ပိတ်ဆို့နေသည်။ OUT endpoint မှတဆင့် host ထံမှ ဒေတာကို လက်ခံရရှိသည် ။ ဤလုပ်ဆောင်ချက်သည် ပိတ်ဆို့ခြင်းမဟုတ်ပါ။ အစုလိုက် IN endpoint မှတဆင့် host သို့ ဒေတာ ပို့သည် ။ ဤလုပ်ဆောင်ချက်သည် ပိတ်ဆို့ခြင်းမဟုတ်ပါ။ Interrupt OUT endpoint မှတဆင့် host ထံမှ ဒေတာကို လက်ခံရရှိသည် ။ ဤလုပ်ဆောင်ချက်သည် ပိတ်ဆို့နေသည်။ Interrupt IN endpoint မှတဆင့် host သို့ ဒေတာပေးပို့သည်။ ဤလုပ်ဆောင်ချက်သည် ပိတ်ဆို့နေသည်။ Interrupt OUT endpoint မှတဆင့် host ထံမှ ဒေတာကို လက်ခံရရှိသည် ။ ဤလုပ်ဆောင်ချက်သည်-
ပိတ်ဆို့ခြင်း။
Interrupt IN endpoint မှတဆင့် host သို့ ဒေတာပေးပို့သည်။ ဤလုပ်ဆောင်ချက်သည် ပိတ်ဆို့ခြင်းမဟုတ်ပါ။

ရောင်းချသူတောင်းဆိုမှုများသည် အိမ်ရှင်နှင့် ဆက်သွယ်ရန် အခြားနည်းလမ်းတစ်ခုလည်းဖြစ်သည်။ အိမ်ရှင်မှ ပေးပို့သော ရောင်းချသူ တောင်းဆိုချက်များကို စီမံခန့်ခွဲသည့်အခါ၊ အပလီကေးရှင်းသည် ထိန်းချုပ်မှု အဆုံးမှတ်ကို အသုံးပြု၍ လက်ခံ သို့မဟုတ် လက်ခံသူထံမှ ဒေတာ လက်ခံ သို့မဟုတ် ပေးပို့နိုင်သည်။ sl_usbd_vendor_create_instance() ၏ ကန့်သတ်ဘောင်တစ်ခုအဖြစ် ဖြတ်သွားသော အပလီကေးရှင်းကို ပြန်ခေါ်ရန် လိုအပ်သည်။ synchronous ဆက်သွယ်ရေး

မူပိုင်ခွင့် © 2025 Silicon Laboratories မူပိုင်ခွင့်ကိုလက်ဝယ်ထားသည်။

၅/၅

ကျော်view

synchronous communication ဆိုသည်မှာ လွှဲပြောင်းခြင်းကို ပိတ်ဆို့ခြင်း ဖြစ်သည်။ လုပ်ဆောင်ချက်တစ်ခုကို ခေါ်သောအခါ၊ လွှဲပြောင်းမှု အမှားအယွင်းမရှိဘဲ သို့မဟုတ် မပြီးမချင်း အပလီကေးရှင်းက ပိတ်ဆို့သည်။ ထာဝစဉ်စောင့်ဆိုင်းခြင်းကို ရှောင်ရှားရန် အချိန်ကုန်သွားနိုင်သည်။ ရည်းစားဟောင်းampအောက်တွင် le သည် အစုလိုက် OUT endpoint ကို အသုံးပြု၍ host ထံမှ ဒေတာများကို လက်ခံရရှိသည့် read and write တစ်ခုကို ပြသပြီး bulk IN endpoint ကို အသုံးပြု၍ host သို့ data ပေးပို့ပါသည်။
Example – Synchronous အစုလိုက် ဖတ်ရှုပြီး ရေးပါ။

__ALIGNED(4) uint8_t rx_buf[2];

__ALIGNED(4) uint8_t tx_buf[2];

uint32_t

xfer_len;

sl_status_t

အဆင့်အတန်း;

အခြေအနေ = sl_usbd_vendor_read_bulk_sync(class_nbr၊

(၄)

(ပျက်ပြယ် *)&rx_buf[0]၊

(၄)

2u၊

0u၊

(၄)

&xfer_len);

အကယ်၍ (အခြေအနေ ! SL_STATUS_OK) {

/* $$$$ အမှားကို ကိုင်တွယ်ပါ။ */

}

အခြေအနေ = sl_usbd_vendor_write_bulk_sync( class_nbr၊

(၄)

(ပျက်ပြယ် *)&tx_buf[0]၊

(၄)

2u၊

0u၊

(၄)

အတုအယောင်၊

(၄)

&xfer_len);

အကယ်၍ (အခြေအနေ ! SL_STATUS_OK) {

/* $$$$ အမှားကို ကိုင်တွယ်ပါ။ */

}

(1) sl_usbd_vendor_create_instance() ဖြင့် ဖန်တီးထားသော အတန်းအစား နံပါတ်သည် သင့်လျော်သော အစုလိုက် OUT သို့မဟုတ် IN အဆုံးမှတ်သို့ လွှဲပြောင်းလွှဲပြောင်းမှုကို လမ်းကြောင်းပေးရန်အတွက် စျေးသည်အတန်းအား အတွင်းပိုင်းကိုးကားချက် ပေးပါသည်။
(၂) အပလီကေးရှင်းသည် ဒေတာအားလုံးကို လိုက်လျောညီထွေဖြစ်စေရန်အတွက် လုပ်ဆောင်ပေးထားသည့် ကြားခံကြားခံသည် ကြီးမားကြောင်း သေချာစေရမည်။ မဟုတ်ပါက ထပ်တူပြုခြင်း ပြဿနာများ ဖြစ်ပေါ်လာနိုင်သည်။
(၃) အကန့်အသတ်မရှိ ပိတ်ဆို့ခြင်းအခြေအနေကို ရှောင်ရှားနိုင်ရန်၊ မီလီစက္ကန့်အတွင်း ဖော်ပြသည့် အချိန်ကုန်ဆုံးမှုကို သတ်မှတ်နိုင်သည်။ 809 တန်ဖိုးသည် အပလီကေးရှင်းလုပ်ငန်းကို ထာဝရစောင့်စေသည်။
(4) အပလီကေးရှင်းသည် ကနဦးထုတ်လွှတ်မှုကြားခံကို ထောက်ပံ့ပေးသည်။
(5) အကယ်၍ ဤအလံသည် မှန်ကန်သည်ဟု သတ်မှတ်ထားပြီး လွှဲပြောင်းမှုအရှည်သည် အဆုံးမှတ်အများဆုံး ပက်ကတ်အရွယ်အစား၏ များပြားပါက၊ လွှဲပြောင်းမှုပြီးဆုံးကြောင်း အချက်ပြရန်အတွက် စက်စတက်ခ်သည် လွှဲပြောင်းမှုပြီးဆုံးကြောင်း အချက်ပြရန် လက်ခံသူထံ သုည-အရှည် ပက်ကတ်ကို ပေးပို့မည်ဖြစ်သည်။
ကြားဖြတ် endpoint ဆက်သွယ်မှုလုပ်ဆောင်ချက်များ၊ sl_usbd_vendor_read_interrupt_sync() နှင့် sl_usbd_vendor_write_interrupt_sync() ကိုအသုံးပြုခြင်းသည် Ex တွင်ဖော်ပြထားသော အစုအဝေးအဆုံးမှတ်ဆက်သွယ်ရေးလုပ်ဆောင်ချက်များနှင့် ဆင်တူသည်။ample – Synchronous အစုလိုက် ဖတ်ရှုပြီး ရေးပါ။
Asynchronous ဆက်သွယ်ရေး
Asynchronous ဆက်သွယ်ရေးဆိုသည်မှာ လွှဲပြောင်းခြင်းအား ပိတ်ဆို့ခြင်းမဟုတ်ဟု ဆိုလိုသည်။ လုပ်ဆောင်ချက်တစ်ခုကို ခေါ်သောအခါ၊ အပလီကေးရှင်းသည် လွှဲပြောင်းအချက်အလက်များကို device stack သို့ပေးပို့ပြီး ပိတ်ဆို့မည်မဟုတ်ပါ။ USB ဘတ်စ်ပေါ်တွင် လွှဲပြောင်းမှု လုပ်ဆောင်နေချိန်တွင် အခြားသော အပလီကေးရှင်းများ လုပ်ဆောင်ခြင်းကို လုပ်ဆောင်နိုင်သည်။ လွှဲပြောင်းမှုပြီးသည်နှင့်၊ လွှဲပြောင်းမှုပြီးစီးမှုနှင့်ပတ်သက်ပြီး အပလီကေးရှင်းအား အကြောင်းကြားရန် စက်စတက်မှ ပြန်ခေါ်သည့်လုပ်ဆောင်ချက်ကို ခေါ်သည်။ ရည်းစားဟောင်းample အောက်တွင် တစ်ချိန်တည်း တစ်ပြိုင်တည်း ဖတ်ရှု ရေးနိုင်သည်ကို ပြသည်။
Example – Asynchronous အစုလိုက် ဖတ်ရှုပြီး ရေးပါ။

မူပိုင်ခွင့် © 2025 Silicon Laboratories မူပိုင်ခွင့်ကိုလက်ဝယ်ထားသည်။

၅/၅

ကျော်view

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

အဆင့်အတန်း;

အခြေအနေ = sl_usbd_vendor_read_bulk_async(class_nbr၊

(ပျက်ပြယ် *)&rx_buf[0]၊

(၄)

2u၊

app_usbd_vendor_rx_ပြီးပါပြီ၊

NULL);

(၄)

အကယ်၍ (အခြေအနေ ! SL_STATUS_OK) {

/* $$$$ အမှားကို ကိုင်တွယ်ပါ။ */

}

အခြေအနေ = sl_usbd_vendor_write_bulk_async(class_nbr၊

(ပျက်ပြယ် *)&tx_buf[0]၊

(၄)

2u၊

app_usbd_vendor_tx_ပြီးပါပြီ၊

null

(၄)

မှား);

(၄)

အကယ်၍ (အခြေအနေ ! SL_STATUS_OK) {

/* $$$$ အမှားကို ကိုင်တွယ်ပါ။ */

}

}

(၀.၃၀၀) (၀.၀)၊
(၀.၃၀၀) (၀.၀)၊

static void app_usbd_vendor_rx_completed(uint8_t class_nbr၊

(၄)

ပျက်ပြယ် *p_buf၊

uint32_t buf_len၊

uint32_t xfer_len၊

*p_callback_arg ပျက်ပြယ်၊

sl_status_t အခြေအနေ)

{

အကယ်၍ (အခြေအနေ ! SL_STATUS_OK) {

/* $$$$ စီမံဆောင်ရွက်ချက်အချို့လုပ်ပါ။ */

} အခြား {

/* $$$$ အမှားကို ကိုင်တွယ်ပါ။ */

}

}

static void app_usbd_vendor_tx_completed(uint8_t class_nbr၊

(၄)

ပျက်ပြယ် *p_buf၊

uint32_t buf_len၊

uint32_t xfer_len၊

*p_callback_arg ပျက်ပြယ်၊

sl_status_t အခြေအနေ)

{

အကယ်၍ (အခြေအနေ ! SL_STATUS_OK) {

/* $$$$ စီမံဆောင်ရွက်ချက်အချို့လုပ်ပါ။ */

} အခြား {

/* $$$$ အမှားကို ကိုင်တွယ်ပါ။ */

}

}

(1) class instance number သည် သင့်လျော်သော အမြောက်အများ OUT သို့မဟုတ် IN endpoint သို့ လွှဲပြောင်းမှုကို လမ်းကြောင်းပေးရန်အတွက် စျေးရောင်းလူတန်းစားအား အတွင်းပိုင်းကိုးကားချက်ပေးပါသည်။ (၂) အပလီကေးရှင်းသည် ဒေတာအားလုံးကို လိုက်လျောညီထွေဖြစ်စေရန် ပံ့ပိုးပေးထားသည့် ကြားခံသည် ကြီးမားကြောင်း သေချာစေရမည်။ မဟုတ်ပါက၊ ထပ်တူပြုခြင်း ပြဿနာများရှိနိုင်သည်။ (၃) အပလီကေးရှင်းသည် ကန့်သတ်ဘောင်တစ်ခုအဖြစ် ဖြတ်သန်းသွားသော ပြန်လည်ခေါ်ဆိုမှုလုပ်ဆောင်ချက်ကို ညွှန်ပြပေးသည်။ လွှဲပြောင်းမှု ပြီးမြောက်သောအခါ၊ စက်ပစ္စည်း stack သည် လွှဲပြောင်းမှုရလဒ်ကို ပိုင်းခြားစိတ်ဖြာခြင်းဖြင့် အပလီကေးရှင်းမှ လွှဲပြောင်းမှုကို အပြီးသတ်နိုင်စေရန် ဤခေါ်ဆိုမှုလုပ်ဆောင်ချက်ကို ခေါ်ဆိုပါသည်။ ဥပမာအားဖြင့်၊ ဖတ်ရှုခြင်းလုပ်ဆောင်မှုတစ်ခုပြီးမြောက်သောအခါ၊ အပလီကေးရှင်းသည် လက်ခံရရှိသည့်ဒေတာကို စီမံဆောင်ရွက်ပေးနိုင်သည်။ ရေးပြီးသည်နှင့်၊ အပလီကေးရှင်းသည် စာရေးခြင်းအောင်မြင်ခြင်း ရှိ၊ မရှိနှင့် ဘိုက်မည်မျှ ပေးပို့ခဲ့သည်ကို ဖော်ပြနိုင်သည်။

မူပိုင်ခွင့် © 2025 Silicon Laboratories မူပိုင်ခွင့်ကိုလက်ဝယ်ထားသည်။

၅/၅

ကျော်view
(၄) ပြန်ခေါ်ခြင်းနှင့် ဆက်စပ်သည့် အကြောင်းပြချက်တစ်ခုကိုလည်း ကျော်ဖြတ်နိုင်သည်။ ထို့နောက် ဖုန်းခေါ်ဆိုမှုအခြေအနေတွင်၊ အချို့သော ကိုယ်ရေးကိုယ်တာအချက်အလက်များကို ပြန်လည်ရယူနိုင်သည်။ (5) အပလီကေးရှင်းသည် ကနဦးထုတ်လွှတ်မှုကြားခံကို ထောက်ပံ့ပေးသည်။ (6) အကယ်၍ ဤအလံသည် မှန်ကန်သည်ဟု သတ်မှတ်ထားပြီး လွှဲပြောင်းမှု အရှည်သည် အဆုံးမှတ်အများဆုံး ပက်ကတ်အရွယ်အစား၏ များပြားပါက၊ လွှဲပြောင်းမှုပြီးဆုံးကြောင်း အချက်ပြရန်အတွက် စက်စတက်ခ်သည် လွှဲပြောင်းမှုပြီးဆုံးကြောင်း အချက်ပြရန် လက်ခံသူထံ သုညအလျား ပက်ကတ်ကို ပေးပို့မည်ဖြစ်သည်။ ကြားဖြတ် endpoint ဆက်သွယ်မှုလုပ်ဆောင်ချက်များ၊ sl_usbd_vendor_read_interrupt_async() နှင့် sl_usbd_vendor_write_interrupt_async() ကိုအသုံးပြုခြင်းသည် Ex တွင်ပြသထားသည့် အစုအဝေးအဆုံးမှတ်ဆက်သွယ်ရေးလုပ်ဆောင်ချက်များနှင့် ဆင်တူသည်။ample Asynchronous အစုလိုက် ဖတ်ရှုပြီး ရေးပါ။
ရောင်းချသူ တောင်းဆိုချက်
USB 2.0 သတ်မှတ်ချက်သည် တောင်းဆိုမှု အမျိုးအစားသုံးမျိုး သတ်မှတ်ထားသည်- စံ၊ အတန်းနှင့် ရောင်းချသူ။ အတန်းတောင်းဆိုမှုများကို သင့်လျော်သောဆက်စပ်အတန်းမှ စီမံခန့်ခွဲသော်လည်း စံတောင်းဆိုချက်အားလုံးကို core အလွှာမှ တိုက်ရိုက်ကိုင်တွယ်ပါသည်။ ရောင်းချသူ တောင်းဆိုချက်များကို ရောင်းချသူ လူတန်းစားက လုပ်ဆောင်နိုင်ပါသည်။ ရောင်းချသူ တောင်းဆိုချက်များကို လုပ်ဆောင်ရန်၊ သင်သည် sl_usbd_vendor_create_instance() ၏ ဘောင်တစ်ခုအဖြစ် အပလီကေးရှင်းပြန်ခေါ်ခြင်းကို ပေးရပါမည်။ ရောင်းချသူ တောင်းဆိုချက်ကို USB စက်ပစ္စည်းမှ လက်ခံရရှိပြီးနောက်၊ ၎င်းကို မှန်ကန်စွာ ကုဒ်နံပါတ်တပ်ရပါမည်။ ရည်းစားဟောင်းample အောက်တွင် စျေးရောင်းသူ တောင်းဆိုချက်ကို ကုဒ်လုပ်ခြင်း ပြထားသည်။ အချို့သော တောင်းဆိုချက်များသည် ဒေတာများအတွင်း လက်ခံရရှိရန် သို့မဟုတ် လက်ခံရန် လိုအပ်နိုင်သည်။tage ထိန်းချုပ်မှုတစ်ခု၏လွှဲပြောင်း။ data မရှိရင် stage ပါရှိပါသည်၊ သင်သည် Setup packet ကို decode လုပ်ရန်သာလိုသည်။ ဒီ example သည် data အမျိုးအစားသုံးမျိုးကိုပြသသည်။tage စီမံခန့်ခွဲမှု- ဒေတာမရှိပါ၊ ဒေတာထုတ်ခြင်းနှင့် ဒေတာ IN။
Example – ရောင်းချသူ တောင်းဆိုချက်ကို ကုဒ်ဆွဲခြင်း။

မူပိုင်ခွင့် © 2025 Silicon Laboratories မူပိုင်ခွင့်ကိုလက်ဝယ်ထားသည်။

၅/၅

ကျော်view

#APP_VENDOR_REQ_NO_DATA သတ်မှတ်ပါ။

0x01u

#define APP_VENDOR_REQ_RECEIVE_DATA_FROM_HOST 0x02u

#APP_VENDOR_REQ_SEND_DATA_TO_HOST 0x03u ကို သတ်မှတ်ရန်

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

(၄)

{

bool တရားဝင်;

sl_status_t အခြေအနေ၊

uint16_t req_len;

uint32_t xfer_len;

(ပျက်ပြယ်) class_nbr;

switch(p_setup_req->bRequest) { case APP_VENDOR_REQ_NO_DATA- valid = true; ချိုး;

(၀.၃၀၀) (၀.၀)၊

အမှုကိစ္စ APP_VENDOR_REQ_RECEIVE_DATA_FROM_HOST-

(၄)

req_len = p_setup_req->wLength;

အကယ်၍ (req_len > APP_VENDOR_REQ_DATA_BUF_SIZE) {

// အချက်အလက်လက်ခံရန် အခန်းမလုံလောက်ပါ။

return (false);

}

// Control OUT EP မှတစ်ဆင့် ဒေတာလက်ခံရယူပါ။ // လွှဲပြောင်းမှုပြီးစီးမှုကို ထာဝရစောင့်ပါ။ အခြေအနေ = sl_usbd_core_read_control_sync((void *)&app_vendor_req_buf[0u]၊
req_len၊ 0u၊ &xfer_len); အကယ်၍ (အခြေအနေ ! SL_STATUS_OK) { valid = false; } else { မှန်ကန်မှု = မှန်သည်၊ } ချိုး;

အမှုကိစ္စ APP_VENDOR_REQ_SEND_DATA_TO_HOST-

(၄)

req_len = APP_VENDOR_REQ_DATA_BUF_SIZE;

// ပုံစံတစ်ခုဖြင့် buf ကိုဖြည့်ပါ။ Mem_Set((ပျက်ပြယ် *)&AppVendorReqBuf[0u]၊
'A'၊
req_len);

// ထိန်းချုပ်မှု EP မှတစ်ဆင့် ဒေတာပေးပို့ပါ။ // လွှဲပြောင်းမှုပြီးစီးမှုကို ထာဝရစောင့်ပါ။ အခြေအနေ = sl_usbd_core_write_control_sync((void *)&app_vendor_req_buf[0u]၊
req_len၊ 0u၊ false၊ &xfer_len); အကယ်၍ (အခြေအနေ ! SL_STATUS_OK) { valid = DEF_FAIL; } else { မှန်ကန်မှု = DEF_OK; } ချိုး;

မူရင်း-

(၄)

// တောင်းဆိုမှုကို မပံ့ပိုးပါ။

မူပိုင်ခွင့် © 2025 Silicon Laboratories မူပိုင်ခွင့်ကိုလက်ဝယ်ထားသည်။

၅/၅

ကျော်view

မှန်ကန်သော =true;break;
အမှုကိစ္စ APP_VENDOR_REQ_RECEIVE_DATA_FROM_HOST:(4) req_len = p_setup_req->wLength;if(req_len > APP_VENDOR_REQ_DATA_BUF_SIZE){// data.return(false);}// ထိန်းချုပ်မှု OUT မှတဆင့် ဒေတာကို လွှဲပြောင်းရန် အမြဲစောင့်ပါ။ အခြေအနေ =sl_usbd_core_read_control_sync((ပျက်ပြယ် *)&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;// ပုံစံတစ်ခုဖြင့် buf ဖြည့်ပါ။Mem_Set((void *)&AppVendorReqBuf[0u],'A'၊
req_len);// Control IN EP.// ဒေတာပေးပို့ခြင်း လွှဲပြောင်းခြင်းပြီးဆုံးခြင်းအား ထာဝရစောင့်ပါ။ အခြေအနေ =sl_usbd_core_write_control_sync((ပျက်ပြယ် *)&app_vendor_req_buf[0u]၊
req_len,0u,false,&xfer_len);if(status ! SL_STATUS_OK){ valid = DEF_FAIL;}else{ valid = DEF_OK;}break;
မူရင်း-(6)// တောင်းဆိုမှုကို မပံ့ပိုးပါ။ valid = DEF_FAIL;break;}return(valid);}

(1) core သည် Setup packet အကြောင်းအရာကို သင်၏ application သို့ ပေးပို့မည်ဖြစ်ပါသည်။ sl_usbd_setup_req_t ဖွဲ့စည်းပုံတွင် USB 2.0 သတ်မှတ်ချက်မှ သတ်မှတ်ထားသည့် တူညီသောအကွက်များပါရှိသည် (အသေးစိတ်အချက်အလက်များအတွက် သတ်မှတ်ချက်၏ အပိုင်း "9.3 USB ကိရိယာတောင်းဆိုမှုများ" ကို ကိုးကားပါ-

typedef struct {

uint8_t bmRequestType; /* တောင်းဆိုမှု၏လက္ခဏာများ။

*/

uint8_t bRequest; /* သီးခြားတောင်းဆိုချက်။

*/

uint16_t wValue; /* တောင်းဆိုမှုအရ ကွဲပြားသည်။

*/

uint16_t wIndex; /* တောင်းဆိုချက်အရ ကွဲပြားသည်။ အများအားဖြင့် အညွှန်းအဖြစ် သုံးသည်။*/

uint16_t wLength; /* ဒေတာရှိပါက အရှည်ကို လွှဲပြောင်းပါ။tagပစ္စုပ္ပန်

*/

} sl_usbd_setup_req_t;

(၂) တောင်းဆိုချက်ကို သတ်မှတ်ပါ။ မတူညီသော တောင်းဆိုမှုများကို သင်အသုံးပြုနေပါက switch statement ကိုသုံးနိုင်သည်။ ဒီ example၊ data အမျိုးအစားသုံးမျိုးနှင့် သက်ဆိုင်သော မတူညီသော တောင်းဆိုမှု သုံးခုရှိပါသည်။tage- APP_VENDOR_REQ_NO_DATA၊ APP_VENDOR_REQ_RECEIVE_DATA_FROM_HOST နှင့် APP_VENDOR_REQ_SEND_DATA_TO_HOST။
(၃) ဒေတာမရှိလျှင် ၎tage ရှိသည်၊ သင်သည် အခြားနယ်ပယ်များကို ကုဒ်လုပ်ရန်သာ လိုအပ်သည်။ ဒေစီ ၎tage သို့မဟုတ် not ကို အကွက် wLength သည် null မဟုတ် သို့မဟုတ် null ဖြစ်ခြင်းကို ဖော်ပြသည်။
(4) အကယ်၍ လက်ခံသူသည် စက်ပစ္စည်းသို့ ဒေတာပေးပို့ပါက၊ သင်သည် လုပ်ဆောင်ချက် sl_usbd_core_read_control_sync() ကို ခေါ်ရပါမည်။ ပေးထားသည့်ကြားခံသည် wLength bytes အထိ ပါဝင်နိုင်သင့်သည်။ အမှားအယွင်းတစ်စုံတစ်ရာ ဖြစ်ပေါ်ပါက၊ အခြေအနေကို ရပ်တန့်စေမည့် core သို့ false ပြန်ပို့ပါ။tage သည် တောင်းဆိုချက်ကို လုပ်ဆောင်၍မရကြောင်း အိမ်ရှင်အား ညွှန်ပြသော ထိန်းချုပ်လွှဲပြောင်းမှု၏ e။ အောင်မြင်ရင် true ပြန်ပေးတယ်။
(5) အကယ်၍ လက်ခံသူသည် စက်မှ ဒေတာကို လက်ခံရရှိပါက၊ သင်သည် လုပ်ဆောင်ချက် sl_usbd_core_write_control_sync() ကို ခေါ်ရပါမည်။ အမှားအယွင်းတစ်စုံတစ်ရာ ဖြစ်ပေါ်ပါက၊ အခြေအနေကို ရပ်တန့်စေမည့် core သို့ false ပြန်ပို့ပါ။tage သည် တောင်းဆိုချက်ကို လုပ်ဆောင်၍မရကြောင်း အိမ်ရှင်အား ညွှန်ပြသော ထိန်းချုပ်လွှဲပြောင်းမှု၏ e။ အောင်မြင်ရင် true ပြန်ပေးတယ်။
(၆) ဤ exampသို့ဖြစ်ပါ၍ အသိအမှတ်မပြုသော တောင်းဆိုမှုများအားလုံးကို core သို့ false ပြန်ပေးခြင်းဖြင့် အမှတ်အသားပြုပါသည်။ ဤအရာသည် ဒေတာ သို့မဟုတ် အခြေအနေကို ရပ်တန့်သွားမည်ဖြစ်သည်။tage သည် တောင်းဆိုမှုကို မဆောင်ရွက်ပေးကြောင်း အိမ်ရှင်ထံ ညွှန်ပြသည့် ထိန်းချုပ်လွှဲပြောင်းမှု၏ e။
အိမ်ရှင်သည် ရောင်းချသူ တောင်းဆိုချက်များကို လက်ခံဆောင်ရွက်ပေးသည့် ရောင်းချသူ လျှောက်လွှာမှတစ်ဆင့် ပေးပို့သည်။ libusb ကဲ့သို့သော USb စာကြည့်တိုက်များကို သင့်စိတ်ကြိုက် လက်ခံဆောင်ရွက်ပေးသည့် ရောင်းချသူ အက်ပ်လီကေးရှင်းကို တီထွင်ရာတွင် ကူညီပေးနိုင်သည်။

မူပိုင်ခွင့် © 2025 Silicon Laboratories မူပိုင်ခွင့်ကိုလက်ဝယ်ထားသည်။

၅/၅

API စာရွက်စာတမ်း
API စာရွက်စာတမ်း
API စာရွက်စာတမ်း
မော်ဂျူးများစာရင်း
USB ကိရိယာ API USB ကိရိယာ ACM API USB ကိရိယာ CDC API USB ကိရိယာ Core API USB ကိရိယာ HID API USB ကိရိယာ MSC API USB ကိရိယာ MSC SCSI API USB ကိရိယာ ရောင်းချသူ API

ဖော်ပြချက်
USB ကိရိယာ API USB ကိရိယာ ACM API USB ကိရိယာ CDC API USB ကိရိယာ Core API USB ကိရိယာ HID API USB ကိရိယာ MSC API USB ကိရိယာ MSC SCSI API USB ကိရိယာ ရောင်းချသူ API

မူပိုင်ခွင့် © 2025 Silicon Laboratories မူပိုင်ခွင့်ကိုလက်ဝယ်ထားသည်။

၅/၅

USB ကိရိယာ API
USB ကိရိယာ API
USB ကိရိယာ API
USB ကိရိယာ API
မော်ဂျူးများ
USB စက်ပစ္စည်း ACM API USB ကိရိယာ CDC API USB ကိရိယာ Core API USB ကိရိယာ HID API USB ကိရိယာ MSC API USB ကိရိယာ MSC SCSI API USB စက်ပစ္စည်း ရောင်းချသူ API

မူပိုင်ခွင့် © 2025 Silicon Laboratories မူပိုင်ခွင့်ကိုလက်ဝယ်ထားသည်။

၅/၅

USB စက် ACM API

USB စက် ACM API

USB စက် ACM API

USB စက် CDC ACM API
မော်ဂျူးများ
sl_usbd_cdc_ cm_line_coding_t sl_usbd_cdc_acm_callbacks_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 sl_status_t

sl_usbd_cdc_ cm_init(ပျက်ပြယ်)
ကမ္ဘာလုံးဆိုင်ရာ ကွဲပြားမှုများ။
ssll__uussbbdd__ccddcc__aaccmm__ccraellabtaec_kins_stta*npc_ea(cumin_tc1a6l_lbtalicnkes_,sutaintte8__int t*eprv_saul,bucinlats1s6__nt bcra)ll_mgmt_capabilities,
CDC ACM serial emulation subclass ၏ ဥပမာအသစ်တစ်ခုကို ထည့်ပါ။
aaaa sl_usbd_cdc_ cm_ dd_to_configur tion(uint8_t subcl ss_nbr၊ uint8_t config_nbr)
USB ကိရိယာဖွဲ့စည်းပုံတွင် CDC ACM အတန်းခွဲ အတန်းအစား instance တစ်ခုကို ထည့်ပါ။
aa sl_usbd_cdc_ cm_is_en bled(uint8_t subclass_nbr၊ bool *p_enabled)
CDC ACM serial emulation subclass ကို enable state ကိုရယူပါ။
aaa sl_usbd_cdc_ cm_re d(uint8_t subcl ss_nbr၊ uint8_t *p_buf၊ uint32_t buf_len၊ uint16_t အချိန်ကုန်သွားသည်၊ uint32_t
*p_xfer_len) CDC ACM serial emulation subclass တွင် ဒေတာကို ရယူပါ။
aaaa sl_usbd_cdc_ cm_re d_ ထပ်တူပြုခြင်း(uint8_t subcl ss_nbr၊ uint8_t *p_buf၊ uint32_t buf_len၊ aaaa sl_usbd_cdc_ sync_function_t sync_fnct၊ ပျက်ပြယ် *p_ sync_ rg)
CDC ACM serial emulation subclass တွင် ဒေတာကို တပြိုင်နက်တည်း လက်ခံရယူပါ။
aa sl_usbd_cdc_ cm_write(uint8_t subcl ss_nbr၊ uint8_t *p_buf၊ uint32_t buf_len၊ uint16_t အချိန်ကုန်သွားသည်၊ uint32_t
*p_xfer_len) CDC ACM serial emulation subclass တွင် ဒေတာပေးပို့ပါ။
aaa sl_usbd_cdc_ cm_write_ ထပ်တူပြုခြင်း(uint8_t subcl ss_nbr၊ uint8_t *p_buf၊ uint32_t buf_len၊ aaaa sl_usbd_cdc_ sync_function_t sync_fnct၊ ပျက်ပြယ် *p_ sync_ rg)
CDC ACM serial emulation subclass တွင် ဒေတာကို တပြိုင်နက်တည်း ပေးပို့ပါ။
aaa sl_usbd_cdc_ cm_get_line_control_st te(uint8_t subcl ss_nbr၊ uint8_t *p_line_ctrl)
ထိန်းချုပ်လိုင်းများ၏ အခြေအနေကို ပြန်ပေးပါ။
aaa sl_usbd_cdc_ cm_get_line_coding(uint8_t subcl ss_nbr၊ sl_usbd_cdc_ cm_line_coding_t *p_line_coding)
လိုင်းကုဒ်၏ လက်ရှိအခြေအနေကို ရယူပါ။
aaa sl_usbd_cdc_ cm_set_line_coding(uint8_t subcl ss_nbr၊ sl_usbd_cdc_ cm_line_coding_t *p_line_coding)
လိုင်းကုဒ်အသစ်တစ်ခု သတ်မှတ်ပါ။
aaa sl_usbd_cdc_ cm_set_line_st te_event(uint8_t subcl ss_nbr၊ uint8_t ဖြစ်ရပ်များ)
လိုင်းအခြေအနေဖြစ်ရပ်(များ) သတ်မှတ်ပါ။
aaaa sl_usbd_cdc_ cm_cle r_line_st te_event(uint8_t subcl ss_nbr၊ uint8_t ဖြစ်ရပ်များ)
လိုင်းအခြေအနေဖြစ်ရပ်(များ)ကို ရှင်းလင်းပါ။

မူပိုင်ခွင့် © 2025 Silicon Laboratories မူပိုင်ခွင့်ကိုလက်ဝယ်ထားသည်။

၅/၅

USB စက် ACM API
မက်ခရို
#define SL_USBD_CDC_ACM_NBR_NONE 255u
MODULE
#define SL_USBD_CDC_ACM_PARITY_NONE 0u
ပို့တ်ဆက်တင်များ သတ်မှတ်ချက်များ။
#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 #dSPACE 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_CTRL1_BREAK0
လိုင်းဖြစ်ရပ်များ အလံများ သတ်မှတ်သည်။
#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_STACDC_ACM_0define 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_ACM_STATE0inePARITY #define SL_USBD_CDC_ACM_STATE_OVERUN 0 40u #define SL_USBD_CDC_ACM_CALL_MGMT_DEV 0 01u
ခေါ်ဆိုမှု စီမံခန့်ခွဲမှု စွမ်းရည်များ။
#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)
လုပ်ဆောင်ချက်မှတ်တမ်း
sl_usbd_cdc_acm_init
sl_status_t sl_usbd_cdc_acm_init (ပျက်ပြယ်)
ကမ္ဘာလုံးဆိုင်ရာ ကွဲပြားမှုများ။ ကန့်သတ်ချက်များ
မူပိုင်ခွင့် © 2025 Silicon Laboratories မူပိုင်ခွင့်ကိုလက်ဝယ်ထားသည်။

၅/၅

USB စက် ACM API

ရိုက်ပါ။
ပျက်ပြယ်

ဦးတည်ချက် မရှိပါ။

အငြင်းအခုံအမည်

MACROS ကမ္ဘာလုံးဆိုင်ရာ အဆက်မပြတ်လုပ်ဆောင်မှု ရှေ့ပြေးပုံစံများ CDC ACM လုပ်ဆောင်ချက်များ

CDC ACM serial emulation subclass ကို စတင်ပါ။
ပြန်လာသည်

အောင်မြင်မှုတွင် SL_STATUS_OK သို့မဟုတ် အခြား SL_STATUS ကုဒ် မအောင်မြင်ပါက ပြန်ပေးသည်။

ဖော်ပြချက်

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)

CDC ACM serial emulation subclass ၏ ဥပမာအသစ်တစ်ခုကို ထည့်ပါ။
ကန့်သတ်ချက်များ

ရိုက်ပါ။
uint16_t
uint16_t

ဦးတည်ချက် အငြင်းအခုံအမည်

ဖော်ပြချက်

မရှိ

line_state_interval လိုင်းအခြေအနေ အသိပေးချက်ကြားကာလ မီလီစက္ကန့်များ (တန်ဖိုးရှိရမည်။

2) စွမ်းအားဖြစ်ပါစေ။

မရှိ

call_mgmt_capabilities ခေါ်ဆိုမှု စီမံခန့်ခွဲမှုစွမ်းရည် bitmap။ OR'ed of the

အောက်ပါအလံများ

SL_USBD_CDC_ACM_CALL_MGMT_DEV စက်ပစ္စည်းသည် ခေါ်ဆိုမှုစီမံခန့်ခွဲမှုကို ကိုယ်တိုင်လုပ်ဆောင်သည်။ SL_USBD_CDC_ACM_CALL_MGMT_DATA_CCI_DCI စက်ပစ္စည်းသည် ဒေတာအတန်းအစား အင်တာဖေ့စ်တစ်ခုမှတစ်ဆင့် ခေါ်ဆိုမှုစီမံခန့်ခွဲမှုအချက်အလက်ကို ပေးပို့/လက်ခံနိုင်သည်။

sl_usbd_cdc_acm_callbacks_t N/A
*

uint8_t *

မရှိ

p_acm_callbacks p_subclass_nbr

အမျိုးမျိုးသောဖြစ်ရပ်များပေါ်တွင်ခေါ်ဆိုရမည့်ပြန်ခေါ်ခြင်းလုပ်ဆောင်ချက်များကိုရွေးချယ်နိုင်သောညွှန်ပြချက်များ။
CDC ACM serial emulation subclass instance နံပါတ်ကို လက်ခံရရှိမည့် variable မှ param

ပြန်လာသည်

အောင်မြင်မှုတွင် SL_STATUS_OK သို့မဟုတ် အခြား SL_STATUS ကုဒ် မအောင်မြင်ပါက ပြန်ပေးပါ။

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)

USB ကိရိယာဖွဲ့စည်းပုံတွင် CDC ACM အတန်းခွဲ အတန်းအစား instance တစ်ခုကို ထည့်ပါ။
ကန့်သတ်ချက်များ

ရိုက်ပါ။
uint8_t uint8_t

ဦးတည်ချက် N/AN/A

အငြင်းအခုံအမည်
subclass_nbr config_nbr

ဖော်ပြချက် CDC ACM serial emulation subclass instance number စမ်းသပ်အတန်းအစားအသစ်ထည့်ရန် ဖွဲ့စည်းမှုအညွှန်းကိန်း။

ပြန်လာသည်

မူပိုင်ခွင့် © 2025 Silicon Laboratories မူပိုင်ခွင့်ကိုလက်ဝယ်ထားသည်။

၅/၅

USB စက် ACM API
အောင်မြင်မှုတွင် SL_STATUS_OK သို့မဟုတ် အခြား SL_STATUS ကုဒ် မအောင်မြင်ပါက ပြန်ပေးသည်။

sl_usbd_cdc_acm_is_enabled

sl_status_t sl_usbd_cdc_acm_is_enabled (uint8_t subclass_nbr၊ bool * p_enabled)

CDC ACM serial emulation subclass ကို enable state ကိုရယူပါ။
ကန့်သတ်ချက်များ

ရိုက်ပါ။

ဦးတည်ချက်

အငြင်းအခုံအမည်

ဖော်ပြချက်

uint8_t မရှိပါ။

subclass_nbr CDC ACM serial emulation subclass instance နံပါတ်။

bool * N/A

p_enabled

enable status ကိုလက်ခံမည့် variable သို့ Boolean ။ ကိန်းရှင်ကို အမှန်ဟု သတ်မှတ်ထားသည်၊ CDC ACM အမှတ်စဉ် အတုယူခြင်းကို ဖွင့်ထားသည်။ ဗာ

စာရွက်စာတမ်းများ / အရင်းအမြစ်များ

SILICON LABS USB Device Stack [pdf] ညွှန်ကြားချက်လက်စွဲ
USB Device Stack၊ Device Stack၊ Stack

ကိုးကား

မှတ်ချက်တစ်ခုချန်ထားပါ။

သင့်အီးမေးလ်လိပ်စာကို ထုတ်ပြန်မည်မဟုတ်ပါ။ လိုအပ်သောအကွက်များကို အမှတ်အသားပြုထားသည်။ *