SILICON LABS USB Device Stack

លក្ខណៈបច្ចេកទេស

  • កំណែ USB៖ 1.5.1
  • កាលបរិច្ឆេទចេញផ្សាយ៖ ថ្ងៃទី ១៤ ខែ កក្កដា ឆ្នាំ ២០១០
  • កំណែ SDK សាមញ្ញ៖ 2025.6.1

ផលិតផលលើសview

The USB device stack by Silicon Labs provides versatile and easy-to-use USB connectivity for IoT projects, facilitating communication between network co-processors and hosts.

លក្ខណៈពិសេស

  • ជង់ឧបករណ៍ USB ប្រកបដោយប្រសិទ្ធភាព
  • សមស្របសម្រាប់គម្រោង IoT
  • Support for communication between network co-processors and hosts

ការកំណត់រចនាសម្ព័ន្ធឧបករណ៍ USB

Configure the USB device settings according to your project requirements by referring to the USB Device Configuration section in the documentation.

ការណែនាំអំពីការសរសេរកម្មវិធីឧបករណ៍ USB
Follow the USB Device Programming Guide to understand how to program and interact with the USB device for various applications.

ថ្នាក់ឧបករណ៍ USB
ផ្នែកថ្នាក់ឧបករណ៍ USB ផ្តល់នូវការបញ្ចប់view of different classes like CDC ACM, HID, MSC SCSI, and Vendor Class. Choose the appropriate class based on your device functionality.

ការដោះស្រាយបញ្ហាឧបករណ៍ USB
If you encounter any issues with the USB device, refer to the USB Device Troubleshooting section for solutions and debugging tips.

កំណត់ចំណាំ USB
លក្ខណៈ​ពិសេស និង​លក្ខណៈ​ពិសេស​លើសview
ការកំណត់ឧបករណ៍ USB ចប់view
ការណែនាំអំពីការសរសេរកម្មវិធីឧបករណ៍ USBview
ថ្នាក់ឧបករណ៍ USB ចប់ហើយ។view ថ្នាក់ CDC ACM បញ្ចប់view ថ្នាក់ HID លើសview MSC SCSI Class Overview ថ្នាក់អ្នកលក់លើសview


ឯកសារ USB API API ឧបករណ៍ USB API ឧបករណ៍ USB ACM API a sl_usbd_cdc_ cm_line_coding_t sl_usbd_cdc_acm_callbacks_t ឧបករណ៍ USB 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
ការដោះស្រាយបញ្ហាឧបករណ៍ USB Documentation API
ជាងview ម៉ាស៊ីន Microsoft Windows OS USB
ជាងview

រក្សាសិទ្ធិ © 2025 Silicon Laboratories ។ រក្សា​រ​សិទ្ធ​គ្រប់យ៉ាង។

៥/៥

ជាងview
ជាងview
ឧបករណ៍ USB
USB គឺជាចំណុចប្រទាក់ទំនាក់ទំនងដ៏ជោគជ័យបំផុតមួយនៅក្នុងប្រវត្តិសាស្រ្តនៃប្រព័ន្ធកុំព្យូទ័រ និងជាស្តង់ដារជាក់ស្តែងសម្រាប់ភ្ជាប់គ្រឿងកុំព្យូទ័រ។ Silicon Labs USB Device stack គឺជាម៉ូឌុលឧបករណ៍ USB ដែលត្រូវបានរចនាឡើងជាពិសេសសម្រាប់ប្រព័ន្ធបង្កប់។ បង្កើតឡើងដោយមានមូលដ្ឋានលើគុណភាព ការធ្វើមាត្រដ្ឋាន និងភាពជឿជាក់របស់ Silicon Labs វាបានឆ្លងកាត់ដំណើរការផ្ទៀងផ្ទាត់យ៉ាងម៉ត់ចត់ដើម្បីអនុលោមតាមការកំណត់របស់ USB 2.0 ។ ឯកសារនេះពិពណ៌នាអំពីរបៀបចាប់ផ្តើម ចាប់ផ្តើម និងប្រើជង់ឧបករណ៍ USB Silicon Labs ។ វាពន្យល់ពីតម្លៃនៃការកំណត់រចនាសម្ព័ន្ធផ្សេងៗ និងការប្រើប្រាស់របស់វា។ វាក៏រួមបញ្ចូលផងដែរview នៃបច្ចេកវិទ្យា ប្រភេទនៃលទ្ធភាពនៃការកំណត់រចនាសម្ព័ន្ធ នីតិវិធីនៃការអនុវត្ត និងឧamples នៃការប្រើប្រាស់ធម្មតាសម្រាប់គ្រប់ថ្នាក់ដែលមាន។


ដើម្បីជួយអ្នកឱ្យយល់អំពីគោលគំនិតរបស់ USB យ៉ាងរហ័ស ឯកសារនេះមានលក្ខណៈពិសេសជាច្រើន។amples នៃ USB ដែលមានមុខងារជាមូលដ្ឋាន។ ទាំងនេះ អតីតamples នឹងផ្តល់ឱ្យអ្នកនូវក្របខ័ណ្ឌដែលអនុញ្ញាតឱ្យអ្នកបង្កើតឧបករណ៍បានយ៉ាងឆាប់រហ័ស។ ទាំងនេះ អតីតamples រួមមាន:
អាដាប់ទ័រ USB-to-serial (ថ្នាក់ឧបករណ៍ទំនាក់ទំនង) កណ្ដុរ ឬក្តារចុច (ថ្នាក់ឧបករណ៍ចំណុចប្រទាក់មនុស្ស) ឧបករណ៍ផ្ទុកចល័ត (ថ្នាក់ផ្ទុកច្រើន) ឧបករណ៍ផ្ទាល់ខ្លួន (ថ្នាក់អ្នកលក់)
ខាង​ក្រោម​គឺ​ជា​ការ​បញ្ចប់view នៃផ្នែកឯកសារ៖
លក្ខណៈ​ពិសេស និង​លក្ខណៈ​ពិសេស ការកំណត់​រចនាសម្ព័ន្ធ​ឧបករណ៍ USB មគ្គុទ្ទេសក៍​កម្មវិធី​ឧបករណ៍ USB ថ្នាក់​ឧបករណ៍ USB
CDC ACM Class HID Class MSC SCSI Class Vendor Class USB ឧបករណ៍ដោះស្រាយបញ្ហា Microsoft Windows OS USB Host

រក្សាសិទ្ធិ © 2025 Silicon Laboratories ។ រក្សា​រ​សិទ្ធ​គ្រប់យ៉ាង។

៥/៥

យូអេសប៊ី
យូអេសប៊ី

កំណែ USB 1.5.1 ថ្ងៃទី 21 ខែកក្កដា ឆ្នាំ 2025 – កំណត់ចំណាំចេញផ្សាយ
ភាពសាមញ្ញ SDK កំណែ 2025.6.1
ជង់ឧបករណ៍ USB ដ៏មានប្រសិទ្ធភាពរបស់ Silicon Labs ផ្តល់នូវការតភ្ជាប់ USB ដែលអាចប្រើប្រាស់បានច្រើន និងងាយស្រួលប្រើដ៏ល្អសម្រាប់គម្រោង IoT រួមទាំងការទំនាក់ទំនងរវាងសហដំណើរការបណ្តាញ និងម៉ាស៊ីន។ ចុចទីនេះសម្រាប់ការចេញផ្សាយមុននេះ។
សេចក្តីសង្ខេបនៃការចេញផ្សាយ
លក្ខណៈសំខាន់ៗ | ការផ្លាស់ប្តូរ API | កែកំហុស | ការបើកដំណើរការបន្ទះឈីប
លក្ខណៈសំខាន់ៗ
ការផ្លាស់ប្តូរវេទិកាមូលដ្ឋានតែប៉ុណ្ណោះ។
ការផ្លាស់ប្តូរ API
គ្មាន។
កែកំហុស
គ្មាន។
ការបើកដំណើរការបន្ទះឈីប
គ្មាន។
លក្ខណៈសំខាន់ៗ
លក្ខណៈពិសេសថ្មី | ការលើកកំពស់ | លក្ខណៈពិសេសដែលបានដកចេញ | លក្ខណៈពិសេសដែលបានបដិសេធ
លក្ខណៈពិសេសថ្មី។
គ្មាន។
ការលើកកម្ពស់
ការផ្លាស់ប្តូរវេទិកាមូលដ្ឋានតែប៉ុណ្ណោះ។
លក្ខណៈពិសេសដែលបានលុប
គ្មាន។
លក្ខណៈពិសេសដែលត្រូវបានបដិសេធ
គ្មាន។
ការផ្លាស់ប្តូរ API
APIs ថ្មី | APIs ដែលបានកែប្រែ | APIs ដែលត្រូវបានដកចេញ | APIs ដែល​បាន​បដិសេធ
APIs ថ្មី

រក្សាសិទ្ធិ © 2025 Silicon Laboratories ។ រក្សា​រ​សិទ្ធ​គ្រប់យ៉ាង។

៥/៥

យូអេសប៊ី
គ្មាន។
APIs ដែលបានកែប្រែ
គ្មាន។
APIs ដែលត្រូវបានដកចេញ
គ្មាន។
APIs ដែល​បាន​បដិសេធ
គ្មាន។
កែកំហុស
គ្មាន។
ការបើកដំណើរការបន្ទះឈីប
គ្មាន។
កម្មវិធី Exampការផ្លាស់ប្តូរ
អតីត​ថ្មីamples | កែប្រែ Examples | បានដក Examples | បដិសេធ Examples
អតីត​ថ្មីamples
គ្មាន។
កែប្រែ Examples
គ្មាន។
បានដក Examples
គ្មាន។
បដិសេធ Examples
គ្មាន។
ផលប៉ះពាល់នៃការផ្លាស់ប្តូរការចេញផ្សាយ
សេចក្តីថ្លែងការណ៍ផលប៉ះពាល់ | មគ្គុទ្ទេសក៍ការធ្វើចំណាកស្រុក
សេចក្តីថ្លែងការណ៍អំពីផលប៉ះពាល់
គ្មាន។
មគ្គុទ្ទេសក៍ការធ្វើចំណាកស្រុក
គ្មាន។
បញ្ហា និងដែនកំណត់ដែលគេស្គាល់
គ្មាន។
ការប្រើប្រាស់ការចេញផ្សាយនេះ។

រក្សាសិទ្ធិ © 2025 Silicon Laboratories ។ រក្សា​រ​សិទ្ធ​គ្រប់យ៉ាង។

៥/៥

យូអេសប៊ី

តើមានអ្វីនៅក្នុងការចេញផ្សាយ? | កម្មវិធីដែលត្រូវគ្នា | ការដំឡើង និងប្រើប្រាស់ | ជំនួយ និងមតិកែលម្អ

តើមានអ្វីនៅក្នុងការចេញផ្សាយ?

កម្មវិធីជង់ឧបករណ៍ USB Examples
កម្មវិធីដែលត្រូវគ្នា។

កម្មវិធី
Simplicity SDK Simplicity Studio Simplicity Commander GCC The GNU Compiler Collection) IAR Embedded Workbench for ARM IAR EWARM

កំណែដែលត្រូវគ្នា ឬវ៉ារ្យ៉ង់
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 ។
ដើម្បីឡើងវិញview ការជូនដំណឹងអំពីសុវត្ថិភាព និងកម្មវិធីប្រឹក្សា និងគ្រប់គ្រងចំណូលចិត្តការជូនដំណឹងរបស់អ្នក៖
ò ចូលទៅកាន់ https://community.silabs.com/ ។ ó ចូលដោយប្រើព័ត៌មានសម្ងាត់គណនីរបស់អ្នក។ ô ចុចគាំទ្ររបស់អ្នក។file រូបតំណាងនៅជ្រុងខាងស្តាំខាងលើនៃទំព័រ។
õ ជ្រើសរើសការជូនដំណឹងពីម៉ឺនុយទម្លាក់ចុះ។ ö នៅក្នុងផ្នែកការជូនដំណឹង សូមចូលទៅកាន់ផ្ទាំងការជូនដំណឹងអំពីផលិតផលរបស់ខ្ញុំ ដើម្បីដំណើរការឡើងវិញview ការប្រឹក្សាផ្នែកសុវត្ថិភាព និងកម្មវិធីជាប្រវត្តិសាស្ត្រ
ការជូនដំណឹង
÷ ដើម្បីគ្រប់គ្រងចំណូលចិត្តរបស់អ្នក សូមប្រើផ្ទាំងគ្រប់គ្រងការជូនដំណឹង ដើម្បីប្ដូរការអាប់ដេតផលិតផល និងការណែនាំដែលអ្នកចង់បាន
ទទួល។
សម្រាប់ការកំណត់រចនាសម្ព័ន្ធដែលបានណែនាំ សូមមើលនៅទីនេះ។
ដើម្បីស្វែងយល់បន្ថែមអំពីកម្មវិធីនៅក្នុងការចេញផ្សាយនេះ សូមចូលទៅកាន់ឯកសារអនឡាញរបស់យើង។
ជំនួយ និងមតិកែលម្អ

ទាក់ទងផ្នែកគាំទ្រ Silicon Labs ។ ដើម្បីប្រើឧបករណ៍ Ask AI របស់យើងដើម្បីទទួលបានចម្លើយ សូមមើលវាលស្វែងរកនៅផ្នែកខាងលើនៃទំព័រនេះ។

ចំណាំ៖ សួរ AI គឺជាការពិសោធន៍។

ទទួលបានជំនួយពីសហគមន៍អ្នកអភិវឌ្ឍន៍របស់យើង។
គោលការណ៍ចេញផ្សាយ និងថែទាំ SDK
សូមមើលគោលការណ៍ចេញផ្សាយ និងថែទាំ SDK របស់យើង។

រក្សាសិទ្ធិ © 2025 Silicon Laboratories ។ រក្សា​រ​សិទ្ធ​គ្រប់យ៉ាង។

៥/៥

ជាងview
ជាងview
លក្ខណៈបច្ចេកទេស
អនុលោមតាម "ការកែសម្រួលលក្ខណៈបច្ចេកទេសរថយន្តក្រុងជាសកល 2.0" អនុវត្ត "ការជូនដំណឹងអំពីការផ្លាស់ប្តូរវិស្វកម្មការពិពណ៌នាអំពីទំនាក់ទំនង (ECN)" ប្រភេទនៃការផ្ទេរ
គ្រប់គ្រងបណ្តុំ USB រំខានថ្នាក់ឧបករណ៍ទំនាក់ទំនង (CDC) គំរូត្រួតពិនិត្យអរូបី (ACM) ឧបករណ៍ចំណុចប្រទាក់មនុស្ស (HID) ថ្នាក់ផ្ទុកដ៏ធំ (MSC) ក្របខ័ណ្ឌថ្នាក់ជាក់លាក់របស់អ្នកលក់
លក្ខណៈពិសេស
អាចធ្វើមាត្រដ្ឋានបាន ដើម្បីរួមបញ្ចូលតែមុខងារដែលត្រូវការ ដើម្បីកាត់បន្ថយទំហំអង្គចងចាំ គាំទ្រល្បឿនពេញ (12 Mbit/s) គាំទ្រឧបករណ៍សមាសធាតុ (ពហុមុខងារ) គាំទ្រឧបករណ៍កំណត់រចនាសម្ព័ន្ធច្រើន គាំទ្រមុខងារសន្សំថាមពល USB (ឧបករណ៍ផ្អាក និងបន្ត) ការរួមបញ្ចូលពេញលេញនៃថ្នាក់ផ្ទុកទិន្នន័យទៅក្នុង Micrium OS File ម៉ូឌុលប្រព័ន្ធត្រូវបានបង្កើតឡើងដោយស្រទាប់អរូបី CMSIS-RTOS2 ដូច្នេះវាអាចដំណើរការជាមួយប្រព័ន្ធប្រតិបត្តិការផ្សេងៗ។ Silicon Labs GSDK ភ្ជាប់មកជាមួយច្រក FreeRTOS និង Micrium OS ។

រក្សាសិទ្ធិ © 2025 Silicon Laboratories ។ រក្សា​រ​សិទ្ធ​គ្រប់យ៉ាង។

៥/៥

ជាងview
ជាងview

ការកំណត់រចនាសម្ព័ន្ធឧបករណ៍ USB

ផ្នែកនេះពិភាក្សាអំពីរបៀបកំណត់ឧបករណ៍ USB របស់ Silicon Labs ។ មានបីក្រុមនៃប៉ារ៉ាម៉ែត្រកំណត់រចនាសម្ព័ន្ធដូចខាងក្រោម:
ការកំណត់រចនាសម្ព័ន្ធស្នូលឧបករណ៍ USB ព័ត៌មានឧបករណ៍ USB ការកំណត់រចនាសម្ព័ន្ធឧបករណ៍ USB ការកំណត់រចនាសម្ព័ន្ធផ្នែករឹង
ការកំណត់រចនាសម្ព័ន្ធឧបករណ៍ USB
ឧបករណ៍ USB របស់ Silicon Labs អាច​ត្រូវ​បាន​កំណត់​រចនាសម្ព័ន្ធ​នៅ​ពេល​ចងក្រង​តាម​រយៈ​សំណុំ​នៃ #define ដែល​មាន​ទីតាំង​ក្នុង sl_usbd_core_config.h file. ឧបករណ៍ USB ប្រើ #defines នៅពេលដែលអាចធ្វើទៅបាន ព្រោះវាអនុញ្ញាតឱ្យកូដ និងទំហំទិន្នន័យត្រូវបានធ្វើមាត្រដ្ឋាននៅពេលចងក្រងដោយផ្អែកលើលក្ខណៈដែលត្រូវបានបើក។ នេះអនុញ្ញាតឱ្យអង្គចងចាំបានតែអាន (រ៉ូម) និងអង្គចងចាំចូលប្រើដោយចៃដន្យ (RAM) របស់ឧបករណ៍ USB Silicon Labs ត្រូវបានកែតម្រូវដោយផ្អែកលើតម្រូវការកម្មវិធីរបស់អ្នក។
បានណែនាំ៖ ចាប់ផ្តើមដំណើរការកំណត់រចនាសម្ព័ន្ធជាមួយនឹងតម្លៃលំនាំដើម (គូសបញ្ជាក់ជាដិត)។
ផ្នែកខាងក្រោមត្រូវបានរៀបចំដោយផ្អែកលើលំដាប់នៅក្នុងការកំណត់រចនាសម្ព័ន្ធគំរូ file, sl_usbd_core_config.h ។
ថ្នាក់កំណត់រចនាសម្ព័ន្ធស្នូល ការកំណត់រចនាសម្ព័ន្ធ
ការកំណត់រចនាសម្ព័ន្ធស្នូល
តារាង - ការកំណត់រចនាសម្ព័ន្ធស្នូលឧបករណ៍ USB

ការពិពណ៌នាថេរ

តម្លៃលំនាំដើម

SL_USBD_TA SK_STACK_ SIZE

កំណត់រចនាសម្ព័ន្ធទំហំជង់ជាបៃនៃកិច្ចការស្នូល USBD

4096

SL_USBD_TA SK_PRIORIT Y

កំណត់រចនាសម្ព័ន្ធអាទិភាពនៃកិច្ចការស្នូល USBD ។ នេះគឺជាអាទិភាព CMSIS-RTOS2 ។

osPriorityHigh

SL_USBD_A UTO_START _USB_DEVIC E

ប្រសិនបើបើកដំណើរការ ឧបករណ៍ USB នឹងត្រូវបានចាប់ផ្តើមដោយស្វ័យប្រវត្តិ នៅពេលដែលខឺណែលត្រូវបានចាប់ផ្តើម ហើយកិច្ចការស្នូល 1 USBD ត្រូវបានកំណត់ពេលជាលើកដំបូង។ ប្រសិនបើបិទដំណើរការ កម្មវិធីរបស់អ្នកនឹងត្រូវហៅទៅ sl_usbd_core_start_device() នៅពេលរួចរាល់ដើម្បីត្រូវបានរកឃើញដោយម៉ាស៊ីន USB ។

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
ភាពស្ថិតស្ថេរ
SL_USBD _STRING _QUANTI
TY
SL_USBD _OPEN_E NDPOIN TS_QUA NTITY

ការពិពណ៌នាចំនួនសរុបនៃចំណុចប្រទាក់ USB ដែលត្រូវបន្ថែមសម្រាប់ការកំណត់រចនាសម្ព័ន្ធរបស់អ្នកទាំងអស់។ វាអាស្រ័យយ៉ាងខ្លាំងទៅលើថ្នាក់ (es) ដែលបានប្រើ។ សម្រាប់ព័ត៌មានបន្ថែមអំពីចំនួនចំណុចប្រទាក់ដែលវត្ថុថ្នាក់តម្រូវឱ្យ សូមមើលផ្នែក "តម្រូវការធនធានពីស្នូល" នៃថ្នាក់របស់អ្នក(es)។
ចំនួនសរុបនៃចំណុចប្រទាក់ USB ជំនួសដែលត្រូវបន្ថែមសម្រាប់ការកំណត់រចនាសម្ព័ន្ធរបស់អ្នក។ វាអាស្រ័យយ៉ាងខ្លាំងទៅលើថ្នាក់ (es) ដែលបានប្រើ។ តម្លៃនេះត្រូវតែស្មើ ឬធំជាង SL_USBD_INTERFACE_QUANTITY ជានិច្ច។ សម្រាប់ព័ត៌មានបន្ថែមអំពីចំនួនចំណុចប្រទាក់ជំនួសដែលវត្ថុក្នុងថ្នាក់ត្រូវការ សូមមើលផ្នែក "តម្រូវការធនធានពីស្នូល" នៃថ្នាក់របស់អ្នក។
ចំនួនសរុបនៃក្រុមចំណុចប្រទាក់ USB ដែលនឹងត្រូវបានបន្ថែមសម្រាប់ការកំណត់រចនាសម្ព័ន្ធរបស់អ្នកទាំងអស់។ វាអាស្រ័យយ៉ាងខ្លាំងទៅលើថ្នាក់ (es) ដែលបានប្រើ។ សម្រាប់ព័ត៌មានបន្ថែមអំពីចំនួនក្រុមចំណុចប្រទាក់ត្រូវការឧទាហរណ៍ថ្នាក់ សូមមើលផ្នែក "តម្រូវការធនធានពីស្នូល" នៃថ្នាក់របស់អ្នក(es)។
ចំនួនសរុបនៃ Endpoint descriptors ដែលនឹងត្រូវបានបន្ថែមសម្រាប់រាល់ការកំណត់របស់អ្នក។ វាអាស្រ័យយ៉ាងខ្លាំងទៅលើថ្នាក់ (es) ដែលបានប្រើ។ សម្រាប់ព័ត៌មានបន្ថែមអំពីចំនួនអ្នកពិពណ៌នាចំណុចបញ្ចប់ដែលវត្ថុក្នុងថ្នាក់តម្រូវឱ្យ សូមមើល "ចំនួននៃចំណុចបញ្ចប់" នៅក្នុងផ្នែក "តម្រូវការធនធានពីស្នូល" នៃថ្នាក់របស់អ្នក។ ចំណាំថាចំណុចបញ្ចប់នៃការគ្រប់គ្រងមិនចាំបាច់ត្រូវបានពិចារណានៅទីនេះទេ។ ចំនួនសរុបនៃខ្សែ USB ។ ការកំណត់បរិមាណទៅសូន្យនឹងបិទមុខងារនេះ។ ការបិទវានឹងធ្វើឱ្យឧបករណ៍មិនអាចរក្សាទុកខ្សែអក្សរពណ៌នា USB ណាមួយដែលបានឆ្លងកាត់ពីកម្មវិធី។ នេះមានន័យថាម៉ាស៊ីននឹងមិនអាចទាញយកខ្សែអក្សរពិពណ៌នា (ដូចជាក្រុមហ៊ុនផលិត និងឈ្មោះផលិតផល)។ ចំនួនសរុបនៃចំណុចបញ្ចប់ដែលបានបើកក្នុងមួយការកំណត់។ ឧបករណ៍ត្រូវការចំណុចបញ្ចប់ដែលបានបើកយ៉ាងហោចណាស់ពីរសម្រាប់ការផ្ទេរការគ្រប់គ្រង ប៉ុន្តែអ្នកក៏ត្រូវបន្ថែមចំណុចបញ្ចប់នៃថ្នាក់ដែលបានប្រើផងដែរ។ សម្រាប់ព័ត៌មានបន្ថែមអំពីចំនួនចំណុចបញ្ចប់ដែលបានបើកដែលវត្ថុក្នុងថ្នាក់ត្រូវការ សូមមើល "ចំនួននៃចំណុចបញ្ចប់" នៅក្នុងផ្នែក "តម្រូវការធនធានពីស្នូល" នៃថ្នាក់របស់អ្នក។

តម្លៃលំនាំដើម
៦៧ ៨
2
១២៣ ៤

ការកំណត់រចនាសម្ព័ន្ធថ្នាក់
ថ្នាក់មានការកំណត់រចនាសម្ព័ន្ធពេលវេលាចងក្រងជាក់លាក់។ សូមមើលថ្នាក់ឧបករណ៍ USB សម្រាប់ព័ត៌មានបន្ថែម។
ការកំណត់រចនាសម្ព័ន្ធព័ត៌មានឧបករណ៍ USB

ការកំណត់រចនាសម្ព័ន្ធ sl_usbd_device_config.h file ប្រមូលផ្តុំឡើងវិញនូវពេលវេលា #define-s ដើម្បីកំណត់ព័ត៌មានមូលដ្ឋានទាក់ទងនឹងឧបករណ៍របស់អ្នក ដូចជាអ្នកលក់/លេខសម្គាល់ផលិតផល ខ្សែឧបករណ៍ជាដើម។ តារាងខាងក្រោមពិពណ៌នាអំពីការកំណត់រចនាសម្ព័ន្ធព័ត៌មាននីមួយៗដែលមាននៅក្នុងការកំណត់រចនាសម្ព័ន្ធនេះ file.

តារាង – ការកំណត់រចនាសម្ព័ន្ធព័ត៌មានឧបករណ៍ USB កំណត់

ថេរ
SL_USBD_DEVIC E_VENDOR_ID
SL_USBD_DEVIC E_PRODUCT_ID

ការពណ៌នាអំពីលេខអត្តសញ្ញាណអ្នកលក់របស់អ្នកដែលត្រូវបានផ្តល់ដោយវេទិកាអ្នកអនុវត្ត USB ។ សម្រាប់ព័ត៌មានបន្ថែមអំពីរបៀបដែលអ្នកអាចទទួលបានលេខសម្គាល់អ្នកលក់ សូមមើល 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 ដែលអ្នកកំពុងប្រើ អ្នកនឹងមានម្ជុល និងច្រក GPIO ដើម្បីកំណត់រចនាសម្ព័ន្ធសម្រាប់សញ្ញា USB VBUS Sense ។ ការកំណត់រចនាសម្ព័ន្ធកំណត់នៅក្នុងបឋមកថា sl_usbd_hardware_config.h file.

ថេរ
SL_USBD_DRIVER_VBUS_SENSE_PORT SL_USBD_DRIVER_VBUS_SENSE_PIN

ការពិពណ៌នា
ច្រក GPIO សម្រាប់សញ្ញា USB VBUS Sense នៅលើក្តាររបស់អ្នក។ GPIO Pin សម្រាប់សញ្ញា USB VBUS Sense នៅលើក្តាររបស់អ្នក។

រក្សាសិទ្ធិ © 2025 Silicon Laboratories ។ រក្សា​រ​សិទ្ធ​គ្រប់យ៉ាង។

៥/៥

ជាងview
ជាងview
ការណែនាំអំពីការសរសេរកម្មវិធីឧបករណ៍ USB
ផ្នែកនេះពន្យល់ពីរបៀបប្រើម៉ូឌុលឧបករណ៍ USB ។
ការដំឡើងដំបូងនៃម៉ូឌុលឧបករណ៍ USB
ផ្នែកនេះពិពណ៌នាអំពីជំហានជាមូលដ្ឋានដែលទាមទារដើម្បីចាប់ផ្តើមម៉ូឌុលឧបករណ៍ USB និងដើម្បីបន្ថែម រៀបចំ និងចាប់ផ្តើមឧបករណ៍។ ការចាប់ផ្តើមម៉ូឌុលឧបករណ៍ USB ការចាប់ផ្តើមស្នូលឧបករណ៍ USB ការចាប់ផ្តើម aCl ss(es) ការបន្ថែមឧបករណ៍ USB របស់អ្នក ការបង្កើតឧបករណ៍ USB របស់អ្នក ការបន្ថែមការកំណត់រចនាសម្ព័ន្ធ ការបន្ថែមមុខងារ USB ការចាប់ផ្តើមឧបករណ៍ USB របស់អ្នក
មុខងារ Hook ព្រឹត្តិការណ៍
ការចាប់ផ្តើមម៉ូឌុលឧបករណ៍ USB
ការចាប់ផ្តើមដំណើរការស្នូលឧបករណ៍ USB
a US a Begin ដោយ initi lizing the B device core ដោយ c lling the function sl_usbd_core_init() ។ 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 ត្រូវបានចាប់ផ្តើម អ្នកត្រូវតែចាប់ផ្តើមថ្នាក់នីមួយៗដែលអ្នកមានបំណងប្រើ។ សូមមើលផ្នែក "ការណែនាំអំពីកម្មវិធី" នៃ acl ss(es) របស់អ្នកសម្រាប់ព័ត៌មានបន្ថែម។
បង្កើតឧបករណ៍ USB របស់អ្នក។
ការបន្ថែមការកំណត់រចនាសម្ព័ន្ធ
បន្ទាប់ពីអ្នកចាប់ផ្តើមឧបករណ៍របស់អ្នកដោយជោគជ័យ អ្នកអាចចាប់ផ្តើមបន្ថែមមុខងារ USB ទៅក្នុងវា ដោយចាប់ផ្តើមជាមួយនឹងការកំណត់ថ្មី។ ឧបករណ៍ត្រូវតែមានការកំណត់រចនាសម្ព័ន្ធយ៉ាងហោចណាស់មួយ។ ដើម្បីបន្ថែមការកំណត់រចនាសម្ព័ន្ធ ហៅមុខងារ aa sl_usbd_core_ dd_configur tion() function។ មុខងារនេះត្រូវតែត្រូវបានហៅសម្រាប់ការកំណត់រចនាសម្ព័ន្ធនីមួយៗដែលអ្នកចង់បន្ថែម។ អតីតample ខាងក្រោមបង្ហាញពីរបៀបបន្ថែម Full-speed ។
Example – ការបន្ថែមការកំណត់រចនាសម្ព័ន្ធទៅឧបករណ៍របស់អ្នក។

រក្សាសិទ្ធិ © 2025 Silicon Laboratories ។ រក្សា​រ​សិទ្ធ​គ្រប់យ៉ាង។

៥/៥

ជាងview

ស្ថានភាព sl_status_t; uint8_t config_nbr_fs;

/* បន្ថែមការកំណត់ល្បឿនពេញទៅឧបករណ៍។ */

ស្ថានភាព = sl_usbd_core_add_configuration(0,

/* មិនមានគុណលក្ខណៈពិសេសចំពោះការកំណត់រចនាសម្ព័ន្ធទេ។ */

100u,

* ការប្រើប្រាស់ថាមពលអតិបរមា: 100mA ។

*/

SL_USBD_DEVICE_SPEED_FULL,

/* ការកំណត់រចនាសម្ព័ន្ធល្បឿនពេញ។

*/

"កំណត់រចនាសម្ព័ន្ធបន្ថែម Exampការកំណត់រចនាសម្ព័ន្ធល្បឿនពេញ",

&config_nbr_fs);

ប្រសិនបើ (ស្ថានភាព ! SL_STATUS_OK) {

/* កំហុសបានកើតឡើង។ ការដោះស្រាយកំហុសគួរតែត្រូវបានបន្ថែមនៅទីនេះ។ */

}

ការបន្ថែមមុខងារ USB
បន្ទាប់ពីអ្នកបានបន្ថែមការកំណត់រចនាសម្ព័ន្ធយ៉ាងហោចណាស់មួយទៅឧបករណ៍របស់អ្នកដោយជោគជ័យ អ្នកអាចបន្ថែមចំណុចប្រទាក់ និងចំណុចបញ្ចប់ទៅឧបករណ៍របស់អ្នក។ ថ្នាក់ USB នីមួយៗមានតម្រូវការផ្ទាល់ខ្លួនទាក់ទងនឹងចំណុចប្រទាក់ និងប្រភេទចំណុចបញ្ចប់ បរិមាណ និងប៉ារ៉ាម៉ែត្រផ្សេងទៀត។ ឧបករណ៍ USB របស់ Silicon Labs បន្ថែមចំណុចប្រទាក់ និងចំណុចបញ្ចប់នៅក្នុងថ្នាក់ដែលវាផ្តល់ជូន។
ពីកម្មវិធីរបស់អ្នក អ្នកអាចធ្វើឱ្យថ្នាក់ USB មួយភ្លាមៗ ហើយបន្ថែមវាទៅក្នុងការកំណត់រចនាសម្ព័ន្ធ។ សម្រាប់ព័ត៌មានបន្ថែមអំពីគំនិតនៃឧទាហរណ៍ថ្នាក់ឧបករណ៍ USB សូមមើលថ្នាក់ឧបករណ៍ USB ។ ចំណាំថាអ្នកអាចធ្វើភ្លាមៗ និងបន្ថែមធាតុថ្នាក់ផ្សេងៗគ្នាជាច្រើនទៅក្នុងការកំណត់រចនាសម្ព័ន្ធដើម្បីបង្កើតឧបករណ៍ពហុមុខងារ (សមាសធាតុ)។
អតីតample ខាងក្រោមបង្ហាញពីរបៀបបង្កើត class instance ហើយបន្ថែមវាទៅក្នុង configuration។
Example – ការបន្ថែម Class Instance ទៅឧបករណ៍របស់អ្នក។

ស្ថានភាព sl_status_t; uint8_t class_nbr;
/* បង្កើត instance នៃ class ដែលអ្នកចង់ប្រើ។*/ /* ចំណាំថាអាស្រ័យលើ class មុខងារនេះអាចមានអាគុយម៉ង់ច្រើន។ */ ស្ថានភាព = sl_usbd_ _create_instance(&class_nbr); ប្រសិនបើ (ស្ថានភាព ! SL_STATUS_OK) { /* កំហុសបានកើតឡើង។ ការដោះស្រាយកំហុសគួរតែត្រូវបានបន្ថែមនៅទីនេះ។ */ }
/* បន្ថែម class instance ទៅការកំណត់រចនាសម្ព័ន្ធពេញល្បឿន។ */ ស្ថានភាព = sl_usbd_ _add_to_configuration(class_nbr, /* លេខថ្នាក់ ត្រឡប់ដោយ sl_usbd_ _បង្កើត_ឧទាហរណ៍។ */
config_nbr_fs); /* លេខកំណត់រចនាសម្ព័ន្ធត្រឡប់ដោយ sl_usbd_core_add_configuration() ។ */ ប្រសិនបើ (ស្ថានភាព ! SL_STATUS_OK) { /* កំហុសបានកើតឡើង។ ការដោះស្រាយកំហុសគួរតែត្រូវបានបន្ថែមនៅទីនេះ។ */ }
ចាប់ផ្តើមឧបករណ៍ USB របស់អ្នក។
តាមលំនាំដើម ឧបករណ៍នឹងត្រូវបានចាប់ផ្តើមដោយស្វ័យប្រវត្តិដោយភារកិច្ចស្នូលឧបករណ៍ USB បន្ទាប់ពីការចាប់ផ្តើមឧបករណ៍ត្រូវបានបញ្ចប់ ហើយខឺណែលបានចាប់ផ្តើម។ ដើម្បីគ្រប់គ្រងនៅពេលដែលឧបករណ៍ត្រូវបានចាប់ផ្តើម និងអាចមើលឃើញដោយម៉ាស៊ីន USB សូមប្រើការកំណត់កំណត់ SL_USBD_AUTO_START_USB_DEVICE ដើម្បីបិទមុខងារចាប់ផ្តើមដោយស្វ័យប្រវត្តិ។ នៅពេលបិទដំណើរការ បន្ទាប់ពីអ្នកបានបង្កើត/រៀបចំឧបករណ៍របស់អ្នករួច អ្នកអាចចាប់ផ្តើមវា ហើយធ្វើឱ្យវាអាចមើលឃើញដោយម៉ាស៊ីន USB ដោយហៅមុខងារ sl_usbd_core_start_device() ។
អតីតampខាងក្រោមនេះបង្ហាញពីរបៀបចាប់ផ្តើមឧបករណ៍របស់អ្នកដោយប្រើមុខងារ sl_usbd_core_start_device() ។
Example – ចាប់ផ្តើមឧបករណ៍របស់អ្នក។

រក្សាសិទ្ធិ © 2025 Silicon Laboratories ។ រក្សា​រ​សិទ្ធ​គ្រប់យ៉ាង។

៥/៥

ជាងview

ស្ថានភាព sl_status_t;
ស្ថានភាព = sl_usbd_core_start_device(); ប្រសិនបើ (ស្ថានភាព ! SL_STATUS_OK) { /* កំហុសបានកើតឡើង។ ការដោះស្រាយកំហុសគួរតែត្រូវបានបន្ថែមនៅទីនេះ។ */ }

មុខងារ Hook ព្រឹត្តិការណ៍
ម៉ូឌុលស្នូលឧបករណ៍ USB ផ្តល់នូវមុខងារទំពក់ខ្សោយពីរដែលអ្នកអាចកំណត់ឡើងវិញនៅក្នុងកម្មវិធីរបស់អ្នក។ គោលបំណងរបស់ពួកគេគឺដើម្បីជូនដំណឹងនៅពេលដែលព្រឹត្តិការណ៍រថយន្តក្រុង និងការកំណត់រចនាសម្ព័ន្ធកើតឡើង។
តារាង - មុខងារភ្ជាប់ព្រឹត្តិការណ៍ USB

ព្រឹត្តិការណ៍

ការពិពណ៌នា

ឡានក្រុង

ត្រូវបានហៅនៅពេលព្រឹត្តិការណ៍ USB Bus កើតឡើង

ការកំណត់រចនាសម្ព័ន្ធត្រូវបានហៅនៅពេលដែលព្រឹត្តិការណ៍កំណត់រចនាសម្ព័ន្ធ USB កើតឡើង

ហត្ថលេខាមុខងារ
ចាត់ទុកជាមោឃៈ sl_usbd_on_bus_event (ព្រឹត្តិការណ៍ sl_usbd_bus_event_t); ទុកជាមោឃៈ sl_usbd_on_config_event(sl_usbd_config_event_t event, uint8_t config_nbr);

Example – មុខងារ Hook ព្រឹត្តិការណ៍

ទុកជាមោឃៈ sl_usbd_on_bus_event(sl_usbd_bus_event_t event) { switch (event) { case SL_USBD_EVENT_BUS_CONNECT៖
// បានហៅនៅពេលដែលខ្សែ USB ត្រូវបានបញ្ចូលនៅក្នុងការបំបែកឧបករណ៍បញ្ជាម៉ាស៊ីន;
ករណី SL_USBD_EVENT_BUS_DISCONNECT: // បានហៅនៅពេលដែលខ្សែ USB ត្រូវបានដកចេញពីការបំបែកឧបករណ៍បញ្ជាម៉ាស៊ីន។
ករណី SL_USBD_EVENT_BUS_RESET: // បានហៅនៅពេលដែលម៉ាស៊ីនផ្ញើការបំបែកពាក្យបញ្ជាកំណត់ឡើងវិញ;
ករណី SL_USBD_EVENT_BUS_SUSPEND: // បានហៅនៅពេលដែលម៉ាស៊ីនផ្ញើការបំបែកពាក្យបញ្ជាផ្អាក;
ករណី SL_USBD_EVENT_BUS_RESUME: // បានហៅនៅពេលដែលម៉ាស៊ីនផ្ញើការបំបែកពាក្យបញ្ជាភ្ញាក់ឡើង;
លំនាំដើម៖ បំបែក; } }
ទុកជាមោឃៈ sl_usbd_on_config_event(sl_usbd_config_event_t event, uint8_t config_nbr) { switch (event) { case SL_USBD_EVENT_CONFIG_SET៖
// បានហៅនៅពេលដែលម៉ាស៊ីនកំណត់ការបំបែកការកំណត់រចនាសម្ព័ន្ធ;
ករណី SL_USBD_EVENT_CONFIG_UNSET: // បានហៅនៅពេលដែលការកំណត់រចនាសម្ព័ន្ធមិនត្រូវបានបំបែក;
លំនាំដើម៖ បំបែក; } }

រក្សាសិទ្ធិ © 2025 Silicon Laboratories ។ រក្សា​រ​សិទ្ធ​គ្រប់យ៉ាង។

៥/៥

ជាងview

រក្សាសិទ្ធិ © 2025 Silicon Laboratories ។ រក្សា​រ​សិទ្ធ​គ្រប់យ៉ាង។

៥/៥

ជាងview
ជាងview

ថ្នាក់ឧបករណ៍ USB

ថ្នាក់ USB ដែលមាននៅក្នុង Silicon Labs USB Device ចែករំលែកលក្ខណៈទូទៅមួយចំនួន។ ផ្នែកនេះពន្យល់ពីលក្ខណៈទាំងនេះ និងអន្តរកម្មរបស់ពួកគេជាមួយស្រទាប់ស្នូល។
សម្រាប់ព័ត៌មានបន្ថែមអំពីថ្នាក់ជាក់លាក់មួយ សូមមើលខាងក្រោម៖
CDC ACM Class HID Class MSC SCSI Class Vendor Class
អំពី Class Instances
ថ្នាក់ USB ដែលមាននៅក្នុងឧបករណ៍ USB អនុវត្តគោលគំនិតនៃ class instances ។ class instance តំណាងឱ្យមុខងារមួយនៅក្នុងឧបករណ៍។ មុខងារអាចត្រូវបានពិពណ៌នាដោយចំណុចប្រទាក់មួយ ឬដោយក្រុមនៃចំណុចប្រទាក់ និងជាកម្មសិទ្ធិរបស់ថ្នាក់ជាក់លាក់មួយ។
ការអនុវត្តថ្នាក់ USB នីមួយៗមានការកំណត់រចនាសម្ព័ន្ធ និងមុខងារមួយចំនួនដូចគ្នា ដោយផ្អែកលើគោលគំនិតនៃថ្នាក់ឧទាហរណ៍ ការកំណត់រចនាសម្ព័ន្ធ និងមុខងារទូទៅត្រូវបានបង្ហាញក្នុងតារាងខាងក្រោម។ នៅក្នុងចំណងជើងជួរឈរ 'Constants or Function' កន្លែងដាក់ XXXX អាចត្រូវបានជំនួសដោយឈ្មោះនៃថ្នាក់៖ CDC, HID, MSC, CDC_ACM ឬ VENDOR (អ្នកលក់សម្រាប់ឈ្មោះមុខងារ)។
តារាង – ថេរ និងមុខងារដែលទាក់ទងនឹងគំនិតនៃវត្ថុថ្នាក់ច្រើន។

ថេរ ឬមុខងារ
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 iguration()

ការពិពណ៌នា
កំណត់រចនាសម្ព័ន្ធចំនួនអតិបរិមានៃវត្ថុថ្នាក់។
កំណត់រចនាសម្ព័ន្ធចំនួនអតិបរមានៃការកំណត់។ កំឡុងពេលចាប់ផ្តើមថ្នាក់ វត្ថុថ្នាក់ដែលបានបង្កើតនឹងត្រូវបានបន្ថែមទៅការកំណត់រចនាសម្ព័ន្ធមួយ ឬច្រើន។ បង្កើត​ឧទាហរណ៍​ថ្នាក់​ថ្មី។
បន្ថែមឧទាហរណ៍ថ្នាក់ដែលមានស្រាប់ទៅការកំណត់រចនាសម្ព័ន្ធឧបករណ៍ដែលបានបញ្ជាក់។

នៅក្នុងលក្ខខណ្ឌនៃការអនុវត្តកូដ ថ្នាក់នឹងប្រកាសអថេរសកលមូលដ្ឋានដែលមានរចនាសម្ព័ន្ធគ្រប់គ្រងថ្នាក់។ រចនាសម្ព័នការគ្រប់គ្រងថ្នាក់នេះត្រូវបានភ្ជាប់ជាមួយឧទាហរណ៍ថ្នាក់មួយ ហើយនឹងមានព័ត៌មានជាក់លាក់ដើម្បីគ្រប់គ្រងឧទាហរណ៍ថ្នាក់។
តួលេខខាងក្រោមបង្ហាញពីសេណារីយ៉ូករណីមួយចំនួន។ តួរលេខនីមួយៗមានលេខកូដ example ដែលត្រូវនឹងសេណារីយ៉ូករណី។
រូបភាព – Multiple Class Instances – FS Device (1 Configuration with 1 Interface) តំណាងឱ្យឧបករណ៍ USB ធម្មតា។ ឧបករណ៍នេះគឺពេញល្បឿន (FS) និងមានការកំណត់រចនាសម្ព័ន្ធតែមួយ។ មុខងាររបស់ឧបករណ៍ត្រូវបានពិពណ៌នាដោយចំណុចប្រទាក់មួយដែលផ្សំឡើងដោយចំណុចបញ្ចប់មួយគូសម្រាប់ការទំនាក់ទំនងទិន្នន័យ។ វត្ថុថ្នាក់មួយត្រូវបានបង្កើត ហើយនឹងអនុញ្ញាតឱ្យអ្នកគ្រប់គ្រងចំណុចប្រទាក់ទាំងមូលជាមួយនឹងចំណុចបញ្ចប់ដែលពាក់ព័ន្ធរបស់វា។
រូបភាព – Multiple Class Instances – FS Device 1 Configuration with 1 Interface)

រក្សាសិទ្ធិ © 2025 Silicon Laboratories ។ រក្សា​រ​សិទ្ធ​គ្រប់យ៉ាង។

៥/៥

ជាងview

លេខកូដដែលត្រូវគ្នានឹងរូបភាព – Multiple Class Instances – FS Device (1 Configuration with 1 Interface) ត្រូវបានបង្ហាញក្នុង exampខាងក្រោម។
Example – Multiple Class Instances – FS Device 1 Configuration with 1 Interface)

ស្ថានភាព sl_status_t; uint8_t class_0;

void app_usbd_XXXX_enable(uint8_t class_nbr) { /* Handle Class enable event. */ }

void app_usbd_XXXX_disable(uint8_t class_nbr) { /* Handle Class disable event. */ }

sl_usbd_XXXX_callbacks_t class_callbacks = {

(១៦១៦)

.enable = app_usbd_XXXX_enable,

.disable = app_usbd_XXXX_disable

};

ស្ថានភាព = sl_usbd_XXXX_init();

(១៦១៦)

ប្រសិនបើ (ស្ថានភាព ! SL_STATUS_OK) {

/* $$$$ ដោះស្រាយកំហុស។ */

}

ស្ថានភាព = 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()
មុខងារ។
(1) ចាប់ផ្តើមថ្នាក់។ អថេរខាងក្នុង រចនាសម្ព័ន្ធ និងច្រកថ្នាក់ទាំងអស់នឹងត្រូវបានចាប់ផ្តើម។ ចំណាំថាមុខងារ Init() នៅក្នុងថ្នាក់ខ្លះអាចយកអាគុយម៉ង់ផ្សេងទៀត។

រក្សាសិទ្ធិ © 2025 Silicon Laboratories ។ រក្សា​រ​សិទ្ធ​គ្រប់យ៉ាង។

៥/៥

ជាងview
(2) បង្កើត class instance ដែលជា class_0 ។ អនុគមន៍ sl_usbd_XXXX_create_instance() បែងចែករចនាសម្ព័ន្ធគ្រប់គ្រងថ្នាក់ដែលភ្ជាប់ជាមួយ class_0 ។ អាស្រ័យលើថ្នាក់ sl_usbd_XXXX_create_instance() អាចមានប៉ារ៉ាម៉ែត្របន្ថែមក្រៅពីលេខថ្នាក់ដែលតំណាងឱ្យព័ត៌មានជាក់លាក់នៃថ្នាក់ដែលផ្ទុកនៅក្នុងរចនាសម្ព័ន្ធគ្រប់គ្រងថ្នាក់។ aaa (3) បន្ថែម cl ss instnce, class_0 ទៅកាន់លេខកំណត់រចនាសម្ព័ន្ធដែលបានបញ្ជាក់ config_0 ។ sl_usbd_XXXX_add_to_configuration() នឹងបង្កើតចំណុចប្រទាក់ 0 និងចំណុចបញ្ចប់ IN និង OUT ដែលពាក់ព័ន្ធរបស់វា។ ជាលទ្ធផល class instance រួមបញ្ចូលចំណុចប្រទាក់ 0 និងចំណុចបញ្ចប់របស់វា។ ការទំនាក់ទំនងណាមួយដែលបានធ្វើនៅលើចំណុចប្រទាក់ 0 នឹងប្រើលេខឧទាហរណ៍ថ្នាក់ class_0 ។ រូបភាព – Multiple Class Instances – FS Devices (2 Configurations and Multiple Interfaces) តំណាងឱ្យ ex ស្មុគស្មាញជាងampលេ ឧបករណ៍ដែលមានល្បឿនពេញត្រូវបានផ្សំឡើងដោយការកំណត់ពីរ។ ឧបករណ៍នេះមានមុខងារពីរដែលជាកម្មសិទ្ធិរបស់ថ្នាក់ដូចគ្នា ប៉ុន្តែមុខងារនីមួយៗត្រូវបានពិពណ៌នាដោយចំណុចប្រទាក់ពីរ និងមានចំណុចបញ្ចប់ទ្វេទិសពីរ។ នៅក្នុងនេះ អតីតampដូច្នេះឧទាហរណ៍ថ្នាក់ពីរត្រូវបានបង្កើតឡើង។ ឧទាហរណ៍ថ្នាក់នីមួយៗត្រូវបានភ្ជាប់ជាមួយក្រុមនៃចំណុចប្រទាក់ដែលផ្ទុយនឹងរូបភាព - វត្ថុថ្នាក់ច្រើន - ឧបករណ៍ FS (ការកំណត់រចនាសម្ព័ន្ធ 1 ជាមួយចំណុចប្រទាក់ 1) និងរូបភាព - វត្ថុនៃថ្នាក់ច្រើន - ឧបករណ៍ FS (ការកំណត់រចនាសម្ព័ន្ធ 2 និងចំណុចប្រទាក់ច្រើន) ដែលវត្ថុថ្នាក់ត្រូវបានភ្ជាប់ជាមួយចំណុចប្រទាក់តែមួយ។
រូបភាព – Multiple Class Instances – FS Device 2 Configurations and Multiple Interfaces)

លេខកូដដែលត្រូវគ្នានឹងរូបភាព – Multiple Class Instances – FS Device (2 Configurations and Multiple Interfaces) ត្រូវបានបង្ហាញនៅក្នុង exampខាងក្រោម។ ការដោះស្រាយកំហុសត្រូវបានលុបចោលសម្រាប់ភាពច្បាស់លាស់។
Example – Multiple Class Instances – FS Device 2 Configurations and 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);

(១៦១៦)
(2) (3)
(4) (5)
(6) (6)

(1) ចាប់ផ្តើមថ្នាក់។ អថេរខាងក្នុង រចនាសម្ព័ន្ធ និងច្រកថ្នាក់នឹងត្រូវបានចាប់ផ្តើម។
(2) បង្កើត class instance, class_0 ។ អនុគមន៍ sl_usbd_XXXX_create_instance() បែងចែករចនាសម្ព័ន្ធគ្រប់គ្រងថ្នាក់ដែលភ្ជាប់ជាមួយ class_0 ។
(3) បង្កើត 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, to configuration, cfg_0 ។ sl_usbd_XXXX_add_to_configuration() នឹងបង្កើតចំណុចប្រទាក់ 2 ចំណុចប្រទាក់ 3 និងចំណុចបញ្ចប់ IN និង OUT ដែលពាក់ព័ន្ធរបស់ពួកគេ។ class instance number, class_1, នឹងត្រូវបានប្រើសម្រាប់ការទំនាក់ទំនងទិន្នន័យណាមួយនៅលើ interface 2 ឬ interface 3។
(6) បន្ថែម class instances ដូចគ្នា class_0 និង class_1 ទៅកាន់ configuration ផ្សេងទៀត cfg_1 ។
ថ្នាក់នីមួយៗកំណត់រចនាសម្ព័ន្ធនៃប្រភេទ sl_usbd_XXXX_callbacks_t ។ គោលបំណងរបស់វាគឺដើម្បីផ្តល់ឱ្យគ្រប់ class នូវសំណុំនៃមុខងារ callback ដែលត្រូវហៅនៅពេលដែលព្រឹត្តិការណ៍កើតឡើង។ មុខងារហៅត្រឡប់ពីរមាននៅក្នុងថ្នាក់នីមួយៗ។ ពួកគេត្រូវបានបង្ហាញនៅក្នុងតារាងខាងក្រោម។
តារាង - មុខងារហៅត្រឡប់ថ្នាក់ទូទៅ

Fields Description .enable called when the USB class instance ត្រូវបានបើកដំណើរការដោយជោគជ័យ។ .disable បានហៅនៅពេលដែលវត្ថុថ្នាក់ USB ត្រូវបានបិទ។

មុខងារហត្ថលេខាចាត់ទុកជាមោឃៈ app_usbd_XXXX_enable(uint8_t class_nbr); void app_usbd_XXXX_disable(uint8_t class_nbr);

រក្សាសិទ្ធិ © 2025 Silicon Laboratories ។ រក្សា​រ​សិទ្ធ​គ្រប់យ៉ាង។

៥/៥

ជាងview
ជាងview
ឧបករណ៍ USB CDC ACM ថ្នាក់
ឧបករណ៍ USB CDC Base Class លើសview ឧបករណ៍ USB CDC ACM Class ត្រូវការធនធានពី Core USB Device CDC ACM Subclass Overview ឧបករណ៍ USB CDC ACM Class Configuration USB Device CDC ACM Class Programming Guide
ផ្នែកនេះពិពណ៌នាអំពីថ្នាក់ឧបករណ៍ទំនាក់ទំនង (CDC) និងថ្នាក់រង CDC ដែលពាក់ព័ន្ធដែលគាំទ្រដោយជង់ឧបករណ៍ USB របស់ Silicon Labs ។ Silicon Labs USB-Device បច្ចុប្បន្នគាំទ្រប្រភេទរង Abstract Control Model (ACM) ដែលជាទូទៅត្រូវបានប្រើប្រាស់សម្រាប់ការត្រាប់តាមសៀរៀល។
CDC រួមបញ្ចូលឧបករណ៍ទូរគមនាគមន៍ និងបណ្តាញផ្សេងៗ។ ឧបករណ៍ទូរគមនាគមន៍រួមបញ្ចូលម៉ូឌឹមអាណាឡូក ទូរស័ព្ទអាណាឡូក និងឌីជីថល អាដាប់ទ័រស្ថានីយ ISDN ។ល។ampដូច្នេះ ឧបករណ៍បណ្តាញមាន ADSL និងម៉ូដឹមខ្សែកាប អាដាប់ទ័រអ៊ីសឺរណិត និងមជ្ឈមណ្ឌល។ CDC កំណត់ក្របខណ្ឌមួយដើម្បីបញ្ចូលស្តង់ដារសេវាកម្មទំនាក់ទំនងដែលមានស្រាប់ ដូចជា V.250 (សម្រាប់ម៉ូដឹមលើបណ្តាញទូរស័ព្ទ) និង Ethernet (សម្រាប់ឧបករណ៍បណ្តាញក្នុងតំបន់) ដោយប្រើតំណភ្ជាប់ USB ។ ឧបករណ៍ទំនាក់ទំនងគឺទទួលខុសត្រូវលើការគ្រប់គ្រងឧបករណ៍ ការគ្រប់គ្រងការហៅទូរសព្ទនៅពេលចាំបាច់ និងការបញ្ជូនទិន្នន័យ។
CDC កំណត់ក្រុមឧបករណ៍សំខាន់ៗចំនួនប្រាំពីរ។ ក្រុមនីមួយៗជាកម្មសិទ្ធិរបស់គំរូនៃការប្រាស្រ័យទាក់ទង ដែលអាចរួមបញ្ចូលថ្នាក់រងមួយចំនួន។ ក្រុមឧបករណ៍នីមួយៗមានឯកសារបញ្ជាក់ជាក់លាក់របស់វា ក្រៅពីថ្នាក់មូលដ្ឋាន CDC ។ ក្រុមទាំងប្រាំពីរគឺ៖
Public Switched Telephone Network (PSTN) ឧបករណ៍រួមមាន ម៉ូដឹម ខ្សែសំលេង ទូរស័ព្ទ និងឧបករណ៍ត្រាប់តាមសៀរៀល។ ឧបករណ៍បណ្តាញឌីជីថលសេវារួមបញ្ចូលគ្នា (ISDN) រួមទាំងអាដាប់ទ័រស្ថានីយ និងទូរស័ព្ទ។ ឧបករណ៍ Ethernet Control Model (ECM) រួមទាំងឧបករណ៍ដែលគាំទ្រគ្រួសារ IEEE 802 (ឧទាហរណ៍៖ ម៉ូដឹមខ្សែ និង ADSL អាដាប់ទ័រវ៉ាយហ្វាយ)។ ឧបករណ៍ Asynchronous Transfer Mode (ATM) រួមទាំងម៉ូដឹម ADSL និងឧបករណ៍ផ្សេងទៀតដែលភ្ជាប់ទៅបណ្តាញ ATM (ស្ថានីយការងារ រ៉ោតទ័រ កុងតាក់ LAN)។ ឧបករណ៍ទំនាក់ទំនងចល័តឥតខ្សែ (WMC) រួមទាំងឧបករណ៍ទូរស័ព្ទទំនាក់ទំនងពហុមុខងារដែលប្រើដើម្បីគ្រប់គ្រងទំនាក់ទំនងជាសំឡេង និងទិន្នន័យ។ ឧបករណ៍ Ethernet Emulation Model (EEM) ដែលផ្លាស់ប្តូរទិន្នន័យ Ethernet-framed។ ឧបករណ៍ត្រួតពិនិត្យបណ្តាញគំរូ (NCM) រួមទាំងឧបករណ៍បណ្តាញល្បឿនលឿន (ម៉ូដឹមការចូលប្រើកញ្ចប់ព័ត៌មានល្បឿនលឿន ឧបករណ៍ស្ថានីយខ្សែ)
CDC និង​ការ​អនុវត្ត​ថ្នាក់​រង​ដែល​ពាក់ព័ន្ធ​អនុលោម​តាម​លក្ខណៈ​ពិសេស​ដូច​ខាង​ក្រោម៖
Universal Serial Bus, Class Definitions for Communication Devices, Revision 1.2, November 3 2010. Universal Serial Bus, Communications, Subclass for PSTN Devices, Revision 1.2, February 9 2007។
ឧបករណ៍ USB CDC Base Class លើសview
ឧបករណ៍ CDC ត្រូវបានផ្សំឡើងដោយចំណុចប្រទាក់ខាងក្រោម ដើម្បីអនុវត្តសមត្ថភាពទំនាក់ទំនង៖
Communications Class Interface (CCI) ទទួលខុសត្រូវចំពោះការគ្រប់គ្រងឧបករណ៍ និងជាជម្រើសនៃការគ្រប់គ្រងការហៅទូរសព្ទ។ នេះ។
ការគ្រប់គ្រងឧបករណ៍អនុញ្ញាតឱ្យការកំណត់រចនាសម្ព័ន្ធ និងការគ្រប់គ្រងទូទៅនៃឧបករណ៍ និងការជូនដំណឹងអំពីព្រឹត្តិការណ៍ទៅកាន់ម៉ាស៊ីន។ ការគ្រប់គ្រងការហៅទូរសព្ទអនុញ្ញាតឱ្យបង្កើត និងបញ្ចប់ការហៅទូរសព្ទ។ ការគ្រប់គ្រងការហៅទូរស័ព្ទអាចត្រូវបានគុណតាមរយៈ DCI CCI គឺចាំបាច់សម្រាប់ឧបករណ៍ CDC ទាំងអស់។ វាកំណត់មុខងារ CDC ដោយបញ្ជាក់គំរូទំនាក់ទំនងដែលគាំទ្រដោយឧបករណ៍ CDC ។ ចំណុចប្រទាក់ខាងក្រោម CCI អាចជាចំណុចប្រទាក់ថ្នាក់ USB ដែលបានកំណត់ណាមួយ ដូចជាអូឌីយ៉ូ ឬចំណុចប្រទាក់ជាក់លាក់របស់អ្នកលក់។ ចំណុចប្រទាក់ជាក់លាក់របស់អ្នកលក់ត្រូវបានតំណាងជាពិសេសដោយ DCI ។
Data Class Interface (DCI) ទទួលខុសត្រូវចំពោះការបញ្ជូនទិន្នន័យ។ ទិន្នន័យដែលបានបញ្ជូន និង/ឬទទួលមិនអនុវត្តតាមជាក់លាក់ទេ។
ទម្រង់។ ទិន្នន័យអាចជាទិន្នន័យឆៅពីខ្សែទំនាក់ទំនង ទិន្នន័យតាមទម្រង់កម្មសិទ្ធិ។ល។ DCI ទាំងអស់ដែលធ្វើតាម CCI អាចត្រូវបានគេមើលឃើញថាជាចំណុចប្រទាក់រង
ឧបករណ៍ CDC ត្រូវតែមាន CCI យ៉ាងតិចមួយ និង DCI សូន្យ ឬច្រើន។ CCI មួយ និង DCI ក្រោមបង្គាប់ណាមួយរួមគ្នាផ្តល់នូវលក្ខណៈពិសេសមួយដល់ម្ចាស់ផ្ទះ។ សមត្ថភាពនេះក៏ត្រូវបានគេសំដៅថាជាមុខងារផងដែរ។ នៅក្នុងឧបករណ៍សមាសធាតុ CDC អ្នកអាចមានច្រើន។

រក្សាសិទ្ធិ © 2025 Silicon Laboratories ។ រក្សា​រ​សិទ្ធ​គ្រប់យ៉ាង។

៥/៥

ជាងview
មុខងារ។ ដូច្នេះ ឧបករណ៍​នឹង​ត្រូវ​បាន​ផ្សំ​ឡើង​ដោយ​សំណុំ​ជា​ច្រើន​នៃ CCI និង DCI ដូច​បង្ហាញ​ក្នុង​រូបភាព – CDC Composite Device។
រូបភាព - ឧបករណ៍សមាសធាតុ CDC

ឧបករណ៍ CDC ទំនងជាប្រើការរួមបញ្ចូលគ្នានៃចំណុចបញ្ចប់ខាងក្រោម៖
ចំណុចបញ្ចប់នៃការគ្រប់គ្រង IN និង OUT មួយគូហៅថា ចំណុចបញ្ចប់លំនាំដើម។ ភាគច្រើនស្រេចចិត្ត ឬរំខាននៅក្នុងចំណុចបញ្ចប់។ គូនៃចំណុចបញ្ចប់ IN និង OUT ភាគច្រើន ឬ isochronous ។ សូមចំណាំថា ជង់ឧបករណ៍ USB Silicon Labs បច្ចុប្បន្នមិនគាំទ្រចំណុចបញ្ចប់ isochronous ទេ។
តារាងខាងក្រោមបង្ហាញពីការប្រើប្រាស់ចំណុចបញ្ចប់ផ្សេងៗគ្នា និងដោយចំណុចប្រទាក់ CDC ដែលពួកគេត្រូវបានប្រើប្រាស់។
តារាង - ការប្រើប្រាស់ចំណុចបញ្ចប់ CDC

ចំណុចបញ្ចប់
គ្រប់គ្រង IN
គ្រប់គ្រង OUT
រំខាន ឬច្រើន IN Bulk ឬ isochronous IN Bulk ឬ isochronous
ចេញ

ទិសដៅ
ឧបករណ៍ទៅម៉ាស៊ីន
ម៉ាស៊ីន-ឧបករណ៍
ឧបករណ៍ទៅម៉ាស៊ីន
ឧបករណ៍ទៅម៉ាស៊ីន
ម៉ាស៊ីន-ឧបករណ៍

ការប្រើប្រាស់ចំណុចប្រទាក់

ស៊ី.ស៊ី.អាយ

សំណើស្តង់ដារសម្រាប់ការរាប់បញ្ចូល សំណើតាមថ្នាក់ជាក់លាក់ ឧបករណ៍

ការគ្រប់គ្រង និងហៅជាជម្រើស ការគ្រប់គ្រង។

ស៊ី.ស៊ី.អាយ

សំណើស្តង់ដារសម្រាប់ការរាប់បញ្ចូល សំណើតាមថ្នាក់ជាក់លាក់ ឧបករណ៍

ការគ្រប់គ្រង និងហៅជាជម្រើស ការគ្រប់គ្រង។

ស៊ី.ស៊ី.អាយ

ការជូនដំណឹងអំពីព្រឹត្តិការណ៍ ដូចជាការចាប់រោទ៍ ស្ថានភាពខ្សែសៀរៀល ស្ថានភាពបណ្តាញ។

ឌីស៊ីអាយ

ការទំនាក់ទំនងទិន្នន័យឆៅ ឬទម្រង់។

ឌីស៊ីអាយ

ការទំនាក់ទំនងទិន្នន័យឆៅ ឬទម្រង់។

ឧបករណ៍ទំនាក់ទំនងភាគច្រើនប្រើចំណុចបញ្ចប់ដែលរំខាន ដើម្បីជូនដំណឹងដល់ម្ចាស់ផ្ទះនៃព្រឹត្តិការណ៍។ ចំណុចបញ្ចប់ Isochronous មិនគួរត្រូវបានប្រើប្រាស់សម្រាប់ការបញ្ជូនទិន្នន័យ នៅពេលដែលពិធីការកម្មសិទ្ធិពឹងផ្អែកលើការបញ្ជូនទិន្នន័យឡើងវិញក្នុងករណីមានកំហុសពិធីការ USB ។ ការទំនាក់ទំនង Isochronous អាចបាត់បង់ទិន្នន័យ ដោយសារវាមិនមានយន្តការព្យាយាមម្តងទៀត។
គំរូសំខាន់ៗចំនួនប្រាំពីរនៃការទំនាក់ទំនងរួមមានថ្នាក់រងមួយចំនួន។ ថ្នាក់រងពិពណ៌នាអំពីវិធីដែលឧបករណ៍គួរប្រើ CCI ដើម្បីគ្រប់គ្រងការគ្រប់គ្រងឧបករណ៍ និងការគ្រប់គ្រងការហៅទូរសព្ទ។ តារាងខាងក្រោមបង្ហាញពីថ្នាក់រងដែលអាចធ្វើបានទាំងអស់ និងគំរូទំនាក់ទំនងដែលពួកគេជាកម្មសិទ្ធិ។
តារាង - ថ្នាក់រង CDC

ថ្នាក់រង
គំរូត្រួតពិនិត្យបន្ទាត់ផ្ទាល់ គំរូត្រួតពិនិត្យអរូបី

គំរូទំនាក់ទំនង
PSTN
PSTN

Example នៃឧបករណ៍ប្រើប្រាស់ថ្នាក់រងនេះ។
ឧបករណ៍ម៉ូដឹមដែលគ្រប់គ្រងដោយផ្ទាល់ដោយម៉ាស៊ីន USB
ឧបករណ៍ត្រាប់តាមសៀរៀល ឧបករណ៍ម៉ូឌឹមដែលគ្រប់គ្រងតាមរយៈសំណុំពាក្យបញ្ជាសៀរៀល

រក្សាសិទ្ធិ © 2025 Silicon Laboratories ។ រក្សា​រ​សិទ្ធ​គ្រប់យ៉ាង។

៥/៥

ជាងview

ថ្នាក់រង

គំរូទំនាក់ទំនង

Example នៃឧបករណ៍ប្រើប្រាស់ថ្នាក់រងនេះ។

ម៉ូដែលគ្រប់គ្រងទូរស័ព្ទ

PSTN

ម៉ូដែល ISDN ការគ្រប់គ្រងពហុឆានែល

ម៉ូដែលត្រួតពិនិត្យ CAPI ISDN

គំរូត្រួតពិនិត្យ ECM បណ្តាញអ៊ីសឺរណិត

បណ្តាញអេធីអឹម

អេធីអឹម

ម៉ូដែលត្រួតពិនិត្យ

ម៉ូដែលគ្រប់គ្រងឧបករណ៍ឥតខ្សែ

WMC

ការគ្រប់គ្រងឧបករណ៍ WMC

ម៉ូដែលទូរស័ព្ទចល័តដោយផ្ទាល់

WMC

OBEX

WMC

គំរូ EM ត្រាប់តាមអ៊ីសឺរណិត

ម៉ូដែលត្រួតពិនិត្យបណ្តាញ

អិន។ អិម។ អិម

ឧបករណ៍ទូរស័ព្ទជាសំឡេង
អាដាប់ទ័រស្ថានីយអត្រាមូលដ្ឋាន អាដាប់ទ័រស្ថានីយអត្រាបឋម ទូរសព្ទ
អាដាប់ទ័រស្ថានីយអត្រាមូលដ្ឋាន អាដាប់ទ័រស្ថានីយអត្រាបឋម ម៉ូដឹមខ្សែ DOC-SIS ទូរសព្ទ ម៉ូដឹម ADSL ដែលគាំទ្រការត្រាប់តាម PPPoE អាដាប់ទ័រវ៉ាយហ្វាយ (IEEE 802.11-គ្រួសារ) អាដាប់ទ័រ IEEE 802.3 ម៉ូដឹម ADSL
ឧបករណ៍ស្ថានីយចល័តដែលភ្ជាប់ទៅឧបករណ៍ឥតខ្សែ
ឧបករណ៍ស្ថានីយចល័តដែលភ្ជាប់ទៅឧបករណ៍ឥតខ្សែ ឧបករណ៍ស្ថានីយចល័តដែលភ្ជាប់ទៅឧបករណ៍ឥតខ្សែ
ឧបករណ៍ស្ថានីយចល័តដែលភ្ជាប់ទៅឧបករណ៍ឥតខ្សែ ឧបករណ៍ដោយប្រើស៊ុមអ៊ីសឺរណិតជាស្រទាប់បន្ទាប់នៃការដឹកជញ្ជូន។ មិន​មាន​បំណង​សម្រាប់​ការ​បញ្ជូន​និង​ឧបករណ៍​តភ្ជាប់​អ៊ីនធឺណិត​អាដាប់ទ័រ IEEE 802.3 ដែល​មាន​កម្រិតបញ្ជូន​ទិន្នន័យ​ល្បឿន​លឿន​នៅលើ​បណ្តាញ

ឧបករណ៍ USB CDC ACM Class ត្រូវការធនធានពីស្នូល

រាល់ពេលដែលអ្នកបន្ថែម CDC ACM class instance ទៅក្នុងការកំណត់រចនាសម្ព័ន្ធ USB តាមរយៈការហៅទៅកាន់ function sl_usbd_cdc_acm_add_to_configuration() ធនធានខាងក្រោមនឹងត្រូវបានបែងចែកចេញពីស្នូល។

ធនធាន
ចំណុចប្រទាក់ ចំណុចប្រទាក់ជំនួស ចំណុចប្រទាក់ក្រុម ចំណុចប្រទាក់

បរិមាណ
2 2 3 1

ចំណាំថាលេខទាំងនោះគឺតាមការកំណត់។ នៅពេលដំឡើង SL_USBD_INTERFACE_QUANTITY របស់អ្នក , SL_USBD_ALT_INTERFACE_QUANTITY , SL_USBD_INTERFACE_GROUP_QUANTITY និង SL_USBD_DESCRIPTOR_QUANTITY តម្លៃកំណត់រចនាសម្ព័ន្ធ កុំភ្លេចគិតគូរអំពីចំនួនថ្នាក់ដែលនឹងត្រូវបន្ថែម។ សម្រាប់តម្លៃកំណត់រចនាសម្ព័ន្ធ SL_USBD_OPEN_ENDPOINTS_QUANTITY ចាប់តាំងពីចំណុចបញ្ចប់ត្រូវបានបើកតែនៅពេលដែលការកំណត់រចនាសម្ព័ន្ធត្រូវបានកំណត់ដោយម៉ាស៊ីន អ្នកគ្រាន់តែត្រូវគិតគូរពីចំនួនចំណុចបញ្ចប់ដែលត្រូវការសម្រាប់ឧទាហរណ៍ថ្នាក់មួយ។
ឧបករណ៍ USB CDC ACM Subclass លើសview

ថ្នាក់មូលដ្ឋាន CDC ត្រូវបានផ្សំឡើងដោយចំណុចប្រទាក់ថ្នាក់ទំនាក់ទំនង (CCI) និងចំណុចប្រទាក់ថ្នាក់ទិន្នន័យ (DCI) ដែលត្រូវបានពិភាក្សាយ៉ាងលម្អិតនៅក្នុងឧបករណ៍ USB CDC Base Class Overview . ផ្នែកនេះពិភាក្សាអំពី CCI នៃប្រភេទ ACM ។ វាមានចំណុចបញ្ចប់លំនាំដើមសម្រាប់ធាតុគ្រប់គ្រង និងចំណុចបញ្ចប់រំខានសម្រាប់ធាតុជូនដំណឹង។ គូនៃចំណុចបញ្ចប់ភាគច្រើនត្រូវបានប្រើដើម្បីផ្ទុកទិន្នន័យដែលមិនបានបញ្ជាក់នៅលើ DCI ។
ថ្នាក់រង ACM ត្រូវបានប្រើដោយឧបករណ៍ទំនាក់ទំនងពីរប្រភេទ៖
ឧបករណ៍ដែលគាំទ្រពាក្យបញ្ជា AT (ឧទាហរណ៍ ម៉ូដឹមក្រុមសំឡេង)។ ឧបករណ៍ត្រាប់តាមស៊េរីដែលត្រូវបានគេហៅថាឧបករណ៍ច្រក COM និម្មិតផងដែរ។
មានសំណើជាក់លាក់នៃថ្នាក់រងជាច្រើនសម្រាប់ថ្នាក់រង ACM ។ ពួកគេអនុញ្ញាតឱ្យអ្នកគ្រប់គ្រង និងកំណត់រចនាសម្ព័ន្ធឧបករណ៍។ បញ្ជីពេញលេញ និងការពិពណ៌នានៃសំណើ ACM ទាំងអស់អាចរកបាននៅក្នុងការបញ្ជាក់

រក្សាសិទ្ធិ © 2025 Silicon Laboratories ។ រក្សា​រ​សិទ្ធ​គ្រប់យ៉ាង។

៥/៥

ជាងview ថ្នាក់រងសម្រាប់ឧបករណ៍ PSTN ការកែប្រែ 1.2 ថ្ងៃទី 9 ខែកុម្ភៈ ឆ្នាំ 2007= ផ្នែក 6.2.2 ។
ពីបញ្ជីនេះ ថ្នាក់រង Silicon Labs9 ACM គាំទ្រដូចខាងក្រោម៖
តារាង - សំណើ ACM ដែលគាំទ្រដោយ Silicon Labs

ការពិពណ៌នាសំណើថ្នាក់រង

SetCommFeature GetCommFeature ClearCommFeature

ម៉ាស៊ីនផ្ញើសំណើនេះដើម្បីគ្រប់គ្រងការកំណត់សម្រាប់មុខងារទំនាក់ទំនងដែលបានផ្តល់ឱ្យ។ មិនត្រូវបានប្រើសម្រាប់ការត្រាប់តាមសៀរៀលទេ។
ម៉ាស៊ីនផ្ញើសំណើនេះដើម្បីទទួលបានការកំណត់បច្ចុប្បន្នសម្រាប់មុខងារទំនាក់ទំនងដែលបានផ្តល់ឱ្យ។ មិនត្រូវបានប្រើសម្រាប់ការត្រាប់តាមសៀរៀលទេ។
ម៉ាស៊ីនផ្ញើសំណើនេះដើម្បីសម្អាតការកំណត់សម្រាប់មុខងារទំនាក់ទំនងដែលបានផ្តល់ឱ្យ។ មិនត្រូវបានប្រើសម្រាប់ការត្រាប់តាមសៀរៀលទេ។

SetLineCoding

ម៉ាស៊ីនផ្ញើសំណើនេះដើម្បីកំណត់រចនាសម្ព័ន្ធការកំណត់ឧបករណ៍ ACM៖ អត្រា baud ចំនួននៃប៊ីតឈប់ ប្រភេទ parity និងចំនួនប៊ីតទិន្នន័យ។ សម្រាប់ការត្រាប់តាមសៀរៀល សំណើនេះត្រូវបានផ្ញើដោយស្វ័យប្រវត្តិដោយស្ថានីយសៀរៀលរាល់ពេលដែលអ្នកកំណត់រចនាសម្ព័ន្ធការកំណត់សៀរៀលសម្រាប់ច្រក COM និម្មិតបើកចំហ។

GetLineCoding

ម៉ាស៊ីនផ្ញើសំណើនេះដើម្បីទទួលបានការកំណត់ ACM បច្ចុប្បន្ន (អត្រា baud, បញ្ឈប់ប៊ីត, ភាពស្មើគ្នា, ប៊ីតទិន្នន័យ)។ សម្រាប់ការត្រាប់តាមសៀរៀល ស្ថានីយសៀរៀលផ្ញើសំណើនេះដោយស្វ័យប្រវត្តិក្នុងអំឡុងពេលបើកច្រក COM និម្មិត។

SetControlLineState ម៉ាស៊ីនផ្ញើសំណើនេះដើម្បីគ្រប់គ្រងក្រុមហ៊ុនដឹកជញ្ជូនសម្រាប់ម៉ូដឹមពាក់កណ្តាលពីរ និងបង្ហាញថាឧបករណ៍ស្ថានីយទិន្នន័យ (DTE) រួចរាល់ឬអត់។ នៅក្នុងករណីនៃការត្រាប់តាមសៀរៀល DTE គឺជាស្ថានីយសៀរៀល។ សម្រាប់ការត្រាប់តាមសៀរៀល ស្ថានីយសៀរៀលជាក់លាក់អនុញ្ញាតឱ្យអ្នកផ្ញើសំណើនេះជាមួយនឹងឧបករណ៍បញ្ជាដែលបានកំណត់។

កំណត់បំបែក

ម៉ាស៊ីនផ្ញើសំណើនេះដើម្បីបង្កើតការបំបែករចនាប័ទ្ម RS-232 ។ សម្រាប់ការត្រាប់តាមសៀរៀល ស្ថានីយសៀរៀលជាក់លាក់អនុញ្ញាតឱ្យអ្នកផ្ញើសំណើនេះ។

ថ្នាក់រងរបស់ Silicon Labs9 ACM ប្រើចំណុចបញ្ចប់ IN រំខាន ដើម្បីជូនដំណឹងដល់ម្ចាស់ផ្ទះអំពីស្ថានភាពបន្ទាត់សៀរៀលបច្ចុប្បន្ន។ សៀរៀល
ស្ថានភាពបន្ទាត់គឺជាផែនទីប៊ីតដែលជូនដំណឹងដល់ម្ចាស់ផ្ទះអំពី៖

ទិន្នន័យត្រូវបានលុបចោលដោយសារតែកំហុស Parity លើស កំហុសក្នុងស៊ុម ស្ថានភាពនៃការរកឃើញសញ្ញារោទ៍ ស្ថានភាពនៃយន្តការរកឃើញការបំបែក ស្ថានភាពនៃក្រុមហ៊ុនបញ្ជូនបញ្ជូន ស្ថានភាពនៃការរកឃើញក្រុមហ៊ុនបញ្ជូនអ្នកទទួល

ការអនុវត្តថ្នាក់រងរបស់ Silicon Labs9 ACM អនុលោមតាមលក្ខណៈជាក់លាក់ដូចខាងក្រោមៈ
Universal Serial Bus, Communications, Subclass for PSTN Devices, revision 1.2, February 9, 2007។
ឧបករណ៍ USB CDC ACM Class Configuration

ផ្នែកនេះពិភាក្សាអំពីរបៀបកំណត់ CDC ACM Class (Communication Device Class, Abstract Control Model)។ មានពីរក្រុមនៃប៉ារ៉ាម៉ែត្រកំណត់រចនាសម្ព័ន្ធ៖
ឧបករណ៍ USB CDC ACM Class Application ការកំណត់រចនាសម្ព័ន្ធជាក់លាក់ ឧបករណ៍ USB CDC ACM Class Instance Configurations
ឧបករណ៍ USB CDC ACM Class Application ការកំណត់រចនាសម្ព័ន្ធជាក់លាក់

CDC Base Class ACM Subclass
ថ្នាក់មូលដ្ឋាន CDC

ជាដំបូង ដើម្បីប្រើម៉ូឌុលថ្នាក់ CDC ឧបករណ៍ USB របស់ Silicon Labs អ្នកនឹងត្រូវកែតម្រូវការកំណត់ពេលវេលាចងក្រង CDC #define-s ទៅតាមតម្រូវការកម្មវិធីរបស់អ្នក។ ពួកវាត្រូវបានដាក់ជាក្រុមឡើងវិញនៅក្នុងបឋមកថា sl_usbd_core_config.h file នៅក្រោមផ្នែក CDC ។ គោលបំណងរបស់ពួកគេគឺដើម្បីជូនដំណឹងដល់ម៉ូឌុលឧបករណ៍ USB អំពីចំនួនវត្ថុ USB CDC ដែលត្រូវបែងចែក។

រក្សាសិទ្ធិ © 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 អាចត្រូវបានបន្ថែមទៅការកំណត់រចនាសម្ព័ន្ធ aaaa មួយ ឬច្រើន vi c ll ទៅ sl_usbd_cdc_acm_add_to_configuration() ។
ចំនួនសរុបនៃចំណុចប្រទាក់ទិន្នន័យ (DCI) សម្រាប់មុខងារ CDC ទាំងអស់។ អនុគមន៍ CDC ACM នីមួយៗ aaaaaaaaa dded vi c ll ទៅអនុគមន៍ sl_usbd_cdc_acm_create_instance() នឹង dd dt interf ce ។

តម្លៃលំនាំដើម
2
1
2

ថ្នាក់រង ACM
ថ្នាក់រង ACM មានការកំណត់រចនាសម្ព័ន្ធពេលវេលាចងក្រងមួយដែលបង្ហាញក្នុងតារាងខាងក្រោម។
តារាង - ឧបករណ៍ USB CDC ការកំណត់រចនាសម្ព័ន្ធ ACM កំណត់

ឈ្មោះកំណត់រចនាសម្ព័ន្ធ
SL_USBD_CDC_ACM_SUBCL ASS_I NSTANCE_QUANTITY

ការពិពណ៌នា
កំណត់រចនាសម្ព័ន្ធចំនួននៃ subclass instances ដែលអ្នកនឹងបែងចែកតាមរយៈការហៅទៅកាន់
មុខងារ sl_usbd_cdc_acm_create_instance() ។

តម្លៃលំនាំដើម
2

ឧបករណ៍ USB CDC ACM Class Instance Configurations

ផ្នែកនេះកំណត់ការកំណត់រចនាសម្ព័ន្ធដែលទាក់ទងនឹង CDC ACM serial class instances ។ Class Instance Creation line state interval call សមត្ថភាព mgmt p_acm_callbacks
ការបង្កើត Class Instance

ដើម្បីបង្កើត CDC ACM serial class instance ហៅ function T a sl_usbd_cdc_acm_create_instance() ។ មុខងាររបស់គាត់ t kes អាគុយម៉ង់ការកំណត់រចនាសម្ព័ន្ធបី ដូចដែលបានពិពណ៌នានៅទីនេះ។

line_state_interval
នេះគឺជាចន្លោះពេល (គិតជាមិល្លីវិនាទី) ដែលឧទាហរណ៍ថ្នាក់សៀរៀល CDC ACM របស់អ្នកនឹងរាយការណ៍ពីការជូនដំណឹងអំពីស្ថានភាពបន្ទាត់ទៅកាន់ម៉ាស៊ីន T aa ។ v lue របស់គាត់ត្រូវតែជាថាមពលពីរ (1, 2, 4, 8, 16 ។ល។)។

call_mgmt_capabilities
ផែនទីសមត្ថភាពគ្រប់គ្រងការហៅទូរសព្ទ។ តម្លៃ​ដែល​អាច​ធ្វើ​បាន​នៃ​ផែនទី​ប៊ីត​មាន​ដូច​ខាង​ក្រោម៖

តម្លៃ (ប៊ីត)
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 សំណុំនៃមុខងារ callback ដែលត្រូវបានហៅនៅពេលដែលព្រឹត្តិការណ៍ CDC ACM កើតឡើង។ មិនមែន​រាល់​ការហៅ​ត្រឡប់​ទាំងអស់​គឺ​ជា​កាតព្វកិច្ច​ទេ ហើយ​ទ្រនិច​ទទេ (NULL) អាច​ត្រូវ​បាន​បញ្ជូន​ក្នុង​រចនាសម្ព័ន្ធ​ការហៅ​ត្រឡប់​ដែល​ប្រែប្រួល​នៅពេល​ការហៅ​ត្រឡប់​មិន​ត្រូវ​ការ។ តារាងខាងក្រោមពិពណ៌នាអំពីវាលកំណត់រចនាសម្ព័ន្ធនីមួយៗដែលមាននៅក្នុងរចនាសម្ព័ន្ធកំណត់រចនាសម្ព័ន្ធនេះ។
តារាង – sl_usbd_cdc_acm _callbacks_t រចនាសម្ព័ន្ធកំណត់រចនាសម្ព័ន្ធ

វាល

ការពិពណ៌នា

.បើក

ហៅទូរសព្ទនៅពេលបើកដំណើរការ USB class instance

ដោយជោគជ័យ។

.បិទ

បាន​ហៅ​នៅ​ពេល​ដែល​វត្ថុ​ថ្នាក់ USB ត្រូវ​បាន​បិទ។

.line_control_changed បានហៅនៅពេលទទួលការផ្លាស់ប្តូរការគ្រប់គ្រងបន្ទាត់។

line_coding_changed ហៅនៅពេលទទួលការផ្លាស់ប្តូរកូដបន្ទាត់។

ហត្ថលេខាមុខងារ
void 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

សូមមើលផ្នែក ការចុះឈ្មោះការជូនដំណឹងអំពីព្រឹត្តិការណ៍ Callbacks សម្រាប់មុខងារ callback ឧampលេ
មគ្គុទ្ទេសក៍កម្មវិធីថ្នាក់ឧបករណ៍ USB CDC ACM

ផ្នែកនេះពន្យល់ពីរបៀបប្រើថ្នាក់ CDC Abstract Control Model ។ ការចាប់ផ្តើមឧបករណ៍ USB CDC ACM Class ការបន្ថែមឧបករណ៍ USB CDC ACM Class Instance ទៅឧបករណ៍របស់អ្នក ទំនាក់ទំនងដោយប្រើថ្នាក់ CDC ACM
កំពុងចាប់ផ្តើមឧបករណ៍ USB CDC ACM Class

ដើម្បីបន្ថែមមុខងារថ្នាក់ CDC ACM ទៅឧបករណ៍របស់អ្នក ដំបូងអ្នកត្រូវតែចាប់ផ្តើមថ្នាក់មូលដ្ឋាន CDC និងថ្នាក់រង ACM ដោយ aac lling មុខងារ sl_usbd_cdc_init() nd sl_usbd_cdc_acm_init() ។ T aaaaa he ex mple ខាងក្រោមបង្ហាញពីរបៀប c ll sl_usbd_cdc_init() nd sl_usbd_cdc_acm_init() ដោយប្រើ def ult rguments ។

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 ទៅការកំណត់រចនាសម្ព័ន្ធឧបករណ៍របស់អ្នក ការចុះឈ្មោះការជូនដំណឹងព្រឹត្តិការណ៍ Callbacks
ការបង្កើត CDC ACM Class Instance
aa M aaa Crete CDC AC cl ss instnce ដោយ c lling the function sl_usbd_cdc_acm_create_instance() ។ T aaa M aaa he ex mple ខាងក្រោមបង្ហាញពីរបៀបបង្កើត CDC AC cl ss instnce vi sl_usbd_cdc_acm_create_instance() ។
Example – ការបង្កើតអនុគមន៍ CDC ACM តាមរយៈ sl_usbd_cdc_acm_create_instance()

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 class instance អ្នកអាចបន្ថែមវាទៅ configuration ដោយហៅ function
sl_usbd_cdc_acm_add_to_configuration() ។
T aa he ex mple ខាងក្រោមបង្ហាញពីរបៀប c ll sl_usbd_cdc_acm_add_to_configuration() ។
Example – ហៅទៅ USBD ACM sl_usbd_cdc_acm_add_to_configuration()

ស្ថានភាព sl_status_t;

ស្ថានភាព = sl_usbd_cdc_acm_add_to_configuration(ថ្នាក់រង_nbr,

(១៦១៦)

config_nbr_fs);

(១៦១៦)

ប្រសិនបើ (ស្ថានភាព ! SL_STATUS_OK) {

/* កំហុសបានកើតឡើង។ ការដោះស្រាយកំហុសគួរតែត្រូវបានបន្ថែមនៅទីនេះ។ */

}

aaa (1) លេខ Cl ss ទៅ dd ទៅកាន់ការកំណត់រចនាសម្ព័ន្ធដែលត្រឡប់ដោយ sl_usbd_cdc_acm_create_instance() ។ (2) លេខកំណត់រចនាសម្ព័ន្ធ (នៅទីនេះបន្ថែមវាទៅការកំណត់រចនាសម្ព័ន្ធពេញល្បឿន)។
ការចុះឈ្មោះការជូនដំណឹងអំពីព្រឹត្តិការណ៍ Callbacks
ថ្នាក់ CDC ACM Serial អាចជូនដំណឹងដល់កម្មវិធីរបស់អ្នកអំពីការផ្លាស់ប្តូរណាមួយនៅក្នុងការគ្រប់គ្រងបន្ទាត់ ឬការសរសេរកូដតាមរយៈមុខងារហៅត្រលប់ការជូនដំណឹង។ រចនាសម្ព័ន្ធមុខងារ callback អាចត្រូវបានឆ្លងកាត់ជាអាគុយម៉ង់កំឡុងពេលបង្កើតឧទាហរណ៍ ACM ។ ចំណាំថាការហៅត្រឡប់មកវិញទាំងនោះគឺស្រេចចិត្ត។ ឧample – CDC ACM Callbacks Registration បង្ហាញពីការប្រើប្រាស់មុខងារចុះឈ្មោះ callback។ ឧample – CDC ACM Callbacks Implementation បង្ហាញអតីតample នៃការអនុវត្តមុខងារ callback ។
Example – CDC ACM Callbacks Registration

រក្សាសិទ្ធិ © 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_acm_line;
ស្ថានភាព = 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_nev;
ប្រសិនបើ (ស្ថានភាព ! SL_STATUS_OK) { /* កំហុសបានកើតឡើង។ ការដោះស្រាយកំហុសគួរតែត្រូវបានបន្ថែមនៅទីនេះ។ */ }
Example – CDC ACM ការអនុវត្តការហៅត្រឡប់មកវិញ

bool app_usbd_cdc_acm_line_coding_changed (uint8_t

subclass_nbr,

sl_usbd_cdc_acm_line_coding_t * p_line_coding)

{

uint32_t baudrate_new;

uint8_t parity_new;

uint8_t stop_bits_new;

uint8_t data_bits_ថ្មី;

/* 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;

ត្រឡប់ (ពិត);

(១៦១៦)

}

មោឃៈ app_usbd_cdc_acm_line_control_changed (uint8_t subclass_nbr, uint8_t event, uint8_t event_changed)
{ bool rts_state; bool rts_state_changed; bool dtr_state; bool dtr_state_changed; bool brk_state; bool brk_state_changed;

/* TODO អនុវត្តការគ្រប់គ្រងបន្ទាត់ថ្មី។ */ rts_state = ((ព្រឹត្តិការណ៍ & SL_USBD_CDC_ACM_CTRL_RTS) ! 0) ? ពិត៖ មិនពិត; rts_state_changed = ((event_changed & SL_USBD_CDC_ACM_CTRL_RTS) ! 0) ? ពិត៖ មិនពិត; dtr_state = ((ព្រឹត្តិការណ៍ & SL_USBD_CDC_ACM_CTRL_DTR) ! 0) ? ពិត៖ មិនពិត; dtr_state_changed = ((event_changed & SL_USBD_CDC_ACM_CTRL_DTR) ! 0) ? ពិត៖ មិនពិត; brk_state = ((ព្រឹត្តិការណ៍ & SL_USBD_CDC_ACM_CTRL_BREAK) ! 0) ? ពិត៖ មិនពិត; brk_state_changed = ((event_changed & SL_USBD_CDC_ACM_CTRL_BREAK) ! 0) ? ពិត៖ មិនពិត;
}

(1) វាមានសារៈសំខាន់ក្នុងការត្រឡប់មិនពិតទៅមុខងារនេះ ប្រសិនបើការសរសេរកូដបន្ទាត់បរាជ័យ។ បើមិនដូច្នោះទេ ត្រឡប់ពិត។
ការទំនាក់ទំនងដោយប្រើ CDC ACM Class
ស្ថានភាពសៀរៀល
ការគ្រប់គ្រងបន្ទាត់សរសេរកូដ

រក្សាសិទ្ធិ © 2025 Silicon Laboratories ។ រក្សា​រ​សិទ្ធ​គ្រប់យ៉ាង។

៥/៥

ជាងview

Line State Subclass Instance Communication
ស្ថានភាពសៀរៀល
ការសរសេរកូដបន្ទាត់
ម៉ាស៊ីន USB គ្រប់គ្រងការសរសេរកូដបន្ទាត់ (អត្រា baud, parity ។ល។) នៃឧបករណ៍ CDC ACM ។ នៅពេលចាំបាច់ កម្មវិធីត្រូវទទួលខុសត្រូវក្នុងការកំណត់ការសរសេរកូដបន្ទាត់។ មានមុខងារពីរដែលត្រូវបានផ្តល់ជូនដើម្បីទាញយក និងកំណត់ការសរសេរកូដបន្ទាត់បច្ចុប្បន្ន ដូចដែលបានពិពណ៌នានៅក្នុងតារាងខាងក្រោម។
តារាង - មុខងារសរសេរកូដបន្ទាត់ CDC ACM

មុខងារ
sl_usbd_cdc_acm_g អ៊ី t_line _co d ing ()
sl_usbd_cdc_acm_s អ៊ី t_line _co d ing ()

ការពិពណ៌នា
កម្មវិធីរបស់អ្នកអាចទទួលបានការកំណត់ការសរសេរកូដបន្ទាត់បច្ចុប្បន្នដែលបានកំណត់ពីម៉ាស៊ីនជាមួយសំណើ SetLineCoding ឬជាមួយមុខងារ sl_usbd_cdc_acm_set_line_coding() ។
កម្មវិធីរបស់អ្នកអាចកំណត់ការសរសេរកូដបន្ទាត់។ ម៉ាស៊ីនអាចទាញយកការកំណត់ឡើងវិញដោយប្រើសំណើ GetLineCoding ។

ការគ្រប់គ្រងបន្ទាត់
ម៉ាស៊ីន USB គ្រប់គ្រងការគ្រប់គ្រងបន្ទាត់ (ម្ជុល RTS និង DTR សញ្ញាបំបែក និងផ្សេងទៀត) នៃឧបករណ៍ CDC ACM ។ នៅពេលចាំបាច់ កម្មវិធីរបស់អ្នកទទួលខុសត្រូវចំពោះការអនុវត្តការគ្រប់គ្រងបន្ទាត់។ មុខងារមួយត្រូវបានផ្តល់ជូនដើម្បីទាញយក និងកំណត់ការគ្រប់គ្រងបន្ទាត់បច្ចុប្បន្ន ដូចដែលបានពិពណ៌នានៅក្នុងតារាងខាងក្រោម។
តារាង - មុខងារត្រួតពិនិត្យបន្ទាត់ CDC ACM

មុខងារ
sl_usb d _cd c_acm_g អ៊ី t_line _co ntr o l_state ()

កម្មវិធីរបស់អ្នកអាចទទួលបានស្ថានភាពបន្ទាត់ត្រួតពិនិត្យបច្ចុប្បន្នដែលកំណត់ដោយម៉ាស៊ីនជាមួយនឹងសំណើ SetControlLineState ។

រដ្ឋបន្ទាត់
ម៉ាស៊ីន USB ទាញយកស្ថានភាពបន្ទាត់នៅចន្លោះពេលទៀងទាត់។ កម្មវិធីរបស់អ្នកត្រូវតែធ្វើបច្ចុប្បន្នភាពស្ថានភាពបន្ទាត់រាល់ពេលដែលវាផ្លាស់ប្តូរ។ នៅពេលចាំបាច់ កម្មវិធីរបស់អ្នកទទួលខុសត្រូវក្នុងការកំណត់ស្ថានភាពបន្ទាត់។ មុខងារពីរត្រូវបានផ្តល់ជូនដើម្បីទាញយក និងកំណត់ការគ្រប់គ្រងបន្ទាត់បច្ចុប្បន្ន ដូចដែលបានពិពណ៌នានៅក្នុងតារាងខាងក្រោម។
តារាង - មុខងារ 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 ។

Subclass Instance Communication

ថ្នាក់រង ACM របស់ Silicon Labs ផ្តល់នូវមុខងារខាងក្រោមដើម្បីទាក់ទងជាមួយម៉ាស៊ីន។ សម្រាប់ព័ត៌មានលម្អិតអំពីប៉ារ៉ាម៉ែត្រអនុគមន៍ 9 សូមមើលឯកសារយោងអនុគមន៍ CDC ACM ។

ឈ្មោះមុខងារ
sl_usb d _cd c_acm_ re ad () sl_usb d _cd c_acm_write ()

ប្រតិបត្តិការ
ទទួលទិន្នន័យពីម៉ាស៊ីនតាមរយៈចំណុចបញ្ចប់ OUT ច្រើន។ មុខងារនេះត្រូវបានរារាំង។ ផ្ញើទិន្នន័យទៅម៉ាស៊ីនតាមរយៈ bulk IN endpoint។ មុខងារនេះត្រូវបានរារាំង។

រក្សាសិទ្ធិ © 2025 Silicon Laboratories ។ រក្សា​រ​សិទ្ធ​គ្រប់យ៉ាង។

៥/៥

ជាងview

តារាង – CDC ACM Communication API Summary aaaaa sl_usbd_cdc_acm_read() nd sl_usbd_cdc_acm_write() ផ្តល់នូវការទំនាក់ទំនងសមកាលកម្ម ដែលខ្ញុំ ns th t the tr nsfer កំពុងរារាំង។ ម៉្យាងទៀត នៅពេលហៅមុខងារ កម្មវិធីបិទរហូតដល់ការផ្ទេរត្រូវបានបញ្ចប់ដោយមាន ឬគ្មានកំហុស។ ការអស់ពេលអាចត្រូវបានបញ្ជាក់ ដើម្បីជៀសវាងការរង់ចាំជារៀងរហូត។ អតីតample ខាងក្រោមបង្ហាញពីការអាន និងសរសេរអតីតample ដែលទទួលទិន្នន័យពី host ដោយប្រើចំនុចបញ្ចប់ភាគច្រើន OUT ហើយបញ្ជូនទិន្នន័យទៅ host ដោយប្រើ bulk IN endpoint។
ការចុះបញ្ជី - ស៊េរីអាន និងសរសេរ ឧample

__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(ថ្នាក់រង_nbr,

(១៦១៦)

rx_buf,

(១៦១៦)

2u,

0u,

(១៦១៦)

&xfer_len);

ប្រសិនបើ (ស្ថានភាព ! SL_STATUS_OK) {

/* កំហុសបានកើតឡើង។ ការដោះស្រាយកំហុសគួរតែត្រូវបានបន្ថែមនៅទីនេះ។ */

}

ស្ថានភាព = sl_usbd_cdc_acm_write(ថ្នាក់រង_nbr,

(១៦១៦)

tx_buf,

(១៦១៦)

2u,

0u,

(១៦១៦)

&xfer_len);

ប្រសិនបើ (ស្ថានភាព ! SL_STATUS_OK) {

/* កំហុសបានកើតឡើង។ ការដោះស្រាយកំហុសគួរតែត្រូវបានបន្ថែមនៅទីនេះ។ */

}

T aaaaa M (1) he cl ss instnce number cre ted with sl_usbd_cdc_acm_create_instance() ផ្តល់នូវ n intern l យោងទៅថ្នាក់រង AC ដើម្បីបញ្ជូនការផ្ទេរទៅកាន់ចំនុចបញ្ចប់ភាគច្រើនត្រឹមត្រូវ OUT ឬ IN ។ (2) កម្មវិធី​របស់​អ្នក​ត្រូវ​តែ​ប្រាកដ​ថា​សតិបណ្ដោះ​អាសន្ន​ដែល​ផ្ដល់​ឱ្យ​មុខងារ​មាន​ទំហំ​ធំ​គ្រប់គ្រាន់​ដើម្បី​ផ្ទុក​ទិន្នន័យ​ទាំងអស់។ បើមិនដូច្នេះទេ បញ្ហានៃការធ្វើសមកាលកម្មអាចនឹងកើតឡើង។ (3) ដើម្បីជៀសវាងស្ថានភាពទប់ស្កាត់គ្មានកំណត់ សូមបញ្ជាក់រយៈពេលដែលបង្ហាញជាមីលីវិនាទី។ តម្លៃ 809 ធ្វើឱ្យកិច្ចការកម្មវិធីរង់ចាំជារៀងរហូត។ (4) កម្មវិធីផ្តល់នូវសតិបណ្ដោះអាសន្ននៃការបញ្ជូនដំបូង។

រក្សាសិទ្ធិ © 2025 Silicon Laboratories ។ រក្សា​រ​សិទ្ធ​គ្រប់យ៉ាង។

៥/៥

ជាងview
ជាងview

ឧបករណ៍ USB HID ថ្នាក់

ឧបករណ៍ USB HID ថ្នាក់លើសview ឧបករណ៍ USB HID Class តម្រូវការធនធានពីឧបករណ៍ស្នូល USB HID Class ការកំណត់រចនាសម្ព័ន្ធឧបករណ៍ USB HID ថ្នាក់ណែនាំកម្មវិធី HID របាយការណ៍បញ្ចូលតាមកាលកំណត់
ផ្នែកនេះពិពណ៌នាអំពីថ្នាក់ឧបករណ៍ចំណុចប្រទាក់មនុស្ស (HID) ដែលគាំទ្រដោយឧបករណ៍ USB Silicon Labs ។
ថ្នាក់ HID រួមបញ្ចូលឧបករណ៍ដែលប្រើដោយមនុស្សដើម្បីគ្រប់គ្រងប្រតិបត្តិការកុំព្យូទ័រ ដូចជាក្តារចុច កណ្តុរ ឧបករណ៍ចង្អុល និងឧបករណ៍ហ្គេម។
ថ្នាក់ HID ក៏អាចត្រូវបានប្រើនៅក្នុងឧបករណ៍ផ្សំដែលមានការគ្រប់គ្រងដូចជា knobs, switches, buttons និង sliders ។ សម្រាប់អតីតample ការបិទសំឡេង និងការគ្រប់គ្រងកម្រិតសំឡេងនៅក្នុងកាសស្តាប់សំឡេងត្រូវបានគ្រប់គ្រងដោយមុខងារ HID នៃកាស។ ថ្នាក់ HID អាចផ្លាស់ប្តូរទិន្នន័យសម្រាប់គោលបំណងណាមួយដោយប្រើតែការគ្រប់គ្រង និងរំខានការផ្ទេរ។
ថ្នាក់ HID គឺជាថ្នាក់ USB ចាស់ជាងគេ និងប្រើយ៉ាងទូលំទូលាយបំផុត។ ប្រព័ន្ធប្រតិបត្តិការម៉ាស៊ីនធំ ៗ ទាំងអស់ផ្តល់នូវកម្មវិធីបញ្ជាដើមដើម្បីគ្រប់គ្រងឧបករណ៍ HID ដែលជាមូលហេតុដែលឧបករណ៍ជាក់លាក់របស់អ្នកលក់ជាច្រើនដំណើរការជាមួយថ្នាក់ HID ។ ថ្នាក់នេះក៏រួមបញ្ចូលផងដែរនូវប្រភេទផ្សេងៗនៃធាតុលទ្ធផលដូចជា LEDs, audio, tactile feedback, ល។
ការអនុវត្ត HID អនុលោមតាមលក្ខណៈជាក់លាក់ដូចខាងក្រោមៈ
និយមន័យថ្នាក់ឧបករណ៍សម្រាប់ឧបករណ៍ចំណុចប្រទាក់មនុស្ស (HID), 6/27/01, កំណែ 1.11។ Universal Serial Bus HID តារាងប្រើប្រាស់, 10/28/2004, កំណែ 1.12 ។
ឧបករណ៍ USB HID ថ្នាក់លើសview
ជាងview
ឧបករណ៍ HID ត្រូវបានផ្សំឡើងដោយចំណុចបញ្ចប់ដូចខាងក្រោម៖
គូនៃចំណុចបញ្ចប់នៃការគ្រប់គ្រង IN និង OUT ដែលហៅថា ចំណុចបញ្ចប់លំនាំដើម ចំណុចរំខាននៅក្នុងផ្នែកបញ្ចប់ ចំណុចបញ្ចប់ការរំខានជាជម្រើស
តារាងខាងក្រោមពិពណ៌នាអំពីការប្រើប្រាស់ចំណុចបញ្ចប់ផ្សេងៗគ្នា៖
តារាង - ការប្រើប្រាស់ចំណុចបញ្ចប់ថ្នាក់ HID

ការប្រើប្រាស់ទិសដៅបញ្ចប់

គ្រប់គ្រង IN
គ្រប់គ្រង
ចេញ
រំខាន IN
រំខាន
ចេញ

ឧបករណ៍ទៅម៉ាស៊ីន
ម៉ាស៊ីន-ឧបករណ៍
ឧបករណ៍ទៅម៉ាស៊ីន
ម៉ាស៊ីន-ឧបករណ៍

សំណើស្តង់ដារសម្រាប់ការរាប់បញ្ចូល សំណើជាក់លាក់នៃថ្នាក់ និងការទំនាក់ទំនងទិន្នន័យ (ការបញ្ចូល របាយការណ៍លក្ខណៈពិសេសដែលបានផ្ញើទៅម៉ាស៊ីនជាមួយសំណើ GET_REPORT) ។ សំណើស្តង់ដារសម្រាប់ការរាប់បញ្ចូល សំណើជាក់លាក់នៃថ្នាក់ និងការទំនាក់ទំនងទិន្នន័យ (លទ្ធផល របាយការណ៍លក្ខណៈពិសេសដែលទទួលបានពីម៉ាស៊ីនជាមួយនឹងសំណើ SET_REPORT)។ ការទំនាក់ទំនងទិន្នន័យ (របាយការណ៍បញ្ចូល និងលក្ខណៈពិសេស)។
ការទំនាក់ទំនងទិន្នន័យ (របាយការណ៍លទ្ធផល និងលក្ខណៈពិសេស)។

រាយការណ៍

រក្សាសិទ្ធិ © 2025 Silicon Laboratories ។ រក្សា​រ​សិទ្ធ​គ្រប់យ៉ាង។

៥/៥

ជាងview

ម៉ាស៊ីន និងឧបករណ៍ HID ផ្លាស់ប្តូរទិន្នន័យដោយប្រើរបាយការណ៍។ របាយការណ៍មានទិន្នន័យដែលបានធ្វើទ្រង់ទ្រាយដែលផ្តល់ព័ត៌មានអំពីការគ្រប់គ្រង និងធាតុរូបវន្តផ្សេងទៀតនៃឧបករណ៍ HID ។ ការគ្រប់គ្រងគឺអាចគ្រប់គ្រងបានដោយអ្នកប្រើប្រាស់ និងដំណើរការផ្នែកនៃឧបករណ៍។ សម្រាប់អតីតampដូច្នេះ វត្ថុបញ្ជាអាចជាប៊ូតុងនៅលើកណ្ដុរ ឬក្តារចុច កុងតាក់។ល។ អង្គភាពផ្សេងទៀតជូនដំណឹងដល់អ្នកប្រើប្រាស់អំពីស្ថានភាពនៃមុខងារជាក់លាក់របស់ឧបករណ៍៩ សម្រាប់អតីតample, LEDs នៅលើក្តារចុចជូនដំណឹងដល់អ្នកប្រើប្រាស់អំពីការបើកសោ បន្ទះលេខសកម្ម។ល។
ទម្រង់ និងការប្រើប្រាស់ទិន្នន័យរបាយការណ៍ត្រូវបានយល់ដោយម៉ាស៊ីនដោយការវិភាគខ្លឹមសារនៃអ្នកពណ៌នារបាយការណ៍។ ការវិភាគខ្លឹមសារគឺធ្វើឡើងដោយអ្នកញែក។ អ្នកពិពណ៌នារបាយការណ៍ពិពណ៌នាអំពីទិន្នន័យដែលផ្តល់ដោយការគ្រប់គ្រងនីមួយៗនៅក្នុងឧបករណ៍មួយ។ វាត្រូវបានផ្សំឡើងដោយធាតុដែលជាបំណែកនៃព័ត៌មានអំពីឧបករណ៍ និងមានបុព្វបទ 1 បៃ និងប្រវែងអថេរ
ទិន្នន័យ។ សម្រាប់ព័ត៌មានលម្អិតអំពីទម្រង់ធាតុ សូមមើល
1.11=, ផ្នែក 5.6 និង 6.2.2 ។
វត្ថុសំខាន់ៗមានបីប្រភេទ៖
ធាតុសំខាន់កំណត់ ឬដាក់ជាក្រុមប្រភេទជាក់លាក់នៃវាលទិន្នន័យ។
ធាតុសកលពិពណ៌នាអំពីលក្ខណៈទិន្នន័យនៃវត្ថុបញ្ជាមួយ។
ធាតុក្នុងតំបន់ពិពណ៌នាអំពីលក្ខណៈទិន្នន័យនៃវត្ថុបញ្ជា។
ប្រភេទធាតុនីមួយៗត្រូវបានកំណត់ដោយមុខងារផ្សេងៗគ្នា។ មុខងារធាតុក៏អាចត្រូវបានគេហៅថា a tag. មុខងារធាតុអាចត្រូវបានគេមើលឃើញថាជាធាតុរងដែលជាកម្មសិទ្ធិរបស់ប្រភេទធាតុសំខាន់មួយក្នុងចំណោមប្រភេទធាតុសំខាន់ៗទាំងបី។ តារាងខាងក្រោមផ្តល់នូវការសង្ខេបview នៃអនុគមន៍ item9s ក្នុងប្រភេទធាតុនីមួយៗ។ សម្រាប់ការពិពណ៌នាពេញលេញនៃធាតុនៅក្នុងប្រភេទនីមួយៗ សូមមើល
តារាង – ការពិពណ៌នាមុខងាររបស់ធាតុសម្រាប់ប្រភេទធាតុនីមួយៗ

មុខងារប្រភេទធាតុ

ការពិពណ៌នា

ការបញ្ចូលសំខាន់

ពិពណ៌នាព័ត៌មានអំពីទិន្នន័យដែលផ្តល់ដោយការគ្រប់គ្រងរាងកាយមួយ ឬច្រើន។

លទ្ធផលចម្បង ពិពណ៌នាអំពីទិន្នន័យដែលបានផ្ញើទៅឧបករណ៍។

មុខងារចម្បង

ពិពណ៌នាអំពីព័ត៌មានអំពីការកំណត់រចនាសម្ព័ន្ធឧបករណ៍ដែលបានផ្ញើទៅ ឬទទួលពីឧបករណ៍ដែលមានឥទ្ធិពលលើឥរិយាបថទាំងមូលរបស់ឧបករណ៍ ឬធាតុផ្សំណាមួយរបស់វា។

ធាតុ​ដែល​ទាក់ទង​នឹង​ក្រុម​ប្រមូល​ចម្បង (បញ្ចូល លទ្ធផល ឬ​លក្ខណៈ​ពិសេស)។

Main End of Closes បណ្តុំមួយ។ ការប្រមូល

រក្សាសិទ្ធិ © 2025 Silicon Laboratories ។ រក្សា​រ​សិទ្ធ​គ្រប់យ៉ាង។

៥/៥

ជាងview

មុខងារប្រភេទធាតុ

ការពិពណ៌នា

ទំព័រប្រើប្រាស់សកល

កំណត់មុខងារដែលមាននៅក្នុងឧបករណ៍។

Global Logical កំណត់ដែនកំណត់ទាបនៃតម្លៃដែលបានរាយការណ៍នៅក្នុងឯកតាតក្កវិជ្ជា។ អប្បបរមា

Global Logical កំណត់ដែនកំណត់ខាងលើនៃតម្លៃដែលបានរាយការណ៍នៅក្នុងឯកតាតក្កវិជ្ជា។ អតិបរមា

រូបវិទ្យាសកលកំណត់ដែនកំណត់ទាបនៃតម្លៃដែលបានរាយការណ៍នៅក្នុងឯកតារូបវន្ត នោះគឺជាអប្បរមាតក្កវិជ្ជាអប្បបរមាដែលបង្ហាញក្នុងឯកតារូបវន្ត។

Global Physical កំណត់ដែនកំណត់ខាងលើនៃតម្លៃដែលបានរាយការណ៍នៅក្នុងឯកតារូបវន្ត នោះគឺជា Logical Maximum អតិបរមាដែលបង្ហាញក្នុងឯកតារូបវន្ត។

អង្គភាពសកល

ចង្អុលបង្ហាញឯកតានិទស្សន្តក្នុងគោល 10។ និទស្សន្តមានចាប់ពី -8 ដល់ +7 ។

និទស្សន្ត

អង្គភាពសកល

ចង្អុលបង្ហាញឯកតានៃតម្លៃដែលបានរាយការណ៍។ ឧទាហរណ៍ ប្រវែង ម៉ាស ឯកតាសីតុណ្ហភាព។ល។

ទំហំរបាយការណ៍សកល

ចង្អុលបង្ហាញទំហំនៃវាលរបាយការណ៍ជាប៊ីត។

លេខសម្គាល់របាយការណ៍សកលបង្ហាញពីបុព្វបទដែលបានបន្ថែមទៅរបាយការណ៍ជាក់លាក់មួយ។

ចំនួនរបាយការណ៍សកល

ចង្អុលបង្ហាញចំនួនវាលទិន្នន័យសម្រាប់ធាតុមួយ។

ការជំរុញសកល

ដាក់ច្បាប់ចម្លងនៃតារាងស្ថានភាពធាតុសកលនៅលើជង់ស៊ីភីយូ។

ប៉ុបសកល

ជំនួសតារាងស្ថានភាពធាតុជាមួយនឹងរចនាសម្ព័ន្ធចុងក្រោយពីជង់។

ការប្រើប្រាស់ក្នុងស្រុក

តំណាងឱ្យសន្ទស្សន៍ដើម្បីកំណត់ការប្រើប្រាស់ជាក់លាក់មួយនៅក្នុងទំព័រប្រើប្រាស់។ វាបង្ហាញពីការប្រើប្រាស់ដែលបានណែនាំពីអ្នកលក់9s សម្រាប់ការគ្រប់គ្រងជាក់លាក់ ឬក្រុមនៃការគ្រប់គ្រង។ ការប្រើប្រាស់ផ្តល់ព័ត៌មានដល់អ្នកអភិវឌ្ឍន៍កម្មវិធីអំពីអ្វីដែលវត្ថុបញ្ជាកំពុងវាស់វែងជាក់ស្តែង។

ការប្រើប្រាស់ក្នុងស្រុក

កំណត់​ការ​ប្រើ​ប្រាស់​ចាប់​ផ្ដើម​ដែល​ទាក់​ទង​នឹង​អារេ ឬ​ផែនទី​ប៊ីត។

អប្បបរមា

ការប្រើប្រាស់ក្នុងស្រុក

កំណត់ការប្រើប្រាស់បញ្ចប់ដែលភ្ជាប់ជាមួយអារេ ឬផែនទីប៊ីត។

អតិបរមា

អ្នករចនាមូលដ្ឋានកំណត់ផ្នែករាងកាយដែលប្រើសម្រាប់ការគ្រប់គ្រងមួយ។ Index ចង្អុលទៅអ្នករចនាក្នុងរូបវិទ្យា

សន្ទស្សន៍

អ្នកពណ៌នា។

Local Designator កំណត់លិបិក្រមនៃកម្មវិធីចាប់ផ្តើមដែលភ្ជាប់ជាមួយអារេ ឬផែនទីប៊ីត។ អប្បបរមា

Local Designator កំណត់លិបិក្រមនៃកម្មវិធីបញ្ចប់ដែលភ្ជាប់ជាមួយអារេ ឬផែនទីប៊ីត។ អតិបរមា

សន្ទស្សន៍ខ្សែអក្សរក្នុងស្រុក

សន្ទស្សន៍ខ្សែអក្សរសម្រាប់អ្នកពណ៌នាខ្សែអក្សរ។ វាអនុញ្ញាតឱ្យខ្សែអក្សរមួយត្រូវបានភ្ជាប់ជាមួយធាតុ ឬវត្ថុបញ្ជាជាក់លាក់មួយ។

ខ្សែអក្សរក្នុងស្រុក

បញ្ជាក់​លិបិក្រម​ខ្សែ​អក្សរ​ដំបូង​នៅ​ពេល​កំណត់​ក្រុម​នៃ​ខ្សែ​អក្សរ​បន្តបន្ទាប់​ដើម្បី​គ្រប់គ្រង​ក្នុង​អារេ

អប្បបរមា ឬ ផែនទី។

ក្នុងស្រុកក្នុងស្រុក

ខ្សែអក្សរអតិបរមា
កំណត់ព្រំដែន

បញ្ជាក់លិបិក្រមខ្សែអក្សរចុងក្រោយ នៅពេលផ្តល់ក្រុមនៃខ្សែអក្សរបន្តបន្ទាប់គ្នាដើម្បីគ្រប់គ្រងក្នុងអារេ ឬផែនទីប៊ីត។
កំណត់ការចាប់ផ្តើម ឬចុងបញ្ចប់នៃសំណុំនៃធាតុមូលដ្ឋាន។

ទិន្នន័យ control9s ត្រូវតែកំណត់យ៉ាងហោចណាស់ធាតុខាងក្រោម៖
ធាតុបញ្ចូល ទិន្នផល ឬលក្ខណៈពិសេស ធាតុសំខាន់ ការប្រើប្រាស់ ធាតុក្នុងតំបន់ ការប្រើប្រាស់ទំព័រសកល ធាតុឡូជីខល ធាតុសកលអប្បបរមា តក្កវិជ្ជា ធាតុសកលអតិបរមា របាយការណ៍ទំហំធាតុសកល

រក្សាសិទ្ធិ © 2025 Silicon Laboratories ។ រក្សា​រ​សិទ្ធ​គ្រប់យ៉ាង។

៥/៥

ជាងview
របាយការណ៍រាប់ធាតុសកល តារាងខាងក្រោមបង្ហាញពីតំណាងនៃខ្លឹមសារពិពណ៌នាអំពី Mouse Report ពីទិដ្ឋភាពម៉ាស៊ីនញែក HID ។ កណ្ដុរមានប៊ូតុងបី (ឆ្វេង ស្តាំ និងកង់)។ កូដដែលបង្ហាញក្នុងឧample ខាងក្រោមគឺជាការអនុវត្តកូដដែលត្រូវគ្នានឹងតំណាងអ្នកពិពណ៌នារបាយការណ៍របស់កណ្តុរនេះ។
រូបភាព - រាយការណ៍មាតិកាអ្នកពិពណ៌នាពីម៉ាស៊ីន HID Parser View

(1) មុខងារធាតុទំព័រប្រើប្រាស់បញ្ជាក់មុខងារទូទៅរបស់ឧបករណ៍។ នៅក្នុងនេះ អតីតample ឧបករណ៍ HID ជាកម្មសិទ្ធិរបស់ a
ការគ្រប់គ្រងផ្ទៃតុទូទៅ។
(2) កម្មវិធីប្រមូលផ្ដុំជាក្រុមធាតុសំខាន់ៗដែលមានគោលបំណងរួម ហើយប្រហែលជាស៊ាំនឹងកម្មវិធី។ នៅក្នុងដ្យាក្រាម ក្រុមមានធាតុបញ្ចូលសំខាន់ៗចំនួនបី។ សម្រាប់បណ្តុំនេះ ការប្រើប្រាស់ដែលបានណែនាំសម្រាប់វត្ថុបញ្ជាគឺកណ្តុរ ដូចដែលបានបង្ហាញដោយធាតុប្រើប្រាស់។ (3) ការប្រមូល Nested អាចត្រូវបានប្រើដើម្បីផ្តល់ព័ត៌មានលម្អិតបន្ថែមអំពីការប្រើប្រាស់វត្ថុបញ្ជាតែមួយ ឬក្រុមនៃការគ្រប់គ្រងចំពោះកម្មវិធី។ នៅក្នុងនេះ អតីតample, Collection Physical, បានដាក់ចូលទៅក្នុងកម្មវិធីប្រមូលផ្ដុំ, ត្រូវបានផ្សំឡើងដោយធាតុបញ្ចូលបីដូចគ្នាដែលបង្កើតជាកម្មវិធីប្រមូល។ Collection Physical ត្រូវបានប្រើសម្រាប់សំណុំនៃធាតុទិន្នន័យដែលតំណាងឱ្យចំណុចទិន្នន័យដែលប្រមូលបាននៅចំណុចធរណីមាត្រមួយ។ នៅក្នុងអតីតample, ការប្រើប្រាស់ដែលបានណែនាំគឺជាទ្រនិចដូចដែលបានបង្ហាញដោយធាតុប្រើប្រាស់។ នៅទីនេះ ការប្រើប្រាស់ទ្រនិចសំដៅទៅលើកូអរដោនេទីតាំងកណ្ដុរ ហើយកម្មវិធីប្រព័ន្ធនឹងបកប្រែកូអរដោនេកណ្ដុរក្នុងចលនានៃទស្សន៍ទ្រនិចអេក្រង់។ (4) ទំព័រនៃការប្រើប្រាស់ដែលភ្ជាប់មកជាមួយក៏អាចធ្វើទៅបាន និងផ្តល់ព័ត៌មានលម្អិតបន្ថែមអំពីទិដ្ឋភាពជាក់លាក់មួយនៅក្នុងមុខងារទូទៅរបស់ឧបករណ៍។ ក្នុងករណីនេះ ធាតុបញ្ចូលពីរត្រូវបានដាក់ជាក្រុម ហើយត្រូវគ្នាទៅនឹងប៊ូតុងរបស់កណ្ដុរ។ ធាតុបញ្ចូលមួយកំណត់ប៊ូតុងបីរបស់កណ្ដុរ (ស្តាំ ឆ្វេង និងកង់) ក្នុងលក្ខខណ្ឌនៃចំនួនវាលទិន្នន័យសម្រាប់ធាតុ (ធាតុរបាយការណ៍រាប់) ទំហំនៃវាលទិន្នន័យ (ធាតុទំហំរបាយការណ៍) និងតម្លៃដែលអាចធ្វើបានសម្រាប់វាលទិន្នន័យនីមួយៗ (ការប្រើប្រាស់អប្បបរមា និងអតិបរមា ធាតុអប្បបរមា និងអតិបរមា) ។ ធាតុបញ្ចូលផ្សេងទៀតគឺថេរ 13 ប៊ីតដែលអនុញ្ញាតឱ្យទិន្នន័យរបាយការណ៍បញ្ចូលត្រូវបានតម្រឹមនៅលើព្រំដែនបៃ។ ធាតុបញ្ចូលនេះត្រូវបានប្រើសម្រាប់គោលបំណងទ្រនាប់ប៉ុណ្ណោះ។ (5) ទំព័រប្រើប្រាស់ដែលដាក់គ្នាមួយទៀតដែលសំដៅលើការគ្រប់គ្រងផ្ទៃតុទូទៅត្រូវបានកំណត់សម្រាប់កូអរដោនេទីតាំងកណ្តុរ។ សម្រាប់ទំព័រប្រើប្រាស់នេះ ធាតុបញ្ចូលពណ៌នាអំពីវាលទិន្នន័យដែលត្រូវនឹងអ័ក្ស x និង y ដែលបានបញ្ជាក់ដោយការប្រើប្រាស់ទាំងពីរ
ធាតុ។
បន្ទាប់ពីការវិភាគលើមាតិកាអ្នកពិពណ៌នារបាយការណ៍របស់កណ្តុរពីមុន ឧបករណ៍ញែក HID របស់ host9s អាចបកស្រាយទិន្នន័យរបាយការណ៍បញ្ចូលដែលបានផ្ញើដោយឧបករណ៍ជាមួយនឹងការផ្ទេរ IN រំខាន ឬឆ្លើយតបទៅនឹងសំណើ GET_REPORT ។ ទិន្នន័យ​របាយការណ៍​បញ្ចូល​ដែល​ត្រូវ​នឹង​ឧបករណ៍​ពិពណ៌នា​របាយការណ៍​កណ្ដុរ​ដែល​បង្ហាញ​ក្នុង​រូបភាព – រាយការណ៍​មាតិកា​អ្នក​ពិពណ៌នា​ពី​ម៉ាស៊ីន​ញែក HID View is

រក្សាសិទ្ធិ © 2025 Silicon Laboratories ។ រក្សា​រ​សិទ្ធ​គ្រប់យ៉ាង។

៥/៥

ជាងview

បង្ហាញក្នុងតារាងខាងក្រោម។ ទំហំសរុបនៃទិន្នន័យរបាយការណ៍គឺ 4 បៃ។ ប្រភេទផ្សេងគ្នានៃរបាយការណ៍អាចត្រូវបានផ្ញើនៅលើចំណុចបញ្ចប់ដូចគ្នា។ សម្រាប់គោលបំណងនៃការបែងចែកប្រភេទផ្សេងគ្នានៃរបាយការណ៍ បុព្វបទលេខសម្គាល់របាយការណ៍ 1 បៃត្រូវបានបន្ថែមទៅរបាយការណ៍ទិន្នន័យ។ ប្រសិនបើលេខសម្គាល់របាយការណ៍ត្រូវបានប្រើនៅក្នុង ឧample នៃរបាយការណ៍កណ្តុរ ទំហំសរុបនៃទិន្នន័យរបាយការណ៍នឹងមាន 5 បៃ។
តារាង – របាយការណ៍បញ្ចូលដែលបានផ្ញើទៅកាន់ម៉ាស៊ីន និងត្រូវគ្នាទៅនឹងស្ថានភាពនៃ 3 Buttons Mouse

អុហ្វសិតប៊ីត
៣៤ ៣៥ ២៣ ៨៦ ៧ ៤

ចំនួនប៊ីត 1 1 1 13 8 8

ប៊ូតុង​ពណ៌នា 1 (ប៊ូតុង​ឆ្វេង)។ ប៊ូតុង 2 (ប៊ូតុងស្តាំ) ។ ប៊ូតុង 3 (ប៊ូតុងកង់) ។ មិនត្រូវបានប្រើ។ ទីតាំងនៅលើអ័ក្ស X. ទីតាំងនៅលើអ័ក្ស Y ។

អ្នកពិពណ៌នារូបវិទ្យាបង្ហាញពីផ្នែក ឬផ្នែកនៃរាងកាយដែលមានបំណងធ្វើឱ្យការគ្រប់គ្រង ឬការគ្រប់គ្រង។ កម្មវិធីមួយអាចប្រើព័ត៌មាននេះដើម្បីផ្តល់មុខងារដល់ការគ្រប់គ្រងឧបករណ៍។ អ្នកពណ៌នារូបវិទ្យាគឺជាជម្រើសពណ៌នាតាមថ្នាក់ជាក់លាក់មួយ ហើយឧបករណ៍ភាគច្រើនមានអត្ថប្រយោជន៍តិចតួចសម្រាប់ការប្រើប្រាស់វា។ យោងទៅ
ឧបករណ៍ USB HID Class ត្រូវការធនធានពីស្នូល

រាល់ពេលដែលអ្នកបន្ថែមឧទាហរណ៍ថ្នាក់ HID ទៅក្នុងការកំណត់រចនាសម្ព័ន្ធ USB តាមរយៈការហៅទៅកាន់មុខងារ sl_usbd_hid_add_to_configuration() ធនធានខាងក្រោមនឹងត្រូវបានបែងចែកពីស្នូល។

ធនធាន
ចំណុចប្រទាក់ ចំណុចប្រទាក់ជំនួស ចំណុចប្រទាក់ក្រុម ចំណុចប្រទាក់

បរិមាណ
1 1 1 (2 ប្រសិន​បើ​រំខាន​ចំណុច​បញ្ចប់ OUT ត្រូវ​បាន​បើក) 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 Class

ប៉ារ៉ាម៉ែត្រកំណត់រចនាសម្ព័ន្ធពីរក្រុមត្រូវបានប្រើដើម្បីកំណត់រចនាសម្ព័ន្ធថ្នាក់ HID៖
ឧបករណ៍ USB HID Class កម្មវិធីកំណត់រចនាសម្ព័ន្ធជាក់លាក់ ឧបករណ៍ USB HID Class ការកំណត់រចនាសម្ព័ន្ធ
ឧបករណ៍ USB HID ថ្នាក់កម្មវិធី-ការកំណត់រចនាសម្ព័ន្ធជាក់លាក់

ជាដំបូង ដើម្បីប្រើម៉ូឌុលថ្នាក់ HID ឧបករណ៍របស់ Silicon Labs USB សូមកែតម្រូវការកំណត់ពេលវេលាចងក្រង HID កំណត់តាមតម្រូវការកម្មវិធីរបស់អ្នក។ ពួកវាត្រូវបានដាក់ជាក្រុមឡើងវិញនៅក្នុងបឋមកថា sl_usbd_core_config.h file នៅក្រោមផ្នែក HID ។ ពួកវាអាចបែងចែកជាពីរផ្នែក គឺការកំណត់បរិមាណ និងការកំណត់រចនាសម្ព័ន្ធកិច្ចការ HID ។ គោលបំណងនៃការកំណត់បរិមាណគឺដើម្បីជូនដំណឹងដល់ម៉ូឌុលឧបករណ៍ USB អំពីចំនួនវត្ថុ USB HID ដែលត្រូវបែងចែក។
តារាងខាងក្រោមពិពណ៌នាអំពីការកំណត់រចនាសម្ព័ន្ធនីមួយៗ។
តារាង - ឧបករណ៍ 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 អាចត្រូវបានបន្ថែមទៅការកំណត់រចនាសម្ព័ន្ធ aaaa មួយ ឬច្រើនទៅមុខងារ sl_usbd_hid_add_to_configuration() ។ កំណត់រចនាសម្ព័ន្ធចំនួនសរុបនៃលេខសម្គាល់របាយការណ៍ដែលត្រូវបែងចែក។
កំណត់រចនាសម្ព័ន្ធចំនួនសរុបនៃធាតុ Push/Pop ដើម្បីបែងចែក។
ភារកិច្ចកំណត់ម៉ោងគ្រប់គ្រងរាល់ប្រតិបត្តិការ HID ផ្អែកលើកម្មវិធីកំណត់ម៉ោង។ ការកំណត់រចនាសម្ព័ន្ធនេះអនុញ្ញាតឱ្យអ្នកកំណត់ទំហំជង់ (គិតជាចំនួនបៃ)។ អាទិភាពនៃកិច្ចការ HID ។ គាត់គឺជាអាទិភាព CMSIS-RTOS2 ។

តម្លៃលំនាំដើម
2 1 2 0 2048
osPriorityHigh

ឧបករណ៍ USB HID Class Instance Configurations Class Instance Creation subclass
protocol country_code
interval_in និង interval_out p_hid_callback HID Class Report Descriptor Example ផ្នែកនេះកំណត់ការកំណត់រចនាសម្ព័ន្ធដែលទាក់ទងនឹងឧទាហរណ៍ថ្នាក់ HID ។
ការបង្កើត Class Instance
ការបង្កើត instance ថ្នាក់ HID ធ្វើឡើងដោយហៅមុខងារ aaa sl_usbd_hid_create_instance() ដែល t kes sever l configur tion arguments ដែលត្រូវបានពិពណ៌នាខាងក្រោម។
ថ្នាក់រង
កូដនៃថ្នាក់រង HID ។ តម្លៃដែលអាចមានគឺ៖
SL_USBD_HID_SUBCL ASS_NONE SL_USBD_HID_SUBCL ASS_BOOT
ឧបករណ៍ HID ដែលប្រើថ្នាក់រងចាប់ផ្ដើមត្រូវតែប្រើទម្រង់របាយការណ៍ស្តង់ដារ។ សម្រាប់ព័ត៌មានបន្ថែមអំពីកូដថ្នាក់រង សូមមើលផ្នែកទី 4.2 នៃការកែប្រែការបញ្ជាក់ HID 1.11 ។
ពិធីការ
ពិធីការដែលប្រើដោយឧបករណ៍ 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 ។ សម្រាប់ព័ត៌មានបន្ថែមអំពីកូដថ្នាក់រង សូមមើលផ្នែកទី 4.3 នៃការកែប្រែការបញ្ជាក់ HID 1.11 ។
លេខកូដប្រទេស
លេខសម្គាល់លេខកូដប្រទេស។ តម្លៃដែលអាចមានគឺ៖
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_COUNTECRY_COUNTRY_CODE 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_CODE_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 SL_USBD_HID_COUNTRY_CODE_PERSIAN_FARSI 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 និង 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_HID_COUNTRY_USBD_USID SL_USBD_HID_COUNTRY_CODE_TURKISH_F
លេខកូដប្រទេសកំណត់ថាប្រទេសណាដែលផ្នែករឹងត្រូវបានធ្វើមូលដ្ឋានីយកម្មសម្រាប់។ Hardware ភាគច្រើនមិនត្រូវបានធ្វើមូលដ្ឋានីយកម្មទេ ដូច្នេះហើយ aaaav lue នេះនឹងក្លាយជា SL_USBD_HID_COUNTRY_CODE_NOT_SUPPORTED (0)។ ទោះយ៉ាងណាក៏ដោយ keybo rds របស់ខ្ញុំប្រើវាលដើម្បីចង្អុលបង្ហាញភាសានៃគ្រាប់ចុច។
សម្រាប់ព័ត៌មានបន្ថែមអំពីលេខកូដប្រទេស សូមមើលផ្នែក 6.2.1 នៃការកែប្រែការបញ្ជាក់របស់ HID 1.11។
interval_in និង interval_out
interval_in និង interval_out តំណាងឱ្យចន្លោះពេលបោះឆ្នោតនៃ IN interrupt endpoint និង OUT interrupt endpoint។
នេះតំណាងឱ្យចន្លោះពេលបោះឆ្នោតនៃចំណុចបញ្ចប់គិតជាមិល្លីវិនាទី។ ការកំណត់តម្លៃនេះអាស្រ័យទៅលើថាតើញឹកញាប់ប៉ុណ្ណាដែលឧបករណ៍របស់អ្នកងាយនឹងបង្កើតរបាយការណ៍ថ្មីសម្រាប់ម៉ាស៊ីន។ ឧទាហរណ៍ ប្រសិនបើរបាយការណ៍មួយត្រូវបានបង្កើតរៀងរាល់ 16 មិល្លីវិនាទី ចន្លោះពេលគួរតែមាន 16 ឬតិចជាងនេះ។
តម្លៃត្រូវតែជាថាមពល 2 (1, 2, 4, 8, 16 ។ល។)។
interval_out v lue ត្រូវបានមិនអើពើ ប្រសិនបើ ctrl_rd_en ត្រូវបានកំណត់ទៅពិត។
p_hid_callback
aaaa p_hid_callback គឺជាទ្រនិចទៅរចនាសម្ព័ន្ធនៃប្រភេទ sl_usbd_hid_callbacks_t ។ គោលបំណងរបស់វាគឺដើម្បីផ្តល់ឱ្យ HID Cl ss សំណុំនៃមុខងារ callback ដែលត្រូវបានហៅនៅពេលដែលព្រឹត្តិការណ៍ HID កើតឡើង។

រក្សាសិទ្ធិ © 2025 Silicon Laboratories ។ រក្សា​រ​សិទ្ធ​គ្រប់យ៉ាង។

៥/៥

ជាងview

មិនមែន​រាល់​ការ​ហៅ​ត្រឡប់​ទាំងអស់​ជា​កាតព្វកិច្ច​ទេ ហើយ​ទ្រនិច​ទទេ (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 ដោយជោគជ័យ។ បាន​ហៅ​នៅ​ពេល​ដែល​វត្ថុ​ថ្នាក់ USB ត្រូវ​បាន​បិទ។
បានហៅក្នុងអំឡុងពេលបង្កើត HID Instance ដើម្បីឆ្លងកាត់អ្នកពណ៌នារបាយការណ៍របស់អ្នក។ សម្រាប់មុខងារ HID នីមួយៗរបស់អ្នក អ្នកត្រូវតែផ្តល់អ្នកពិពណ៌នារបាយការណ៍។ អ្នកពិពណ៌នារបាយការណ៍បង្ហាញដល់ម្ចាស់ផ្ទះពីរបៀបដែលរបាយការណ៍តាមកាលកំណត់ដែលនឹងត្រូវបានផ្ញើដោយឧបករណ៍គួរតែត្រូវបានញែក។ ការសរសេរអ្នកពិពណ៌នារបាយការណ៍ផ្ទាល់ខ្លួនរបស់អ្នកអាចជាបញ្ហាប្រឈម ហើយនោះហើយជាមូលហេតុដែលមានធនធានមួយចំនួនដើម្បីជួយ។ នេះគឺជាមុខងារហៅត្រឡប់ជាកាតព្វកិច្ចតែមួយគត់។ បានហៅក្នុងអំឡុងពេលបង្កើត HID Instance ដើម្បីឆ្លងផុតអ្នកពណ៌នារូបវន្តរបស់អ្នក។ អ្នកពិពណ៌នារូបវន្ត គឺជាអ្នកពណ៌នាដែលផ្តល់ព័ត៌មានអំពីផ្នែកជាក់លាក់ ឬផ្នែកនៃរាងកាយមនុស្សដែលកំពុងធ្វើសកម្មភាពវត្ថុបញ្ជា ឬវត្ថុបញ្ជា។ សម្រាប់ព័ត៌មានបន្ថែមអំពីអ្នកពណ៌នារូបវន្ត សូមមើលផ្នែក 6.2.3 នៃការកែប្រែការបញ្ជាក់របស់ HID 1.11 ។ អ្នកពិពណ៌នារូបវន្តគឺស្រេចចិត្ត ហើយភាគច្រើនមិនអើពើ។ សតិបណ្ដោះអាសន្នដែលបានឆ្លងកាត់នៅទីនេះអាចត្រូវបានកំណត់ទៅជា NULL និងប្រវែងកំណត់ទៅ 0។ ហៅនៅពេលម៉ាស៊ីនកំណត់របាយការណ៍ដូចដែលបានពិពណ៌នានៅក្នុងអ្នកពិពណ៌នារបាយការណ៍របស់អ្នក (នៅពេលវាផ្ញើរបាយការណ៍)។
ហៅទូរសព្ទមកនៅពេលម្ចាស់ផ្ទះស្នើសុំរបាយការណ៍លក្ខណៈពិសេសដូចដែលបានពិពណ៌នានៅក្នុងអ្នកពិពណ៌នារបាយការណ៍របស់អ្នក។
បានហៅទូរសព្ទមក នៅពេលដែលម្ចាស់ផ្ទះកំណត់របាយការណ៍លក្ខណៈពិសេសដូចដែលបានពិពណ៌នានៅក្នុងកម្មវិធីពិពណ៌នារបាយការណ៍របស់អ្នក។

void app_usbd_hid_enable(uint8_t class_nbr); void 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 protocol);

អ្នកពិពណ៌នារបាយការណ៍ថ្នាក់ HID Example

ថ្នាក់ HID របស់ Silicon Labsampកម្មវិធី le ផ្តល់នូវអតីតample នៃអ្នកពិពណ៌នារបាយការណ៍សម្រាប់កណ្តុរសាមញ្ញ។ អតីតample ខាងក្រោមបង្ហាញអ្នកពណ៌នារបាយការណ៍កណ្តុរ។
Example – Mouse Report descriptor

static uint8_t app_usbd_hid_report_desc[] = {

(1) (2)

SL_USBD_HID_GLOBAL_USAGE_PAGE + 1, SL_USBD_HID_USAGE_PAGE_GENERIC_DESKTOP_CONTROLS,

SL_USBD_HID_LOCAL_USAGE + 1, SL_USBD_HID_CA_MOUSE,

(១៦១៦)

រក្សាសិទ្ធិ © 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) តារាងតំណាងឱ្យអ្នកពិពណ៌នារបាយការណ៍កណ្តុរត្រូវបានចាប់ផ្តើមតាមរបៀបដែលបន្ទាត់នីមួយៗត្រូវគ្នាទៅនឹងធាតុខ្លីមួយ។ ក្រោយមកទៀតត្រូវបានបង្កើតឡើងពីបុព្វបទ 1 បៃ និងទិន្នន័យ 1 បៃ។ យោងទៅ viewed ដោយ host HID parser នៅក្នុងរូបភាព - រាយការណ៍អំពីខ្លឹមសារ descriptor ពី host HID Parser View.
(2) ទំព័រប្រើប្រាស់ផ្ទៃតុទូទៅត្រូវបានប្រើប្រាស់។
(3) នៅក្នុងទំព័រទូទៅនៃការប្រើប្រាស់ផ្ទៃតុ ការប្រើប្រាស់ tag ណែនាំថាក្រុមនៃការគ្រប់គ្រងគឺសម្រាប់គ្រប់គ្រងកណ្តុរ។ ការប្រមូលកណ្តុរជាធម្មតាមានអ័ក្សពីរ (X និង Y) និងប៊ូតុងមួយ ពីរ ឬបី។
(4) ការប្រមូលកណ្តុរត្រូវបានចាប់ផ្តើម។
(5) នៅក្នុងការប្រមូលកណ្តុរ ការប្រើប្រាស់ tag ណែនាំកាន់តែពិសេសថា ការគ្រប់គ្រងកណ្ដុរជាកម្មសិទ្ធិរបស់បណ្តុំទ្រនិច។ ការប្រមូលទ្រនិចគឺជាបណ្តុំនៃអ័ក្សដែលបង្កើតតម្លៃដើម្បីដឹកនាំ ចង្អុលបង្ហាញ ឬចង្អុលចេតនារបស់អ្នកប្រើទៅកាន់កម្មវិធីមួយ។
(6) ការប្រមូលទ្រនិចត្រូវបានចាប់ផ្តើម។
(7) ទំព័រប្រើប្រាស់ប៊ូតុងកំណត់ធាតុបញ្ចូលដែលផ្សំឡើងដោយវាល 1 ប៊ីតចំនួនបី។ វាល 1 ប៊ីតនីមួយៗតំណាងឱ្យប៊ូតុង mouse9s 1, 2 និង 3 រៀងៗខ្លួន ហើយអាចត្រឡប់តម្លៃ 0 ឬ 1 ។
(8) ធាតុបញ្ចូលសម្រាប់ទំព័រប្រើប្រាស់ប៊ូតុងត្រូវបានបំពាក់ដោយ 13 ប៊ីតផ្សេងទៀត។
(9) ទំព័រការប្រើប្រាស់ផ្ទៃតុទូទៅមួយផ្សេងទៀតត្រូវបានចង្អុលបង្ហាញសម្រាប់ការពិពណ៌នាអំពីទីតាំងកណ្ដុរជាមួយអ័ក្ស X និង Y ។ ធាតុបញ្ចូលត្រូវបានផ្សំឡើងដោយវាល 8 ប៊ីតពីរដែលតម្លៃរបស់វាអាចមានចន្លោះពី -127 និង 127 ។
(10) ការប្រមូលទ្រនិចត្រូវបានបិទ។
(11) ការប្រមូលកណ្តុរត្រូវបានបិទ។
ទំព័រ HID USB.org

រក្សាសិទ្ធិ © 2025 Silicon Laboratories ។ រក្សា​រ​សិទ្ធ​គ្រប់យ៉ាង។

៥/៥

ជាងview
វេទិកាអ្នកអនុវត្ត USB (USB-IF) ផ្តល់នូវឧបករណ៍មួយឈ្មោះថា "HID Descriptor Tool" រួមជាមួយនឹងព័ត៌មានផ្សេងទៀតនៅលើទម្រង់អ្នកពិពណ៌នារបាយការណ៍។ សូមមើលhttp://www.usb.org/developers/hidpage/ សម្រាប់ព័ត៌មានបន្ថែម។
មគ្គុទ្ទេសក៍កម្មវិធីថ្នាក់ HID ឧបករណ៍ USB
ផ្នែកនេះពន្យល់ពីរបៀបប្រើថ្នាក់ HID ។ ការចាប់ផ្តើមឧបករណ៍ USB HID Class ការបន្ថែមឧបករណ៍ USB HID Class Instance ទៅឧបករណ៍របស់អ្នក ទំនាក់ទំនងដោយប្រើឧបករណ៍ USB HID Class
កំពុងចាប់ផ្តើមឧបករណ៍ USB HID Class
ដើម្បីបន្ថែមមុខងារ HID Class ទៅក្នុងឧបករណ៍របស់អ្នក អ្នកត្រូវតែចាប់ផ្តើមថ្នាក់ដំបូងដោយហៅមុខងារ sl_usbd_hid_init() ។ អតីតample ខាងក្រោមបង្ហាញពីរបៀបហៅ sl_usbd_hid_init() ដោយប្រើអាគុយម៉ង់លំនាំដើម។ សម្រាប់ព័ត៌មានបន្ថែមអំពីអាគុយម៉ង់ការកំណត់រចនាសម្ព័ន្ធដែលត្រូវបញ្ជូនទៅកាន់ sl_usbd_hid_init() សូមមើល ការកំណត់រចនាសម្ព័ន្ធជាក់លាក់នៃកម្មវិធី HID ថ្នាក់ឧបករណ៍ USB ។
Example – ហៅ sl_usbd_hid_init()
ស្ថានភាព sl_status_t;
ស្ថានភាព = sl_usbd_hid_init(); ប្រសិនបើ (ស្ថានភាព ! SL_STATUS_OK) { /* កំហុសបានកើតឡើង។ ការដោះស្រាយកំហុសគួរតែត្រូវបានបន្ថែមនៅទីនេះ។ */
}
ការបន្ថែមឧបករណ៍ USB HID Class Instance ទៅឧបករណ៍របស់អ្នក។
ដើម្បីបន្ថែមមុខងារថ្នាក់ HID ទៅក្នុងឧបករណ៍របស់អ្នក អ្នកត្រូវតែបង្កើតឧទាហរណ៍ បន្ទាប់មកបន្ថែមវាទៅក្នុងការកំណត់រចនាសម្ព័ន្ធឧបករណ៍របស់អ្នក។
ការបង្កើត HID Class Instance
បង្កើតឧទាហរណ៍ថ្នាក់ HID ដោយហៅមុខងារ sl_usbd_hid_create_instance() ។ អតីតample ខាងក្រោមបង្ហាញពីរបៀបបង្កើតមុខងារកណ្តុរសាមញ្ញតាមរយៈ sl_usbd_hid_create_instance() ដោយប្រើអាគុយម៉ង់លំនាំដើម។ សម្រាប់ព័ត៌មានបន្ថែមអំពីអាគុយម៉ង់ការកំណត់រចនាសម្ព័ន្ធដែលត្រូវបញ្ជូនទៅកាន់ sl_usbd_hid_create_instance() សូមមើល ការកំណត់រចនាសម្ព័ន្ធឧបករណ៍ USB HID Class Instance ។
Example – ការបន្ថែមអនុគមន៍ Mouse តាមរយៈ sl_usbd_hid_create_instance()

រក្សាសិទ្ធិ © 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_TIONMAIN_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_USBDAL_AGE, SL_USBDAL_AGE, +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 +000 1, 0 01, SL_USBD_HID_GLOBAL_REPORT_COUNT + 1, 0 03, SL_USBD_HID_GLOBAL_REPORT_SIZE + 1, 0 01, SL_USBD_HID_MAIN_INPUT + 1, SL_USBD_HID_MAIN_DATA SL_USBD_HID_MAIN_VARIABLE | SL_USBD_HID_MAIN_ABSOLUTE, SL_USBD_HID_GLOBAL_REPORT_COUNT + 1, 0 01, SL_USBD_HID_GLOBAL_REPORT_SIZE + 1, 0 0D, SL_USBD_HID_MAIN_INPUT + 1, SL_ANT_BD, 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_DVBD1_USID, +1 SL_USBD_HID_GLOBAL_LOG_MIN + 1, 0 81, SL_USBD_HID_GLOBAL_LOG_MAX + 1, 0 7F, SL_USBD_HID_GLOBAL_REPORT_SIZE + 1, 0 08, SL_USBD_HID_GLOBAL_0,0,0 SL_USBD_HID_MAIN_INPUT + 1, SL_USBD_HID_MAIN_DATA | SL_USBD_HID_MAIN_VARIABLE | SL_USBD_HID_MAIN_RELATIVE, SL_USBD_HID_MAIN_ENDCOLLECTION, SL_USBD_HID_MAIN_ENDCOLLECTION };
/* អថេរក្នុងស្រុក។*/ 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 };
app_usbd_hid_get_report_desc(uint8_t class_nbr, const uint8_t **p_report_ptr, uint16_t *p_report_len)
{ (void)class_nbr;
*p_report_ptr = app_usbd_hid_mouse_report_desc; *p_report_len = sizeof(app_usbd_hid_mouse_report_desc); }
ស្ថានភាព = sl_usbd_hid_create_instance(SL_USBD_HID_SUBCLASS_BOOT, SL_USBD_HID_PROTOCOL_MOUSE, SL_USBD_HID_COUNTRY_CODE_NOT_SUPPORTED, Ex_USBD_HID_Mouse_ReportDesc, sizeof(ID_UScBD), sizeof(ID_UScBD) 2u, true, &app_usbd_hid_callbacks, &class_nbr);
រក្សាសិទ្ធិ © 2025 Silicon Laboratories ។ រក្សា​រ​សិទ្ធ​គ្រប់យ៉ាង។

៥/៥

ជាងview
/* កំហុសបានកើតឡើង។ ការដោះស្រាយកំហុសគួរតែត្រូវបានបន្ថែមនៅទីនេះ។ */}
ការបន្ថែម HID Class Instance ទៅក្នុង Configuration របស់ឧបករណ៍របស់អ្នក បន្ទាប់ពីអ្នកបានបង្កើត HID class instance អ្នកអាចបន្ថែមវាទៅក្នុង configuration ដោយហៅ function
sl_usbd_hid_add_to_configuration() ។
អតីតample ខាងក្រោមបង្ហាញពីរបៀបហៅ sl_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); (2)

ប្រសិនបើ (ស្ថានភាព ! SL_STATUS_OK) {

/* កំហុសបានកើតឡើង។ ការដោះស្រាយកំហុសគួរតែត្រូវបានបន្ថែមនៅទីនេះ។ */

}

(1) លេខថ្នាក់ដែលត្រូវបន្ថែមទៅការកំណត់ដែលបានត្រឡប់ដោយ sl_usbd_hid_create_instance() ។ (2) លេខកំណត់រចនាសម្ព័ន្ធ (នៅទីនេះបន្ថែមវាទៅការកំណត់រចនាសម្ព័ន្ធពេញល្បឿន)។
ការទំនាក់ទំនងដោយប្រើឧបករណ៍ USB HID Class
Class Instance Communication Synchronous Communication Class Instance Communication ថ្នាក់ HID ផ្តល់នូវមុខងារខាងក្រោមដើម្បីទាក់ទងជាមួយម៉ាស៊ីន។
តារាង - សេចក្តីសង្ខេប API ទំនាក់ទំនង HID

ឈ្មោះមុខងារ
sl_usb d _hid _ re ad _sy nc() sl_usb d _hid _write _sy nc()

ប្រតិបត្តិការទទួលទិន្នន័យពីម៉ាស៊ីនតាមរយៈការរំខានដល់ចំណុចបញ្ចប់ OUT ។ មុខងារនេះត្រូវបានរារាំង។ ផ្ញើទិន្នន័យទៅម៉ាស៊ីនតាមរយៈ interrupt IN endpoint។ មុខងារនេះត្រូវបានរារាំង។

ការទំនាក់ទំនងសមកាលកម្ម ការប្រាស្រ័យទាក់ទងសមកាលកម្មមានន័យថាការផ្ទេរត្រូវបានរារាំង។ នៅពេលការហៅមុខងារ កម្មវិធីបិទរហូតដល់ការផ្ទេរត្រូវបានបញ្ចប់ដោយមាន ឬគ្មានកំហុស។ ការអស់ពេលអាចត្រូវបានបញ្ជាក់ ដើម្បីជៀសវាងការរង់ចាំជារៀងរហូត។ អតីតample ខាងក្រោមបង្ហាញពីការអាន និងសរសេរដែលទទួលទិន្នន័យពី host ដោយប្រើ interrupt OUT endpoint ហើយផ្ញើទិន្នន័យទៅ host ដោយប្រើ interrupt IN endpoint។
Example – ធ្វើសមកាលកម្ម 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
ស្ថានភាព =sl_usbd_hid_read_sync(class_nbr,(1)(void *)rx_buf,(2)2u,0u,(3)&xfer_len);if(status ! SL_STATUS_OK){/* កំហុសបានកើតឡើង។ ការដោះស្រាយកំហុសគួរតែត្រូវបានបន្ថែមនៅទីនេះ។ */}
ស្ថានភាព =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() ផ្តល់នូវឯកសារយោងខាងក្នុងសម្រាប់ថ្នាក់ HID ដើម្បីបញ្ជូនការផ្ទេរទៅកាន់ចំណុចបញ្ចប់នៃការរំខានត្រឹមត្រូវ OUT ឬ IN ។
(2) កម្មវិធីត្រូវតែធានាថាសតិបណ្ដោះអាសន្នដែលផ្តល់ទៅឱ្យមុខងារមានទំហំធំល្មមដើម្បីផ្ទុកទិន្នន័យទាំងអស់។ បើមិនដូច្នេះទេ បញ្ហានៃការធ្វើសមកាលកម្មអាចនឹងកើតឡើង។ នៅខាងក្នុង ប្រតិបត្តិការអានត្រូវបានធ្វើឡើងទាំងជាមួយចំណុចបញ្ចប់វត្ថុបញ្ជា ឬជាមួយចំណុចបញ្ចប់ដែលរំខាន អាស្រ័យលើទង់ការគ្រប់គ្រងដែលបានកំណត់នៅពេលហៅ sl_usbd_hid_create_instance() ។
(3) ដើម្បីជៀសវាងស្ថានភាពទប់ស្កាត់គ្មានកំណត់ ពេលវេលាកំណត់ដែលបង្ហាញជាមីលីវិនាទីអាចត្រូវបានបញ្ជាក់។ តម្លៃ 809 ធ្វើឱ្យកិច្ចការកម្មវិធីរង់ចាំជារៀងរហូត។
(4) កម្មវិធីផ្តល់នូវសតិបណ្ដោះអាសន្ននៃការបញ្ជូនដំបូង។
ភារកិច្ចរបាយការណ៍បញ្ចូលតាមកាលកំណត់របស់ HID
ដើម្បីរក្សាទុកកម្រិតបញ្ជូន មេមានសមត្ថភាពក្នុងការបិទរបាយការណ៍ពីចំណុចបញ្ចប់ IN ដែលរំខានដោយកំណត់ប្រេកង់រាយការណ៍។ ដើម្បីធ្វើដូច្នេះ ម្ចាស់ផ្ទះត្រូវតែផ្ញើសំណើ SET_IDLE ។ ថ្នាក់ HID ដែលអនុវត្តដោយ Silicon Labs មានកិច្ចការផ្ទៃក្នុងដែលគោរពការកំណត់ប្រេកង់រាយការណ៍ ដែលអ្នកអាចអនុវត្តចំពោះរបាយការណ៍បញ្ចូលមួយ ឬច្រើន។ រូបភាព កិច្ចការរបាយការណ៍បញ្ចូលតាមកាលកំណត់ បង្ហាញពីដំណើរការនៃកិច្ចការរបាយការណ៍បញ្ចូលតាមកាលកំណត់។
រូបភាព - កិច្ចការរបាយការណ៍បញ្ចូលតាមកាលកំណត់

(1) ឧបករណ៍ទទួលបានសំណើ SET_IDLE ។ សំណើនេះបញ្ជាក់រយៈពេលទំនេរសម្រាប់លេខសម្គាល់របាយការណ៍ដែលបានផ្តល់ឱ្យ។ សម្រាប់ព័ត៌មានលម្អិតអំពីសំណើ SET_IDLE សូមមើល
(2) រចនាសម្ព័នលេខសម្គាល់របាយការណ៍ (បែងចែកកំឡុងពេលចាប់ផ្តើមថ្នាក់ HID) ត្រូវបានធ្វើបច្ចុប្បន្នភាពជាមួយនឹងរយៈពេលទំនេរ។ ការរាប់រយៈពេលទំនេរត្រូវបានចាប់ផ្តើមជាមួយនឹងតម្លៃរយៈពេលទំនេរ។ រចនាសម្ព័ន្ធលេខសម្គាល់របាយការណ៍ត្រូវបានបញ្ចូលនៅចុងបញ្ចប់នៃបញ្ជីដែលបានភ្ជាប់ដែលមានរចនាសម្ព័ន្ធលេខសម្គាល់របាយការណ៍បញ្ចូល។ តម្លៃរយៈពេលទំនេរត្រូវបានបង្ហាញជាឯកតា 4-ms ដែលផ្តល់ចន្លោះពី 4 ទៅ 1020 ms ។

រក្សាសិទ្ធិ © 2025 Silicon Laboratories ។ រក្សា​រ​សិទ្ធ​គ្រប់យ៉ាង។

៥/៥

ជាងview
ប្រសិនបើរយៈពេលទំនេរគឺតិចជាងចន្លោះពេលបោះឆ្នោតនៃចំណុចបញ្ចប់ IN នោះ របាយការណ៍ត្រូវបានបង្កើតនៅចន្លោះពេលបោះឆ្នោត។
(3) រៀងរាល់ 4 ms កិច្ចការរបាយការណ៍បញ្ចូលតាមកាលកំណត់ រកមើលបញ្ជីលេខសម្គាល់របាយការណ៍បញ្ចូល។ សម្រាប់លេខសម្គាល់របាយការណ៍បញ្ចូលនីមួយៗ ភារកិច្ចអនុវត្តមួយក្នុងចំណោមប្រតិបត្តិការដែលអាចធ្វើបាន។ រយៈពេលនៃរយៈពេលកិច្ចការត្រូវគ្នានឹងឯកតា 4-ms ដែលប្រើសម្រាប់រយៈពេលទំនេរ។ ប្រសិនបើគ្មានសំណើ SET_IDLE ត្រូវបានផ្ញើដោយម៉ាស៊ីនទេ បញ្ជីលេខសម្គាល់របាយការណ៍បញ្ចូលគឺទទេ ហើយកិច្ចការមិនមានអ្វីត្រូវដំណើរការទេ។ កិច្ចការដំណើរការតែរបាយការណ៍លេខសម្គាល់ដែលខុសពីលេខ 0 និងជាមួយរយៈពេលទំនេរធំជាង 0។
(4) សម្រាប់លេខសម្គាល់របាយការណ៍បញ្ចូលដែលបានផ្តល់ឱ្យ ភារកិច្ចផ្ទៀងផ្ទាត់ប្រសិនបើរយៈពេលទំនេរបានកន្លងផុតទៅ។ ប្រសិនបើរយៈពេលទំនេរមិនបានកន្លងផុតទៅទេ បញ្ជរត្រូវបានកាត់បន្ថយ ហើយគ្មានរបាយការណ៍បញ្ចូលណាមួយត្រូវបានផ្ញើទៅម៉ាស៊ីននោះទេ។
(5) ប្រសិនបើរយៈពេលទំនេរបានកន្លងផុតទៅ (នោះគឺការរាប់រយៈពេលទំនេរបានដល់សូន្យ) របាយការណ៍បញ្ចូលត្រូវបានផ្ញើទៅម៉ាស៊ីនដោយហៅមុខងារ sl_usbd_hid_write_sync() តាមរយៈចំណុចបញ្ចប់ IN រំខាន។
(6) ទិន្នន័យរបាយការណ៍បញ្ចូលដែលបានផ្ញើដោយភារកិច្ចគឺមកពីទិន្នន័យបណ្តោះអាសន្នទិន្នន័យខាងក្នុងដែលបានបែងចែកសម្រាប់របាយការណ៍បញ្ចូលនីមួយៗដែលបានពិពណ៌នានៅក្នុងអ្នកពិពណ៌នារបាយការណ៍។ កិច្ចការកម្មវិធីអាចហៅមុខងារ sl_usbd_hid_write_sync() ដើម្បីផ្ញើរបាយការណ៍បញ្ចូល។ បន្ទាប់ពីផ្ញើទិន្នន័យរបាយការណ៍បញ្ចូល sl_usbd_hid_write_sync() ធ្វើបច្ចុប្បន្នភាពសតិបណ្ដោះអាសន្នខាងក្នុងដែលភ្ជាប់ទៅលេខសម្គាល់របាយការណ៍បញ្ចូលជាមួយទិន្នន័យដែលទើបតែបានផ្ញើ។ បន្ទាប់មក កិច្ចការរបាយការណ៍បញ្ចូលតាមកាលកំណត់តែងតែផ្ញើទិន្នន័យរបាយការណ៍បញ្ចូលដូចគ្នា បន្ទាប់ពីរយៈពេលទំនេរនីមួយៗបានកន្លងផុតទៅ និងរហូតដល់កិច្ចការកម្មវិធីធ្វើបច្ចុប្បន្នភាពទិន្នន័យនៅក្នុងសតិបណ្ដោះអាសន្នខាងក្នុង។ មានយន្តការចាក់សោមួយចំនួនដើម្បីជៀសវាងអំពើពុករលួយនៃរបាយការណ៍បញ្ចូលទិន្នន័យ ID នៅក្នុងព្រឹត្តិការណ៍នៃការកែប្រែកើតឡើងនៅពេលជាក់លាក់នៃការបញ្ជូនដែលធ្វើឡើងដោយកិច្ចការរបាយការណ៍បញ្ចូលតាមកាលកំណត់។

រក្សាសិទ្ធិ © 2025 Silicon Laboratories ។ រក្សា​រ​សិទ្ធ​គ្រប់យ៉ាង។

៥/៥

ជាងview
ជាងview
ឧបករណ៍ USB ថ្នាក់ MSC
ឧបករណ៍ USB ថ្នាក់ MSC លើសview ឧបករណ៍ USB ថ្នាក់ MSC តម្រូវការធនធានពីឧបករណ៍ USB ស្នូល MSC ការកំណត់រចនាសម្ព័ន្ធឧបករណ៍ USB ថ្នាក់ MSC មគ្គុទ្ទេសក៍ការសរសេរកម្មវិធីថ្នាក់ USB ឧបករណ៍ MSC Class Drivers
ផ្នែកនេះពិពណ៌នាអំពីថ្នាក់ឧបករណ៍ផ្ទុកធំ (MSC) ដែលគាំទ្រដោយឧបករណ៍ USB Silicon Labs ។ MSC គឺជាពិធីការដែលអនុញ្ញាតឱ្យផ្ទេរព័ត៌មានរវាងឧបករណ៍ USB និងម៉ាស៊ីន។ ព័ត៌មានដែលកំពុងផ្ទេរគឺជាអ្វីៗដែលអាចត្រូវបានរក្សាទុកតាមអេឡិចត្រូនិក ដូចជាកម្មវិធីដែលអាចប្រតិបត្តិបាន កូដប្រភព ឯកសារ រូបភាព ទិន្នន័យកំណត់រចនាសម្ព័ន្ធ ឬទិន្នន័យអត្ថបទ ឬលេខផ្សេងទៀត។ ឧបករណ៍ USB លេចឡើងជាឧបករណ៍ផ្ទុកខាងក្រៅទៅកាន់ម៉ាស៊ីន ដែលបើកដំណើរការផ្ទេរ files តាមរយៈការអូសនិងទម្លាក់។
A file ប្រព័ន្ធកំណត់របៀប files ត្រូវបានរៀបចំនៅក្នុងឧបករណ៍ផ្ទុក។ ការបញ្ជាក់ថ្នាក់ផ្ទុកទិន្នន័យដ៏ធំរបស់ USB មិនទាមទារអ្វីពិសេសណាមួយឡើយ។ file ប្រព័ន្ធដែលត្រូវប្រើនៅលើឧបករណ៍ដែលត្រូវគ្នា។ ផ្ទុយទៅវិញ វាផ្តល់នូវចំណុចប្រទាក់ដ៏សាមញ្ញមួយដើម្បីអាន និងសរសេរផ្នែកនៃទិន្នន័យដោយប្រើសំណុំពាក្យបញ្ជាថ្លាថ្លា Small Computer System Interface (SCSI)។ ដូច្នេះ ប្រព័ន្ធប្រតិបត្តិការអាចចាត់ទុកដ្រាយ USB ដូចជាថាសរឹង ហើយអាចធ្វើទ្រង់ទ្រាយវាជាមួយណាមួយ។ file ប្រព័ន្ធដែលពួកគេចូលចិត្ត។
ថ្នាក់ឧបករណ៍ផ្ទុកដ៏ធំរបស់ USB គាំទ្រពិធីការដឹកជញ្ជូនពីរ ដូចតទៅ៖
ការដឹកជញ្ជូនភាគច្រើន (BOT) ការគ្រប់គ្រង/ភាគច្រើន/រំខាន (CBI) ការដឹកជញ្ជូន (ប្រើសម្រាប់តែថាសទន់)
ថ្នាក់ឧបករណ៍ផ្ទុកធំអនុវត្តសំណុំពាក្យបញ្ជាតម្លាភាព SCSI ដោយប្រើពិធីការ BOT តែប៉ុណ្ណោះ ដែលបង្ហាញថាមានតែចំណុចបញ្ចប់ភាគច្រើនប៉ុណ្ណោះដែលនឹងត្រូវបានប្រើដើម្បីបញ្ជូនទិន្នន័យ និងព័ត៌មានស្ថានភាព។ ការអនុវត្ត MSC គាំទ្រឯកតាឡូជីខលច្រើន។
ការអនុវត្ត MSC គឺអនុលោមតាមលក្ខណៈជាក់លាក់ដូចខាងក្រោមៈ
ការបញ្ជាក់ថ្នាក់ផ្ទុកដ៏ធំនៃរថយន្តក្រុងសៀរៀលជាសកលត្រូវបានបញ្ចប់view, ការកែប្រែ 1.3 ថ្ងៃទី 5 ខែកញ្ញា ឆ្នាំ 2008
ឧបករណ៍ USB MSC aCl ss លើសview
Protocol Endpoints Class ស្នើសុំចំណុចប្រទាក់ប្រព័ន្ធកុំព្យូទ័រខ្នាតតូច (SCSI)
ពិធីការ
នៅក្នុងផ្នែកនេះ យើងនឹងពិភាក្សាអំពីពិធីការនៃការដឹកជញ្ជូនទំនិញតែមួយគត់ (BOT) នៃថ្នាក់ផ្ទុកដ៏ធំ។ ពិធីសារដឹកជញ្ជូនតែមួយគត់មានបី stages:
ការដឹកជញ្ជូនពាក្យបញ្ជា ការដឹកជញ្ជូនទិន្នន័យ ការដឹកជញ្ជូនស្ថានភាព
ពាក្យបញ្ជាផ្ទុកធំត្រូវបានផ្ញើដោយម៉ាស៊ីនតាមរយៈរចនាសម្ព័ន្ធដែលហៅថា Command Block Wrapper (CBW) ។ សម្រាប់​ការ​បញ្ជា​តម្រូវ​ឱ្យ​មាន​ការ​ដឹក​ជញ្ជូន​ទិន្នន័យ stage, ម៉ាស៊ីននឹងព្យាយាមផ្ញើ ឬទទួលចំនួនបៃពិតប្រាកដពីឧបករណ៍ ដូចដែលបានបញ្ជាក់ដោយប្រវែង និងទង់របស់ CBW ។ បន្ទាប់ពីការដឹកជញ្ជូនទិន្នន័យ stage, ម៉ាស៊ីនព្យាយាមទទួល Command Status Wrapper (CSW) ពីឧបករណ៍ដែលរៀបរាប់លម្អិតអំពីស្ថានភាពនៃពាក្យបញ្ជា ក៏ដូចជាសំណល់ទិន្នន័យណាមួយ (ប្រសិនបើ

រក្សាសិទ្ធិ © 2025 Silicon Laboratories ។ រក្សា​រ​សិទ្ធ​គ្រប់យ៉ាង។

៥/៥

ជាងview
ណាមួយ) សម្រាប់ពាក្យបញ្ជាដែលមិនរួមបញ្ចូលការដឹកជញ្ជូនទិន្នន័យ stage ម្ចាស់ផ្ទះព្យាយាមទទួល CSW ដោយផ្ទាល់បន្ទាប់ពី CBW ត្រូវបានផ្ញើ។ ពិធីការត្រូវបានរៀបរាប់លម្អិតនៅក្នុងរូបភាព - ពិធីសារ MSC ។
រូបភាព - ពិធីសារ MSC

ចំណុចបញ្ចប់
នៅផ្នែកខាងឧបករណ៍ ដោយអនុលោមតាមលក្ខណៈបច្ចេកទេសរបស់ BOT MSC ត្រូវបានផ្សំឡើងដោយចំណុចបញ្ចប់ដូចខាងក្រោម៖ ចំណុចបញ្ចប់នៃការគ្រប់គ្រងគូ IN និង OUT ដែលហៅថា ចំណុចបញ្ចប់លំនាំដើម។ គូនៃចំណុចបញ្ចប់ភាគច្រើន IN និង OUT ។
តារាងខាងក្រោមបង្ហាញពីការប្រើប្រាស់ផ្សេងគ្នានៃចំណុចបញ្ចប់។
តារាង - ការប្រើប្រាស់ចំណុចបញ្ចប់ MSC

ចំណុចបញ្ចប់
គ្រប់គ្រង​ក្នុង​ការ​ត្រួត​ពិនិត្យ​ចេញ​ជា​ដុំ​ក្នុង​ច្រើន​ចេញ​

ទិសដៅ
Device to Host Host to Device Device to Host Host to Device

ការប្រើប្រាស់
ការរាប់បញ្ចូល និងសំណើជាក់លាក់ថ្នាក់ MSC ការរាប់បញ្ចូល និងសំណើជាក់លាក់ថ្នាក់ MSC ផ្ញើ CSW និងទិន្នន័យ ទទួល CBW និងទិន្នន័យ

សំណើថ្នាក់
មានសំណើត្រួតពិនិត្យដែលបានកំណត់ចំនួនពីរសម្រាប់ពិធីការ MSC BOT ។ សំណើទាំងនេះ និងការពិពណ៌នារបស់ពួកគេត្រូវបានរៀបរាប់លម្អិតនៅក្នុងតារាងខាងក្រោម។

តារាង - សំណើថ្នាក់ផ្ទុកដ៏ធំ

សំណើថ្នាក់
កំណត់ទំហំផ្ទុកតែច្រើនឡើងវិញ

ការពិពណ៌នា
សំណើនេះត្រូវបានប្រើដើម្បីកំណត់ឧបករណ៍ផ្ទុកដ៏ធំឡើងវិញ និងចំណុចប្រទាក់ដែលពាក់ព័ន្ធរបស់វា។ សំណើនេះត្រៀមឧបករណ៍ដើម្បីទទួលប្លុកពាក្យបញ្ជាបន្ទាប់។

រក្សាសិទ្ធិ © 2025 Silicon Laboratories ។ រក្សា​រ​សិទ្ធ​គ្រប់យ៉ាង។

៥/៥

ជាងview

សំណើថ្នាក់

ការពិពណ៌នា

ទទួលបានអតិបរមា សំណើនេះត្រូវបានប្រើដើម្បីត្រឡប់លេខឯកតាតក្កវិជ្ជាខ្ពស់បំផុត (LUN) ដែលគាំទ្រដោយឧបករណ៍។ សម្រាប់អតីតampលេ, អេ

លន់

ឧបករណ៍ដែលមាន LUN 0 និង LUN 1 នឹងត្រឡប់តម្លៃ 1 ។ ឧបករណ៍ដែលមានឯកតាតក្កវិជ្ជាតែមួយនឹងត្រឡប់ 0 ឬបញ្ឈប់

សំណើ។ តម្លៃអតិបរមាដែលអាចត្រលប់មកវិញគឺ 15 ។

ចំណុចប្រទាក់ប្រព័ន្ធកុំព្យូទ័រខ្នាតតូច SCSI

នៅកម្រិតចំណុចប្រទាក់កម្មវិធី ឧបករណ៍ MSC អនុវត្តពិធីការទំនាក់ទំនងប្រព័ន្ធផ្ទុកទិន្នន័យស្តង់ដារមួយ ដូចជា SCSI និង SFF-8020i (ATAPI) ជាដើម។ "ចំណុចប្រទាក់កម្មវិធី" បញ្ជាក់ពិធីការណាមួយដែលត្រូវបានអនុវត្ត និងជួយឱ្យប្រព័ន្ធប្រតិបត្តិការម៉ាស៊ីនផ្ទុកកម្មវិធីបញ្ជាឧបករណ៍សមរម្យសម្រាប់ការទំនាក់ទំនងជាមួយឧបករណ៍ផ្ទុក USB ។ SCSI គឺជាពិធីការទូទៅបំផុតដែលប្រើជាមួយឧបករណ៍ផ្ទុក USB MSC ។ យើងផ្តល់នូវការអនុវត្តសម្រាប់ថ្នាក់រង MSC SCSI ដែលអ្នកប្រើប្រាស់ GSDK របស់យើងអាចប្រើប្រាស់ក្រៅប្រអប់បាន។
SCSI គឺជាសំណុំនៃស្តង់ដារសម្រាប់គ្រប់គ្រងទំនាក់ទំនងរវាងកុំព្យូទ័រ និងឧបករណ៍គ្រឿងកុំព្យូទ័រ។ ស្តង់ដារទាំងនេះរួមមានពាក្យបញ្ជា ពិធីការ ចំណុចប្រទាក់អគ្គិសនី និងចំណុចប្រទាក់អុបទិក។ ឧបករណ៍ផ្ទុកដែលប្រើចំណុចប្រទាក់ផ្នែករឹងផ្សេងទៀតដូចជា USB ប្រើពាក្យបញ្ជា SCSI សម្រាប់ការទទួលបានព័ត៌មានឧបករណ៍/ម៉ាស៊ីន និងគ្រប់គ្រងប្រតិបត្តិការរបស់ឧបករណ៍ និងការផ្ទេរប្លុកទិន្នន័យនៅក្នុងឧបករណ៍ផ្ទុក។
ពាក្យបញ្ជា SCSI គ្របដណ្តប់ជួរដ៏ធំនៃប្រភេទឧបករណ៍ និងមុខងារ ហើយដូច្នេះ ឧបករណ៍ត្រូវការសំណុំរងនៃពាក្យបញ្ជាទាំងនេះ។ ជាទូទៅ ពាក្យបញ្ជាខាងក្រោមគឺចាំបាច់សម្រាប់ការទំនាក់ទំនងជាមូលដ្ឋាន៖
សមត្ថភាពអានការសាកសួរ(10) អាន(10) ស្នើរសុំ SENSE test unitit រួចរាល់ សរសេរ(10)
ឧបករណ៍ USB ថ្នាក់ MSC ត្រូវការធនធានពីស្នូល

រាល់ពេលដែលអ្នកបន្ថែមឧទាហរណ៍ថ្នាក់ MSC ទៅក្នុងការកំណត់រចនាសម្ព័ន្ធ USB តាមរយៈមុខងារ sl_usbd_msc_add_to_configuration() ធនធានខាងក្រោមនឹងត្រូវបានបែងចែកពីស្នូល។

ធនធាន
ចំណុចប្រទាក់ ចំណុចប្រទាក់ជំនួស ចំណុចប្រទាក់ក្រុម ចំណុចប្រទាក់

បរិមាណ
1 1 2 0

ចំណាំថាលេខទាំងនោះគឺតាមការកំណត់។ នៅពេលដំឡើង SL_USBD_INTERFACE_QUANTITY របស់អ្នក , SL_USBD_ALT_INTERFACE_QUANTITY , SL_USBD_INTERFACE_GROUP_QUANTITY និង SL_USBD_DESCRIPTOR_QUANTITY តម្លៃកំណត់រចនាសម្ព័ន្ធ កុំភ្លេចគិតគូរអំពីចំនួនថ្នាក់ដែលនឹងត្រូវបន្ថែម។ សម្រាប់តម្លៃកំណត់រចនាសម្ព័ន្ធ SL_USBD_OPEN_ENDPOINTS_QUANTITY ចាប់តាំងពីចំណុចបញ្ចប់ត្រូវបានបើកតែនៅពេលដែលការកំណត់រចនាសម្ព័ន្ធត្រូវបានកំណត់ដោយម៉ាស៊ីន អ្នកគ្រាន់តែត្រូវគិតគូរពីចំនួនចំណុចបញ្ចប់ដែលត្រូវការសម្រាប់ឧទាហរណ៍ថ្នាក់មួយ។
ការកំណត់រចនាសម្ព័ន្ធថ្នាក់ MSC ឧបករណ៍ USB

ប៉ារ៉ាម៉ែត្រកំណត់រចនាសម្ព័ន្ធពីរក្រុមត្រូវបានប្រើដើម្បីកំណត់រចនាសម្ព័ន្ធថ្នាក់ MSC៖
ឧបករណ៍ USB ការកំណត់រចនាសម្ព័ន្ធជាក់លាក់កម្មវិធី MSC ថ្នាក់ឧបករណ៍ USB ឧបករណ៍យូអេសប៊ីថ្នាក់ ការកំណត់រចនាសម្ព័ន្ធឯកតាតក្កវិជ្ជា
ឧបករណ៍ USB ថ្នាក់កម្មវិធី MSC ការកំណត់រចនាសម្ព័ន្ធជាក់លាក់

Class Compile-Time Configurations Class Creation Instance Creation

រក្សាសិទ្ធិ © 2025 Silicon Laboratories ។ រក្សា​រ​សិទ្ធ​គ្រប់យ៉ាង។

៥/៥

ជាងview

Class Compile-Time Configurations
Silicon Labs USB Device MSC class និង subclass SCSI អាចកំណត់រចនាសម្ព័ន្ធបាននៅពេលចងក្រងតាមរយៈ #define ដែលមានទីតាំងនៅ sl_usbd_core_config.h file.
តារាង - ការកំណត់រចនាសម្ព័ន្ធទូទៅ

ឈ្មោះកំណត់រចនាសម្ព័ន្ធ

ការពិពណ៌នា

SL_USBD_MSC_CLASS_INST ចំនួននៃថ្នាក់ instances ដែលអ្នកនឹងបែងចែកតាមរយៈការហៅទៅកាន់មុខងារ

ANCE_QUANTITY

sl_usbd_msc_scsi_create_instance() ។

SL_USBD_MSC_CONFIGURA ចំនួន​នៃ​ការ​កំណត់​រចនាសម្ព័ន្ធ​ដែល​វត្ថុ​ថ្នាក់​អាច​ត្រូវ​បាន​បន្ថែម​តាម​រយៈ​ការ​ហៅ​ទៅ

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 បើក ឬបិទការគាំទ្រសម្រាប់ Logical Block Address (LBA) នៃ 64 ប៊ីត។
_LBA_EN

SL_USBD_MSC_DATA_BUFF ទំហំ​សតិបណ្ដោះ​អាសន្ន​ទិន្នន័យ​ក្នុង​មួយ​ថ្នាក់​ជា​បៃ ER_SIZE

តម្លៃលំនាំដើម
2
1
2
0
512

ការបង្កើត Class Instance
ការបង្កើតឧបករណ៍ USB MSC SCSI class instance ត្រូវបានធ្វើឡើងដោយហៅមុខងារ sl_usbd_msc_scsi_create_instance() ។ មុខងារនេះយកអាគុយម៉ង់កំណត់រចនាសម្ព័ន្ធមួយដែលត្រូវបានពិពណ៌នាខាងក្រោម។
p_scsi_callbacks
p_scsi_callbacks គឺជាទ្រនិចទៅរចនាសម្ព័ន្ធកំណត់នៃប្រភេទ sl_usbd_msc_scsi_callbacks_t ។ បន្ថែមពីលើការហៅត្រឡប់នៃថ្នាក់ឧបករណ៍ usb ទូទៅ វាផ្តល់ឱ្យថ្នាក់ MSC ជាមួយនឹងសំណុំនៃមុខងារហៅត្រឡប់ជាជម្រើសដែលត្រូវបានហៅនៅពេលដែលព្រឹត្តិការណ៍កើតឡើងនៅលើឯកតាតក្កវិជ្ជា។ ទ្រនិចគ្មានលេខ ( NULL ) អាចត្រូវបានបញ្ជូនទៅអាគុយម៉ង់នេះ ប្រសិនបើមិនត្រូវការការហៅត្រលប់មកវិញទេ។
តារាងខាងក្រោមពិពណ៌នាអំពីវាលកំណត់រចនាសម្ព័ន្ធនីមួយៗដែលមាននៅក្នុងរចនាសម្ព័ន្ធកំណត់រចនាសម្ព័ន្ធនេះ។
តារាង – sl_usbd_msc_scsi_callbacks_t រចនាសម្ព័ន្ធកំណត់រចនាសម្ព័ន្ធ

វាល

ការពិពណ៌នា

.បើក

ហៅទូរសព្ទមកនៅពេលបើកដំណើរការ USB class ដោយជោគជ័យ។

.disable បានហៅនៅពេលដែលឧបករណ៍ថ្នាក់ USB ត្រូវបានបិទ។

អនុគមន៍ .host_eject ត្រូវបានហៅនៅពេលដែលឯកតាឡូជីខលត្រូវបានច្រានចេញពីម៉ាស៊ីន។

ហត្ថលេខាមុខងារ
void 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);

ការកំណត់រចនាសម្ព័ន្ធឯកតាឡូជីខលថ្នាក់ MSC ឧបករណ៍ USB

ការបន្ថែមឯកតាតក្កវិជ្ជាទៅ instance ថ្នាក់ MSC ត្រូវបានធ្វើឡើងដោយហៅមុខងារ sl_usbd_msc_lun_add() ។ មុខងារនេះយកអាគុយម៉ង់កំណត់រចនាសម្ព័ន្ធមួយដែលត្រូវបានពិពណ៌នាខាងក្រោម។

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 Class Drivers សម្រាប់ព័ត៌មានបន្ថែមអំពីកម្មវិធីបញ្ជាផ្ទុក។

.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 របស់ម៉ាស៊ីន (ពិត) ឬមិនពិត (មិនពិត) ។

មគ្គុទ្ទេសក៍កម្មវិធីថ្នាក់ MSC ឧបករណ៍ USB

ផ្នែកនេះពន្យល់ពីរបៀបប្រើថ្នាក់ MSC ។
ការចាប់ផ្តើមឧបករណ៍ USB ថ្នាក់ MSC ការបន្ថែមឧបករណ៍ USB MSC SCSI Class Instance ទៅឧបករណ៍ USB ឧបករណ៍របស់អ្នក ការគ្រប់គ្រងឯកតាតក្កវិជ្ជា MSC Class
កំពុងចាប់ផ្តើមឧបករណ៍ USB MSC Class

ដើម្បីបន្ថែមមុខងារថ្នាក់ MSC SCSI ទៅក្នុងឧបករណ៍របស់អ្នក ដំបូងចាប់ផ្តើមថ្នាក់មូលដ្ឋាន MSC និងថ្នាក់រង SCSI ដោយហៅមុខងារ sl_usbd_msc_init() និង sl_usbd_msc_scsi_init() ។
អតីតampខាងក្រោមបង្ហាញពីរបៀបហៅ sl_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
បង្កើតឧទាហរណ៍ថ្នាក់ MSC SCSI ដោយហៅមុខងារ sl_usbd_msc_scsi_create_instance() ។
អតីតample ខាងក្រោមបង្ហាញពីរបៀបហៅ sl_usbd_msc_scsi_create_instance() ដោយប្រើអាគុយម៉ង់លំនាំដើម។ សម្រាប់ព័ត៌មានបន្ថែមអំពីអាគុយម៉ង់ការកំណត់រចនាសម្ព័ន្ធដែលត្រូវបញ្ជូនទៅកាន់ sl_usbd_msc_scsi_create_instance() សូមមើល ការកំណត់រចនាសម្ព័ន្ធជាក់លាក់នៃកម្មវិធី MSC របស់ឧបករណ៍ USB ។
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 អ្នកអាចបន្ថែមវាទៅការកំណត់រចនាសម្ព័ន្ធដោយហៅមុខងារ
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) លេខកំណត់រចនាសម្ព័ន្ធ (នៅទីនេះបន្ថែមវាទៅការកំណត់រចនាសម្ព័ន្ធពេញល្បឿន)។
ឧបករណ៍យូអេសប៊ី ការគ្រប់គ្រងឯកតាឡូជីខលថ្នាក់ MSC
ការបន្ថែមឯកតាតក្កវិជ្ជា ការភ្ជាប់/ផ្ដាច់ឧបករណ៍ផ្ទុក
ការបន្ថែមឯកតាតក្កវិជ្ជា
នៅពេលបន្ថែមឯកតាតក្កវិជ្ជាទៅវត្ថុថ្នាក់ MSC SCSI របស់អ្នក វាត្រូវតែភ្ជាប់ទៅនឹងឧបករណ៍ផ្ទុក (RAMDisk, SD card, 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

= “រារាំងឧបករណ៍ឧampឡេ”;

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() ។ មុខងារទាំងនេះអនុញ្ញាតឱ្យអ្នកត្រាប់តាមការដកឧបករណ៍ផ្ទុកចេញ ដើម្បីទទួលបានការចូលប្រើឡើងវិញពីកម្មវិធីដែលបានបង្កប់ប្រសិនបើចាំបាច់។
អតីតampខាងក្រោមនេះបង្ហាញពីរបៀបប្រើមុខងារ 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) {
/* កំហុសបានកើតឡើង។ ការដោះស្រាយកំហុសគួរតែត្រូវបានបន្ថែមនៅទីនេះ។ */
}

(១៦១៦)

ស្ថានភាព = sl_usbd_msc_scsi_lun_attach(lu_object_ptr) ប្រសិនបើ (ស្ថានភាព ! SL_STATUS_OK) {
/* កំហុសបានកើតឡើង។ ការដោះស្រាយកំហុសគួរតែត្រូវបានបន្ថែមនៅទីនេះ។ */
}

(១៦១៦)

(1) ចាប់ពីពេលនេះតទៅ ប្រសិនបើឧបករណ៍ MSC ត្រូវបានភ្ជាប់ទៅម៉ាស៊ីន មេឌៀផ្ទុកអាចចូលប្រើបាន។
(2) ប្រសិនបើឧបករណ៍ MSC ត្រូវបានភ្ជាប់ទៅម៉ាស៊ីន នោះមេឌៀនឹងបង្ហាញជាមិនអាចប្រើបាន។ នៅពេលនេះ ប្រតិបត្តិការអាចត្រូវបានអនុវត្តនៅលើប្រព័ន្ធផ្សព្វផ្សាយពីកម្មវិធីដែលបានបង្កប់។
(3) ជាថ្មីម្តងទៀត ប្រសិនបើឧបករណ៍ MSC ត្រូវបានភ្ជាប់ទៅម៉ាស៊ីន នោះមេឌៀផ្ទុកនឹងបង្ហាញដូចដែលបានភ្ជាប់។
ឧបករណ៍ផ្ទុក USB ប្រភេទ MSC Class 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 របស់យើងត្រូវតែបញ្ចូលទៅ aaaaaaaa sl_usbd_msc_scsi_lun_info_t v ri ble, p ssed s rgument នៅពេលអ្នក dd logic l unit ជាមួយ sl_usbd_msc_scsi_lun_ad សូមមើលផ្នែកឧបករណ៍ USB MSC SCSI API សម្រាប់ព័ត៌មានលម្អិតអំពីរចនាសម្ព័ន្ធ។ ការអនុវត្តកម្មវិធីបញ្ជាការផ្ទុកអាចមានលក្ខណៈសាមញ្ញដូចអារេនៃផ្នែកនៅក្នុង RAM ។ ទំហំផ្នែកធម្មតា (ឧទាហរណ៍ ទំហំប្លុក) គឺ 512 សម្រាប់ឧបករណ៍ផ្ទុកដ៏ធំ និង 2048 សម្រាប់ស៊ីឌីរ៉ូម។

រក្សាសិទ្ធិ © 2025 Silicon Laboratories ។ រក្សា​រ​សិទ្ធ​គ្រប់យ៉ាង។

៥/៥

ជាងview
ជាងview
ថ្នាក់អ្នកលក់ឧបករណ៍ USB
ថ្នាក់អ្នកលក់ឧបករណ៍ USB លើសview តម្រូវការធនធានថ្នាក់អ្នកលក់ឧបករណ៍ USB ពីថ្នាក់អ្នកលក់ឧបករណ៍ USB Core ការកំណត់រចនាសម្ព័ន្ធឧបករណ៍ USB ថ្នាក់អ្នកលក់ ការណែនាំកម្មវិធីថ្នាក់អ្នកលក់អនុញ្ញាតឱ្យអ្នកបង្កើតឧបករណ៍ជាក់លាក់របស់អ្នកលក់ដែលអាចអនុវត្តពិធីការដែលមានកម្មសិទ្ធិ។ វាពឹងផ្អែកលើគូនៃចំណុចបញ្ចប់ភាគច្រើន ដើម្បីផ្ទេរទិន្នន័យរវាងម៉ាស៊ីន និងឧបករណ៍។ ការផ្ទេរទិន្នន័យច្រើនមានភាពងាយស្រួលសម្រាប់ការផ្ទេរទិន្នន័យដែលមិនមានរចនាសម្ព័ន្ធច្រើន និងផ្តល់នូវការផ្លាស់ប្តូរទិន្នន័យដែលអាចទុកចិត្តបានដោយប្រើយន្តការរកឃើញកំហុស និងព្យាយាមម្តងទៀត។ បន្ថែមពីលើចំណុចបញ្ចប់ភាគច្រើន ថ្នាក់អ្នកលក់ក៏អាចប្រើគូស្រេចចិត្តនៃចំណុចបញ្ចប់ដែលរំខានផងដែរ។ ប្រព័ន្ធប្រតិបត្តិការណាមួយ (OS) អាចដំណើរការជាមួយថ្នាក់អ្នកលក់បាន ផ្តល់ថា OS មានកម្មវិធីបញ្ជាសម្រាប់គ្រប់គ្រងថ្នាក់អ្នកលក់។ អាស្រ័យលើ OS អ្នកបើកបរអាចជាជនជាតិដើម ឬអ្នកលក់ជាក់លាក់។ ឧទាហរណ៍ នៅក្រោម Microsoft Windows® កម្មវិធីរបស់អ្នកធ្វើអន្តរកម្មជាមួយកម្មវិធីបញ្ជា WinUSB ដែលផ្តល់ដោយ Microsoft ដើម្បីទាក់ទងជាមួយឧបករណ៍អ្នកលក់។
ថ្នាក់អ្នកលក់ឧបករណ៍ USB លើសview
រូបភាព – ស្ថាបត្យកម្មទូទៅរវាង Windows Host និង Vendor Class បង្ហាញពីស្ថាបត្យកម្មទូទៅរវាងម៉ាស៊ីន និងឧបករណ៍ដោយប្រើថ្នាក់អ្នកលក់។ នៅក្នុងនេះ អតីតampដូច្នេះ ប្រព័ន្ធប្រតិបត្តិការម៉ាស៊ីនគឺ MS Windows ។
រូបភាព – ស្ថាបត្យកម្មទូទៅរវាង MS Windows Host និង Vendor Class

នៅផ្នែកខាង MS Windows កម្មវិធីទាក់ទងជាមួយឧបករណ៍អ្នកលក់ដោយធ្វើអន្តរកម្មជាមួយបណ្ណាល័យ USB ។ បណ្ណាល័យ ដូចជា libusb ផ្តល់ API ដើម្បីគ្រប់គ្រងឧបករណ៍ និងបំពង់ដែលពាក់ព័ន្ធរបស់វា និងដើម្បីទំនាក់ទំនងជាមួយឧបករណ៍តាមរយៈការគ្រប់គ្រង ភាគច្រើន និងចំណុចបញ្ចប់ដែលរំខាន។
នៅផ្នែកខាងឧបករណ៍ ថ្នាក់អ្នកលក់ត្រូវបានផ្សំឡើងដោយចំណុចបញ្ចប់ដូចខាងក្រោម៖
ចំណុចបញ្ចប់នៃការគ្រប់គ្រង IN និង OUT មួយគូហៅថា ចំណុចបញ្ចប់លំនាំដើម។ គូនៃចំណុចបញ្ចប់ភាគច្រើន IN និង OUT ។

រក្សាសិទ្ធិ © 2025 Silicon Laboratories ។ រក្សា​រ​សិទ្ធ​គ្រប់យ៉ាង។

៥/៥

ជាងview

គូនៃចំណុចបញ្ចប់ IN និង OUT រំខាន។ គូនេះគឺស្រេចចិត្ត។ តារាងខាងក្រោមបង្ហាញពីការប្រើប្រាស់ចំណុចបញ្ចប់ផ្សេងៗគ្នា៖
តារាង - ការប្រើប្រាស់ចំណុចបញ្ចប់នៃថ្នាក់អ្នកលក់

ទិសដៅចំណុចបញ្ចប់

គ្រប់គ្រង IN
គ្រប់គ្រង
ចេញ
ភាគច្រើន IN

ឧបករណ៍-tohost
> ឧបករណ៍ម៉ាស៊ីន
ឧបករណ៍-tohost

ចេញជាដុំ
រំខាន IN
រំខាន
ចេញ

ម៉ាស៊ីន-ឧបករណ៍
ឧបករណ៍-tohost
ម៉ាស៊ីន-ឧបករណ៍

ការប្រើប្រាស់
សំណើស្តង់ដារសម្រាប់ការរាប់បញ្ចូល និងសំណើជាក់លាក់របស់អ្នកលក់។
សំណើស្តង់ដារសម្រាប់ការរាប់បញ្ចូល និងសំណើជាក់លាក់របស់អ្នកលក់។
ការទំនាក់ទំនងទិន្នន័យឆៅ។ ទិន្នន័យ​អាច​ត្រូវ​បាន​រៀបចំ​ដោយ​យោង​តាម​ពិធីការ​កម្មសិទ្ធិ។
ការទំនាក់ទំនងទិន្នន័យឆៅ។ ទិន្នន័យ​អាច​ត្រូវ​បាន​រៀបចំ​ដោយ​យោង​តាម​ពិធីការ​កម្មសិទ្ធិ។
ការទំនាក់ទំនងទិន្នន័យ ឬការជូនដំណឹង។ ទិន្នន័យ​អាច​ត្រូវ​បាន​រៀបចំ​ដោយ​យោង​តាម​ពិធីការ​កម្មសិទ្ធិ។ ការទំនាក់ទំនងទិន្នន័យ ឬការជូនដំណឹង។ ទិន្នន័យ​អាច​ត្រូវ​បាន​រៀបចំ​ដោយ​យោង​តាម​ពិធីការ​កម្មសិទ្ធិ។

កម្មវិធីឧបករណ៍អាចប្រើចំណុចបញ្ចប់ភាគច្រើន និងរំខានដើម្បីផ្ញើ ឬទទួលទិន្នន័យទៅ ឬពីម៉ាស៊ីន។ វាអាចប្រើតែចំណុចបញ្ចប់លំនាំដើមដើម្បីឌិកូដសំណើជាក់លាក់របស់អ្នកលក់ដែលផ្ញើដោយម៉ាស៊ីន។ សំណើស្តង់ដារត្រូវបានគ្រប់គ្រងខាងក្នុងដោយស្រទាប់ស្នូលនៃ Silicon Labs USB Device។
តម្រូវការធនធានថ្នាក់អ្នកលក់ឧបករណ៍ USB ពីស្នូល

រាល់ពេលដែលអ្នកបន្ថែម vendor class instance ទៅ configuration តាមរយៈ function sl_usbd_vendor_add_to_configuration() ធនធានខាងក្រោមនឹងត្រូវបានបែងចែកពីស្នូល។

ធនធាន
ចំណុចប្រទាក់ ចំណុចប្រទាក់ជំនួស ចំណុចប្រទាក់ក្រុម ចំណុចប្រទាក់

បរិមាណ
1 1 2 (4 ប្រសិនបើអ្នកបើកដំណើរការចំណុចបញ្ចប់រំខាន) 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

ក្រុមពីរនៃប៉ារ៉ាម៉ែត្រកំណត់រចនាសម្ព័ន្ធត្រូវបានប្រើដើម្បីកំណត់រចនាសម្ព័ន្ធថ្នាក់អ្នកលក់៖
ការកំណត់រចនាសម្ព័ន្ធជាក់លាក់នៃកម្មវិធីអ្នកផ្គត់ផ្គង់ឧបករណ៍ USB ថ្នាក់កម្មវិធីលក់ឧបករណ៍ USB ការកំណត់រចនាសម្ព័ន្ធឧបករណ៍ប្រភេទ USB
ការកំណត់រចនាសម្ព័ន្ធជាក់លាក់នៃកម្មវិធីអ្នកលក់ឧបករណ៍ USB
ទីមួយ ដើម្បីប្រើម៉ូឌុលថ្នាក់អ្នកលក់ឧបករណ៍ Silicon Labs USB សូមកែតម្រូវការកំណត់ពេលវេលាចងក្រងរបស់អ្នកលក់កំណត់តាមតម្រូវការកម្មវិធីរបស់អ្នក។ ពួកវាត្រូវបានដាក់ជាក្រុមឡើងវិញនៅក្នុងបឋមកថា sl_usbd_core_config.h file នៅក្រោមផ្នែកអ្នកលក់។ គោលបំណងនៃការកំណត់បរិមាណគឺដើម្បីជូនដំណឹងដល់ម៉ូឌុលឧបករណ៍ USB អំពីចំនួនវត្ថុរបស់អ្នកលក់ USB ដែលត្រូវបែងចែក។
តារាងខាងក្រោមពិពណ៌នាអំពីការកំណត់រចនាសម្ព័ន្ធនីមួយៗ។

រក្សាសិទ្ធិ © 2025 Silicon Laboratories ។ រក្សា​រ​សិទ្ធ​គ្រប់យ៉ាង។

៥/៥

ជាងview

តារាង - ការកំណត់រចនាសម្ព័ន្ធអ្នកលក់ឧបករណ៍ USB កំណត់

ឈ្មោះកំណត់រចនាសម្ព័ន្ធ

ការពិពណ៌នា

តម្លៃលំនាំដើម

SL_USBD_VENDOR_CLASS_INSTANCE_QUANTITY ចំនួននៃ class instances ដែលអ្នកនឹងបែងចែកតាមរយៈការហៅទៅកាន់អនុគមន៍ 2 sl_usbd_vendor_create_instance() ។

SL_USBD_VENDOR_CONFIGURATION_QUANTITY ចំនួននៃការកំណត់រចនាសម្ព័ន្ធ។ ករណីថ្នាក់អ្នកលក់អាចជា 1 បន្ថែមទៅការកំណត់រចនាសម្ព័ន្ធមួយ ឬច្រើនតាមរយៈការហៅទៅកាន់អនុគមន៍ sl_usbd_vendor_add_to_configuration() ។

ការ​កំណត់​រចនាសម្ព័ន្ធ​វត្ថុ​ថ្នាក់​អ្នក​លក់​ឧបករណ៍ USB

ផ្នែកនេះកំណត់ការកំណត់រចនាសម្ព័ន្ធដែលទាក់ទងនឹងឧទាហរណ៍ថ្នាក់អ្នកលក់។
Class Instance Creation intr_en interval p_vendor_callbacks
ការបង្កើត Class Instance

ការបង្កើតឧទាហរណ៍ថ្នាក់អ្នកលក់គឺធ្វើឡើងដោយហៅមុខងារ sl_usbd_vendor_create_instance() ដែលយកអាគុយម៉ង់កំណត់រចនាសម្ព័ន្ធបីដែលត្រូវបានពិពណ៌នាខាងក្រោម។

intr_en
Boolean ដែលបង្ហាញថាតើគូនៃចំណុចបញ្ចប់ដែលរំខានគួរតែត្រូវបានបន្ថែមឬអត់។

តម្លៃ
ពិតមិនពិត

ការពិពណ៌នា
ចំណុចបញ្ចប់ IN/OUT មួយគូនឹងត្រូវបានបន្ថែម និងធ្វើឱ្យមានសម្រាប់កម្មវិធីដែលបានបង្កប់។ គ្មានចំណុចបញ្ចប់ដែលរំខាននឹងត្រូវបានបន្ថែមទេ។ មានតែចំណុចបញ្ចប់ IN/OUT ច្រើនគូប៉ុណ្ណោះដែលនឹងមាន។

ចន្លោះពេល
ប្រសិនបើអ្នកកំណត់ intr_en ទៅពិត អ្នកអាចបញ្ជាក់ចន្លោះពេលនៃការស្ទង់មតិចំណុចបញ្ចប់ដែលរំខាន (គិតជាមិល្លីវិនាទី)។ ប្រសិនបើអ្នកកំណត់ intr_en ទៅមិនពិត អ្នកអាចកំណត់ចន្លោះពេលទៅ 0 ព្រោះវានឹងត្រូវបានមិនអើពើដោយថ្នាក់។
p_vendor_callbacks
p_vendor_callbacks គឺជាទ្រនិចទៅអថេររចនាសម្ព័ន្ធមុខងារ callback ។ ដែលអ្នកអាចបញ្ជាក់ដើម្បីដោះស្រាយសំណើត្រួតពិនិត្យជាក់លាក់នៃថ្នាក់។ ប្រសិនបើអ្នកមិនប្រើសំណើជាក់លាក់ថ្នាក់ណាមួយ ឬត្រូវការបើក/បិទការជូនដំណឹងទេ អ្នកអាចកំណត់វាទៅជា NULL ។
អតីតample ខាងក្រោមផ្តល់នូវហត្ថលេខារំពឹងទុករបស់អ្នកដោះស្រាយសំណើជាក់លាក់ថ្នាក់របស់អ្នក។
Example – ហត្ថលេខានៃមុខងារសំណើជាក់លាក់នៃថ្នាក់

void app_usbd_vendor_req_handle(uint8_t

class_nbr, (1)

const sl_usbd_setup_req_t * p_setup_req); (2)

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

(1) លេខឧទាហរណ៍ថ្នាក់អ្នកលក់។

រក្សាសិទ្ធិ © 2025 Silicon Laboratories ។ រក្សា​រ​សិទ្ធ​គ្រប់យ៉ាង។

៥/៥

ជាងview

(2) ចង្អុលទៅសំណើដំឡើងដែលបានទទួលពីម៉ាស៊ីន។
មគ្គុទ្ទេសក៍កម្មវិធីថ្នាក់អ្នកលក់ឧបករណ៍ USB
ផ្នែកនេះពន្យល់ពីរបៀបប្រើថ្នាក់អ្នកលក់។ ការចាប់ផ្ដើមថ្នាក់អ្នកលក់ឧបករណ៍ USB ការបន្ថែមឧបករណ៍ USB ថ្នាក់អ្នកលក់ឧបករណ៍ទៅឧបករណ៍របស់អ្នក ទំនាក់ទំនងដោយប្រើថ្នាក់អ្នកលក់ឧបករណ៍ USB
កំពុងចាប់ផ្តើមថ្នាក់អ្នកលក់ឧបករណ៍ USB
ដើម្បីបន្ថែមមុខងារ Vendor Class ទៅក្នុងឧបករណ៍របស់អ្នក សូមចាប់ផ្តើមថ្នាក់ដំបូងដោយហៅមុខងារ USBD_Vendor_Init()។ អតីតample ខាងក្រោមបង្ហាញពីរបៀបហៅ sl_usbd_vendor_init() ។
Example – ហៅ sl_usbd_vendor_init()

ស្ថានភាព sl_status_t;
ស្ថានភាព = sl_usbd_vendor_init(); ប្រសិនបើ (ស្ថានភាព ! SL_STATUS_OK) { /* កំហុសបានកើតឡើង។ ការដោះស្រាយកំហុសគួរតែត្រូវបានបន្ថែមនៅទីនេះ។ */ }
ការបន្ថែមឧបករណ៍ USB Class Vendor Class Instance ទៅឧបករណ៍របស់អ្នក។
ដើម្បីបន្ថែមមុខងារថ្នាក់អ្នកលក់ទៅឧបករណ៍របស់អ្នក អ្នកត្រូវតែបង្កើតឧទាហរណ៍ជាមុនសិន បន្ទាប់មកបន្ថែមវាទៅក្នុងការកំណត់រចនាសម្ព័ន្ធឧបករណ៍របស់អ្នក។
ការបង្កើត Vendor Class Instance ការបន្ថែម Vendor Class Instance ទៅការកំណត់រចនាសម្ព័ន្ធឧបករណ៍របស់អ្នក
ការ​បង្កើត​វត្ថុ​ថ្នាក់​អ្នក​លក់
បង្កើត instance ថ្នាក់អ្នកលក់ដោយហៅមុខងារ sl_usbd_vendor_create_instance() ។ អតីតample ខាងក្រោមបង្ហាញពីរបៀបហៅ sl_usbd_vendor_create_instance() ដោយប្រើអាគុយម៉ង់លំនាំដើម។ សម្រាប់ព័ត៌មានបន្ថែមអំពីអាគុយម៉ង់នៃការកំណត់រចនាសម្ព័ន្ធដែលត្រូវបញ្ជូនទៅកាន់ sl_usbd_vendor_create_instance() សូមមើល ការកំណត់រចនាសម្ព័ន្ធធាតុប្រភេទអ្នកលក់ឧបករណ៍ USB ។
Example – ហៅ sl_usbd_vendor_create_instance()

uint8_t class_nbr; ស្ថានភាព sl_status_t;

ស្ថានភាព = sl_usbd_vendor_create_instance(មិនពិត,

(១៦១៦)

0u,

(១៦១៦)

app_usbd_vendor_callback_functions, (3)

&class_nbr);

ប្រសិនបើ (ស្ថានភាព ! SL_STATUS_OK) {

/* កំហុសបានកើតឡើង។ ការដោះស្រាយកំហុសគួរតែត្រូវបានបន្ថែមនៅទីនេះ។ */

}

(1) គ្មានចំណុចបញ្ចប់រំខានជាមួយឧទាហរណ៍ថ្នាក់នេះ។ (2) ចន្លោះពេល​ត្រូវ​បាន​មិនអើពើ ដោយសារ​ចំណុច​បញ្ចប់​រំខាន​ត្រូវ​បាន​បិទ។

រក្សាសិទ្ធិ © 2025 Silicon Laboratories ។ រក្សា​រ​សិទ្ធ​គ្រប់យ៉ាង។

៥/៥

ជាងview

(3) មុខងារ Callback ដែលជាផ្នែកមួយនៃកម្មវិធីរបស់អ្នកដែលគ្រប់គ្រងសំណើតាមថ្នាក់ជាក់លាក់របស់អ្នកលក់។ សូមមើលការទំនាក់ទំនងដោយប្រើថ្នាក់អ្នកលក់ឧបករណ៍ USB សម្រាប់ព័ត៌មានបន្ថែម។ ការបន្ថែម Vendor Class Instance ទៅក្នុង Configuration របស់ឧបករណ៍របស់អ្នក បន្ទាប់ពីអ្នកបានបង្កើត vendor class instance អ្នកអាចបន្ថែមវាទៅ configuration ដោយហៅ function USBD_Vendor_ConfigAdd()។ អតីតample ខាងក្រោមបង្ហាញពីរបៀបហៅ 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() ។ (2) លេខកំណត់រចនាសម្ព័ន្ធ (នៅទីនេះបន្ថែមវាទៅការកំណត់រចនាសម្ព័ន្ធពេញល្បឿន)។
ការប្រាស្រ័យទាក់ទងគ្នាដោយប្រើថ្នាក់អ្នកលក់ឧបករណ៍ USB
General Synchronous Communication Asynchronous Communication Request Vendor ទូទៅ ថ្នាក់ Vendor ផ្តល់នូវមុខងារខាងក្រោមដើម្បីទំនាក់ទំនងជាមួយម៉ាស៊ីន។ សម្រាប់ព័ត៌មានលម្អិតអំពីប៉ារ៉ាម៉ែត្រនៃមុខងារ សូមមើល USB Device Vendor 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_ssus _v 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 _ ad t_asy nc
()
sl_usb d _v e nd o r_write _inte rrup t_asy nc
()

Operation Receives data from host through bulk OUT endpoint. This function is blocking. Sends data to host through bulk IN endpoint. This function is blocking. Receives data from host through bulk OUT endpoint. This function is non-blocking. Sends data to host through bulk IN endpoint. This function is non-blocking. Receives data from host through interrupt OUT endpoint. This function is blocking. Sends data to host through interrupt IN endpoint. This function is blocking. Receives data from host through interrupt OUT endpoint. This function is non-
ការទប់ស្កាត់។
Sends data to host through interrupt IN endpoint. This function is non-blocking.

The vendor requests are also another way to communicate with the host. When managing vendor requests sent by the host, the application can receive or send data from or to the host using the control endpoint; you will need to provide an application callback passed as a parameter of sl_usbd_vendor_create_instance() . Synchronous Communication

រក្សាសិទ្ធិ © 2025 Silicon Laboratories ។ រក្សា​រ​សិទ្ធ​គ្រប់យ៉ាង។

៥/៥

ជាងview

Synchronous communication means that the transfer is blocking. When a function is called, the application blocks until the transfer completes with or without an error. A timeout can be specified to avoid waiting forever. The example below shows a read and write that receives data from the host using the bulk OUT endpoint and sends data to the host using the bulk IN endpoint.
Example – Synchronous Bulk Read and Write

__ALIGNED(4) uint8_t rx_buf[2];

__ALIGNED(4) uint8_t tx_buf[2];

uint32_t

xfer_len;

sl_status_t

ស្ថានភាព;

status = sl_usbd_vendor_read_bulk_sync(class_nbr,

(១៦១៦)

(void *)&rx_buf[0],

(១៦១៦)

2u,

0u,

(១៦១៦)

&xfer_len);

ប្រសិនបើ (ស្ថានភាព ! SL_STATUS_OK) {

/* $$$$ ដោះស្រាយកំហុស។ */

}

status = sl_usbd_vendor_write_bulk_sync( class_nbr,

(១៦១៦)

(void *)&tx_buf[0],

(១៦១៦)

2u,

0u,

(១៦១៦)

false,

(១៦១៦)

&xfer_len);

ប្រសិនបើ (ស្ថានភាព ! SL_STATUS_OK) {

/* $$$$ ដោះស្រាយកំហុស។ */

}

(1) The class instance number created with sl_usbd_vendor_create_instance() provides an internal reference to the Vendor class to route the transfer to the proper bulk OUT or IN endpoint.
(2) The application must ensure that the buffer provided to the function is large enough to accommodate all the data. Otherwise, synchronization issues might happen.
(3) In order to avoid an infinite blocking situation, a timeout expressed in milliseconds can be specified. A value of 809 makes the application task wait forever.
(4) កម្មវិធីផ្តល់នូវសតិបណ្ដោះអាសន្ននៃការបញ្ជូនដំបូង។
(5) If this flag is set to true , and the transfer length is multiple of the endpoint maximum packet size, the device stack will send a zero-length packet to the host to signal the end of the transfer.
The use of interrupt endpoint communication functions, sl_usbd_vendor_read_interrupt_sync() and sl_usbd_vendor_write_interrupt_sync() , is similar to bulk endpoint communication functions presented in Example – Synchronous Bulk Read and Write.
ការទំនាក់ទំនងអសមកាល
Asynchronous communication means that the transfer is non-blocking. When a function is called, the application passes the transfer information to the device stack and does not block. Other application processing can be done while the transfer is in progress over the USB bus. Once the transfer has completed, a callback function is called by the device stack to inform the application about the transfer completion. The example below shows asynchronous read and write.
Example – Asynchronous Bulk Read and Write

រក្សាសិទ្ធិ © 2025 Silicon Laboratories ។ រក្សា​រ​សិទ្ធ​គ្រប់យ៉ាង។

៥/៥

ជាងview

void app_usbd_vendor_comm (uint8_t class_nbr)

{

__ALIGNED(4) uint8_t rx_buf[2];

__ALIGNED(4) uint8_t tx_buf[2];

sl_status_t

ស្ថានភាព;

status = sl_usbd_vendor_read_bulk_async(class_nbr,

(void *)&rx_buf[0],

(១៦១៦)

2u,

app_usbd_vendor_rx_completed,

NULL);

(១៦១៦)

ប្រសិនបើ (ស្ថានភាព ! SL_STATUS_OK) {

/* $$$$ ដោះស្រាយកំហុស។ */

}

status = sl_usbd_vendor_write_bulk_async(class_nbr,

(void *)&tx_buf[0],

(១៦១៦)

2u,

app_usbd_vendor_tx_completed,

NULL,

(១៦១៦)

false);

(១៦១៦)

ប្រសិនបើ (ស្ថានភាព ! SL_STATUS_OK) {

/* $$$$ ដោះស្រាយកំហុស។ */

}

}

(1) (3)
(1) (3)

static void app_usbd_vendor_rx_completed(uint8_t class_nbr,

(១៦១៦)

void *p_buf,

uint32_t buf_len,

uint32_t xfer_len,

void *p_callback_arg,

sl_status_t status)

{

ប្រសិនបើ (ស្ថានភាព ! SL_STATUS_OK) {

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

} ផ្សេងទៀត {

/* $$$$ ដោះស្រាយកំហុស។ */

}

}

static void app_usbd_vendor_tx_completed(uint8_t class_nbr,

(១៦១៦)

void *p_buf,

uint32_t buf_len,

uint32_t xfer_len,

void *p_callback_arg,

sl_status_t status)

{

ប្រសិនបើ (ស្ថានភាព ! SL_STATUS_OK) {

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

} ផ្សេងទៀត {

/* $$$$ ដោះស្រាយកំហុស។ */

}

}

(1) The class instance number provides an internal reference to the Vendor class to route the transfer to the proper bulk OUT or IN endpoint. (2) The application must ensure that the buffer provided is large enough to accommodate all the data. Otherwise, there may be synchronization issues. (3) The application provides a callback function pointer passed as a parameter. Upon completion of the transfer, the device stack calls this callback function so that the application can finalize the transfer by analyzing the transfer result. For instance, on completion of a read operation, the application might perform processing on the received data. Upon write completion, the application can indicate if the write was successful and how many bytes were sent.

រក្សាសិទ្ធិ © 2025 Silicon Laboratories ។ រក្សា​រ​សិទ្ធ​គ្រប់យ៉ាង។

៥/៥

ជាងview
(4) An argument associated with the callback can be also passed. Then in the callback context, some private information can be retrieved. (5) The application provides the initialized transmit buffer. (6) If this flag is set to true , and the transfer length is a multiple of the endpoint maximum packet size, the device stack will send a zero-length packet to the host to signal the end of transfer. The use of interrupt endpoint communication functions, sl_usbd_vendor_read_interrupt_async() and sl_usbd_vendor_write_interrupt_async() , is similar to the bulk endpoint communication functions presented in Example Asynchronous Bulk Read and Write.
Vendor Request
The USB 2.0 specification defines three types of requests: standard, class, and vendor. All standard requests are handled directly by the core layer, while class requests are managed by the proper associated class. Vendor requests can be processed by the vendor class. To process vendor requests, you must provide an application callback as a parameter of sl_usbd_vendor_create_instance() . After a vendor request is received by the USB device, it must be decoded properly. The example below shows vendor request decoding. Certain requests may be required to receive from or send to the host during the data stage of a control transfer. If no data stage is present, you only have to decode the Setup packet. This example shows the three types of data stage management: no data, data OUT and data IN.
Example – Vendor Request Decoding

រក្សាសិទ្ធិ © 2025 Silicon Laboratories ។ រក្សា​រ​សិទ្ធ​គ្រប់យ៉ាង។

៥/៥

ជាងview

#define APP_VENDOR_REQ_NO_DATA

0x01 យូ

#define APP_VENDOR_REQ_RECEIVE_DATA_FROM_HOST 0x02u

#define APP_VENDOR_REQ_SEND_DATA_TO_HOST 0x03u

#define APP_VENDOR_REQ_DATA_BUF_SIZE

50 យូ

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 valid;

ស្ថានភាព sl_status_t;

uint16_t req_len;

uint32_t xfer_len;

(void)class_nbr;

switch(p_setup_req->bRequest) { case APP_VENDOR_REQ_NO_DATA: valid = true; break;

(2) (3)

case APP_VENDOR_REQ_RECEIVE_DATA_FROM_HOST:

(១៦១៦)

req_len = p_setup_req->wLength;

if (req_len > APP_VENDOR_REQ_DATA_BUF_SIZE) {

// Not enough room to receive data.

return (false);

}

// Receive data via Control OUT EP. // Wait transfer completion forever. status = sl_usbd_core_read_control_sync((void *)&app_vendor_req_buf[0u],
req_len, 0u, &xfer_len); if (status ! SL_STATUS_OK) { valid = false; } else { valid = true; } break;

case APP_VENDOR_REQ_SEND_DATA_TO_HOST:

(១៦១៦)

req_len = APP_VENDOR_REQ_DATA_BUF_SIZE;

// Fill buf with a pattern. Mem_Set((void *)&AppVendorReqBuf[0u],
'A',
req_len);

// Send data via Control IN EP. // Wait transfer completion forever. status = sl_usbd_core_write_control_sync((void *)&app_vendor_req_buf[0u],
req_len, 0u, false, &xfer_len); if (status ! SL_STATUS_OK) { valid = DEF_FAIL; } else { valid = DEF_OK; } break;

លំនាំដើម៖

(១៦១៦)

// Request is not supported.

រក្សាសិទ្ធិ © 2025 Silicon Laboratories ។ រក្សា​រ​សិទ្ធ​គ្រប់យ៉ាង។

៥/៥

ជាងview

valid =true;break;
case APP_VENDOR_REQ_RECEIVE_DATA_FROM_HOST:(4) req_len = p_setup_req->wLength;if(req_len > APP_VENDOR_REQ_DATA_BUF_SIZE){// Not enough room to receive data.return(false);}// Receive data via Control OUT EP.// Wait transfer completion forever. status =sl_usbd_core_read_control_sync((void *)&app_vendor_req_buf[0u],
req_len,0u,&xfer_len);if(status ! SL_STATUS_OK){ valid =false;}else{ valid =true;}break;
case APP_VENDOR_REQ_SEND_DATA_TO_HOST:(5) req_len = APP_VENDOR_REQ_DATA_BUF_SIZE;// Fill buf with a pattern.Mem_Set((void *)&AppVendorReqBuf[0u],’A’,
req_len);// Send data via Control IN EP.// Wait transfer completion forever. status =sl_usbd_core_write_control_sync((void *)&app_vendor_req_buf[0u],
req_len,0u,false,&xfer_len);if(status ! SL_STATUS_OK){ valid = DEF_FAIL;}else{ valid = DEF_OK;}break;
default:(6)// Request is not supported. valid = DEF_FAIL;break;}return(valid);}

(1) The core will pass the Setup packet content to your application. The structure sl_usbd_setup_req_t contains the same fields as defined by the USB 2.0 specification (refer to section “9.3 USB Device Requests” of the specification for more details):

typedef struct {

uint8_t bmRequestType; /* Characteristics of request.

*/

uint8_t bRequest; /* Specific request.

*/

uint16_t wValue; /* Varies according to request.

*/

uint16_t wIndex; /* Varies according to request; typically used as index.*/

uint16_t wLength; /* Transfer length if data stagអ៊ីបច្ចុប្បន្ន។

*/

} sl_usbd_setup_req_t;

(2) Determine the request. You may use a switch statement if you are using different requests. In this example, there are three different requests corresponding to the three types of the data stage: APP_VENDOR_REQ_NO_DATA, APP_VENDOR_REQ_RECEIVE_DATA_FROM_HOST, and APP_VENDOR_REQ_SEND_DATA_TO_HOST.
(3) If no data stage is present, you only need to decode the other fields. The presence of a data stage or not is indicated by the field wLength being non-null or null.
(4) If the host sends data to the device, you must call the function sl_usbd_core_read_control_sync() . The buffer provided should be able to contain up to wLength bytes. If any error occurs, return false to the core that will stall the status stage of the control transfer, indicating to the host that the request cannot be processed. true is returned in case of success.
(5) If the host receives data from the device, you must call the function sl_usbd_core_write_control_sync() . If any error occurs, return false to the core that will stall the status stage of the control transfer, indicating to the host that the request cannot be processed. true is returned in case of success.
(6) In this example, all requests not recognized are marked by returning false to the core. This one will stall the data or status stage of the control transfer indicating to the host that the request is not supported.
The host sends vendor requests through a host vendor application. USb libraries, such as libusb, can be used to help you develop your custom host vendor application.

រក្សាសិទ្ធិ © 2025 Silicon Laboratories ។ រក្សា​រ​សិទ្ធ​គ្រប់យ៉ាង។

៥/៥

ឯកសារ API
ឯកសារ API
ឯកសារ API
បញ្ជីនៃម៉ូឌុល
USB Device API USB Device ACM API USB Device CDC API USB Device Core API USB Device HID API USB Device MSC API USB Device MSC SCSI API USB Device Vendor API

ការពិពណ៌នា
USB Device API USB Device ACM API USB Device CDC API USB Device Core API USB Device HID API USB Device MSC API USB Device MSC SCSI API USB Device Vendor API

រក្សាសិទ្ធិ © 2025 Silicon Laboratories ។ រក្សា​រ​សិទ្ធ​គ្រប់យ៉ាង។

៥/៥

USB Device API
USB Device API
USB Device API
USB Device API.
ម៉ូឌុល
USB Device ACM API USB Device CDC API USB Device Core API USB Device HID API USB Device MSC API USB Device MSC SCSI API USB Device Vendor API

រក្សាសិទ្ធិ © 2025 Silicon Laboratories ។ រក្សា​រ​សិទ្ធ​គ្រប់យ៉ាង។

៥/៥

USB Device ACM API

USB Device ACM API

USB Device ACM API

USB Device CDC ACM API.
ម៉ូឌុល
a 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

a sl_usbd_cdc_ cm_init(void)
GLOBAL VARIABLES.
ssll__uussbbdd__ccddcc__aaccmm__ccraellabtaec_kins_stta*npc_ea(cumin_tc1a6l_lbtalicnkes_,sutaintte8__int t*eprv_saul,bucinlats1s6__nt bcra)ll_mgmt_capabilities,
Add a new instance of the CDC ACM serial emulation subclass.
a a a a sl_usbd_cdc_ cm_ dd_to_configur tion(uint8_t subcl ss_nbr, uint8_t config_nbr)
Add a CDC ACM subclass class instance into USB device configuration.
a a sl_usbd_cdc_ cm_is_en bled(uint8_t subclass_nbr, bool *p_enabled)
Get the CDC ACM serial emulation subclass enable state.
a a a sl_usbd_cdc_ cm_re d(uint8_t subcl ss_nbr, uint8_t *p_buf, uint32_t buf_len, uint16_t timeout, uint32_t
*p_xfer_len) Receive data on the CDC ACM serial emulation subclass.
a a a a sl_usbd_cdc_ cm_re d_ sync(uint8_t subcl ss_nbr, uint8_t *p_buf, uint32_t buf_len, a a a a sl_usbd_cdc_ sync_function_t sync_fnct, void *p_ sync_ rg)
Receive data on the CDC ACM serial emulation subclass asynchronously.
a a sl_usbd_cdc_ cm_write(uint8_t subcl ss_nbr, uint8_t *p_buf, uint32_t buf_len, uint16_t timeout, uint32_t
*p_xfer_len) Send data on the CDC ACM serial emulation subclass.
a a a sl_usbd_cdc_ cm_write_ sync(uint8_t subcl ss_nbr, uint8_t *p_buf, uint32_t buf_len, a a a a sl_usbd_cdc_ sync_function_t sync_fnct, void *p_ sync_ rg)
Send data on the CDC ACM serial emulation subclass asynchronously.
a a a sl_usbd_cdc_ cm_get_line_control_st te(uint8_t subcl ss_nbr, uint8_t *p_line_ctrl)
Return the state of control lines.
a a a sl_usbd_cdc_ cm_get_line_coding(uint8_t subcl ss_nbr, sl_usbd_cdc_ cm_line_coding_t *p_line_coding)
Get the current state of the line coding.
a a a sl_usbd_cdc_ cm_set_line_coding(uint8_t subcl ss_nbr, sl_usbd_cdc_ cm_line_coding_t *p_line_coding)
Set a new line coding.
a a a sl_usbd_cdc_ cm_set_line_st te_event(uint8_t subcl ss_nbr, uint8_t events)
Set a line state event(s).
a a a a sl_usbd_cdc_ cm_cle r_line_st te_event(uint8_t subcl ss_nbr, uint8_t events)
Clear a line state event(s).

រក្សាសិទ្ធិ © 2025 Silicon Laboratories ។ រក្សា​រ​សិទ្ធ​គ្រប់យ៉ាង។

៥/៥

USB Device ACM API
ម៉ាក្រូ
#define SL_USBD_CDC_ACM_NBR_NONE 255u
ម៉ូឌុល។
#define SL_USBD_CDC_ACM_PARITY_NONE 0u
PORT SETTINGS DEFINES.
#define SL_USBD_CDC_ACM_PARITY_ODD 1u #define SL_USBD_CDC_ACM_PARITY_EVEN 2u #define SL_USBD_CDC_ACM_PARITY_MARK 3u #define SL_USBD_CDC_ACM_PARITY_SPACE 4u #define SL_USBD_CDC_ACM_STOP_BIT_1 0u #define SL_USBD_CDC_ACM_STOP_BIT_1_5 1u #define SL_USBD_CDC_ACM_STOP_BIT_2 2u #define SL_USBD_CDC_ACM_CTRL_BREAK 0 01u
LINE EVENTS FLAGS DEFINES.
#define SL_USBD_CDC_ACM_CTRL_RTS 0 02u #define SL_USBD_CDC_ACM_CTRL_DTR 0 04u #define SL_USBD_CDC_ACM_STATE_DCD 0 01u #define SL_USBD_CDC_ACM_STATE_DSR 0 02u #define SL_USBD_CDC_ACM_STATE_BREAK 0 04u #define SL_USBD_CDC_ACM_STATE_RING 0 08u #define SL_USBD_CDC_ACM_STATE_FRAMING 0 10u #define SL_USBD_CDC_ACM_STATE_PARITY 0 20u #define SL_USBD_CDC_ACM_STATE_OVERUN 0 40u #define SL_USBD_CDC_ACM_CALL_MGMT_DEV 0 01u
CALL MANAGEMENT CAPABILITIES.
#define SL_USBD_CDC_ACM_CALL_MGMT_DATA_CCI_DCI 0 02u #define SL_USBD_CDC_ACM_CALL_MGMT_DATA_OVER_DCI 0 02u | 0 01u)
ឯកសារមុខងារ
sl_usbd_cdc_acm_init
sl_status_t sl_usbd_cdc_acm_init (void )
GLOBAL VARIABLES. Parameters
រក្សាសិទ្ធិ © 2025 Silicon Laboratories ។ រក្សា​រ​សិទ្ធ​គ្រប់យ៉ាង។

៥/៥

USB Device ACM API

ប្រភេទ
ទុកជាមោឃៈ

ទិសដៅ N/A

ឈ្មោះអាគុយម៉ង់

MACROS GLOBAL CONSTANTS FUNCTION PROTOTYPES CDC ACM FUNCTIONS

Initialize the CDC ACM serial emulation subclass.
ត្រឡប់មកវិញ

Returns SL_STATUS_OK on success or another SL_STATUS code on failure.

ការពិពណ៌នា

sl_usbd_cdc_acm_create_instance

sl_status_t sl_usbd_cdc_acm_create_instance (uint16_t line_state_interval, uint16_t call_mgmt_capabilities, sl_usbd_cdc_acm_callbacks_t * p_acm_callbacks, uint8_t * p_subclass_nbr)

Add a new instance of the CDC ACM serial emulation subclass.
ប៉ារ៉ាម៉ែត្រ

ប្រភេទ
uint16_t
uint16_t

Direction Argument Name

ការពិពណ៌នា

គ្មាន

line_state_interval Line state notification interval in milliseconds (value must

be a power of 2).

គ្មាន

call_mgmt_capabilities Call Management Capabilities bitmap. OR’ed of the

following flags:

SL_USBD_CDC_ACM_CALL_MGMT_DEV Device handles call management itself. SL_USBD_CDC_ACM_CALL_MGMT_DATA_CCI_DCI Device can send/receive call management information over a Data Class interface.

sl_usbd_cdc_acm_callbacks_t N/A
*

uint8_t *

គ្មាន

p_acm_callbacks p_subclass_nbr

Optional pointers to callback functions to be called on various events.
Param to variable that will receive CDC ACM serial emulation subclass instance number.

ត្រឡប់មកវិញ

Return SL_STATUS_OK on success or another SL_STATUS code on failure.

sl_usbd_cdc_acm_add_to_configuration

sl_status_t sl_usbd_cdc_acm_add_to_configuration (uint8_t subclass_nbr, uint8_t config_nbr)

Add a CDC ACM subclass class instance into USB device configuration.
ប៉ារ៉ាម៉ែត្រ

ប្រភេទ
uint8_t uint8_t

ទិសដៅ N/AN/A

ឈ្មោះអាគុយម៉ង់
subclass_nbr config_nbr

Description CDC ACM serial emulation subclass instance number. Configuration index to add new test class interface to.

ត្រឡប់មកវិញ

រក្សាសិទ្ធិ © 2025 Silicon Laboratories ។ រក្សា​រ​សិទ្ធ​គ្រប់យ៉ាង។

៥/៥

USB Device ACM API
Returns SL_STATUS_OK on success or another SL_STATUS code on failure.

sl_usbd_cdc_acm_is_enabled

sl_status_t sl_usbd_cdc_acm_is_enabled (uint8_t subclass_nbr, bool * p_enabled)

Get the CDC ACM serial emulation subclass enable state.
ប៉ារ៉ាម៉ែត្រ

ប្រភេទ

ទិសដៅ

ឈ្មោះអាគុយម៉ង់

ការពិពណ៌នា

uint8_t N/A

subclass_nbr CDC ACM serial emulation subclass instance number.

bool * N/A

p_enabled

Boolean to a variable that will receive enable status. The variable is set to true, CDC ACM serial emulation is enabled. The va

ឯកសារ/ធនធាន

SILICON LABS USB Device Stack [pdf] សៀវភៅណែនាំ
USB Device Stack, Device Stack, Stack

ឯកសារយោង

ទុកមតិយោបល់

អាសយដ្ឋានអ៊ីមែលរបស់អ្នកនឹងមិនត្រូវបានផ្សព្វផ្សាយទេ។ វាលដែលត្រូវការត្រូវបានសម្គាល់ *