SILICON LABS USB მოწყობილობების დასტა

სპეციფიკაციები

  • USB ვერსია: 1.5.1
  • გამოშვების თარიღი: 21 წლის 2025 ივლისი
  • სიმარტივის SDK ვერსია: 2025.6.1

პროდუქტი დასრულდაview

Silicon Labs-ის USB მოწყობილობების დასტა უზრუნველყოფს მრავალმხრივ და მარტივად გამოსაყენებელ USB კავშირს IoT პროექტებისთვის, რაც ხელს უწყობს ქსელურ თანაპროცესორებსა და მასპინძლებს შორის კომუნიკაციას.

მახასიათებლები

  • ეფექტური USB მოწყობილობების დასტა
  • იდეალურია IoT პროექტებისთვის
  • ქსელის თანაპროცესორებსა და მასპინძლებს შორის კომუნიკაციის მხარდაჭერა

USB მოწყობილობის კონფიგურაცია

დოკუმენტაციაში USB მოწყობილობის კონფიგურაციის განყოფილების მიხედვით, თქვენი პროექტის მოთხოვნების შესაბამისად, დააკონფიგურირეთ USB მოწყობილობის პარამეტრები.

USB მოწყობილობის პროგრამირების სახელმძღვანელო
მიჰყევით USB მოწყობილობის პროგრამირების სახელმძღვანელოს, რათა გაიგოთ, თუ როგორ დაპროგრამოთ და იმოქმედოთ USB მოწყობილობაზე სხვადასხვა აპლიკაციებისთვის.

USB მოწყობილობების კლასები
USB მოწყობილობების კლასების განყოფილება გთავაზობთ დამატებით ინფორმაციასview სხვადასხვა კლასების, როგორიცაა CDC ACM, HID, MSC SCSI და Vendor Class. აირჩიეთ შესაბამისი კლასი თქვენი მოწყობილობის ფუნქციონალურობის მიხედვით.

USB მოწყობილობის პრობლემების მოგვარება
თუ USB მოწყობილობასთან დაკავშირებით რაიმე პრობლემას წააწყდებით, იხილეთ USB მოწყობილობის პრობლემების მოგვარების განყოფილება გადაწყვეტილებებისა და გამართვის რჩევებისთვის.

გამოშვების შენიშვნები USB
სპეციფიკაციები და მახასიათებლებიview
USB მოწყობილობის კონფიგურაციაview
USB მოწყობილობის პროგრამირების სახელმძღვანელოview
USB მოწყობილობის კლასები დასრულდაview CDC ACM კლასის გადაჭარბებაview HID კლასი დასრულდაview MSC SCSI კლასის გადაჭარბებაview გამყიდველის კლასის გადაჭარბებაview


USB API API დოკუმენტაცია USB მოწყობილობის API USB მოწყობილობის ACM API a sl_usbd_cdc_ cm_line_coding_t sl_usbd_cdc_acm_callbacks_t USB მოწყობილობის CDC API a sl_usbd_cdc_subcl ss_driver_t USB მოწყობილობის ბირთვის API
sl_usbd_device_config_t sl_usbd_setup_req_t
sl_usbd_cl ss_driver_t USB მოწყობილობის HID API
sl_usbd_hid_callbacks_t USB მოწყობილობის MSC API
sl_usbd_msc_subcl ss_driver_t USB მოწყობილობის MSC SCSI API
sl_usbd_msc_scsi_callbacks_t

საავტორო უფლება © 2025 Silicon Laboratories. Ყველა უფლება დაცულია.

1/174

უნივერსალური სერიული ავტობუსი USB
sl_usbd_msc_scsi_lun_ პი
sl_usbd_msc_scsi_lun_info sl_usbd_msc_scsi_lun
USB მოწყობილობის მომწოდებლის API sl_usbd_vendor_callbacks_t
API დოკუმენტაცია USB მოწყობილობის პრობლემების მოგვარება
დასრულდაview Microsoft Windows OS USB მასპინძელი
დასრულდაview

საავტორო უფლება © 2025 Silicon Laboratories. Ყველა უფლება დაცულია.

2/174

დასრულდაview
დასრულდაview
USB მოწყობილობა
USB კომპიუტერული სისტემების ისტორიაში ერთ-ერთი ყველაზე წარმატებული საკომუნიკაციო ინტერფეისია და წარმოადგენს კომპიუტერის პერიფერიული მოწყობილობების დასაკავშირებლად დე ფაქტო სტანდარტს. Silicon Labs-ის USB მოწყობილობების დასტა არის USB მოწყობილობის მოდული, რომელიც სპეციალურად ჩაშენებული სისტემებისთვისაა შექმნილი. ნულიდან შექმნილი Silicon Labs-ის ხარისხით, მასშტაბირებითა და საიმედოობით, მან გაიარა მკაცრი ვალიდაციის პროცესი USB 2.0 სპეციფიკაციასთან შესაბამისობაში მოსაყვანად. ეს დოკუმენტაცია აღწერს, თუ როგორ უნდა მოხდეს Silicon Labs-ის USB მოწყობილობების დასტის ინიციალიზაცია, გაშვება და გამოყენება. იგი განმარტავს სხვადასხვა კონფიგურაციის მნიშვნელობებს და მათ გამოყენებას. ის ასევე მოიცავს...view ტექნოლოგიის, კონფიგურაციის შესაძლებლობების ტიპების, განხორციელების პროცედურების და ა.შ.ampყველა ხელმისაწვდომი კლასისთვის ტიპიური გამოყენების მცირე რაოდენობა.


USB კონცეფციების სწრაფად გასაგებად, დოკუმენტაციაში მოცემულია მრავალი მაგალითი.ampUSB-ის მცირე რაოდენობა ძირითადი ფუნქციებით. ესენიაamples მოგაწვდით ჩარჩოს, რომელიც საშუალებას მოგცემთ სწრაფად ააწყოთ მოწყობილობები. ეს ყოფილიampმათში შედის:
USB-დან სერიულ ადაპტერზე (კომუნიკაციის მოწყობილობის კლასი) მაუსი ან კლავიატურა (ადამიანის ინტერფეისის მოწყობილობის კლასი) მოსახსნელი მეხსიერების მოწყობილობა (მასობრივი შენახვის კლასი) მორგებული მოწყობილობა (მომწოდებლის კლასი)
შემდეგი არის დასრულდაview დოკუმენტაციის სექციებიდან:
სპეციფიკაციები და მახასიათებლები USB მოწყობილობის კონფიგურაცია USB მოწყობილობის პროგრამირების სახელმძღვანელო USB მოწყობილობის კლასები
CDC ACM კლასი HID კლასი MSC SCSI კლასი გამყიდველი კლასი USB მოწყობილობა პრობლემების მოგვარება Microsoft Windows OS USB მასპინძელი

საავტორო უფლება © 2025 Silicon Laboratories. Ყველა უფლება დაცულია.

3/174

USB
USB

USB ვერსია 1.5.1 2025 წლის 21 ივლისი – გამოშვების შენიშვნები
Simplicity SDK ვერსია 2025.6.1
Silicon Labs-ის ეფექტური USB მოწყობილობების დასტა გთავაზობთ მრავალმხრივ, მარტივად გამოსაყენებელ USB კავშირს, რომელიც იდეალურია IoT პროექტებისთვის, მათ შორის ქსელის თანაპროცესორებსა და ჰოსტებს შორის კომუნიკაციისთვის. ადრინდელი ვერსიების სანახავად დააჭირეთ აქ.
გამოშვების შეჯამება
ძირითადი მახასიათებლები | API ცვლილებები | შეცდომების გამოსწორება | ჩიპის გააქტიურება
ძირითადი მახასიათებლები
მხოლოდ ძირითადი პლატფორმის ცვლილებები.
API ცვლილებები
არცერთი.
შეცდომების გამოსწორება
არცერთი.
ჩიპის ჩართვა
არცერთი.
ძირითადი მახასიათებლები
ახალი ფუნქციები | გაუმჯობესებები | ამოღებული ფუნქციები | მოძველებული ფუნქციები
ახალი ფუნქციები
არცერთი.
გაძლიერებები
მხოლოდ ძირითადი პლატფორმის ცვლილებები.
ამოღებული ფუნქციები
არცერთი.
მოძველებული თვისებები
არცერთი.
API ცვლილებები
ახალი API-ები | შეცვლილი API-ები | წაშლილი API-ები | მოძველებული API-ები
ახალი API

საავტორო უფლება © 2025 Silicon Laboratories. Ყველა უფლება დაცულია.

4/174

USB
არცერთი.
მოდიფიცირებული API-ები
არცერთი.
წაშლილი API-ები
არცერთი.
მოძველებული API-ები
არცერთი.
შეცდომების გამოსწორება
არცერთი.
ჩიპის ჩართვა
არცერთი.
განაცხადი მაგampლე ცვლილებები
ახალი ყოფილიamples | მოდიფიცირებული ყოფილიampლეს | ამოღებულია ყოფილიamples | მოძველებული ყოფილიamples
ახალი ყოფილიamples
არცერთი.
შეცვლილია მაგamples
არცერთი.
ამოღებულია ეგamples
არცერთი.
მოძველებული ყოფილიamples
არცერთი.
გამოშვების ცვლილებების გავლენა
გავლენის ანგარიშები | მიგრაციის სახელმძღვანელო
გავლენის შესახებ განცხადებები
არცერთი.
მიგრაციის გზამკვლევი
არცერთი.
ცნობილი საკითხები და შეზღუდვები
არცერთი.
ამ გამოშვების გამოყენება

საავტორო უფლება © 2025 Silicon Laboratories. Ყველა უფლება დაცულია.

5/174

USB

რა შედის გამოცემაში? | თავსებადი პროგრამული უზრუნველყოფა | ინსტალაცია და გამოყენება | დახმარება და გამოხმაურება

რა შედის რელიზში?

USB მოწყობილობის დასტის აპლიკაციის ექსamples
თავსებადი პროგრამული უზრუნველყოფა

პროგრამული უზრუნველყოფა
Simplicity SDK Simplicity Studio Simplicity Commander GCC GNU კომპილატორების კოლექცია) IAR ჩაშენებული სამუშაო მაგიდა 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 დოკუმენტაცია.
უსაფრთხო სარდაფის ინტეგრაციის შესახებ ინფორმაციისთვის იხილეთ უსაფრთხო სარდაფი.
ხელახლაview უსაფრთხოებისა და პროგრამული უზრუნველყოფის შესახებ საკონსულტაციო შეტყობინებები და თქვენი შეტყობინებების პარამეტრების მართვა:
ò გადადით https://community.silabs.com/-ზე. ò შედით სისტემაში თქვენი ანგარიშის ავტორიზაციის მონაცემებით. ò დააწკაპუნეთ თქვენს პროზეfile ხატულა გვერდის ზედა მარჯვენა კუთხეში.
õ ჩამოსაშლელი მენიუდან აირჩიეთ შეტყობინებები. ö შეტყობინებების განყოფილებაში გადადით ჩემი პროდუქტის შეტყობინებების ჩანართზე ხელახლა გასაგზავნადview ისტორიული უსაფრთხოებისა და პროგრამული უზრუნველყოფის კონსულტაცია
შეტყობინებები
÷ თქვენი პარამეტრების სამართავად, გამოიყენეთ შეტყობინებების მართვის ჩანართი, რათა დაარეგულიროთ, თუ რომელი პროდუქტის განახლებები და რჩევები გსურთ
მიღება.
რეკომენდებული კონფიგურაციის პარამეტრებისთვის იხილეთ აქ.
ამ ვერსიაში მოცემული პროგრამული უზრუნველყოფის შესახებ მეტის გასაგებად, გაეცანით ჩვენს ონლაინ დოკუმენტაციას.
დახმარება და გამოხმაურება

დაუკავშირდით Silicon Labs-ის მხარდაჭერის სამსახურს. პასუხების მისაღებად ჩვენი „ჰკითხეთ ხელოვნურ ინტელექტს“ ინსტრუმენტის გამოსაყენებლად, იხილეთ საძიებო ველი ამ გვერდის ზედა ნაწილში.

შენიშვნა: Ask AI ექსპერიმენტულია.

მიიღეთ დახმარება ჩვენი დეველოპერების საზოგადოებისგან.
SDK გამოშვების და ტექნიკური პოლიტიკა
იხილეთ ჩვენი SDK-ის გამოშვებისა და მოვლა-პატრონობის პოლიტიკა.

საავტორო უფლება © 2025 Silicon Laboratories. Ყველა უფლება დაცულია.

6/174

დასრულდაview
დასრულდაview
სპეციფიკაციები
შეესაბამება „უნივერსალური სერიული ავტობუსის სპეციფიკაციის მე-2.0 ვერსიას“. ახორციელებს „ინტერფეისის ასოციაციის აღწერის საინჟინრო ცვლილების შეტყობინებას (ECN)“. გადაცემის ტიპები
USB კლასების მასობრივი შეფერხების კონტროლი, საკომუნიკაციო მოწყობილობის კლასი (CDC), აბსტრაქტული მართვის მოდელი (ACM), ადამიანის ინტერფეისის მოწყობილობა (HID), მასობრივი შენახვის კლასი (MSC), მომწოდებლისთვის სპეციფიკური კლასის ჩარჩო.
მახასიათებლები
მასშტაბირებადია მხოლოდ საჭირო ფუნქციების ჩათვლით, მეხსიერების დატვირთვის მინიმიზაციისთვის. მხარს უჭერს სრულ სიჩქარეს (12 მბიტ/წმ). მხარს უჭერს კომპოზიტურ (მრავალფუნქციურ) მოწყობილობებს. მხარს უჭერს მრავალკონფიგურირებულ მოწყობილობებს. მხარს უჭერს USB ენერგიის დაზოგვის ფუნქციებს (მოწყობილობის შეჩერება და განახლება). მასობრივი შენახვის კლასის სრული ინტეგრაცია Micrium OS-ში. File სისტემის მოდული შემუშავებულია CMSIS-RTOS2 აბსტრაქციის ფენით, რათა მას შეეძლოს სხვადასხვა ოპერაციულ სისტემასთან მუშაობა. Silicon Labs GSDK აღჭურვილია FreeRTOS და Micrium OS პორტებით.

საავტორო უფლება © 2025 Silicon Laboratories. Ყველა უფლება დაცულია.

7/174

დასრულდაview
დასრულდაview

USB მოწყობილობის კონფიგურაცია

ეს განყოფილება განიხილავს Silicon Labs-ის USB მოწყობილობის კონფიგურაციას. კონფიგურაციის პარამეტრების სამი ჯგუფი არსებობს:
USB მოწყობილობის ბირთვის კონფიგურაცია USB მოწყობილობის ინფორმაცია კონფიგურაცია USB მოწყობილობის აპარატურის კონფიგურაცია
USB მოწყობილობის ბირთვის კონფიგურაცია
Silicon Labs-ის USB მოწყობილობის კონფიგურაცია შესაძლებელია კომპილაციის დროს sl_usbd_core_config.h ფაილში მდებარე #defines ნაკრების მეშვეობით. fileUSB მოწყობილობა შესაძლებლობის შემთხვევაში იყენებს #defines-ს, რადგან ისინი საშუალებას იძლევა კოდისა და მონაცემების ზომის მასშტაბირება კომპილაციის დროს ჩართული ფუნქციების მიხედვით. ეს საშუალებას იძლევა Silicon Labs USB მოწყობილობის მხოლოდ წასაკითხი მეხსიერების (ROM) და შემთხვევითი წვდომის მეხსიერების (RAM) ფართობი თქვენი აპლიკაციის მოთხოვნების შესაბამისად მორგებული იყოს.
რეკომენდებულია: კონფიგურაციის პროცესი დაიწყეთ ნაგულისხმევი მნიშვნელობებით (მონიშნულია მუქი შრიფტით).
ქვემოთ მოცემული სექციები ორგანიზებულია შაბლონის კონფიგურაციაში არსებული თანმიმდევრობის მიხედვით file, sl_usbd_core_config.h.
ძირითადი კონფიგურაციის კლასების კონფიგურაცია
ძირითადი კონფიგურაცია
ცხრილი – USB მოწყობილობის ბირთვის კონფიგურაციის კონსტანტები

კონსტანტას აღწერა

ნაგულისხმევი მნიშვნელობა

SL_USBD_TA SK_STACK_ ზომა

USBD ძირითადი დავალების დასტის ზომის ბაიტებში კონფიგურაცია

4096

SL_USBD_TA SK_PRIORIT Y

ახდენს USBD ძირითადი დავალების პრიორიტეტის კონფიგურაციას. ეს არის CMSIS-RTOS2 პრიორიტეტი.

osPriorityHigh

SL_USBD_A UTO_START _USB_DEVIC E

თუ ჩართულია, USB მოწყობილობა ავტომატურად ჩაირთვება ბირთვის ჩართვისა და პირველად 1 USBD ბირთვის დავალების დაგეგმვისთანავე. თუ გამორთულია, თქვენს აპლიკაციას დასჭირდება sl_usbd_core_start_device()-ის გამოძახება, როდესაც ის მზად იქნება USB ჰოსტის მიერ აღმოსაჩენად.

SL_USBD_C კონფიგურაციების საერთო რაოდენობა, რომლებიც დაემატება sl_usbd_add_configuration() ფუნქციის მეშვეობით.

1

ONFIGURATI ფუნქცია.

რაოდენობა_ზე

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
სიძველე
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-ის აღმწერების საერთო რაოდენობა. ეს მნიშვნელოვნად არის დამოკიდებული გამოყენებულ კლას(ებ)ზე. კლასის ინსტანციას რამდენ endpoint-ის აღმწერს სჭირდება, დამატებითი ინფორმაციისთვის იხილეთ თქვენი კლასი(ებ)ის „Core-დან რესურსების საჭიროებების“ განყოფილებაში „endpoints of country“. გაითვალისწინეთ, რომ აქ საკონტროლო endpoints-ების გათვალისწინება საჭირო არ არის. USB სტრიქონების საერთო რაოდენობა. რაოდენობის ნულზე დაყენება გამორთავს ფუნქციას. ამის გამორთვა გამოიწვევს იმას, რომ მოწყობილობა არ შეინახავს აპლიკაციიდან გადაცემულ USB აღწერილობის სტრიქონებს. ეს ნიშნავს, რომ ჰოსტი ვერ შეძლებს აღწერილობის სტრიქონების (როგორიცაა მწარმოებელი და პროდუქტის სახელი) მოძიებას. კონფიგურაციაზე გახსნილი endpoints of country. მოწყობილობას საკონტროლო გადაცემისთვის მინიმუმ ორი გახსნილი endpoint სჭირდება, მაგრამ თქვენ ასევე უნდა დაამატოთ გამოყენებული კლასი(ებ)ის endpoints. კლასის ინსტანციას რამდენ გახსნილ endpoint of country სჭირდება, დამატებითი ინფორმაციისთვის იხილეთ თქვენი კლასი(ებ)ის „Core-დან რესურსების საჭიროებების“ განყოფილებაში „endpoints of country“.

ნაგულისხმევი მნიშვნელობა
10 10
2
20 30 20

კლასების კონფიგურაცია
კლასებს აქვთ კონკრეტული კომპილაციის დროის კონფიგურაციები. დამატებითი ინფორმაციისთვის იხილეთ USB მოწყობილობის კლასები.
USB მოწყობილობის ინფორმაციის კონფიგურაცია

sl_usbd_device_config.h კონფიგურაცია file #define-s-ის კომპილაციის დროის ჯგუფებად გადაჯგუფება თქვენი მოწყობილობის შესახებ ძირითადი ინფორმაციის დასაყენებლად, როგორიცაა გამყიდველის/პროდუქტის ID, მოწყობილობის სტრიქონები და ა.შ. ქვემოთ მოცემულ ცხრილში აღწერილია ამ კონფიგურაციაში ხელმისაწვდომი თითოეული კონფიგურაციის ინფორმაცია. file.

ცხრილი – USB მოწყობილობის ინფორმაციის კონფიგურაციის განსაზღვრებები

მუდმივი
SL_USBD_DEVIC ელექტრონული მომწოდებლის_ID
SL_USBD_DEVIC ელექტრონული პროდუქტის 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 სტრიქონი, რომელიც აღწერს თქვენი მოწყობილობის მწარმოებელს. ეს კონფიგურაცია იგნორირებულია, როდესაც

CURER_STRING

კონფიგურაცია SL_USBD_STRING_QUANTITY დაყენებულია 0-ზე.

SL_USBD_DEVICE_PRODUC სტრიქონი, რომელიც აღწერს თქვენს პროდუქტს. ეს კონფიგურაცია იგნორირებულია კონფიგურაციის დროს.

T_STRING

SL_USBD_STRING_QUANTITY დაყენებულია 0-ზე.

SL_USBD_DEVICE_SERIAL_N სტრიქონი, რომელიც შეიცავს თქვენი მოწყობილობის სერიულ ნომერს. ეს კონფიგურაცია იგნორირებულია, როდესაც

UMBER_STRING

კონფიგურაცია SL_USBD_STRING_QUANTITY დაყენებულია 0-ზე.

SL_USBD_DEVICE_LANGUA თქვენი მოწყობილობის სტრიქონების ენის საიდენტიფიკაციო ნომერი. შესაძლო მნიშვნელობებია:
GE_ID

– SL_USBD_LANG_ID_ARABIC_SAUDI_ARABIA

– SL_USBD_LANG_ID_CHINESE_TAIWAN

– SL_USBD_LANG_ID_ENGLISH_US

– SL_USBD_LANG_ID_ENGLISH_UK

– SL_USBD_LANG_ID_FRENCH

– SL_USBD_LANG_ID_გერმანული

– SL_USBD_LANG_ID_ბერძნული

– SL_USBD_LANG_ID_ITALIAN

– SL_USBD_LANG_ID_პორტუგალიური

– SL_USBD_LANG_ID_SANSKRIT

ეს კონფიგურაცია იგნორირებულია, როდესაც კონფიგურაცია SL_USBD_STRING_QUANTITY დაყენებულია 0-ზე.

USB მოწყობილობის აპარატურის კონფიგურაცია

თქვენს მიერ გამოყენებული Silicon Labs მოწყობილობიდან გამომდინარე, შესაძლოა გქონდეთ GPIO პინი და პორტი USB VBUS Sense სიგნალისთვის. კონფიგურაციის განსაზღვრებები მოცემულია sl_usbd_hardware_config.h სათაურში. file.

მუდმივი
SL_USBD_DRIVER_VBUS_SENSE_PORT SL_USBD_DRIVER_VBUS_SENSE_PIN

აღწერა
GPIO პორტი თქვენს დაფაზე USB VBUS Sense სიგნალისთვის. GPIO პინი თქვენს დაფაზე USB VBUS Sense სიგნალისთვის.

საავტორო უფლება © 2025 Silicon Laboratories. Ყველა უფლება დაცულია.

10/174

დასრულდაview
დასრულდაview
USB მოწყობილობის პროგრამირების სახელმძღვანელო
ეს განყოფილება განმარტავს, თუ როგორ გამოიყენოთ USB მოწყობილობის მოდული.
USB მოწყობილობის მოდულის საწყისი დაყენება
ეს განყოფილება აღწერს USB მოწყობილობის მოდულის ინიციალიზაციისა და მოწყობილობის დამატების, მომზადებისა და გაშვების ძირითად ნაბიჯებს. USB მოწყობილობის მოდულის ინიციალიზაცია USB მოწყობილობის ბირთვის ინიციალიზაცია aCl ss(es)-ის ინიციალიზაცია თქვენი USB მოწყობილობის დამატება თქვენი USB მოწყობილობის აგება კონფიგურაციის(ების) დამატება USB ფუნქციის(ების) დამატება თქვენი USB მოწყობილობის გაშვება
მოვლენების კაუჭის ფუნქციები
USB მოწყობილობის მოდულის ინიციალიზაცია
USB მოწყობილობის ბირთვის ინიციალიზაცია
ა აშშ ა დაიწყეთ B მოწყობილობის მოდულის ბირთვის ინიციალიზაციით sl_usbd_core_init() ფუნქციის შესრულებით. ქვემოთ მოცემული მაგალითი აჩვენებს sl_usbd_core_init() ფუნქციის შესრულებით.
Example – sl_usbd_core_init()-ის გამოძახება
sl_status_t status; status = sl_usbd_core_init(); თუ (სტატუსი! SL_STATUS_OK) { /* შეცდომა მოხდა. აქ უნდა დაემატოს შეცდომების დამუშავება. */
}
კლას(ებ)ის ინიციალიზაცია
USB მოწყობილობის მოდულის ბირთვის ინიციალიზაციის შემდეგ, თქვენ უნდა ინიციალიზაცია გაუკეთოთ თითოეულ კლასს, რომლის გამოყენებასაც აპირებთ. დამატებითი ინფორმაციისთვის იხილეთ თქვენი acl ss(es)-ის „პროგრამირების სახელმძღვანელო“ განყოფილება.
თქვენი USB მოწყობილობის შექმნა
კონფიგურაციის(ების) დამატება
მოწყობილობის წარმატებით ინიციალიზაციის შემდეგ, შეგიძლიათ დაიწყოთ მასზე USB ფუნქციების დამატება, ახალი კონფიგურაციით დაწყებული. მოწყობილობას უნდა ჰქონდეს მინიმუმ ერთი კონფიგურაცია. კონფიგურაციის(ების) დასამატებლად, გამოიძახეთ ფუნქცია aa sl_usbd_core_dd_configur tion() ფუნქცია. ეს ფუნქცია უნდა გამოიძახოთ თითოეული კონფიგურაციისთვის, რომლის დამატებაც გსურთ.ampქვემოთ მოცემულია, თუ როგორ დაამატოთ სრული სიჩქარე.
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,

/* სრული სიჩქარის კონფიგურაცია.

*/

„კონფიგურაცია Add Ex“ampსრული სიჩქარის კონფიგურაცია",

&config_nbr_fs);

თუ (სტატუსი! SL_STATUS_OK) {

/* შეცდომა მოხდა. აქ უნდა დაემატოს შეცდომების დამუშავების ფუნქცია. */

}

USB ფუნქცია(ები)ს დამატება
მას შემდეგ, რაც თქვენს მოწყობილობას წარმატებით დაამატებთ მინიმუმ ერთ კონფიგურაციას, შეგიძლიათ დაამატოთ მას ინტერფეისები და საბოლოო წერტილები. თითოეულ USB კლასს აქვს საკუთარი საჭიროებები ინტერფეისისა და საბოლოო წერტილების ტიპის, რაოდენობისა და სხვა პარამეტრების თვალსაზრისით. Silicon Labs-ის USB მოწყობილობა ამატებს ინტერფეისებსა და საბოლოო წერტილებს მის მიერ შემოთავაზებულ კლასებში.
თქვენი აპლიკაციიდან შეგიძლიათ შექმნათ USB კლასი და დაამატოთ ის კონფიგურაციაში. USB მოწყობილობის კლასის ინსტანციების კონცეფციის შესახებ დამატებითი ინფორმაციისთვის იხილეთ USB მოწყობილობის კლასები. გაითვალისწინეთ, რომ მრავალფუნქციური (კომპოზიტური) მოწყობილობის შესაქმნელად შეგიძლიათ შექმნათ და დაამატოთ კონფიგურაციაში მრავალი განსხვავებული კლასის ინსტანცია.
ყოფილმაampქვემოთ მოცემულია, თუ როგორ შევქმნათ კლასის ეგზემპლარი და დავამატოთ ის კონფიგურაციაში.
Example – კლასის ეგზემპლარის დამატება თქვენს მოწყობილობაზე

sl_status_t სტატუსი; uint8_t class_nbr;
/* შექმენით იმ კლასის ეგზემპლარი, რომლის გამოყენებაც გსურთ.*/ /* გაითვალისწინეთ, რომ კლასის მიხედვით, ამ ფუნქციას შეიძლება ჰქონდეს მეტი არგუმენტი. */ სტატუსი = 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 მოწყობილობის ბირთვის დავალებით, მოწყობილობის ინიციალიზაციის დასრულებისა და ბირთვის ჩართვის შემდეგ. მოწყობილობის ჩართვისა და USB ჰოსტისთვის ხილვადობის დროის გასაკონტროლებლად, გამოიყენეთ SL_USBD_AUTO_START_USB_DEVICE კონფიგურაციის განსაზღვრა ავტომატური ჩართვის ფუნქციის გამოსართავად. გამორთვის შემთხვევაში, მოწყობილობის აწყობის/მომზადების შემდეგ, შეგიძლიათ ჩართოთ იგი და გახადოთ ხილვადი USB ჰოსტისთვის sl_usbd_core_start_device() ფუნქციის გამოძახებით.
ყოფილმაampქვემოთ მოცემულია, თუ როგორ უნდა ჩართოთ თქვენი მოწყობილობა sl_usbd_core_start_device() ფუნქციის გამოყენებით.
Example – თქვენი მოწყობილობის ჩართვა

საავტორო უფლება © 2025 Silicon Laboratories. Ყველა უფლება დაცულია.

12/174

დასრულდაview

sl_status_t სტატუსი;
სტატუსი = sl_usbd_core_start_device(); თუ (სტატუსი! SL_STATUS_OK) { /* შეცდომა მოხდა. აქ უნდა დაემატოს შეცდომების დამუშავება. */ }

მოვლენების კაუჭის ფუნქციები
USB მოწყობილობის ძირითადი მოდული გთავაზობთ ორ სუსტი ჰუკის ფუნქციას, რომელთა ხელახლა განსაზღვრაც შეგიძლიათ თქვენს აპლიკაციაში. მათი დანიშნულებაა გაცნობოთ ავტობუსისა და კონფიგურაციის მოვლენების შესახებ.
ცხრილი – USB Event Hook-ის ფუნქციები

ღონისძიება

აღწერა

ავტობუსი

გამოიძახება USB ავტობუსის მოვლენის დროს

კონფიგურაცია გამოიძახება USB კონფიგურაციის მოვლენის დროს

ფუნქციის ხელმოწერა
void sl_usbd_on_bus_event(sl_usbd_bus_event_t მოვლენა); void sl_usbd_on_config_event(sl_usbd_config_event_t მოვლენა, uint8_t config_nbr);

Example – მოვლენების კაუჭის ფუნქციები

void sl_usbd_on_bus_event(sl_usbd_bus_event_t მოვლენა) { გადამრთველი (მოვლენა) { შემთხვევა SL_USBD_EVENT_BUS_CONNECT:
// გამოძახება ხდება, როდესაც USB კაბელი შედის მასპინძელი კონტროლერის წყვეტაში;
შემთხვევა SL_USBD_EVENT_BUS_DISCONNECT: // გამოიძახება, როდესაც USB კაბელი ამოღებულია მასპინძელი კონტროლერის შესვენებიდან;
შემთხვევა SL_USBD_EVENT_BUS_RESET: // გამოიძახება, როდესაც ჰოსტი აგზავნის გადატვირთვის ბრძანებას break;
შემთხვევა SL_USBD_EVENT_BUS_SUSPEND: // გამოიძახება, როდესაც ჰოსტი აგზავნის suspend ბრძანებას break;
case SL_USBD_EVENT_BUS_RESUME: // გამოიძახება, როდესაც ჰოსტი აგზავნის გაღვიძების ბრძანებას break;
ნაგულისხმევი: შესვენება; } }
void sl_usbd_on_config_event(sl_usbd_config_event_t მოვლენა, uint8_t config_nbr) { გადამრთველი (მოვლენა) { შემთხვევა SL_USBD_EVENT_CONFIG_SET:
// გამოიძახება, როდესაც ჰოსტი აყენებს კონფიგურაციის შესვენებას;
case SL_USBD_EVENT_CONFIG_UNSET: // გამოძახება კონფიგურაციის დაუყენებლობისას break;
ნაგულისხმევი: შესვენება; } }

საავტორო უფლება © 2025 Silicon Laboratories. Ყველა უფლება დაცულია.

13/174

დასრულდაview

საავტორო უფლება © 2025 Silicon Laboratories. Ყველა უფლება დაცულია.

14/174

დასრულდაview
დასრულდაview

USB მოწყობილობების კლასები

Silicon Labs-ის USB მოწყობილობაში ხელმისაწვდომ USB კლასებს აქვთ რამდენიმე საერთო მახასიათებელი. ეს განყოფილება განმარტავს ამ მახასიათებლებს და მათ ურთიერთქმედებას ბირთვის ფენასთან.
კონკრეტული კლასის შესახებ დამატებითი ინფორმაციისთვის იხილეთ შემდეგი:
CDC ACM კლასი HID კლასი MSC SCSI კლასი მომწოდებლის კლასი
კლასის ეგზემპლარების შესახებ
USB მოწყობილობაში არსებული USB კლასები კლასის ეგზემპლარების კონცეფციას ნერგავენ. კლასის ეგზემპლარი მოწყობილობაში ერთ ფუნქციას წარმოადგენს. ფუნქცია შეიძლება აღიწეროს ერთი ინტერფეისით ან ინტერფეისების ჯგუფით და მიეკუთვნოს კონკრეტულ კლასს.
თითოეული USB კლასის იმპლემენტაციას აქვს გარკვეული საერთო კონფიგურაციები და ფუნქციები, რომლებიც დაფუძნებულია კლასის ეგზემპლარის კონცეფციაზე. საერთო კონფიგურაციები და ფუნქციები წარმოდგენილია ქვემოთ მოცემულ ცხრილში. სვეტის სათაურში „მუდმივები ან ფუნქცია“, ჩანაცვლების ველი 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 ate _insta nce ()
sl_usbd_XXXX_add_to_conf-ის გამოსახულება()

აღწერა
ახდენს კლასის ეგზემპლარების მაქსიმალური რაოდენობის კონფიგურაციას.
კონფიგურაციების მაქსიმალური რაოდენობის კონფიგურაციას ახდენს. კლასის ინიციალიზაციის დროს, შექმნილი კლასის ინსტანცია დაემატება ერთ ან რამდენიმე კონფიგურაციას. ქმნის კლასის ახალ ინსტანციას.
მითითებულ მოწყობილობის კონფიგურაციას უმატებს არსებულ კლასის ინსტანციას.

კოდის იმპლემენტაციის თვალსაზრისით, კლასი გამოაცხადებს ლოკალურ გლობალურ ცვლადს, რომელიც შეიცავს კლასის მართვის სტრუქტურას. ეს კლასის მართვის სტრუქტურა ასოცირდება ერთ კლასის ინსტანციასთან და შეიცავს კონკრეტულ ინფორმაციას კლასის ინსტანციის სამართავად.
ქვემოთ მოცემული ფიგურები რამდენიმე შემთხვევის სცენარს აჩვენებს. თითოეული ფიგურა მოიცავს კოდს, მაგ.ampრაც შეესაბამება შემთხვევის სცენარს.
სურათი – კლასის მრავალი ეგზემპლარი – FS მოწყობილობა (1 კონფიგურაცია 1 ინტერფეისით) წარმოადგენს ტიპურ USB მოწყობილობას. მოწყობილობა არის სრული სიჩქარის (FS) და შეიცავს ერთ კონფიგურაციას. მოწყობილობის ფუნქცია აღწერილია ერთი ინტერფეისით, რომელიც შედგება მონაცემთა კომუნიკაციისთვის განკუთვნილი საბოლოო წერტილების წყვილისგან. იქმნება ერთი კლასის ეგზემპლარი, რომელიც საშუალებას მოგცემთ მართოთ მთელი ინტერფეისი მასთან დაკავშირებულ საბოლოო წერტილთან ერთად.
სურათი – კლასის მრავალი ეგზემპლარი – FS მოწყობილობა 1 კონფიგურაცია 1 ინტერფეისით)

საავტორო უფლება © 2025 Silicon Laboratories. Ყველა უფლება დაცულია.

15/174

დასრულდაview

მაგალითში ნაჩვენებია სურათის - მრავალი კლასის ინსტანცია - FS მოწყობილობა (1 კონფიგურაცია 1 ინტერფეისით) შესაბამისი კოდი.ampქვემოთ.
Example – კლასის მრავალი ეგზემპლარი – FS მოწყობილობა 1 კონფიგურაცია 1 ინტერფეისით)

sl_status_t სტატუსი; uint8_t class_0;

void app_usbd_XXXX_enable(uint8_t class_nbr) { /* კლასის ჩართვის მოვლენის მართვა. */ }

void app_usbd_XXXX_disable(uint8_t class_nbr) { /* კლასის გამორთვის მოვლენის მართვა. */ }

sl_usbd_XXXX_callbacks_t class_callbacks = {

(1)

.ჩართვა = 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) თითოეული კლასი გთავაზობთ უკუკავშირის ფუნქციების ერთობლიობას მოწყობილობის დაკავშირების/გათიშვის მოვლენებისთვის და კლასის სპეციფიკური მოვლენებისთვის. უკუკავშირის სტრუქტურის ობიექტი გადაეცემა არგუმენტად კლასის ეგზემპლარის შექმნისას sl_usbd_XXXX_create_instance() ფუნქციით.
ფუნქცია.
(1) კლასის ინიციალიზაცია. ყველა შიდა ცვლადი, სტრუქტურა და კლასის პორტი ინიციალიზებული იქნება. გაითვალისწინეთ, რომ ზოგიერთ კლასში Init() ფუნქციამ შეიძლება სხვა არგუმენტები მიიღოს.

საავტორო უფლება © 2025 Silicon Laboratories. Ყველა უფლება დაცულია.

16/174

დასრულდაview
(2) შექმენით კლასის ეგზემპლარი, რომელიც არის class_0. ფუნქცია sl_usbd_XXXX_create_instance() გამოყოფს კლასის მართვის სტრუქტურას, რომელიც ასოცირდება class_0-თან. კლასიდან გამომდინარე, sl_usbd_XXXX_create_instance()-ს შეიძლება ჰქონდეს დამატებითი პარამეტრები კლასის ნომრის გარდა, რომლებიც წარმოადგენენ კლასის სპეციფიკურ ინფორმაციას, რომელიც ინახება კლასის მართვის სტრუქტურაში. aaa (3) დაამატეთ cl ss inst nce, class_0, მითითებულ კონფიგურაციის ნომერს, config_0. sl_usbd_XXXX_add_to_configuration() შექმნის ინტერფეისს 0 და მასთან დაკავშირებულ IN და OUT ბოლო წერტილებს. შედეგად, კლასის ეგზემპლარი მოიცავს ინტერფეისს 0 და მის ბოლო წერტილებს. ნებისმიერი კომუნიკაცია, რომელიც განხორციელდება ინტერფეისზე 0, გამოიყენებს კლასის ეგზემპლარის ნომერს, class_0. სურათი - მრავალი კლასის ეგზემპლარი - FS მოწყობილობა (2 კონფიგურაცია და მრავალი ინტერფეისი) წარმოადგენს უფრო რთულ მაგალითს.ampმაგ. სრული სიჩქარის მოწყობილობა ორი კონფიგურაციისგან შედგება. მოწყობილობას აქვს ორი ფუნქცია, რომლებიც ერთსა და იმავე კლასს მიეკუთვნება, მაგრამ თითოეული ფუნქცია აღწერილია ორი ინტერფეისით და აქვს ორმხრივი საბოლოო წერტილების წყვილი. ამ მაგალითშიampმაგალითად, იქმნება ორი კლასის ინსტანცია. თითოეული კლასის ინსტანცია ასოცირდება ინტერფეისების ჯგუფთან, განსხვავებით Figure – Multiple Class Instances – FS Device (1 კონფიგურაცია 1 ინტერფეისით) და Figure – Multiple Class Instances – FS Device (2 კონფიგურაცია და მრავალი ინტერფეისი)-ისგან, სადაც კლასის ინსტანცია ასოცირდებოდა ერთ ინტერფეისთან.
სურათი – კლასის მრავალი ეგზემპლარი – FS მოწყობილობა 2 კონფიგურაციები და მრავალი ინტერფეისი)

მაგალითში ნაჩვენებია სურათის - მრავალჯერადი კლასის ინსტანციები - FS მოწყობილობა (2 კონფიგურაცია და მრავალჯერადი ინტერფეისი) შესაბამისი კოდი.ampქვემოთ. შეცდომის დამუშავება გამოტოვებულია სიცხადისთვის.
Example – კლასის მრავალი ეგზემპლარი – FS მოწყობილობა 2 კონფიგურაციები და მრავალი ინტერფეისი)

საავტორო უფლება © 2025 Silicon Laboratories. Ყველა უფლება დაცულია.

17/174

დასრულდაview

sl_status_t სტატუსი; uint8_t კლასი_0; uint8_t კლასი_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_0. ფუნქცია sl_usbd_XXXX_create_instance() გამოყოფს კლასის მართვის სტრუქტურას, რომელიც ასოცირდება class_0-თან.
(3) შექმენით კლასის ეგზემპლარი, class_1. ფუნქცია sl_usbd_XXXX_create_instance() class_1-თან ასოცირებულ სხვა კლასის მართვის სტრუქტურას ანიჭებს.
(4) დაამატეთ კლასის ეგზემპლარი, class_0, კონფიგურაციას, cfg_0. sl_usbd_XXXX_add_to_configuration() შექმნის ინტერფეისს 0, ინტერფეისს 1, ალტერნატიულ ინტერფეისებს და მასთან დაკავშირებულ IN და OUT საბოლოო წერტილებს. კლასის ეგზემპლარის ნომერი, class_0, გამოყენებული იქნება ნებისმიერი მონაცემთა კომუნიკაციისთვის ინტერფეისზე 0 ან ინტერფეისზე 1.
(5) დაამატეთ კლასის ეგზემპლარი, class_1, კონფიგურაციას, cfg_0. sl_usbd_XXXX_add_to_configuration() შექმნის ინტერფეის 2-ს, ინტერფეის 3-ს და მათთან დაკავშირებულ IN და OUT საბოლოო წერტილებს. კლასის ეგზემპლარის ნომერი, class_1, გამოყენებული იქნება ნებისმიერი მონაცემთა კომუნიკაციისთვის ინტერფეის 2-ზე ან ინტერფეის 3-ზე.
(6) იგივე კლასის ეგზემპლარები, class_0 და class_1, დაამატეთ სხვა კონფიგურაციას, cfg_1.
თითოეული კლასი განსაზღვრავს sl_usbd_XXXX_callbacks_t ტიპის სტრუქტურას. მისი მიზანია, თითოეულ კლასს მისცეს უკუკავშირის ფუნქციების ნაკრები, რომელიც გამოიძახება მოვლენის მოხდენისას. თითოეულ კლასში წარმოდგენილია ორი უკუკავშირის ფუნქცია. ისინი წარმოდგენილია ქვემოთ მოცემულ ცხრილში.
ცხრილი – კლასის საერთო უკუკავშირის ფუნქციები

ველები აღწერა .enable გამოიძახება, როდესაც USB კლასის ინსტანცია წარმატებით ჩაირთვება. .disable გამოიძახება, როდესაც USB კლასის ინსტანცია გამორთულია.

ფუნქციის ხელმოწერა void app_usbd_XXXX_enable(uint8_t class_nbr); void app_usbd_XXXX_disable(uint8_t class_nbr);

საავტორო უფლება © 2025 Silicon Laboratories. Ყველა უფლება დაცულია.

18/174

დასრულდაview
დასრულდაview
USB მოწყობილობის CDC ACM კლასი
USB მოწყობილობის CDC ბაზის კლასის გადაჭარბებაview USB მოწყობილობის CDC ACM კლასის რესურსების საჭიროებები ძირითადი USB მოწყობილობის CDC ACM ქვეკლასიდანview USB მოწყობილობის CDC ACM კლასის კონფიგურაცია USB მოწყობილობის CDC ACM კლასის პროგრამირების სახელმძღვანელო
ეს განყოფილება აღწერს საკომუნიკაციო მოწყობილობის კლასის (CDC) კლასს და მასთან დაკავშირებულ CDC ქვეკლასს, რომელსაც მხარს უჭერს Silicon Labs-ის USB მოწყობილობების დასტა. Silicon Labs-ის USB მოწყობილობა ამჟამად მხარს უჭერს აბსტრაქტული კონტროლის მოდელის (ACM) ქვეკლასს, რომელიც ჩვეულებრივ გამოიყენება სერიული ემულაციისთვის.
CDC მოიცავს სხვადასხვა სატელეკომუნიკაციო და ქსელურ მოწყობილობებს. სატელეკომუნიკაციო მოწყობილობებში შედის ანალოგური მოდემები, ანალოგური და ციფრული ტელეფონები, ISDN ტერმინალის ადაპტერები და ა.შ. მაგ.ampმაგალითად, ქსელური მოწყობილობები შეიცავს ADSL და საკაბელო მოდემებს, Ethernet ადაპტერებს და ჰაბებს. CDC განსაზღვრავს ჩარჩოს, რომელიც მოიცავს არსებული საკომუნიკაციო სერვისების სტანდარტებს, როგორიცაა V.250 (ტელეფონის ქსელზე მოდემებისთვის) და Ethernet (ლოკალური ქსელის მოწყობილობებისთვის), USB კავშირის გამოყენებით. საკომუნიკაციო მოწყობილობა პასუხისმგებელია მოწყობილობის მართვაზე, საჭიროების შემთხვევაში ზარების მართვაზე და მონაცემთა გადაცემაზე.
CDC განსაზღვრავს მოწყობილობების შვიდ ძირითად ჯგუფს. თითოეული ჯგუფი მიეკუთვნება კომუნიკაციის მოდელს, რომელიც შეიძლება მოიცავდეს რამდენიმე ქვეკლასს. მოწყობილობების თითოეულ ჯგუფს CDC-ის საბაზისო კლასის გარდა, აქვს საკუთარი სპეციფიკაციის დოკუმენტი. შვიდი ჯგუფია:
საზოგადოებრივი კომუტაციის სატელეფონო ქსელი (PSTN), მოწყობილობები, მათ შორის ხმოვანი მოდემები, ტელეფონები და სერიული ემულაციის მოწყობილობები. ინტეგრირებული სერვისების ციფრული ქსელის (ISDN) მოწყობილობები, მათ შორის ტერმინალური ადაპტერები და ტელეფონები. Ethernet კონტროლის მოდელის (ECM) მოწყობილობები, მათ შორის IEEE 802 ოჯახის მხარდამჭერი მოწყობილობები (მაგ.: საკაბელო და ADSL მოდემები, WiFi ადაპტერები). ასინქრონული გადაცემის რეჟიმის (ATM) მოწყობილობები, მათ შორის ADSL მოდემები და სხვა მოწყობილობები, რომლებიც დაკავშირებულია ATM ქსელებთან (სამუშაო სადგურები, როუტერები, LAN კომუტატორები). უსადენო მობილური კომუნიკაციის (WMC) მოწყობილობები, მათ შორის მრავალფუნქციური საკომუნიკაციო ტელეფონის მოწყობილობები, რომლებიც გამოიყენება ხმოვანი და მონაცემთა კომუნიკაციის სამართავად. Ethernet ემულაციის მოდელის (EEM) მოწყობილობები, რომლებიც ცვლიან Ethernet-ჩარჩოებულ მონაცემებს. ქსელის კონტროლის მოდელის (NCM) მოწყობილობები, მათ შორის მაღალსიჩქარიანი ქსელური მოწყობილობები (მაღალსიჩქარიანი პაკეტური წვდომის მოდემები, ხაზის ტერმინალური აღჭურვილობა).
CDC და მასთან დაკავშირებული ქვეკლასის იმპლემენტაცია შეესაბამება შემდეგ სპეციფიკაციებს:
უნივერსალური სერიული ავტობუსი, საკომუნიკაციო მოწყობილობების კლასის განმარტებები, ვერსია 1.2, 2010 წლის 3 ნოემბერი. უნივერსალური სერიული ავტობუსი, კომუნიკაციები, PSTN მოწყობილობების ქვეკლასი, ვერსია 1.2, 2007 წლის 9 თებერვალი.
USB მოწყობილობის CDC ბაზის კლასის გადაჭარბებაview
CDC მოწყობილობა შედგება შემდეგი ინტერფეისებისგან კომუნიკაციის შესაძლებლობების განსახორციელებლად:
კომუნიკაციების კლასის ინტერფეისი (CCI) პასუხისმგებელია მოწყობილობის მართვაზე და სურვილისამებრ, ზარების მართვაზე.
მოწყობილობის მართვა საშუალებას იძლევა მოწყობილობის ზოგადი კონფიგურაციისა და კონტროლის, ასევე ჰოსტისთვის მოვლენების შესახებ შეტყობინების. ზარის მართვა საშუალებას იძლევა ზარების დამყარებისა და დასრულების. ზარის მართვა შეიძლება მულტიპლექსირებული იყოს DCI-ის მეშვეობით. CCI სავალდებულოა ყველა CDC მოწყობილობისთვის. ის CDC ფუნქციას განსაზღვრავს CDC მოწყობილობის მიერ მხარდაჭერილი კომუნიკაციის მოდელის მითითებით. CCI-ს შემდგომი ინტერფეისი(ები) შეიძლება იყოს ნებისმიერი განსაზღვრული USB კლასის ინტერფეისი, როგორიცაა აუდიო ან მომწოდებლის სპეციფიკური ინტერფეისი. მომწოდებლის სპეციფიკური ინტერფეისი წარმოდგენილია კონკრეტულად DCI-ით.
მონაცემთა კლასის ინტერფეისი (DCI) პასუხისმგებელია მონაცემთა გადაცემაზე. გადაცემული და/ან მიღებული მონაცემები არ შეესაბამება კონკრეტულ
ფორმატი. მონაცემები შეიძლება იყოს საკომუნიკაციო ხაზიდან მიღებული ნედლი მონაცემები, მონაცემები საკუთრების ფორმატის მიხედვით და ა.შ. CCI-ს მიმდევარი ყველა DCI შეიძლება ჩაითვალოს დაქვემდებარებულ ინტერფეისებად.
CDC მოწყობილობას უნდა ჰქონდეს მინიმუმ ერთი CCI და ნული ან მეტი DCI. ერთი CCI და ნებისმიერი დაქვემდებარებული DCI ერთად უზრუნველყოფს ჰოსტისთვის ფუნქციას. ეს შესაძლებლობა ასევე მოიხსენიება, როგორც ფუნქცია. CDC კომპოზიტურ მოწყობილობაში შეიძლება გქონდეთ რამდენიმე

საავტორო უფლება © 2025 Silicon Laboratories. Ყველა უფლება დაცულია.

19/174

დასრულდაview
ფუნქციები. ამიტომ, მოწყობილობა შედგებოდა CCI-სა და DCI(s)-ის რამდენიმე ნაკრებისგან, როგორც ეს ნაჩვენებია ნახაზზე - CDC კომპოზიტური მოწყობილობა.
სურათი – CDC კომპოზიტური მოწყობილობა

CDC მოწყობილობა, სავარაუდოდ, გამოიყენებს საბოლოო წერტილების შემდეგ კომბინაციას:
კონტროლის IN და OUT ბოლო წერტილების წყვილი, რომელსაც ნაგულისხმევი ბოლო წერტილი ეწოდება. სურვილისამებრ, მასიური ან შეწყვეტის IN ბოლო წერტილი. მასიური ან იზოქრონული IN და OUT ბოლო წერტილების წყვილი. გაითვალისწინეთ, რომ Silicon Labs-ის USB მოწყობილობების დასტა ამჟამად არ უჭერს მხარს იზოქრონულ ბოლო წერტილებს.
ქვემოთ მოცემულ ცხრილში ნაჩვენებია სხვადასხვა საბოლოო წერტილების გამოყენება და CDC-ის რომელი ინტერფეისით გამოიყენება ისინი.
ცხრილი – დაავადებათა კონტროლის ცენტრის საბოლოო წერტილის გამოყენება

ბოლო წერტილი
კონტროლი IN
კონტროლი OUT
შეწყვეტა ან მასობრივი შესვლა მასობრივი ან იზოქრონული შესვლა მასობრივი ან იზოქრონული
გარეთ

მიმართულება
მოწყობილობიდან მასპინძელამდე
მასპინძელიდან მოწყობილობამდე
მოწყობილობიდან მასპინძელამდე
მოწყობილობიდან მასპინძელამდე
მასპინძელიდან მოწყობილობამდე

ინტერფეისის გამოყენება

CCI

ჩამოთვლის სტანდარტული მოთხოვნები, კლასის სპეციფიკური მოთხოვნები, მოწყობილობა

მართვა და სურვილისამებრ ზარების მართვა.

CCI

ჩამოთვლის სტანდარტული მოთხოვნები, კლასის სპეციფიკური მოთხოვნები, მოწყობილობა

მართვა და სურვილისამებრ ზარების მართვა.

CCI

მოვლენების შესახებ შეტყობინება, როგორიცაა ზარის აღმოჩენა, სერიული ხაზის სტატუსი, ქსელის სტატუსი.

DCI

ნედლი ან ფორმატირებული მონაცემების კომუნიკაცია.

DCI

ნედლი ან ფორმატირებული მონაცემების კომუნიკაცია.

საკომუნიკაციო მოწყობილობების უმეტესობა იყენებს შეფერხების საბოლოო წერტილს, რათა შეატყობინოს მასპინძელს მოვლენების შესახებ. იზოქრონული საბოლოო წერტილები არ უნდა იქნას გამოყენებული მონაცემთა გადაცემისთვის, როდესაც საკუთრების პროტოკოლი ეყრდნობა მონაცემთა ხელახლა გადაცემას USB პროტოკოლის შეცდომების შემთხვევაში. იზოქრონულმა კომუნიკაციამ შეიძლება თანდაყოლილი დაკარგოს მონაცემები, რადგან მას არ გააჩნია ხელახალი ცდის მექანიზმები.
კომუნიკაციის შვიდი ძირითადი მოდელი რამდენიმე ქვეკლასს მოიცავს. ქვეკლასი აღწერს, თუ როგორ უნდა გამოიყენოს მოწყობილობამ CCI მოწყობილობის მართვისა და ზარების მართვისთვის. ქვემოთ მოცემულ ცხრილში ნაჩვენებია ყველა შესაძლო ქვეკლასი და კომუნიკაციის მოდელი, რომელსაც ისინი მიეკუთვნებიან.
ცხრილი – CDC ქვეკლასები

ქვეკლასი
პირდაპირი ხაზის მართვის მოდელი აბსტრაქტული მართვის მოდელი

კომუნიკაციის მოდელი
PSTN
PSTN

Exampამ ქვეკლასის გამოყენებით მოწყობილობების სია
მოდემის მოწყობილობები, რომლებიც პირდაპირ კონტროლდება USB ჰოსტით
სერიული ემულაციის მოწყობილობები, მოდემის მოწყობილობები, რომლებიც კონტროლდება სერიული ბრძანებების ნაკრებით

საავტორო უფლება © 2025 Silicon Laboratories. Ყველა უფლება დაცულია.

20/174

დასრულდაview

ქვეკლასი

კომუნიკაციის მოდელი

Exampამ ქვეკლასის გამოყენებით მოწყობილობების სია

ტელეფონის მართვის მოდელი

PSTN

მრავალარხიანი კონტროლის ISDN მოდელი

CAPI კონტროლის მოდელი ISDN

Ethernet ქსელის ECM კონტროლის მოდელი

ბანკომატების ქსელი

ბანკომატ

კონტროლის მოდელი

უსადენო ტელეფონის მართვის მოდელი

WMC

მოწყობილობის მართვის WMC

მობილური პირდაპირი ხაზის მოდელი

WMC

OBEX

WMC

Ethernet ემულაციის EEM მოდელი

ქსელის კონტროლის მოდელი

NCM

ხმოვანი ტელეფონიის მოწყობილობები
ძირითადი ტარიფის ტერმინალის ადაპტერები, ძირითადი ტარიფის ტერმინალის ადაპტერები, ტელეფონები
ძირითადი სიჩქარის ტერმინალის ადაპტერები, პირველადი სიჩქარის ტერმინალის ადაპტერები, ტელეფონები, DOC-SIS საკაბელო მოდემები, ADSL მოდემები, რომლებიც მხარს უჭერენ PPPoE ემულაციას, Wi-Fi ადაპტერები (IEEE 802.11 ოჯახი), IEEE 802.3 ადაპტერები, ADSL მოდემები
მობილური ტერმინალური მოწყობილობები, რომლებიც უერთდებიან უკაბელო მოწყობილობებს
უკაბელო მოწყობილობებთან დაკავშირებული მობილური ტერმინალური აღჭურვილობა
მობილური ტერმინალური აღჭურვილობა, რომელიც უკავშირდება უკაბელო მოწყობილობებს. მოწყობილობები, რომლებიც იყენებენ Ethernet ჩარჩოებს, როგორც ტრანსპორტის შემდეგ ფენას. არ არის განკუთვნილი მარშრუტიზაციისა და ინტერნეტთან დაკავშირების მოწყობილობებისთვის. IEEE 802.3 ადაპტერები, რომლებიც ქსელში მაღალსიჩქარიან მონაცემთა გამტარობას ატარებენ.

USB მოწყობილობის CDC ACM კლასის რესურსების საჭიროებები Core-დან

ყოველ ჯერზე, როდესაც თქვენ დაამატებთ CDC ACM კლასის ინსტანციას USB კონფიგურაციაში sl_usbd_cdc_acm_add_to_configuration() ფუნქციის გამოძახების გზით, ბირთვიდან გამოიყოფა შემდეგი რესურსები.

რესურსი
ინტერფეისები ალტერნატიული ინტერფეისები საბოლოო წერტილები ინტერფეისის ჯგუფები

რაოდენობა
2 2 3 1

გაითვალისწინეთ, რომ ეს რიცხვები თითოეული კონფიგურაციისთვისაა. SL_USBD_INTERFACE_QUANTITY , SL_USBD_ALT_INTERFACE_QUANTITY , SL_USBD_INTERFACE_GROUP_QUANTITY და SL_USBD_DESCRIPTOR_QUANTITY კონფიგურაციის მნიშვნელობების დაყენებისას არ დაგავიწყდეთ იმის გათვალისწინება, თუ რამდენი კონფიგურაცია დაემატება კლასს. SL_USBD_OPEN_ENDPOINTS_QUANTITY კონფიგურაციის მნიშვნელობისთვის, რადგან ბოლო წერტილები იხსნება მხოლოდ მაშინ, როდესაც ჰოსტი კონფიგურაციას დაყენებს, თქვენ უბრალოდ უნდა გაითვალისწინოთ კლასის ეგზემპლარისთვის საჭირო ბოლო წერტილების რაოდენობა.
USB მოწყობილობის CDC ACM ქვეკლასი გადაჭარბებულიაview

CDC ბაზის კლასი შედგება კომუნიკაციების კლასის ინტერფეისისგან (CCI) და მონაცემთა კლასის ინტერფეისისგან (DCI), რომლებიც დეტალურად არის განხილული USB მოწყობილობის CDC ბაზის კლასის განყოფილებაში.view ეს განყოფილება განიხილავს ACM ტიპის CCI-ს. ის შედგება მართვის ელემენტისთვის ნაგულისხმევი საბოლოო წერტილისგან და შეტყობინების ელემენტისთვის შეწყვეტის საბოლოო წერტილისგან. DCI-ზე დაუზუსტებელი მონაცემების გადასატანად გამოიყენება მასიური საბოლოო წერტილების წყვილი.
ACM ქვეკლასს იყენებენ საკომუნიკაციო მოწყობილობების ორი ტიპი:
მოწყობილობები, რომლებიც მხარს უჭერენ AT ბრძანებებს (მაგალითად, ხმოვანი მოდემები). სერიული ემულაციის მოწყობილობები, რომლებსაც ასევე ვირტუალური COM პორტის მოწყობილობებს უწოდებენ.
ACM ქვეკლასისთვის არსებობს რამდენიმე ქვეკლასის სპეციფიკური მოთხოვნა. ისინი საშუალებას გაძლევთ აკონტროლოთ და დააკონფიგურიროთ მოწყობილობა. ყველა ACM მოთხოვნის სრული სია და აღწერა შეგიძლიათ იხილოთ სპეციფიკაციაში.

საავტორო უფლება © 2025 Silicon Laboratories. Ყველა უფლება დაცულია.

21/174

დასრულდაview PSTN მოწყობილობების ქვეკლასი, ვერსია 1.2, 2007 წლის 9 თებერვალი, სექცია 6.2.2.
ამ სიიდან, Silicon Labs9 ACM ქვეკლასი მხარს უჭერს შემდეგს:
ცხრილი – Silicon Labs-ის მიერ მხარდაჭერილი ACM მოთხოვნები

ქვეკლასის მოთხოვნის აღწერა

SetCommFeature GetCommFeature ClearCommFeature

ჰოსტი ამ მოთხოვნას აგზავნის მოცემული საკომუნიკაციო ფუნქციის პარამეტრების გასაკონტროლებლად. არ გამოიყენება სერიული ემულაციისთვის.
ჰოსტი აგზავნის ამ მოთხოვნას მოცემული საკომუნიკაციო ფუნქციის მიმდინარე პარამეტრების მისაღებად. არ გამოიყენება სერიული ემულაციისთვის.
ჰოსტი აგზავნის ამ მოთხოვნას მოცემული საკომუნიკაციო ფუნქციის პარამეტრების გასასუფთავებლად. არ გამოიყენება სერიული ემულაციისთვის.

SetLineCoding

ჰოსტი აგზავნის ამ მოთხოვნას ACM მოწყობილობის პარამეტრების კონფიგურაციისთვის: ბაუდის სიჩქარე, გაჩერების ბიტების რაოდენობა, პარიტეტის ტიპი და მონაცემთა ბიტების რაოდენობა. სერიული ემულაციისთვის, ეს მოთხოვნა ავტომატურად იგზავნება სერიული ტერმინალის მიერ ყოველ ჯერზე, როდესაც თქვენ კონფიგურაციას უკეთებთ სერიულ პარამეტრებს ღია ვირტუალური COM პორტისთვის.

GetLineCoding

ჰოსტი აგზავნის ამ მოთხოვნას მიმდინარე ACM პარამეტრების (ბაუდის სიჩქარე, გაჩერების ბიტები, პარიტეტი, მონაცემთა ბიტები) მისაღებად. სერიული ემულაციისთვის, სერიული ტერმინალები ავტომატურად აგზავნიან ამ მოთხოვნას ვირტუალური COM პორტის გახსნის დროს.

SetControlLineState ჰოსტი აგზავნის ამ მოთხოვნას ნახევრად დუპლექსური მოდემების ოპერატორის სამართავად და მიუთითებს, მზადაა თუ არა მონაცემთა ტერმინალური აღჭურვილობა (DTE). სერიული ემულაციის შემთხვევაში, DTE არის სერიული ტერმინალი. სერიული ემულაციისთვის, გარკვეული სერიული ტერმინალები საშუალებას გაძლევთ გაგზავნოთ ეს მოთხოვნა დაყენებული კონტროლით.

SetBreak

ჰოსტი აგზავნის ამ მოთხოვნას RS-232 სტილის შესვენების გენერირებისთვის. სერიული ემულაციისთვის, გარკვეული სერიული ტერმინალები საშუალებას გაძლევთ გაგზავნოთ ეს მოთხოვნა.

Silicon Labs9 ACM ქვეკლასი იყენებს შეწყვეტის შეყვანის საბოლოო წერტილს, რათა აცნობოს მასპინძელს სერიული ხაზის მიმდინარე მდგომარეობის შესახებ.
ხაზის მდგომარეობა არის ბიტმაპი, რომელიც აცნობებს ჰოსტს შემდეგს:

მონაცემები გაუქმებულია გადაჭარბების გამო პარიტეტის შეცდომის გამო კადრირების შეცდომა რგოლის სიგნალის აღმოჩენის მდგომარეობა შეწყვეტის აღმოჩენის მექანიზმის მდგომარეობა გადამცემი მატარებლის მდგომარეობა მიმღები მატარებლის აღმოჩენის მდგომარეობა

Silicon Labs9 ACM ქვეკლასის იმპლემენტაცია შეესაბამება შემდეგ სპეციფიკაციას:
უნივერსალური სერიული ავტობუსი, კომუნიკაციები, PSTN მოწყობილობების ქვეკლასი, ვერსია 1.2, 2007 წლის 9 თებერვალი.
USB მოწყობილობის CDC ACM კლასის კონფიგურაცია

ამ ნაწილში განხილულია CDC ACM კლასის (კომუნიკაციის მოწყობილობის კლასი, აბსტრაქტული მართვის მოდელი) კონფიგურაციის წესი. კონფიგურაციის პარამეტრების ორი ჯგუფი არსებობს:
USB მოწყობილობის CDC ACM კლასის აპლიკაციის სპეციფიკური კონფიგურაციები USB მოწყობილობის CDC ACM კლასის ეგზემპლარის კონფიგურაციები
USB მოწყობილობის CDC ACM კლასის აპლიკაციის სპეციფიკური კონფიგურაციები

CDC ბაზისური კლასი ACM ქვეკლასი
დაავადებათა კონტროლისა და პრევენციის ცენტრის ბაზისური კლასი

პირველ რიგში, Silicon Labs-ის USB მოწყობილობის CDC კლასის მოდულის გამოსაყენებლად, თქვენ უნდა შეცვალოთ 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 კონფიგურაციაში sl_usbd_cdc_acm_add_to_configuration() ფუნქციის გამოყენებით.
ყველა CDC ფუნქციისთვის მონაცემთა ინტერფეისების (DCI) საერთო რაოდენობა. თითოეული CDC ACM ფუნქცია, რომელიც დამატებულია vi c ll-ში sl_usbd_cdc_acm_create_instance() ფუნქციაში, დაამატებს dt ინტერფეისს.

ნაგულისხმევი მნიშვნელობა
2
1
2

ACM ქვეკლასი
ACM ქვეკლასს აქვს ერთი კომპილაციის დროის კონფიგურაცია, რომელიც ნაჩვენებია ქვემოთ მოცემულ ცხრილში.
ცხრილი – USB მოწყობილობის CDC ACM კონფიგურაციის განსაზღვრა

კონფიგურაციის სახელი
SL_USBD_CDC_ACM_SUBCL ASS_I NSTANCE_QUANTITY

აღწერა
აკონფიგურირებს ქვეკლასების ინსტანციების რაოდენობას, რომლებსაც გამოყოფთ ზარის მეშვეობით.
ფუნქცია sl_usbd_cdc_acm_create_instance().

ნაგულისხმევი მნიშვნელობა
2

USB მოწყობილობის CDC ACM კლასის ეგზემპლარის კონფიგურაციები

ეს განყოფილება განსაზღვრავს CDC ACM სერიული კლასის ინსტანციებთან დაკავშირებულ კონფიგურაციებს. კლასის ინსტანციის შექმნა, ხაზის მდგომარეობა, ინტერვალი, გამოძახება, მართვა, შესაძლებლობები.
კლასის ეგზემპლარის შექმნა

CDC ACM სერიული კლასის ეგზემპლარის შესაქმნელად, გამოიძახეთ ფუნქცია T a sl_usbd_cdc_acm_create_instance(). ეს ფუნქცია იყენებს სამ კონფიგურაციის არგუმენტს, როგორც ეს აქ არის აღწერილი.

ხაზის_მდგომარეობის_ინტერვალი
ეს არის ინტერვალი (მილიწამებში), რომლის განმავლობაშიც თქვენი CDC ACM სერიული კლასის ინსტანცია ხაზის მდგომარეობის შესახებ შეტყობინებებს T aa ჰოსტს გადასცემს. ეს მნიშვნელობა ორის ხარისხში უნდა იყოს (1, 2, 4, 8, 16 და ა.შ.).

call_mgmt_capabilities
ზარის მართვის შესაძლებლობების ბიტმაპი. ბიტმაპის შესაძლო მნიშვნელობებია შემდეგი:

მნიშვნელობა (ბიტი)
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-ისთვის CDC ACM მოვლენის გამოძახებისას გამოსაძახებელი უკუკავშირის ფუნქციების ნაკრების მინიჭება. ყველა უკუკავშირი სავალდებულო არ არის და როდესაც უკუკავშირი არ არის საჭირო, callbacks სტრუქტურის ცვლადში შეიძლება გადაეცეს null მაჩვენებელი (NULL). ქვემოთ მოცემულ ცხრილში აღწერილია ამ კონფიგურაციის სტრუქტურაში ხელმისაწვდომი თითოეული კონფიგურაციის ველი.
ცხრილი – sl_usbd_cdc_acm _callbacks_t კონფიგურაციის სტრუქტურა

ველები

აღწერა

.ჩართვა

გამოიძახება, როდესაც USB კლასის ეგზემპლარი ჩართულია

წარმატებით.

.disable

გამოიძახება, როდესაც USB კლასის ეგზემპლარი გამორთულია.

.line_control_changed გამოიძახება ხაზის კონტროლის ცვლილების მიღებისას.

line_coding_changed გამოიძახება ხაზის კოდირების ცვლილების მიღებისას.

ფუნქციის ხელმოწერა
void app_usbd_cdc_acm_enable(uint8_t subclass_nbr);
void 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_ხაზის_კოდირება

უკუკავშირის ფუნქციებისთვის იხილეთ განყოფილება „მოვლენის შეტყობინებების უკუკავშირის რეგისტრაცია“, მაგ.ampლე.
USB მოწყობილობის CDC ACM კლასის პროგრამირების სახელმძღვანელო

ეს განყოფილება განმარტავს, თუ როგორ გამოიყენოთ CDC აბსტრაქტული კონტროლის მოდელის კლასი. USB მოწყობილობის ინიციალიზაცია CDC ACM კლასის USB მოწყობილობის CDC ACM კლასის ეგზემპლარის დამატება თქვენს მოწყობილობაზე კომუნიკაცია CDC ACM კლასის გამოყენებით
USB მოწყობილობის CDC ACM კლასის ინიციალიზაცია

თქვენს მოწყობილობაზე CDC ACM კლასის ფუნქციონალურობის დასამატებლად, ჯერ უნდა ინიციალიზაცია გაუკეთოთ CDC საბაზო კლასის და ACM ქვეკლასის sl_usbd_cdc_init() და sl_usbd_cdc_acm_init() ფუნქციების შესრულებით. ქვემოთ მოცემული მაგალითი გვიჩვენებს, თუ როგორ უნდა დააინსტალიროთ sl_usbd_cdc_init() და sl_usbd_cdc_acm_init() ნაგულისხმევი ინსტრუმენტების გამოყენებით.

Example – CDC ACM კლასის ინიციალიზაცია

sl_status_t სტატუსი;
სტატუსი = sl_usbd_cdc_init(); თუ (სტატუსი! SL_STATUS_OK) { /* შეცდომა მოხდა. აქ უნდა დაემატოს შეცდომების დამუშავება. */
}
სტატუსი = sl_usbd_cdc_acm_init(); თუ (სტატუსი! SL_STATUS_OK) { /* შეცდომა მოხდა. აქ უნდა დაემატოს შეცდომების დამუშავება. */
}
USB მოწყობილობის CDC ACM კლასის ეგზემპლარის დამატება თქვენს მოწყობილობაზე
თქვენს მოწყობილობაზე CDC ACM კლასის ფუნქციონალურობის დასამატებლად, თქვენ უნდა შექმნათ ეგზემპლარი და შემდეგ დაამატოთ ის თქვენი მოწყობილობის კონფიგურაციაში.
CDC ACM კლასის ინსტანციის შექმნა

საავტორო უფლება © 2025 Silicon Laboratories. Ყველა უფლება დაცულია.

24/174

დასრულდაview
CDC ACM კლასის ეგზემპლარის თქვენი მოწყობილობის კონფიგურაციაში დამატება. მოვლენების შეტყობინებების უკუკავშირის რეგისტრაცია.
CDC ACM კლასის ინსტანციის შექმნა
ა ...
Example – CDC ACM ფუნქციის შექმნა sl_usbd_cdc_acm_create_instance()-ის მეშვეობით

uint8_t ქვეკლასი_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 კლასის ეგზემპლარის დამატება თქვენი მოწყობილობის კონფიგურაციაში (კონფიგურაციებში)
CDC ACM კლასის ეგზემპლარის შექმნის შემდეგ, მისი კონფიგურაციაში დამატება ფუნქციის გამოძახებით შეგიძლიათ
sl_usbd_cdc_acm_add_to_configuration().
ქვემოთ მოცემული მაგალითი გვიჩვენებს, თუ როგორ უნდა დააკონფიგურიროთ 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) sl_usbd_cdc_acm_create_instance() ფუნქციის მიერ დაბრუნებული კონფიგურაციისთვის დასამატებელი ss ნომერი. (2) კონფიგურაციის ნომერი (აქ ემატება მას სრული სიჩქარის კონფიგურაციას).
ღონისძიების შეტყობინებების უკუკავშირის რეგისტრაცია
CDC ACM სერიულ კლასს შეუძლია აცნობოს თქვენს აპლიკაციას ხაზის კონტროლის ან კოდირების ნებისმიერი ცვლილების შესახებ შეტყობინების უკუკავშირის ფუნქციების მეშვეობით. უკუკავშირის ფუნქციების სტრუქტურა შეიძლება გადაეცეს არგუმენტად ACM ეგზემპლარის შექმნის დროს. გაითვალისწინეთ, რომ ეს უკუკავშირები არჩევითია. მაგ.ample – CDC ACM უკუკავშირის რეგისტრაცია ასახავს უკუკავშირის რეგისტრაციის ფუნქციების გამოყენებას. მაგ.ample – CDC ACM-ის უკუკავშირის იმპლემენტაცია აჩვენებს ყოფილსampუკუკავშირის ფუნქციების იმპლემენტაციის ლე.
Example – CDC ACM-ის უკუკავშირის რეგისტრაცია

საავტორო უფლება © 2025 Silicon Laboratories. Ყველა უფლება დაცულია.

25/174

დასრულდაview

uint8_t ქვეკლასი_nbr; sl_status_t სტატუსი;
sl_usbd_cdc_acm_callbacks_t sli_usbd_cdc_acm_callbacks = { app_usbd_cdc_acm_connect, app_usbd_cdc_acm_disconnect, app_usbd_cdc_acm_line_control_changed, app_usbd_cdc_acm_line_coding_changed, };
სტატუსი = sl_usbd_cdc_acm_create_instance(64u, SL_USBD_ACM_SERIAL_CALL_MGMT_DATA_CCI_DCI | SL_USBD_ACM_SERIAL_CALL_MGMT_DEV, &sli_usbd_cdc_acm_callbacks, &subclass_nbr);
თუ (სტატუსი! SL_STATUS_OK) { /* შეცდომა მოხდა. შეცდომების დამუშავება აქ უნდა დაემატოს. */ }
Example – CDC ACM-ის უკუკავშირის იმპლემენტაცია

bool app_usbd_cdc_acm_line_coding_changed (uint8_t

ქვეკლასი_nbr,

sl_usbd_cdc_acm_line_coding_t *p_line_coding)

{

uint32_t ბაუდრატეიმი_ახალი;

uint8_t პარიტეტი_ახალი;

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 event, uint8_t event_changed)
{ bool rts_state; bool rts_state_changed; bool dtr_state; bool dtr_state_changed; bool brk_state; bool brk_state_changed;

/* დავალება ახალი ხაზის კონტროლის გამოყენება. */ rts_state = ((event & 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 = ((event & 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 = ((event & 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, თუ ხაზის კოდირების გამოყენება ვერ მოხერხდა. წინააღმდეგ შემთხვევაში, დააბრუნეთ true.
კომუნიკაცია CDC ACM კლასის გამოყენებით
სერიული სტატუსი
ხაზის კოდირება ხაზის კონტროლი

საავტორო უფლება © 2025 Silicon Laboratories. Ყველა უფლება დაცულია.

26/174

დასრულდაview

ხაზის მდგომარეობის ქვეკლასის ეგზემპლარის კომუნიკაცია
სერიული სტატუსი
ხაზის კოდირება
USB ჰოსტი აკონტროლებს CDC ACM მოწყობილობის ხაზის კოდირებას (ბაუდის სიჩქარე, პარიტეტი და ა.შ.). საჭიროების შემთხვევაში, აპლიკაცია პასუხისმგებელია ხაზის კოდირების დაყენებაზე. მიმდინარე ხაზის კოდირების მისაღებად და დასაყენებლად გათვალისწინებულია ორი ფუნქცია, როგორც ეს აღწერილია ქვემოთ მოცემულ ცხრილში.
ცხრილი – CDC ACM ხაზის კოდირების ფუნქციები

ფუნქცია
sl_usbd_cdc_acm_g e t_line _cod ing ()
sl_usbd_cdc_acm_s და t_line _cod ing ()

აღწერა
თქვენს აპლიკაციას შეუძლია მიიღოს მიმდინარე ხაზის კოდირების პარამეტრები ჰოსტიდან SetLineCoding მოთხოვნების გამოყენებით ან sl_usbd_cdc_acm_set_line_coding() ფუნქციით.
თქვენს აპლიკაციას შეუძლია ხაზის კოდირების დაყენება. ჰოსტს შეუძლია პარამეტრების მოძიება GetLineCoding მოთხოვნის გამოყენებით.

ხაზის კონტროლი
USB ჰოსტი აკონტროლებს CDC ACM მოწყობილობის ხაზის კონტროლს (RTS და DTR პინები, გაწყვეტის სიგნალი და ა.შ.). საჭიროების შემთხვევაში, თქვენი აპლიკაცია პასუხისმგებელია ხაზის კონტროლის გამოყენებაზე. ფუნქცია გათვალისწინებულია მიმდინარე ხაზის კონტროლის მისაღებად და დასაყენებლად, როგორც ეს აღწერილია ქვემოთ მოცემულ ცხრილში.
ცხრილი – CDC ACM ხაზის კონტროლის ფუნქციები

ფუნქცია
sl_usb d _cd c_acm_g e t_line _co ntr o l_state ()

თქვენს აპლიკაციას შეუძლია მიიღოს ჰოსტის მიერ დაყენებული მიმდინარე საკონტროლო ხაზის მდგომარეობა SetControlLineState მოთხოვნის გამოყენებით.

ხაზის სახელმწიფო
USB ჰოსტი ხაზის მდგომარეობას რეგულარული ინტერვალებით იღებს. თქვენმა აპლიკაციამ ხაზის მდგომარეობა ყოველ ჯერზე უნდა განაახლოს. საჭიროების შემთხვევაში, თქვენი აპლიკაცია პასუხისმგებელია ხაზის მდგომარეობის დაყენებაზე. მიმდინარე ხაზის კონტროლის მისაღებად და დასაყენებლად გათვალისწინებულია ორი ფუნქცია, როგორც ეს აღწერილია ქვემოთ მოცემულ ცხრილში.
ცხრილი – CDC ACM ხაზის მდგომარეობის ფუნქციები

ფუნქცია
sl_usb d _cd c_acm_se t _line _state _e ve nt()
sl_usbd_cdc_acm_cle ar_line _state _e ve nt()

თქვენს აპლიკაციას შეუძლია დააყენოს ხაზის მდგომარეობის ნებისმიერი მოვლენა(ები). ხაზის მდგომარეობის დაყენებისას, ჰოსტს ეგზავნება შეწყვეტის შემავალი შეტყობინება, რათა შეატყობინოს მას სერიული ხაზის მდგომარეობის ცვლილების შესახებ.
აპლიკაციას შეუძლია ხაზის მდგომარეობის ორი მოვლენის გასუფთავება: გადამცემი მატარებლის და მიმღები მატარებლის აღმოჩენა. ყველა სხვა მოვლენა თვითგასუფთავებადია ACM სერიული ემულაციის ქვეკლასის მიერ.

ქვეკლასის ეგზემპლარის კომუნიკაცია

Silicon Labs-ის ACM ქვეკლასი ჰოსტთან კომუნიკაციისთვის შემდეგ ფუნქციებს გვთავაზობს. functions9 პარამეტრების შესახებ დამატებითი ინფორმაციისთვის იხილეთ CDC ACM ქვეკლასის ფუნქციების ცნობარი.

ფუნქციის სახელი
sl_usb d _cd c_acm_ re ad () sl_usb d _cd c_acm_write ()

ოპერაცია
იღებს მონაცემებს ჰოსტიდან bulk OUT საბოლოო წერტილის მეშვეობით. ეს ფუნქცია ბლოკავს. აგზავნის მონაცემებს ჰოსტისთვის bulk IN საბოლოო წერტილის მეშვეობით. ეს ფუნქცია ბლოკავს.

საავტორო უფლება © 2025 Silicon Laboratories. Ყველა უფლება დაცულია.

27/174

დასრულდაview

ცხრილი – CDC ACM Communication API-ის შეჯამება aaaaa sl_usbd_cdc_acm_read() და sl_usbd_cdc_acm_write() უზრუნველყოფენ სინქრონულ კომუნიკაციას, რაც ნიშნავს, რომ გადაცემის ბლოკირება ხდება. სხვა სიტყვებით რომ ვთქვათ, ფუნქციის გამოძახებისას, აპლიკაცია იბლოკება გადაცემის დასრულებამდე, შეცდომით ან მის გარეშე. შესაძლებელია დროის ამოწურვის მითითება, რათა თავიდან იქნას აცილებული მუდმივი ლოდინი. მაგ.ampქვემოთ მოცემულია წაკითხვისა და ჩაწერის მაგალითიample, რომელიც იღებს მონაცემებს ჰოსტისგან bulk OUT ბოლო წერტილის გამოყენებით და აგზავნის მონაცემებს ჰოსტთან bulk IN ბოლო წერტილის გამოყენებით.
ჩამონათვალი - სერიული წაკითხვა და ჩაწერა 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) sl_usbd_cdc_acm_create_instance()-ით შექმნილი კლასის ინსტანციის ნომერი უზრუნველყოფს AC ქვეკლასის შიდა მითითებას, რათა მოხდეს გადაცემის შესაბამის ნაყარი OUT ან IN საბოლოო წერტილამდე მარშრუტიზაცია. (2) თქვენმა აპლიკაციამ უნდა უზრუნველყოს, რომ ფუნქციისთვის მოწოდებული ბუფერი საკმარისად დიდია ყველა მონაცემის დასატევად. წინააღმდეგ შემთხვევაში, შეიძლება წარმოიშვას სინქრონიზაციის პრობლემები. (3) უსასრულო ბლოკირების სიტუაციის თავიდან ასაცილებლად, მიუთითეთ მილიწამებში გამოხატული ტაიმ-აუტი. 809 მნიშვნელობა აპლიკაციის დავალებას სამუდამოდ ლოდინს აიძულებს. (4) აპლიკაცია უზრუნველყოფს ინიციალიზებული გადაცემის ბუფერს.

საავტორო უფლება © 2025 Silicon Laboratories. Ყველა უფლება დაცულია.

28/174

დასრულდაview
დასრულდაview

USB მოწყობილობის HID კლასი

USB მოწყობილობის HID კლასის გადაჭარბებაview USB მოწყობილობის HID კლასის რესურსების საჭიროება ძირითადი USB მოწყობილობიდან HID კლასის კონფიგურაცია USB მოწყობილობის HID კლასის პროგრამირების სახელმძღვანელო HID პერიოდული შეყვანის ანგარიშების დავალება
ეს განყოფილება აღწერს Silicon Labs-ის USB მოწყობილობის მიერ მხარდაჭერილ ადამიანის ინტერფეისის მოწყობილობის (HID) კლასს.
HID კლასი მოიცავს მოწყობილობებს, რომლებსაც ადამიანები იყენებენ კომპიუტერის ოპერაციების სამართავად, როგორიცაა კლავიატურები, მაუსები, საჩვენებელი მოწყობილობები და სათამაშო მოწყობილობები.
HID კლასის გამოყენება ასევე შესაძლებელია კომპოზიტურ მოწყობილობაში, რომელიც შეიცავს ისეთ მართვის ელემენტებს, როგორიცაა სახელურები, გადამრთველები, ღილაკები და სლაიდერები. მაგ.ampაუდიო ყურსასმენში ხმის, დადუმებისა და გამორთვის კონტროლი ყურსასმენის HID ფუნქციით კონტროლდება. HID კლასს შეუძლია მონაცემების გაცვლა ნებისმიერი მიზნით, მხოლოდ კონტროლისა და შეფერხების გადაცემის გამოყენებით.
HID კლასი ერთ-ერთი უძველესი და ყველაზე ფართოდ გამოყენებადი USB კლასია. ყველა ძირითადი მასპინძელი ოპერაციული სისტემა უზრუნველყოფს მშობლიურ დრაივერს HID მოწყობილობების სამართავად, რის გამოც სხვადასხვა მომწოდებლის სპეციფიკური მოწყობილობები მუშაობენ HID კლასთან. ეს კლასი ასევე მოიცავს სხვადასხვა ტიპის გამომავალ ელემენტებს, როგორიცაა LED-ები, აუდიო, ტაქტილური უკუკავშირი და ა.შ.
HID-ის იმპლემენტაცია შეესაბამება შემდეგ სპეციფიკაციებს:
ადამიანის ინტერფეისის მოწყობილობების (HID) მოწყობილობის კლასის განმარტება, 27/6/01, ვერსია 1.11. უნივერსალური სერიული ავტობუსის HID გამოყენების ცხრილები, 28/10/2004, ვერსია 1.12.
USB მოწყობილობის HID კლასის გადაჭარბებაview
დასრულდაview
HID მოწყობილობა შედგება შემდეგი საბოლოო წერტილებისგან:
კონტროლის IN და OUT ბოლო წერტილების წყვილი, რომელსაც ეწოდება ნაგულისხმევი ბოლო წერტილი; შეწყვეტის IN ბოლო წერტილი; შეწყვეტის OUT დამატებითი ბოლო წერტილი.
ქვემოთ მოცემულ ცხრილში აღწერილია სხვადასხვა საბოლოო წერტილების გამოყენება:
ცხრილი – HID კლასის საბოლოო წერტილების გამოყენება

საბოლოო წერტილის მიმართულების გამოყენება

კონტროლი IN
კონტროლი
გარეთ
შეწყვეტა შეყვანა
შეწყვეტა
გარეთ

მოწყობილობიდან მასპინძელამდე
მასპინძელიდან მოწყობილობამდე
მოწყობილობიდან მასპინძელამდე
მასპინძელიდან მოწყობილობამდე

ჩამოთვლის სტანდარტული მოთხოვნები, კლასის სპეციფიკური მოთხოვნები და მონაცემთა კომუნიკაცია (შეყვანა, ფუნქციების ანგარიშები, რომლებიც იგზავნება მასპინძელთან GET_REPORT მოთხოვნით). ჩამოთვლის სტანდარტული მოთხოვნები, კლასის სპეციფიკური მოთხოვნები და მონაცემთა კომუნიკაცია (გამომავალი, ფუნქციების ანგარიშები, რომლებიც მიღებულია მასპინძელისგან SET_REPORT მოთხოვნით). მონაცემთა კომუნიკაცია (შეყვანა და ფუნქციების ანგარიშები).
მონაცემთა კომუნიკაცია (გამომავალი და მახასიათებლების ანგარიშები).

მოხსენება

საავტორო უფლება © 2025 Silicon Laboratories. Ყველა უფლება დაცულია.

29/174

დასრულდაview

მასპინძელი და HID მოწყობილობა მონაცემებს ანგარიშების გამოყენებით ცვლიან. ანგარიში შეიცავს ფორმატირებულ მონაცემებს, რომლებიც ინფორმაციას გვაწვდიან HID მოწყობილობის მართვის საშუალებებისა და სხვა ფიზიკური ერთეულების შესახებ. მართვის საშუალება მომხმარებლის მიერ მანიპულირებადია და მოწყობილობის ერთ ასპექტს მართავს. მაგალითადampმაგალითად, მართვის საშუალება შეიძლება იყოს მაუსის ან კლავიატურის ღილაკი, გადამრთველი და ა.შ. სხვა ობიექტები მომხმარებელს აწვდიან ინფორმაციას მოწყობილობის გარკვეული ფუნქციების მდგომარეობის შესახებ. მაგალითადampმაგალითად, კლავიატურაზე არსებული LED ინდიკატორები აცნობებენ მომხმარებელს Caps Lock-ის ჩართვის, ციფრული კლავიატურის გააქტიურების და ა.შ. შესახებ.
ანგარიშის მონაცემების ფორმატი და გამოყენება მასპინძელს ესმის ანგარიშის აღმწერის შინაარსის ანალიზით. შინაარსის ანალიზს ახორციელებს პარსერი. ანგარიშის აღმწერი აღწერს მოწყობილობაში თითოეული კონტროლის მიერ მოწოდებულ მონაცემებს. იგი შედგება ელემენტებისგან, რომლებიც წარმოადგენს მოწყობილობის შესახებ ინფორმაციის ნაწილებს და შედგება 1 ბაიტიანი პრეფიქსისა და ცვლადი სიგრძისგან.
მონაცემები. ელემენტის ფორმატის შესახებ დამატებითი ინფორმაციისთვის იხილეთ
1.11=, პუნქტი 5.6 და 6.2.2.
არსებობს ნივთების სამი ძირითადი ტიპი:
მთავარი ელემენტი განსაზღვრავს ან აჯგუფებს მონაცემთა ველების გარკვეულ ტიპებს.
გლობალური ელემენტი აღწერს კონტროლის მონაცემთა მახასიათებლებს.
ლოკალური ერთეული აღწერს კონტროლის მონაცემთა მახასიათებლებს.
თითოეული ელემენტის ტიპი განისაზღვრება სხვადასხვა ფუნქციით. ელემენტის ფუნქციას ასევე შეიძლება ეწოდოს tagელემენტის ფუნქცია შეიძლება განვიხილოთ, როგორც ქვეელემენტი, რომელიც მიეკუთვნება ელემენტის სამი ძირითადი ტიპიდან ერთ-ერთს. ქვემოთ მოცემულ ცხრილში მოცემულია მოკლე მიმოხილვა.view item9s ფუნქციების თითოეული ელემენტის ტიპში. თითოეული კატეგორიის ელემენტების სრული აღწერილობისთვის იხილეთ
ცხრილი – ელემენტის ფუნქციის აღწერა თითოეული ელემენტის ტიპისთვის

ელემენტის ტიპი ფუნქცია

აღწერა

მთავარი შეყვანა

აღწერს ინფორმაციას ერთი ან მეტი ფიზიკური კონტროლის საშუალებით მოწოდებული მონაცემების შესახებ.

მთავარი გამომავალი აღწერს მოწყობილობაზე გაგზავნილ მონაცემებს.

მთავარი მახასიათებელი

აღწერს მოწყობილობის კონფიგურაციის ინფორმაციას, რომელიც იგზავნება ან მიიღება მოწყობილობიდან და გავლენას ახდენს მოწყობილობის ან მისი ერთ-ერთი კომპონენტის საერთო ქცევაზე.

კოლექციის მთავარ ჯგუფთან დაკავშირებული ერთეულები (შეყვანა, გამომავალი ან ფუნქცია).

მთავარი - კოლექციის დახურვის დასასრული. კოლექცია

საავტორო უფლება © 2025 Silicon Laboratories. Ყველა უფლება დაცულია.

30/174

დასრულდაview

ელემენტის ტიპი ფუნქცია

აღწერა

გლობალური გამოყენების გვერდი

განსაზღვრავს მოწყობილობაში ხელმისაწვდომ ფუნქციას.

გლობალური ლოგიკური განსაზღვრავს ლოგიკურ ერთეულებში მოხსენებული მნიშვნელობების ქვედა ზღვარს. მინიმალური

გლობალური ლოგიკური განსაზღვრავს ლოგიკურ ერთეულებში მოხსენებული მნიშვნელობების ზედა ზღვარს. მაქსიმალური

გლობალური ფიზიკური განსაზღვრავს ფიზიკურ ერთეულებში მოხსენებული მნიშვნელობების ქვედა ზღვარს, ანუ ფიზიკურ ერთეულებში გამოხატულ ლოგიკურ მინიმუმს.

გლობალური ფიზიკური განსაზღვრავს ფიზიკურ ერთეულებში მოხსენებული მნიშვნელობების ზედა ზღვარს, ანუ ლოგიკურ მაქსიმუმს, რომელიც გამოხატულია ფიზიკურ ერთეულებში.

გლობალური ერთეული

მიუთითებს ერთეულ ხარისხზე 10-ის ფუძით. ხარისხოვანი მაჩვენებელი მერყეობს -8-დან +7-მდე.

ექსპონენტი

გლობალური ერთეული

მიუთითებს მოხსენებული მნიშვნელობების ერთეულს. მაგალითად, სიგრძის, მასის, ტემპერატურის ერთეულები და ა.შ.

გლობალური ანგარიშის ზომა

მიუთითებს ანგარიშის ველების ზომას ბიტებში.

გლობალური ანგარიშის ID მიუთითებს კონკრეტულ ანგარიშზე დამატებულ პრეფიქსზე.

გლობალური ანგარიშების რაოდენობა

მიუთითებს ერთეულისთვის მონაცემთა ველების რაოდენობაზე.

გლობალური ბიძგი

ათავსებს გლობალური ელემენტის მდგომარეობის ცხრილის ასლს CPU დასტაზე.

გლობალური პოპი

ელემენტის მდგომარეობის ცხრილს დასტის ბოლო სტრუქტურით ცვლის.

ადგილობრივი გამოყენება

წარმოადგენს ინდექსს, რომელიც განსაზღვრავს კონკრეტული გამოყენების ნიშანს გამოყენების გვერდზე. ის მიუთითებს მომწოდებლის მიერ შემოთავაზებულ გამოყენებას კონკრეტული კონტროლისთვის ან კონტროლის ჯგუფებისთვის. გამოყენება აწვდის ინფორმაციას აპლიკაციის შემქმნელს იმის შესახებ, თუ რას ზომავს რეალურად კონტროლი.

ადგილობრივი გამოყენება

განსაზღვრავს მასივთან ან ბიტმაპთან დაკავშირებულ საწყის გამოყენებას.

მინიმალური

ადგილობრივი გამოყენება

განსაზღვრავს მასივთან ან ბიტმაპთან დაკავშირებულ საბოლოო გამოყენებას.

მაქსიმალური

ლოკალური აღმნიშვნელი განსაზღვრავს კონტროლისთვის გამოყენებულ სხეულის ნაწილს. ინდექსი მიუთითებს აღმნიშვნელზე ფიზიკურ ინდიკატორში.

ინდექსი

აღმწერი.

ლოკალური დიზაინერი განსაზღვრავს მასივთან ან ბიტმაპთან ასოცირებული საწყისი დიზაინერის ინდექსს. მინიმალური

ლოკალური დიზაინერი განსაზღვრავს მასივთან ან ბიტმაპთან ასოცირებული ბოლო დიზაინერის ინდექსს. მაქსიმალური

ლოკალური სტრიქონის ინდექსი

სტრიქონის აღმწერის სტრიქონის ინდექსი. ის საშუალებას იძლევა, სტრიქონი კონკრეტულ ელემენტთან ან კონტროლთან ასოცირდეს.

ლოკალური სტრიქონი

მასივში კონტროლებისთვის თანმიმდევრული სტრიქონების ჯგუფის მინიჭებისას განსაზღვრავს პირველი სტრიქონის ინდექსს.

მინიმალური ან ბიტმაპი.

ადგილობრივი ადგილობრივი

სტრიქონის მაქსიმუმი
გამსაზღვრელი

განსაზღვრავს ბოლო სტრიქონის ინდექსს, როდესაც მასივში ან ბიტმაპში არსებულ კონტროლებს ენიჭება თანმიმდევრული სტრიქონების ჯგუფი.
განსაზღვრავს ლოკალური ელემენტების ნაკრების დასაწყისს ან დასასრულს.

Control9s მონაცემები უნდა განსაზღვრავდეს სულ მცირე შემდეგ ელემენტებს:
შეყვანა, გამოყვანა ან ფუნქცია ძირითადი ელემენტები გამოყენება ლოკალური ელემენტი გამოყენების გვერდი გლობალური ელემენტი ლოგიკური მინიმუმი გლობალური ელემენტი ლოგიკური მაქსიმუმი გლობალური ელემენტი ანგარიშის ზომა გლობალური ელემენტი

საავტორო უფლება © 2025 Silicon Laboratories. Ყველა უფლება დაცულია.

31/174

დასრულდაview
ანგარიშების რაოდენობა გლობალური ერთეული ქვემოთ მოცემულ ცხრილში ნაჩვენებია მაუსის ანგარიშის აღმწერის შინაარსის წარმოდგენა ჰოსტის HID პარსერის პერსპექტივიდან. მაუსს აქვს სამი ღილაკი (მარცხენა, მარჯვენა და ბორბალი). კოდი წარმოდგენილია ექსში.ampქვემოთ მოცემულია კოდის იმპლემენტაცია, რომელიც შეესაბამება მაუსის ანგარიშის აღმწერის ამ წარმოდგენას.
სურათი - ანგარიშის აღმწერის შინაარსი მასპინძელი HID ანალიზატორიდან View

(1) გამოყენების გვერდის ფუნქცია განსაზღვრავს მოწყობილობის ზოგად ფუნქციას. ამ შემთხვევაშიampანუ, HID მოწყობილობა ეკუთვნის
ზოგადი დესკტოპის კონტროლი.
(2) კოლექცია აპლიკაცია აჯგუფებს ძირითად ელემენტებს, რომლებსაც აქვთ საერთო დანიშნულება და შესაძლოა ნაცნობი იყვნენ აპლიკაციებისთვის. დიაგრამაზე ჯგუფი შედგება სამი შეყვანის ძირითადი ელემენტისგან. ამ კოლექციისთვის, მართვის საშუალებების რეკომენდებული გამოყენებაა მაუსი, როგორც ეს მითითებულია გამოყენების პუნქტში. (3) ჩადგმული კოლექციები შეიძლება გამოყენებულ იქნას აპლიკაციებისთვის ერთი მართვის ან მართვის საშუალებების ჯგუფის გამოყენების შესახებ დამატებითი დეტალების მისაწოდებლად. ამ მაგალითშიampმაგალითად, კოლექციის ფიზიკური, რომელიც კოლექციის აპლიკაციაშია ჩადგმული, შედგება იმავე სამი შეყვანის ელემენტისგან, რომლებიც ქმნიან კოლექციის აპლიკაციას. კოლექციის ფიზიკური გამოიყენება მონაცემთა ელემენტების ნაკრებისთვის, რომლებიც წარმოადგენენ ერთ გეომეტრიულ წერტილში შეგროვებულ მონაცემთა წერტილებს. მაგალითადampმაგალითად, შემოთავაზებული გამოყენება არის მაჩვენებელი, როგორც ეს მითითებულია გამოყენების პუნქტში. აქ მაჩვენებელის გამოყენება ეხება მაუსის პოზიციის კოორდინატებს და სისტემის პროგრამული უზრუნველყოფა გადათარგმნის მაუსის კოორდინატებს ეკრანის კურსორის მოძრაობისას. (4) ასევე შესაძლებელია ჩადგმული გამოყენების გვერდები, რომლებიც უფრო მეტ დეტალს გვაწვდიან მოწყობილობის ზოგადი ფუნქციის გარკვეული ასპექტის შესახებ. ამ შემთხვევაში, ორი შეყვანის პუნქტი დაჯგუფებულია და შეესაბამება მაუსის ღილაკებს. ერთი შეყვანის პუნქტი განსაზღვრავს მაუსის სამ ღილაკს (მარჯვენა, მარცხენა და ბორბალი) პუნქტისთვის მონაცემთა ველების რაოდენობის (ანგარიშის რაოდენობის პუნქტი), მონაცემთა ველის ზომის (ანგარიშის ზომის პუნქტი) და თითოეული მონაცემთა ველის შესაძლო მნიშვნელობების მიხედვით (გამოყენების მინიმალური და მაქსიმალური, ლოგიკური მინიმალური და მაქსიმალური პუნქტები). მეორე შეყვანის პუნქტი არის 13-ბიტიანი მუდმივა, რომელიც საშუალებას იძლევა შეყვანის ანგარიშის მონაცემები გასწორდეს ბაიტის საზღვარზე. ეს შეყვანის პუნქტი გამოიყენება მხოლოდ შევსების მიზნით. (5) მაუსის პოზიციის კოორდინატებისთვის განსაზღვრულია კიდევ ერთი ჩადგმული გამოყენების გვერდი, რომელიც ეხება ზოგად სამუშაო მაგიდის კონტროლს. ამ გამოყენების გვერდისთვის, შეყვანის პუნქტი აღწერს მონაცემთა ველებს, რომლებიც შეესაბამება x და y ღერძებს, როგორც ეს მითითებულია ორი გამოყენების პუნქტით.
ნივთები.
წინა მაუსის ანგარიშის აღმწერის შინაარსის ანალიზის შემდეგ, host9s HID პარსერს შეუძლია მოწყობილობის მიერ შეწყვეტის IN გადაცემით ან GET_REPORT მოთხოვნის საპასუხოდ გაგზავნილი შეყვანის ანგარიშის მონაცემების ინტერპრეტაცია. მაუსის ანგარიშის აღმწერის შესაბამისი შეყვანის ანგარიშის მონაცემები ნაჩვენებია ნახაზზე - ანგარიშის აღმწერის შინაარსი Host HID პარსერიდან. View is

საავტორო უფლება © 2025 Silicon Laboratories. Ყველა უფლება დაცულია.

32/174

დასრულდაview

ნაჩვენებია ქვემოთ მოცემულ ცხრილში. ანგარიშის მონაცემების საერთო ზომაა 4 ბაიტი. სხვადასხვა ტიპის ანგარიში შეიძლება გაიგზავნოს ერთი და იგივე საბოლოო წერტილით. სხვადასხვა ტიპის ანგარიშის განსასხვავებლად, მონაცემთა ანგარიშს ემატება 1 ბაიტიანი ანგარიშის ID პრეფიქსი. თუ ანგარიშის ID გამოყენებული იყო ყოფილშიampმაუსის ანგარიშის მარცხენა მხარეს, ანგარიშის მონაცემების საერთო ზომა 5 ბაიტი იქნებოდა.
ცხრილი – ჰოსტისთვის გაგზავნილი შეყვანის ანგარიში, რომელიც შეესაბამება 3 ღილაკიან მაუსის მდგომარეობას

ბიტი ოფსეტი
0 1 2 3 16 24

ბიტების რაოდენობა 1 1 1 13 8 8

აღწერა ღილაკი 1 (მარცხენა ღილაკი). ღილაკი 2 (მარჯვენა ღილაკი). ღილაკი 3 (ბორბლის ღილაკი). არ გამოიყენება. პოზიცია ღერძ X-ზე. პოზიცია ღერძ Y-ზე.

ფიზიკური აღწერილობა მიუთითებს კორპუსის იმ ნაწილს ან ნაწილებს, რომლებიც განკუთვნილია მართვის ან მართვის საშუალებების გასააქტიურებლად. აპლიკაციამ შეიძლება გამოიყენოს ეს ინფორმაცია მოწყობილობის მართვისთვის ფუნქციონალურობის მინიჭებისთვის. ფიზიკური აღწერილობა არის კლასისთვის სპეციფიკური არჩევითი აღწერილობა და მოწყობილობების უმეტესობას მისი გამოყენება მცირე სარგებელი აქვს. იხილეთ
USB მოწყობილობის HID კლასის რესურსების საჭიროებები Core-დან

ყოველ ჯერზე, როდესაც თქვენ დაამატებთ HID კლასის ინსტანციას USB კონფიგურაციაში sl_usbd_hid_add_to_configuration() ფუნქციის გამოძახების გზით, ბირთვიდან გამოიყოფა შემდეგი რესურსები.

რესურსი
ინტერფეისები ალტერნატიული ინტერფეისები საბოლოო წერტილები ინტერფეისის ჯგუფები

რაოდენობა
1 1 1 (2 თუ შეწყვეტის OUT ბოლო წერტილი ჩართულია) 0

გაითვალისწინეთ, რომ ეს რიცხვები თითოეული კონფიგურაციისთვისაა. SL_USBD_INTERFACE_QUANTITY , SL_USBD_ALT_INTERFACE_QUANTITY , SL_USBD_INTERFACE_GROUP_QUANTITY და SL_USBD_DESCRIPTOR_QUANTITY კონფიგურაციის მნიშვნელობების დაყენებისას არ დაგავიწყდეთ იმის გათვალისწინება, თუ რამდენი კონფიგურაცია დაემატება კლასს. SL_USBD_OPEN_ENDPOINTS_QUANTITY კონფიგურაციის მნიშვნელობისთვის, რადგან ბოლო წერტილები იხსნება მხოლოდ მაშინ, როდესაც ჰოსტი კონფიგურაციას დაყენებს, თქვენ უბრალოდ უნდა გაითვალისწინოთ კლასის ეგზემპლარისთვის საჭირო ბოლო წერტილების რაოდენობა.
USB მოწყობილობის HID კლასის კონფიგურაცია

HID კლასის კონფიგურაციისთვის გამოიყენება კონფიგურაციის პარამეტრების ორი ჯგუფი:
USB მოწყობილობის HID კლასის აპლიკაციის სპეციფიკური კონფიგურაციები USB მოწყობილობის HID კლასის ეგზემპლარის კონფიგურაციები
USB მოწყობილობის HID კლასის აპლიკაციის სპეციფიკური კონფიგურაციები

პირველ რიგში, Silicon Labs-ის USB მოწყობილობის HID კლასის მოდულის გამოსაყენებლად, თქვენი აპლიკაციის საჭიროებების შესაბამისად შეცვალეთ 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 კონფიგურაციაში, sl_usbd_hid_add_to_configuration() ფუნქციის გამოყენებით. აკონფიგურირებს გამოსაყოფი ანგარიშის ID-ების საერთო რაოდენობას.
ახდენს გამოსაყოფი Push/Pop ელემენტების საერთო რაოდენობის კონფიგურაციას.
ტაიმერის დავალება ამუშავებს ტაიმერზე დაფუძნებულ ყველა HID ოპერაციას. ეს კონფიგურაცია საშუალებას გაძლევთ დააყენოთ დასტის ზომა (ბაიტების რაოდენობით). HID დავალების პრიორიტეტი. ეს არის CMSIS-RTOS2 პრიორიტეტი.

ნაგულისხმევი მნიშვნელობა
2 1 2 0 2048
osPriorityHigh

USB მოწყობილობის HID კლასის ეგზემპლარის კონფიგურაციები კლასის ეგზემპლარის შექმნის ქვეკლასი
პროტოკოლის ქვეყნის_კოდი
interval_in და interval_out p_hid_callback HID კლასის ანგარიშის აღმწერი Exampეს განყოფილება განსაზღვრავს HID კლასის ინსტანციებთან დაკავშირებულ კონფიგურაციებს.
კლასის ეგზემპლარის შექმნა
HID კლასის ეგზემპლარის შექმნა ხდება aaa sl_usbd_hid_create_instance() ფუნქციის გამოძახებით, რომელიც იყენებს ქვემოთ აღწერილი რამდენიმე კონფიგურაციის არგუმენტს.
ქვეკლასი
HID ქვეკლასის კოდი. შესაძლო მნიშვნელობებია:
SL_USBD_HID_SUBCL ASS_NONE SL_USBD_HID_SUBCL ASS_BOOT
HID მოწყობილობა, რომელიც იყენებს ჩატვირთვის ქვეკლასს, უნდა იყენებდეს სტანდარტულ რეპორტის ფორმატებს. ქვეკლასების კოდების შესახებ დამატებითი ინფორმაციისთვის იხილეთ HID სპეციფიკაციის 1.11 ვერსიის 4.2 ნაწილი.
პროტოკოლი
HID მოწყობილობის მიერ გამოყენებული პროტოკოლი. შესაძლო მნიშვნელობებია:
SL_USBD_HID_PROTOCOL_NONE SL_USBD_HID_PROTOCOL_KBD SL_USBD_HID_PROTOCOL_MOUSE
თუ თქვენი HID ფუნქცია მაუსია, პროტოკოლი უნდა იყოს დაყენებული SL_USBD_HID_PROTOCOL_MOUSE-ზე. თუ ეს კლავიატურაა, ის უნდა იყოს დაყენებული SL_USBD_HID_PROTOCOL_KBD-ზე. წინააღმდეგ შემთხვევაში, პროტოკოლი უნდა იყოს დაყენებული SL_USBD_HID_PROTOCOL_NONE-ზე. ქვეკლასების კოდების შესახებ დამატებითი ინფორმაციისთვის იხილეთ HID სპეციფიკაციის 1.11 ვერსიის 4.3 ნაწილი.
ქვეყნის_კოდი
ქვეყნის კოდის ID. შესაძლო მნიშვნელობებია:
SL_USBD_HID_COUNTRY_CODE_NOT_SUPPORTED

საავტორო უფლება © 2025 Silicon Laboratories. Ყველა უფლება დაცულია.

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_COUNTRY_CODE_CZECH_REPUBLIC SL_USBD_HID_COUNTRY_CODE_DANISH SL_USBD_HID_COUNTRY_CODE_FINNISH SL_USBD_HID_COUNTRY_CODE_FRENCH SL_USBD_HID_COUNTRY_CODE_GERMAN SL_USBD_HID_COUNTRY_CODE_GREEK SL_USBD_HID_COUNTRY_CODE_HEBREW SL_USBD_HID_COUNTRY_CODE_HUNGARY SL_USBD_HID_COUNTRY_CODE_INTERNATIONAL SL_USBD_HID_COUNTRY_CODE_ITALIAN SL_USBD_HID_COUNTRY_CODE_JAPAN_KATAKANA SL_USBD_HID_COUNTRY_CODE_KOREAN SL_USBD_HID_COUNTRY_CODE_L ATIN_AMERICAN SL_USBD_HID_COUNTRY_CODE_NETHERL ANDS_DUTCH SL_USBD_HID_COUNTRY_CODE_NORWEGIAN SL_USBD_HID_COUNTRY_CODE_PERSIAN_FARSI SL_USBD_HID_COUNTRY_CODE_POL AND SL_USBD_HID_COUNTRY_CODE_PORTUGUESE SL_USBD_HID_COUNTRY_CODE_RUSSIA SL_USBD_HID_COUNTRY_CODE_SLOVAKIA SL_USBD_HID_COUNTRY_CODE_SPANISH SL_USBD_HID_COUNTRY_CODE_SWEDISH SL_USBD_HID_COUNTRY_CODE_SWISS_FRENCH SL_USBD_HID_COUNTRY_CODE_SWISS_GERMAN SL_USBD_HID_COUNTRY_CODE_SWITZERL და SL_USBD_HID_COUNTRY_CODE_TAIWAN SL_USBD_HID_COUNTRY_CODE_TURKISH_Q SL_USBD_HID_COUNTRY_CODE_UK SL_USBD_HID_COUNTRY_CODE_US SL_USBD_HID_COUNTRY_CODE_YUG OSL AVIA SL_USBD_HID_COUNTRY_CODE_TURKISH_F
ქვეყნის კოდი განსაზღვრავს, თუ რომელი ქვეყნისთვის არის ლოკალიზებული აპარატურა. აპარატურის უმეტესობა არ არის ლოკალიზებული და შესაბამისად, ეს საკონტროლო მნიშვნელობა იქნება SL_USBD_HID_COUNTRY_CODE_NOT_SUPPORTED (0). თუმცა, კლავიატურაზე შეგიძლიათ გამოიყენოთ ეს ველი კლავიშების ენის მითითებისთვის.
ქვეყნის კოდების შესახებ დამატებითი ინფორმაციისთვის იხილეთ HID სპეციფიკაციის 1.11 გადახედვის 6.2.1 ნაწილი.
ინტერვალი_შესვლა და ინტერვალი_გამოსვლა
interval_in და interval_out წარმოადგენენ IN შეწყვეტის ბოლო წერტილის და OUT შეწყვეტის ბოლო წერტილის გამოკითხვის ინტერვალს.
ეს წარმოადგენს საბოლოო წერტილის გამოკითხვის ინტერვალს მილიწამებში. ამ მნიშვნელობის დაყენება დამოკიდებულია იმაზე, თუ რამდენად ხშირად შეუძლია თქვენს მოწყობილობას ჰოსტისთვის ახალი ანგარიშის გენერირება. მაგალითად, თუ ანგარიში ყოველ 16 მილიწამში გენერირდება, ინტერვალი უნდა იყოს 16 ან ნაკლები.
მნიშვნელობა უნდა იყოს 2-ის ხარისხი (1, 2, 4, 8, 16 და ა.შ.).
interval_out v lue იგნორირებული იქნება, თუ ctrl_rd_en დაყენებულია true-ზე.
p_hid_callback
აააა p_hid_callback არის sl_usbd_hid_callbacks_t ტიპის სტრუქტურის მაჩვენებელი. მისი დანიშნულებაა HID Cl ss-ისთვის HID მოვლენის გამოძახებისას გამოსაძახებელი უკუკავშირის ფუნქციების ნაკრების მინიჭება.

საავტორო უფლება © 2025 Silicon Laboratories. Ყველა უფლება დაცულია.

35/174

დასრულდაview

ყველა უკუკავშირი სავალდებულო არ არის და ნულოვანი მაჩვენებელი (NULL) შეიძლება გადაეცეს უკუკავშირის სტრუქტურის ცვლადს, როდესაც უკუკავშირი არ არის საჭირო. ქვემოთ მოცემულ ცხრილში აღწერილია ამ კონფიგურაციის სტრუქტურაში ხელმისაწვდომი თითოეული კონფიგურაციის ველი.
ცხრილი – sl_usbd_hid_callbacks_t კონფიგურაციის სტრუქტურა

ველები

აღწერა

ფუნქციის ხელმოწერა

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

გამოიძახება, როდესაც USB კლასის ინსტანცია წარმატებით ჩაირთვება. გამოიძახება, როდესაც USB კლასის ინსტანცია გამორთულია.
გამოიძახება HID ეგზემპლარის შექმნის დროს თქვენი ანგარიშის აღმწერის გადასაცემად. თქვენი თითოეული HID ფუნქციისთვის თქვენ უნდა მიაწოდოთ ანგარიშის აღმწერი. ანგარიშის აღმწერი მიუთითებს ჰოსტს, თუ როგორ უნდა გაანალიზდეს მოწყობილობის მიერ გაგზავნილი პერიოდული ანგარიში. თქვენივე ანგარიშის აღმწერის დაწერა შეიძლება რთული იყოს და სწორედ ამიტომ არსებობს რამდენიმე რესურსი, რომელიც დაგეხმარებათ. ეს არის ერთადერთი სავალდებულო უკუკავშირის ფუნქცია. გამოიძახება HID ეგზემპლარის შექმნის დროს თქვენი ფიზიკური აღმწერის გადასაცემად. ფიზიკური აღმწერი არის აღმწერი, რომელიც გვაწვდის ინფორმაციას ადამიანის სხეულის კონკრეტული ნაწილის ან ნაწილების შესახებ, რომლებიც ააქტიურებენ მართვის ერთეულს ან კონტროლებს. ფიზიკური აღმწერების შესახებ დამატებითი ინფორმაციისთვის იხილეთ HID სპეციფიკაციის 1.11 ვერსიის 6.2.3 ნაწილი. ფიზიკური აღმწერი არასავალდებულოა და უმეტეს შემთხვევაში იგნორირებულია. აქ გადაცემული ბუფერი შეიძლება დაყენდეს NULL-ზე, ხოლო სიგრძე - 0-ზე. გამოიძახება, როდესაც ჰოსტი აყენებს ანგარიშს, როგორც ეს აღწერილია თქვენი ანგარიშის აღმწერში (როდესაც ის აგზავნის ანგარიშს).
გამოიძახება, როდესაც მასპინძელი ითხოვს ფუნქციის ანგარიშს, როგორც ეს აღწერილია თქვენი ანგარიშის აღწერილობაში.
გამოიძახება, როდესაც ჰოსტი აყენებს ფუნქციის ანგარიშს, როგორც ეს აღწერილია თქვენი ანგარიშის აღწერილობაში.

void app_usbd_hid_enable(uint8_t class_nbr); void app_usbd_hid_disable(uint8_t class_nbr); void 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 პროტოკოლი);

HID კლასის ანგარიშის აღმწერი Example

Silicon Labs-ის HID კლასიampაპლიკაცია გთავაზობთ ექს-სampმარტივი მაუსის ანგარიშის აღმწერის ფაილი. ყოფილიampქვემოთ მოცემულია მაუსის ანგარიშის აღმწერი.
Example – მაუსის ანგარიშის აღწერილობა

სტატიკური 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_ENDკოლექცია,(10)

SL_USBD_HID_MAIN_ENDCOLLECTION

(11)};

(1) მაუსის ანგარიშის აღმწერის წარმომადგენელი ცხრილი ინიციალიზებულია ისე, რომ თითოეული ხაზი შეესაბამება მოკლე ელემენტს. ეს უკანასკნელი ჩამოყალიბებულია 1-ბაიტიანი პრეფიქსისა და 1-ბაიტიანი მონაცემებისგან. იხილეთ viewრედაქტირებულია მასპინძელი HID პარსერის მიერ ნახაზზე - ანგარიშის აღმწერი შინაარსი მასპინძელი HID პარსერისგან View.
(2) გამოყენებულია ზოგადი სამუშაო მაგიდის გამოყენების გვერდი.
(3) ზოგადი სამუშაო მაგიდის გამოყენების გვერდზე, გამოყენება tag მიუთითებს, რომ მართვის საშუალებების ჯგუფი მაუსის სამართავადაა. მაუსის კოლექცია, როგორც წესი, ორი ღერძის (X და Y) და ერთი, ორი ან სამი ღილაკისგან შედგება.
(4) თაგვების შეგროვება დაწყებულია.
(5) მაუსის კოლექციაში, გამოყენება tag უფრო კონკრეტულად მიუთითებს, რომ მაუსის კონტროლი მაჩვენებლის კოლექციას ეკუთვნის. მაჩვენებლის კოლექცია არის ღერძების კოლექცია, რომელიც წარმოქმნის მნიშვნელობას, რათა მიმართოს, მიუთითოს ან მიუთითოს მომხმარებლის განზრახვებზე აპლიკაციაზე.
(6) მაჩვენებლის შეგროვება დაწყებულია.
(7) ღილაკების გამოყენების გვერდი განსაზღვრავს შეყვანის ელემენტს, რომელიც შედგება სამი 1-ბიტიანი ველისგან. თითოეული 1-ბიტიანი ველი წარმოადგენს mouse9-ის ღილაკს 1, 2 და 3 შესაბამისად და შეუძლია დააბრუნოს 0 ან 1 მნიშვნელობა.
(8) ღილაკების გამოყენების გვერდის შეყვანის ელემენტი შევსებულია 13 სხვა ბიტით.
(9) მაუსის პოზიციის X და Y ღერძებით აღსაწერად მითითებულია კიდევ ერთი ზოგადი სამუშაო მაგიდის გამოყენების გვერდი. შეყვანის ელემენტი შედგება ორი 8-ბიტიანი ველისგან, რომელთა მნიშვნელობა შეიძლება იყოს -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 კლასის პროგრამირების სახელმძღვანელო
ეს განყოფილება განმარტავს, თუ როგორ გამოიყენოთ HID კლასი. USB მოწყობილობის HID კლასის ინიციალიზაცია USB მოწყობილობის HID კლასის ეგზემპლარის თქვენს მოწყობილობაზე დამატება USB მოწყობილობის HID კლასის გამოყენებით კომუნიკაცია
USB მოწყობილობის HID კლასის ინიციალიზაცია
თქვენს მოწყობილობაზე HID კლასის ფუნქციონალურობის დასამატებლად, ჯერ კლასი უნდა ინიციალიზაცია გაუკეთოთ sl_usbd_hid_init() ფუნქციის გამოძახებით.ampქვემოთ მოცემულია, თუ როგორ გამოვიძახოთ sl_usbd_hid_init() ფუნქცია ნაგულისხმევი არგუმენტების გამოყენებით. sl_usbd_hid_init() ფუნქციაზე გადასაცემი კონფიგურაციის არგუმენტების შესახებ დამატებითი ინფორმაციისთვის იხილეთ USB მოწყობილობის HID კლასის აპლიკაციის სპეციფიკური კონფიგურაციები.
Example – sl_usbd_hid_init()-ის გამოძახება
sl_status_t სტატუსი;
სტატუსი = sl_usbd_hid_init(); თუ (სტატუსი! SL_STATUS_OK) { /* შეცდომა მოხდა. შეცდომების დამუშავება აქ უნდა დაემატოს. */
}
USB მოწყობილობის HID კლასის ეგზემპლარის დამატება თქვენს მოწყობილობაზე
თქვენს მოწყობილობაზე HID კლასის ფუნქციონალურობის დასამატებლად, თქვენ უნდა შექმნათ ეგზემპლარი და შემდეგ დაამატოთ ის თქვენი მოწყობილობის კონფიგურაციაში.
HID კლასის ეგზემპლარის შექმნა
HID კლასის ეგზემპლარის შესაქმნელად გამოიყენეთ ფუნქცია sl_usbd_hid_create_instance() .ampქვემოთ მოცემულია, თუ როგორ შევქმნათ მარტივი მაუსის ფუნქცია sl_usbd_hid_create_instance() ფუნქციის გამოყენებით, ნაგულისხმევი არგუმენტების გამოყენებით. sl_usbd_hid_create_instance() ფუნქციისთვის გადასაცემი კონფიგურაციის არგუმენტების შესახებ დამატებითი ინფორმაციისთვის იხილეთ USB მოწყობილობის HID კლასის ეგზემპლარის კონფიგურაციები.
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_COLLECTION + 1, SL_USBD_HID_COLLECTION_APPLICATION, SL_USBD_HID_LOCAL_USAGE + 1, SL_USBD_HID_CP_POINTER, SL_USBD_HID_MAIN_COLLECTION + 1, SL_USBD_HID_COLLECTION_PHYSICAL, SL_USBD_HID_GLOBAL_USAGE_PAGE + 1, SL_USBD_HID_USAGE_PAGE_BUTTON, SL_USBD_HID_LOCAL_USAGE_MIN + 1, 0 01, SL_USBD_HID_LOCAL_USAGE_MAX + 1, 0 03, SL_USBD_HID_GLOBAL_LOG_MIN + 1, 0 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, SL_USBD_HID_GLOBAL_REPORT_SIZE + 1, 0 0D, SL_USBD_HID_MAIN_INPUT + 1, SL_USBD_HID_MAIN_CONSTANT, 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, 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 };
void 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, ზომა(Ex_USBD_HID_Mouse_ReportDesc), 2u, 2u, true, &app_usbd_hid_callbacks, &class_nbr);
საავტორო უფლება © 2025 Silicon Laboratories. Ყველა უფლება დაცულია.

39/174

დასრულდაview
/* შეცდომა მოხდა. აქ უნდა დაემატოს შეცდომების დამუშავების ფუნქცია. */}
HID კლასის ინსტანციის თქვენი მოწყობილობის კონფიგურაციაში დამატება HID კლასის ინსტანციის შექმნის შემდეგ, მისი კონფიგურაციაში დამატება ფუნქციის გამოძახებით შეგიძლიათ
sl_usbd_hid_add_to_configuration().
ყოფილმაampქვემოთ მოცემულია, თუ როგორ გამოვიძახოთ 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 კლასის გამოყენებით
კლასის ინსტანციის კომუნიკაცია სინქრონული კომუნიკაცია კლასის ინსტანციის კომუნიკაცია HID კლასი ჰოსტთან კომუნიკაციისთვის შემდეგ ფუნქციებს გვთავაზობს.
ცხრილი – HID საკომუნიკაციო API-ის შეჯამება

ფუნქციის სახელი
sl_usb d _hid _ re ad _sy nc() sl_usb d _hid _write _sy nc()

ოპერაცია იღებს მონაცემებს ჰოსტიდან შეწყვეტის OUT ბოლო წერტილის მეშვეობით. ეს ფუნქცია ბლოკავს. აგზავნის მონაცემებს ჰოსტისთვის შეწყვეტის IN ბოლო წერტილის მეშვეობით. ეს ფუნქცია ბლოკავს.

სინქრონული კომუნიკაცია სინქრონული კომუნიკაცია ნიშნავს, რომ გადაცემა იბლოკება. ფუნქციის გამოძახებისას, აპლიკაციები იბლოკება მანამ, სანამ გადაცემა არ დასრულდება შეცდომით ან შეცდომის გარეშე. შესაძლებელია დროის ამოწურვის მითითება, რათა თავიდან იქნას აცილებული მარადიული ლოდინი.ampქვემოთ მოცემულ სურათზე ნაჩვენებია წაკითხვისა და ჩაწერის ფუნქცია, რომელიც იღებს მონაცემებს ჰოსტისგან შეწყვეტის OUT ბოლო წერტილის გამოყენებით და უგზავნის მონაცემებს ჰოსტს შეწყვეტის IN ბოლო წერტილის გამოყენებით.
Example – სინქრონული HID კითხვა და ჩაწერა

__ALIGNED(4) uint8_t rx_buf[2];

__ALIGNED(4) uint8_t tx_buf[2];

uint32_t

xfer_len;

sl_status_t

სტატუსი;

სტატუსი = sl_usbd_hid_read_sync(class_nbr,

(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){/* შეცდომა მოხდა. აქ უნდა დაემატოს შეცდომების დამუშავების ფუნქცია. */}
status =sl_usbd_hid_write_sync(class_nbr,(1)(void *)tx_buf,(4)2u,0u,(3)&xfer_len);if(status ! SL_STATUS_OK){/* შეცდომა მოხდა. აქ უნდა დაემატოს შეცდომების დამუშავების ფუნქცია. */}
(1) sl_usbd_hid_create_instance()-დან შექმნილი კლასის ეგზემპლარის ნომერი უზრუნველყოფს HID კლასისთვის შიდა მითითებას, რათა გადაცემა გადამისამართდეს შესაბამის შეწყვეტის OUT ან IN საბოლოო წერტილში.
(2) აპლიკაციამ უნდა უზრუნველყოს, რომ ფუნქციისთვის მოწოდებული ბუფერი საკმარისად დიდი იყოს ყველა მონაცემის განსათავსებლად. წინააღმდეგ შემთხვევაში, შესაძლოა სინქრონიზაციის პრობლემები წარმოიშვას. შიდა დონეზე, წაკითხვის ოპერაცია სრულდება ან მართვის საბოლოო წერტილით, ან შეწყვეტის საბოლოო წერტილით, sl_usbd_hid_create_instance() ფუნქციის გამოძახებისას დაყენებული მართვის წაკითხვის ფლაგის მიხედვით.
(3) უსასრულო ბლოკირების სიტუაციის თავიდან ასაცილებლად, შესაძლებელია მილიწამებში გამოხატული ტაიმ-აუტის მითითება. 809 მნიშვნელობა აპლიკაციის დავალებას სამუდამოდ ლოდინს აიძულებს.
(4) აპლიკაცია უზრუნველყოფს ინიციალიზებული გადაცემის ბუფერს.
HID პერიოდული შეყვანის ანგარიშების დავალება
გამტარუნარიანობის დაზოგვის მიზნით, ჰოსტს აქვს შეფერხების შეყვანის ბოლო წერტილიდან მიღებული ანგარიშების გაჩუმების შესაძლებლობა ანგარიშგების სიხშირის შეზღუდვით. ამისათვის ჰოსტმა უნდა გაგზავნოს SET_IDLE მოთხოვნა. Silicon Labs-ის მიერ დანერგილი HID კლასი შეიცავს შიდა დავალებას, რომელიც იცავს ანგარიშგების სიხშირის შეზღუდვას და რომლის გამოყენებაც შეგიძლიათ ერთ ან რამდენიმე შეყვანის ანგარიშზე. სურათი „პერიოდული შეყვანის ანგარიშების დავალება“ გვიჩვენებს პერიოდული შეყვანის ანგარიშების დავალებების ფუნქციონირებას.
სურათი – პერიოდული შეყვანის ანგარიშების დავალება

(1) მოწყობილობა იღებს SET_IDLE მოთხოვნას. ეს მოთხოვნა განსაზღვრავს მოცემული ანგარიშის ID-სთვის უმოქმედობის ხანგრძლივობას. SET_IDLE მოთხოვნის შესახებ დამატებითი ინფორმაციისთვის იხილეთ
(2) ანგარიშის ID სტრუქტურა (გამოყოფილი HID კლასის ინიციალიზაციის ფაზაში) განახლდება უმოქმედობის ხანგრძლივობით. უმოქმედობის ხანგრძლივობის მრიცხველი ინიციალიზებულია უმოქმედობის ხანგრძლივობის მნიშვნელობით. ანგარიშის ID სტრუქტურა ჩასმულია დაკავშირებული სიის ბოლოს, რომელიც შეიცავს შეყვანის ანგარიშების ID სტრუქტურებს. უმოქმედობის ხანგრძლივობის მნიშვნელობა გამოიხატება 4 ms ერთეულში, რაც იძლევა 4-დან 1020 ms-მდე დიაპაზონს.

საავტორო უფლება © 2025 Silicon Laboratories. Ყველა უფლება დაცულია.

41/174

დასრულდაview
თუ უმოქმედობის ხანგრძლივობა შეწყვეტის შესვლის ბოლო წერტილის გამოკითხვის ინტერვალზე ნაკლებია, ანგარიშები გენერირდება გამოკითხვის ინტერვალში.
(3) ყოველ 4 მილიწამში, პერიოდული შეყვანის ანგარიშის დავალება ათვალიერებს შეყვანის ანგარიშების ID-ების სიას. თითოეული შეყვანის ანგარიშის ID-სთვის, დავალება ასრულებს ორი შესაძლო ოპერაციიდან ერთ-ერთს. დავალების პერიოდის ხანგრძლივობა ემთხვევა უმოქმედობის ხანგრძლივობისთვის გამოყენებულ 4 მილიწამიან ერთეულს. თუ მასპინძელმა არ გაგზავნა SET_IDLE მოთხოვნები, შეყვანის ანგარიშების ID-ების სია ცარიელია და დავალებას დასამუშავებელი არაფერი აქვს. დავალება ამუშავებს მხოლოდ იმ ID-ებს, რომლებიც განსხვავდება 0-ისგან და რომელთა უმოქმედობის ხანგრძლივობა 0-ზე მეტია.
(4) მოცემული შეყვანის ანგარიშის ID-სთვის, დავალება ამოწმებს, გავიდა თუ არა უმოქმედობის ხანგრძლივობა. თუ უმოქმედობის ხანგრძლივობა არ გასულა, მრიცხველი მცირდება და ჰოსტს შეყვანის ანგარიში არ ეგზავნება.
(5) თუ უმოქმედობის ხანგრძლივობა გავიდა (ანუ უმოქმედობის ხანგრძლივობის მრიცხველი ნულს მიაღწია), შეყვანის ანგარიში იგზავნება ჰოსტზე sl_usbd_hid_write_sync() ფუნქციის გამოძახებით შეწყვეტის IN ბოლო წერტილის მეშვეობით.
(6) დავალებით გაგზავნილი შეყვანის ანგარიშის მონაცემები მოდის შიდა მონაცემთა ბუფერიდან, რომელიც გამოყოფილია ანგარიშის აღწერილობაში აღწერილი თითოეული შეყვანის ანგარიშისთვის. აპლიკაციის დავალებას შეუძლია გამოიძახოს sl_usbd_hid_write_sync() ფუნქცია შეყვანის ანგარიშის გასაგზავნად. შეყვანის ანგარიშის მონაცემების გაგზავნის შემდეგ, sl_usbd_hid_write_sync() აახლებს შიდა ბუფერს, რომელიც დაკავშირებულია შეყვანის ანგარიშის ID-სთან, ახლად გაგზავნილი მონაცემებით. შემდეგ, პერიოდული შეყვანის ანგარიშების დავალება ყოველთვის აგზავნის იგივე შეყვანის ანგარიშის მონაცემებს ყოველი უმოქმედობის ხანგრძლივობის გასვლის შემდეგ და სანამ აპლიკაციის დავალება არ განაახლებს მონაცემებს შიდა ბუფერში. არსებობს გარკვეული დაბლოკვის მექანიზმი, რათა თავიდან იქნას აცილებული შეყვანის ანგარიშის ID მონაცემების დაზიანება პერიოდული შეყვანის ანგარიშის დავალების მიერ გადაცემის ზუსტ დროს.

საავტორო უფლება © 2025 Silicon Laboratories. Ყველა უფლება დაცულია.

42/174

დასრულდაview
დასრულდაview
USB მოწყობილობის MSC კლასი
USB მოწყობილობა MSC კლასის გადაჭარბებაview USB მოწყობილობის MSC კლასის რესურსების საჭიროება ძირითადი USB მოწყობილობის MSC კლასის კონფიგურაციიდან USB მოწყობილობის MSC კლასის პროგრამირების სახელმძღვანელო USB მოწყობილობის MSC კლასის შენახვის დრაივერები
ეს განყოფილება აღწერს მასობრივი შენახვის მოწყობილობის კლასს (MSC), რომელსაც მხარს უჭერს Silicon Labs-ის USB მოწყობილობა. MSC არის პროტოკოლი, რომელიც საშუალებას იძლევა ინფორმაციის გადაცემას USB მოწყობილობასა და ჰოსტს შორის. გადაცემული ინფორმაცია არის ყველაფერი, რისი ელექტრონულად შენახვაც შესაძლებელია, როგორიცაა შესრულებადი პროგრამები, საწყისი კოდი, დოკუმენტები, სურათები, კონფიგურაციის მონაცემები ან სხვა ტექსტური ან რიცხვითი მონაცემები. USB მოწყობილობა ჰოსტისთვის გარე შენახვის საშუალებად გვევლინება, რაც საშუალებას იძლევა... files გადათრევისა და ჩაშვების საშუალებით.
A file სისტემა განსაზღვრავს, თუ როგორ fileორგანიზებულია შენახვის მედიაში. USB მასობრივი შენახვის კლასის სპეციფიკაცია არ საჭიროებს რაიმე კონკრეტულ file სისტემა, რომელიც გამოიყენება შესაბამის მოწყობილობებზე. ამის ნაცვლად, ის უზრუნველყოფს მარტივ ინტერფეისს მონაცემთა სექტორების წასაკითხად და ჩასაწერად მცირე კომპიუტერული სისტემის ინტერფეისის (SCSI) გამჭვირვალე ბრძანებების ნაკრების გამოყენებით. ამრიგად, ოპერაციულმა სისტემებმა შეიძლება USB დისკი მყარ დისკად მიიჩნიონ და მისი ფორმატირება ნებისმიერი file სისტემა, რომელიც მათ მოსწონთ.
USB მასობრივი შენახვის მოწყობილობის კლასი მხარს უჭერს ორ სატრანსპორტო პროტოკოლს, შემდეგნაირად:
მხოლოდ მასობრივი ტრანსპორტირების (BOT) კონტროლი/მასშტაბიანი/შეფერხების (CBI) ტრანსპორტირება (გამოიყენება მხოლოდ ფლოპი დისკის დრაივებისთვის)
მასობრივი შენახვის მოწყობილობის კლასი SCSI გამჭვირვალე ბრძანებების ნაკრებს მხოლოდ BOT პროტოკოლის გამოყენებით ახორციელებს, რაც ნიშნავს, რომ მონაცემებისა და სტატუსის ინფორმაციის გადასაცემად მხოლოდ მასობრივი საბოლოო წერტილები იქნება გამოყენებული. MSC იმპლემენტაცია მხარს უჭერს მრავალ ლოგიკურ ერთეულს.
MSC-ის დანერგვა შეესაბამება შემდეგ სპეციფიკაციებს:
უნივერსალური სერიული ავტობუსის მასობრივი შენახვის კლასის სპეციფიკაციაview, ვერსია 1.3, 2008 წლის 5 სექტემბერი. უნივერსალური სერიული ავტობუსის მასობრივი შენახვის კლასის მხოლოდ ნაყარი ტრანსპორტირება, ვერსია 1.0, 1999 წლის 31 სექტემბერი.
USB მოწყობილობა MSC aCl ss Overview
პროტოკოლის საბოლოო წერტილების კლასის მოთხოვნები მცირე კომპიუტერული სისტემის ინტერფეისი (SCSI)
პროტოკოლი
ამ განყოფილებაში განვიხილავთ მასობრივი შენახვის კლასის მხოლოდ ნაყარი ტრანსპორტის (BOT) პროტოკოლს. მხოლოდ ნაყარი ტრანსპორტის პროტოკოლს სამი ს აქვსtages:
ბრძანების ტრანსპორტირება მონაცემთა ტრანსპორტი სტატუსის ტრანსპორტირება
მასობრივი შენახვის ბრძანებებს მასპინძელი იგზავნება სტრუქტურის მეშვეობით, რომელსაც ეწოდება Command Block Wrapper (CBW). მონაცემთა ტრანსპორტირების საჭიროების მქონე ბრძანებებისთვისtagე., ჰოსტი შეეცდება მოწყობილობიდან ზუსტი რაოდენობის ბაიტების გაგზავნას ან მიღებას, როგორც ეს მითითებულია CBW-ის სიგრძისა და დროშის ველებში. მონაცემთა ტრანსპორტირების შემდეგtagე., მასპინძელი ცდილობს მოწყობილობიდან მიიღოს ბრძანების სტატუსის შეფუთვის (CSW), რომელიც დეტალურად აღწერს ბრძანების სტატუსს, ასევე ნებისმიერ მონაცემთა ნარჩენს (თუ

საავტორო უფლება © 2025 Silicon Laboratories. Ყველა უფლება დაცულია.

43/174

დასრულდაview
ნებისმიერი). ბრძანებებისთვის, რომლებიც არ მოიცავს მონაცემთა ტრანსპორტირებასtagე.ე., მასპინძელი ცდილობს CSW-ის მიღებას უშუალოდ CBW-ის გაგზავნის შემდეგ. პროტოკოლი დეტალურად არის აღწერილი ნახაზზე - MSC პროტოკოლი.
სურათი – MSC პროტოკოლი

საბოლოო წერტილები
მოწყობილობის მხრივ, BOT სპეციფიკაციის შესაბამისად, MSC შედგება შემდეგი საბოლოო წერტილებისგან: საკონტროლო IN და OUT საბოლოო წერტილების წყვილი, რომელსაც ნაგულისხმევი საბოლოო წერტილი ეწოდება. მასიური IN და OUT საბოლოო წერტილების წყვილი.
ქვემოთ მოცემულ ცხრილში მოცემულია საბოლოო წერტილების სხვადასხვა გამოყენება.
ცხრილი – MSC საბოლოო წერტილის გამოყენება

ბოლო წერტილი
კონტროლი შეყვანა კონტროლი გამოყვანა მასობრივი შეყვანა მასობრივი გამოყვანა

მიმართულება
მოწყობილობიდან ჰოსტამდე ჰოსტამდე მოწყობილობამდე მოწყობილობიდან ჰოსტამდე ჰოსტამდე მოწყობილობამდე

გამოყენება
ჩამოთვლა და MSC კლასის სპეციფიკური მოთხოვნები ჩამოთვლა და MSC კლასის სპეციფიკური მოთხოვნები CSW-ს და მონაცემების გაგზავნა CBW-ს და მონაცემების მიღება

კლასის მოთხოვნები
MSC BOT პროტოკოლისთვის არსებობს ორი განსაზღვრული კონტროლის მოთხოვნა. ეს მოთხოვნები და მათი აღწერილობები დეტალურად არის აღწერილი ქვემოთ მოცემულ ცხრილში.

ცხრილი – მასობრივი შენახვის კლასის მოთხოვნები

კლასის მოთხოვნები
მხოლოდ მასობრივი შენახვის გადატვირთვა

აღწერა
ეს მოთხოვნა გამოიყენება მასობრივი შენახვის მოწყობილობისა და მასთან დაკავშირებული ინტერფეისის გადასატვირთად. ეს მოთხოვნა ამზადებს მოწყობილობას შემდეგი ბრძანების ბლოკის მისაღებად.

საავტორო უფლება © 2025 Silicon Laboratories. Ყველა უფლება დაცულია.

44/174

დასრულდაview

კლასის მოთხოვნები

აღწერა

მაქსიმალური მნიშვნელობის მიღება. ეს მოთხოვნა გამოიყენება მოწყობილობის მიერ მხარდაჭერილი ყველაზე მაღალი ლოგიკური ერთეულის ნომრის (LUN) დასაბრუნებლად. მაგალითადampლე, ა

LUN

მოწყობილობა LUN 0-ით და LUN 1-ით დააბრუნებს 1 მნიშვნელობას. მოწყობილობა, რომელსაც აქვს ერთი ლოგიკური ერთეული, დააბრუნებს 0-ს ან შეაჩერებს

მოთხოვნა. მაქსიმალური მნიშვნელობა, რომლის დაბრუნებაც შესაძლებელია, არის 15.

მცირე კომპიუტერული სისტემის ინტერფეისი SCSI

პროგრამირების ინტერფეისის დონეზე, MSC მოწყობილობა ახორციელებს ერთ-ერთ სტანდარტულ შენახვის მედიის საკომუნიკაციო პროტოკოლს, როგორიცაა SCSI და SFF-8020i (ATAPI). „პროგრამირების ინტერფეისი“ განსაზღვრავს, თუ რომელი პროტოკოლია დანერგილი და ეხმარება მასპინძელ ოპერაციულ სისტემას USB შენახვის მოწყობილობასთან კომუნიკაციისთვის შესაფერისი მოწყობილობის დრაივერის ჩატვირთვაში. SCSI არის ყველაზე გავრცელებული პროტოკოლი, რომელიც გამოიყენება USB MSC შენახვის მოწყობილობებთან. ჩვენ გთავაზობთ MSC SCSI ქვეკლასის იმპლემენტაციას, რომლის გამოყენებაც ჩვენს GSDK მომხმარებლებს შეუძლიათ ყუთიდან ამოღებისთანავე.
SCSI არის სტანდარტების ერთობლიობა კომპიუტერებსა და პერიფერიულ მოწყობილობებს შორის კომუნიკაციის დასამუშავებლად. ეს სტანდარტები მოიცავს ბრძანებებს, პროტოკოლებს, ელექტრულ და ოპტიკურ ინტერფეისებს. შენახვის მოწყობილობები, რომლებიც იყენებენ სხვა აპარატურულ ინტერფეისებს, როგორიცაა USB, იყენებენ SCSI ბრძანებებს მოწყობილობის/ჰოსტის ინფორმაციის მისაღებად, მოწყობილობის მუშაობის გასაკონტროლებლად და შენახვის მედიაში მონაცემთა ბლოკების გადასაცემად.
SCSI ბრძანებები მოიცავს მოწყობილობების ტიპებისა და ფუნქციების ფართო სპექტრს და შესაბამისად, მოწყობილობებს სჭირდებათ ამ ბრძანებების ქვესიმრავლე. ზოგადად, ძირითადი კომუნიკაციისთვის აუცილებელია შემდეგი ბრძანებები:
მოთხოვნის წაკითხვის ტევადობა (10) წაკითხვა (10) სენსორული ტესტის მოთხოვნის მოწყობილობა მზადაა ჩაწერისთვის (10)
USB მოწყობილობის MSC კლასის რესურსების საჭიროებები Core-დან

ყოველ ჯერზე, როდესაც თქვენ დაამატებთ MSC კლასის ინსტანციას USB კონფიგურაციაში sl_usbd_msc_add_to_configuration() ფუნქციის მეშვეობით, ბირთვიდან გამოიყოფა შემდეგი რესურსები.

რესურსი
ინტერფეისები ალტერნატიული ინტერფეისები საბოლოო წერტილები ინტერფეისის ჯგუფები

რაოდენობა
1 1 2 0

გაითვალისწინეთ, რომ ეს რიცხვები თითოეული კონფიგურაციისთვისაა. SL_USBD_INTERFACE_QUANTITY , SL_USBD_ALT_INTERFACE_QUANTITY , SL_USBD_INTERFACE_GROUP_QUANTITY და SL_USBD_DESCRIPTOR_QUANTITY კონფიგურაციის მნიშვნელობების დაყენებისას არ დაგავიწყდეთ იმის გათვალისწინება, თუ რამდენი კონფიგურაცია დაემატება კლასს. SL_USBD_OPEN_ENDPOINTS_QUANTITY კონფიგურაციის მნიშვნელობისთვის, რადგან ბოლო წერტილები იხსნება მხოლოდ მაშინ, როდესაც ჰოსტი კონფიგურაციას დაყენებს, თქვენ უბრალოდ უნდა გაითვალისწინოთ კლასის ეგზემპლარისთვის საჭირო ბოლო წერტილების რაოდენობა.
USB მოწყობილობის MSC კლასის კონფიგურაცია

MSC კლასის კონფიგურაციისთვის გამოიყენება კონფიგურაციის პარამეტრების ორი ჯგუფი:
USB მოწყობილობის MSC კლასი აპლიკაციის სპეციფიკური კონფიგურაციები USB მოწყობილობის MSC კლასის ლოგიკური ერთეულის კონფიგურაცია
USB მოწყობილობის MSC კლასის აპლიკაციის სპეციფიკური კონფიგურაციები

კლასის კომპილაციის დროის კონფიგურაციები კლასის ეგზემპლარის შექმნა

საავტორო უფლება © 2025 Silicon Laboratories. Ყველა უფლება დაცულია.

45/174

დასრულდაview

კლასის კომპილაციის დროის კონფიგურაციები
Silicon Labs-ის USB მოწყობილობის MSC კლასი და SCSI ქვეკლასი კონფიგურირებადია კომპილაციის დროს sl_usbd_core_config.h ფაილში მდებარე #defines-ის მეშვეობით. 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 რთავს ან გამორთავს 64 ბიტიანი ლოგიკური ბლოკის მისამართის (LBA) მხარდაჭერას.
_LBA_EN

SL_USBD_MSC_DATA_BUFF მონაცემთა ბუფერის ზომა კლასის ინსტანციაში ბაიტებში ER_SIZE

ნაგულისხმევი მნიშვნელობა
2
1
2
0
512

კლასის ეგზემპლარის შექმნა
USB მოწყობილობის MSC SCSI კლასის ეგზემპლარის შექმნა ხორციელდება sl_usbd_msc_scsi_create_instance() ფუნქციის გამოძახებით. ეს ფუნქცია იღებს ერთ კონფიგურაციის არგუმენტს, რომელიც აღწერილია ქვემოთ.
p_scsi_უკუკავშირები
p_scsi_callbacks არის sl_usbd_msc_scsi_callbacks_t ტიპის კონფიგურაციის სტრუქტურის მაჩვენებელი. საერთო USB მოწყობილობის callbacks კლასის connect/disconnect-ის გარდა, ის MSC კლასს აწვდის არჩევითი უკუკავშირის ფუნქციების ერთობლიობას, რომლებიც გამოიძახება ლოგიკურ ერთეულზე მოვლენის დროს. თუ უკუკავშირები არ არის საჭირო, ამ არგუმენტს შეიძლება გადაეცეს null მაჩვენებელი (NULL).
ქვემოთ მოცემულ ცხრილში აღწერილია ამ კონფიგურაციის სტრუქტურაში არსებული თითოეული კონფიგურაციის ველი.
ცხრილი – sl_usbd_msc_scsi_callbacks_t კონფიგურაციის სტრუქტურა

ველები

აღწერა

.ჩართვა

გამოიძახება, როდესაც USB კლასის ეგზემპლარი წარმატებით ჩაირთვება.

.disable გამოიძახება, როდესაც USB კლასის ეგზემპლარი გამორთულია.

.host_eject ფუნქცია გამოიძახება, როდესაც ლოგიკური ერთეული ამოღებულია ჰოსტიდან.

ფუნქციის ხელმოწერა
void app_usbd_msc_scsi_enable(uint8_t class_nbr);
void 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 კლასის ლოგიკური ერთეულის კონფიგურაცია

MSC კლასის ინსტანციაში ლოგიკური ერთეულის დამატება ხორციელდება sl_usbd_msc_lun_add() ფუნქციის გამოძახებით. ეს ფუნქცია იღებს ერთ კონფიგურაციის არგუმენტს, რომელიც აღწერილია ქვემოთ.

p_lu_info

p_lu_info არის sl_usbd_msc_scsi_lun_info_t ტიპის სტრუქტურის მაჩვენებელი. მისი დანიშნულებაა MSC კლასისთვის ლოგიკური ერთეულის შესახებ ინფორმაციის მიწოდება.
ქვემოთ მოცემულ ცხრილში აღწერილია ამ კონფიგურაციის სტრუქტურაში არსებული თითოეული კონფიგურაციის ველი.

ცხრილი – sl_usbd_msc_scsi_lun_info_t კონფიგურაციის სტრუქტურა

საავტორო უფლება © 2025 Silicon Laboratories. Ყველა უფლება დაცულია.

46/174

დასრულდაview

ველი

აღწერა

ველი
.scsi_lun_api_p tr

აღწერა
მედია დრაივერის API-ის მაჩვენებელი, რომელიც ამ ლოგიკურ ერთეულს დაამუშავებს. მეხსიერების დრაივერების შესახებ დამატებითი ინფორმაციისთვის იხილეთ USB მოწყობილობის MSC კლასის შენახვის დრაივერები.

.ve nd o r_id _ p tr
.product_id_ptr
.პროდუქტი_ვიზუალიზაცია_დონე .ის_წაკითხულია_მხოლოდ

სტრიქონის მაჩვენებელი, რომელიც შეიცავს ლოგიკური ერთეულის მომწოდებლის იდენტიფიკაციას. სტრიქონის მაქსიმალური სიგრძეა 8 სიმბოლო. სტრიქონის მაჩვენებელი, რომელიც შეიცავს ლოგიკური ერთეულის პროდუქტის იდენტიფიკაციას. სტრიქონის მაქსიმალური სიგრძეა 16 სიმბოლო. პროდუქტის ვერსიის დონე.
დროშა, რომელიც მიუთითებს, ლოგიკური ერთეული უნდა იყოს თუ არა მხოლოდ წასაკითხი წერტილიდან view მასპინძლის (ჭეშმარიტი) თუ არა (მცდარი).

USB მოწყობილობის MSC კლასის პროგრამირების სახელმძღვანელო

ეს განყოფილება განმარტავს, თუ როგორ გამოიყენოთ MSC კლასი.
USB მოწყობილობის MSC კლასის ინიციალიზაცია USB მოწყობილობის MSC SCSI კლასის ეგზემპლარის თქვენს მოწყობილობაზე დამატება USB მოწყობილობის MSC კლასი ლოგიკური ერთეულების დამუშავება
USB მოწყობილობის MSC კლასის ინიციალიზაცია

თქვენს მოწყობილობაზე MSC SCSI კლასის ფუნქციონალურობის დასამატებლად, ჯერ ინიციალიზაცია გაუკეთეთ MSC ბაზის კლასის და SCSI ქვეკლასის sl_usbd_msc_init() და sl_usbd_msc_scsi_init() ფუნქციების გამოძახებით.
ყოფილმაampქვემოთ მოცემულია, თუ როგორ გამოვიძახოთ sl_usbd_msc_init() და sl_usbd_msc_scsi_init() ფუნქციები.

Example – sl_usbd_msc_init() და sl_usbd_msc_scsi_init()-ის გამოძახება

sl_status_t სტატუსი;
სტატუსი = sl_usbd_msc_init(); თუ (სტატუსი! SL_STATUS_OK) { /* შეცდომა მოხდა. აქ უნდა დაემატოს შეცდომების დამუშავება. */
}
სტატუსი = sl_usbd_msc_scsi_init(); თუ (სტატუსი! SL_STATUS_OK) { /* შეცდომა მოხდა. აქ უნდა დაემატოს შეცდომების დამუშავება. */
}
USB მოწყობილობის MSC SCSI კლასის ეგზემპლარის თქვენს მოწყობილობაზე დამატება
თქვენს მოწყობილობაზე MSC SCSI კლასის ფუნქციონალურობის დასამატებლად, ჯერ შექმენით ეგზემპლარი, შემდეგ დაამატეთ ის თქვენი მოწყობილობის კონფიგურაციაში. თქვენს ეგზემპლარს უნდა დაამატოთ მინიმუმ ერთი ლოგიკური ერთეული.
MSC SCSI კლასის ინსტანციის შექმნა
MSC SCSI კლასის ეგზემპლარის შესაქმნელად გამოიყენეთ ფუნქცია sl_usbd_msc_scsi_create_instance() .
ყოფილმაampქვემოთ მოცემულია, თუ როგორ გამოვიძახოთ sl_usbd_msc_scsi_create_instance() ფუნქცია ნაგულისხმევი არგუმენტების გამოყენებით. sl_usbd_msc_scsi_create_instance()-ზე გადასაცემი კონფიგურაციის არგუმენტების შესახებ დამატებითი ინფორმაციისთვის იხილეთ USB მოწყობილობის MSC კლასის აპლიკაციის სპეციფიკური კონფიგურაციები.
Example – sl_usbd_ msc_scsi_create_instance()-ის გამოძახება

საავტორო უფლება © 2025 Silicon Laboratories. Ყველა უფლება დაცულია.

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 კლასის ეგზემპლარის დამატება თქვენი მოწყობილობის კონფიგურაციაში (კონფიგურაციებში)
MSC კლასის ეგზემპლარის შექმნის შემდეგ, მისი კონფიგურაციაში დამატება ფუნქციის გამოძახებით შეგიძლიათ
sl_usbd_msc_add_to_configuration().
ყოფილმაampქვემოთ მოცემულია, თუ როგორ გამოვიძახოთ sl_usbd_msc_scsi_add_to_configuration() ფუნქცია ნაგულისხმევი არგუმენტების გამოყენებით.
Example – sl_usbd_ msc_scsi_add_to_configuration()-ის გამოძახება

sl_status_t სტატუსი;

სტატუსი = sl_usbd_msc_scsi_add_to_configuration(class_nbr,

(1)

config_nbr_fs);

(2)

თუ (სტატუსი! SL_STATUS_OK) {

/* შეცდომა მოხდა. აქ უნდა დაემატოს შეცდომების დამუშავების ფუნქცია. */

}

(1) კლასის ნომერი, რომელიც უნდა დაემატოს კონფიგურაციას, დაბრუნებული sl_usbd_msc_scsi_create_instance() ფუნქციით. (32) კონფიგურაციის ნომერი (აქ ემატება მას სრული სიჩქარის კონფიგურაციას).
USB მოწყობილობის MSC კლასის ლოგიკური ერთეულების დამუშავება
ლოგიკური ერთეულის დამატება, შენახვის საშუალების მიმაგრება/გამოყოფა
ლოგიკური ერთეულის დამატება
MSC SCSI კლასის ინსტანციაში ლოგიკური ერთეულის დამატებისას, ის უნდა იყოს დაკავშირებული შენახვის საშუალებასთან (RAMDisk, SD ბარათი, ფლეშ მეხსიერება და ა.შ.). MSC კლასი შენახვის საშუალებასთან კომუნიკაციისთვის იყენებს შენახვის დრაივერს. ლოგიკური ერთეულის დამატებისას ეს დრაივერი უნდა იყოს მოწოდებული.
ყოფილმაampქვემოთ მოცემულია, თუ როგორ დავამატოთ ლოგიკური ერთეული 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

= „ბლოკის მოწყობილობა ex“ampლე“;

lu_info.product_revision_level = 0x1000u;

lu_info.is_only_read

= ცრუ;

სტატუსი = sl_usbd_msc_scsi_lun_add(class_nbr, &lu_info, &lu_object_ptr);
თუ (სტატუსი! SL_STATUS_OK) { /* შეცდომა მოხდა. შეცდომების დამუშავება აქ უნდა დაემატოს. */ }

შენახვის საშუალების მიმაგრება/გამოყოფა
ლოგიკური ერთეულის დამატების შემდეგ, მასპინძლის მხრიდან ხელმისაწვდომი რომ იყოს, უნდა იყოს მიერთებული შენახვის საშუალება. MSC კლასი გთავაზობთ ორ ფუნქციას შენახვის მედიის ლოგიკურ ერთეულთან ასოცირების გასაკონტროლებლად: sl_usbd_msc_scsi_lun_attach() და sl_usbd_msc_scsi_lun_detach(). ეს ფუნქციები საშუალებას გაძლევთ, საჭიროების შემთხვევაში, განახორციელოთ შენახვის მოწყობილობის ამოღების ემულაცია, რათა ხელახლა მოიპოვოთ წვდომა ჩაშენებული აპლიკაციიდან.
ყოფილმაampქვემოთ მოცემულია, თუ როგორ გამოიყენოთ ფუნქციები sl_usbd_msc_scsi_lun_attach() და sl_usbd_msc_scsi_lun_detach().
Example – მედიის მიმაგრება/გამოყოფა

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 კლასის შენახვის დრაივერები
USB მოწყობილობის MSC კლასის მოწყობილობას შენახვის საშუალებასთან კომუნიკაციისთვის მეხსიერების დრაივერი სჭირდება. ამ ეტაპზე, Silicon Labs დრაივერებს არ სთავაზობს.

საავტორო უფლება © 2025 Silicon Laboratories. Ყველა უფლება დაცულია.

49/174

დასრულდაview
TPY დრაივერის ხელოვნური ინტელექტი განისაზღვრება typedef sl_usbd_msc_scsi_lun_api_t-ით. ჩვენი sl_usbd_msc_scsi_lun_api_t ფაილი უნდა იყოს ჩართული თქვენს sl_usbd_msc_scsi_lun_info_t ფაილში, როდესაც ლოგიკურ l ერთეულს sl_usbd_msc_scsi_lun_add()-ით ამატებთ. სტრუქტურების შესახებ დამატებითი ინფორმაციისთვის იხილეთ განყოფილება USB მოწყობილობის MSC SCSI API. მეხსიერების დრაივერის იმპლემენტაცია შეიძლება იყოს ისეთივე მარტივი, როგორც სექტორების მასივი ოპერატიულ მეხსიერებაში. სექტორის ტიპიური ზომა (ანუ ბლოკის ზომა) არის 512 მასობრივი შენახვის მოწყობილობებისთვის და 2048 CD-ROM-ებისთვის.

საავტორო უფლება © 2025 Silicon Laboratories. Ყველა უფლება დაცულია.

50/174

დასრულდაview
დასრულდაview
USB მოწყობილობის მომწოდებლის კლასი
USB მოწყობილობის მომწოდებლის კლასის გადაჭარბებაview USB მოწყობილობის გამყიდველის კლასის რესურსების საჭიროებები Core USB მოწყობილობის გამყიდველის კლასის კონფიგურაციიდან USB მოწყობილობის გამყიდველის კლასის პროგრამირების სახელმძღვანელო გამყიდველის კლასი საშუალებას გაძლევთ შექმნათ გამყიდველისთვის სპეციფიკური მოწყობილობები, რომლებსაც შეუძლიათ საკუთარი პროტოკოლის განხორციელება. ის ეყრდნობა მონაცემების წყვილს ჰოსტსა და მოწყობილობას შორის გადასაცემად. ...
USB მოწყობილობის მომწოდებლის კლასის გადაჭარბებაview
სურათი – Windows Host-სა და Vendor კლასს შორის ზოგადი არქიტექტურა გვიჩვენებს Vendor კლასის გამოყენებით მასპინძელსა და მოწყობილობას შორის ზოგად არქიტექტურას. ამ მაგალითშიampანუ, მასპინძელი ოპერაციული სისტემაა MS Windows.
სურათი - ზოგადი არქიტექტურა MS Windows Host-სა და Vendor კლასს შორის

MS Windows-ის მხრივ, აპლიკაცია მომწოდებელ მოწყობილობასთან კომუნიკაციას USB ბიბლიოთეკასთან ურთიერთქმედების გზით ამყარებს. ბიბლიოთეკები, როგორიცაა libusb, გვთავაზობენ API-ს მოწყობილობისა და მასთან დაკავშირებული მილების სამართავად და მოწყობილობასთან კომუნიკაციისთვის კონტროლის, ნაყარი და შეწყვეტის საბოლოო წერტილების მეშვეობით.
მოწყობილობის მხრივ, Vendor კლასი შედგება შემდეგი საბოლოო წერტილებისგან:
საკონტროლო IN და OUT ბოლო წერტილების წყვილი, რომელსაც ნაგულისხმევი ბოლო წერტილი ეწოდება. მასიური IN და OUT ბოლო წერტილების წყვილი.

საავტორო უფლება © 2025 Silicon Laboratories. Ყველა უფლება დაცულია.

51/174

დასრულდაview

შეწყვეტის IN და OUT საბოლოო წერტილების წყვილი. ეს წყვილი არასავალდებულოა. ქვემოთ მოცემულ ცხრილში მითითებულია სხვადასხვა საბოლოო წერტილების გამოყენება:
ცხრილი – მომწოდებლის კლასის საბოლოო წერტილების გამოყენება

საბოლოო წერტილის მიმართულება

კონტროლი IN
კონტროლი
გარეთ
ჯგუფური შეყვანა

მოწყობილობა-ჰოსტი
>ჰოსტიდანმოწყობილობამდე
მოწყობილობა-ჰოსტი

ნაყარი გატანა
შეწყვეტა შეყვანა
შეწყვეტა
გარეთ

მასპინძელიდან მოწყობილობამდე
მოწყობილობა-ჰოსტი
მასპინძელიდან მოწყობილობამდე

გამოყენება
ჩამოთვლის სტანდარტული მოთხოვნები და მომწოდებლის სპეციფიკური მოთხოვნები.
ჩამოთვლის სტანდარტული მოთხოვნები და მომწოდებლის სპეციფიკური მოთხოვნები.
ნედლი მონაცემების კომუნიკაცია. მონაცემების სტრუქტურირება შესაძლებელია საკუთარი პროტოკოლის მიხედვით.
ნედლი მონაცემების კომუნიკაცია. მონაცემების სტრუქტურირება შესაძლებელია საკუთარი პროტოკოლის მიხედვით.
ნედლი მონაცემების კომუნიკაცია ან შეტყობინება. მონაცემების სტრუქტურირება შესაძლებელია საკუთრების პროტოკოლის მიხედვით. ნედლი მონაცემების კომუნიკაცია ან შეტყობინება. მონაცემების სტრუქტურირება შესაძლებელია საკუთრების პროტოკოლის მიხედვით.

მოწყობილობის აპლიკაციას შეუძლია გამოიყენოს მასიური და შეწყვეტის საბოლოო წერტილები მონაცემების ჰოსტისთვის გასაგზავნად ან მისაღებად. მას შეუძლია გამოიყენოს მხოლოდ ნაგულისხმევი საბოლოო წერტილი ჰოსტის მიერ გაგზავნილი მომწოდებლის სპეციფიკური მოთხოვნების გაშიფვრისთვის. სტანდარტული მოთხოვნები შიდა დონეზე იმართება Silicon Labs USB მოწყობილობის ძირითადი ფენის მიერ.
USB მოწყობილობის მომწოდებლის კლასის რესურსების საჭიროებები Core-დან

ყოველ ჯერზე, როდესაც კონფიგურაციას sl_usbd_vendor_add_to_configuration() ფუნქციის მეშვეობით დაამატებთ გამყიდველის კლასის ინსტანციას, ბირთვიდან გამოიყოფა შემდეგი რესურსები.

რესურსი
ინტერფეისები ალტერნატიული ინტერფეისები საბოლოო წერტილები ინტერფეისის ჯგუფები

რაოდენობა
1 1 2 (4 თუ ჩართეთ შეწყვეტის საბოლოო წერტილები) 0

გაითვალისწინეთ, რომ ეს რიცხვები თითოეული კონფიგურაციისთვისაა. SL_USBD_INTERFACE_QUANTITY , SL_USBD_ALT_INTERFACE_QUANTITY , SL_USBD_INTERFACE_GROUP_QUANTITY და SL_USBD_DESCRIPTOR_QUANTITY კონფიგურაციის მნიშვნელობების დაყენებისას არ დაგავიწყდეთ იმის გათვალისწინება, თუ რამდენი კონფიგურაცია დაემატება კლასს. SL_USBD_OPEN_ENDPOINTS_QUANTITY კონფიგურაციის მნიშვნელობისთვის, რადგან ბოლო წერტილები იხსნება მხოლოდ მაშინ, როდესაც ჰოსტი კონფიგურაციას დაყენებს, თქვენ უბრალოდ უნდა გაითვალისწინოთ კლასის ეგზემპლარისთვის საჭირო ბოლო წერტილების რაოდენობა.
USB მოწყობილობის მომწოდებლის კლასის კონფიგურაცია

Vendor კლასის კონფიგურაციისთვის გამოიყენება კონფიგურაციის პარამეტრების ორი ჯგუფი:
USB მოწყობილობის მომწოდებლის კლასის აპლიკაციის სპეციფიკური კონფიგურაციები USB მოწყობილობის მომწოდებლის კლასის ეგზემპლარის კონფიგურაციები
USB მოწყობილობის მომწოდებლის კლასის აპლიკაციის სპეციფიკური კონფიგურაციები
პირველ რიგში, Silicon Labs-ის USB მოწყობილობის Vendor კლასის მოდულის გამოსაყენებლად, შეცვალეთ Vendor-ის კომპილაციის დროის კონფიგურაციის განსაზღვრებები თქვენი აპლიკაციის საჭიროებების შესაბამისად. ისინი გადაჯგუფებულია 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 მოწყობილობის მომწოდებლის კლასის ეგზემპლარის კონფიგურაციები

ეს განყოფილება განსაზღვრავს Vendor კლასის ინსტანციებთან დაკავშირებულ კონფიგურაციებს.
კლასის ეგზემპლარის შექმნა intr_en ინტერვალი p_vendor_callbacks
კლასის ეგზემპლარის შექმნა

Vendor კლასის ეგზემპლარის შექმნა ხდება sl_usbd_vendor_create_instance() ფუნქციის გამოძახებით, რომელიც იღებს სამ კონფიგურაციის არგუმენტს, რომლებიც აღწერილია ქვემოთ.

intr_en
ლოგიკური მნიშვნელობა, რომელიც მიუთითებს, უნდა დაემატოს თუ არა შეწყვეტის ბოლო წერტილების წყვილი.

ღირებულება
ჭეშმარიტი ცრუ

აღწერა
ჩაშენებული აპლიკაციისთვის დაემატება IN/OUT საბოლოო წერტილების წყვილი. შეფერხების საბოლოო წერტილი არ დაემატება. ხელმისაწვდომი იქნება მხოლოდ ჯგუფური IN/OUT საბოლოო წერტილების წყვილი.

ინტერვალი
თუ intr_en-ს true-ზე დააყენებთ, შეგიძლიათ მიუთითოთ შეწყვეტის ბოლო წერტილების გამოკითხვის ინტერვალი (მილიწამებში). თუ intr_en-ს false-ზე დააყენებთ, შეგიძლიათ ინტერვალი 0-ზე დააყენოთ, რადგან კლასი მას იგნორირებას გაუკეთებს.
p_vendor_callbacks
p_vendor_callbacks არის უკუკავშირის ფუნქციის სტრუქტურის ცვლადის მაჩვენებელი, რომლის მითითებაც შეგიძლიათ კლასის სპეციფიკური კონტროლის მოთხოვნების დასამუშავებლად. თუ არ იყენებთ კლასის სპეციფიკურ მოთხოვნებს ან გჭირდებათ ჩართვა/გამორთვის შეტყობინებები, შეგიძლიათ დააყენოთ ეს მნიშვნელობა NULL-ზე.
ყოფილმაampქვემოთ მოცემულია თქვენი კლასის სპეციფიკური მოთხოვნების დამმუშავებლის მოსალოდნელი ხელმოწერა.
Example – კლასის სპეციფიკური მოთხოვნის ფუნქციის ხელმოწერა

void app_usbd_vendor_req_handle(uint8_t

class_nbr, (1)

const sl_usbd_setup_req_t *p_setup_req); (2)

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

(1) მომწოდებლის კლასის ეგზემპლარის ნომერი.

საავტორო უფლება © 2025 Silicon Laboratories. Ყველა უფლება დაცულია.

53/174

დასრულდაview

(2) მასპინძლისგან მიღებული დაყენების მოთხოვნის მითითება.
USB მოწყობილობის მომწოდებლის კლასის პროგრამირების სახელმძღვანელო
ეს განყოფილება განმარტავს, თუ როგორ გამოიყენოთ Vendor კლასი. USB მოწყობილობის Vendor კლასის ინიციალიზაცია USB მოწყობილობის Vendor კლასის ეგზემპლარის თქვენს მოწყობილობაზე დამატება USB მოწყობილობის Vendor კლასის გამოყენებით კომუნიკაცია
USB მოწყობილობის მომწოდებლის კლასის ინიციალიზაცია
თქვენს მოწყობილობაზე მომწოდებლის კლასის ფუნქციონალის დასამატებლად, ჯერ კლასის ინიციალიზაცია მოახდინეთ USBD_Vendor_Init() ფუნქციის გამოძახებით.ampქვემოთ მოცემულია, თუ როგორ გამოვიძახოთ sl_usbd_vendor_init() ფუნქცია.
Example – sl_usbd_vendor_init()-ის გამოძახება

sl_status_t სტატუსი;
სტატუსი = sl_usbd_vendor_init(); თუ (სტატუსი! SL_STATUS_OK) { /* შეცდომა მოხდა. შეცდომების დამუშავება აქ უნდა დაემატოს. */ }
USB მოწყობილობის მომწოდებლის კლასის ეგზემპლარის დამატება თქვენს მოწყობილობაზე
თქვენს მოწყობილობაზე მომწოდებლის კლასის ფუნქციონალის დასამატებლად, ჯერ უნდა შექმნათ ეგზემპლარი, შემდეგ კი დაამატოთ ის თქვენი მოწყობილობის კონფიგურაციაში(ებში).
მომწოდებლის კლასის ინსტანციის შექმნა მომწოდებლის კლასის ინსტანციის თქვენი მოწყობილობის კონფიგურაციაში დამატება
მომწოდებლის კლასის ეგზემპლარის შექმნა
შექმენით Vendor კლასის ეგზემპლარი sl_usbd_vendor_create_instance() ფუნქციის გამოძახებით.ampქვემოთ მოცემულია, თუ როგორ გამოვიძახოთ sl_usbd_vendor_create_instance() ფუნქცია ნაგულისხმევი არგუმენტების გამოყენებით. sl_usbd_vendor_create_instance()-ში გადასაცემი კონფიგურაციის არგუმენტების შესახებ დამატებითი ინფორმაციისთვის იხილეთ USB მოწყობილობის მომწოდებლის კლასის ეგზემპლარის კონფიგურაციები.
Example – sl_usbd_vendor_create_instance()-ის გამოძახება

uint8_t class_nbr; sl_status_t სტატუსი;

სტატუსი = 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 მოწყობილობის მომწოდებლის კლასის გამოყენებით კომუნიკაცია. მომწოდებლის კლასის ინსტანციის დამატება თქვენი მოწყობილობის კონფიგურაციაში მომწოდებლის კლასის ინსტანციის შექმნის შემდეგ, შეგიძლიათ დაამატოთ ის კონფიგურაციაში USB_Vendor_ConfigAdd() ფუნქციის გამოძახებით.ampქვემოთ მოცემულია, თუ როგორ გამოვიძახოთ sl_usbd_vendor_add_to_configuration() ფუნქცია ნაგულისხმევი არგუმენტების გამოყენებით.
Example – sl_usbd_vendor_add_to_configuration()-ის გამოძახება

sl_status_t სტატუსი;

სტატუსი = sl_usbd_vendor_add_to_configuration(class_nbr,

(1)

config_nbr_fs);

(2)

თუ (სტატუსი! SL_STATUS_OK) {

/* შეცდომა მოხდა. აქ უნდა დაემატოს შეცდომების დამუშავების ფუნქცია. */

}

(1) კლასის ნომერი, რომელიც უნდა დაემატოს კონფიგურაციას, დაბრუნებული sl_usbd_vendor_create_instance() ფუნქციით. (2) კონფიგურაციის ნომერი (აქ ემატება მას სრული სიჩქარის კონფიგურაციას).
კომუნიკაცია USB მოწყობილობის მომწოდებლის კლასის გამოყენებით
ზოგადი სინქრონული კომუნიკაცია ასინქრონული კომუნიკაცია მომწოდებლის მოთხოვნა ზოგადი მომწოდებლის კლასი ჰოსტთან კომუნიკაციისთვის გთავაზობთ შემდეგ ფუნქციებს. ფუნქციის პარამეტრების შესახებ დამატებითი ინფორმაციისთვის იხილეთ USB მოწყობილობის მომწოდებლის API.
ცხრილი – მომწოდებლის კომუნიკაციის API-ის შეჯამება

ფუნქციის სახელი
sl_usb d _v e nd or r_ re ad _b ulk_sy nc() sl_usb d _v e nd or r_ write _b ulk_sy nc() sl_usb d _v e nd or r_ re ad _b ulk_asy nc() sl_usb d _v e nd or r_ write _b ulk_asy nc() sl_usb d _v e nd or r_ re ad _inte rrup t_sy nc() sl_usb d _v e nd or r_ write _inte rrup t_sy nc() sl_usb d _v e nd or r_ re ad _inte rrup t_asy nc
()
sl_usb d _v e nd or r_write _inte rrup t_asy nc
()

ოპერაცია იღებს მონაცემებს ჰოსტიდან bulk OUT საბოლოო წერტილის მეშვეობით. ეს ფუნქცია ბლოკავს. აგზავნის მონაცემებს ჰოსტს bulk IN საბოლოო წერტილის მეშვეობით. ეს ფუნქცია ბლოკავს. იღებს მონაცემებს ჰოსტიდან bulk OUT საბოლოო წერტილის მეშვეობით. ეს ფუნქცია არ არის ბლოკირებადი. აგზავნის მონაცემებს ჰოსტს bulk IN საბოლოო წერტილის მეშვეობით. ეს ფუნქცია არ არის ბლოკირებადი. იღებს მონაცემებს ჰოსტიდან interrupt OUT საბოლოო წერტილის მეშვეობით. ეს ფუნქცია ბლოკავს. აგზავნის მონაცემებს ჰოსტს interrupt IN საბოლოო წერტილის მეშვეობით. ეს ფუნქცია ბლოკავს. იღებს მონაცემებს ჰოსტიდან interrupt OUT საბოლოო წერტილის მეშვეობით. ეს ფუნქცია არ არის-
ბლოკირება.
მონაცემებს ჰოსტს აგზავნის შეწყვეტის შეყვანის საბოლოო წერტილის მეშვეობით. ეს ფუნქცია არ ბლოკავს.

გამყიდველის მოთხოვნები ასევე ჰოსტთან კომუნიკაციის კიდევ ერთი გზაა. ჰოსტის მიერ გაგზავნილი გამყიდველის მოთხოვნების მართვისას, აპლიკაციას შეუძლია მონაცემების მიღება ან გაგზავნა ჰოსტიდან ან ჰოსტისთვის მართვის საბოლოო წერტილის გამოყენებით; თქვენ უნდა მოგვაწოდოთ აპლიკაციის უკუკავშირი, რომელიც გადაეცემა sl_usbd_vendor_create_instance() პარამეტრის სახით. სინქრონული კომუნიკაცია

საავტორო უფლება © 2025 Silicon Laboratories. Ყველა უფლება დაცულია.

55/174

დასრულდაview

სინქრონული კომუნიკაცია ნიშნავს, რომ გადაცემა იბლოკება. ფუნქციის გამოძახებისას, აპლიკაცია იბლოკება გადაცემის დასრულებამდე შეცდომით ან შეცდომის გარეშე. შესაძლებელია დროის ამოწურვის მითითება, რათა თავიდან იქნას აცილებული მარადიული ლოდინი.ampქვემოთ მოცემულ სურათზე ნაჩვენებია წაკითხვისა და ჩაწერის ფუნქცია, რომელიც იღებს მონაცემებს ჰოსტისგან bulk OUT საბოლოო წერტილის გამოყენებით და აგზავნის მონაცემებს ჰოსტთან bulk IN საბოლოო წერტილის გამოყენებით.
Example – სინქრონული მასობრივი კითხვა და ჩაწერა

__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()-ით შექმნილი კლასის ეგზემპლარის ნომერი უზრუნველყოფს Vendor კლასის შიდა მითითებას, რათა გადაცემა გადამისამართდეს შესაბამის ნაყარი OUT ან IN საბოლოო წერტილში.
(2) აპლიკაციამ უნდა უზრუნველყოს, რომ ფუნქციისთვის მოწოდებული ბუფერი საკმარისად დიდი იყოს ყველა მონაცემის განსათავსებლად. წინააღმდეგ შემთხვევაში, შესაძლოა სინქრონიზაციის პრობლემები წარმოიშვას.
(3) უსასრულო ბლოკირების სიტუაციის თავიდან ასაცილებლად, შესაძლებელია მილიწამებში გამოხატული ტაიმ-აუტის მითითება. 809 მნიშვნელობა აპლიკაციის დავალებას სამუდამოდ ლოდინს აიძულებს.
(4) აპლიკაცია უზრუნველყოფს ინიციალიზებული გადაცემის ბუფერს.
(5) თუ ეს დროშა დაყენებულია true-ზე და გადაცემის სიგრძე საბოლოო წერტილის მაქსიმალური პაკეტის ზომის ჯერადია, მოწყობილობის დასტა ჰოსტს გაუგზავნის ნულოვანი სიგრძის პაკეტს გადაცემის დასრულების სიგნალის მისაცემად.
შეწყვეტის ბოლო წერტილის კომუნიკაციის ფუნქციების, sl_usbd_vendor_read_interrupt_sync() და sl_usbd_vendor_write_interrupt_sync() გამოყენება მსგავსია Ex-ში წარმოდგენილი ბოლო წერტილის კომუნიკაციის მასიური ფუნქციებისა.ample – სინქრონული მასიური კითხვა და ჩაწერა.
ასინქრონული კომუნიკაცია
ასინქრონული კომუნიკაცია ნიშნავს, რომ გადაცემა არ არის ბლოკირებადი. ფუნქციის გამოძახებისას, აპლიკაცია გადასცემს გადაცემის ინფორმაციას მოწყობილობის დასტას და არ ბლოკავს. USB ავტობუსის მეშვეობით გადაცემის მიმდინარეობისას შესაძლებელია აპლიკაციის სხვა დამუშავებაც. გადაცემის დასრულების შემდეგ, მოწყობილობის დასტა გამოიძახებს უკუკავშირის ფუნქციას, რათა აცნობოს აპლიკაციას გადაცემის დასრულების შესახებ.ampქვემოთ მოცემულია ასინქრონული წაკითხვა და ჩაწერა.
Example – ასინქრონული მასობრივი კითხვა და ჩაწერა

საავტორო უფლება © 2025 Silicon Laboratories. Ყველა უფლება დაცულია.

56/174

დასრულდაview

void app_usbd_vendor_comm (uint8_t class_nbr)

{

__ALIGNED(4) uint8_t rx_buf[2];

__ALIGNED(4) uint8_t tx_buf[2];

sl_status_t

სტატუსი;

სტატუსი = sl_usbd_vendor_read_bulk_async(class_nbr,

(void *)&rx_buf[0],

(2)

2u,

app_usbd_vendor_rx_completed,

ნული);

(4)

თუ (სტატუსი! SL_STATUS_OK) {

/* $$$$ შეცდომის მართვა. */

}

სტატუსი = sl_usbd_vendor_write_bulk_async(class_nbr,

(void *)&tx_buf[0],

(5)

2u,

app_usbd_vendor_tx_completed,

NULL,

(4)

ცრუ);

(6)

თუ (სტატუსი! SL_STATUS_OK) {

/* $$$$ შეცდომის მართვა. */

}

}

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

სტატიკური 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) {

/* $$$$ დამუშავების განხორციელება. */

} სხვა {

/* $$$$ შეცდომის მართვა. */

}

}

სტატიკური 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) კლასის ეგზემპლარის ნომერი უზრუნველყოფს შიდა მითითებას Vendor კლასისთვის, რათა გადაცემა გადამისამართდეს შესაბამის ნაყარი OUT ან IN საბოლოო წერტილამდე. (2) აპლიკაციამ უნდა უზრუნველყოს, რომ მოწოდებული ბუფერი საკმარისად დიდია ყველა მონაცემის განსათავსებლად. წინააღმდეგ შემთხვევაში, შეიძლება წარმოიშვას სინქრონიზაციის პრობლემები. (3) აპლიკაცია უზრუნველყოფს უკუკავშირის ფუნქციის მაჩვენებელს, რომელიც გადაეცემა პარამეტრად. გადაცემის დასრულების შემდეგ, მოწყობილობის დასტა იძახებს ამ უკუკავშირის ფუნქციას, რათა აპლიკაციამ შეძლოს გადაცემის დასრულება გადაცემის შედეგის ანალიზით. მაგალითად, წაკითხვის ოპერაციის დასრულების შემდეგ, აპლიკაციამ შეიძლება განახორციელოს დამუშავება მიღებულ მონაცემებზე. ჩაწერის დასრულების შემდეგ, აპლიკაციას შეუძლია მიუთითოს, წარმატებული იყო თუ არა ჩაწერა და რამდენი ბაიტი გაიგზავნა.

საავტორო უფლება © 2025 Silicon Laboratories. Ყველა უფლება დაცულია.

57/174

დასრულდაview
(4) ასევე შესაძლებელია უკუკავშირთან დაკავშირებული არგუმენტის გადაცემა. შემდეგ უკუკავშირის კონტექსტში შესაძლებელია გარკვეული პირადი ინფორმაციის მოძიება. (5) აპლიკაცია უზრუნველყოფს ინიციალიზებული გადაცემის ბუფერს. (6) თუ ეს დროშა დაყენებულია true-ზე და გადაცემის სიგრძე საბოლოო წერტილის მაქსიმალური პაკეტის ზომის ჯერადია, მოწყობილობის დასტა გაუგზავნის ნულოვანი სიგრძის პაკეტს ჰოსტს გადაცემის დასრულების სიგნალის მისაცემად. შეწყვეტის საბოლოო წერტილის საკომუნიკაციო ფუნქციების, sl_usbd_vendor_read_interrupt_async() და sl_usbd_vendor_write_interrupt_async() გამოყენება, მსგავსია Ex-ში წარმოდგენილი საბოლოო წერტილის მასობრივი საკომუნიკაციო ფუნქციებისა.ampასინქრონული მასობრივი კითხვა და ჩაწერა.
მომწოდებლის მოთხოვნა
USB 2.0 სპეციფიკაცია განსაზღვრავს სამი ტიპის მოთხოვნას: სტანდარტული, კლასის და გამყიდველის. ყველა სტანდარტული მოთხოვნა დამუშავებულია უშუალოდ ძირითადი ფენის მიერ, ხოლო კლასის მოთხოვნები იმართება შესაბამისი ასოცირებული კლასის მიერ. გამყიდველის მოთხოვნების დამუშავება შესაძლებელია გამყიდველის კლასის მიერ. გამყიდველის მოთხოვნების დასამუშავებლად, თქვენ უნდა მიუთითოთ აპლიკაციის უკუკავშირი, როგორც sl_usbd_vendor_create_instance() პარამეტრი. მას შემდეგ, რაც გამყიდველის მოთხოვნა მიიღება USB მოწყობილობის მიერ, ის სწორად უნდა იყოს გაშიფრული.ampქვემოთ მოცემული სურათი აჩვენებს მომწოდებლის მოთხოვნის დეკოდირებას. მონაცემთა გადაცემის დროს შესაძლოა საჭირო გახდეს გარკვეული მოთხოვნების მიღება ან ჰოსტისთვის გაგზავნა.tagკონტროლის გადაცემის ე. თუ მონაცემები არ არისtage-ს არსებობის შემთხვევაში, თქვენ მხოლოდ Setup პაკეტის გაშიფვრა გჭირდებათ. ეს ყოფილიampნახაზი აჩვენებს მონაცემების სამ ტიპსtagელექტრონული მართვა: მონაცემები არ არის, მონაცემები გამოდის და მონაცემები შედის.
Example – გამყიდველის მოთხოვნის დეკოდირება

საავტორო უფლება © 2025 Silicon Laboratories. Ყველა უფლება დაცულია.

58/174

დასრულდაview

#განსაზღვრეთ APP_VENDOR_REQ_NO_DATA

0x01u

#განსაზღვრეთ APP_VENDOR_REQ_RECEIVE_DATA_FROM_HOST 0x02u

#განსაზღვრეთ APP_VENDOR_REQ_SEND_DATA_TO_HOST 0x03u

#განსაზღვრეთ APP_VENDOR_REQ_DATA_BUF_SIZE

50u

სტატიკური uint8_t app_vendor_req_buf[APP_VENDOR_REQ_DATA_BUF_SIZE];

სტატიკური bool app_usbd_vendor_req (uint8_t

class_nbr,

const sl_usbd_setup_req_t *p_setup_req)

(1)

{

bool valid;

sl_status_t სტატუსი;

uint16_t req_len;

uint32_t xfer_len;

(void)class_nbr;

switch(p_setup_req->bRequest) { შემთხვევაში APP_VENDOR_REQ_NO_DATA: valid = true; break;

(2) (3)

შემთხვევა APP_VENDOR_REQ_RECEIVE_DATA_FROM_HOST:

(4)

req_len = p_setup_req->wLength;

თუ (req_len > APP_VENDOR_REQ_DATA_BUF_SIZE) {

// მონაცემების მისაღებად საკმარისი ადგილი არ არის.

დაბრუნება (ყალბი);

}

// მონაცემების მიღება Control OUT EP-ის მეშვეობით. // სამუდამოდ დაელოდეთ გადაცემის დასრულებას. status = sl_usbd_core_read_control_sync((void *)&app_vendor_req_buf[0u],
req_len, 0u, &xfer_len); თუ (სტატუსი! SL_STATUS_OK) { valid = false; } სხვა { valid = true; } break;

შემთხვევა APP_VENDOR_REQ_SEND_DATA_TO_HOST:

(5)

req_len = APP_VENDOR_REQ_DATA_BUF_SIZE;

// ბუფის შევსება ნიმუშით. Mem_Set((void *)&AppVendorReqBuf[0u],
'A',
req_len);

// მონაცემების გაგზავნა Control IN EP-ის მეშვეობით. // გადაცემის დასრულების სამუდამოდ დალოდება. status = sl_usbd_core_write_control_sync((void *)&app_vendor_req_buf[0u],
req_len, 0u, false, &xfer_len); თუ (სტატუსი! SL_STATUS_OK) { valid = DEF_FAIL; } სხვა { valid = DEF_OK; } break;

ნაგულისხმევი:

(6)

// მოთხოვნა არ არის მხარდაჭერილი.

საავტორო უფლება © 2025 Silicon Laboratories. Ყველა უფლება დაცულია.

59/174

დასრულდაview

ვალიდური = true; შესვენება;
შემთხვევაში APP_VENDOR_REQ_RECEIVE_DATA_FROM_HOST:(4) req_len = p_setup_req->wLength;if(req_len > APP_VENDOR_REQ_DATA_BUF_SIZE){// მონაცემების მისაღებად საკმარისი ადგილი არ არის.return(false);}// მონაცემების მიღება Control OUT EP-ის მეშვეობით.// გადაცემის დასრულებას სამუდამოდ დაელოდეთ. status =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;
შემთხვევაში APP_VENDOR_REQ_SEND_DATA_TO_HOST:(5) req_len = APP_VENDOR_REQ_DATA_BUF_SIZE;// ბუფის შევსება ნიმუშით.Mem_Set((void *)&AppVendorReqBuf[0u],'A',
req_len);// მონაცემების გაგზავნა Control IN EP-ის მეშვეობით.// სამუდამოდ დაელოდეთ გადაცემის დასრულებას. status =sl_usbd_core_write_control_sync((void *)&app_vendor_req_buf[0u],
req_len,0u,false,&xfer_len);if(სტატუსი! SL_STATUS_OK){valid = DEF_FAIL;}სხვა {valid = DEF_OK;}break;
default:(6)// მოთხოვნა არ არის მხარდაჭერილი. valid = DEF_FAIL;break;}return(valid);}

(1) ბირთვი გადასცემს Setup პაკეტის შინაარსს თქვენს აპლიკაციას. სტრუქტურა sl_usbd_setup_req_t შეიცავს იგივე ველებს, რაც განსაზღვრულია USB 2.0 სპეციფიკაციით (დამატებითი ინფორმაციისთვის იხილეთ სპეციფიკაციის „9.3 USB მოწყობილობის მოთხოვნები“ განყოფილება):

typedef struct {

uint8_t bmRequestType; /* მოთხოვნის მახასიათებლები.

*/

uint8_t bRequest; /* კონკრეტული მოთხოვნა.

*/

uint16_t wValue; /* განსხვავდება მოთხოვნის მიხედვით.

*/

uint16_t wIndex; /* განსხვავდება მოთხოვნის მიხედვით; როგორც წესი, გამოიყენება როგორც ინდექსი.*/

uint16_t wLength; /* გადაცემის სიგრძე, თუ მონაცემები stagაწმყო.

*/

} sl_usbd_setup_req_t;

(2) მოთხოვნის განსაზღვრა. თუ სხვადასხვა მოთხოვნას იყენებთ, შეგიძლიათ გამოიყენოთ switch ოპერატორი. ამ შემთხვევაშიampანუ, არსებობს სამი განსხვავებული მოთხოვნა, რომლებიც შეესაბამება მონაცემთა სამი ტიპის მონაცემებს.tagე: APP_VENDOR_REQ_NO_DATA, APP_VENDOR_REQ_RECEIVE_DATA_FROM_HOST და APP_VENDOR_REQ_SEND_DATA_TO_HOST.
(3) თუ მონაცემები არ არისtage-ს არსებობის შემთხვევაში, თქვენ მხოლოდ სხვა ველების გაშიფვრა გჭირდებათ. მონაცემთა s-ის არსებობაtage-ს მნიშვნელობა მითითებულია wLength ველით, რომელიც არ არის ნული ან null.
(4) თუ ჰოსტი მონაცემებს მოწყობილობას უგზავნის, თქვენ უნდა გამოიძახოთ ფუნქცია sl_usbd_core_read_control_sync(). მოწოდებული ბუფერი უნდა შეიცავდეს w სიგრძის ბაიტებს. თუ რაიმე შეცდომა მოხდება, ბირთვს დაუბრუნეთ false, რაც შეაჩერებს სტატუსს.tagკონტროლის გადაცემის e, რაც ჰოსტს მიუთითებს, რომ მოთხოვნის დამუშავება შეუძლებელია. წარმატების შემთხვევაში, ბრუნდება true.
(5) თუ ჰოსტი მოწყობილობიდან მონაცემებს მიიღებს, უნდა გამოიძახოთ ფუნქცია sl_usbd_core_write_control_sync(). თუ რაიმე შეცდომა მოხდება, ბირთვს დაუბრუნეთ false, რაც სტატუსის s-ს შეაჩერებს.tagკონტროლის გადაცემის e, რაც ჰოსტს მიუთითებს, რომ მოთხოვნის დამუშავება შეუძლებელია. წარმატების შემთხვევაში, ბრუნდება true.
(6) ამ ექსშიampანუ, ყველა არააღიარებული მოთხოვნა მონიშნულია ბირთვისთვის false-ის დაბრუნებით. ეს შეაფერხებს მონაცემების ან სტატუსის შენახვას.tagკონტროლის გადაცემის e, რაც ჰოსტს მიუთითებს, რომ მოთხოვნა არ არის მხარდაჭერილი.
ჰოსტი აგზავნის მომწოდებლის მოთხოვნებს ჰოსტ მომწოდებლის აპლიკაციის მეშვეობით. USB ბიბლიოთეკები, როგორიცაა libusb, შეიძლება გამოყენებულ იქნას თქვენი მორგებული ჰოსტ მომწოდებლის აპლიკაციის შესაქმნელად.

საავტორო უფლება © 2025 Silicon Laboratories. Ყველა უფლება დაცულია.

60/174

API დოკუმენტაცია
API დოკუმენტაცია
API დოკუმენტაცია
მოდულების სია
USB მოწყობილობის API, USB მოწყობილობა, ACM API, USB მოწყობილობა, CDC API, USB მოწყობილობის Core API, USB მოწყობილობა, HID API, USB მოწყობილობა, MSC API, USB მოწყობილობა, MSC SCSI API, USB მოწყობილობის მომწოდებლის API

აღწერა
USB მოწყობილობის API, USB მოწყობილობა, ACM API, USB მოწყობილობა, CDC API, USB მოწყობილობის Core API, USB მოწყობილობა, HID API, USB მოწყობილობა, MSC API, USB მოწყობილობა, MSC SCSI API, USB მოწყობილობის მომწოდებლის API

საავტორო უფლება © 2025 Silicon Laboratories. Ყველა უფლება დაცულია.

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 მოწყობილობის მომწოდებლის API

საავტორო უფლება © 2025 Silicon Laboratories. Ყველა უფლება დაცულია.

62/174

USB მოწყობილობის ACM API

USB მოწყობილობის ACM API

USB მოწყობილობის ACM API

USB მოწყობილობის CDC ACM API.
მოდულები
sl_usbd_cdc_ cm_line_coding_t sl_usbd_cdc_acm_callbacks_t
ფუნქციები

sl_status_t sl_status_t
sl_status_t sl_status_t sl_status_t
sl_status_t
sl_status_t
sl_status_t
sl_status_t sl_status_t sl_status_t sl_status_t sl_status_t sl_status_t

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 სერიული ემულაციის ქვეკლასის ახალი ეგზემპლარი.
აააა sl_usbd_cdc_ cm_ dd_to_configur tion(uint8_t subcl ss_nbr, uint8_t config_nbr)
USB მოწყობილობის კონფიგურაციაში დაამატეთ CDC ACM ქვეკლასის კლასის ეგზემპლარი.
ა sl_usbd_cdc_ cm_is_en bled(uint8_t subclass_nbr, bool *p_enabled)
მიიღეთ CDC ACM სერიული ემულაციის ქვეკლასის ჩართვის მდგომარეობა.
ააა 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 სერიული ემულაციის ქვეკლასზე.
აააა sl_usbd_cdc_ cm_re d_ sync(uint8_t subcl ss_nbr, uint8_t *p_buf, uint32_t buf_len, აააა sl_usbd_cdc_ sync_function_t sync_fnct, void *p_ sync_ rg)
CDC ACM სერიული ემულაციის ქვეკლასზე მონაცემების ასინქრონულად მიღება.
ა 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 სერიული ემულაციის ქვეკლასზე.
ააა sl_usbd_cdc_ cm_write_ sync(uint8_t subcl ss_nbr, uint8_t *p_buf, uint32_t buf_len, აააა sl_usbd_cdc_ sync_function_t sync_fnct, void *p_ sync_ rg)
მონაცემების ასინქრონულად გაგზავნა CDC ACM სერიული ემულაციის ქვეკლასზე.
ააა sl_usbd_cdc_ cm_get_line_control_st te(uint8_t subcl ss_nbr, uint8_t *p_line_ctrl)
დააბრუნეთ საკონტროლო ხაზების მდგომარეობა.
ააა sl_usbd_cdc_ cm_get_line_coding(uint8_t subcl ss_nbr, sl_usbd_cdc_ cm_line_coding_t *p_line_coding)
მიიღეთ ხაზის კოდირების მიმდინარე მდგომარეობა.
ააა sl_usbd_cdc_ cm_set_line_coding(uint8_t subcl ss_nbr, sl_usbd_cdc_ cm_line_coding_t *p_line_coding)
დააყენეთ ახალი ხაზის კოდირება.
ააა sl_usbd_cdc_ cm_set_line_st te_event(uint8_t subcl ss_nbr, uint8_t მოვლენები)
ხაზის მდგომარეობის მოვლენის(ების) დაყენება.
აააა sl_usbd_cdc_ cm_cle r_line_st te_event(uint8_t subcl ss_nbr, uint8_t მოვლენები)
ხაზის მდგომარეობის მოვლენის(ების) გასუფთავება.

საავტორო უფლება © 2025 Silicon Laboratories. Ყველა უფლება დაცულია.

63/174

USB მოწყობილობის ACM API
მაკროები
#განსაზღვრეთ SL_USBD_CDC_ACM_NBR_NONE 255u
მოდული.
#განსაზღვრეთ SL_USBD_CDC_ACM_PARITY_NONE 0u
პორტის პარამეტრები განსაზღვრავს.
#განსაზღვრა SL_USBD_CDC_ACM_PARITY_ODD 1u #განსაზღვრა SL_USBD_CDC_ACM_PARITY_EVEN 2u #განსაზღვრა SL_USBD_CDC_ACM_PARITY_MARK 3u #განსაზღვრა SL_USBD_CDC_ACM_PARITY_SPACE 4u #განსაზღვრა SL_USBD_CDC_ACM_STOP_BIT_1 0u #განსაზღვრა SL_USBD_CDC_ACM_STOP_BIT_1_5 1u #განსაზღვრა SL_USBD_CDC_ACM_STOP_BIT_2 2u #განსაზღვრა SL_USBD_CDC_ACM_CTRL_BREAK 0 01u
ხაზის მოვლენების დროშების განსაზღვრა.
#განსაზღვრა SL_USBD_CDC_ACM_CTRL_RTS 0 02u #განსაზღვრა SL_USBD_CDC_ACM_CTRL_DTR 0 04u #განსაზღვრა SL_USBD_CDC_ACM_STATE_DCD 0 01u #განსაზღვრა SL_USBD_CDC_ACM_STATE_DSR 0 02u #განსაზღვრა SL_USBD_CDC_ACM_STATE_BREAK 0 04u #განსაზღვრა SL_USBD_CDC_ACM_STATE_RING 0 08u #განსაზღვრა SL_USBD_CDC_ACM_STATE_FRAMING 0 10u #განსაზღვრა SL_USBD_CDC_ACM_STATE_PARITY 0 20u #განსაზღვრა SL_USBD_CDC_ACM_STATE_OVERUN 0 40u #განსაზღვრა SL_USBD_CDC_ACM_CALL_MGMT_DEV 0 01u
ზარების მართვის შესაძლებლობები.
#განსაზღვრეთ SL_USBD_CDC_ACM_CALL_MGMT_DATA_CCI_DCI 0 02u #განსაზღვრეთ 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

არგუმენტის სახელი

მაკროები, გლობალური კონსტანტები, ფუნქციის პროტოტიპები, CDC, ACM ფუნქციები

CDC ACM სერიული ემულაციის ქვეკლასის ინიციალიზაცია.
ბრუნდება

წარმატების შემთხვევაში აბრუნებს 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 სერიული ემულაციის ქვეკლასის ახალი ეგზემპლარი.
პარამეტრები

ტიპი
uint16_t
uint16_t

მიმართულების არგუმენტის სახელი

აღწერა

N/A

line_state_interval ხაზის მდგომარეობის შეტყობინების ინტერვალი მილიწამებში (მნიშვნელობა უნდა

იყოს 2-ის ხარისხი).

N/A

call_mgmt_capabilities ზარის მართვის შესაძლებლობების ბიტმაპი. OR-ის

შემდეგი დროშები:

SL_USBD_CDC_ACM_CALL_MGMT_DEV მოწყობილობა თავად მართავს ზარების მართვას. SL_USBD_CDC_ACM_CALL_MGMT_DATA_CCI_DCI მოწყობილობას შეუძლია ზარების მართვის ინფორმაციის გაგზავნა/მიღება მონაცემთა კლასის ინტერფეისის საშუალებით.

sl_usbd_cdc_acm_callbacks_t არ არის ხელმისაწვდომი
*

uint8_t *

N/A

p_acm_callbacks p_subclass_nbr

სხვადასხვა მოვლენაზე გამოსაძახებელი უკუკავშირის ფუნქციების არასავალდებულო მაჩვენებლები.
ცვლადის პარამეტრი, რომელიც მიიღებს CDC ACM სერიული ემულაციის ქვეკლასის ეგზემპლარის ნომერს.

ბრუნდება

წარმატების შემთხვევაში დააბრუნეთ SL_STATUS_OK კოდი, ხოლო წარუმატებლობის შემთხვევაში - სხვა SL_STATUS კოდი.

sl_usbd_cdc_acm_add_to_configuration

sl_status_t sl_usbd_cdc_acm_add_to_configuration (uint8_t ქვეკლასის_nbr, uint8_t კონფიგურაციის_nbr)

USB მოწყობილობის კონფიგურაციაში დაამატეთ CDC ACM ქვეკლასის კლასის ეგზემპლარი.
პარამეტრები

ტიპი
uint8_t uint8_t

მიმართულება N/AN/A

არგუმენტის სახელი
ქვეკლასის_nbr კონფიგურაციის_nbr

აღწერა CDC ACM სერიული ემულაციის ქვეკლასის ეგზემპლარის ნომერი. კონფიგურაციის ინდექსი ახალი სატესტო კლასის ინტერფეისის დასამატებლად.

ბრუნდება

საავტორო უფლება © 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 ქვეკლასის_nbr, bool * p_enabled)

მიიღეთ CDC ACM სერიული ემულაციის ქვეკლასის ჩართვის მდგომარეობა.
პარამეტრები

ტიპი

მიმართულება

არგუმენტის სახელი

აღწერა

uint8_t არ არის ხელმისაწვდომი

subclass_nbr CDC ACM სერიული ემულაციის ქვეკლასის ეგზემპლარის ნომერი.

ბული * არ არის ხელმისაწვდომი

p_enabled

ლოგიკური ცვლადი, რომელიც მიიღებს ჩართვის სტატუსს. ცვლადი დაყენებულია true-ზე, CDC ACM სერიული ემულაცია ჩართულია. va

დოკუმენტები / რესურსები

SILICON LABS USB მოწყობილობების დასტა [pdf] ინსტრუქციის სახელმძღვანელო
USB მოწყობილობების დასტა, მოწყობილობების დასტა, დასტა

ცნობები

დატოვე კომენტარი

თქვენი ელფოსტის მისამართი არ გამოქვეყნდება. მონიშნულია აუცილებელი ველები *