
SILICON Labs ອຸປະກອນ USB stack
![]()
ຂໍ້ມູນຈໍາເພາະ
- ລຸ້ນ USB: 1.5.1
- ວັນທີປ່ອຍ: ກໍລະກົດ 21, 2025
- Simplicity SDK ເວີຊັ່ນ: 2025.6.1
ສິນຄ້າເກີນview
ອຸປະກອນ USB stack ໂດຍ Silicon Labs ສະຫນອງການເຊື່ອມຕໍ່ USB ທີ່ຫຼາກຫຼາຍແລະໃຊ້ງ່າຍສໍາລັບໂຄງການ IoT, ອໍານວຍຄວາມສະດວກໃນການສື່ສານລະຫວ່າງຜູ້ປະມວນຜົນເຄືອຂ່າຍແລະເຈົ້າພາບ.
ຄຸນສົມບັດ
- stack ອຸປະກອນ USB ທີ່ມີປະສິດທິພາບ
- ເຫມາະສໍາລັບໂຄງການ IoT
- ສະຫນັບສະຫນູນການສື່ສານລະຫວ່າງຜູ້ປະມວນຜົນເຄືອຂ່າຍແລະເຈົ້າພາບ
ການຕັ້ງຄ່າອຸປະກອນ USB
ຕັ້ງຄ່າການຕັ້ງຄ່າອຸປະກອນ USB ຕາມຄວາມຕ້ອງການຂອງໂຄງການຂອງທ່ານໂດຍການອ້າງອີງໃສ່ພາກສ່ວນການຕັ້ງຄ່າອຸປະກອນ USB ໃນເອກະສານ.
ຄູ່ມືການຂຽນໂປຣແກຣມອຸປະກອນ USB
ປະຕິບັດຕາມຄູ່ມືການດໍາເນີນໂຄງການອຸປະກອນ USB ເພື່ອເຂົ້າໃຈວິທີການດໍາເນີນໂຄງການແລະປະຕິສໍາພັນກັບອຸປະກອນ USB ສໍາລັບຄໍາຮ້ອງສະຫມັກຕ່າງໆ.
ຫ້ອງຮຽນອຸປະກອນ USB
ພາກວິຊາອຸປະກອນ USB ສະໜອງໃຫ້ຫຼາຍກວ່າview ຂອງຫ້ອງຮຽນທີ່ແຕກຕ່າງກັນເຊັ່ນ CDC ACM, HID, MSC SCSI, ແລະຊັ້ນຜູ້ຂາຍ. ເລືອກຊັ້ນຮຽນທີ່ເຫມາະສົມໂດຍອີງໃສ່ການທໍາງານຂອງອຸປະກອນຂອງທ່ານ.
ການແກ້ໄຂບັນຫາອຸປະກອນ USB
ຖ້າຫາກທ່ານພົບບັນຫາໃດຫນຶ່ງກັບອຸປະກອນ USB, ເບິ່ງພາກສ່ວນການແກ້ໄຂບັນຫາອຸປະກອນ USB ສໍາລັບການແກ້ໄຂແລະຄໍາແນະນໍາແກ້ໄຂ.
ປ່ອຍ Notes USB
ຂໍ້ມູນຈໍາເພາະແລະຄຸນສົມບັດຫຼາຍກວ່າview
ການຕັ້ງຄ່າອຸປະກອນ USB ສິ້ນສຸດລົງview
ຄູ່ມືການຂຽນໂປຼແກຼມອຸປະກອນ USBview
ອຸປະກອນ USB ຈົບຊັ້ນແລ້ວview CDC ACM Class Overview HID Class Overview MSC SCSI Class Overview ຊັ້ນຜູ້ຂາຍview
![]()
ເອກະສານ API API ຂອງອຸປະກອນ USB API USB Device ACM API a sl_usbd_cdc_ cm_line_coding_t sl_usbd_cdc_acm_callbacks_t USB Device CDC API a sl_usbd_cdc_subcl ss_driver_t USB Device Core API
sl_usbd_device_config_t sl_usbd_setup_req_t
a sl_usbd_cl ss_driver_t USB Device HID API
sl_usbd_hid_callbacks_t ອຸປະກອນ USB MSC API
a sl_usbd_msc_subcl ss_driver_t USB ອຸປະກອນ MSC SCSI API
sl_usbd_msc_scsi_callbacks_t
ສະຫງວນລິຂະສິດ © 2025 Silicon Laboratories. ສະຫງວນລິຂະສິດທັງໝົດ.
![]()
1/174
Universal Serial Bus USB
a sl_usbd_msc_scsi_lun_ pi
sl_usbd_msc_scsi_lun_info sl_usbd_msc_scsi_lun
API ຜູ້ຂາຍອຸປະກອນ USB sl_usbd_vendor_callbacks_t
ການແກ້ໄຂບັນຫາອຸປະກອນ USB Documentation API
ເກີນview Microsoft Windows OS USB Host
ເກີນview
ສະຫງວນລິຂະສິດ © 2025 Silicon Laboratories. ສະຫງວນລິຂະສິດທັງໝົດ.
2/174
ເກີນview
ເກີນview
ອຸປະກອນ USB![]()
USB ເປັນຫນຶ່ງໃນການໂຕ້ຕອບການສື່ສານສົບຜົນສໍາເລັດຫຼາຍທີ່ສຸດໃນປະຫວັດສາດຂອງລະບົບຄອມພິວເຕີແລະເປັນມາດຕະຖານ de facto ສໍາລັບການເຊື່ອມຕໍ່ peripherals ຄອມພິວເຕີ. Silicon Labs USB Device stack ແມ່ນໂມດູນອຸປະກອນ USB ທີ່ຖືກອອກແບບໂດຍສະເພາະສໍາລັບລະບົບຝັງ. ສ້າງຂຶ້ນຈາກພື້ນຖານດ້ວຍຄຸນນະພາບ, ການຂະຫຍາຍ, ແລະຄວາມຫນ້າເຊື່ອຖືຂອງ Silicon Labs, ມັນໄດ້ຜ່ານຂະບວນການກວດສອບຢ່າງເຂັ້ມງວດເພື່ອປະຕິບັດຕາມຂໍ້ກໍານົດຂອງ USB 2.0. ເອກະສານນີ້ອະທິບາຍວິທີການເລີ່ມຕົ້ນ, ເລີ່ມຕົ້ນ, ແລະໃຊ້ Silicon Labs USB Device stack. ມັນອະທິບາຍຄ່າການຕັ້ງຄ່າຕ່າງໆແລະການນໍາໃຊ້ຂອງມັນ. ມັນຍັງປະກອບມີຫຼາຍກວ່າview ຂອງເຕັກໂນໂລຊີ, ປະເພດຂອງຄວາມເປັນໄປໄດ້ການຕັ້ງຄ່າ, ຂັ້ນຕອນການປະຕິບັດ, ແລະ examples ຂອງການນໍາໃຊ້ປົກກະຕິສໍາລັບທຸກຫ້ອງຮຽນທີ່ມີຢູ່.
![]()
ເພື່ອຊ່ວຍໃຫ້ທ່ານເຂົ້າໃຈແນວຄວາມຄິດຂອງ USB ໄດ້ຢ່າງວ່ອງໄວ, ເອກະສານມີຄຸນສົມບັດຫຼາຍຢ່າງເຊັ່ນamples ຂອງ USB ທີ່ມີຫນ້າທີ່ພື້ນຖານ. ເຫຼົ່ານີ້ examples ຈະໃຫ້ທ່ານມີກອບທີ່ຊ່ວຍໃຫ້ທ່ານສ້າງອຸປະກອນຢ່າງໄວວາ. ເຫຼົ່ານີ້ examples ປະກອບມີ:
ອະແດັບເຕີ 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. ສະຫງວນລິຂະສິດທັງໝົດ.
3/174
USB
USB![]()
USB ເວີຊັ່ນ 1.5.1 ວັນທີ 21 ກໍລະກົດ 2025 – ບັນທຶກການປ່ອຍ
ຄວາມງ່າຍດາຍ SDK ເວີຊັນ 2025.6.1
ການຈັດວາງອຸປະກອນ USB ທີ່ມີປະສິດທິພາບຂອງ Silicon Labs ສະຫນອງການເຊື່ອມຕໍ່ USB ທີ່ຫຼາກຫຼາຍ, ໃຊ້ງ່າຍ ເໝາະສຳລັບໂຄງການ IoT, ລວມທັງການສື່ສານລະຫວ່າງຜູ້ປະມວນຜົນເຄືອຂ່າຍ ແລະເຈົ້າພາບ. ຄລິກທີ່ນີ້ເພື່ອລຸ້ນກ່ອນໜ້ານີ້.
ສະຫຼຸບການປ່ອຍ
ຄຸນນະສົມບັດທີ່ສໍາຄັນ | ການປ່ຽນແປງ API | ແກ້ໄຂຂໍ້ຜິດພາດ | ການເປີດໃຊ້ຊິບ
ຄຸນນະສົມບັດທີ່ສໍາຄັນ
ການປ່ຽນແປງເວທີພື້ນຖານເທົ່ານັ້ນ.
ການປ່ຽນແປງ API
ບໍ່ມີ.
ແກ້ໄຂຂໍ້ຜິດພາດ
ບໍ່ມີ.
ການເປີດໃຊ້ຊິບ
ບໍ່ມີ.
ຄຸນນະສົມບັດທີ່ສໍາຄັນ
ຄຸນນະສົມບັດໃຫມ່ | ການປັບປຸງ | ຄຸນສົມບັດທີ່ຖືກລົບອອກ | ຄຸນສົມບັດທີ່ປະຕິເສດ
ຄຸນສົມບັດໃໝ່
ບໍ່ມີ.
ການປັບປຸງ
ການປ່ຽນແປງເວທີພື້ນຖານເທົ່ານັ້ນ.
ຄຸນສົມບັດທີ່ຖືກລົບອອກ
ບໍ່ມີ.
ລັກສະນະພິເສດ
ບໍ່ມີ.![]()
ການປ່ຽນແປງ API
APIs ໃຫມ່ | APIs ດັດແກ້ | ຖອນ APIs | APIs ທີ່ບໍ່ຮອງຮັບ
API ໃໝ່
ສະຫງວນລິຂະສິດ © 2025 Silicon Laboratories. ສະຫງວນລິຂະສິດທັງໝົດ.
4/174
USB
ບໍ່ມີ.
APIs ດັດແກ້
ບໍ່ມີ.
ຖອນ APIs
ບໍ່ມີ.
APIs ທີ່ບໍ່ຮອງຮັບ
ບໍ່ມີ.
ແກ້ໄຂຂໍ້ຜິດພາດ
ບໍ່ມີ.
ການເປີດໃຊ້ຊິບ
ບໍ່ມີ.
ຄໍາຮ້ອງສະຫມັກ Example ການປ່ຽນແປງ
ໃໝ່ Examples | ດັດແກ້ Examples | ເອົາອອກ Examples | ຄັດຄ້ານ Examples
ໃໝ່ Examples
ບໍ່ມີ.
ດັດແກ້ Examples
ບໍ່ມີ.
ເອົາອອກ Examples
ບໍ່ມີ.
ຄັດຄ້ານ Examples
ບໍ່ມີ.
ຜົນກະທົບຂອງການປ່ຽນແປງການປ່ອຍ
ລາຍງານຜົນກະທົບ | ຄູ່ມືການຍົກຍ້າຍ
ລາຍງານຜົນກະທົບ
ບໍ່ມີ.
ຄູ່ມືການຍົກຍ້າຍ
ບໍ່ມີ.
ບັນຫາທີ່ຮູ້ຈັກ ແລະຂໍ້ຈຳກັດ
ບໍ່ມີ.
ການນໍາໃຊ້ການປ່ອຍນີ້
ສະຫງວນລິຂະສິດ © 2025 Silicon Laboratories. ສະຫງວນລິຂະສິດທັງໝົດ.
5/174
USB
ແມ່ນຫຍັງຢູ່ໃນການປ່ອຍ? | ຊອບແວທີ່ເຂົ້າກັນໄດ້ | ການຕິດຕັ້ງແລະການນໍາໃຊ້ | ຊ່ວຍເຫຼືອແລະຄໍາຄຶດຄໍາເຫັນ
ແມ່ນຫຍັງຢູ່ໃນການປ່ອຍ?
ແອັບພລິເຄຊັນການວາງອຸປະກອນ USB Examples
ຊອບແວທີ່ເຂົ້າກັນໄດ້
ຊອບແວ
Simplicity SDK Simplicity Studio Simplicity Commander GCC The GNU Compiler Collection) IAR Embedded Workbench ສໍາລັບ 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 Integration, ເບິ່ງ Secure Vault.
ກັບຄືນມາview ການແຈ້ງເຕືອນຄວາມປອດໄພ ແລະຊອບແວທີ່ປຶກສາ ແລະຈັດການການຕັ້ງຄ່າການແຈ້ງເຕືອນຂອງທ່ານ:
ò ໄປທີ່ https://community.silabs.com/. ó ເຂົ້າສູ່ລະບົບດ້ວຍຂໍ້ມູນປະຈໍາບັນຊີຂອງທ່ານ. ô ຄລິກທີ່ສົ່ງເສີມຂອງທ່ານfile ໄອຄອນຢູ່ມຸມຂວາເທິງຂອງໜ້າ.
õ ເລືອກການແຈ້ງເຕືອນຈາກເມນູເລື່ອນລົງ. ö ໃນສ່ວນການແຈ້ງເຕືອນ, ໃຫ້ໄປທີ່ແຖບການແຈ້ງເຕືອນຜະລິດຕະພັນຂອງຂ້ອຍເພື່ອເຮັດຄືນໃໝ່view ການໃຫ້ຄຳປຶກສາດ້ານຄວາມປອດໄພທາງປະຫວັດສາດ ແລະຊອບແວ
ການແຈ້ງເຕືອນ
÷ ເພື່ອຈັດການຄວາມມັກຂອງທ່ານ, ໃຫ້ໃຊ້ແຖບ Manage Notifications ເພື່ອປັບແຕ່ງການອັບເດດ ແລະຄໍາແນະນໍາຂອງຜະລິດຕະພັນຂອງທ່ານ.
ຮັບ.
ສໍາລັບການຕັ້ງຄ່າທີ່ແນະນໍາ, ເບິ່ງທີ່ນີ້.
ເພື່ອຮຽນຮູ້ເພີ່ມເຕີມກ່ຽວກັບຊອບແວໃນການປ່ອຍນີ້, ເຂົ້າໄປໃນເອກະສານອອນໄລນ໌ຂອງພວກເຮົາ.
ຊ່ວຍເຫຼືອແລະຄໍາຄຶດຄໍາເຫັນ
ຕິດຕໍ່ສະຫນັບສະຫນູນ Silicon Labs. ເພື່ອໃຊ້ເຄື່ອງມື Ask AI ຂອງພວກເຮົາເພື່ອໃຫ້ໄດ້ຄຳຕອບ, ໃຫ້ເບິ່ງບ່ອນຄົ້ນຫາຢູ່ເທິງສຸດຂອງໜ້ານີ້.
ຫມາຍເຫດ: ຖາມ AI ແມ່ນການທົດລອງ.
ຂໍຄວາມຊ່ວຍເຫຼືອຈາກຊຸມຊົນນັກພັດທະນາຂອງພວກເຮົາ.
ນະໂຍບາຍການປ່ອຍ SDK ແລະບໍາລຸງຮັກສາ
ເບິ່ງນະໂຍບາຍການປົດປ່ອຍ ແລະການຮັກສາ SDK ຂອງພວກເຮົາ.
ສະຫງວນລິຂະສິດ © 2025 Silicon Laboratories. ສະຫງວນລິຂະສິດທັງໝົດ.
6/174
ເກີນview
ເກີນview
ຂໍ້ມູນຈໍາເພາະ
ປະຕິບັດຕາມ “Universal Serial Bus specification revision 2.0” ປະຕິບັດ “Interface Association Descriptor Engineering Notice (ECN)” ປະເພດການໂອນ.
ຄວບຄຸມຄລາສ USB ຂັດຂວາງການຕິດຕໍ່ສື່ສານ (CDC) ຕົວແບບການຄວບຄຸມແບບຫຍໍ້ (ACM) ອຸປະກອນການໂຕ້ຕອບມະນຸດ (HID) ຊັ້ນເກັບຮັກສາມະຫາຊົນ (MSC) ກອບຊັ້ນສະເພາະຜູ້ຂາຍ
ຄຸນສົມບັດ
ສາມາດປັບຂະ ໜາດ ໄດ້ເພື່ອປະກອບມີຄຸນສົມບັດທີ່ຕ້ອງການເພື່ອຫຼຸດຜ່ອນຄວາມຊົງ ຈຳ ໜ້ອຍ ຮອງຮັບຄວາມໄວເຕັມ (12 Mbit / s) ຮອງຮັບອຸປະກອນປະສົມ (ຫຼາຍຟັງຊັນ) ຮອງຮັບອຸປະກອນການຕັ້ງຄ່າຫຼາຍ ຮອງຮັບຟັງຊັນການປະຫຍັດໄຟ USB (ອຸປະກອນ suspend ແລະສືບຕໍ່) ປະສົມປະສານຂອງ Mass Storage Class ເຂົ້າໄປໃນ Micrium OS. File ໂມດູນລະບົບພັດທະນາດ້ວຍຊັ້ນ abstraction CMSIS-RTOS2 ເພື່ອໃຫ້ມັນສາມາດເຮັດວຽກກັບ OS ທີ່ແຕກຕ່າງກັນ. Silicon Labs GSDK ມາພ້ອມກັບພອດ FreeRTOS ແລະ Micrium OS.
ສະຫງວນລິຂະສິດ © 2025 Silicon Laboratories. ສະຫງວນລິຂະສິດທັງໝົດ.
7/174
ເກີນview
ເກີນview
ການຕັ້ງຄ່າອຸປະກອນ USB
ພາກນີ້ປຶກສາຫາລືກ່ຽວກັບວິທີການຕັ້ງຄ່າອຸປະກອນ USB Silicon Labs. ມີສາມກຸ່ມຂອງຕົວກໍານົດການກໍາຫນົດຄ່າ, ດັ່ງຕໍ່ໄປນີ້:
ການຕັ້ງຄ່າອຸປະກອນ USB Core ຂໍ້ມູນອຸປະກອນ USB ການຕັ້ງຄ່າຮາດແວອຸປະກອນ USB
ການຕັ້ງຄ່າຫຼັກອຸປະກອນ USB
ອຸປະກອນ USB Silicon Labs ສາມາດຕັ້ງຄ່າໄດ້ໃນເວລາລວບລວມຜ່ານຊຸດຂອງ #defines ທີ່ຕັ້ງຢູ່ໃນ sl_usbd_core_config.h file. ອຸປະກອນ USB ໃຊ້ #define ເມື່ອເປັນໄປໄດ້ເນື່ອງຈາກວ່າພວກເຂົາເຈົ້າອະນຸຍາດໃຫ້ລະຫັດແລະຂະຫນາດຂໍ້ມູນທີ່ຈະປັບຂະຫນາດໃນເວລາການສັງລວມໂດຍອີງໃສ່ການທີ່ມີລັກສະນະທີ່ໄດ້ຮັບການເປີດໃຊ້. ອັນນີ້ອະນຸຍາດໃຫ້ປັບຄວາມຈຳແບບອ່ານຢ່າງດຽວ (ROM) ແລະ ໜ່ວຍຄວາມຈຳແບບສຸ່ມ (RAM) ຂອງອຸປະກອນ USB Silicon Labs ສາມາດປັບປ່ຽນໄດ້ຕາມຄວາມຕ້ອງການຂອງແອັບພລິເຄຊັນ.
ແນະນຳ: ເລີ່ມຂັ້ນຕອນການຕັ້ງຄ່າດ້ວຍຄ່າເລີ່ມຕົ້ນ (ເນັ້ນເປັນຕົວໜາ).
ພາກສ່ວນລຸ່ມນີ້ແມ່ນຈັດລຽງຕາມລຳດັບໃນການຕັ້ງຄ່າແມ່ແບບ file, sl_usbd_core_config.h.
Core Configuration Classes Configuration
ການຕັ້ງຄ່າຫຼັກ
ຕາຕະລາງ – USB Device Core Configuration Constant
ລາຍລະອຽດຄົງທີ່
ຄ່າເລີ່ມຕົ້ນ
SL_USBD_TA SK_STACK_ SIZE
ຕັ້ງຄ່າຂະໜາດ stack ໃນ bytes ຂອງວຽກຫຼັກ USBD
4096
SL_USBD_TA SK_PRIORIT Y
ກຳນົດຄ່າບູລິມະສິດຂອງໜ້າວຽກຫຼັກ USBD. ນີ້ແມ່ນບູລິມະສິດ CMSIS-RTOS2.
osPriorityHigh
SL_USBD_A UTO_START _USB_DEVIC E
ຖ້າເປີດໃຊ້, ອຸປະກອນ USB ຈະຖືກເລີ່ມຕົ້ນໂດຍອັດຕະໂນມັດເມື່ອ kernel ໄດ້ຖືກເລີ່ມຕົ້ນແລະວຽກງານຫຼັກ 1 USBD ໄດ້ຖືກກໍານົດເປັນຄັ້ງທໍາອິດ. ຖ້າປິດໃຊ້ງານ, ແອັບພລິເຄຊັນຂອງທ່ານຈະຕ້ອງໂທຫາ sl_usbd_core_start_device() ເມື່ອພ້ອມທີ່ຈະຖືກກວດພົບໂດຍໂຮສ USB.
SL_USBD_C ຈຳນວນທັງໝົດຂອງການຕັ້ງຄ່າທີ່ຈະຖືກເພີ່ມຜ່ານ sl_usbd_add_configuration()
1
ຟັງຊັນ ONFIGURATI.
ON_QUANTI
TY
ສະຫງວນລິຂະສິດ © 2025 Silicon Laboratories. ສະຫງວນລິຂະສິດທັງໝົດ.
8/174
ເກີນview
ຄົງທີ່
SL_USBD _INTERF ACE_QU ANTITY
SL_USBD _ALT_INT ERFACE_ QUANTI
TY
SL_USBD _INTERF ACE_GR
OUP_QU
ANTITY
SL_USBD _DESCRI
PTOR_Q
ຄວາມບໍ່ ໝັ້ນ ຄົງ
SL_USBD _STRING _QUANTI
TY
SL_USBD _OPEN_E NDPOIN TS_QUA NTITY
ລາຍລະອຽດຈໍານວນທັງຫມົດຂອງການໂຕ້ຕອບ USB ທີ່ຈະໄດ້ຮັບການເພີ່ມສໍາລັບການຕັ້ງຄ່າທັງຫມົດຂອງທ່ານ. ອັນນີ້ຫຼາຍຂື້ນກັບຫ້ອງຮຽນທີ່ໃຊ້. ສໍາລັບຂໍ້ມູນເພີ່ມເຕີມກ່ຽວກັບຈໍານວນການໂຕ້ຕອບທີ່ຫ້ອງຮຽນຕ້ອງການ, ເບິ່ງພາກ "ຄວາມຕ້ອງການຊັບພະຍາກອນຈາກຫຼັກ" ຂອງຊັ້ນຮຽນຂອງທ່ານ.
ຈໍານວນທັງຫມົດຂອງການໂຕ້ຕອບສະຫຼັບ USB ທີ່ຈະໄດ້ຮັບການເພີ່ມສໍາລັບການຕັ້ງຄ່າທັງຫມົດຂອງທ່ານ. ອັນນີ້ຫຼາຍຂື້ນກັບຫ້ອງຮຽນທີ່ໃຊ້. ຄ່ານີ້ຕ້ອງເທົ່າກັບ ຫຼືໃຫຍ່ກວ່າ SL_USBD_INTERFACE_QUANTITY ສະເໝີ . ສໍາລັບຂໍ້ມູນເພີ່ມເຕີມກ່ຽວກັບຈໍານວນຕົວໂຕ້ຕອບແບບສໍາຮອງທີ່ຫ້ອງຮຽນຕ້ອງການ, ເບິ່ງພາກ "ຄວາມຕ້ອງການຊັບພະຍາກອນຈາກຫຼັກ" ຂອງຊັ້ນຮຽນຂອງທ່ານ.
ຈໍານວນທັງຫມົດຂອງກຸ່ມການໂຕ້ຕອບ USB ທີ່ຈະໄດ້ຮັບການເພີ່ມສໍາລັບການຕັ້ງຄ່າທັງຫມົດຂອງທ່ານ. ອັນນີ້ຫຼາຍຂື້ນກັບຫ້ອງຮຽນທີ່ໃຊ້. ສໍາລັບຂໍ້ມູນເພີ່ມເຕີມກ່ຽວກັບຈໍານວນກຸ່ມການໂຕ້ຕອບຕ້ອງການຕົວຢ່າງຂອງຫ້ອງຮຽນ, ເບິ່ງພາກ "ຄວາມຕ້ອງການຊັບພະຍາກອນຈາກຫຼັກ" ຂອງຊັ້ນຮຽນຂອງທ່ານ.
ຈໍານວນທັງຫມົດຂອງ Endpoint descriptors ທີ່ຈະໄດ້ຮັບການເພີ່ມສໍາລັບການຕັ້ງຄ່າທັງຫມົດຂອງທ່ານ. ອັນນີ້ຫຼາຍຂື້ນກັບຫ້ອງຮຽນທີ່ໃຊ້. ສໍາລັບຂໍ້ມູນເພີ່ມເຕີມກ່ຽວກັບຈໍານວນຕົວອະທິບາຍຈຸດສິ້ນສຸດທີ່ຫ້ອງຮຽນຕ້ອງການ, ເບິ່ງ “ຈໍານວນຈຸດສິ້ນສຸດ” ໃນສ່ວນ “ຄວາມຕ້ອງການຊັບພະຍາກອນຈາກຫຼັກ” ຂອງຊັ້ນຮຽນຂອງທ່ານ. ໃຫ້ສັງເກດວ່າຈຸດສິ້ນສຸດການຄວບຄຸມບໍ່ຈໍາເປັນຕ້ອງພິຈາລະນາຢູ່ທີ່ນີ້. ຈຳນວນທັງໝົດຂອງສາຍ USB. ການຕັ້ງຄ່າປະລິມານເປັນສູນຈະປິດຄຸນສົມບັດ. ການປິດການໃຊ້ງານອັນນີ້ຈະເຮັດໃຫ້ອຸປະກອນບໍ່ສາມາດເກັບຮັກສາສາຍຄຳອະທິບາຍ USB ທີ່ຜ່ານຈາກແອັບພລິເຄຊັນໄດ້. ນີ້ຫມາຍຄວາມວ່າເຈົ້າພາບຈະບໍ່ສາມາດດຶງຂໍ້ມູນຄໍາອະທິບາຍ (ເຊັ່ນ: ຜູ້ຜະລິດແລະຊື່ຜະລິດຕະພັນ). ຈຳນວນທັງໝົດຂອງຈຸດສິ້ນສຸດທີ່ເປີດຕໍ່ການຕັ້ງຄ່າ. ອຸປະກອນຮຽກຮ້ອງໃຫ້ມີຢ່າງຫນ້ອຍສອງຈຸດສຸດທ້າຍເປີດສໍາລັບການໂອນການຄວບຄຸມ, ແຕ່ວ່າທ່ານຍັງຕ້ອງໄດ້ເພີ່ມຈຸດສຸດທ້າຍຂອງຫ້ອງການນໍາໃຊ້. ສໍາລັບຂໍ້ມູນເພີ່ມເຕີມກ່ຽວກັບຈໍານວນຈຸດສິ້ນສຸດທີ່ເປີດໃນຫ້ອງຮຽນຕ້ອງການ, ເບິ່ງ "ຈໍານວນຈຸດສິ້ນສຸດ" ໃນສ່ວນ "ຄວາມຕ້ອງການຊັບພະຍາກອນຈາກຫຼັກ" ຂອງຫ້ອງຮຽນຂອງທ່ານ.
ຄ່າເລີ່ມຕົ້ນ
10 10
2
20 30 20
ການຕັ້ງຄ່າຫ້ອງຮຽນ
ຫ້ອງຮຽນມີການຕັ້ງຄ່າເວລາລວບລວມສະເພາະ. ອ້າງອີງເຖິງປະເພດອຸປະກອນ USB ສໍາລັບຂໍ້ມູນເພີ່ມເຕີມ.
ການຕັ້ງຄ່າຂໍ້ມູນອຸປະກອນ USB
ການຕັ້ງຄ່າ sl_usbd_device_config.h file regroups compile-time #define-s ເພື່ອກໍານົດຂໍ້ມູນພື້ນຖານກ່ຽວກັບອຸປະກອນຂອງທ່ານ, ເຊັ່ນ: ຜູ້ຂາຍ / ID ຜະລິດຕະພັນ, ສະຕຣິງອຸປະກອນ, ແລະອື່ນໆ. file.
ຕາຕະລາງ – ການຕັ້ງຄ່າຂໍ້ມູນອຸປະກອນ USB ກໍານົດ
ຄົງທີ່
SL_USBD_DEVIC E_VENDOR_ID
SL_USBD_DEVIC E_PRODUCT_ID
ລາຍລະອຽດ ເລກລະບຸຕົວຜູ້ຂາຍຂອງທ່ານທີ່ສົ່ງໃຫ້ໂດຍ USB Implementers Forum. ສໍາລັບຂໍ້ມູນເພີ່ມເຕີມກ່ຽວກັບວິທີທີ່ທ່ານສາມາດຂໍ ID ຜູ້ຂາຍ, ເບິ່ງ http://www.usb.org/developers/vendor/ . ໝາຍເລກປະຈຳຕົວຜະລິດຕະພັນຂອງທ່ານ.
ສະຫງວນລິຂະສິດ © 2025 Silicon Laboratories. ສະຫງວນລິຂະສິດທັງໝົດ.
9/174
ເກີນview
ຄົງທີ່
ລາຍລະອຽດ
SL_USBD_DEVICE_RELEASE ປ່ອຍເບີໂທລະສັບຂອງອຸປະກອນຂອງທ່ານ. _NUMBER
SL_USBD_DEVICE_MANUFA String ອະທິບາຍຜູ້ຜະລິດອຸປະກອນຂອງທ່ານ. ການຕັ້ງຄ່ານີ້ຖືກລະເລີຍເມື່ອ
CTUER_STRING
ການຕັ້ງຄ່າ SL_USBD_STRING_QUANTITY ຖືກຕັ້ງເປັນ 0.
SL_USBD_DEVICE_PRODUC String ອະທິບາຍຜະລິດຕະພັນຂອງທ່ານ. ການຕັ້ງຄ່ານີ້ຖືກລະເລີຍເມື່ອການຕັ້ງຄ່າ
T_STRING
SL_USBD_STRING_QUANTITY ຖືກຕັ້ງເປັນ 0.
SL_USBD_DEVICE_SERIAL_N String ທີ່ບັນຈຸເລກລໍາດັບຂອງອຸປະກອນຂອງທ່ານ. ການຕັ້ງຄ່ານີ້ຖືກລະເລີຍເມື່ອ
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 ທີ່ທ່ານກໍາລັງໃຊ້, ທ່ານອາດຈະມີ pin 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. ສະຫງວນລິຂະສິດທັງໝົດ.
10/174
ເກີນview
ເກີນview
ຄູ່ມືການຂຽນໂປຣແກຣມອຸປະກອນ USB
ພາກນີ້ອະທິບາຍວິທີການໃຊ້ໂມດູນອຸປະກອນ USB.
ການຕັ້ງຄ່າເບື້ອງຕົ້ນຂອງໂມດູນອຸປະກອນ USB
ພາກສ່ວນນີ້ອະທິບາຍຂັ້ນຕອນພື້ນຖານທີ່ຈໍາເປັນເພື່ອເລີ່ມຕົ້ນໂມດູນອຸປະກອນ USB ແລະເພື່ອເພີ່ມ, ກະກຽມ, ແລະເລີ່ມອຸປະກອນ. ການເລີ່ມຕົ້ນໂມດູນອຸປະກອນ USB ການເລີ່ມຕົ້ນອຸປະກອນ USB Core ການເລີ່ມຕົ້ນ aCl ss(es) ການເພີ່ມອຸປະກອນ USB ຂອງທ່ານ ການສ້າງອຸປະກອນ USB ຂອງທ່ານ ການເພີ່ມການຕັ້ງຄ່າ ການເພີ່ມຟັງຊັນ USB ການເລີ່ມຕົ້ນອຸປະກອນ USB ຂອງທ່ານ
ຟັງຊັນ Hook ເຫດການ
ກຳລັງເລີ່ມໂມດູນອຸປະກອນ USB
ກຳລັງເລີ່ມຕົ້ນອຸປະກອນ USB Core
a US a Begin ໂດຍ initi lizing the B device core by 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. ສະຫງວນລິຂະສິດທັງໝົດ.
11/174
ເກີນview
ສະຖານະ sl_status_t; uint8_t config_nbr_fs;
/* ເພີ່ມການຕັ້ງຄ່າຄວາມໄວເຕັມທີ່ໃສ່ອຸປະກອນ. */
ສະຖານະ = sl_usbd_core_add_configuration(0,
/* ບໍ່ມີຄຸນລັກສະນະພິເສດຕໍ່ການຕັ້ງຄ່າ. */
100u,
/* ການບໍລິໂພກພະລັງງານສູງສຸດ: 100mA.
*/
SL_USBD_DEVICE_SPEED_FULL,
/* ການຕັ້ງຄ່າຄວາມໄວເຕັມ.
*/
“Config Add Example ການຕັ້ງຄ່າຄວາມໄວເຕັມ",
&config_nbr_fs);
ຖ້າ (ສະຖານະ ! SL_STATUS_OK) {
/* ເກີດຄວາມຜິດພາດ. ການຈັດການຄວາມຜິດພາດຄວນຈະຖືກເພີ່ມໃສ່ທີ່ນີ້. */
}
ເພີ່ມຟັງຊັນ USB
ຫຼັງຈາກທີ່ທ່ານໄດ້ເພີ່ມສົບຜົນສໍາເລັດຢ່າງຫນ້ອຍຫນຶ່ງການຕັ້ງຄ່າອຸປະກອນຂອງທ່ານ, ທ່ານສາມາດເພີ່ມການໂຕ້ຕອບແລະຈຸດສິ້ນສຸດໃນອຸປະກອນຂອງທ່ານ. ແຕ່ລະຫ້ອງຮຽນ USB ມີຄວາມຕ້ອງການຂອງຕົນເອງໃນແງ່ຂອງການໂຕ້ຕອບແລະຈຸດສິ້ນສຸດປະເພດ, ປະລິມານ, ແລະຕົວກໍານົດການອື່ນໆ. Silicon Labs USB ອຸປະກອນເພີ່ມສ່ວນຕິດຕໍ່ ແລະຈຸດສິ້ນສຸດໃນຫ້ອງຮຽນທີ່ມັນສະເໜີໃຫ້.
ຈາກຄໍາຮ້ອງສະຫມັກຂອງທ່ານ, ທ່ານສາມາດ instantiate ຫ້ອງຮຽນ USB ແລະເພີ່ມມັນເຂົ້າໄປໃນການຕັ້ງຄ່າ. ສໍາລັບຂໍ້ມູນເພີ່ມເຕີມກ່ຽວກັບແນວຄວາມຄິດຂອງອຸປະກອນ USB, ເບິ່ງຫ້ອງຮຽນອຸປະກອນ USB. ໃຫ້ສັງເກດວ່າທ່ານສາມາດ instantiate ແລະເພີ່ມ instance ຫ້ອງຮຽນທີ່ແຕກຕ່າງກັນຫຼາຍກັບການຕັ້ງຄ່າເພື່ອສ້າງອຸປະກອນຫຼາຍຫນ້າທີ່ (ປະສົມ).
ອະດີດample ຂ້າງລຸ່ມນີ້ສະແດງໃຫ້ເຫັນວິທີການສ້າງ class instance ແລະເພີ່ມມັນເຂົ້າໃນການຕັ້ງຄ່າ.
Example – ການເພີ່ມ Class Instance ໃສ່ອຸປະກອນຂອງທ່ານ
ສະຖານະ sl_status_t; uint8_t class_nbr;
/* ສ້າງ instance ຂອງ class ທີ່ທ່ານຕ້ອງການໃຊ້.*/ /* ໃຫ້ສັງເກດວ່າຂຶ້ນກັບ class ຟັງຊັນນີ້ສາມາດມີ arguments ຫຼາຍ. */ ສະຖານະ = sl_usbd_ _create_instance(&class_nbr); ຖ້າ (ສະຖານະ ! SL_STATUS_OK) { /* ເກີດຄວາມຜິດພາດຂຶ້ນ. ການຈັດການຄວາມຜິດພາດຄວນຈະຖືກເພີ່ມໃສ່ທີ່ນີ້. */ }
/* ເພີ່ມຕົວຢ່າງຊັ້ນໃນການຕັ້ງຄ່າຄວາມໄວເຕັມ. */ ສະຖານະ = sl_usbd_ _add_to_configuration(class_nbr, /* ໝາຍເລກຫ້ອງຮຽນສົ່ງຄືນໂດຍ sl_usbd_ _create_instance. */
config_nbr_fs); /* ຕົວເລກການຕັ້ງຄ່າສົ່ງຄືນໂດຍ sl_usbd_core_add_configuration(). */ ຖ້າ (ສະຖານະ ! SL_STATUS_OK) { /* ເກີດຄວາມຜິດພາດຂຶ້ນ. ການຈັດການຄວາມຜິດພາດຄວນຈະຖືກເພີ່ມໃສ່ທີ່ນີ້. */ }
ກຳລັງເລີ່ມອຸປະກອນ USB ຂອງທ່ານ
ໂດຍຄ່າເລີ່ມຕົ້ນ, ອຸປະກອນຈະຖືກເລີ່ມຕົ້ນໂດຍອັດຕະໂນມັດໂດຍການເຮັດວຽກຫຼັກຂອງອຸປະກອນ USB ຫຼັງຈາກທີ່ການເລີ່ມຕົ້ນອຸປະກອນສໍາເລັດ ແລະ kernel ໄດ້ເລີ່ມຕົ້ນ. ເພື່ອຄວບຄຸມເວລາທີ່ອຸປະກອນຖືກເລີ່ມຕົ້ນ ແລະເບິ່ງເຫັນໄດ້ໂດຍແມ່ຂ່າຍ USB, ໃຫ້ໃຊ້ການຕັ້ງຄ່າກໍານົດ SL_USBD_AUTO_START_USB_DEVICE ເພື່ອປິດຄຸນສົມບັດການເລີ່ມຕົ້ນອັດຕະໂນມັດ. ເມື່ອປິດການໃຊ້ງານແລ້ວ, ຫຼັງຈາກທີ່ເຈົ້າສ້າງ/ກະກຽມອຸປະກອນຂອງທ່ານແລ້ວ, ທ່ານສາມາດເລີ່ມມັນ ແລະເຮັດໃຫ້ມັນເບິ່ງເຫັນໄດ້ຕໍ່ກັບເຈົ້າພາບ USB ໂດຍການໂທຫາຟັງຊັນ sl_usbd_core_start_device() .
ອະດີດample ຂ້າງລຸ່ມນີ້ສະແດງໃຫ້ເຫັນວິທີການເລີ່ມຕົ້ນອຸປະກອນຂອງທ່ານໂດຍໃຊ້ຟັງຊັນ sl_usbd_core_start_device().
Example – ການເລີ່ມຕົ້ນອຸປະກອນຂອງທ່ານ
ສະຫງວນລິຂະສິດ © 2025 Silicon Laboratories. ສະຫງວນລິຂະສິດທັງໝົດ.
12/174
ເກີນview
ສະຖານະ sl_status_t;
ສະຖານະ = sl_usbd_core_start_device(); ຖ້າ (ສະຖານະ ! SL_STATUS_OK) { /* ເກີດຄວາມຜິດພາດຂຶ້ນ. ການຈັດການຄວາມຜິດພາດຄວນຈະຖືກເພີ່ມໃສ່ທີ່ນີ້. */ }
ຟັງຊັນ Hook ເຫດການ
ໂມດູນຫຼັກຂອງອຸປະກອນ USB ສະຫນອງສອງຫນ້າທີ່ສຽງທີ່ອ່ອນແອທີ່ທ່ານສາມາດກໍານົດຄືນໃຫມ່ໃນຄໍາຮ້ອງສະຫມັກຂອງທ່ານ. ຈຸດປະສົງຂອງພວກເຂົາແມ່ນເພື່ອແຈ້ງໃຫ້ຮູ້ເມື່ອເຫດການລົດເມແລະການຕັ້ງຄ່າເກີດຂື້ນ.
ຕາຕະລາງ – ຟັງຊັນ USB Event Hook
ເຫດການ
ລາຍລະອຽດ
ລົດເມ
ໂທຫາເມື່ອເຫດການ USB Bus ເກີດຂຶ້ນ
ການຕັ້ງຄ່າເອີ້ນວ່າເມື່ອເຫດການການຕັ້ງຄ່າ USB ເກີດຂຶ້ນ
ລາຍເຊັນຟັງຊັນ
void sl_usbd_on_bus_event(sl_usbd_bus_event_t event); void sl_usbd_on_config_event(sl_usbd_config_event_t event, uint8_t config_nbr);
Example – ຟັງຊັນ Hook ເຫດການ
void sl_usbd_on_bus_event(sl_usbd_bus_event_t event) { switch (event) { case SL_USBD_EVENT_BUS_CONNECT:
// ເອີ້ນວ່າເມື່ອສາຍ USB ຖືກໃສ່ໃນຕົວຄວບຄຸມ host break;
ກໍລະນີ SL_USBD_EVENT_BUS_DISCONNECT: // ເອີ້ນວ່າເມື່ອສາຍ USB ໄດ້ຖືກໂຍກຍ້າຍອອກຈາກການຢຸດການຄວບຄຸມແມ່ຂ່າຍ;
ກໍລະນີ SL_USBD_EVENT_BUS_RESET: // ເອີ້ນວ່າໃນເວລາທີ່ເຈົ້າພາບສົ່ງການຢຸດຄໍາສັ່ງ reset;
case SL_USBD_EVENT_BUS_SUSPEND: // ເອີ້ນວ່າເມື່ອເຈົ້າພາບສົ່ງ suspend ຄໍາສັ່ງຢຸດ;
case SL_USBD_EVENT_BUS_RESUME: // ເອີ້ນວ່າເມື່ອເຈົ້າພາບສົ່ງ wake ເຖິງຄໍາສັ່ງ break;
default: break; } }
void 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: // ເອີ້ນວ່າໃນເວລາທີ່ການຕັ້ງຄ່າແມ່ນບໍ່ໄດ້ກໍານົດແຕກ;
default: break; } }
ສະຫງວນລິຂະສິດ © 2025 Silicon Laboratories. ສະຫງວນລິຂະສິດທັງໝົດ.
13/174
ເກີນview
ສະຫງວນລິຂະສິດ © 2025 Silicon Laboratories. ສະຫງວນລິຂະສິດທັງໝົດ.
14/174
ເກີນview
ເກີນview
ຫ້ອງຮຽນອຸປະກອນ USB
ຫ້ອງຮຽນ USB ທີ່ມີຢູ່ໃນ Silicon Labs USB Device ແບ່ງປັນຄຸນລັກສະນະທົ່ວໄປບາງຢ່າງ. ພາກນີ້ອະທິບາຍລັກສະນະເຫຼົ່ານີ້ແລະປະຕິສໍາພັນຂອງເຂົາເຈົ້າກັບຊັ້ນຫຼັກ.
ສໍາລັບຂໍ້ມູນເພີ່ມເຕີມກ່ຽວກັບຫ້ອງຮຽນສະເພາະ, ເບິ່ງຕໍ່ໄປນີ້:
CDC ACM Class HID Class MSC SCSI Class Vendor Class
ກ່ຽວກັບ Class Instances
ຫ້ອງຮຽນ USB ທີ່ມີຢູ່ໃນອຸປະກອນ USB ປະຕິບັດແນວຄວາມຄິດຂອງ class instances. ຕົວຢ່າງຊັ້ນຮຽນເປັນຕົວແທນຫນຶ່ງຟັງຊັນພາຍໃນອຸປະກອນ. ຟັງຊັນສາມາດໄດ້ຮັບການອະທິບາຍໂດຍການໂຕ້ຕອບຫນຶ່ງຫຼືໂດຍກຸ່ມຂອງການໂຕ້ຕອບແລະເປັນຂອງຫ້ອງຮຽນສະເພາະ.
ການປະຕິບັດແຕ່ລະຊັ້ນຮຽນ USB ມີບາງການຕັ້ງຄ່າແລະຫນ້າທີ່ຄ້າຍຄືກັນ, ອີງຕາມແນວຄວາມຄິດຂອງ class instance. ການຕັ້ງຄ່າແລະຫນ້າທີ່ທົ່ວໄປແມ່ນນໍາສະເຫນີຢູ່ໃນຕາຕະລາງຂ້າງລຸ່ມນີ້. ໃນຫົວຂໍ້ຖັນ 'Constants ຫຼື 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()
ລາຍລະອຽດ
ກຳນົດຄ່າຈຳນວນສູງສຸດຂອງຊັ້ນຮຽນ.
ກຳນົດຄ່າກຳນົດຄ່າສູງສຸດ. ໃນລະຫວ່າງການເລີ່ມຕົ້ນຂອງຄລາສສິກ, ຕົວຢ່າງຊັ້ນຮຽນທີ່ສ້າງຂຶ້ນຈະໄດ້ຮັບການເພີ່ມເຂົ້າໄປໃນການຕັ້ງຄ່າຫນຶ່ງຫຼືຫຼາຍ. ສ້າງຕົວຢ່າງຊັ້ນຮຽນໃຫມ່.
ເພີ່ມ instance class ທີ່ມີຢູ່ແລ້ວໃສ່ການຕັ້ງຄ່າອຸປະກອນທີ່ລະບຸໄວ້.
ໃນແງ່ຂອງການປະຕິບັດລະຫັດ, ຊັ້ນຮຽນຈະປະກາດຕົວແປທົ່ວໂລກໃນທ້ອງຖິ່ນທີ່ປະກອບດ້ວຍໂຄງສ້າງການຄວບຄຸມຊັ້ນຮຽນ. ໂຄງສ້າງການຄວບຄຸມຊັ້ນຮຽນນີ້ແມ່ນກ່ຽວຂ້ອງກັບຕົວຢ່າງຂອງຊັ້ນຮຽນຫນຶ່ງແລະຈະມີຂໍ້ມູນສະເພາະເພື່ອຈັດການ instance ຊັ້ນຮຽນ.
ຕົວເລກຕໍ່ໄປນີ້ສະແດງໃຫ້ເຫັນສະຖານະການຫຼາຍກໍລະນີ. ແຕ່ລະຕົວເລກປະກອບມີລະຫັດ example ທີ່ສອດຄ້ອງກັບກໍລະນີ.
ຮູບ – Multiple Class Instances – FS Device (1 Configuration with 1 Interface) ເປັນຕົວແທນຂອງອຸປະກອນ USB ທົ່ວໄປ. ອຸປະກອນແມ່ນ Full-Speed (FS) ແລະມີການຕັ້ງຄ່າດຽວ. ຫນ້າທີ່ຂອງອຸປະກອນໄດ້ຖືກອະທິບາຍໂດຍການໂຕ້ຕອບຫນຶ່ງປະກອບດ້ວຍຄູ່ຂອງຈຸດສິ້ນສຸດສໍາລັບການສື່ສານຂໍ້ມູນ. ຕົວຢ່າງຫນຶ່ງຊັ້ນຮຽນຖືກສ້າງຂື້ນແລະຈະຊ່ວຍໃຫ້ທ່ານສາມາດຈັດການການໂຕ້ຕອບທັງຫມົດກັບຈຸດສິ້ນສຸດທີ່ກ່ຽວຂ້ອງ.
ຮູບ – Multiple Class Instances – FS Device 1 Configuration with 1 Interface)
ສະຫງວນລິຂະສິດ © 2025 Silicon Laboratories. ສະຫງວນລິຂະສິດທັງໝົດ.
15/174
ເກີນview
ລະຫັດທີ່ສອດຄ້ອງກັບຮູບ – Multiple Class Instances – FS Device (1 Configuration with 1 Interface) ແມ່ນສະແດງຢູ່ໃນ ex.ample ຂ້າງລຸ່ມນີ້.
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 ປິດເຫດການ. */ }
sl_usbd_XXXX_callbacks_t class_callbacks = {
(1)
.enable = app_usbd_XXXX_enable,
.disable = app_usbd_XXXX_disable
};
ສະຖານະ = sl_usbd_XXXX_init();
(2)
ຖ້າ (ສະຖານະ ! SL_STATUS_OK) {
/* $$$$ ຈັດການກັບຄວາມຜິດພາດ. */
}
ສະຖານະ = sl_usbd_XXXX_create_instance(&class_callbacks,
(3)
&class_0);
ຖ້າ (ສະຖານະ ! SL_STATUS_OK) {
/* $$$$ ຈັດການກັບຄວາມຜິດພາດ. */
}
ສະຖານະ = sl_usbd_XXXX_add_to_configuration(class_0, config_0);
(4)
ຖ້າ (ສະຖານະ ! SL_STATUS_OK) {
/* $$$$ ຈັດການກັບຄວາມຜິດພາດ. */
}
(1) ທຸກຫ້ອງສະຫນອງການກໍານົດຂອງຫນ້າທີ່ callback ສໍາລັບອຸປະກອນການເຊື່ອມຕໍ່ / ຕັດກິດຈະກໍາແລະສໍາລັບເຫດການສະເພາະຂອງຫ້ອງ. ວັດຖຸໂຄງສ້າງ callback ຖືກສົ່ງຜ່ານເປັນ argument ເມື່ອສ້າງ class instance ດ້ວຍ sl_usbd_XXXX_create_instance()
ຫນ້າທີ່.
(1) ເລີ່ມຕົ້ນຫ້ອງຮຽນ. ທຸກຕົວແປພາຍໃນ, ໂຄງສ້າງ, ແລະພອດຊັ້ນຮຽນຈະຖືກເລີ່ມຕົ້ນ. ໃຫ້ສັງເກດວ່າຟັງຊັນ Init() ໃນບາງຊັ້ນຮຽນອາດຈະໃຊ້ການໂຕ້ຖຽງອື່ນ.
ສະຫງວນລິຂະສິດ © 2025 Silicon Laboratories. ສະຫງວນລິຂະສິດທັງໝົດ.
16/174
ເກີນ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 ຈະໃຊ້ໝາຍເລກ instance ຊັ້ນ, class_0 . Figure – Multiple Class Instances – FS Device (2 Configurations and Multiple Interfaces) ເປັນຕົວແທນຂອງ ex ສະລັບສັບຊ້ອນຫຼາຍ.ampເລ. ອຸປະກອນຄວາມໄວເຕັມແມ່ນປະກອບດ້ວຍສອງການຕັ້ງຄ່າ. ອຸປະກອນມີສອງຟັງຊັນທີ່ຂຶ້ນກັບຫ້ອງຮຽນດຽວກັນ, ແຕ່ແຕ່ລະຟັງຊັນຖືກອະທິບາຍໂດຍສອງການໂຕ້ຕອບແລະມີຄູ່ຂອງຈຸດສິ້ນສຸດສອງທິດທາງ. ໃນນີ້ exampດັ່ງນັ້ນ, ສອງຕົວຢ່າງຊັ້ນຮຽນຖືກສ້າງຂື້ນ. ແຕ່ລະ class instance ແມ່ນກ່ຽວຂ້ອງກັບກຸ່ມຂອງ interfaces ກົງກັນຂ້າມກັບ Figure – Multiple Class Instances – FS Device (1 Configuration with 1 Interface) ແລະ Figure – Multiple Class Instances – FS Device (2 Configurations and Multiple Interfaces) ທີ່ class instances ເຊື່ອມໂຍງກັບ interface ດຽວ.
ຮູບ – Multiple Class Instances – FS Device 2 Configurations and Multiple Interfaces)
ລະຫັດທີ່ສອດຄ້ອງກັບຮູບ – Multiple Class Instances – FS Device (2 Configurations and Multiple Interfaces) ແມ່ນສະແດງຢູ່ໃນ ex.ample ຂ້າງລຸ່ມນີ້. ການຈັດການຄວາມຜິດພາດຖືກລະເວັ້ນເພື່ອຄວາມຊັດເຈນ.
Example – Multiple Class Instances – FS Device 2 Configurations and Multiple Interfaces)
ສະຫງວນລິຂະສິດ © 2025 Silicon Laboratories. ສະຫງວນລິຂະສິດທັງໝົດ.
17/174
ເກີນ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);
(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 , ໃສ່ການຕັ້ງຄ່າ, cfg_0 . sl_usbd_XXXX_add_to_configuration() ຈະສ້າງສ່ວນຕິດຕໍ່ 0, ສ່ວນຕິດຕໍ່ 1, ການໂຕ້ຕອບສຳຮອງ, ແລະຈຸດສິ້ນສຸດ IN ແລະ OUT ທີ່ກ່ຽວຂ້ອງ. ໝາຍເລກ instance ຊັ້ນ, class_0, ຈະຖືກໃຊ້ສໍາລັບການສື່ສານຂໍ້ມູນໃດໆໃນສ່ວນຕິດຕໍ່ 0 ຫຼືສ່ວນຕິດຕໍ່ 1.
(5) ເພີ່ມ class instance, class_1 , ໃສ່ການຕັ້ງຄ່າ, cfg_0 . sl_usbd_XXXX_add_to_configuration() ຈະສ້າງສ່ວນຕິດຕໍ່ 2, ສ່ວນຕິດຕໍ່ 3 ແລະຈຸດສິ້ນສຸດ IN ແລະ OUT ທີ່ກ່ຽວຂ້ອງຂອງພວກມັນ. ໝາຍເລກ instance ຊັ້ນ, class_1 , ຈະຖືກນໍາໃຊ້ສໍາລັບການສື່ສານຂໍ້ມູນໃດໆໃນສ່ວນຕິດຕໍ່ 2 ຫຼືສ່ວນຕິດຕໍ່ 3.
(6) ເພີ່ມຕົວຢ່າງຂອງຊັ້ນດຽວກັນ, class_0 ແລະ class_1 , ໃສ່ການຕັ້ງຄ່າອື່ນ, cfg_1 .
ແຕ່ລະຫ້ອງຮຽນກໍານົດໂຄງສ້າງຂອງປະເພດ sl_usbd_XXXX_callbacks_t . ຈຸດປະສົງຂອງມັນແມ່ນເພື່ອໃຫ້ທຸກຫ້ອງຮຽນຊຸດຂອງຫນ້າທີ່ callback ທີ່ຈະໄດ້ຮັບການເອີ້ນໃນເວລາທີ່ເຫດການເກີດຂຶ້ນ. ສອງຟັງຊັນໂທຄືນແມ່ນມີຢູ່ໃນແຕ່ລະຫ້ອງຮຽນ. ພວກເຂົາເຈົ້າໄດ້ຖືກນໍາສະເຫນີຢູ່ໃນຕາຕະລາງຂ້າງລຸ່ມນີ້.
ຕາຕະລາງ – ຟັງຊັນໂທກັບຫ້ອງຮຽນທົ່ວໄປ
Fields Description .enable ເອີ້ນໄດ້ເມື່ອ instance ຫ້ອງຮຽນ USB ຖືກເປີດໃຊ້ຢ່າງສໍາເລັດຜົນ. .disable ເອີ້ນວ່າໃນເວລາທີ່ instance ຫ້ອງຮຽນ USB ປິດການໃຊ້ງານ.
Function Signature void app_usbd_XXXX_enable(uint8_t class_nbr); app_usbd_XXXX_disable(uint8_t class_nbr);
ສະຫງວນລິຂະສິດ © 2025 Silicon Laboratories. ສະຫງວນລິຂະສິດທັງໝົດ.
18/174
ເກີນview
ເກີນview
ອຸປະກອນ USB CDC ACM Class
ອຸປະກອນ USB CDC Base Class Overview ອຸປະກອນ USB CDC ACM Class ຕ້ອງການຊັບພະຍາກອນຈາກອຸປະກອນ Core USB CDC ACM Subclass Overview ອຸປະກອນ USB CDC ACM Class Configuration USB ອຸປະກອນ CDC ACM Class ຄູ່ມືການຂຽນໂປຼແກຼມ
ພາກສ່ວນນີ້ອະທິບາຍຫ້ອງຮຽນອຸປະກອນການສື່ສານ (CDC) ແລະຊັ້ນຍ່ອຍ CDC ທີ່ກ່ຽວຂ້ອງທີ່ສະຫນັບສະຫນູນໂດຍອຸປະກອນ USB ຂອງ Silicon Labs. Silicon Labs USB-Device ໃນປັດຈຸບັນສະຫນັບສະຫນູນ subclass ແບບ Abstract Control Model (ACM), ເຊິ່ງຖືກນໍາໃຊ້ທົ່ວໄປສໍາລັບການ emulation serial.
CDC ປະກອບມີອຸປະກອນໂທລະຄົມ ແລະເຄືອຂ່າຍຕ່າງໆ. ອຸປະກອນໂທລະຄົມກວມເອົາໂມເດັມອະນາລັອກ, ໂທລະສັບອະນາລັອກແລະດິຈິຕອນ, ອະແດບເຕີ ISDN terminal, ແລະອື່ນໆ.ampດັ່ງນັ້ນ, ອຸປະກອນເຄືອຂ່າຍມີ ADSL ແລະໂມເດັມສາຍ, ອະແດບເຕີອີເທີເນັດ, ແລະ hubs. CDC ກໍານົດກອບການຫຸ້ມຫໍ່ມາດຕະຖານການບໍລິການການສື່ສານທີ່ມີຢູ່, ເຊັ່ນ V.250 (ສໍາລັບໂມເດັມຜ່ານເຄືອຂ່າຍໂທລະສັບ) ແລະ Ethernet (ສໍາລັບອຸປະກອນເຄືອຂ່າຍທ້ອງຖິ່ນ), ໂດຍໃຊ້ການເຊື່ອມຕໍ່ USB. ອຸປະກອນສື່ສານເປັນຜູ້ຮັບຜິດຊອບການຄຸ້ມຄອງອຸປະກອນ, ການຄຸ້ມຄອງການໂທໃນເວລາທີ່ຈໍາເປັນ, ແລະການສົ່ງຂໍ້ມູນ.
CDC ກໍານົດເຈັດກຸ່ມໃຫຍ່ຂອງອຸປະກອນ. ແຕ່ລະກຸ່ມເປັນຂອງຕົວແບບຂອງການສື່ສານ, ເຊິ່ງອາດຈະປະກອບມີ subclass ຫຼາຍ. ແຕ່ລະກຸ່ມອຸປະກອນມີເອກະສານສະເພາະຂອງຕົນເອງນອກຈາກຫ້ອງຮຽນພື້ນຖານ CDC. ເຈັດກຸ່ມຄື:
Public Switched Telephone Network (PSTN), ອຸປະກອນລວມທັງໂມເດັມແຖບສຽງ, ໂທລະສັບ, ແລະອຸປະກອນຈໍາລອງ serial. Integrated Services Digital Network (ISDN) ອຸປະກອນ, ລວມທັງອະແດບເຕີປາຍແລະໂທລະສັບ. ອຸປະກອນ Ethernet Control Model (ECM), ລວມທັງອຸປະກອນທີ່ຮອງຮັບຄອບຄົວ IEEE 802 (ເຊັ່ນ: ໂມເດັມສາຍ ແລະ ADSL, ອະແດັບເຕີ WiFi). ອຸປະກອນການໂອນເງິນແບບບໍ່ຊິ້ງ (ATM), ລວມທັງໂມເດັມ ADSL ແລະອຸປະກອນອື່ນໆທີ່ເຊື່ອມຕໍ່ກັບເຄືອຂ່າຍ ATM (ບ່ອນເຮັດວຽກ, ເຣົາເຕີ, ສະວິດ LAN). ອຸປະກອນການສື່ສານມືຖືໄຮ້ສາຍ (WMC), ລວມທັງອຸປະກອນມືຖືການສື່ສານຫຼາຍຫນ້າທີ່ນໍາໃຊ້ເພື່ອຈັດການການສື່ສານສຽງແລະຂໍ້ມູນ. Ethernet Emulation Model (EEM) ອຸປະກອນທີ່ແລກປ່ຽນຂໍ້ມູນ Ethernet-framed. ອຸປະກອນຄວບຄຸມເຄືອຂ່າຍ (NCM) ລວມທັງອຸປະກອນເຄືອຂ່າຍຄວາມໄວສູງ (ໂມເດັມເຂົ້າເຖິງແພັກເກັດຄວາມໄວສູງ, ອຸປະກອນສະຖານີສາຍ)
CDC ແລະການຈັດຕັ້ງປະຕິບັດ subclass ທີ່ກ່ຽວຂ້ອງປະຕິບັດຕາມຂໍ້ກໍານົດດັ່ງຕໍ່ໄປນີ້:
Universal Serial Bus, Class Definitions for Communications Devices, Revision 1.2, November 3 2010. Universal Serial Bus, Communications, Subclass for PSTN Devices, Revision 1.2, February 9 2007.
ອຸປະກອນ USB CDC Base Class Overview
ອຸປະກອນ CDC ແມ່ນປະກອບດ້ວຍສ່ວນຕິດຕໍ່ຕໍ່ໄປນີ້ເພື່ອປະຕິບັດຄວາມສາມາດໃນການສື່ສານ:
Communications Class Interface (CCI) ຮັບຜິດຊອບໃນການຈັດການອຸປະກອນ ແລະທາງເລືອກໃນການຈັດການການໂທ. ໄດ້
ການຄຸ້ມຄອງອຸປະກອນເຮັດໃຫ້ການຕັ້ງຄ່າທົ່ວໄປແລະການຄວບຄຸມຂອງອຸປະກອນແລະການແຈ້ງການຂອງກິດຈະກໍາກັບເຈົ້າພາບ. ການຄຸ້ມຄອງການໂທເຮັດໃຫ້ການສ້າງຕັ້ງແລະການຢຸດການໂທ. ການຈັດການການໂທອາດຈະຖືກຄູນຜ່ານ DCI. CCI ແມ່ນບັງຄັບສໍາລັບອຸປະກອນ CDC ທັງຫມົດ. ມັນກໍານົດຟັງຊັນ CDC ໂດຍການລະບຸຮູບແບບການສື່ສານທີ່ສະຫນັບສະຫນູນໂດຍອຸປະກອນ CDC. ອິນເຕີເຟດຕໍ່ໄປນີ້ CCI ສາມາດເປັນອິນເຕີເຟດປະເພດ USB ໃດກໍໄດ້, ເຊັ່ນ: ສຽງ ຫຼືສ່ວນຕິດຕໍ່ສະເພາະຜູ້ຂາຍ. ການໂຕ້ຕອບສະເພາະຜູ້ຂາຍແມ່ນເປັນຕົວແທນໂດຍສະເພາະໂດຍ DCI.
Data Class Interface (DCI) ແມ່ນຮັບຜິດຊອບສໍາລັບການສົ່ງຂໍ້ມູນ. ຂໍ້ມູນທີ່ສົ່ງແລະ/ຫຼືໄດ້ຮັບບໍ່ໄດ້ປະຕິບັດຕາມສະເພາະໃດຫນຶ່ງ
ຮູບແບບ. ຂໍ້ມູນອາດຈະເປັນຂໍ້ມູນດິບຈາກສາຍການສື່ສານ, ຂໍ້ມູນຕາມຮູບແບບທີ່ເປັນເຈົ້າຂອງ, ແລະອື່ນໆ. DCI ທັງໝົດທີ່ປະຕິບັດຕາມ CCI ສາມາດເຫັນໄດ້ວ່າເປັນຕົວປະສານຍ່ອຍ.
ອຸປະກອນ CDC ຕ້ອງມີຢ່າງຫນ້ອຍຫນຶ່ງ CCI ແລະສູນ DCIs ຫຼືຫຼາຍກວ່ານັ້ນ. CCI ຫນຶ່ງແລະ DCI subordinate ຮ່ວມກັນສະຫນອງຄຸນນະສົມບັດໃຫ້ກັບເຈົ້າພາບ. ຄວາມສາມາດນີ້ຍັງເອີ້ນວ່າຫນ້າທີ່. ໃນອຸປະກອນປະສົມ CDC, ເຈົ້າສາມາດມີຫຼາຍອັນ
ສະຫງວນລິຂະສິດ © 2025 Silicon Laboratories. ສະຫງວນລິຂະສິດທັງໝົດ.
19/174
ເກີນview
ຫນ້າທີ່. ດັ່ງນັ້ນ, ອຸປະກອນຈະປະກອບດ້ວຍຫຼາຍຊຸດຂອງ CCI ແລະ DCI (s) ດັ່ງທີ່ສະແດງຢູ່ໃນຮູບ – CDC Composite Device.
ຮູບ – ອຸປະກອນປະກອບ CDC
ອຸປະກອນ CDC ມີແນວໂນ້ມທີ່ຈະໃຊ້ການລວມກັນຂອງຈຸດສິ້ນສຸດຕໍ່ໄປນີ້:
ຄູ່ຂອງຈຸດສິ້ນສຸດການຄວບຄຸມ IN ແລະ OUT ເອີ້ນວ່າຈຸດສິ້ນສຸດເລີ່ມຕົ້ນ. ທາງເລືອກເປັນຊຸດ ຫຼືຂັດຂວາງໃນຈຸດສິ້ນສຸດ. ຄູ່ຂອງຈຸດສິ້ນສຸດຫຼາຍ ຫຼື isochronous IN ແລະ OUT. ໃຫ້ສັງເກດວ່າ Silicon Labs ອຸປະກອນ USB stack ບໍ່ຮອງຮັບຈຸດສິ້ນສຸດ isochronous.
ຕາຕະລາງຂ້າງລຸ່ມນີ້ສະແດງໃຫ້ເຫັນການນໍາໃຊ້ຈຸດສິ້ນສຸດທີ່ແຕກຕ່າງກັນແລະໂດຍການໂຕ້ຕອບຂອງ CDC ພວກມັນຖືກນໍາໃຊ້.
ຕາຕະລາງ – ການນຳໃຊ້ຈຸດສິ້ນສຸດ CDC
ຈຸດສິ້ນສຸດ
ຄວບຄຸມ IN
ຄວບຄຸມ OUT
ຂັດຈັງຫວະ ຫຼືເປັນຫຼາຍ IN Bulk ຫຼື isochronous IN Bulk ຫຼື isochronous
ອອກ
ທິດທາງ
Deviceto-host
ເຈົ້າພາບ-ອຸປະກອນ
Deviceto-host
Deviceto-host
ເຈົ້າພາບ-ອຸປະກອນ
ການໂຕ້ຕອບການນໍາໃຊ້
CCI
ຄໍາຮ້ອງສະຫມັກມາດຕະຖານສໍາລັບການນັບ, ການຮ້ອງຂໍສະເພາະຫ້ອງ, ອຸປະກອນ
ການຄຸ້ມຄອງ, ແລະທາງເລືອກໃນການໂທຫາການຄຸ້ມຄອງ.
CCI
ຄໍາຮ້ອງສະຫມັກມາດຕະຖານສໍາລັບການນັບ, ການຮ້ອງຂໍສະເພາະຫ້ອງ, ອຸປະກອນ
ການຄຸ້ມຄອງ, ແລະທາງເລືອກໃນການໂທຫາການຄຸ້ມຄອງ.
CCI
ການແຈ້ງການເຫດການ, ເຊັ່ນ: ການກວດສອບວົງ, ສະຖານະພາບສາຍ serial, ສະຖານະການເຄືອຂ່າຍ.
DCI
ການສື່ສານຂໍ້ມູນດິບ ຫຼືຈັດຮູບແບບ.
DCI
ການສື່ສານຂໍ້ມູນດິບ ຫຼືຈັດຮູບແບບ.
ອຸປະກອນສື່ສານສ່ວນໃຫຍ່ໃຊ້ຈຸດສິ້ນສຸດທີ່ຂັດຂວາງເພື່ອແຈ້ງໃຫ້ເຈົ້າພາບຂອງເຫດການ. ຈຸດສິ້ນສຸດ isochronous ບໍ່ຄວນຖືກນໍາໃຊ້ສໍາລັບການສົ່ງຂໍ້ມູນໃນເວລາທີ່ protocol ທີ່ເປັນເຈົ້າຂອງອີງໃສ່ການສົ່ງຂໍ້ມູນຄືນໃຫມ່ໃນກໍລະນີທີ່ມີຄວາມຜິດພາດຂອງໂປໂຕຄອນ USB. ການສື່ສານແບບ Isochronous ສາມາດສູນເສຍຂໍ້ມູນໄດ້ເນື່ອງຈາກມັນບໍ່ມີກົນໄກການລອງໃຫມ່.
ເຈັດແບບຈໍາລອງທີ່ສໍາຄັນຂອງການສື່ສານປະກອບມີຫຼາຍຊັ້ນຍ່ອຍ. ໝວດຍ່ອຍອະທິບາຍວິທີການທີ່ອຸປະກອນຄວນໃຊ້ CCI ເພື່ອຈັດການອຸປະກອນ ແລະການຈັດການການໂທ. ຕາຕະລາງຂ້າງລຸ່ມນີ້ສະແດງໃຫ້ເຫັນທຸກ subclass ທີ່ເປັນໄປໄດ້ແລະຮູບແບບການສື່ສານທີ່ພວກເຂົາຂຶ້ນກັບ.
ຕາຕະລາງ – ຫ້ອງຮຽນຍ່ອຍ CDC
ໝວດຍ່ອຍ
Direct Line Control Model Abstract Control Model
ຮູບແບບການສື່ສານ
PSTN
PSTN
Example ຂອງອຸປະກອນທີ່ໃຊ້ subclass ນີ້
ອຸປະກອນໂມເດັມທີ່ຄວບຄຸມໂດຍກົງໂດຍເຈົ້າພາບ USB
ອຸປະກອນ emulation serial, ອຸປະກອນ modem ຄວບຄຸມໂດຍຜ່ານຊຸດຄໍາສັ່ງ serial
ສະຫງວນລິຂະສິດ © 2025 Silicon Laboratories. ສະຫງວນລິຂະສິດທັງໝົດ.
20/174
ເກີນview
ໝວດຍ່ອຍ
ຮູບແບບການສື່ສານ
Example ຂອງອຸປະກອນທີ່ໃຊ້ subclass ນີ້
ຮູບແບບການຄວບຄຸມໂທລະສັບ
PSTN
ແບບຈໍາລອງ ISDN ການຄວບຄຸມຫຼາຍຊ່ອງ
ຕົວແບບຄວບຄຸມ CAPI ISDN
ຮູບແບບການຄວບຄຸມ ECM ຂອງເຄືອຂ່າຍອີເທີເນັດ
ເຄືອຂ່າຍຕູ້ເອທີເອັມ
ຕູ້ເອທີເອັມ
ຕົວແບບຄວບຄຸມ
ຮູບແບບການຄວບຄຸມອຸປະກອນໄຮ້ສາຍ
WMC
ການຈັດການອຸປະກອນ WMC
ຕົວແບບສາຍໂດຍກົງຂອງມືຖື
WMC
OBEX
WMC
Ethernet Emulation EM Model
ຮູບແບບການຄວບຄຸມເຄືອຂ່າຍ
NCM
ອຸປະກອນໂທລະສັບສຽງ
ອະແດັບເຕີປາຍອັດຕາພື້ນຖານ, ຕົວອະແດັບເຕີປາຍອັດຕາຫຼັກ, ໂທລະສັບ
ຕົວອະແດັບເຕີປາຍອັດຕາພື້ນຖານ, ອະແດບເຕີສາຍສັນຍານອັດຕາຕົ້ນ, ໂມເດັມສາຍ DOC-SIS ໂທລະສັບ, ໂມເດັມ ADSL ທີ່ຮອງຮັບການຈຳລອງ PPPoE, ອະແດັບເຕີ Wi-Fi (IEEE 802.11-family), ອະແດັບເຕີ IEEE 802.3 ໂມເດັມ ADSL
ອຸປະກອນຢູ່ປາຍຍອດມືຖືທີ່ເຊື່ອມຕໍ່ກັບອຸປະກອນໄຮ້ສາຍ
ອຸປະກອນປາຍມືຖືການເຊື່ອມຕໍ່ກັບອຸປະກອນໄຮ້ສາຍ ອຸປະກອນປາຍມືຖືການເຊື່ອມຕໍ່ກັບອຸປະກອນໄຮ້ສາຍ
ອຸປະກອນຢູ່ປາຍຍອດມືຖືທີ່ເຊື່ອມຕໍ່ກັບອຸປະກອນໄຮ້ສາຍ ອຸປະກອນທີ່ໃຊ້ກອບອີເທີເນັດເປັນຊັ້ນຕໍ່ໄປຂອງການຂົນສົ່ງ. ບໍ່ມີຈຸດມຸ່ງໝາຍສຳລັບອຸປະກອນເຊື່ອມຕໍ່ອິນເຕີເນັດ IEEE 802.3 ທີ່ມີແບນວິດຄວາມໄວສູງໃນເຄືອຂ່າຍ.
ອຸປະກອນ USB CDC ACM Class ຕ້ອງການຊັບພະຍາກອນຈາກ Core
ແຕ່ລະຄັ້ງທີ່ທ່ານເພີ່ມ CDC ACM class instance ເຂົ້າໃນການຕັ້ງຄ່າ USB ຜ່ານການໂທໄປຫາຟັງຊັນ sl_usbd_cdc_acm_add_to_configuration(), ຊັບພະຍາກອນຕໍ່ໄປນີ້ຈະຖືກຈັດສັນຈາກຫຼັກ.
ຊັບພະຍາກອນ
Interfaces ການໂຕ້ຕອບທາງເລືອກ Endpoints ກຸ່ມ Interface
ປະລິມານ
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 Overview
ຫ້ອງຮຽນພື້ນຖານ CDC ແມ່ນປະກອບດ້ວຍການໂຕ້ຕອບຊັ້ນການສື່ສານ (CCI) ແລະການໂຕ້ຕອບຊັ້ນຂໍ້ມູນ (DCI), ເຊິ່ງໄດ້ຖືກປຶກສາຫາລືຢ່າງລະອຽດໃນອຸປະກອນ USB CDC Base Class Overview . ພາກນີ້ເວົ້າເຖິງ CCI ຂອງປະເພດ ACM. ມັນປະກອບດ້ວຍຈຸດສິ້ນສຸດເລີ່ມຕົ້ນສໍາລັບອົງປະກອບການຈັດການແລະຈຸດສິ້ນສຸດຂັດຂວາງສໍາລັບອົງປະກອບການແຈ້ງເຕືອນ. ຄູ່ຂອງຈຸດສິ້ນສຸດຫຼາຍແມ່ນໃຊ້ເພື່ອປະຕິບັດຂໍ້ມູນທີ່ບໍ່ໄດ້ລະບຸໄວ້ຜ່ານ DCI.
ຫ້ອງຮຽນຍ່ອຍ ACM ຖືກນໍາໃຊ້ໂດຍອຸປະກອນການສື່ສານສອງປະເພດ:
ອຸປະກອນທີ່ຮອງຮັບຄຳສັ່ງ AT (ຕົວຢ່າງ, ໂມເດັມແຖບສຽງ). ອຸປະກອນ emulation serial ເຊິ່ງເອີ້ນກັນວ່າ Virtual COM port ອຸປະກອນ.
ມີການຮ້ອງຂໍສະເພາະ subclass ຫຼາຍໆອັນສໍາລັບ subclass ACM. ພວກເຂົາເຈົ້າອະນຸຍາດໃຫ້ທ່ານສາມາດຄວບຄຸມແລະກໍາຫນົດຄ່າອຸປະກອນ. ບັນຊີລາຍຊື່ຄົບຖ້ວນແລະລາຍລະອຽດຂອງຄໍາຮ້ອງຂໍ ACM ທັງຫມົດສາມາດພົບໄດ້ຢູ່ໃນສະເພາະ
ສະຫງວນລິຂະສິດ © 2025 Silicon Laboratories. ສະຫງວນລິຂະສິດທັງໝົດ.
21/174
ເກີນview ໝວດຍ່ອຍສຳລັບອຸປະກອນ PSTN, ສະບັບປັບປຸງ 1.2, ວັນທີ 9 ກຸມພາ, 2007=, ພາກທີ 6.2.2.
ຈາກບັນຊີລາຍຊື່ນີ້, Silicon Labs9 ACM subclass ສະຫນັບສະຫນູນດັ່ງຕໍ່ໄປນີ້:
ຕາຕະລາງ - ການຮ້ອງຂໍ ACM ສະຫນັບສະຫນູນໂດຍ Silicon Labs
ຄໍາອະທິບາຍຄໍາຮ້ອງຂໍປະເພດຍ່ອຍ
SetCommFeature GetCommFeature ClearCommFeature
ເຈົ້າພາບສົ່ງຄໍາຮ້ອງຂໍນີ້ເພື່ອຄວບຄຸມການຕັ້ງຄ່າສໍາລັບຄຸນສົມບັດການສື່ສານທີ່ໃຫ້. ບໍ່ໄດ້ໃຊ້ສໍາລັບການຈໍາລອງ serial.
ເຈົ້າພາບສົ່ງຄໍາຮ້ອງຂໍນີ້ເພື່ອຮັບເອົາການຕັ້ງຄ່າປະຈຸບັນສໍາລັບຄຸນສົມບັດການສື່ສານທີ່ໃຫ້. ບໍ່ໄດ້ໃຊ້ສໍາລັບການຈໍາລອງ serial.
ເຈົ້າພາບສົ່ງຄໍາຮ້ອງຂໍນີ້ເພື່ອລຶບລ້າງການຕັ້ງຄ່າສໍາລັບຄຸນສົມບັດການສື່ສານທີ່ໃຫ້. ບໍ່ໄດ້ໃຊ້ສໍາລັບການຈໍາລອງ serial.
SetLineCoding
ເຈົ້າພາບສົ່ງຄໍາຮ້ອງຂໍນີ້ເພື່ອກໍານົດການຕັ້ງຄ່າອຸປະກອນ ACM: ອັດຕາ baud, ຈໍານວນຂອງບິດຢຸດ, ປະເພດ parity ແລະຈໍານວນຂອງບິດຂໍ້ມູນ. ສໍາລັບການ emulation serial, ການຮ້ອງຂໍນີ້ຈະຖືກສົ່ງອັດຕະໂນມັດໂດຍ terminal serial ແຕ່ລະຄັ້ງທີ່ທ່ານ configure serial settings ສໍາລັບພອດ COM virtual ເປີດ.
GetLineCoding
ເຈົ້າພາບສົ່ງຄໍາຮ້ອງຂໍນີ້ເພື່ອຮັບເອົາການຕັ້ງຄ່າ ACM ໃນປັດຈຸບັນ (ອັດຕາ baud, ບິດຢຸດ, parity, ບິດຂໍ້ມູນ). ສໍາລັບການຈໍາລອງ serial, terminals serial ສົ່ງຄໍາຮ້ອງຂໍນີ້ອັດຕະໂນມັດໃນລະຫວ່າງການເປີດພອດ COM virtual.
SetControlLineState ເຈົ້າພາບສົ່ງຄໍາຮ້ອງຂໍນີ້ເພື່ອຄວບຄຸມຜູ້ໃຫ້ບໍລິການສໍາລັບໂມເດັມເຄິ່ງຄູ່ແລະຊີ້ບອກວ່າອຸປະກອນ Terminal Data (DTE) ພ້ອມແລ້ວຫຼືຍັງ. ໃນກໍລະນີ serial emulation, DTE ແມ່ນ terminal serial. ສໍາລັບການ emulation serial, ບາງ terminals serial ອະນຸຍາດໃຫ້ທ່ານສົ່ງຄໍາຮ້ອງຂໍນີ້ກັບຊຸດການຄວບຄຸມ.
SetBreak
ເຈົ້າພາບສົ່ງຄໍາຮ້ອງຂໍນີ້ເພື່ອສ້າງການພັກຜ່ອນແບບ RS-232. ສໍາລັບການຈໍາລອງ serial, ບາງ serial terminals ອະນຸຍາດໃຫ້ທ່ານສົ່ງຄໍາຮ້ອງຂໍນີ້.
ຊັ້ນຍ່ອຍຂອງ Silicon Labs9 ACM ໃຊ້ຈຸດສິ້ນສຸດ IN ທີ່ຂັດຈັງຫວະເພື່ອແຈ້ງໃຫ້ເຈົ້າພາບກ່ຽວກັບສະຖານະເສັ້ນ serial ໃນປັດຈຸບັນ. ລໍາດັບ
ສະຖານະເສັ້ນແມ່ນແຜນທີ່ບິດທີ່ແຈ້ງໃຫ້ເຈົ້າພາບກ່ຽວກັບ:
ຂໍ້ມູນຖືກຍົກເລີກເນື່ອງຈາກຄວາມຜິດພາດ Parity ເກີນຂອບເຂດ ຄວາມຜິດພາດຂອງກອບ ສະຖານະການກວດສອບສັນຍານວົງແຫວນ ສະຖານະຂອງກົນໄກການກວດຫາການຢຸດພັກ ລັດຂອງຜູ້ໃຫ້ບໍລິການສົ່ງສັນຍານ ສະຖານະຂອງການກວດສອບຕົວຮັບສັນຍານ
ການປະຕິບັດຊັ້ນຍ່ອຍຂອງ Silicon Labs9 ACM ປະຕິບັດຕາມຂໍ້ກໍານົດດັ່ງຕໍ່ໄປນີ້:
Universal Serial Bus, Communications, Subclass ສໍາລັບອຸປະກອນ PSTN, ສະບັບປັບປຸງ 1.2, ວັນທີ 9 ກຸມພາ 2007.
ອຸປະກອນ USB CDC ACM Class Configuration
ພາກນີ້ປຶກສາຫາລືກ່ຽວກັບວິທີການກໍານົດ CDC ACM Class (ປະເພດອຸປະກອນການສື່ສານ, ແບບຈໍາລອງການຄວບຄຸມແບບບໍ່ມີຕົວຕົນ). ມີສອງກຸ່ມຂອງຕົວກໍານົດການກໍານົດ:
ອຸປະກອນ USB CDC ACM Class Application ການຕັ້ງຄ່າສະເພາະອຸປະກອນ USB CDC ACM Class Instance Configurations
ອຸປະກອນ USB CDC ACM Class Application ການຕັ້ງຄ່າສະເພາະ
CDC Base Class ACM Subclass
ຫ້ອງຮຽນພື້ນຖານ CDC
ທໍາອິດ, ເພື່ອໃຊ້ໂມດູນຊັ້ນຮຽນ CDC ຂອງອຸປະກອນ Silicon Labs USB, ທ່ານຈະຕ້ອງປັບການຕັ້ງຄ່າເວລາລວບລວມ CDC #define-s ຕາມຄວາມຕ້ອງການຂອງແອັບພລິເຄຊັນຂອງທ່ານ. ພວກມັນຖືກຈັດກຸ່ມຄືນໃໝ່ພາຍໃນສ່ວນຫົວ sl_usbd_core_config.h file ພາຍໃຕ້ພາກ CDC. ຈຸດປະສົງຂອງພວກເຂົາແມ່ນເພື່ອແຈ້ງໃຫ້ໂມດູນອຸປະກອນ USB ກ່ຽວກັບຈໍານວນວັດຖຸ USB CDC ທີ່ຈະຈັດສັນ.
ສະຫງວນລິຂະສິດ © 2025 Silicon Laboratories. ສະຫງວນລິຂະສິດທັງໝົດ.
22/174
ເກີນ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 configur tions vi c ll to the 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
ການສ້າງຕົວແບບຊັ້ນ
ເພື່ອສ້າງ CDC ACM serial class instance, ໂທຫາ function T a sl_usbd_cdc_acm_create_instance() . ຟັງຊັນຂອງລາວ t kes ສາມ argument ການຕັ້ງຄ່າ, ດັ່ງທີ່ໄດ້ອະທິບາຍຢູ່ທີ່ນີ້.
line_state_interval
ນີ້ແມ່ນໄລຍະຫ່າງ (ເປັນ milliseconds) ທີ່ CDC ACM serial class instance ຂອງທ່ານຈະລາຍງານການແຈ້ງສະຖານະຂອງ line ກັບ T aa host. v lue ຂອງລາວຕ້ອງເປັນພະລັງງານຂອງສອງ (1, 2, 4, 8, 16, ແລະອື່ນໆ).
call_mgmt_capabilities
ຄວາມສາມາດໃນການຈັດການການໂທ bitmap. ຄ່າທີ່ເປັນໄປໄດ້ຂອງ bitmap ມີດັ່ງນີ້:
ຄ່າ (ບິດ)
SL_USBD_ACM_SERIAL_CALL_MGMT_DEV
SL_USBD_ACM_SERIAL_CALL_MGMT_DATA_CCI _DCI
ລາຍລະອຽດ
ອຸປະກອນຈັດການກັບການຈັດການການໂທຕົວມັນເອງ. ອຸປະກອນສາມາດສົ່ງ / ໄດ້ຮັບຂໍ້ມູນການຄຸ້ມຄອງການໂທຜ່ານການໂຕ້ຕອບຫ້ອງຂໍ້ມູນໄດ້.
p_acm_callbacks
ສະຫງວນລິຂະສິດ © 2025 Silicon Laboratories. ສະຫງວນລິຂະສິດທັງໝົດ.
23/174
ເກີນview
aa M aa p_acm_callbacks ແມ່ນຕົວຊີ້ໄປຫາໂຄງສ້າງຂອງປະເພດ sl_usbd_cdc_acm_callbacks_t . ຈຸດປະສົງຂອງມັນແມ່ນເພື່ອໃຫ້ CDC AC Cl ss ຊຸດຂອງຫນ້າທີ່ callback ຈະຖືກເອີ້ນເມື່ອເຫດການ CDC ACM ເກີດຂື້ນ. ບໍ່ແມ່ນການເອີ້ນຄືນທັງໝົດແມ່ນບັງຄັບ ແລະຕົວຊີ້ null ( NULL ) ສາມາດຖືກສົ່ງຜ່ານໃນໂຄງສ້າງການເອີ້ນຄືນທີ່ຕົວແປເມື່ອການໂທກັບບໍ່ຈໍາເປັນ. ຕາຕະລາງຂ້າງລຸ່ມນີ້ອະທິບາຍແຕ່ລະຊ່ອງຂໍ້ມູນການຕັ້ງຄ່າທີ່ມີຢູ່ໃນໂຄງສ້າງການຕັ້ງຄ່ານີ້.
ຕາຕະລາງ – sl_usbd_cdc_acm _callbacks_t ໂຄງສ້າງການຕັ້ງຄ່າ
ທົ່ງນາ
ລາຍລະອຽດ
.ເປີດໃຊ້
ຖືກເອີ້ນເມື່ອ instance ຫ້ອງຮຽນ USB ຖືກເປີດໃຊ້
ສໍາເລັດ.
.ປິດການໃຊ້ງານ
ເອີ້ນວ່າເມື່ອ 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
ເບິ່ງພາກການລົງທະບຽນການແຈ້ງເຫດການໂທກັບຄືນສໍາລັບຟັງຊັນການໂທຄືນ exampເລ.
ອຸປະກອນ USB CDC ACM Class Programming Guide
ພາກນີ້ອະທິບາຍວິທີການນໍາໃຊ້ຫ້ອງຮຽນ CDC Abstract Control Model. ການເລີ່ມຕົ້ນອຸປະກອນ USB CDC ACM Class ການເພີ່ມອຸປະກອນ USB CDC ACM Class Instance ກັບອຸປະກອນຂອງທ່ານຕິດຕໍ່ສື່ສານໂດຍໃຊ້ CDC ACM Class
ກຳລັງເລີ່ມຕົ້ນອຸປະກອນ 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. ສະຫງວນລິຂະສິດທັງໝົດ.
24/174
ເກີນview
ການເພີ່ມ CDC ACM Class Instance ໃສ່ການຕັ້ງຄ່າອຸປະກອນຂອງທ່ານ ການລົງທະບຽນການແຈ້ງເຫດການໂທກັບຄືນ
ການສ້າງ CDC ACM Class Instance
aa M aaa Cre te CDC AC cl ss instnce ໂດຍ c lling function sl_usbd_cdc_acm_create_instance() . T aaa M aaa he ex mple ຂ້າງລຸ່ມນີ້ສະແດງໃຫ້ເຫັນວິທີການ cre te 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 ແລ້ວ, ທ່ານສາມາດເພີ່ມມັນໃສ່ການຕັ້ງຄ່າໂດຍການໂທຫາຟັງຊັນ.
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(subclass_nbr,
(1)
config_nbr_fs);
(2)
ຖ້າ (ສະຖານະ ! SL_STATUS_OK) {
/* ເກີດຄວາມຜິດພາດ. ການຈັດການຄວາມຜິດພາດຄວນຈະຖືກເພີ່ມໃສ່ທີ່ນີ້. */
}
aaa (1) Cl ss ຈໍານວນ dd ກັບ configur tion ສົ່ງຄືນໂດຍ sl_usbd_cdc_acm_create_instance() . (2) ຕົວເລກການຕັ້ງຄ່າ (ໃນນີ້ເພີ່ມມັນໃສ່ການຕັ້ງຄ່າເຕັມຄວາມໄວ).
ການລົງທະບຽນການແຈ້ງເຫດການໂທກັບ
ຫ້ອງຮຽນ CDC ACM Serial ສາມາດແຈ້ງບອກຄໍາຮ້ອງສະຫມັກຂອງທ່ານກ່ຽວກັບການປ່ຽນແປງໃດໆໃນການຄວບຄຸມສາຍຫຼືການເຂົ້າລະຫັດຜ່ານຟັງຊັນໂທກັບການແຈ້ງເຕືອນ. ໂຄງສ້າງການເອີ້ນຄືນສາມາດຖືກສົ່ງຜ່ານເປັນການໂຕ້ຖຽງໃນລະຫວ່າງການສ້າງຕົວຢ່າງ ACM. ຈື່ໄວ້ວ່າການໂທກັບເຫຼົ່ານັ້ນເປັນທາງເລືອກ. ຕົວຢ່າງample – CDC ACM Callbacks Registration ສະແດງໃຫ້ເຫັນການນໍາໃຊ້ຫນ້າທີ່ການລົງທະບຽນ callback ໄດ້. ຕົວຢ່າງample – CDC ACM Callbacks Implementation ສະແດງໃຫ້ເຫັນ example ຂອງການປະຕິບັດຫນ້າທີ່ callback.
Example – ການລົງທະບຽນ CDC ACM Callbacks
ສະຫງວນລິຂະສິດ © 2025 Silicon Laboratories. ສະຫງວນລິຂະສິດທັງໝົດ.
25/174
ເກີນ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_coding};
ສະຖານະ = 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_n.
ຖ້າ (ສະຖານະ ! 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_new;
/* TODO ນຳໃຊ້ລະຫັດເສັ້ນໃໝ່.*/ baudrate_new = p_line_coding->BaudRate; parity_new = p_line_coding->parity; stop_bits_new = p_line_coding->StopBits; data_bits_new = p_line_coding->DataBits;
ກັບຄືນ (ຄວາມຈິງ);
(1)
}
void app_usbd_cdc_acm_line_control_changed (uint8_t subclass_nbr, ເຫດການ uint8_t, uint8_t event_changed)
{ bool rts_state; bool rts_state_changed; bool dtr_state; bool dtr_state_changed; bool brk_state; bool brk_state_changed;
/* TODO ນຳໃຊ້ການຄວບຄຸມແຖວໃໝ່. */ rts_state = ((ເຫດການ & SL_USBD_CDC_ACM_CTRL_RTS) ! 0) ? true : false; rts_state_changed = ((event_changed & SL_USBD_CDC_ACM_CTRL_RTS) ! 0) ? true : false; dtr_state = ((ເຫດການ & SL_USBD_CDC_ACM_CTRL_DTR) ! 0) ? true : false; dtr_state_changed = ((event_changed & SL_USBD_CDC_ACM_CTRL_DTR) ! 0) ? true : false; brk_state = ((ເຫດການ & SL_USBD_CDC_ACM_CTRL_BREAK) ! 0) ? true : false; brk_state_changed = ((event_changed & SL_USBD_CDC_ACM_CTRL_BREAK) ! 0) ? true : false;
}
(1) ມັນເປັນສິ່ງສໍາຄັນທີ່ຈະກັບຄືນ false ກັບຟັງຊັນນີ້ຖ້າຫາກວ່າການນໍາໃຊ້ລະຫັດເສັ້ນລົ້ມເຫລວ. ຖ້າບໍ່ດັ່ງນັ້ນ, ກັບຄືນຄວາມຈິງ.
ການສື່ສານໂດຍໃຊ້ CDC ACM Class
ສະຖານະ Serial
Line Coding Line ການຄວບຄຸມ
ສະຫງວນລິຂະສິດ © 2025 Silicon Laboratories. ສະຫງວນລິຂະສິດທັງໝົດ.
26/174
ເກີນview
Line State Subclass Instance Communication
ສະຖານະ Serial
Line Coding
ໂຮສ USB ຄວບຄຸມການເຂົ້າລະຫັດສາຍ (ອັດຕາ baud, parity, ແລະອື່ນໆ) ຂອງອຸປະກອນ CDC ACM. ໃນເວລາທີ່ມີຄວາມຈໍາເປັນ, ຄໍາຮ້ອງສະຫມັກແມ່ນຮັບຜິດຊອບສໍາລັບການກໍານົດລະຫັດເສັ້ນ. ມີສອງຫນ້າທີ່ສະຫນອງໃຫ້ເພື່ອດຶງແລະກໍານົດການເຂົ້າລະຫັດເສັ້ນປະຈຸບັນ, ດັ່ງທີ່ອະທິບາຍໄວ້ໃນຕາຕະລາງຂ້າງລຸ່ມນີ້.
ຕາຕະລາງ – CDC ACM Line Coding Functions
ຟັງຊັນ
sl_usbd_cdc_acm_g e t_line _co d ing ()
sl_usbd_cdc_acm_s e t_line _co d ing ()
ລາຍລະອຽດ
ແອັບພລິເຄຊັນຂອງທ່ານສາມາດໄດ້ຮັບການຕັ້ງຄ່າການເຂົ້າລະຫັດເສັ້ນປະຈຸບັນທີ່ຕັ້ງໄວ້ບໍ່ວ່າຈະຈາກເຈົ້າພາບດ້ວຍການຮ້ອງຂໍ SetLineCoding ຫຼືດ້ວຍຟັງຊັນ sl_usbd_cdc_acm_set_line_coding() .
ແອັບພລິເຄຊັນຂອງທ່ານສາມາດຕັ້ງລະຫັດເສັ້ນໄດ້. ເຈົ້າພາບສາມາດດຶງເອົາການຕັ້ງຄ່າດ້ວຍການຮ້ອງຂໍ GetLineCoding.
ການຄວບຄຸມສາຍ
ເຈົ້າພາບ USB ຄວບຄຸມການຄວບຄຸມສາຍ (RTS ແລະ DTR pins, ສັນຍານຢຸດ, ແລະອື່ນໆ) ຂອງອຸປະກອນ CDC ACM. ເມື່ອມີຄວາມຈໍາເປັນ, ຄໍາຮ້ອງສະຫມັກຂອງທ່ານມີຄວາມຮັບຜິດຊອບໃນການນໍາໃຊ້ການຄວບຄຸມສາຍ. ຟັງຊັນແມ່ນສະຫນອງໃຫ້ເພື່ອດຶງແລະກໍານົດການຄວບຄຸມສາຍໃນປະຈຸບັນ, ດັ່ງທີ່ໄດ້ອະທິບາຍໄວ້ໃນຕາຕະລາງຂ້າງລຸ່ມນີ້.
ຕາຕະລາງ – CDC ACM Line Control Functions
ຟັງຊັນ
sl_usb d _cd c_acm_g e t_line _co ntr o l_state ()
ຄໍາຮ້ອງສະຫມັກຂອງທ່ານສາມາດໄດ້ຮັບສະຖານະເສັ້ນຄວບຄຸມປະຈຸບັນທີ່ຕັ້ງໂດຍເຈົ້າພາບດ້ວຍການຮ້ອງຂໍ SetControlLineState.
ລັດເສັ້ນ
ໂຮສ USB ດຶງຂໍ້ມູນສະຖານະຂອງສາຍຢູ່ໃນໄລຍະປົກກະຕິ. ແອັບພລິເຄຊັນຂອງທ່ານຕ້ອງອັບເດດສະຖານະເສັ້ນແຕ່ລະຄັ້ງທີ່ມັນປ່ຽນແປງ. ໃນເວລາທີ່ມີຄວາມຈໍາເປັນ, ຄໍາຮ້ອງສະຫມັກຂອງທ່ານແມ່ນຮັບຜິດຊອບສໍາລັບການກໍານົດສະຖານະເສັ້ນ. ສອງຫນ້າທີ່ໄດ້ຖືກສະຫນອງໃຫ້ເພື່ອດຶງແລະກໍານົດການຄວບຄຸມເສັ້ນປະຈຸບັນ, ດັ່ງທີ່ອະທິບາຍໄວ້ໃນຕາຕະລາງຂ້າງລຸ່ມນີ້.
ຕາຕະລາງ – CDC ACM Line S tate Functions
ຟັງຊັນ
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 ຂັດຈັງຫວະຈະຖືກສົ່ງໄປຫາເຈົ້າພາບເພື່ອແຈ້ງກ່ຽວກັບມັນກ່ຽວກັບການປ່ຽນແປງສະຖານະເສັ້ນ serial.
ແອັບພລິເຄຊັນສາມາດລຶບສອງເຫດການຂອງສະຖານະສາຍ: ຜູ້ໃຫ້ບໍລິການສົ່ງສັນຍານ ແລະການກວດຫາຜູ້ຮັບສັນຍານ. ເຫດການອື່ນໆທັງໝົດແມ່ນຖືກລຶບລ້າງດ້ວຍຕົນເອງໂດຍກຸ່ມຍ່ອຍຂອງ emulation serial ACM.
Subclass Instance Communication
ຊັ້ນຍ່ອຍ ACM ຂອງ Silicon Labs ສະເຫນີຫນ້າທີ່ຕໍ່ໄປນີ້ເພື່ອຕິດຕໍ່ສື່ສານກັບເຈົ້າພາບ. ສໍາລັບລາຍລະອຽດເພີ່ມເຕີມກ່ຽວກັບພາລາມິເຕີ functions9, ເບິ່ງການອ້າງອີງ CDC ACM Subclass Functions.
ຊື່ຟັງຊັນ
sl_usb d _cd c_acm_ re ad () sl_usb d _cd c_acm_write ()
ການດໍາເນີນງານ
ຮັບຂໍ້ມູນຈາກໂຮສຜ່ານຈຸດສິ້ນສຸດ OUT ຈໍານວນຫລາຍ. ຟັງຊັນນີ້ຖືກປິດກັ້ນ. ສົ່ງຂໍ້ມູນໄປຍັງໂຮດຜ່ານຈຸດສິ້ນສຸດເປັນຊຸດ. ຟັງຊັນນີ້ຖືກປິດກັ້ນ.
ສະຫງວນລິຂະສິດ © 2025 Silicon Laboratories. ສະຫງວນລິຂະສິດທັງໝົດ.
27/174
ເກີນview
ຕາຕະລາງ – CDC ACM Communication API Summary aaaaa sl_usbd_cdc_acm_read() nd sl_usbd_cdc_acm_write() ສະຫນອງການຕິດຕໍ່ສື່ສານ synchronous, ເຊິ່ງຂ້າພະເຈົ້າ ns th tr nsfer ກໍາລັງຂັດຂວາງ. ໃນຄໍາສັບຕ່າງໆອື່ນໆ, ເມື່ອໂທຫາຫນ້າທີ່, ແອັບພລິເຄຊັນຈະຂັດຂວາງຈົນກ່ວາການໂອນຍ້າຍຈະສໍາເລັດດ້ວຍຫຼືບໍ່ມີຂໍ້ຜິດພາດ. ການໝົດເວລາສາມາດລະບຸໄດ້ເພື່ອຫຼີກເວັ້ນການລໍຖ້າຕະຫຼອດໄປ. ອະດີດample ຂ້າງລຸ່ມນີ້ສະແດງໃຫ້ເຫັນການອ່ານແລະຂຽນ example ທີ່ໄດ້ຮັບຂໍ້ມູນຈາກໂຮດໂດຍໃຊ້ຈຸດສິ້ນສຸດ OUT ສ່ວນໃຫຍ່ແລະສົ່ງຂໍ້ມູນໄປຫາເຈົ້າພາບໂດຍໃຊ້ຈຸດສິ້ນສຸດ IN bulk.
ລາຍຊື່ – ອ່ານ ແລະຂຽນ Serial Example
__ALIGNED(4) uint8_t rx_buf[2];
__ALIGNED(4) uint8_t tx_buf[2];
uint32_t
xfer_len;
sl_status_t
ສະຖານະພາບ;
ສະຖານະ = sl_usbd_cdc_acm_read(subclass_nbr,
(1)
rx_buf,
(2)
2u,
0u,
(3)
&xfer_len);
ຖ້າ (ສະຖານະ ! SL_STATUS_OK) {
/* ເກີດຄວາມຜິດພາດ. ການຈັດການຄວາມຜິດພາດຄວນຈະຖືກເພີ່ມໃສ່ທີ່ນີ້. */
}
ສະຖານະ = sl_usbd_cdc_acm_write(subclass_nbr,
(1)
tx_buf,
(4)
2u,
0u,
(3)
&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 subclass ເພື່ອນໍາທາງການໂອນໄປຫາ bulk OUT ຫຼື IN endpoint ທີ່ເຫມາະສົມ. (2) ຄໍາຮ້ອງສະຫມັກຂອງທ່ານຕ້ອງຮັບປະກັນວ່າ buffer ທີ່ສະຫນອງໃຫ້ກັບຟັງຊັນມີຂະຫນາດໃຫຍ່ພຽງພໍທີ່ຈະຮອງຮັບຂໍ້ມູນທັງຫມົດ. ຖ້າບໍ່ດັ່ງນັ້ນ, ບັນຫາການຊິ້ງຂໍ້ມູນອາດຈະເກີດຂຶ້ນ. (3) ເພື່ອຫຼີກເວັ້ນສະຖານະການຂັດຂວາງທີ່ບໍ່ມີຂອບເຂດ, ໃຫ້ລະບຸໄລຍະເວລາທີ່ສະແດງອອກເປັນ milliseconds. ຄ່າຂອງ 809 ເຮັດໃຫ້ວຽກງານຂອງແອັບພລິເຄຊັນລໍຖ້າຕະຫຼອດໄປ. (4) ຄໍາຮ້ອງສະຫມັກສະຫນອງການ buffer ການຖ່າຍໂອນການເລີ່ມຕົ້ນ.
ສະຫງວນລິຂະສິດ © 2025 Silicon Laboratories. ສະຫງວນລິຂະສິດທັງໝົດ.
28/174
ເກີນview
ເກີນview
ອຸປະກອນ USB HID Class
ອຸປະກອນ USB HID Class Overview ອຸປະກອນ USB HID Class ຕ້ອງການຊັບພະຍາກອນຈາກອຸປະກອນ Core USB HID Class Configuration ອຸປະກອນ USB HID Class Programming Guide HID Periodic Input Reports Task
ພາກນີ້ອະທິບາຍເຖິງອຸປະກອນການໂຕ້ຕອບມະນຸດ (HID) ທີ່ຮອງຮັບໂດຍອຸປະກອນ USB Silicon Labs.
ຫ້ອງຮຽນ HID ກວມເອົາອຸປະກອນທີ່ໃຊ້ໂດຍມະນຸດເພື່ອຄວບຄຸມການເຮັດວຽກຂອງຄອມພິວເຕີ, ເຊັ່ນ: ແປ້ນພິມ, ເມົາສ໌, ອຸປະກອນຊີ້ ແລະອຸປະກອນເກມ.
ຫ້ອງຮຽນ HID ຍັງສາມາດຖືກນໍາໃຊ້ໃນອຸປະກອນປະສົມທີ່ປະກອບດ້ວຍການຄວບຄຸມເຊັ່ນ: knobs, ສະຫຼັບ, ປຸ່ມ, ແລະ sliders. ຕົວຢ່າງample, mute ແລະການຄວບຄຸມລະດັບສຽງໃນຊຸດຫູຟັງສຽງຖືກຄວບຄຸມໂດຍຟັງຊັນ HID ຂອງຊຸດຫູຟັງ. ຫ້ອງຮຽນ HID ສາມາດແລກປ່ຽນຂໍ້ມູນສໍາລັບຈຸດປະສົງໃດຫນຶ່ງໂດຍໃຊ້ພຽງແຕ່ການຄວບຄຸມແລະການຂັດຂວາງການໂອນ.
ຫ້ອງຮຽນ HID ແມ່ນຫນຶ່ງໃນຫ້ອງຮຽນ USB ທີ່ເກົ່າແກ່ທີ່ສຸດແລະຖືກນໍາໃຊ້ຢ່າງກວ້າງຂວາງທີ່ສຸດ. ລະບົບປະຕິບັດການໂຮດຕົ້ນຕໍທັງຫມົດສະຫນອງໄດເວີພື້ນເມືອງເພື່ອຈັດການອຸປະກອນ HID, ເຊິ່ງແມ່ນເຫດຜົນທີ່ວ່າອຸປະກອນສະເພາະຂອງຜູ້ຂາຍຕ່າງໆເຮັດວຽກກັບຊັ້ນ HID. ຫ້ອງຮຽນນີ້ຍັງປະກອບມີປະເພດຕ່າງໆຂອງລາຍການຜົນຜະລິດເຊັ່ນ: LEDs, ສຽງ, tactile ຕໍານິຕິຊົມ, ແລະອື່ນໆ.
ການປະຕິບັດ HID ປະຕິບັດຕາມຂໍ້ກໍານົດດັ່ງຕໍ່ໄປນີ້:
ນິຍາມໝວດໝູ່ອຸປະກອນສຳລັບອຸປະກອນການໂຕ້ຕອບມະນຸດ (HID), 6/27/01, ເວີຊັນ 1.11. ຕາຕະລາງການນຳໃຊ້ Universal Serial Bus HID, 10/28/2004, ເວີຊັນ 1.12.
ອຸປະກອນ USB HID Class Overview
ເກີນview
ອຸປະກອນ HID ປະກອບດ້ວຍຈຸດສິ້ນສຸດຕໍ່ໄປນີ້:
ຄູ່ຂອງຈຸດສິ້ນສຸດການຄວບຄຸມ IN ແລະ OUT ເອີ້ນວ່າຈຸດສິ້ນສຸດເລີ່ມຕົ້ນ ເປັນຈຸດສິ້ນສຸດຂັດຂວາງ IN endpoint ເປັນທາງເລືອກທີ່ຂັດຂວາງ OUT ຈຸດສິ້ນສຸດ
ຕາຕະລາງຂ້າງລຸ່ມນີ້ອະທິບາຍການນໍາໃຊ້ຈຸດສິ້ນສຸດທີ່ແຕກຕ່າງກັນ:
ຕາຕະລາງ – HID Class Endpoints ການນໍາໃຊ້
ການໃຊ້ທິດທາງປາຍທາງ
ຄວບຄຸມ IN
ການຄວບຄຸມ
ອອກ
ຂັດຂວາງ IN
ຂັດຂວາງ
ອອກ
Deviceto-host
ເຈົ້າພາບ-ອຸປະກອນ
Deviceto-host
ເຈົ້າພາບ-ອຸປະກອນ
ການຮ້ອງຂໍມາດຕະຖານສໍາລັບການນັບ, ການຮ້ອງຂໍສະເພາະຂອງຫ້ອງຮຽນ, ແລະການສື່ສານຂໍ້ມູນ (ການປ້ອນຂໍ້ມູນ, ບົດລາຍງານຄຸນນະສົມບັດທີ່ສົ່ງກັບເຈົ້າພາບກັບ GET_REPORT ຄໍາຮ້ອງຂໍ). ການຮ້ອງຂໍມາດຕະຖານສໍາລັບການ enumeration, ການຮ້ອງຂໍສະເພາະຫ້ອງຮຽນແລະການສື່ສານຂໍ້ມູນ (Output, ບົດລາຍງານຄຸນນະສົມບັດທີ່ໄດ້ຮັບຈາກເຈົ້າພາບກັບຄໍາຮ້ອງຂໍ SET_REPORT). ການສື່ສານຂໍ້ມູນ (ບົດລາຍງານການປ້ອນຂໍ້ມູນ ແລະຄຸນສົມບັດ).
ການສື່ສານຂໍ້ມູນ (ບົດລາຍງານຜົນຜະລິດແລະຄຸນນະສົມບັດ).
ລາຍງານ
ສະຫງວນລິຂະສິດ © 2025 Silicon Laboratories. ສະຫງວນລິຂະສິດທັງໝົດ.
29/174
ເກີນview
ເຈົ້າພາບແລະອຸປະກອນ HID ແລກປ່ຽນຂໍ້ມູນໂດຍໃຊ້ບົດລາຍງານ. ບົດລາຍງານປະກອບມີຂໍ້ມູນທີ່ມີຮູບແບບທີ່ໃຫ້ຂໍ້ມູນກ່ຽວກັບການຄວບຄຸມແລະອົງປະກອບທາງກາຍະພາບອື່ນໆຂອງອຸປະກອນ HID. ການຄວບຄຸມແມ່ນ manipulable ໂດຍຜູ້ໃຊ້ແລະດໍາເນີນການລັກສະນະຂອງອຸປະກອນ. ຕົວຢ່າງampດັ່ງນັ້ນ, ການຄວບຄຸມສາມາດເປັນປຸ່ມເທິງຫນູຫຼືແປ້ນພິມ, ສະຫຼັບ, ແລະອື່ນໆ. ຫນ່ວຍງານອື່ນໆແຈ້ງໃຫ້ຜູ້ໃຊ້ກ່ຽວກັບສະຖານະຂອງຄຸນນະສົມບັດອຸປະກອນສະເພາະໃດຫນຶ່ງ. ຕົວຢ່າງample, ໄຟ LED ເທິງແປ້ນພິມແຈ້ງເຕືອນຜູ້ໃຊ້ກ່ຽວກັບການປິດຝາປິດ, ປຸ່ມກົດຕົວເລກເຮັດວຽກ, ແລະອື່ນໆ.
ຮູບແບບແລະການນໍາໃຊ້ຂໍ້ມູນບົດລາຍງານແມ່ນເຂົ້າໃຈໂດຍເຈົ້າພາບໂດຍການວິເຄາະເນື້ອໃນຂອງຜູ້ອະທິບາຍບົດລາຍງານ. ການວິເຄາະເນື້ອຫາແມ່ນເຮັດໂດຍນັກວິເຄາະ. ຕົວອະທິບາຍລາຍງານອະທິບາຍຂໍ້ມູນທີ່ສະໜອງໃຫ້ໂດຍແຕ່ລະການຄວບຄຸມໃນອຸປະກອນ. ມັນປະກອບດ້ວຍລາຍການທີ່ເປັນຊິ້ນສ່ວນຂອງຂໍ້ມູນກ່ຽວກັບອຸປະກອນແລະປະກອບດ້ວຍຄໍານໍາຫນ້າ 1-byte ແລະຄວາມຍາວຕົວແປ.
ຂໍ້ມູນ. ສໍາລັບລາຍລະອຽດເພີ່ມເຕີມກ່ຽວກັບຮູບແບບລາຍການ, ເບິ່ງ
1.11=, ພາກທີ 5.6 ແລະ 6.2.2.
ມີສາມປະເພດຕົ້ນຕໍ:
ລາຍການຫຼັກກຳນົດ ຫຼືຈັດກຸ່ມບາງປະເພດຊ່ອງຂໍ້ມູນ.
ລາຍການທົ່ວໂລກອະທິບາຍລັກສະນະຂໍ້ມູນຂອງການຄວບຄຸມ.
ລາຍການທ້ອງຖິ່ນອະທິບາຍລັກສະນະຂໍ້ມູນຂອງການຄວບຄຸມ.
ແຕ່ລະປະເພດລາຍການແມ່ນຖືກກໍານົດໂດຍຫນ້າທີ່ທີ່ແຕກຕ່າງກັນ. ຟັງຊັນລາຍການຍັງສາມາດເອີ້ນວ່າ a tag. ຟັງຊັນລາຍການສາມາດເຫັນໄດ້ວ່າເປັນລາຍການຍ່ອຍທີ່ເປັນໜຶ່ງໃນສາມປະເພດລາຍການຫຼັກ. ຕາຕະລາງຂ້າງລຸ່ມນີ້ສະຫນອງການສະຫຼຸບໂດຍຫຍໍ້view ຫນ້າທີ່ຂອງ item9s ໃນແຕ່ລະປະເພດລາຍການ. ສໍາລັບລາຍລະອຽດຄົບຖ້ວນສົມບູນຂອງລາຍການໃນແຕ່ລະປະເພດ, ເບິ່ງ
ຕາຕະລາງ – ລາຍລະອຽດຫນ້າທີ່ຂອງລາຍການສໍາລັບແຕ່ລະປະເພດລາຍການ
ຟັງຊັນປະເພດລາຍການ
ລາຍລະອຽດ
ການປ້ອນຂໍ້ມູນຫຼັກ
ອະທິບາຍຂໍ້ມູນກ່ຽວກັບຂໍ້ມູນທີ່ສະຫນອງໂດຍຫນຶ່ງຫຼືຫຼາຍການຄວບຄຸມທາງດ້ານຮ່າງກາຍ.
ຜົນຜະລິດຫຼັກ ອະທິບາຍຂໍ້ມູນທີ່ສົ່ງໄປຫາອຸປະກອນ.
ຄຸນນະສົມບັດຕົ້ນຕໍ
ອະທິບາຍຂໍ້ມູນການຕັ້ງຄ່າອຸປະກອນທີ່ສົ່ງໄປຫາຫຼືໄດ້ຮັບຈາກອຸປະກອນທີ່ມີອິດທິພົນຕໍ່ພຶດຕິກໍາໂດຍລວມຂອງອຸປະກອນຫຼືຫນຶ່ງໃນອົງປະກອບຂອງຕົນ.
ກຸ່ມການເກັບກຳຂໍ້ມູນຫຼັກ (Input, Output ຫຼື Feature).
ປາຍຫຼັກຂອງການປິດຄໍເລັກຊັນ. ຄໍເລັກຊັນ
ສະຫງວນລິຂະສິດ © 2025 Silicon Laboratories. ສະຫງວນລິຂະສິດທັງໝົດ.
30/174
ເກີນview
ຟັງຊັນປະເພດລາຍການ
ລາຍລະອຽດ
ຫນ້າການນໍາໃຊ້ທົ່ວໂລກ
ກໍານົດຟັງຊັນທີ່ມີຢູ່ໃນອຸປະກອນ.
Global Logical ກໍານົດຂອບເຂດຈໍາກັດຕ່ໍາຂອງຄ່າທີ່ລາຍງານຢູ່ໃນຫນ່ວຍງານໂລຈິກ. ຕໍາ່ສຸດທີ່
Global Logical ກຳນົດຂອບເຂດສູງສຸດຂອງຄ່າທີ່ລາຍງານຢູ່ໃນຫົວໜ່ວຍໂລຈິກ. ສູງສຸດ
Global Physical ກໍານົດຂອບເຂດຈໍາກັດຕ່ໍາຂອງຄ່າທີ່ລາຍງານຢູ່ໃນຫນ່ວຍງານທາງດ້ານຮ່າງກາຍ, ນັ້ນແມ່ນຄ່າຕໍາ່ສຸດທີ່ Logical Minimum ສະແດງຢູ່ໃນຫນ່ວຍງານທາງດ້ານຮ່າງກາຍ.
Global Physical ກໍານົດຂອບເຂດຈໍາກັດເທິງຂອງຄ່າທີ່ລາຍງານຢູ່ໃນຫນ່ວຍງານທາງດ້ານຮ່າງກາຍ, ນັ້ນຄື Logical Maximum ສູງສຸດທີ່ສະແດງອອກໃນຫນ່ວຍງານທາງດ້ານຮ່າງກາຍ.
ໜ່ວຍໂລກ
ຊີ້ບອກຫົວໜ່ວຍເລກກຳລັງຢູ່ໃນຖານ 10. ເລກກຳລັງຢູ່ລະຫວ່າງ -8 ຫາ +7.
ເລກກຳລັງ
ໜ່ວຍໂລກ
ຊີ້ບອກຫົວໜ່ວຍຂອງຄ່າທີ່ລາຍງານ. ສໍາລັບຕົວຢ່າງ, ຄວາມຍາວ, ມະຫາຊົນ, ຫນ່ວຍອຸນຫະພູມ, ແລະອື່ນໆ.
ຂະໜາດບົດລາຍງານທົ່ວໂລກ
ຊີ້ບອກຂະໜາດຂອງຊ່ອງຂໍ້ມູນລາຍງານເປັນບິດ.
Global Report ID ຊີ້ໃຫ້ເຫັນຄຳນຳໜ້າທີ່ເພີ່ມໃສ່ບົດລາຍງານສະເພາະ.
ຈໍານວນບົດລາຍງານທົ່ວໂລກ
ຊີ້ບອກຈໍານວນຂອງຊ່ອງຂໍ້ມູນສໍາລັບລາຍການ.
ຊຸກຍູ້ທົ່ວໂລກ
ວາງສຳເນົາຂອງຕາຕະລາງສະຖານະລາຍການທົ່ວໂລກໃສ່ CPU stack.
Global Pop
ແທນທີ່ຕາຕະລາງສະຖານະລາຍການດ້ວຍໂຄງສ້າງສຸດທ້າຍຈາກ stack.
ການນໍາໃຊ້ທ້ອງຖິ່ນ
ເປັນຕົວແທນຂອງດັດຊະນີເພື່ອກໍານົດການນໍາໃຊ້ສະເພາະພາຍໃນຫນ້າການນໍາໃຊ້. ມັນຊີ້ໃຫ້ເຫັນເຖິງຜູ້ຂາຍທີ່ແນະນໍາການນໍາໃຊ້ສໍາລັບການຄວບຄຸມສະເພາະໃດຫນຶ່ງຫຼືກຸ່ມຂອງການຄວບຄຸມ. ການນໍາໃຊ້ສະຫນອງຂໍ້ມູນໃຫ້ຜູ້ພັດທະນາຄໍາຮ້ອງສະຫມັກກ່ຽວກັບສິ່ງທີ່ການຄວບຄຸມແມ່ນການວັດແທກ.
ການນໍາໃຊ້ທ້ອງຖິ່ນ
ກໍານົດການນໍາໃຊ້ເລີ່ມຕົ້ນທີ່ກ່ຽວຂ້ອງກັບ array ຫຼື bitmap.
ຕໍາ່ສຸດທີ່
ການນໍາໃຊ້ທ້ອງຖິ່ນ
ກໍານົດການສິ້ນສຸດການນໍາໃຊ້ທີ່ກ່ຽວຂ້ອງກັບ array ຫຼື bitmap.
ສູງສຸດ
Local Designator ກໍານົດສ່ວນຂອງຮ່າງກາຍທີ່ໃຊ້ສໍາລັບການຄວບຄຸມ. Index ຊີ້ໄປຫາຜູ້ອອກແບບໃນ Physical
ດັດຊະນີ
ຕົວອະທິບາຍ.
Local Designator ກໍານົດດັດຊະນີຂອງຕົວກໍານົດເລີ່ມຕົ້ນທີ່ກ່ຽວຂ້ອງກັບ array ຫຼື bitmap. ຕໍາ່ສຸດທີ່
Local Designator ກໍານົດດັດຊະນີຂອງຕົວກໍານົດການສິ້ນສຸດທີ່ກ່ຽວຂ້ອງກັບ array ຫຼື bitmap. ສູງສຸດ
Local String Index
String index ສໍາລັບຕົວອະທິບາຍ String. ມັນອະນຸຍາດໃຫ້ສະຕຣິງເຊື່ອມໂຍງກັບລາຍການສະເພາະ ຫຼືການຄວບຄຸມ.
Local String
ລະບຸດັດຊະນີສະຕຣິງທຳອິດເມື່ອກຳນົດກຸ່ມຂອງສະຕຣິງຕາມລຳດັບເພື່ອຄວບຄຸມໃນອາເຣ
ຕໍາ່ສຸດທີ່ຫຼື bitmap.
ທ້ອງຖິ່ນທ້ອງຖິ່ນ
String ສູງສຸດ
ຕົວຂັ້ນ
ລະບຸດັດຊະນີສະຕຣິງສຸດທ້າຍເມື່ອກຳນົດກຸ່ມຂອງສະຕຣິງຕາມລຳດັບເພື່ອຄວບຄຸມໃນອາເຣ ຫຼືແຜນບບິດ.
ກຳນົດຈຸດເລີ່ມຕົ້ນ ຫຼືຈຸດສິ້ນສຸດຂອງຊຸດລາຍການທ້ອງຖິ່ນ.
ຂໍ້ມູນ control9s ຕ້ອງກຳນົດຢ່າງໜ້ອຍລາຍການຕໍ່ໄປນີ້:
ການປ້ອນຂໍ້ມູນ, ຜົນອອກ ຫຼື ຄຸນສົມບັດ ລາຍການຕົ້ນຕໍ ການນໍາໃຊ້ ລາຍການທ້ອງຖິ່ນ ການນຳໃຊ້ Page Global item Logical Minimum Global item Logical Maximum Global item Report Size Global item
ສະຫງວນລິຂະສິດ © 2025 Silicon Laboratories. ສະຫງວນລິຂະສິດທັງໝົດ.
31/174
ເກີນview
Report Count Global item ຕາຕະລາງຂ້າງລຸ່ມນີ້ສະແດງໃຫ້ເຫັນການເປັນຕົວແທນຂອງເນື້ອໃນ descriptor Report Mouse ຈາກທັດສະນະຂອງ host HID parser. ຫນູມີສາມປຸ່ມ (ຊ້າຍ, ຂວາ, ແລະລໍ້). ລະຫັດທີ່ນໍາສະເຫນີໃນ example ຂ້າງລຸ່ມນີ້ແມ່ນການປະຕິບັດລະຫັດທີ່ສອດຄ້ອງກັນກັບຕົວສະແດງຕົວສະແດງບົດລາຍງານຂອງຫນູນີ້.
ຮູບ – ລາຍງານເນື້ອໃນຕົວອະທິບາຍຈາກ Host HID Parser View
(1) ຟັງຊັນລາຍການຫນ້າການນໍາໃຊ້ກໍານົດຫນ້າທີ່ທົ່ວໄປຂອງອຸປະກອນ. ໃນນີ້ example, ອຸປະກອນ HID ເປັນຂອງ a
ການຄວບຄຸມ desktop ທົ່ວໄປ.
(2) ແອັບພລິເຄຊັນເກັບລວບລວມບັນດາລາຍການຫຼັກທີ່ມີຈຸດປະສົງທົ່ວໄປ ແລະອາດຈະຄຸ້ນເຄີຍກັບແອັບພລິເຄຊັນ. ໃນແຜນວາດ, ກຸ່ມແມ່ນປະກອບດ້ວຍສາມລາຍການ Input Main. ສໍາລັບການເກັບກໍານີ້, ການນໍາໃຊ້ທີ່ແນະນໍາສໍາລັບການຄວບຄຸມແມ່ນຫນູທີ່ຊີ້ບອກໂດຍລາຍການການນໍາໃຊ້. (3) ການລວບລວມຂໍ້ມູນແບບ Nested ອາດຈະຖືກນໍາໃຊ້ເພື່ອໃຫ້ລາຍລະອຽດເພີ່ມເຕີມກ່ຽວກັບການນໍາໃຊ້ການຄວບຄຸມດຽວຫຼືກຸ່ມຂອງການຄວບຄຸມໃຫ້ກັບແອັບພລິເຄຊັນ. ໃນນີ້ example, ການເກັບກຳຂໍ້ມູນທາງກາຍຍະພາບ, ຖືກຈັດໃສ່ໃນແອັບພລິເຄຊັນເກັບກຳ, ແມ່ນປະກອບດ້ວຍສາມລາຍການວັດສະດຸປ້ອນດຽວກັນທີ່ປະກອບເປັນແອັບພລິເຄຊັນການເກັບກຳ. Collection Physical ແມ່ນໃຊ້ສໍາລັບຊຸດຂອງລາຍການຂໍ້ມູນທີ່ສະແດງເຖິງຈຸດຂໍ້ມູນທີ່ເກັບກໍາຢູ່ໃນຈຸດເລຂາຄະນິດຫນຶ່ງ. ໃນ example, ການນໍາໃຊ້ທີ່ແນະນໍາແມ່ນຕົວຊີ້ທີ່ຊີ້ບອກໂດຍລາຍການການນໍາໃຊ້. ໃນທີ່ນີ້ການນໍາໃຊ້ຕົວຊີ້ຫມາຍເຖິງຈຸດປະສານງານຕໍາແຫນ່ງຂອງຫນູແລະຊອບແວລະບົບຈະແປການປະສານງານຂອງຫນູໃນການເຄື່ອນໄຫວຂອງຕົວກະພິບຫນ້າຈໍ. (4) ຫນ້າການນໍາໃຊ້ Nested ຍັງເປັນໄປໄດ້ແລະໃຫ້ລາຍລະອຽດເພີ່ມເຕີມກ່ຽວກັບລັກສະນະສະເພາະໃດຫນຶ່ງພາຍໃນຫນ້າທີ່ທົ່ວໄປຂອງອຸປະກອນ. ໃນກໍລະນີນີ້, ສອງລາຍການການປ້ອນຂໍ້ມູນຖືກຈັດເປັນກຸ່ມແລະສອດຄ່ອງກັບປຸ່ມຂອງຫນູໄດ້. ຫນຶ່ງໃນລາຍການປ້ອນຂໍ້ມູນກໍານົດສາມປຸ່ມຂອງຫນູ (ຂວາ, ຊ້າຍແລະລໍ້) ໃນຂໍ້ກໍານົດຂອງຈໍານວນຊ່ອງຂໍ້ມູນສໍາລັບລາຍການ (ລາຍການຈໍານວນລາຍງານ), ຂະຫນາດຂອງຊ່ອງຂໍ້ມູນ (ລາຍການຂະຫນາດລາຍງານ) ແລະຄ່າທີ່ເປັນໄປໄດ້ສໍາລັບແຕ່ລະຊ່ອງຂໍ້ມູນ (ການນໍາໃຊ້ຕໍາ່ສຸດທີ່ແລະສູງສຸດ, ເຫດຜົນຂັ້ນຕ່ໍາແລະສູງສຸດລາຍການ). ລາຍການ Input ອື່ນໆແມ່ນຄົງທີ່ 13-bit ທີ່ອະນຸຍາດໃຫ້ຂໍ້ມູນບົດລາຍງານການປ້ອນຂໍ້ມູນຖືກຈັດໃສ່ໃນຂອບເຂດ byte. ລາຍການປ້ອນຂໍ້ມູນນີ້ຖືກນໍາໃຊ້ພຽງແຕ່ສໍາລັບຈຸດປະສົງ padding. (5) ໜ້າການນຳໃຊ້ທີ່ຊ້ອນກັນອີກອັນໜຶ່ງທີ່ອ້າງອີງເຖິງການຄວບຄຸມ desktop ທົ່ວໄປແມ່ນກຳນົດໄວ້ສຳລັບຈຸດພິກັດຕຳແໜ່ງຂອງເມົາສ໌. ສໍາລັບຫນ້າການນໍາໃຊ້ນີ້, ລາຍການປ້ອນຂໍ້ມູນອະທິບາຍຊ່ອງຂໍ້ມູນທີ່ສອດຄ້ອງກັນກັບແກນ x- ແລະ y ຕາມທີ່ລະບຸໄວ້ໂດຍສອງການນໍາໃຊ້.
ລາຍການ.
ຫຼັງຈາກການວິເຄາະເນື້ອໃນ descriptor Report ເມົາສ໌ກ່ອນໜ້ານີ້, host9s HID parser ສາມາດຕີຄວາມໝາຍຂໍ້ມູນລາຍງານການປ້ອນຂໍ້ມູນທີ່ອຸປະກອນສົ່ງມາດ້ວຍການໂອນຍ້າຍ IN ລົບກວນ ຫຼືຕອບສະໜອງຕໍ່ການຮ້ອງຂໍ GET_REPORT. ຂໍ້ມູນບົດລາຍງານການປ້ອນຂໍ້ມູນທີ່ສອດຄ້ອງກັບຕົວອະທິບາຍບົດລາຍງານຂອງເມົາສ໌ທີ່ສະແດງຢູ່ໃນຮູບ – ລາຍງານເນື້ອໃນຕົວອະທິບາຍຈາກ Host HID Parser View is
ສະຫງວນລິຂະສິດ © 2025 Silicon Laboratories. ສະຫງວນລິຂະສິດທັງໝົດ.
32/174
ເກີນview
ສະແດງໃຫ້ເຫັນຢູ່ໃນຕາຕະລາງຂ້າງລຸ່ມນີ້. ຂະຫນາດທັງຫມົດຂອງຂໍ້ມູນບົດລາຍງານແມ່ນ 4 bytes. ປະເພດຕ່າງໆຂອງບົດລາຍງານອາດຈະຖືກສົ່ງຜ່ານຈຸດສິ້ນສຸດດຽວກັນ. ສໍາລັບຈຸດປະສົງຂອງການຈໍາແນກປະເພດຕ່າງໆຂອງບົດລາຍງານ, ຄໍານໍາຫນ້າ ID ບົດລາຍງານ 1-byte ຈະຖືກເພີ່ມເຂົ້າໃນບົດລາຍງານຂໍ້ມູນ. ຖ້າ ID ລາຍງານໄດ້ຖືກນໍາໃຊ້ໃນ example ຂອງບົດລາຍງານຂອງຫນູ, ຂະຫນາດທັງຫມົດຂອງຂໍ້ມູນບົດລາຍງານຈະເປັນ 5 bytes.
ຕາຕະລາງ – ບົດລາຍງານການປ້ອນຂໍ້ມູນຖືກສົ່ງໄປຫາເຈົ້າພາບ ແລະກົງກັບສະຖານະຂອງ 3 ປຸ່ມຫນູ
Bit Offset
0 1 2 3 16 24
Bit Count 1 1 1 13 8 8
ປຸ່ມລາຍລະອຽດ 1 (ປຸ່ມຊ້າຍ). ປຸ່ມ 2 (ປຸ່ມຂວາ). ປຸ່ມ 3 (ປຸ່ມລໍ້). ບໍ່ໄດ້ໃຊ້. ຕຳແໜ່ງເທິງແກນ X. ຕຳແໜ່ງເທິງແກນ Y.
ຕົວອະທິບາຍທາງກາຍະພາບຊີ້ບອກພາກສ່ວນ ຫຼືສ່ວນຕ່າງໆຂອງຮ່າງກາຍທີ່ມີຈຸດປະສົງເພື່ອເປີດໃຊ້ການຄວບຄຸມ ຫຼືການຄວບຄຸມ. ແອັບພລິເຄຊັນອາດຈະໃຊ້ຂໍ້ມູນນີ້ເພື່ອມອບໝາຍການເຮັດວຽກໃຫ້ກັບການຄວບຄຸມອຸປະກອນ. ຕົວອະທິບາຍທາງກາຍະພາບເປັນຕົວອະທິບາຍແບບສະເພາະໃນຊັ້ນຮຽນທີ່ເປັນທາງເລືອກ ແລະອຸປະກອນສ່ວນໃຫຍ່ມີຜົນປະໂຫຍດໜ້ອຍໃນການນຳໃຊ້ມັນ. ອ້າງເຖິງ
ອຸປະກອນ USB HID Class ຕ້ອງການຊັບພະຍາກອນຈາກ Core
ແຕ່ລະຄັ້ງທີ່ທ່ານເພີ່ມ HID class instance ເຂົ້າໃນການຕັ້ງຄ່າ USB ຜ່ານການໂທໄປຫາຟັງຊັນ sl_usbd_hid_add_to_configuration(), ຊັບພະຍາກອນຕໍ່ໄປນີ້ຈະຖືກຈັດສັນຈາກຫຼັກ.
ຊັບພະຍາກອນ
Interfaces ການໂຕ້ຕອບທາງເລືອກ Endpoints ກຸ່ມ Interface
ປະລິມານ
1 1 1 (2 ຖ້າ interrupt OUT endpoint ຖືກເປີດໃຊ້ງານ) 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 Configuration
ສອງກຸ່ມຂອງພາລາມິເຕີການຕັ້ງຄ່າຖືກນໍາໃຊ້ເພື່ອກໍານົດຊັ້ນ HID:
ອຸປະກອນ USB HID Class Application-Specific Configurations USB Device HID Class Instance Configurations
ອຸປະກອນ USB HID Class Application-Specific Configurations
ທໍາອິດ, ເພື່ອໃຊ້ Silicon Labs USB ອຸປະກອນ HID class module, ປັບການຕັ້ງຄ່າເວລາລວບລວມ HID ກໍານົດຕາມຄວາມຕ້ອງການຂອງຄໍາຮ້ອງສະຫມັກຂອງທ່ານ. ພວກມັນຖືກຈັດກຸ່ມຄືນໃໝ່ພາຍໃນສ່ວນຫົວ sl_usbd_core_config.h file ພາຍໃຕ້ພາກ HID. ພວກເຂົາສາມາດແບ່ງອອກເປັນສອງສ່ວນ, ການຕັ້ງຄ່າປະລິມານແລະການຕັ້ງຄ່າຫນ້າວຽກ HID. ຈຸດປະສົງການຕັ້ງຄ່າປະລິມານແມ່ນເພື່ອແຈ້ງໃຫ້ໂມດູນອຸປະກອນ USB ກ່ຽວກັບຈໍານວນຫຼາຍຂອງ USB HID ວັດຖຸທີ່ຈະຈັດສັນ.
ຕາຕະລາງຂ້າງລຸ່ມນີ້ອະທິບາຍແຕ່ລະການຕັ້ງຄ່າກໍານົດ.
ຕາຕະລາງ – ການຕັ້ງຄ່າອຸປະກອນ USB HID ກໍານົດ
ສະຫງວນລິຂະສິດ © 2025 Silicon Laboratories. ສະຫງວນລິຂະສິດທັງໝົດ.
33/174
ເກີນ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 configur tions vi c ll ເຂົ້າໃນຟັງຊັນ sl_usbd_hid_add_to_configuration() . ກຳນົດຄ່າທັງໝົດຂອງ ID ລາຍງານເພື່ອຈັດສັນ.
ກຳນົດຄ່າທັງໝົດຂອງລາຍການ Push/Pop ເພື່ອຈັດສັນ.
ວຽກງານຈັບເວລາຈະຈັດການກັບການປະຕິບັດການ HID ທີ່ອີງໃສ່ເຄື່ອງຈັບເວລາທັງໝົດ. ການຕັ້ງຄ່ານີ້ຊ່ວຍໃຫ້ທ່ານສາມາດກໍານົດຂະຫນາດ stack (ໃນຈໍານວນ bytes). ບູລິມະສິດຂອງວຽກງານ 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 ພາກນີ້ກໍານົດການຕັ້ງຄ່າທີ່ກ່ຽວຂ້ອງກັບ instances ຊັ້ນ HID.
ການສ້າງຕົວແບບຊັ້ນ
ການສ້າງ instance class 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 ທີ່ໃຊ້ boot subclass ຈະຕ້ອງໃຊ້ຮູບແບບລາຍງານມາດຕະຖານ. ສໍາລັບຂໍ້ມູນເພີ່ມເຕີມກ່ຽວກັບລະຫັດ subclass, ເບິ່ງພາກ 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 . ສໍາລັບຂໍ້ມູນເພີ່ມເຕີມກ່ຽວກັບລະຫັດ subclass, ເບິ່ງພາກ 4.3 ຂອງການແກ້ໄຂສະເພາະ HID 1.11.
ລະຫັດປະເທດ
ID ຂອງລະຫັດປະເທດ. ຄ່າທີ່ເປັນໄປໄດ້ແມ່ນ:
SL_USBD_HID_COUNTRY_CODE_NOT_SUPPORTED
ສະຫງວນລິຂະສິດ © 2025 Silicon Laboratories. ສະຫງວນລິຂະສິດທັງໝົດ.
34/174
ເກີນ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_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_HID_FRENCH 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_ANDHID_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_COUNTRY_USBD_USID SL_USBD_HID_COUNTRY_CODE_TURKISH_F
ລະຫັດປະເທດລະບຸວ່າປະເທດໃດທີ່ຮາດແວຖືກແປເປັນທ້ອງຖິ່ນ. ຮາດແວສ່ວນໃຫຍ່ບໍ່ໄດ້ຖືກແປເປັນທ້ອງຖິ່ນ ແລະດັ່ງນັ້ນ 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 ຂອງຫນ້າທີ່ເອີ້ນຄືນເພື່ອຖືກເອີ້ນເມື່ອເຫດການ HID ເກີດຂື້ນ.
ສະຫງວນລິຂະສິດ © 2025 Silicon Laboratories. ສະຫງວນລິຂະສິດທັງໝົດ.
35/174
ເກີນview
ບໍ່ແມ່ນການເອີ້ນຄືນທັງໝົດແມ່ນບັງຄັບ ແລະຕົວຊີ້ null ( NULL ) ສາມາດຖືກສົ່ງຜ່ານໃນໂຄງສ້າງການເອີ້ນຄືນທີ່ຕົວແປເມື່ອການໂທກັບບໍ່ຈໍາເປັນ. ຕາຕະລາງຂ້າງລຸ່ມນີ້ອະທິບາຍແຕ່ລະຊ່ອງຂໍ້ມູນການຕັ້ງຄ່າທີ່ມີຢູ່ໃນໂຄງສ້າງການຕັ້ງຄ່ານີ້.
ຕາຕະລາງ – sl_usbd_hid_callbacks_t ໂຄງສ້າງການຕັ້ງຄ່າ
ທົ່ງນາ
ລາຍລະອຽດ
ລາຍເຊັນຟັງຊັນ
.enable .disable .get_report_desc
.get_phy_desc
.set_output_report .get_feature_report .set_feature_report
ຖືກເອີ້ນເມື່ອ instance ຫ້ອງຮຽນ USB ຖືກເປີດໃຊ້ຢ່າງສໍາເລັດຜົນ. ເອີ້ນວ່າເມື່ອ instance ຫ້ອງຮຽນ USB ປິດໃຊ້ງານ.
ເອີ້ນວ່າໃນລະຫວ່າງການສ້າງ HID Instance ເພື່ອຜ່ານຕົວອະທິບາຍບົດລາຍງານຂອງທ່ານ. ສໍາລັບແຕ່ລະຫນ້າທີ່ HID ຂອງທ່ານ, ທ່ານຕ້ອງໃຫ້ຕົວອະທິບາຍບົດລາຍງານ. ຕົວອະທິບາຍບົດລາຍງານຊີ້ບອກກັບເຈົ້າພາບວ່າບົດລາຍງານແຕ່ລະໄລຍະທີ່ຈະຖືກສົ່ງໄປໂດຍອຸປະກອນຄວນຈະຖືກວິເຄາະແນວໃດ. ການຂຽນລາຍລະອຽດບົດລາຍງານຂອງທ່ານເອງສາມາດເປັນການທ້າທາຍ, ແລະດັ່ງນັ້ນຈຶ່ງມີບາງແຫຼ່ງທີ່ຈະຊ່ວຍ. ນີ້ແມ່ນພຽງແຕ່ຫນ້າທີ່ການໂທກັບຄືນທີ່ບັງຄັບ. ເອີ້ນວ່າໃນລະຫວ່າງການສ້າງ HID Instance ເພື່ອຜ່ານຕົວອະທິບາຍທາງດ້ານຮ່າງກາຍຂອງທ່ານ. ຕົວອະທິບາຍທາງກາຍະພາບແມ່ນຕົວອະທິບາຍທີ່ໃຫ້ຂໍ້ມູນກ່ຽວກັບພາກສ່ວນສະເພາະ ຫຼືສ່ວນຕ່າງໆຂອງຮ່າງກາຍຂອງມະນຸດທີ່ກໍາລັງກະຕຸ້ນການຄວບຄຸມ ຫຼືການຄວບຄຸມ. ສໍາລັບຂໍ້ມູນເພີ່ມເຕີມກ່ຽວກັບການອະທິບາຍທາງດ້ານຮ່າງກາຍ, ເບິ່ງພາກ 6.2.3 ຂອງການປັບປຸງສະເພາະ HID 1.11. ຕົວອະທິບາຍທາງກາຍະພາບເປັນທາງເລືອກ ແລະເວລາສ່ວນໃຫຍ່ຖືກລະເລີຍ. buffer ຜ່ານທີ່ນີ້ສາມາດຖືກຕັ້ງເປັນ 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);
void app_usbd_hid_get_phy_desc(uint8_t class_nbr, const uint8_t *p_report_ptr, uint16_tp_report_len);
void app_usbd_hid_set_output_report(uint8_t class_nbr, uint8_t report_id, uint8_t *p_report_buf, uint16_t report_len); void app_usbd_hid_get_feature_report(uint8_t class_nbr, uint8_t report_id, uint8_t *p_report_buf, uint16_t report_len); void 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
ດຶງຂໍ້ມູນໂປຣໂຕຄໍທີ່ໃຊ້ຢູ່ໃນປັດຈຸບັນ.
void app_usbd_hid_get_protocol(uint8_t class_nbr, uint8_t *p_protocol);
.set_protocol
ຕັ້ງຄ່າໂປຣໂຕຄໍທີ່ໃຊ້ຢູ່ໃນປະຈຸບັນ.
void app_usbd_hid_set_protocol(uint8_t class_nbr, uint8_t protocol);
HID Class Report Descriptor Example
Silicon Labs' HID class sampຄໍາຮ້ອງສະຫມັກ le ໃຫ້ example ຂອງບົດລາຍງານ descriptor ສໍາລັບຫນູງ່າຍດາຍ. ອະດີດ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,
(3)
ສະຫງວນລິຂະສິດ © 2025 Silicon Laboratories. ສະຫງວນລິຂະສິດທັງໝົດ.
36/174
ເກີນ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
(11)};
(1) ຕາຕະລາງທີ່ເປັນຕົວແທນຂອງຕົວອະທິບາຍບົດລາຍງານຂອງຫນູແມ່ນເລີ່ມຕົ້ນໃນລັກສະນະທີ່ແຕ່ລະເສັ້ນກົງກັບລາຍການສັ້ນ. ອັນສຸດທ້າຍແມ່ນມາຈາກຄຳນຳໜ້າ 1-byte ແລະຂໍ້ມູນ 1-byte. ອ້າງເຖິງ viewed ໂດຍ host HID parser ໃນຮູບ - ລາຍງານເນື້ອໃນ descriptor ຈາກ host HID Parser View.
(2) ຫນ້າການນໍາໃຊ້ desktop ທົ່ວໄປຖືກນໍາໃຊ້.
(3) ພາຍໃນຫນ້າການນໍາໃຊ້ desktop ທົ່ວໄປ, ການນໍາໃຊ້ tag ແນະນໍາວ່າກຸ່ມການຄວບຄຸມແມ່ນສໍາລັບການຄວບຄຸມຫນູ. ການລວບລວມຫນູໂດຍປົກກະຕິປະກອບດ້ວຍສອງແກນ (X ແລະ Y) ແລະຫນຶ່ງ, ສອງ, ຫຼືສາມປຸ່ມ.
(4) ການເກັບກໍາຫນູແມ່ນໄດ້ເລີ່ມຕົ້ນ.
(5) ພາຍໃນການເກັບກໍາຫນູ, ການນໍາໃຊ້ tag ຊີ້ໃຫ້ເຫັນໂດຍສະເພາະວ່າການຄວບຄຸມຫນູເປັນຂອງການເກັບກໍາຕົວຊີ້. ການເກັບຕົວຊີ້ແມ່ນຄໍເລັກຊັນຂອງແກນທີ່ສ້າງມູນຄ່າເພື່ອຊີ້ບອກ, ຊີ້ບອກ, ຫຼືຊີ້ຈຸດປະສົງຂອງຜູ້ໃຊ້ໄປຫາແອັບພລິເຄຊັນ.
(6) ການເກັບຕົວຊີ້ແມ່ນເລີ່ມຕົ້ນ.
(7) ໜ້າການນຳໃຊ້ປຸ່ມກຳນົດລາຍການປ້ອນຂໍ້ມູນທີ່ປະກອບດ້ວຍສາມຊ່ອງຂໍ້ມູນ 1-ບິດ. ແຕ່ລະຊ່ອງຂໍ້ມູນ 1-ບິດສະແດງເຖິງປຸ່ມ mouse9s 1, 2 ແລະ 3 ຕາມລໍາດັບ ແລະສາມາດສົ່ງຄ່າເປັນ 0 ຫຼື 1 ໄດ້.
(8) ລາຍການປ້ອນຂໍ້ມູນສຳລັບໜ້າການນຳໃຊ້ປຸ່ມແມ່ນ padded ກັບ 13 bits ອື່ນໆ.
(9) ອື່ນ ໆ ຫນ້າການນໍາໃຊ້ Desktop ທົ່ວໄປແມ່ນຊີ້ໃຫ້ເຫັນສໍາລັບການອະທິບາຍຕໍາແຫນ່ງຫນູກັບແກນ X ແລະ Y. ລາຍການປ້ອນຂໍ້ມູນແມ່ນປະກອບດ້ວຍສອງຊ່ອງຂໍ້ມູນ 8-bit ທີ່ມີຄ່າສາມາດຢູ່ລະຫວ່າງ -127 ແລະ 127.
(10) ການເກັບຕົວຊີ້ຖືກປິດ.
(11) ການເກັບຫນູຖືກປິດ.
USB.org HID ໜ້າ
ສະຫງວນລິຂະສິດ © 2025 Silicon Laboratories. ສະຫງວນລິຂະສິດທັງໝົດ.
37/174
ເກີນview
USB Implementers Forum (USB-IF) ສະໜອງເຄື່ອງມືທີ່ເອີ້ນວ່າ “HID Descriptor Tool” ພ້ອມກັບຂໍ້ມູນອື່ນໆຢູ່ໃນຮູບແບບຕົວອະທິບາຍບົດລາຍງານ. ເບິ່ງhttp://www.usb.org/developers/hidpage/ ສໍາລັບຂໍ້ມູນເພີ່ມເຕີມ.
ອຸປະກອນ USB HID Class Programming Guide
ພາກນີ້ອະທິບາຍວິທີການນໍາໃຊ້ຫ້ອງຮຽນ 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() ໂດຍໃຊ້ arguments ເລີ່ມຕົ້ນ. ສໍາລັບຂໍ້ມູນເພີ່ມເຕີມກ່ຽວກັບອາກິວເມັນການຕັ້ງຄ່າທີ່ຈະສົ່ງໄປຫາ sl_usbd_hid_init() , ເບິ່ງອຸປະກອນ USB HID Class Application Specific Configurations .
Example – ໂທຫາ sl_usbd_hid_init()
ສະຖານະ sl_status_t;
ສະຖານະ = sl_usbd_hid_init(); ຖ້າ (ສະຖານະ ! SL_STATUS_OK) { /* ເກີດຄວາມຜິດພາດຂຶ້ນ. ການຈັດການຄວາມຜິດພາດຄວນຈະຖືກເພີ່ມໃສ່ທີ່ນີ້. */
}
ການເພີ່ມອຸປະກອນ USB HID Class Instance ໃສ່ອຸປະກອນຂອງທ່ານ
ເພື່ອເພີ່ມຟັງຊັນຊັ້ນ HID ໃສ່ອຸປະກອນຂອງທ່ານ, ທ່ານຕ້ອງສ້າງຕົວຢ່າງ, ຈາກນັ້ນເພີ່ມມັນໃສ່ການຕັ້ງຄ່າອຸປະກອນຂອງທ່ານ.
ການສ້າງ HID Class Instance
ສ້າງ HID class instance ໂດຍການເອີ້ນຟັງຊັນ sl_usbd_hid_create_instance() . ອະດີດample ຂ້າງລຸ່ມນີ້ສະແດງໃຫ້ເຫັນວິທີການສ້າງຟັງຊັນຫນູງ່າຍດາຍໂດຍຜ່ານ sl_usbd_hid_create_instance() ໂດຍໃຊ້ arguments ເລີ່ມຕົ້ນ. ສໍາລັບຂໍ້ມູນເພີ່ມເຕີມກ່ຽວກັບອາກິວເມັນການຕັ້ງຄ່າທີ່ຈະສົ່ງໄປຫາ sl_usbd_hid_create_instance(), ເບິ່ງອຸປະກອນ USB HID Class Instance Configurations .
Example – ການເພີ່ມຟັງຊັນເມົາສ໌ຜ່ານ sl_usbd_hid_create_instance()
ສະຫງວນລິຂະສິດ © 2025 Silicon Laboratories. ສະຫງວນລິຂະສິດທັງໝົດ.
38/174
ເກີນview
/* ຄົງທີ່ທົ່ວໂລກ. */ static const uint8_t app_usbd_hid_mouse_report_desc[] = {
SL_USBD_HID_GLOBAL_USAGE_PAGE + 1, SL_USBD_HID_USAGE_PAGE_GENERIC_DESKTOP_CONTROLS, SL_USBD_HID_LOCAL_USAGE + 1, SL_USBD_HID_CA_MOUSE, SL_USBD_HID_MAIN_1COLLECTION_MAIN_1 SL_USBD_HID_COLLECTION_APPLICATION, SL_USBD_HID_LOCAL_USAGE + 1, SL_USBD_HID_CP_POINTER, SL_USBD_HID_MAIN_COLLECTION + 1, SL_USBD_HID_COLLECTION_PHYSICAL, SL_USBDAL_AGE, SL_USBD_AGE, 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, SLANT_ID_US, SL_USBD_HID_GLOBAL_USAGE_PAGE + 1, SL_USBD_HID_USAGE_PAGE_GENERIC_DESKTOP_CONTROLS, SL_USBD_HID_LOCAL_USAGE + 1, SL_USBD_HID_DV_X, SL_USBD_HID_DVBD1_USID_USAGE, SL_USBD_HID_GLOBAL_LOG_MIN + 1, 0 81, SL_USBD_HID_GLOBAL_LOG_MAX + 1, 0 7F, SL_USBD_HID_GLOBAL_REPORT_SIZE + 1, 0 08, SL_USBD_HID_GLOBAL_0,0,08, SL_USBD_HID_GLOBAL_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), ຂະໜາດຂອງ(Export), 2u, true, &app_usbd_hid_callbacks, &class_nbr);
ສະຫງວນລິຂະສິດ © 2025 Silicon Laboratories. ສະຫງວນລິຂະສິດທັງໝົດ.
39/174
ເກີນview
/* ເກີດຄວາມຜິດພາດ. ການຈັດການຄວາມຜິດພາດຄວນຈະຖືກເພີ່ມໃສ່ທີ່ນີ້. */}
ການເພີ່ມ HID Class Instance ໃສ່ການຕັ້ງຄ່າອຸປະກອນຂອງເຈົ້າ ຫຼັງຈາກທີ່ເຈົ້າສ້າງ HID class instance, ເຈົ້າສາມາດເພີ່ມມັນໃສ່ການຕັ້ງຄ່າໂດຍການເອີ້ນຟັງຊັນ.
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,
(1)
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 ສະເໜີໜ້າທີ່ຕໍ່ໄປນີ້ເພື່ອຕິດຕໍ່ສື່ສານກັບເຈົ້າພາບ.
ຕາຕະລາງ – HID Communication API Summary
ຊື່ຟັງຊັນ
sl_usb d _hid _ re ad _sy nc() sl_usb d _hid _write _sy nc()
ການດໍາເນີນງານໄດ້ຮັບຂໍ້ມູນຈາກເຈົ້າພາບໂດຍຜ່ານຈຸດສິ້ນສຸດ OUT ຂັດຂວາງ. ຟັງຊັນນີ້ຖືກປິດກັ້ນ. ສົ່ງຂໍ້ມູນໄປຫາເຈົ້າພາບໂດຍຜ່ານ interrupt IN endpoint. ຟັງຊັນນີ້ຖືກປິດກັ້ນ.
ການສື່ສານ Synchronous ການສື່ສານ Synchronous ຫມາຍຄວາມວ່າການໂອນກໍາລັງຂັດຂວາງ. ເມື່ອການເອີ້ນຟັງຊັນ, ແອັບພລິເຄຊັນຈະປິດກັ້ນຈົນກວ່າການໂອນຍ້າຍຈະສຳເລັດດ້ວຍ ຫຼືບໍ່ມີຂໍ້ຜິດພາດ. ການໝົດເວລາສາມາດລະບຸໄດ້ເພື່ອຫຼີກເວັ້ນການລໍຖ້າຕະຫຼອດໄປ. ອະດີດample ຂ້າງລຸ່ມນີ້ສະແດງໃຫ້ເຫັນການອ່ານແລະຂຽນທີ່ໄດ້ຮັບຂໍ້ມູນຈາກໂຮດໂດຍໃຊ້ຈຸດສິ້ນສຸດ OUT ຂັດຂວາງແລະສົ່ງຂໍ້ມູນໄປຫາເຈົ້າພາບໂດຍໃຊ້ຈຸດສິ້ນສຸດຂອງ interrupt IN.
Example – synchronous HID ອ່ານ ແລະ ຂຽນ
__ALIGNED(4) uint8_t rx_buf[2];
__ALIGNED(4) uint8_t tx_buf[2];
uint32_t
xfer_len;
sl_status_t
ສະຖານະພາບ;
ສະຖານະ = sl_usbd_hid_read_sync(class_nbr,
(1)
(void *)rx_buf,
(2)
2u,
0u,
(3)
&xfer_len);
ຖ້າ (ສະຖານະ ! SL_STATUS_OK) {
/* ເກີດຄວາມຜິດພາດ. ການຈັດການຄວາມຜິດພາດຄວນຈະຖືກເພີ່ມໃສ່ທີ່ນີ້. */
}
ສະຫງວນລິຂະສິດ © 2025 Silicon Laboratories. ສະຫງວນລິຂະສິດທັງໝົດ.
40/174
ເກີນview
status =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(ສະຖານະ ! SL_STATUS_OK){/* ເກີດຄວາມຜິດພາດຂຶ້ນ. ການຈັດການຄວາມຜິດພາດຄວນຈະຖືກເພີ່ມໃສ່ທີ່ນີ້. */}
(1) ໝາຍເລກຊັ້ນຮຽນທີ່ສ້າງຂຶ້ນຈາກ sl_usbd_hid_create_instance() ສະໜອງການອ້າງອີງພາຍໃນສຳລັບຄລາສ HID ເພື່ອນຳທາງການໂອນໄປຫາຈຸດສິ້ນສຸດ OUT ຫຼື IN ທີ່ຖືກຂັດຈັງຫວະ.
(2) ແອັບພລິເຄຊັນຕ້ອງຮັບປະກັນວ່າ buffer ທີ່ສະໜອງໃຫ້ກັບຟັງຊັນມີຂະໜາດໃຫຍ່ພໍທີ່ຈະຮອງຮັບຂໍ້ມູນທັງໝົດ. ຖ້າບໍ່ດັ່ງນັ້ນ, ບັນຫາການຊິ້ງຂໍ້ມູນອາດຈະເກີດຂຶ້ນ. ພາຍໃນ, ການດໍາເນີນງານການອ່ານແມ່ນເຮັດດ້ວຍຈຸດສິ້ນສຸດການຄວບຄຸມຫຼືກັບຈຸດສິ້ນສຸດຂັດຂວາງ, ຂຶ້ນກັບການຄວບຄຸມການອ່ານທຸງທີ່ກໍານົດໄວ້ໃນເວລາທີ່ໂທຫາ sl_usbd_hid_create_instance() .
(3) ເພື່ອຫຼີກເວັ້ນສະຖານະການຂັດຂວາງທີ່ບໍ່ມີຂອບເຂດ, ເວລາຫມົດເວລາສະແດງອອກເປັນມິນລິວິນາທີສາມາດຖືກກໍານົດ. ຄ່າຂອງ 809 ເຮັດໃຫ້ວຽກງານຂອງແອັບພລິເຄຊັນລໍຖ້າຕະຫຼອດໄປ.
(4) ຄໍາຮ້ອງສະຫມັກສະຫນອງການ buffer ການຖ່າຍໂອນການເລີ່ມຕົ້ນ.
ວຽກງານລາຍງານການປ້ອນຂໍ້ມູນແຕ່ລະໄລຍະ HID
ເພື່ອບັນທຶກແບນວິດ, ເຈົ້າພາບມີຄວາມສາມາດປິດສຽງລາຍງານຈາກຈຸດສິ້ນສຸດ IN ທີ່ຂັດຂວາງໂດຍການຈໍາກັດຄວາມຖີ່ຂອງການລາຍງານ. ເພື່ອເຮັດສິ່ງນີ້, ເຈົ້າພາບຕ້ອງສົ່ງຄໍາຮ້ອງຂໍ SET_IDLE. ຫ້ອງຮຽນ HID ທີ່ປະຕິບັດໂດຍ Silicon Labs ປະກອບດ້ວຍວຽກງານພາຍໃນທີ່ເຄົາລົບການຈໍາກັດຄວາມຖີ່ຂອງການລາຍງານທີ່ທ່ານສາມາດສະຫມັກຂໍເອົາຫນຶ່ງຫຼືຫຼາຍບົດລາຍງານການປ້ອນຂໍ້ມູນ. Figure Periodic Input Reports Task ສະແດງໃຫ້ເຫັນການທໍາງານຂອງບົດລາຍງານການປ້ອນຂໍ້ມູນແຕ່ລະໄລຍະ.
ຮູບ – ວຽກການລາຍງານການປ້ອນຂໍ້ມູນແຕ່ລະໄລຍະ
(1) ອຸປະກອນໄດ້ຮັບການຮ້ອງຂໍ SET_IDLE. ການຮ້ອງຂໍນີ້ກໍານົດໄລຍະເວລາບໍ່ເຮັດວຽກສໍາລັບ ID ລາຍງານທີ່ໃຫ້. ສໍາລັບລາຍລະອຽດເພີ່ມເຕີມກ່ຽວກັບຄໍາຮ້ອງຂໍ SET_IDLE, ເບິ່ງ
(2) ໂຄງສ້າງ ID ບົດລາຍງານ (ຈັດສັນໃນລະຫວ່າງໄລຍະການເລີ່ມຕົ້ນຂອງຊັ້ນຮຽນ HID) ໄດ້ຖືກປັບປຸງດ້ວຍໄລຍະເວລາທີ່ບໍ່ມີປະໂຫຍດ. ຕົວນັບໄລຍະເວລາ idle ແມ່ນເລີ່ມຕົ້ນດ້ວຍຄ່າໄລຍະເວລາ idle. ໂຄງສ້າງ ID ບົດລາຍງານຖືກແຊກໃສ່ໃນຕອນທ້າຍຂອງບັນຊີລາຍຊື່ທີ່ເຊື່ອມຕໍ່ທີ່ປະກອບມີໂຄງສ້າງ ID ບົດລາຍງານ. ຄ່າໄລຍະເວລາ idle ແມ່ນສະແດງອອກໃນຫນ່ວຍ 4-ms ເຊິ່ງໃຫ້ໄລຍະ 4 ຫາ 1020 ms.
ສະຫງວນລິຂະສິດ © 2025 Silicon Laboratories. ສະຫງວນລິຂະສິດທັງໝົດ.
41/174
ເກີນview
ຖ້າໄລຍະເວລາບໍ່ເຮັດວຽກແມ່ນຫນ້ອຍກວ່າໄລຍະການລົງຄະແນນສຽງຂອງຈຸດສິ້ນສຸດ IN ທີ່ຂັດຂວາງ, ບົດລາຍງານຈະຖືກສ້າງຂຶ້ນໃນຊ່ວງເວລາຂອງການເລືອກຕັ້ງ.
(3) ທຸກໆ 4 ms, ວຽກງານລາຍງານການປ້ອນຂໍ້ມູນແຕ່ລະໄລຍະຈະເບິ່ງລາຍການ ID ລາຍງານການປ້ອນຂໍ້ມູນ. ສໍາລັບແຕ່ລະ ID ບົດລາຍງານການປ້ອນ, ວຽກງານປະຕິບັດຫນຶ່ງໃນສອງການດໍາເນີນງານທີ່ເປັນໄປໄດ້. ໄລຍະເວລາຂອງໄລຍະເວລາວຽກງານແມ່ນກົງກັບຫນ່ວຍງານ 4-ms ທີ່ໃຊ້ສໍາລັບໄລຍະເວລາ idle. ຖ້າບໍ່ມີການຮ້ອງຂໍ SET_IDLE ໄດ້ຖືກສົ່ງໂດຍເຈົ້າພາບ, ບັນຊີລາຍຊື່ ID ລາຍງານການປ້ອນຂໍ້ມູນແມ່ນຫວ່າງເປົ່າແລະວຽກງານບໍ່ມີຫຍັງທີ່ຈະດໍາເນີນການ. ຂະບວນການເຮັດວຽກພຽງແຕ່ລາຍງານ ID ທີ່ແຕກຕ່າງຈາກ 0 ແລະມີໄລຍະເວລາບໍ່ເຮັດວຽກຫຼາຍກວ່າ 0.
(4) ສໍາລັບ ID ບົດລາຍງານການປ້ອນຂໍ້ມູນ, ວຽກງານຈະກວດສອບວ່າໄລຍະເວລາ idle ໄດ້ຜ່ານໄປ. ຖ້າໄລຍະເວລາບໍ່ເຮັດວຽກບໍ່ໄດ້ຜ່ານໄປ, ຕົວນັບຈະຖືກຫຼຸດລົງ ແລະບໍ່ມີການສົ່ງລາຍງານການປ້ອນຂໍ້ມູນໄປຫາເຈົ້າພາບ.
(5) ຖ້າໄລຍະເວລາ idle ໄດ້ຜ່ານໄປ (ຄື, ຕົວນັບໄລຍະເວລາ idle ໄດ້ເຖິງສູນ), ບົດລາຍງານການປ້ອນຂໍ້ມູນຈະຖືກສົ່ງໄປຫາເຈົ້າພາບໂດຍການໂທຫາຟັງຊັນ sl_usbd_hid_write_sync() ຜ່ານຈຸດສິ້ນສຸດຂອງ interrupt IN.
(6) ຂໍ້ມູນບົດລາຍງານການປ້ອນຂໍ້ມູນທີ່ສົ່ງໂດຍວຽກງານແມ່ນມາຈາກ buffer ຂໍ້ມູນພາຍໃນທີ່ຈັດສັນໃຫ້ແຕ່ລະບົດລາຍງານການປ້ອນຂໍ້ມູນທີ່ໄດ້ອະທິບາຍໄວ້ໃນຕົວອະທິບາຍບົດລາຍງານ. ວຽກຂອງແອັບພລິເຄຊັນສາມາດໂທຫາຟັງຊັນ sl_usbd_hid_write_sync() ເພື່ອສົ່ງລາຍງານການປ້ອນຂໍ້ມູນ. ຫຼັງຈາກການສົ່ງຂໍ້ມູນບົດລາຍງານການປ້ອນຂໍ້ມູນ, sl_usbd_hid_write_sync() ປັບປຸງ buffer ພາຍໃນທີ່ກ່ຽວຂ້ອງກັບ ID ບົດລາຍງານການປ້ອນຂໍ້ມູນກັບຂໍ້ມູນທີ່ສົ່ງມາ. ຈາກນັ້ນ, ວຽກງານລາຍງານການປ້ອນຂໍ້ມູນແຕ່ລະໄລຍະຈະສົ່ງຂໍ້ມູນລາຍງານການປ້ອນຂໍ້ມູນດຽວກັນສະເໝີຫຼັງຈາກແຕ່ລະໄລຍະ idle ຜ່ານໄປ ແລະ ຈົນກ່ວາວຽກງານຂອງແອັບພລິເຄຊັນຈະອັບເດດຂໍ້ມູນໃນ buffer ພາຍໃນ. ມີບາງກົນໄກການລັອກເພື່ອຫຼີກເວັ້ນການສໍ້ລາດບັງຫຼວງຂອງບົດລາຍງານການປ້ອນຂໍ້ມູນ ID ໃນກໍລະນີຂອງການດັດແກ້ທີ່ເກີດຂື້ນໃນເວລາທີ່ແນ່ນອນຂອງການສົ່ງຕໍ່ທີ່ເຮັດໂດຍວຽກງານບົດລາຍງານການປ້ອນຂໍ້ມູນແຕ່ລະໄລຍະ.
ສະຫງວນລິຂະສິດ © 2025 Silicon Laboratories. ສະຫງວນລິຂະສິດທັງໝົດ.
42/174
ເກີນview
ເກີນview
ອຸປະກອນ USB MSC Class
ອຸປະກອນ USB MSC Class Overview ອຸປະກອນ USB MSC Class ຕ້ອງການຊັບພະຍາກອນຈາກອຸປະກອນ Core USB MSC Class Configuration USB Device MSC Class Programming Guide USB Device MSC Class Storage Drivers
ພາກສ່ວນນີ້ອະທິບາຍຫ້ອງຮຽນອຸປະກອນການເກັບຮັກສາມະຫາຊົນ (MSC) ສະຫນັບສະຫນູນໂດຍ Silicon Labs USB Device. MSC ແມ່ນໂປໂຕຄອນທີ່ຊ່ວຍໃຫ້ການໂອນຂໍ້ມູນລະຫວ່າງອຸປະກອນ USB ແລະໂຮດ. ຂໍ້ມູນທີ່ຖືກໂອນແມ່ນສິ່ງໃດກໍຕາມທີ່ສາມາດໄດ້ຮັບການເກັບຮັກສາເອເລັກໂຕຣນິກເຊັ່ນ: ໂຄງການປະຕິບັດ, ລະຫັດແຫຼ່ງ, ເອກະສານ, ຮູບພາບ, ຂໍ້ມູນການຕັ້ງຄ່າ, ຫຼືຂໍ້ມູນຂໍ້ມູນຕົວອັກສອນຫຼືຕົວເລກອື່ນໆ. ອຸປະກອນ USB ປະກົດວ່າເປັນຂະຫນາດກາງການເກັບຮັກສາພາຍນອກກັບເຈົ້າພາບ, ເຮັດໃຫ້ການໂອນຂອງ files ຜ່ານລາກແລະວາງ.
A file ລະບົບກໍານົດວິທີການ files ຖືກຈັດຢູ່ໃນສື່ການເກັບຮັກສາ. ຂໍ້ມູນຈໍາເພາະຂອງຫ້ອງຮຽນ USB mass storage ບໍ່ຕ້ອງການໂດຍສະເພາະ file ລະບົບທີ່ຈະໃຊ້ໃນອຸປະກອນທີ່ສອດຄ່ອງກັບ. ແທນທີ່ຈະ, ມັນສະຫນອງການໂຕ້ຕອບງ່າຍດາຍເພື່ອອ່ານແລະຂຽນຂະແຫນງການຂອງຂໍ້ມູນໂດຍໃຊ້ຊຸດຄໍາສັ່ງໂປ່ງໃສຂອງລະບົບຄອມພິວເຕີຂະຫນາດນ້ອຍ (SCSI). ດັ່ງນັ້ນ, ລະບົບປະຕິບັດການອາດຈະປະຕິບັດຕໍ່ USB drive ຄືກັບຮາດໄດ, ແລະສາມາດຈັດຮູບແບບມັນດ້ວຍອັນໃດກໍ່ໄດ້ file ລະບົບທີ່ພວກເຂົາມັກ.
ຫ້ອງຮຽນອຸປະກອນການເກັບຮັກສາມະຫາຊົນ USB ສະຫນັບສະຫນູນສອງໂປໂຕຄອນການຂົນສົ່ງ, ດັ່ງຕໍ່ໄປນີ້:
ການຂົນສົ່ງຫຼາຍເທົ່ານັ້ນ (BOT) ການຄວບຄຸມ / ຈໍານວນຫລາຍ / ຂັດຈັງຫວະ (CBI) ການຂົນສົ່ງ (ໃຊ້ສໍາລັບ floppy disk drives)
ຫ້ອງຮຽນອຸປະກອນການເກັບຮັກສາມະຫາຊົນປະຕິບັດຊຸດຄໍາສັ່ງໂປ່ງໃສ SCSI ໂດຍໃຊ້ໂປໂຕຄອນ BOT ເທົ່ານັ້ນ, ຊຶ່ງຫມາຍຄວາມວ່າພຽງແຕ່ຈຸດສິ້ນສຸດສ່ວນໃຫຍ່ເທົ່ານັ້ນທີ່ຈະຖືກນໍາໃຊ້ເພື່ອສົ່ງຂໍ້ມູນແລະຂໍ້ມູນສະຖານະ. ການປະຕິບັດ MSC ສະຫນັບສະຫນູນຫຼາຍຫນ່ວຍງານທີ່ມີເຫດຜົນ.
ການປະຕິບັດ MSC ແມ່ນປະຕິບັດຕາມຂໍ້ກໍານົດດັ່ງຕໍ່ໄປນີ້:
Universal Serial Bus Mass Storage Class Specification Overview, ສະບັບປັບປຸງ 1.3 ວັນທີ 5 ກັນຍາ 2008. Universal Serial Bus Mass Storage Class Bulk-Only Transport, Revision 1.0 ວັນທີ 31 ກັນຍາ 1999.
ອຸປະກອນ USB MSC aCl ss ເກີນview
Protocol Endpoints Class ຮ້ອງຂໍການໂຕ້ຕອບລະບົບຄອມພິວເຕີຂະໜາດນ້ອຍ (SCSI)
ພິທີການ
ໃນພາກນີ້, ພວກເຮົາຈະປຶກສາຫາລືກ່ຽວກັບອະນຸສັນຍາການຂົນສົ່ງເທົ່ານັ້ນ (BOT) ຂອງຊັ້ນເກັບຮັກສາມະຫາຊົນ. ອະນຸສັນຍາການຂົນສົ່ງຫຼາຍເທົ່ານັ້ນມີສາມອັນtages:
ການຂົນສົ່ງຄໍາສັ່ງ ການຂົນສົ່ງຂໍ້ມູນ ການຂົນສົ່ງສະຖານະພາບ
ຄໍາສັ່ງເກັບຮັກສາມະຫາຊົນຖືກສົ່ງໂດຍເຈົ້າພາບໂດຍຜ່ານໂຄງສ້າງທີ່ເອີ້ນວ່າ Command Block Wrapper (CBW). ສໍາລັບຄໍາສັ່ງທີ່ຕ້ອງການການຂົນສົ່ງຂໍ້ມູນ stage, ເຈົ້າພາບຈະພະຍາຍາມສົ່ງຫຼືໄດ້ຮັບຈໍານວນ bytes ທີ່ແນ່ນອນຈາກອຸປະກອນຕາມທີ່ລະບຸໄວ້ໂດຍຄວາມຍາວແລະທຸງຂອງ CBW. ຫຼັງຈາກການຂົນສົ່ງຂໍ້ມູນ stage, ເຈົ້າພາບພະຍາຍາມຮັບເອົາ Command Status Wrapper (CSW) ຈາກອຸປະກອນທີ່ລາຍລະອຽດສະຖານະຂອງຄໍາສັ່ງເຊັ່ນດຽວກັນກັບຂໍ້ມູນຕົກຄ້າງໃດໆ (ຖ້າ
ສະຫງວນລິຂະສິດ © 2025 Silicon Laboratories. ສະຫງວນລິຂະສິດທັງໝົດ.
43/174
ເກີນview
ໃດ). ສໍາລັບຄໍາສັ່ງທີ່ບໍ່ປະກອບມີການຂົນສົ່ງຂໍ້ມູນ stage, ເຈົ້າພາບພະຍາຍາມຮັບ CSW ໂດຍກົງຫຼັງຈາກ CBW ຖືກສົ່ງ. ອະນຸສັນຍາມີລາຍລະອຽດຢູ່ໃນຮູບ – MSC Protocol.
ຮູບ – ອະນຸສັນຍາ MSC
ຈຸດຈົບ
ໃນດ້ານອຸປະກອນ, ໃນການປະຕິບັດຕາມຂໍ້ກໍານົດຂອງ BOT, MSC ແມ່ນປະກອບດ້ວຍຈຸດສິ້ນສຸດດັ່ງຕໍ່ໄປນີ້: ຄູ່ຂອງຈຸດສິ້ນສຸດການຄວບຄຸມ IN ແລະ OUT ທີ່ເອີ້ນວ່າຈຸດສິ້ນສຸດເລີ່ມຕົ້ນ. ຄູ່ຂອງຈຸດສິ້ນສຸດ IN ແລະ OUT ຫຼາຍ.
ຕາຕະລາງຂ້າງລຸ່ມນີ້ຊີ້ໃຫ້ເຫັນເຖິງການນໍາໃຊ້ທີ່ແຕກຕ່າງກັນຂອງຈຸດສິ້ນສຸດ.
ຕາຕະລາງ – ການນຳໃຊ້ຈຸດສິ້ນສຸດ MSC
ຈຸດສິ້ນສຸດ
ຄວບຄຸມໃນການຄວບຄຸມ OUT ຫຼາຍໃນຈໍານວນຫຼາຍອອກ
ທິດທາງ
ອຸປະກອນທີ່ຈະເປັນເຈົ້າພາບກັບອຸປະກອນອຸປະກອນການເປັນເຈົ້າພາບກັບອຸປະກອນ
ການນໍາໃຊ້
Enumeration ແລະ MSC class-specific requests Enumeration and MSC class-specific requests ສົ່ງ CSW ແລະຂໍ້ມູນຮັບ CBW ແລະຂໍ້ມູນ
ການຮ້ອງຂໍຫ້ອງຮຽນ
ມີສອງຄໍາຮ້ອງຂໍການຄວບຄຸມທີ່ກໍານົດໄວ້ສໍາລັບ MSC BOT protocol. ຄໍາຮ້ອງຂໍເຫຼົ່ານີ້ແລະຄໍາອະທິບາຍຂອງພວກມັນມີລາຍລະອຽດຢູ່ໃນຕາຕະລາງຂ້າງລຸ່ມນີ້.
ຕາຕະລາງ – ການຮ້ອງຂໍຫ້ອງເກັບຮັກສາມະຫາຊົນ
ການຮ້ອງຂໍຫ້ອງຮຽນ
ຣີເຊັດບ່ອນເກັບຂໍ້ມູນຂະໜາດໃຫຍ່ເທົ່ານັ້ນ
ລາຍລະອຽດ
ການຮ້ອງຂໍນີ້ຖືກໃຊ້ເພື່ອຣີເຊັດອຸປະກອນການເກັບຂໍ້ມູນ ແລະສ່ວນຕິດຕໍ່ທີ່ກ່ຽວຂ້ອງຂອງມັນ. ການຮ້ອງຂໍນີ້ກຽມພ້ອມອຸປະກອນທີ່ຈະໄດ້ຮັບຕັນຄໍາສັ່ງຕໍ່ໄປ.
ສະຫງວນລິຂະສິດ © 2025 Silicon Laboratories. ສະຫງວນລິຂະສິດທັງໝົດ.
44/174
ເກີນview
ການຮ້ອງຂໍຫ້ອງຮຽນ
ລາຍລະອຽດ
ໄດ້ສູງສຸດຄໍາຮ້ອງຂໍນີ້ຖືກນໍາໃຊ້ເພື່ອສົ່ງຄືນຈໍານວນຫນ່ວຍໂລຈິກສູງສຸດ (LUN) ສະຫນັບສະຫນູນໂດຍອຸປະກອນ. ຕົວຢ່າງample, ກ
ລູນ
ອຸປະກອນທີ່ມີ LUN 0 ແລະ LUN 1 ຈະກັບຄືນຄ່າຂອງ 1. ອຸປະກອນທີ່ມີຫນ່ວຍບໍລິການ logical ດຽວຈະກັບຄືນມາ 0 ຫຼືຢຸດ
ຮ້ອງຂໍ. ຄ່າສູງສຸດທີ່ສາມາດສົ່ງຄືນໄດ້ແມ່ນ 15.
ການໂຕ້ຕອບລະບົບຄອມພິວເຕີຂະໜາດນ້ອຍ SCSI
ໃນລະດັບການໂຕ້ຕອບຂອງໂຄງການ, ອຸປະກອນ MSC ປະຕິບັດຫນຶ່ງໃນມາດຕະຖານການເກັບຮັກສາສື່ສານ protocols, ເຊັ່ນ SCSI ແລະ SFF-8020i (ATAPI). "ການໂຕ້ຕອບການຂຽນໂປລແກລມ" ກໍານົດວ່າໂປໂຕຄອນໃດຖືກປະຕິບັດ, ແລະຊ່ວຍໃຫ້ລະບົບປະຕິບັດການໂຮດໂຫລດໄດເວີອຸປະກອນທີ່ເຫມາະສົມສໍາລັບການຕິດຕໍ່ສື່ສານກັບອຸປະກອນເກັບຮັກສາ USB. SCSI ແມ່ນໂປຣໂຕຄໍທົ່ວໄປທີ່ສຸດທີ່ໃຊ້ກັບອຸປະກອນເກັບຂໍ້ມູນ USB MSC. ພວກເຮົາສະຫນອງການປະຕິບັດສໍາລັບ MSC SCSI subclass ທີ່ຜູ້ໃຊ້ GSDK ຂອງພວກເຮົາສາມາດນໍາໃຊ້ອອກຈາກກ່ອງ.
SCSI ແມ່ນຊຸດມາດຕະຖານສໍາລັບການຈັດການການສື່ສານລະຫວ່າງຄອມພິວເຕີແລະອຸປະກອນຕໍ່ຂ້າງ. ມາດຕະຖານເຫຼົ່ານີ້ປະກອບມີຄໍາສັ່ງ, ໂປໂຕຄອນ, ການໂຕ້ຕອບໄຟຟ້າແລະການໂຕ້ຕອບທາງ optical. ອຸປະກອນເກັບຂໍ້ມູນທີ່ໃຊ້ສ່ວນຕິດຕໍ່ຮາດແວອື່ນໆ, ເຊັ່ນ USB, ໃຊ້ຄໍາສັ່ງ SCSI ສໍາລັບການໄດ້ຮັບຂໍ້ມູນອຸປະກອນ / ໂຮດແລະຄວບຄຸມການເຮັດວຽກຂອງອຸປະກອນແລະການໂອນຕັນຂອງຂໍ້ມູນໃນສື່ການເກັບຮັກສາ.
ຄໍາສັ່ງ SCSI ກວມເອົາປະເພດອຸປະກອນແລະຫນ້າທີ່ອັນກວ້າງຂວາງແລະດັ່ງນັ້ນ, ອຸປະກອນຕ້ອງການຊຸດຍ່ອຍຂອງຄໍາສັ່ງເຫຼົ່ານີ້. ໂດຍທົ່ວໄປ, ຄໍາສັ່ງຕໍ່ໄປນີ້ແມ່ນຈໍາເປັນສໍາລັບການສື່ສານພື້ນຖານ:
ຄວາມສາມາດໃນການອ່ານການສອບຖາມ (10) ອ່ານ (10) ຮ້ອງຂໍຫນ່ວຍການທົດສອບ SENSE ພ້ອມທີ່ຈະຂຽນ (10)
ອຸປະກອນ USB MSC Class ຕ້ອງການຊັບພະຍາກອນຈາກ Core
ແຕ່ລະຄັ້ງທີ່ທ່ານເພີ່ມ MSC class instance ເຂົ້າໃນການຕັ້ງຄ່າ USB ຜ່ານຟັງຊັນ sl_usbd_msc_add_to_configuration(), ຊັບພະຍາກອນຕໍ່ໄປນີ້ຈະຖືກຈັດສັນຈາກຫຼັກ.
ຊັບພະຍາກອນ
Interfaces ການໂຕ້ຕອບທາງເລືອກ Endpoints ກຸ່ມ Interface
ປະລິມານ
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, ເນື່ອງຈາກຈຸດສິ້ນສຸດຖືກເປີດພຽງແຕ່ເມື່ອການຕັ້ງຄ່າຖືກຕັ້ງໂດຍແມ່ຂ່າຍ, ທ່ານພຽງແຕ່ຕ້ອງຄໍານຶງເຖິງຈໍານວນຈຸດສິ້ນສຸດທີ່ຕ້ອງການສໍາລັບຕົວຢ່າງຂອງຊັ້ນຮຽນ.
ການຕັ້ງຄ່າອຸປະກອນ USB MSC Class
ສອງກຸ່ມຂອງຕົວກໍານົດການກໍາຫນົດຄ່າແມ່ນຖືກນໍາໃຊ້ເພື່ອ configure ຫ້ອງຮຽນ MSC:
ອຸປະກອນ USB MSC Class Application-Specific Configurations USB Device MSC Class Logical Unit Configuration
ອຸປະກອນ USB MSC Class Application-Specific Configurations
Class Compile-Time Configurations Class Creation Instance
ສະຫງວນລິຂະສິດ © 2025 Silicon Laboratories. ສະຫງວນລິຂະສິດທັງໝົດ.
45/174
ເກີນview
Class Compile-Time Configurations
Silicon Labs USB Device MSC class ແລະ SCSI subclass ແມ່ນສາມາດຕັ້ງຄ່າໄດ້ໃນເວລາລວບລວມຂໍ້ມູນຜ່ານ #defines ທີ່ຕັ້ງຢູ່ໃນ sl_usbd_core_config.h file.
ຕາຕະລາງ – ຄົງທີ່ການຕັ້ງຄ່າທົ່ວໄປ
ຊື່ການຕັ້ງຄ່າ
ລາຍລະອຽດ
SL_USBD_MSC_CLASS_INST ຈໍານວນຂອງຕົວຢ່າງຊັ້ນຮຽນທີ່ທ່ານຈະຈັດສັນໂດຍການໂທຫາຫນ້າທີ່
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 bits.
_LBA_EN
SL_USBD_MSC_DATA_BUFF ຂະໜາດຂອງຂໍ້ມູນ buffer ຕໍ່ class instance ໃນ bytes ER_SIZE
ຄ່າເລີ່ມຕົ້ນ
2
1
2
0
512
ການສ້າງຕົວແບບຊັ້ນ
ການສ້າງອຸປະກອນ USB MSC SCSI class instance ແມ່ນເຮັດໄດ້ໂດຍການເອີ້ນຟັງຊັນ sl_usbd_msc_scsi_create_instance(). ຟັງຊັນນີ້ໃຊ້ເວລາຫນຶ່ງ argument ການຕັ້ງຄ່າທີ່ອະທິບາຍຂ້າງລຸ່ມນີ້.
p_scsi_callbacks
p_scsi_callbacks ແມ່ນຕົວຊີ້ໄປຫາໂຄງສ້າງການຕັ້ງຄ່າຂອງປະເພດ sl_usbd_msc_scsi_callbacks_t . ນອກເໜືອໄປຈາກການເຊື່ອມຕໍ່/ຕັດການເຊື່ອມຕໍ່ຂອງອຸປະກອນ usb ທົ່ວໄປ, ມັນໃຫ້ຫ້ອງຮຽນ MSC ດ້ວຍຊຸດຟັງຊັນໂທກັບທາງເລືອກທີ່ຖືກເອີ້ນເມື່ອເຫດການເກີດຂຶ້ນໃນຫົວໜ່ວຍໂລຈິກ. ຕົວຊີ້ null ( NULL ) ສາມາດຖືກສົ່ງຕໍ່ກັບການໂຕ້ຖຽງນີ້ຖ້າບໍ່ຈໍາເປັນໂທຫາ.
ຕາຕະລາງຂ້າງລຸ່ມນີ້ອະທິບາຍແຕ່ລະຊ່ອງຂໍ້ມູນການຕັ້ງຄ່າທີ່ມີຢູ່ໃນໂຄງສ້າງການຕັ້ງຄ່ານີ້.
ຕາຕະລາງ – sl_usbd_msc_scsi_callbacks_t ໂຄງສ້າງການຕັ້ງຄ່າ
ທົ່ງນາ
ລາຍລະອຽດ
.ເປີດໃຊ້
ຖືກເອີ້ນເມື່ອ instance ຫ້ອງຮຽນ USB ຖືກເປີດໃຊ້ຢ່າງສໍາເລັດຜົນ.
.disable ເອີ້ນວ່າໃນເວລາທີ່ instance ຫ້ອງຮຽນ USB ປິດການໃຊ້ງານ.
ຟັງຊັນ .host_eject ເອີ້ນວ່າເມື່ອຫົວໜ່ວຍໂລຈິກຖືກຂັບໄລ່ອອກຈາກໂຮດ.
ລາຍເຊັນຟັງຊັນ
void app_usbd_msc_scsi_enable(uint8_t class_nbr);
app_usbd_msc_scsi_disable(uint8_t class_nbr); void app_usbd_msc_scsi_host_eject(uint8_t class_nbr, uint8_t lu_nbr);
ອຸປະກອນ USB MSC Class Logical Unit Configuration
ການເພີ່ມຫົວໜ່ວຍໂລຈິກໃສ່ instance class MSC ແມ່ນເຮັດໄດ້ໂດຍການເອີ້ນຟັງຊັນ sl_usbd_msc_lun_add() . ຟັງຊັນນີ້ໃຊ້ເວລາຫນຶ່ງ argument ການຕັ້ງຄ່າທີ່ອະທິບາຍຂ້າງລຸ່ມນີ້.
p_lu_info
p_lu_info ແມ່ນຕົວຊີ້ໄປຫາໂຄງສ້າງຂອງປະເພດ sl_usbd_msc_scsi_lun_info_t . ຈຸດປະສົງຂອງມັນແມ່ນເພື່ອສະຫນອງຂໍ້ມູນກ່ຽວກັບຫນ່ວຍບໍລິການຢ່າງມີເຫດຜົນກັບຫ້ອງ MSC.
ຕາຕະລາງຂ້າງລຸ່ມນີ້ອະທິບາຍແຕ່ລະຊ່ອງຂໍ້ມູນການຕັ້ງຄ່າທີ່ມີຢູ່ໃນໂຄງສ້າງການຕັ້ງຄ່ານີ້.
ຕາຕະລາງ – sl_usbd_msc_scsi_lun_info_t ໂຄງສ້າງການຕັ້ງຄ່າ
ສະຫງວນລິຂະສິດ © 2025 Silicon Laboratories. ສະຫງວນລິຂະສິດທັງໝົດ.
46/174
ເກີນview
ພາກສະຫນາມ
ລາຍລະອຽດ
ພາກສະຫນາມ
.scsi_lun_api_p tr
ລາຍລະອຽດ
ຊີ້ໄປຫາ media driver API ທີ່ຈະຈັດການຫນ່ວຍງານທີ່ມີເຫດຜົນນີ້. ເບິ່ງອຸປະກອນ USB MSC Class Storage 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 ຂອງເຈົ້າພາບ (ຈິງ) ຫຼືບໍ່ (ຜິດ).
ອຸປະກອນ USB ຄູ່ມືການດໍາເນີນໂຄງການ MSC Class
ພາກນີ້ອະທິບາຍວິທີການໃຊ້ຫ້ອງຮຽນ MSC.
ການເລີ່ມຕົ້ນອຸປະກອນ USB MSC Class ການເພີ່ມອຸປະກອນ USB MSC SCSI Class Instance ໃສ່ອຸປະກອນ USB ອຸປະກອນຂອງທ່ານ MSC Class Logical Unit Handling
ກຳລັງເລີ່ມຕົ້ນອຸປະກອນ USB MSC Class
ເພື່ອເພີ່ມຟັງຊັນ MSC SCSI class ໃຫ້ກັບອຸປະກອນຂອງທ່ານ, ທໍາອິດໃຫ້ເລີ່ມຕົ້ນຫ້ອງຮຽນພື້ນຖານ MSC ແລະ subclass SCSI ໂດຍການໂທຫາຟັງຊັນ sl_usbd_msc_init() ແລະ sl_usbd_msc_scsi_init() .
ອະດີດample ຂ້າງລຸ່ມນີ້ສະແດງໃຫ້ເຫັນວິທີການໂທຫາ 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 class ໂດຍການເອີ້ນຟັງຊັນ sl_usbd_msc_scsi_create_instance() .
ອະດີດample ຂ້າງລຸ່ມນີ້ສະແດງໃຫ້ເຫັນວິທີການໂທຫາ sl_usbd_msc_scsi_create_instance() ໂດຍໃຊ້ arguments ເລີ່ມຕົ້ນ. ສໍາລັບຂໍ້ມູນເພີ່ມເຕີມກ່ຽວກັບອາກິວເມັນການຕັ້ງຄ່າທີ່ຈະສົ່ງໄປຫາ sl_usbd_msc_scsi_create_instance(), ເບິ່ງອຸປະກອນ USB MSC Class Application Specific Configurations .
Example – ໂທຫາ sl_usbd_ msc_scsi_create_instance()
ສະຫງວນລິຂະສິດ © 2025 Silicon Laboratories. ສະຫງວນລິຂະສິດທັງໝົດ.
47/174
ເກີນview
uint8_t class_nbr; ສະຖານະ sl_status_t;
sl_usbd_msc_scsi_callbacks_t app_usbd_msc_scsi_callbacks = { .enable = NULL, .disable = NULL, .host_eject = NULL };
ສະຖານະ = sl_usbd_msc_scsi_create_instance(&app_usbd_msc_scsi_callbacks,0 &class_nbr);
ຖ້າ (ສະຖານະ ! SL_STATUS_OK) { /* ເກີດຄວາມຜິດພາດຂຶ້ນ. ການຈັດການຄວາມຜິດພາດຄວນຈະຖືກເພີ່ມໃສ່ທີ່ນີ້. */ }
ການເພີ່ມ MSC Class Instance ໃສ່ການຕັ້ງຄ່າອຸປະກອນຂອງທ່ານ
ຫຼັງຈາກທີ່ເຈົ້າໄດ້ສ້າງຕົວຢ່າງ MSC class ແລ້ວ, ທ່ານສາມາດເພີ່ມມັນໃສ່ການຕັ້ງຄ່າໂດຍການໂທຫາຟັງຊັນ
sl_usbd_msc_add_to_configuration() .
ອະດີດample ຂ້າງລຸ່ມນີ້ສະແດງໃຫ້ເຫັນວິທີການໂທຫາ sl_usbd_msc_scsi_add_to_configuration() ໂດຍໃຊ້ argument ເລີ່ມຕົ້ນ.
Example – ໂທຫາ sl_usbd_ msc_scsi_add_to_configuration()
ສະຖານະ sl_status_t;
ສະຖານະ = sl_usbd_msc_scsi_add_to_configuration(class_nbr,
(1)
config_nbr_fs);
(2)
ຖ້າ (ສະຖານະ ! SL_STATUS_OK) {
/* ເກີດຄວາມຜິດພາດ. ການຈັດການຄວາມຜິດພາດຄວນຈະຖືກເພີ່ມໃສ່ທີ່ນີ້. */
}
(1) ຈໍານວນຫ້ອງຮຽນທີ່ຈະເພີ່ມໃສ່ການຕັ້ງຄ່າທີ່ສົ່ງຄືນໂດຍ sl_usbd_msc_scsi_create_instance() . (32) ຕົວເລກການຕັ້ງຄ່າ (ໃນນີ້ເພີ່ມມັນໃສ່ການຕັ້ງຄ່າເຕັມຄວາມໄວ).
ອຸປະກອນ USB MSC Class Logical Unitling
ການເພີ່ມຫົວໜ່ວຍໂລຈິກ ການແນບ/ຖອດສື່ການເກັບຮັກສາ
ການເພີ່ມຫົວໜ່ວຍໂລຈິກ
ເມື່ອເພີ່ມຫນ່ວຍງານຢ່າງມີເຫດຜົນໃສ່ກັບ MSC SCSI class instance ຂອງທ່ານ, ມັນຕ້ອງຖືກຜູກມັດກັບສື່ເກັບຮັກສາ (RAMDisk, SD card, flash memory, ແລະອື່ນໆ). ຫ້ອງຮຽນ MSC ໃຊ້ໄດເວີບ່ອນເກັບຂໍ້ມູນເພື່ອຕິດຕໍ່ສື່ສານກັບສື່ການເກັບຮັກສາ. ໄດເວີນີ້ຈະຕ້ອງໄດ້ຮັບການສະຫນອງໃນເວລາທີ່ເພີ່ມຫນ່ວຍບໍລິການຕາມເຫດຜົນ.
ອະດີດample ຂ້າງລຸ່ມນີ້ສະແດງໃຫ້ເຫັນວິທີການເພີ່ມຫນ່ວຍງານຢ່າງມີເຫດຜົນຜ່ານ sl_usbd_msc_scsi_lun_add() .
Example – ການເພີ່ມຫົວໜ່ວຍໂລຈິກຜ່ານ sl_usbd_msc_scsi_lun_add()
ສະຫງວນລິຂະສິດ © 2025 Silicon Laboratories. ສະຫງວນລິຂະສິດທັງໝົດ.
48/174
ເກີນview
sl_usbd_msc_scsi_lun_t *lu_object_ptr = NULL;
sl_usbd_msc_scsi_lun_info_t lu_info;
sl_status_t
ສະຖານະພາບ;
lu_info.sl_usbd_msc_scsi_lun_api_t = &app_usbd_scsi_storage_block_device_api;
lu_info.vendor_id_ptr
= “ຫ້ອງທົດລອງຊິລິຄອນ”;
lu_info.product_id_ptr
= “ປິດ ອຸ ປະ ກອນ example”;
lu_info.product_revision_level = 0x1000u;
lu_info.is_read_only
= ບໍ່ຖືກຕ້ອງ;
ສະຖານະ = sl_usbd_msc_scsi_lun_add(class_nbr, &lu_info, &lu_object_ptr);
ຖ້າ (ສະຖານະ ! SL_STATUS_OK) { /* ເກີດຄວາມຜິດພາດຂຶ້ນ. ການຈັດການຄວາມຜິດພາດຄວນຈະຖືກເພີ່ມໃສ່ທີ່ນີ້. */ }
ການຕິດຕັ້ງ / ຖອນສື່ມວນຊົນການເກັບຮັກສາ
ຫຼັງຈາກຫນ່ວຍບໍລິການໂລຈິກໄດ້ຖືກເພີ່ມ, ສື່ການເກັບຮັກສາຕ້ອງຖືກຕິດຢູ່ເພື່ອໃຫ້ມີຢູ່ຈາກຝ່າຍເຈົ້າພາບ. ຫ້ອງຮຽນ MSC ສະເໜີສອງໜ້າທີ່ເພື່ອຄວບຄຸມການເຊື່ອມໂຍງສື່ການເກັບຂໍ້ມູນກັບຫົວໜ່ວຍເຫດຜົນ: sl_usbd_msc_scsi_lun_attach() ແລະ sl_usbd_msc_scsi_lun_detach() . ຟັງຊັນເຫຼົ່ານີ້ອະນຸຍາດໃຫ້ທ່ານເຮັດຕາມການຖອດອຸປະກອນການເກັບຂໍ້ມູນເພື່ອເຂົ້າໃຊ້ຄືນໃຫມ່ຈາກແອັບພລິເຄຊັນທີ່ຝັງໄວ້ຖ້າຈໍາເປັນ.
ອະດີດample ຂ້າງລຸ່ມນີ້ສະແດງໃຫ້ເຫັນວິທີການນໍາໃຊ້ຟັງຊັນ 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) { /* ເກີດຄວາມຜິດພາດຂຶ້ນ. ການຈັດການຄວາມຜິດພາດຄວນຈະຖືກເພີ່ມໃສ່ທີ່ນີ້. */
}
…
(1)
ສະຖານະ = sl_usbd_msc_scsi_lun_detach(lu_object_ptr); ຖ້າ (ສະຖານະ ! SL_STATUS_OK) {
/* ເກີດຄວາມຜິດພາດ. ການຈັດການຄວາມຜິດພາດຄວນຈະຖືກເພີ່ມໃສ່ທີ່ນີ້. */
}
…
(2)
ສະຖານະ = sl_usbd_msc_scsi_lun_attach(lu_object_ptr) ຖ້າ (ສະຖານະ ! SL_STATUS_OK) {
/* ເກີດຄວາມຜິດພາດ. ການຈັດການຄວາມຜິດພາດຄວນຈະຖືກເພີ່ມໃສ່ທີ່ນີ້. */
}
…
(3)
(1) ຈາກປັດຈຸບັນນີ້, ຖ້າຫາກວ່າອຸປະກອນ MSC ໄດ້ເຊື່ອມຕໍ່ກັບແມ່ຂ່າຍ, ມີເດຍການເກັບຮັກສາແມ່ນສາມາດເຂົ້າເຖິງ.
(2) ຖ້າອຸປະກອນ MSC ເຊື່ອມຕໍ່ກັບແມ່ຂ່າຍ, ປະຈຸບັນສື່ຈະປາກົດວ່າບໍ່ສາມາດໃຊ້ໄດ້. ໃນເວລານີ້, ການປະຕິບັດງານສາມາດຖືກປະຕິບັດຢູ່ໃນສື່ຈາກແອັບພລິເຄຊັນທີ່ຝັງໄວ້.
(3) ອີກເທື່ອຫນຶ່ງ, ຖ້າອຸປະກອນ MSC ເຊື່ອມຕໍ່ກັບເຈົ້າພາບ, ສື່ການເກັບຮັກສາຈະປາກົດເປັນການເຊື່ອມຕໍ່.
ອຸປະກອນ USB MSC Class Storage Drivers
ອຸປະກອນ USB MSC Class ຕ້ອງການໄດເວີບ່ອນເກັບຂໍ້ມູນເພື່ອຕິດຕໍ່ສື່ສານກັບສື່ເກັບຂໍ້ມູນ. ໃນປັດຈຸບັນ, Silicon Labs ບໍ່ໄດ້ສະເຫນີຄົນຂັບລົດ.
ສະຫງວນລິຂະສິດ © 2025 Silicon Laboratories. ສະຫງວນລິຂະສິດທັງໝົດ.
49/174
ເກີນ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 ຫົວໜ່ວຍກັບ sl_usbd_msc_scsi_lun_ad. ເບິ່ງພາກອຸປະກອນ USB MSC SCSI API ສໍາລັບລາຍລະອຽດເພີ່ມເຕີມກ່ຽວກັບໂຄງສ້າງ. ການປະຕິບັດໄດເວີການເກັບຮັກສາສາມາດງ່າຍດາຍຄືກັບ array ຂອງຂະແຫນງການໃນ RAM. ຂະຫນາດຂະແຫນງການປົກກະຕິ (ເຊັ່ນ, ຂະຫນາດຕັນ) ແມ່ນ 512 ສໍາລັບອຸປະກອນການເກັບຮັກສາມວນຊົນ, ແລະ 2048 ສໍາລັບ CD-ROM.
ສະຫງວນລິຂະສິດ © 2025 Silicon Laboratories. ສະຫງວນລິຂະສິດທັງໝົດ.
50/174
ເກີນview
ເກີນview
ປະເພດຜູ້ຂາຍອຸປະກອນ USB
ປະເພດຜູ້ຂາຍອຸປະກອນ USB ຫຼາຍກວ່າview USB Device Vendor Class ຕ້ອງການຊັບພະຍາກອນຈາກ Core USB Device Vendor Class Configuration USB Device Vendor Class ຄູ່ມືການດໍາເນີນໂຄງການ ຊັ້ນຜູ້ຂາຍອະນຸຍາດໃຫ້ທ່ານສ້າງອຸປະກອນສະເພາະຜູ້ຂາຍທີ່ສາມາດປະຕິບັດອະນຸສັນຍາທີ່ເປັນເຈົ້າຂອງ. ມັນຂຶ້ນກັບຄູ່ຂອງຈຸດສິ້ນສຸດຫຼາຍເພື່ອໂອນຂໍ້ມູນລະຫວ່າງແມ່ຂ່າຍ ແລະອຸປະກອນ. ການໂອນຂໍ້ມູນຈໍານວນຫລາຍແມ່ນສະດວກສໍາລັບການໂອນຂໍ້ມູນຈໍານວນຫລາຍທີ່ບໍ່ມີໂຄງສ້າງແລະສະຫນອງການແລກປ່ຽນຂໍ້ມູນທີ່ເຊື່ອຖືໄດ້ໂດຍໃຊ້ກົນໄກການຊອກຄົ້ນຫາຄວາມຜິດພາດແລະພະຍາຍາມໃຫມ່. ນອກເໜືອໄປຈາກຈຸດສິ້ນສຸດຫຼາຍອັນ, ຊັ້ນຜູ້ຂາຍຍັງສາມາດໃຊ້ຄູ່ທາງເລືອກຂອງຈຸດສິ້ນສຸດທີ່ຂັດຂວາງໄດ້. ລະບົບປະຕິບັດການ (OS) ໃດກໍ່ຕາມສາມາດເຮັດວຽກກັບຊັ້ນ Vendor ໂດຍໃຫ້ OS ມີໄດເວີເພື່ອຈັດການກັບຊັ້ນ Vendor. ອີງຕາມ OS, ໄດເວີສາມາດເປັນ native ຫຼືຜູ້ຂາຍສະເພາະ. ຕົວຢ່າງເຊັ່ນ, ພາຍໃຕ້ Microsoft Windows®, ແອັບພລິເຄຊັນຂອງທ່ານໂຕ້ຕອບກັບໄດເວີ WinUSB ທີ່ໃຫ້ໂດຍ Microsoft ເພື່ອຕິດຕໍ່ສື່ສານກັບອຸປະກອນຂອງຜູ້ຂາຍ.
ປະເພດຜູ້ຂາຍອຸປະກອນ USB ຫຼາຍກວ່າview
ຮູບ - ສະຖາປັດຕະຍະກໍາທົ່ວໄປລະຫວ່າງ Windows Host ແລະ Vendor Class ສະແດງໃຫ້ເຫັນສະຖາປັດຕະຍະພາບທົ່ວໄປລະຫວ່າງເຈົ້າພາບແລະອຸປະກອນໂດຍໃຊ້ຊັ້ນ Vendor. ໃນນີ້ exampດັ່ງນັ້ນ, ລະບົບປະຕິບັດການໂຮດແມ່ນ MS Windows.
ຮູບ – ສະຖາປັດຕະຍະກຳທົ່ວໄປລະຫວ່າງ MS Windows Host ແລະ Vendor Class
ໃນດ້ານ MS Windows, ແອັບພລິເຄຊັນຕິດຕໍ່ສື່ສານກັບອຸປະກອນຂອງຜູ້ຂາຍໂດຍການພົວພັນກັບຫ້ອງສະຫມຸດ USB. ຫ້ອງສະໝຸດ, ເຊັ່ນ: libusb, ສະເໜີ API ເພື່ອຈັດການອຸປະກອນ ແລະທໍ່ທີ່ກ່ຽວຂ້ອງຂອງມັນ, ແລະເພື່ອຕິດຕໍ່ສື່ສານກັບອຸປະກອນໂດຍຜ່ານການຄວບຄຸມ, ຈໍານວນຫລາຍ ແລະຈຸດສິ້ນສຸດລົບກວນ.
ໃນດ້ານອຸປະກອນ, ຊັ້ນຜູ້ຂາຍແມ່ນປະກອບດ້ວຍຈຸດສິ້ນສຸດຕໍ່ໄປນີ້:
ຄູ່ຂອງຈຸດສິ້ນສຸດການຄວບຄຸມ IN ແລະ OUT ເອີ້ນວ່າຈຸດສິ້ນສຸດເລີ່ມຕົ້ນ. ຄູ່ຂອງຈຸດສິ້ນສຸດ IN ແລະ OUT ຫຼາຍ.
ສະຫງວນລິຂະສິດ © 2025 Silicon Laboratories. ສະຫງວນລິຂະສິດທັງໝົດ.
51/174
ເກີນview
ຄູ່ຂອງຈຸດສິ້ນສຸດ IN ແລະ OUT ຂັດຈັງຫວະ. ຄູ່ນີ້ແມ່ນທາງເລືອກ. ຕາຕະລາງຂ້າງລຸ່ມນີ້ຊີ້ໃຫ້ເຫັນເຖິງການນໍາໃຊ້ຈຸດສິ້ນສຸດທີ່ແຕກຕ່າງກັນ:
ຕາຕະລາງ – ການນຳໃຊ້ຈຸດສິ້ນສຸດຂອງກຸ່ມຜູ້ຂາຍ
ທິດທາງຈຸດສິ້ນສຸດ
ຄວບຄຸມ IN
ການຄວບຄຸມ
ອອກ
ຮວມຢູ່ໃນ
Device-tohost
> ອຸປະກອນແມ່ຂ່າຍ
Device-tohost
ອອກຫຼາຍ
ຂັດຂວາງ IN
ຂັດຂວາງ
ອອກ
ເຈົ້າພາບ-ອຸປະກອນ
Device-tohost
ເຈົ້າພາບ-ອຸປະກອນ
ການນໍາໃຊ້
ການຮ້ອງຂໍມາດຕະຖານສໍາລັບການນັບແລະຄໍາຮ້ອງຂໍສະເພາະຜູ້ຂາຍ.
ການຮ້ອງຂໍມາດຕະຖານສໍາລັບການນັບແລະຄໍາຮ້ອງຂໍສະເພາະຜູ້ຂາຍ.
ການສື່ສານຂໍ້ມູນດິບ. ຂໍ້ມູນສາມາດໄດ້ຮັບການສ້າງໂຄງປະກອບຕາມອະນຸສັນຍາທີ່ເປັນເຈົ້າຂອງ.
ການສື່ສານຂໍ້ມູນດິບ. ຂໍ້ມູນສາມາດໄດ້ຮັບການສ້າງໂຄງປະກອບຕາມອະນຸສັນຍາທີ່ເປັນເຈົ້າຂອງ.
ການສື່ສານຂໍ້ມູນດິບ ຫຼືການແຈ້ງເຕືອນ. ຂໍ້ມູນສາມາດໄດ້ຮັບການສ້າງໂຄງປະກອບຕາມອະນຸສັນຍາທີ່ເປັນເຈົ້າຂອງ. ການສື່ສານຂໍ້ມູນດິບ ຫຼືການແຈ້ງເຕືອນ. ຂໍ້ມູນສາມາດໄດ້ຮັບການສ້າງໂຄງປະກອບຕາມອະນຸສັນຍາທີ່ເປັນເຈົ້າຂອງ.
ແອັບພລິເຄຊັ່ນອຸປະກອນສາມາດໃຊ້ຈຸດສິ້ນສຸດເປັນຊຸດ ແລະລົບກວນເພື່ອສົ່ງ ຫຼືຮັບຂໍ້ມູນໄປຫາ ຫຼືຈາກໂຮສ. ມັນພຽງແຕ່ສາມາດໃຊ້ຈຸດສິ້ນສຸດເລີ່ມຕົ້ນເພື່ອຖອດລະຫັດການຮ້ອງຂໍສະເພາະຜູ້ຂາຍທີ່ສົ່ງໂດຍເຈົ້າພາບ. ການຮ້ອງຂໍມາດຕະຖານຖືກຈັດການພາຍໃນໂດຍຊັ້ນ Core ຂອງ Silicon Labs USB ອຸປະກອນ.
USB Device Class Vendor ຕ້ອງການຊັບພະຍາກອນຈາກ Core
ແຕ່ລະຄັ້ງທີ່ທ່ານເພີ່ມ vendor class instance ກັບການຕັ້ງຄ່າຜ່ານຟັງຊັນ sl_usbd_vendor_add_to_configuration(), ຊັບພະຍາກອນຕໍ່ໄປນີ້ຈະຖືກຈັດສັນຈາກຫຼັກ.
ຊັບພະຍາກອນ
Interfaces ການໂຕ້ຕອບທາງເລືອກ Endpoints ກຸ່ມ Interface
ປະລິມານ
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
ສອງກຸ່ມຂອງຕົວກໍານົດການກໍາຫນົດຄ່າແມ່ນຖືກນໍາໃຊ້ເພື່ອ configure ຊັ້ນຜູ້ຂາຍ:
ການກຳນົດຄ່າສະເພາະຂອງແອັບພລິເຄຊັນ USB ຜູ້ຂາຍອຸປະກອນ USB
ການຕັ້ງຄ່າສະເພາະຂອງແອັບພລິເຄຊັນຂອງຜູ້ຂາຍອຸປະກອນ USB
ທໍາອິດ, ເພື່ອໃຊ້ອຸປະກອນ Silicon Labs USB ໂມດູນຊັ້ນຂາຍຂອງຜູ້ຂາຍ, ປັບການຕັ້ງຄ່າການລວບລວມເວລາຂອງຜູ້ຂາຍກໍານົດຕາມຄວາມຕ້ອງການຂອງຄໍາຮ້ອງສະຫມັກຂອງທ່ານ. ພວກມັນຖືກຈັດກຸ່ມຄືນໃໝ່ພາຍໃນສ່ວນຫົວ sl_usbd_core_config.h file ພາຍໃຕ້ພາກສ່ວນຜູ້ຂາຍ. ຈຸດປະສົງການຕັ້ງຄ່າປະລິມານແມ່ນເພື່ອແຈ້ງໃຫ້ໂມດູນອຸປະກອນ USB ກ່ຽວກັບຈໍານວນຫຼາຍຂອງວັດຖຸ USB ຜູ້ຂາຍທີ່ຈະຈັດສັນ.
ຕາຕະລາງຂ້າງລຸ່ມນີ້ອະທິບາຍແຕ່ລະການຕັ້ງຄ່າກໍານົດ.
ສະຫງວນລິຂະສິດ © 2025 Silicon Laboratories. ສະຫງວນລິຂະສິດທັງໝົດ.
52/174
ເກີນview
ຕາຕະລາງ – ກໍານົດການຕັ້ງຄ່າຜູ້ຂາຍອຸປະກອນ USB
ຊື່ການຕັ້ງຄ່າ
ລາຍລະອຽດ
ຄ່າເລີ່ມຕົ້ນ
SL_USBD_VENDOR_CLASS_INSTANCE_QUANTITY ຈຳນວນຂອງຊັ້ນຮຽນທີ່ທ່ານຈະຈັດສັນໂດຍການໂທຫາ 2 ຟັງຊັນ sl_usbd_vendor_create_instance() .
SL_USBD_VENDOR_CONFIGURATION_QUANTITY ຈຳນວນການກຳນົດຄ່າ. ຊັ້ນຜູ້ຂາຍສາມາດເປັນ 1 ເພີ່ມໃສ່ຫນຶ່ງຫຼືຫຼາຍການຕັ້ງຄ່າໂດຍຜ່ານການໂທຫາຟັງຊັນ sl_usbd_vendor_add_to_configuration() .
ການຕັ້ງຄ່າອຸປະກອນ USB Class Instance ຜູ້ຂາຍ
ພາກສ່ວນນີ້ກໍານົດການຕັ້ງຄ່າທີ່ກ່ຽວຂ້ອງກັບຕົວຢ່າງຂອງຊັ້ນຜູ້ຂາຍ.
Class Instance ການສ້າງ intr_en ໄລຍະຫ່າງ p_vendor_callbacks
ການສ້າງຕົວແບບຊັ້ນ
ການສ້າງຕົວຢ່າງຂອງ Vendor class ແມ່ນເຮັດໄດ້ໂດຍການເອີ້ນຟັງຊັນ sl_usbd_vendor_create_instance() , ເຊິ່ງໃຊ້ເວລາສາມອາກິວເມັນການຕັ້ງຄ່າທີ່ອະທິບາຍຂ້າງລຸ່ມນີ້.
intr_en
Boolean ທີ່ຊີ້ບອກວ່າຄວນເພີ່ມຄູ່ຂອງຈຸດສິ້ນສຸດລົບກວນຫຼືບໍ່.
ມູນຄ່າ
ຜິດແທ້
ລາຍລະອຽດ
ຄູ່ຂອງຈຸດສິ້ນສຸດ IN/OUT ຈະຖືກເພີ່ມ ແລະເຮັດໃຫ້ສາມາດໃຊ້ໄດ້ກັບແອັບພລິເຄຊັນທີ່ຝັງໄວ້. ບໍ່ມີຈຸດສິ້ນສຸດລົບກວນຈະຖືກເພີ່ມ. ຈະມີພຽງຄູ່ຂອງຈຸດສິ້ນສຸດເຂົ້າ/ອອກເປັນຊຸດເທົ່ານັ້ນ.
ໄລຍະຫ່າງ
ຖ້າທ່ານຕັ້ງ intr_en ເປັນ true, ທ່ານສາມາດລະບຸໄລຍະການສຳຫຼວດຈຸດສິ້ນສຸດທີ່ລົບກວນ (ເປັນມິນລິວິນາທີ). ຖ້າທ່ານຕັ້ງ intr_en ເປັນ false, ທ່ານສາມາດຕັ້ງໄລຍະຫ່າງເປັນ 0 ຍ້ອນວ່າມັນຈະຖືກລະເລີຍໂດຍຫ້ອງຮຽນ.
p_vendor_callbacks
p_vendor_callbacks ແມ່ນຕົວຊີ້ໄປຫາຕົວແປໂຄງສ້າງການເອີ້ນຄືນ. ທີ່ທ່ານສາມາດກໍານົດເພື່ອຈັດການກັບການຮ້ອງຂໍການຄວບຄຸມສະເພາະຂອງຫ້ອງຮຽນ. ຖ້າຫາກວ່າທ່ານບໍ່ໄດ້ນໍາໃຊ້ຄໍາຮ້ອງສະຫມັກສະເພາະຫ້ອງໃດຫນຶ່ງຫຼືຕ້ອງການເປີດ / ປິດການທໍາງານການແຈ້ງການ, ທ່ານສາມາດຕັ້ງມັນເປັນ NULL .
ອະດີດample ຂ້າງລຸ່ມນີ້ສະຫນອງລາຍເຊັນທີ່ຄາດໄວ້ຂອງຕົວຈັດການຄໍາຮ້ອງຂໍສະເພາະໃນຊັ້ນຮຽນຂອງທ່ານ.
Example – ລາຍເຊັນຂອງຟັງຊັນການຮ້ອງຂໍສະເພາະປະເພດ
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. ສະຫງວນລິຂະສິດທັງໝົດ.
53/174
ເກີນview
(2) ຊີ້ໄປຫາຄໍາຮ້ອງຂໍການຕິດຕັ້ງທີ່ໄດ້ຮັບຈາກເຈົ້າພາບ.
ຄູ່ມືການດໍາເນີນໂຄງການຂອງຜູ້ຂາຍອຸປະກອນ USB
ພາກນີ້ອະທິບາຍວິທີການນໍາໃຊ້ຊັ້ນຜູ້ຂາຍ. ການເລີ່ມຕົ້ນຫ້ອງຮຽນຜູ້ຂາຍອຸປະກອນ 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 ປະເພດ Vendor Class Instance ໃສ່ອຸປະກອນຂອງທ່ານ
ເພື່ອເພີ່ມການເຮັດວຽກຂອງຊັ້ນຜູ້ຂາຍໃສ່ອຸປະກອນຂອງທ່ານ, ກ່ອນອື່ນ ໝົດ ທ່ານຕ້ອງສ້າງຕົວຢ່າງ, ຈາກນັ້ນເພີ່ມມັນໃສ່ການຕັ້ງຄ່າອຸປະກອນຂອງທ່ານ.
ການສ້າງ Vendor Class Instance ການເພີ່ມ Vendor Class Instance ໃນການຕັ້ງຄ່າອຸປະກອນຂອງທ່ານ
ການສ້າງ Instance Class ຂອງຜູ້ຂາຍ
ສ້າງຕົວຢ່າງຂອງ Vendor class ໂດຍການໂທຫາຟັງຊັນ sl_usbd_vendor_create_instance() . ອະດີດample ຂ້າງລຸ່ມນີ້ສະແດງໃຫ້ເຫັນວິທີການໂທຫາ sl_usbd_vendor_create_instance() ໂດຍໃຊ້ arguments ເລີ່ມຕົ້ນ. ສໍາລັບຂໍ້ມູນເພີ່ມເຕີມກ່ຽວກັບອາກິວເມັນການຕັ້ງຄ່າທີ່ຈະສົ່ງໄປຫາ sl_usbd_vendor_create_instance() , ເບິ່ງ USB Device Vendor Class Instance Configurations .
Example – ໂທຫາ sl_usbd_vendor_create_instance()
uint8_t class_nbr; ສະຖານະ sl_status_t;
ສະຖານະ = sl_usbd_vendor_create_instance(false,
(1)
0u,
(2)
app_usbd_vendor_callback_functions, (3)
&class_nbr);
ຖ້າ (ສະຖານະ ! SL_STATUS_OK) {
/* ເກີດຄວາມຜິດພາດ. ການຈັດການຄວາມຜິດພາດຄວນຈະຖືກເພີ່ມໃສ່ທີ່ນີ້. */
}
(1) ບໍ່ມີຈຸດສິ້ນສຸດລົບກວນກັບຕົວຢ່າງຂອງຊັ້ນຮຽນນີ້. (2) ໄລຍະຫ່າງຖືກລະເລີຍເນື່ອງຈາກຈຸດສິ້ນສຸດຂັດຂວາງຖືກປິດໃຊ້ງານ.
ສະຫງວນລິຂະສິດ © 2025 Silicon Laboratories. ສະຫງວນລິຂະສິດທັງໝົດ.
54/174
ເກີນview
(3) ຟັງຊັນໂທກັບທີ່ເປັນສ່ວນຫນຶ່ງຂອງຄໍາຮ້ອງສະຫມັກຂອງທ່ານທີ່ຈັດການກັບຄໍາຮ້ອງຂໍຂອງປະເພດຜູ້ຂາຍສະເພາະ. ເບິ່ງການສື່ສານໂດຍໃຊ້ USB Device Vendor Class ສໍາລັບຂໍ້ມູນເພີ່ມເຕີມ. ການເພີ່ມ Vendor Class Instance ໃສ່ການຕັ້ງຄ່າອຸປະກອນຂອງເຈົ້າ ຫຼັງຈາກທີ່ເຈົ້າສ້າງຕົວແບບຊັ້ນຜູ້ຂາຍ, ທ່ານສາມາດເພີ່ມມັນໃສ່ການຕັ້ງຄ່າໂດຍການໂທຫາຟັງຊັນ USBD_Vendor_ConfigAdd(). ອະດີດample ຂ້າງລຸ່ມນີ້ສະແດງໃຫ້ເຫັນວິທີການໂທຫາ sl_usbd_vendor_add_to_configuration() ໂດຍໃຊ້ argument ເລີ່ມຕົ້ນ.
Example – ໂທຫາ sl_usbd_vendor_add_to_configuration()
ສະຖານະ sl_status_t;
ສະຖານະ = sl_usbd_vendor_add_to_configuration(class_nbr,
(1)
config_nbr_fs);
(2)
ຖ້າ (ສະຖານະ ! SL_STATUS_OK) {
/* ເກີດຄວາມຜິດພາດ. ການຈັດການຄວາມຜິດພາດຄວນຈະຖືກເພີ່ມໃສ່ທີ່ນີ້. */
}
(1) ຈໍານວນຫ້ອງຮຽນທີ່ຈະເພີ່ມໃສ່ການຕັ້ງຄ່າທີ່ສົ່ງຄືນໂດຍ sl_usbd_vendor_create_instance() . (2) ຕົວເລກການຕັ້ງຄ່າ (ໃນນີ້ເພີ່ມມັນໃສ່ການຕັ້ງຄ່າເຕັມຄວາມໄວ).
ການສື່ສານໂດຍໃຊ້ USB Device Vendor Class
ການສື່ສານແບບ synchronous ທົ່ວໄປ ການສື່ສານແບບ Asynchronous ຜູ້ຂາຍຄໍາຮ້ອງຂໍໂດຍທົ່ວໄປ ຊັ້ນຜູ້ຂາຍສະເຫນີຫນ້າທີ່ຕໍ່ໄປນີ້ເພື່ອຕິດຕໍ່ສື່ສານກັບເຈົ້າພາບ. ສໍາລັບລາຍລະອຽດເພີ່ມເຕີມກ່ຽວກັບພາລາມິເຕີຂອງຟັງຊັນ, ເບິ່ງ API ຜູ້ຂາຍອຸປະກອນ USB.
ຕາຕະລາງ – ສະຫຼຸບ 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 _ nc() 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 d _v te t_asy nc
()
sl_usb d _v e nd o r_write _inte rrup t_asy nc
()
ການດໍາເນີນງານໄດ້ຮັບຂໍ້ມູນຈາກໂຮດຜ່ານຈຸດສິ້ນສຸດ OUT ຫຼາຍ. ຟັງຊັນນີ້ຖືກປິດກັ້ນ. ສົ່ງຂໍ້ມູນໄປຍັງໂຮດຜ່ານຈຸດສິ້ນສຸດເປັນຊຸດ. ຟັງຊັນນີ້ຖືກປິດກັ້ນ. ຮັບຂໍ້ມູນຈາກໂຮສຜ່ານຈຸດສິ້ນສຸດ OUT ຫຼາຍ. ຟັງຊັນນີ້ແມ່ນບໍ່ຂັດຂວາງ. ສົ່ງຂໍ້ມູນໄປຍັງໂຮດຜ່ານຈຸດສິ້ນສຸດເປັນຊຸດ. ຟັງຊັນນີ້ແມ່ນບໍ່ຂັດຂວາງ. ຮັບຂໍ້ມູນຈາກໂຮສຜ່ານຈຸດສິ້ນສຸດ OUT ລົບກວນ. ຟັງຊັນນີ້ຖືກປິດກັ້ນ. ສົ່ງຂໍ້ມູນໄປຍັງໂຮດຜ່ານ interrupt IN endpoint. ຟັງຊັນນີ້ຖືກປິດກັ້ນ. ຮັບຂໍ້ມູນຈາກໂຮສຜ່ານຈຸດສິ້ນສຸດ OUT ລົບກວນ. ຫນ້າທີ່ນີ້ແມ່ນບໍ່ແມ່ນ
ການຂັດຂວາງ.
ສົ່ງຂໍ້ມູນໄປຍັງໂຮດຜ່ານ interrupt IN endpoint. ຟັງຊັນນີ້ແມ່ນບໍ່ຂັດຂວາງ.
ການຮ້ອງຂໍຂອງຜູ້ຂາຍຍັງເປັນອີກວິທີຫນຶ່ງທີ່ຈະຕິດຕໍ່ກັບເຈົ້າພາບ. ເມື່ອຈັດການຄໍາຮ້ອງຂໍຂອງຜູ້ຂາຍທີ່ສົ່ງໂດຍເຈົ້າພາບ, ແອັບພລິເຄຊັນສາມາດຮັບຫຼືສົ່ງຂໍ້ມູນຈາກຫຼືໄປຫາເຈົ້າພາບໂດຍໃຊ້ຈຸດສິ້ນສຸດການຄວບຄຸມ; ທ່ານຈະຕ້ອງສະໜອງການເອີ້ນຄືນແອັບພລິເຄຊັນທີ່ສົ່ງຜ່ານເປັນພາລາມິເຕີຂອງ sl_usbd_vendor_create_instance() . ການສື່ສານ synchronous
ສະຫງວນລິຂະສິດ © 2025 Silicon Laboratories. ສະຫງວນລິຂະສິດທັງໝົດ.
55/174
ເກີນview
ການສື່ສານ synchronous ຫມາຍຄວາມວ່າການໂອນກໍາລັງຂັດຂວາງ. ເມື່ອຟັງຊັນຖືກເອີ້ນ, ແອັບພລິເຄຊັນຈະປິດກັ້ນຈົນກວ່າການໂອນຍ້າຍຈະສຳເລັດດ້ວຍ ຫຼືບໍ່ມີຂໍ້ຜິດພາດ. ການໝົດເວລາສາມາດລະບຸໄດ້ເພື່ອຫຼີກເວັ້ນການລໍຖ້າຕະຫຼອດໄປ. ອະດີດample ຂ້າງລຸ່ມນີ້ສະແດງໃຫ້ເຫັນການອ່ານແລະຂຽນທີ່ໄດ້ຮັບຂໍ້ມູນຈາກໂຮດໂດຍໃຊ້ຈຸດສິ້ນສຸດ OUT ຈໍານວນຫລາຍແລະສົ່ງຂໍ້ມູນໄປຫາເຈົ້າພາບໂດຍໃຊ້ຈຸດສິ້ນສຸດ IN bulk.
Example – Synchronous Bulk ອ່ານ ແລະ ຂຽນ
__ALIGNED(4) uint8_t rx_buf[2];
__ALIGNED(4) uint8_t tx_buf[2];
uint32_t
xfer_len;
sl_status_t
ສະຖານະພາບ;
ສະຖານະ = sl_usbd_vendor_read_bulk_sync(class_nbr,
(1)
(void *)&rx_buf[0],
(2)
2u,
0u,
(3)
&xfer_len);
ຖ້າ (ສະຖານະ ! SL_STATUS_OK) {
/* $$$$ ຈັດການກັບຄວາມຜິດພາດ. */
}
ສະຖານະ = sl_usbd_vendor_write_bulk_sync(class_nbr,
(1)
(void *)&tx_buf[0],
(4)
2u,
0u,
(3)
ບໍ່ຖືກຕ້ອງ,
(5)
&xfer_len);
ຖ້າ (ສະຖານະ ! SL_STATUS_OK) {
/* $$$$ ຈັດການກັບຄວາມຜິດພາດ. */
}
(1) ໝາຍເລກຕົວຢ່າງຂອງຄລາສທີ່ສ້າງຂຶ້ນດ້ວຍ sl_usbd_vendor_create_instance() ສະໜອງການອ້າງອິງພາຍໃນກັບຊັ້ນຜູ້ຂາຍເພື່ອສົ່ງເສັ້ນທາງການໂອນໄປຫາຈຸດສິ້ນສຸດຫຼາຍ OUT ຫຼື IN.
(2) ແອັບພລິເຄຊັນຕ້ອງຮັບປະກັນວ່າ buffer ທີ່ສະໜອງໃຫ້ກັບຟັງຊັນມີຂະໜາດໃຫຍ່ພໍທີ່ຈະຮອງຮັບຂໍ້ມູນທັງໝົດ. ຖ້າບໍ່ດັ່ງນັ້ນ, ບັນຫາການຊິ້ງຂໍ້ມູນອາດຈະເກີດຂຶ້ນ.
(3) ເພື່ອຫຼີກເວັ້ນສະຖານະການຂັດຂວາງທີ່ບໍ່ມີຂອບເຂດ, ເວລາຫມົດເວລາສະແດງອອກເປັນມິນລິວິນາທີສາມາດຖືກກໍານົດ. ຄ່າຂອງ 809 ເຮັດໃຫ້ວຽກງານຂອງແອັບພລິເຄຊັນລໍຖ້າຕະຫຼອດໄປ.
(4) ຄໍາຮ້ອງສະຫມັກສະຫນອງການ buffer ການຖ່າຍໂອນການເລີ່ມຕົ້ນ.
(5) ຖ້າທຸງນີ້ຖືກຕັ້ງເປັນຖືກຕ້ອງ , ແລະຄວາມຍາວຂອງການໂອນແມ່ນຫຼາຍຂອງຂະຫນາດແພັກເກັດສູງສຸດຂອງຈຸດສິ້ນສຸດ, stack ອຸປະກອນຈະສົ່ງຊຸດທີ່ມີຄວາມຍາວສູນໄປຫາເຈົ້າພາບເພື່ອສົ່ງສັນຍານການສິ້ນສຸດຂອງການໂອນ.
ການໃຊ້ຟັງຊັນການສື່ສານຈຸດສິ້ນສຸດຂັດຂວາງ, sl_usbd_vendor_read_interrupt_sync() ແລະ sl_usbd_vendor_write_interrupt_sync() , ແມ່ນຄ້າຍຄືກັນກັບຟັງຊັນການສື່ສານ endpoint bulk ທີ່ນໍາສະເຫນີໃນ Example – Synchronous Bulk ອ່ານ ແລະ ຂຽນ.
ການສື່ສານ Asynchronous
ການສື່ສານແບບ Asynchronous ຫມາຍຄວາມວ່າການໂອນບໍ່ແມ່ນການຂັດຂວາງ. ເມື່ອຟັງຊັນຖືກເອີ້ນ, ແອັບພລິເຄຊັນຈະສົ່ງຂໍ້ມູນການໂອນໄປຫາ stack ອຸປະກອນແລະບໍ່ໄດ້ປິດກັ້ນ. ການປະມວນຜົນຄໍາຮ້ອງສະຫມັກອື່ນໆສາມາດເຮັດໄດ້ໃນຂະນະທີ່ການໂອນກໍາລັງດໍາເນີນຢູ່ໃນລົດເມ USB. ເມື່ອການໂອນຍ້າຍໄດ້ສໍາເລັດ, ຟັງຊັນໂທກັບຖືກເອີ້ນໂດຍ stack ອຸປະກອນເພື່ອແຈ້ງຄໍາຮ້ອງສະຫມັກກ່ຽວກັບການສໍາເລັດການໂອນ. ອະດີດample ຂ້າງລຸ່ມນີ້ສະແດງໃຫ້ເຫັນການອ່ານແລະຂຽນແບບ asynchronous.
Example – Asynchronous Bulk ອ່ານ ແລະ ຂຽນ
ສະຫງວນລິຂະສິດ © 2025 Silicon Laboratories. ສະຫງວນລິຂະສິດທັງໝົດ.
56/174
ເກີນview
app_usbd_vendor_comm void (uint8_t class_nbr)
{
__ALIGNED(4) uint8_t rx_buf[2];
__ALIGNED(4) uint8_t tx_buf[2];
sl_status_t
ສະຖານະພາບ;
ສະຖານະ = sl_usbd_vendor_read_bulk_async(class_nbr,
(void *)&rx_buf[0],
(2)
2u,
app_usbd_vendor_rx_ສຳເລັດແລ້ວ,
NULL);
(4)
ຖ້າ (ສະຖານະ ! SL_STATUS_OK) {
/* $$$$ ຈັດການກັບຄວາມຜິດພາດ. */
}
ສະຖານະ = sl_usbd_vendor_write_bulk_async(class_nbr,
(void *)&tx_buf[0],
(5)
2u,
app_usbd_vendor_tx_ສຳເລັດແລ້ວ,
NULL,
(4)
false);
(6)
ຖ້າ (ສະຖານະ ! SL_STATUS_OK) {
/* $$$$ ຈັດການກັບຄວາມຜິດພາດ. */
}
}
(1) (3)
(1) (3)
static void app_usbd_vendor_rx_completed(uint8_t class_nbr,
(3)
void *p_buf,
uint32_t buf_len,
uint32_t xfer_len,
void *p_callback_arg,
ສະຖານະ sl_status_t)
{
ຖ້າ (ສະຖານະ ! SL_STATUS_OK) {
/* $$$$ ເຮັດການປຸງແຕ່ງບາງຢ່າງ. */
} ອື່ນ {
/* $$$$ ຈັດການກັບຄວາມຜິດພາດ. */
}
}
static void app_usbd_vendor_tx_completed(uint8_t class_nbr,
(3)
void *p_buf,
uint32_t buf_len,
uint32_t xfer_len,
void *p_callback_arg,
ສະຖານະ sl_status_t)
{
ຖ້າ (ສະຖານະ ! SL_STATUS_OK) {
/* $$$$ ເຮັດການປຸງແຕ່ງບາງຢ່າງ. */
} ອື່ນ {
/* $$$$ ຈັດການກັບຄວາມຜິດພາດ. */
}
}
(1) class instance number ສະໜອງການອ້າງອີງພາຍໃນໃຫ້ກັບ Vendor class ເພື່ອນຳທາງການໂອນໄປຫາ bulk OUT ຫຼື IN endpoint. (2) ແອັບພລິເຄຊັນຕ້ອງຮັບປະກັນວ່າ buffer ທີ່ສະຫນອງໃຫ້ມີຂະຫນາດໃຫຍ່ພຽງພໍທີ່ຈະຮອງຮັບຂໍ້ມູນທັງຫມົດ. ຖ້າບໍ່ດັ່ງນັ້ນ, ອາດຈະມີບັນຫາ synchronization. (3) ແອັບພລິເຄຊັນໃຫ້ຕົວຊີ້ຟັງຊັນ callback ຜ່ານເປັນພາລາມິເຕີ. ເມື່ອສໍາເລັດການໂອນຍ້າຍ, stack ອຸປະກອນເອີ້ນຟັງຊັນໂທກັບຄືນໄປບ່ອນນີ້ເພື່ອໃຫ້ຄໍາຮ້ອງສະຫມັກສາມາດສໍາເລັດການໂອນໂດຍການວິເຄາະຜົນໄດ້ຮັບການໂອນ. ສໍາລັບຕົວຢ່າງ, ເມື່ອສໍາເລັດການດໍາເນີນການອ່ານ, ຄໍາຮ້ອງສະຫມັກອາດຈະດໍາເນີນການປະມວນຜົນຂໍ້ມູນທີ່ໄດ້ຮັບ. ເມື່ອຂຽນສໍາເລັດ, ຄໍາຮ້ອງສະຫມັກສາມາດຊີ້ບອກວ່າການຂຽນປະສົບຜົນສໍາເລັດແລະຈໍານວນ bytes ຖືກສົ່ງ.
ສະຫງວນລິຂະສິດ © 2025 Silicon Laboratories. ສະຫງວນລິຂະສິດທັງໝົດ.
57/174
ເກີນview
(4) ການໂຕ້ຖຽງທີ່ກ່ຽວຂ້ອງກັບການໂທກັບຍັງສາມາດຜ່ານໄດ້. ຫຼັງຈາກນັ້ນ, ໃນສະພາບການໂທກັບ, ບາງຂໍ້ມູນສ່ວນຕົວສາມາດດຶງຂໍ້ມູນໄດ້. (5) ຄໍາຮ້ອງສະຫມັກສະຫນອງການ buffer ການຖ່າຍໂອນການເລີ່ມຕົ້ນ. (6) ຖ້າທຸງນີ້ຖືກຕັ້ງເປັນຖືກຕ້ອງ , ແລະຄວາມຍາວຂອງການໂອນແມ່ນເປັນຕົວຄູນຂອງຂະຫນາດແພັກເກັດສູງສຸດຂອງຈຸດສິ້ນສຸດ, stack ອຸປະກອນຈະສົ່ງຊຸດທີ່ມີຄວາມຍາວສູນໄປຫາເຈົ້າພາບເພື່ອສົ່ງສັນຍານການສິ້ນສຸດການໂອນ. ການໃຊ້ຟັງຊັນການສື່ສານຈຸດສິ້ນສຸດຂັດຈັງຫວະ, sl_usbd_vendor_read_interrupt_async() ແລະ sl_usbd_vendor_write_interrupt_async() , ແມ່ນຄ້າຍຄືກັນກັບຟັງຊັນການສື່ສານ endpoint ຈໍານວນຫລາຍທີ່ນໍາສະເຫນີໃນ Example Asynchronous Bulk ອ່ານ ແລະຂຽນ.
ຄຳຮ້ອງຂໍຜູ້ຂາຍ
ຂໍ້ກໍານົດ USB 2.0 ກໍານົດສາມປະເພດຂອງຄໍາຮ້ອງຂໍ: ມາດຕະຖານ, ຫ້ອງຮຽນ, ແລະຜູ້ຂາຍ. ການຮ້ອງຂໍມາດຕະຖານທັງຫມົດຖືກຈັດການໂດຍກົງໂດຍຊັ້ນຫຼັກ, ໃນຂະນະທີ່ຄໍາຮ້ອງຂໍຂອງຊັ້ນຮຽນຖືກຈັດການໂດຍຊັ້ນທີ່ກ່ຽວຂ້ອງທີ່ເຫມາະສົມ. ການຮ້ອງຂໍຂອງຜູ້ຂາຍສາມາດດໍາເນີນການໂດຍຊັ້ນຜູ້ຂາຍ. ເພື່ອປະມວນຜົນການຮ້ອງຂໍຂອງຜູ້ຂາຍ, ທ່ານຕ້ອງໃຫ້ການເອີ້ນຄືນແອັບພລິເຄຊັນເປັນພາລາມິເຕີຂອງ sl_usbd_vendor_create_instance() . ຫຼັງຈາກການຮ້ອງຂໍຂອງຜູ້ຂາຍໄດ້ຮັບໂດຍອຸປະກອນ USB, ມັນຕ້ອງໄດ້ຮັບການຖອດລະຫັດຢ່າງຖືກຕ້ອງ. ອະດີດample ຂ້າງລຸ່ມນີ້ສະແດງໃຫ້ເຫັນການຖອດລະຫັດການຮ້ອງຂໍຂອງຜູ້ຂາຍ. ການຮ້ອງຂໍສະເພາະໃດຫນຶ່ງອາດຈະຈໍາເປັນຕ້ອງໄດ້ຮັບຈາກຫຼືສົ່ງກັບເຈົ້າພາບໃນລະຫວ່າງການຂໍ້ມູນ stage ຂອງການໂອນການຄວບຄຸມ. ຖ້າບໍ່ມີຂໍ້ມູນ stage ປະຈຸບັນ, ທ່ານພຽງແຕ່ຕ້ອງຖອດລະຫັດຊຸດຕິດຕັ້ງ. ນີ້ example ສະແດງໃຫ້ເຫັນສາມປະເພດຂອງຂໍ້ມູນ stage ການຈັດການ: ບໍ່ມີຂໍ້ມູນ, ຂໍ້ມູນ OUT ແລະຂໍ້ມູນ IN.
Example – ຜູ້ຂາຍຮ້ອງຂໍການຖອດລະຫັດ
ສະຫງວນລິຂະສິດ © 2025 Silicon Laboratories. ສະຫງວນລິຂະສິດທັງໝົດ.
58/174
ເກີນview
#ກຳນົດ APP_VENDOR_REQ_NO_DATA
0x01u
#define APP_VENDOR_REQ_RECEIVE_DATA_FROM_HOST 0x02u
#define APP_VENDOR_REQ_SEND_DATA_TO_HOST 0x03u
#define APP_VENDOR_REQ_DATA_BUF_SIZE
50u
static uint8_t app_vendor_req_buf[APP_VENDOR_REQ_DATA_BUF_SIZE];
static bool app_usbd_vendor_req (uint8_t
class_nbr,
const sl_usbd_setup_req_t *p_setup_req)
(1)
{
bool ຖືກຕ້ອງ;
ສະຖານະ 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; ພັກຜ່ອນ;
(2) (3)
ກໍລະນີ APP_VENDOR_REQ_RECEIVE_DATA_FROM_HOST:
(4)
req_len = p_setup_req->wLength;
ຖ້າ (req_len > APP_VENDOR_REQ_DATA_BUF_SIZE) {
// ບໍ່ມີຫ້ອງພຽງພໍເພື່ອຮັບຂໍ້ມູນ.
ກັບຄືນ (false);
}
// ຮັບຂໍ້ມູນຜ່ານ Control OUT EP. // ລໍຖ້າການສໍາເລັດການໂອນຕະຫຼອດໄປ. ສະຖານະ = sl_usbd_core_read_control_sync((void *)&app_vendor_req_buf[0u],
req_len, 0u, &xfer_len); ຖ້າ (ສະຖານະ ! SL_STATUS_OK) { ຖືກຕ້ອງ = false; } else { ຖືກຕ້ອງ = ຈິງ; } ຢຸດ;
ກໍລະນີ APP_VENDOR_REQ_SEND_DATA_TO_HOST:
(5)
req_len = APP_VENDOR_REQ_DATA_BUF_SIZE;
// ຕື່ມ buf ດ້ວຍຮູບແບບ. Mem_Set((void *)&AppVendorReqBuf[0u],
'ກ',
req_len);
// ສົ່ງຂໍ້ມູນຜ່ານ Control IN EP. // ລໍຖ້າການສໍາເລັດການໂອນຕະຫຼອດໄປ. ສະຖານະ = sl_usbd_core_write_control_sync((void *)&app_vendor_req_buf[0u],
req_len, 0u, false, &xfer_len); ຖ້າ (ສະຖານະ ! SL_STATUS_OK) { ຖືກຕ້ອງ = DEF_FAIL; } else { ຖືກຕ້ອງ = DEF_OK; } ຢຸດ;
ຄ່າເລີ່ມຕົ້ນ:
(6)
// ການຮ້ອງຂໍແມ່ນບໍ່ສະຫນັບສະຫນູນ.
ສະຫງວນລິຂະສິດ © 2025 Silicon Laboratories. ສະຫງວນລິຂະສິດທັງໝົດ.
59/174
ເກີນview
ຖືກຕ້ອງ =true;break;
ກໍລະນີ APP_VENDOR_REQ_RECEIVE_DATA_FROM_HOST:(4) req_len = p_setup_req->wLength;if(req_len> APP_VENDOR_REQ_DATA_BUF_SIZE){// ບໍ່ມີຫ້ອງພຽງພໍເພື່ອຮັບ data.return(false);}// ຮັບຂໍ້ມູນຜ່ານການຄວບຄຸມ/ລໍຖ້າ EP ການໂອນຍ້າຍຕະຫຼອດໄປ. ສະຖານະ =sl_usbd_core_read_control_sync((void *)&app_vendor_req_buf[0u],
req_len,0u,&xfer_len);if(ສະຖານະ ! SL_STATUS_OK){ valid =false;}else{ valid =true;}break;
case APP_VENDOR_REQ_SEND_DATA_TO_HOST:(5) req_len = APP_VENDOR_REQ_DATA_BUF_SIZE;// ຕື່ມ buf ດ້ວຍຮູບແບບ.Mem_Set((void *)&AppVendorReqBuf[0u],'A',
req_len);// ສົ່ງຂໍ້ມູນຜ່ານການຄວບຄຸມ IN EP.// ລໍຖ້າການໂອນໃຫ້ສໍາເລັດຕະຫຼອດການ. ສະຖານະ =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;
ຄ່າເລີ່ມຕົ້ນ: (6) // ບໍ່ຮອງຮັບການຮ້ອງຂໍ. valid = DEF_FAIL;break;}return(ຖືກຕ້ອງ);}
(1) ຫຼັກຈະສົ່ງເນື້ອຫາຊຸດຕິດຕັ້ງໃຫ້ກັບແອັບພລິເຄຊັນຂອງທ່ານ. ໂຄງສ້າງ sl_usbd_setup_req_t ປະກອບມີຊ່ອງຂໍ້ມູນດຽວກັນຕາມທີ່ກຳນົດໄວ້ໃນຂໍ້ສະເພາະຂອງ USB 2.0 (ເບິ່ງພາກ “9.3 ການຮ້ອງຂໍອຸປະກອນ USB” ຂອງຂໍ້ມູນສະເພາະສຳລັບລາຍລະອຽດເພີ່ມເຕີມ):
typedef ໂຄງສ້າງ {
uint8_t bmRequestType; /* ລັກສະນະຂອງຄໍາຮ້ອງສະຫມັກ.
*/
uint8_t bRequest; /* ຄໍາຮ້ອງສະຫມັກສະເພາະ.
*/
uint16_t wValue; /* ແຕກຕ່າງກັນໄປຕາມການຮ້ອງຂໍ.
*/
uint16_t wIndex; /* ແຕກຕ່າງກັນໄປຕາມການຮ້ອງຂໍ; ປົກກະຕິແລ້ວໃຊ້ເປັນດັດຊະນີ.*/
uint16_t wLength; /* ຄວາມຍາວການໂອນຖ້າຫາກວ່າຂໍ້ມູນ stage ປະຈຸບັນ.
*/
} sl_usbd_setup_req_t ;
(2) ກໍານົດຄໍາຮ້ອງຂໍ. ທ່ານອາດຈະໃຊ້ຄໍາສັ່ງສະຫຼັບຖ້າຫາກວ່າທ່ານກໍາລັງໃຊ້ຄໍາຮ້ອງຂໍທີ່ແຕກຕ່າງກັນ. ໃນນີ້ example, ມີສາມຄໍາຮ້ອງຂໍທີ່ແຕກຕ່າງກັນທີ່ສອດຄ້ອງກັບສາມປະເພດຂອງຂໍ້ມູນ stage: APP_VENDOR_REQ_NO_DATA, APP_VENDOR_REQ_RECEIVE_DATA_FROM_HOST, ແລະ APP_VENDOR_REQ_SEND_DATA_TO_HOST.
(3) ຖ້າບໍ່ມີຂໍ້ມູນ stage ແມ່ນປະຈຸບັນ, ທ່ານພຽງແຕ່ຕ້ອງການຖອດລະຫັດພາກສະຫນາມອື່ນໆ. ການປະກົດຕົວຂອງຂໍ້ມູນ stage ຫຼືບໍ່ແມ່ນສະແດງໂດຍພາກສະຫນາມ wLength ບໍ່ແມ່ນ null ຫຼື null.
(4) ຖ້າເຈົ້າພາບສົ່ງຂໍ້ມູນໄປຫາອຸປະກອນ, ທ່ານຕ້ອງໂທຫາຟັງຊັນ sl_usbd_core_read_control_sync() . ບັຟເຟີທີ່ສະໜອງໃຫ້ຄວນຈະສາມາດບັນຈຸໄດ້ເຖິງ wLength bytes. ຖ້າມີຂໍ້ຜິດພາດເກີດຂຶ້ນ, ກັບຄືນ false ກັບຫຼັກທີ່ຈະຢຸດສະຖານະ stage ຂອງການໂອນການຄວບຄຸມ, ຊີ້ໃຫ້ເຫັນເຖິງເຈົ້າພາບວ່າການຮ້ອງຂໍບໍ່ສາມາດດໍາເນີນການໄດ້. true ຖືກສົ່ງຄືນໃນກໍລະນີຂອງຄວາມສໍາເລັດ.
(5) ຖ້າເຈົ້າພາບໄດ້ຮັບຂໍ້ມູນຈາກອຸປະກອນ, ທ່ານຕ້ອງໂທຫາຟັງຊັນ sl_usbd_core_write_control_sync() . ຖ້າມີຂໍ້ຜິດພາດເກີດຂຶ້ນ, ກັບຄືນ false ກັບຫຼັກທີ່ຈະຢຸດສະຖານະ stage ຂອງການໂອນການຄວບຄຸມ, ຊີ້ໃຫ້ເຫັນເຖິງເຈົ້າພາບວ່າການຮ້ອງຂໍບໍ່ສາມາດດໍາເນີນການໄດ້. true ຖືກສົ່ງຄືນໃນກໍລະນີຂອງຄວາມສໍາເລັດ.
(6) ໃນນີ້ exampດັ່ງນັ້ນ, ທຸກຄໍາຮ້ອງຂໍທີ່ບໍ່ໄດ້ຮັບການຮັບຮູ້ແມ່ນຖືກຫມາຍໂດຍການກັບຄືນ false ກັບຫຼັກ. ອັນນີ້ຈະຢຸດຂໍ້ມູນ ຫຼືສະຖານະ stage ຂອງການໂອນການຄວບຄຸມທີ່ຊີ້ໃຫ້ເຫັນເຖິງເຈົ້າພາບວ່າການຮ້ອງຂໍບໍ່ໄດ້ຮັບການສະຫນັບສະຫນູນ.
ເຈົ້າພາບສົ່ງຄໍາຮ້ອງຂໍຂອງຜູ້ຂາຍຜ່ານຄໍາຮ້ອງສະຫມັກຜູ້ຂາຍໂຮດ. ຫໍສະໝຸດ USb, ເຊັ່ນ libusb, ສາມາດໃຊ້ເພື່ອຊ່ວຍໃຫ້ທ່ານພັດທະນາແອັບພລິເຄຊັນຜູ້ຂາຍໂຮດເອງ.
ສະຫງວນລິຂະສິດ © 2025 Silicon Laboratories. ສະຫງວນລິຂະສິດທັງໝົດ.
60/174
ເອກະສານ API
ເອກະສານ API
ເອກະສານ API
ບັນຊີລາຍຊື່ຂອງໂມດູນ
USB Device API USB ອຸປະກອນ ACM API USB ອຸປະກອນ CDC API USB ອຸປະກອນ Core API USB ອຸປະກອນ HID API USB ອຸປະກອນ MSC API USB ອຸປະກອນ MSC SCSI API USB Device Vendor API
ລາຍລະອຽດ
USB Device API USB ອຸປະກອນ ACM API USB ອຸປະກອນ CDC API USB ອຸປະກອນ Core API USB ອຸປະກອນ HID API USB ອຸປະກອນ MSC API USB ອຸປະກອນ MSC SCSI API USB Device Vendor API
ສະຫງວນລິຂະສິດ © 2025 Silicon Laboratories. ສະຫງວນລິຂະສິດທັງໝົດ.
61/174
USB ອຸປະກອນ API
USB ອຸປະກອນ API
USB ອຸປະກອນ API
USB ອຸປະກອນ API.
ໂມດູນ
ອຸປະກອນ USB ACM API USB ອຸປະກອນ CDC API USB ອຸປະກອນ Core API USB ອຸປະກອນ HID API USB ອຸປະກອນ MSC API USB ອຸປະກອນ MSC SCSI API USB Device Vendor API
ສະຫງວນລິຂະສິດ © 2025 Silicon Laboratories. ສະຫງວນລິຂະສິດທັງໝົດ.
62/174
ອຸປະກອນ USB ACM API
ອຸປະກອນ USB ACM API
ອຸປະກອນ USB ACM API
ອຸປະກອນ USB 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)
ຕົວແປທົ່ວໂລກ.
ssll__uussbbdd__ccddcc__aaccmm__ccraellabtaec_kins_stta*npc_ea(cumin_tc1a6l_lbtalicnkes_,sutaintte8__int t*eprv_saul,bucinlats1s6__nt bcra)ll_mgmt_capabilities,
ເພີ່ມຕົວຢ່າງໃໝ່ຂອງ CDC ACM serial emulation subclass.
aaaa sl_usbd_cdc_ cm_ dd_to_configur tion(uint8_t subcl ss_nbr, uint8_t config_nbr)
ເພີ່ມ CDC ACM subclass instance ເຂົ້າໃນການຕັ້ງຄ່າອຸປະກອນ USB.
aa sl_usbd_cdc_ cm_is_en bled(uint8_t subclass_nbr, bool *p_enabled)
ເອົາ CDC ACM serial emulation subclass ເປີດໃຊ້ສະຖານະ.
aaa sl_usbd_cdc_ cm_re d(uint8_t subcl ss_nbr, uint8_t *p_buf, uint32_t buf_len, uint16_t ໝົດເວລາ, uint32_t
*p_xfer_len) ຮັບຂໍ້ມູນໃນ CDC ACM serial emulation subclass.
aaaa sl_usbd_cdc_ cm_re d_ sync(uint8_t subcl ss_nbr, uint8_t *p_buf, uint32_t buf_len, aaaa sl_usbd_cdc_ sync_function_t sync_fnct, void *p_ sync_ rg)
ຮັບຂໍ້ມູນໃນ CDC ACM serial emulation subclass asynchronously.
aa sl_usbd_cdc_ cm_write(uint8_t subcl ss_nbr, uint8_t *p_buf, uint32_t buf_len, uint16_t ໝົດເວລາ, uint32_t
*p_xfer_len) ສົ່ງຂໍ້ມູນໃນ CDC ACM serial emulation subclass.
aaa sl_usbd_cdc_ cm_write_ sync(uint8_t subcl ss_nbr, uint8_t *p_buf, uint32_t buf_len, aaaa sl_usbd_cdc_ sync_function_t sync_fnct, void *p_ sync_ rg)
ສົ່ງຂໍ້ມູນຢູ່ໃນ CDC ACM serial emulation subclass asynchronously.
aaa sl_usbd_cdc_ cm_get_line_control_st te(uint8_t subcl ss_nbr, uint8_t *p_line_ctrl)
ກັບຄືນສະຖານະຂອງສາຍການຄວບຄຸມ.
aaa sl_usbd_cdc_ cm_get_line_coding(uint8_t subcl ss_nbr, sl_usbd_cdc_ cm_line_coding_t *p_line_coding)
ເອົາສະຖານະປັດຈຸບັນຂອງລະຫັດເສັ້ນ.
aaa sl_usbd_cdc_ cm_set_line_coding(uint8_t subcl ss_nbr, sl_usbd_cdc_ cm_line_coding_t *p_line_coding)
ຕັ້ງລະຫັດແຖວໃໝ່.
aaa sl_usbd_cdc_ cm_set_line_st te_event(uint8_t subcl ss_nbr, uint8_t events)
ກໍານົດເຫດການສະຖານະເສັ້ນ.
aaaa sl_usbd_cdc_ cm_cle r_line_st te_event(uint8_t subcl ss_nbr, uint8_t events)
ລຶບລ້າງເຫດການສະຖານະແຖວ.
ສະຫງວນລິຂະສິດ © 2025 Silicon Laboratories. ສະຫງວນລິຂະສິດທັງໝົດ.
63/174
ອຸປະກອນ USB ACM API
ມະຫາພາກ
#define SL_USBD_CDC_ACM_NBR_NONE 255u
ໂມດູນ.
#define SL_USBD_CDC_ACM_PARITY_NONE 0u
ການຕັ້ງຄ່າພອດກໍານົດ.
#define SL_USBD_CDC_ACM_PARITY_ODD 1u #define SL_USBD_CDC_ACM_PARITY_EVEN 2u #define SL_USBD_CDC_ACM_PARITY_MARK 3u #define SL_USBD_CDC_ACM_PARITY #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_CTRL1uBREAK
ທຸງເຫດການເສັ້ນກຳນົດ.
#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_DTR #define SL_USBD_CDC_ACM_0d SL_USBD_CDC_ACM_STATE_BREAK 0 04u #define SL_USBD_CDC_ACM_STATE_RING 0 08u #define SL_USBD_CDC_ACM_STATE_FRAMING 0 10u #define SL_USBD_CDC_ACM_ACM_STATE_0define SL_USBD_CDC_ACM_STATE_OVERUN 0 40u #define SL_USBD_CDC_ACM_CALL_MGMT_DEV 0 01u
ຄວາມສາມາດໃນການຈັດການການໂທ.
#define SL_USBD_CDC_ACM_CALL_MGMT_DATA_CCI_DCI 0 02u #define SL_USBD_CDC_ACM_CALL_MGMT_DATA_OVER_DCI 0 02u | 0 01u)
ເອກະສານການທໍາງານ
sl_usbd_cdc_acm_init
sl_status_t sl_usbd_cdc_acm_init (ໂມ້)
ຕົວແປທົ່ວໂລກ. ພາລາມິເຕີ
ສະຫງວນລິຂະສິດ © 2025 Silicon Laboratories. ສະຫງວນລິຂະສິດທັງໝົດ.
64/174
ອຸປະກອນ USB ACM API
ປະເພດ
ໂມຄະ
ທິດທາງ N/A
ຊື່ອາກິວເມັນ
ຟັງຊັນ MACROS ທົ່ວໂລກ PROTOtypes CDC ACM
ເລີ່ມຕົ້ນກຸ່ມຍ່ອຍ CDC ACM serial emulation.
ກັບຄືນ
ສົ່ງຄືນ SL_STATUS_OK ໃນຄວາມສຳເລັດ ຫຼືລະຫັດ SL_STATUS ອື່ນເມື່ອລົ້ມເຫລວ.
ລາຍລະອຽດ
sl_usbd_cdc_acm_create_instance
sl_status_t sl_usbd_cdc_acm_create_instance (uint16_t line_state_interval, uint16_t call_mgmt_capabilities, sl_usbd_cdc_acm_callbacks_t * p_acm_callbacks, uint8_t * p_subclass_nbr)
ເພີ່ມຕົວຢ່າງໃໝ່ຂອງ CDC ACM serial emulation subclass.
ພາລາມິເຕີ
ປະເພດ
uint16_t
uint16_t
ຊື່ Argument ທິດທາງ
ລາຍລະອຽດ
ບໍ່ມີ
line_state_interval ໄລຍະການແຈ້ງເຕືອນສະຖານະເສັ້ນເປັນ milliseconds (ຄ່າຕ້ອງ
ເປັນພະລັງງານ 2).
ບໍ່ມີ
call_mgmt_capabilities ຄວາມສາມາດໃນການຈັດການການໂທ bitmap. OR'ed ຂອງ
ທຸງຕໍ່ໄປນີ້:
SL_USBD_CDC_ACM_CALL_MGMT_DEV ອຸປະກອນຈັດການກັບການຈັດການການໂທເອງ. SL_USBD_CDC_ACM_CALL_MGMT_DATA_CCI_DCI ອຸປະກອນສາມາດສົ່ງ/ຮັບຂໍ້ມູນການຈັດການການໂທຜ່ານສ່ວນຕິດຕໍ່ Data Class.
sl_usbd_cdc_acm_callbacks_t N/A
*
uint8_t *
ບໍ່ມີ
p_acm_callbacks p_subclass_nbr
ຕົວຊີ້ທາງເລືອກໃນການເອີ້ນຄືນຟັງຊັນທີ່ຈະຖືກເອີ້ນໃນເຫດການຕ່າງໆ.
Param ກັບຕົວແປທີ່ຈະໄດ້ຮັບ CDC ACM serial emulation subclass instance number.
ກັບຄືນ
ສົ່ງຄືນ SL_STATUS_OK ໃນຄວາມສຳເລັດ ຫຼືລະຫັດ SL_STATUS ອື່ນເມື່ອລົ້ມເຫລວ.
sl_usbd_cdc_acm_add_to_configuration
sl_status_t sl_usbd_cdc_acm_add_to_configuration (uint8_t subclass_nbr, uint8_t config_nbr)
ເພີ່ມ CDC ACM subclass instance ເຂົ້າໃນການຕັ້ງຄ່າອຸປະກອນ USB.
ພາລາມິເຕີ
ປະເພດ
uint8_t uint8_t
ທິດທາງ N/AN/A
ຊື່ອາກິວເມັນ
subclass_nbr config_nbr
ລາຍລະອຽດ CDC ACM serial emulation subclass instance number. ດັດຊະນີການຕັ້ງຄ່າທີ່ຈະເພີ່ມການໂຕ້ຕອບຫ້ອງທົດສອບໃຫມ່ທີ່ຈະ.
ກັບຄືນ
ສະຫງວນລິຂະສິດ © 2025 Silicon Laboratories. ສະຫງວນລິຂະສິດທັງໝົດ.
65/174
ອຸປະກອນ USB ACM API
ສົ່ງຄືນ SL_STATUS_OK ໃນຄວາມສຳເລັດ ຫຼືລະຫັດ SL_STATUS ອື່ນເມື່ອລົ້ມເຫລວ.
sl_usbd_cdc_acm_is_enabled
sl_status_t sl_usbd_cdc_acm_is_enabled (uint8_t subclass_nbr, bool * p_enabled)
ເອົາ CDC ACM serial emulation subclass ເປີດໃຊ້ສະຖານະ.
ພາລາມິເຕີ
ປະເພດ
ທິດທາງ
ຊື່ອາກິວເມັນ
ລາຍລະອຽດ
uint8_t ບໍ່ມີ
subclass_nbr CDC ACM serial emulation number instance subclass.
bool * ບໍ່ມີ
p_enabled
Boolean ເປັນຕົວແປທີ່ຈະໄດ້ຮັບສະຖານະເປີດໃຊ້ງານ. ຕົວແປຖືກຕັ້ງເປັນຖືກຕ້ອງ, CDC ACM serial emulation ຖືກເປີດໃຊ້. ວ
ເອກະສານ / ຊັບພະຍາກອນ
![]() | ວາງອຸປະກອນ USB |
ເອກະສານອ້າງອີງ
- ຊຸມຊົນຫ້ອງທົດລອງ Siliconcommunity.silabs.com
- ຊຸມຊົນຫ້ອງທົດລອງ Siliconcommunity.silabs.com
- ຊຸມຊົນຫ້ອງທົດລອງ Siliconcommunity.silabs.com
- ສະຖານທີ່ກໍ່ສ້າງdata.re
- ເກີນview of INF Files - Windows drivers | Microsoft Learndocs.microsoft.com
- System-Defined Device Setup Classes Available to Vendors - Windows drivers | Microsoft Learndocs.microsoft.com
- USB Device Class Drivers Included in Windows - Windows drivers | Microsoft Learndocs.microsoft.com
- Developer Docs - Silicon Labsdocs.silabs.com
- U S B D | API Documentation | Universal Serial Bus (USB) | v1.5.1 | Silicon Labsdocs.silabs.com
- Usbd Cdc | API Documentation | Universal Serial Bus (USB) | v1.5.1 | Silicon Labsdocs.silabs.com
- ຄູ່ມືຜູ້ໃຊ້manual.tools