SILICON LABS USB Device Stack
Spesifikasiyalar
- USB versiyası: 1.5.1
- Buraxılış tarixi: 21 iyul 2025-cu il
- Simplicity SDK Versiyası: 2025.6.1
Məhsul Bitdiview
Silicon Labs tərəfindən hazırlanmış USB cihaz yığını IoT layihələri üçün çox yönlü və istifadəsi asan USB bağlantısı təmin edərək, şəbəkə birgə prosessorları və hostlar arasında əlaqəni asanlaşdırır.
Xüsusiyyətlər
- Effektiv USB cihaz yığını
- IoT layihələri üçün idealdır
- Şəbəkə koprosessorları və hostlar arasında əlaqə üçün dəstək
USB Cihaz Konfiqurasiyası
Sənədlərdəki USB Cihazının Konfiqurasiyası bölməsinə istinad edərək, layihə tələblərinizə uyğun olaraq USB cihaz parametrlərini konfiqurasiya edin.
USB Cihazı Proqramlaşdırma Təlimatı
Müxtəlif proqramlar üçün USB cihazını necə proqramlaşdırmağı və onunla qarşılıqlı əlaqə qurmağı anlamaq üçün USB Cihazının Proqramlaşdırma Təlimatına əməl edin.
USB cihaz sinifləri
USB Cihaz Sinifləri bölməsi artıq təmin edirview CDC ACM, HID, MSC SCSI və Vendor Class kimi müxtəlif siniflər. Cihazınızın funksionallığına əsasən uyğun sinfi seçin.
USB Qurğu Problemlərinin Təmiri
Əgər USB cihazı ilə bağlı hər hansı problemlə qarşılaşsanız, həll yolları və sazlama məsləhətləri üçün USB Cihazında Problemlərin aradan qaldırılması bölməsinə baxın.
Spesifikasiyalar və Xüsusiyyətlər Bitdiview
USB Cihaz Konfiqurasiyası Bitdiview
USB Cihazının Proqramlaşdırma Bələdçisi Bitdiview
USB Cihaz Dərsləri Bitdiview CDC ACM sinfi bitdiview HID sinfi bitdiview MSC SCSI sinfi bitdiview Satıcı sinfi bitdiview
USB API API Sənədi USB Cihazı API USB Cihazı ACM API və sl_usbd_cdc_ cm_line_coding_t sl_usbd_cdc_acm_callbacks_t USB Cihazı CDC API və sl_usbd_cdc_subcl ss_driver_t USB Cihazı Əsas API
sl_usbd_device_config_t sl_usbd_setup_req_t
sl_usbd_cl ss_driver_t USB Cihaz HID API
sl_usbd_hid_callbacks_t USB Cihazı MSC API
sl_usbd_msc_subcl ss_driver_t USB Cihazı MSC SCSI API
sl_usbd_msc_scsi_callbacks_t
Copyright © 2025 Silicon Laboratories. Bütün hüquqlar qorunur.
1/174
Universal Serial Avtobus USB
sl_usbd_msc_scsi_lun_ pi
sl_usbd_msc_scsi_lun_info sl_usbd_msc_scsi_lun
USB Cihaz Satıcı API sl_usbd_vendor_callbacks_t
API Sənədləri USB Cihazında Problemlərin Təmiri
Bitdiview Microsoft Windows OS USB Host
Bitdiview
Copyright © 2025 Silicon Laboratories. Bütün hüquqlar qorunur.
2/174
Bitdiview
Bitdiview
USB Cihazı
USB kompüter sistemləri tarixində ən uğurlu rabitə interfeyslərindən biridir və kompüterin periferik hissələrini birləşdirmək üçün faktiki standartdır. Silicon Labs USB Device yığını xüsusi olaraq quraşdırılmış sistemlər üçün nəzərdə tutulmuş USB cihaz moduludur. Silicon Labs-in keyfiyyəti, miqyası və etibarlılığı ilə sıfırdan qurulmuş, USB 2.0 spesifikasiyasına uyğun olmaq üçün ciddi yoxlama prosesindən keçmişdir. Bu sənəd Silicon Labs USB Device yığınının işə salınmasını, işə salınmasını və istifadəsini təsvir edir. Bu, müxtəlif konfiqurasiya dəyərlərini və onların istifadəsini izah edir. O, həmçinin bir over daxildirview texnologiya, konfiqurasiya imkanlarının növləri, həyata keçirmə prosedurları və samphər bir mövcud sinif üçün tipik istifadə.
USB anlayışlarını tez başa düşməyinizə kömək etmək üçün sənədlərdə bir çox eksklüziv xüsusiyyət varampəsas funksiyaları olan USB. Bunlar keçmişamples sizə cihazları tez qurmağa imkan verən çərçivə ilə təmin edəcək. Bunlar keçmişamples daxildir:
USB-seriya adapter (Rabitə Cihazı Sinfi) Siçan və ya klaviatura (İnsan İnterfeysi Qurğu Sinfi) Çıxarılan yaddaş cihazı (Kütləvi Yaddaş Sinfi) Fərdi cihaz (Vendor Sinfi)
Aşağıdakılar bitdiview sənədləşdirmə bölmələri:
Spesifikasiyalar və Xüsusiyyətlər USB Cihazının Konfiqurasiyası USB Cihazının Proqramlaşdırma Bələdçisi USB Cihazı Sinifləri
CDC ACM Sinfi HID Sinfi MSC SCSI Sinfi Satıcı Sinfi USB Cihazı Problemlərin aradan qaldırılması Microsoft Windows OS USB Host
Copyright © 2025 Silicon Laboratories. Bütün hüquqlar qorunur.
3/174
USB
USB
USB Versiya 1.5.1 21 iyul 2025-ci il – Buraxılış qeydləri
Simplicity SDK Version 2025.6.1
Silicon Labs-in səmərəli USB cihaz yığını şəbəkə prosessorları və hostlar arasında rabitə də daxil olmaqla, IoT layihələri üçün ideal olan çox yönlü, istifadəsi asan USB bağlantısı təklif edir. Əvvəlki buraxılışlar üçün bura klikləyin.
Xülasəni buraxın
Əsas Xüsusiyyətlər | API Dəyişiklikləri | Baq Düzəlişləri | Çip Aktivləşdirilməsi
Əsas Xüsusiyyətlər
Yalnız əsas platforma dəyişir.
API Dəyişiklikləri
Heç biri.
Baq Düzəltmələri
Heç biri.
Çip Aktivləşdirilməsi
Heç biri.
Əsas Xüsusiyyətlər
Yeni Xüsusiyyətlər | Təkmilləşdirmələr | Silinmiş Xüsusiyyətlər | Köhnəlmiş Xüsusiyyətlər
Yeni Xüsusiyyətlər
Heç biri.
Təkmilləşdirmələr
Yalnız əsas platforma dəyişir.
Silinmiş Xüsusiyyətlər
Heç biri.
Köhnəlmiş xüsusiyyətlər
Heç biri.
API Dəyişiklikləri
Yeni API-lər | Dəyişdirilmiş API-lər | Silinmiş API-lər | Köhnəlmiş API-lər
Yeni API-lər
Copyright © 2025 Silicon Laboratories. Bütün hüquqlar qorunur.
4/174
USB
Heç biri.
Dəyişdirilmiş API-lər
Heç biri.
Silinmiş API
Heç biri.
Köhnəlmiş API-lər
Heç biri.
Baq Düzəltmələri
Heç biri.
Çip Aktivləşdirilməsi
Heç biri.
Tətbiq Example Dəyişikliklər
Yeni Examples | Dəyişdirilmiş Examples | Silinmiş Examples | Köhnəlmiş Examples
Yeni Examples
Heç biri.
Dəyişdirilmiş Examples
Heç biri.
Silinmiş Examples
Heç biri.
Köhnəlmiş Examples
Heç biri.
Buraxılış Dəyişikliklərinin Təsiri
Təsir Hesabatları | Miqrasiya Bələdçisi
Təsir bəyanatları
Heç biri.
Miqrasiya Bələdçisi
Heç biri.
Məlum Problemlər və Məhdudiyyətlər
Heç biri.
Bu Buraxılışdan İstifadə
Copyright © 2025 Silicon Laboratories. Bütün hüquqlar qorunur.
5/174
USB
Buraxılışda nə var? | Uyğun proqram təminatı | Quraşdırma və İstifadə | Yardım və Əlaqə
Buraxılışda nə var?
USB Device Stack Tətbiqi Məsamples
Uyğun proqram təminatı
Proqram təminatı
Simplicity SDK Simplicity Studio Simplicity Commander GCC The GNU Compiler Collection) ARM IAR EWARM üçün IAR Embedded Workbench
Uyğun Versiya və ya Variant
2025.6.0 5.11.0 1.18.2 (Simplicity Studio ilə təmin olunub) 12.2.1 (Simplicity Studio ilə təmin olunub) 9.40.1 (Simplicity Studio ilə təmin olunub)
Quraşdırma və İstifadə
İnkişafınıza başlamaq üçün bizimlə tanış olun:
USB Cihazı Proqramlaşdırma Təlimatı. API Sənədləri.
Secure Vault İnteqrasiyası haqqında məlumat üçün Secure Vault-a baxın.
Parçaladıview Təhlükəsizlik və Proqram Məsləhətçiliyi bildirişləri və bildiriş seçimlərinizi idarə edin:
ò https://community.silabs.com/ saytına daxil olun. ó Hesab etimadnamənizlə daxil olun. ô Proya klikləyinfile səhifənin yuxarı sağ küncündə simvol.
õ Açılan menyudan Bildirişlər seçin. ö Bildirişlər bölməsində, təkrar etmək üçün Məhsul Bildirişlərim sekmesine keçinview tarixi Təhlükəsizlik və Proqram Təminatı Məsləhəti
bildirişlər
÷ Tercihlərinizi idarə etmək üçün, hansı məhsul yeniləmələrini və tövsiyələrini fərdiləşdirmək üçün Bildirişləri İdarə et tabından istifadə edin
almaq.
Tövsiyə olunan konfiqurasiya parametrləri üçün buraya baxın.
Bu buraxılışda proqram təminatı haqqında daha çox öyrənmək üçün onlayn sənədlərimizə daxil olun.
Yardım və Əlaqə
Silicon Labs Dəstəyi ilə əlaqə saxlayın. Cavab almaq üçün AI-dan soruş alətimizdən istifadə etmək üçün bu səhifənin yuxarısındakı axtarış sahəsinə baxın.
Qeyd: Sorğu AI eksperimentaldır.
Tərtibatçı icmamızdan kömək alın.
SDK Buraxılış və Baxım Siyasəti
SDK Buraxılış və Baxım Siyasətimizə baxın.
Copyright © 2025 Silicon Laboratories. Bütün hüquqlar qorunur.
6/174
Bitdiview
Bitdiview
Spesifikasiyalar
“Universal Serial Bus spesifikasiyası revision 2.0” ilə uyğun gəlir “İnterfeys Assosiasiyasının Deskriptor Mühəndisliyi Dəyişikliyi Bildirişi (ECN)” Transfer növlərini həyata keçirir
Nəzarət Toplu Kesinti USB sinifləri Rabitə Cihazı Sinfi (CDC) Mücərrəd Nəzarət Modeli (ACM) İnsan İnterfeysi Cihazı (HID) Kütləvi Saxlama Sinfi (MSC) Satıcıya məxsus sinif çərçivəsi
Xüsusiyyətlər
Yaddaş izini minimuma endirmək üçün yalnız tələb olunan xüsusiyyətləri daxil etmək üçün miqyaslana bilər Tam sürətli (12 Mbit/s) dəstəkləyir Kompozit (çox funksiyalı) cihazları dəstəkləyir Çox konfiqurasiyalı cihazları dəstəkləyir USB enerjiyə qənaət edən funksiyaları dəstəkləyir (cihazın dayandırılması və davam etdirilməsi) Kütləvi Yaddaş Sinifinin Micrium ƏS-ə tam inteqrasiyası File Sistem modulu CMSIS-RTOS2 abstraksiya təbəqəsi ilə işlənib hazırlanıb ki, müxtəlif əməliyyat sistemləri ilə işləyə bilsin. Silicon Labs GSDK FreeRTOS və Micrium OS portları ilə gəlir.
Copyright © 2025 Silicon Laboratories. Bütün hüquqlar qorunur.
7/174
Bitdiview
Bitdiview
USB Cihaz Konfiqurasiyası
Bu bölmə Silicon Labs USB Cihazının konfiqurasiyasını müzakirə edir. Aşağıdakı kimi üç qrup konfiqurasiya parametrləri var:
USB Cihazının Əsas Konfiqurasiyası USB Cihazı Məlumatı Konfiqurasiyası USB Cihazının Hardware Konfiqurasiyası
USB Cihazının Əsas Konfiqurasiyası
Silicon Labs USB Cihazı tərtib zamanı sl_usbd_core_config.h-də yerləşən #defines dəsti vasitəsilə konfiqurasiya edilə bilər. file. USB Cihazı mümkün olduqda #defines istifadə edir, çünki onlar kod və məlumat ölçülərini hansı funksiyaların aktiv edildiyinə əsasən tərtib zamanı miqyaslandırmağa imkan verir. Bu, Silicon Labs USB Cihazının yalnız oxunan yaddaş (ROM) və təsadüfi giriş yaddaşı (RAM) izlərini tətbiqinizin tələblərinə əsasən tənzimləməyə imkan verir.
Tövsiyə olunur: Konfiqurasiya prosesini standart dəyərlərlə başlayın (qalın hərflərlə vurğulanır).
Aşağıdakı bölmələr şablon konfiqurasiyasındakı sıraya əsasən təşkil edilmişdir file, sl_usbd_core_config.h.
Əsas Konfiqurasiya Siniflərinin Konfiqurasiyası
Əsas Konfiqurasiya
Cədvəl – USB Cihaz Əsas Konfiqurasiya Sabitləri
Daimi təsvir
Defolt Dəyər
SL_USBD_TA SK_STACK_ ÖLÇÜSÜ
USBD əsas vəzifəsinin baytlarında yığın ölçüsünü konfiqurasiya edir
4096
SL_USBD_TA SK_PRIORIT Y
USBD əsas vəzifəsinin prioritetini konfiqurasiya edir. Bu, CMSIS-RTOS2 prioritetidir.
osPriorityHigh
SL_USBD_A UTO_START _USB_DEVIC E
Aktiv edilərsə, kernel işə salındıqdan və 1 USBD əsas tapşırığı ilk dəfə planlaşdırıldıqdan sonra USB cihazı avtomatik olaraq işə salınacaq. Əgər deaktiv edilibsə, tətbiqiniz USB host tərəfindən aşkarlanmağa hazır olduqda sl_usbd_core_start_device() funksiyasına zəng etməli olacaq.
SL_USBD_C sl_usbd_add_configuration() vasitəsilə əlavə olunacaq konfiqurasiyaların ümumi sayı
1
ONFIGURATI funksiyası.
ON_QUANTI
TY
Copyright © 2025 Silicon Laboratories. Bütün hüquqlar qorunur.
8/174
Bitdiview
Daimi
SL_USBD _INTERF ACE_QU ANTITY
SL_USBD _ALT_INT ERFACE_ QUANTI
TY
SL_USBD _INTERF ACE_GR
OUP_QU
ANTITY
SL_USBD _DESCRI
PTOR_Q
Faydalılıq
SL_USBD _STRING _QUANTI
TY
SL_USBD _OPEN_E NDPOIN TS_QUA NTITY
Təsvir Bütün konfiqurasiyalarınız üçün əlavə ediləcək USB interfeyslərinin ümumi sayı. Bu, istifadə olunan sinif(lər)dən çox asılıdır. Sinif nümunəsinin neçə interfeys tələb etdiyi barədə ətraflı məlumat üçün sinif(lər)inizin “Əsasdan resurs ehtiyacları” bölməsinə baxın.
Bütün konfiqurasiyalarınız üçün əlavə ediləcək USB alternativ interfeyslərinin ümumi sayı. Bu, istifadə olunan sinif(lər)dən çox asılıdır. Bu dəyər həmişə SL_USBD_INTERFACE_QUANTITY -ə bərabər və ya daha çox olmalıdır. Sinif nümunəsinin neçə alternativ interfeys tələb etdiyi barədə ətraflı məlumat üçün sinif(lər)inizin “Əsasdan Resurs Ehtiyacları” bölməsinə baxın.
Bütün konfiqurasiyalarınız üçün əlavə olunacaq USB interfeys qruplarının ümumi sayı. Bu, istifadə olunan sinif(lər)dən çox asılıdır. Neçə interfeys qrupunun bir sinif nümunəsi tələb etdiyi barədə ətraflı məlumat üçün sinif(lər)inizin “Əsasdan Resurs Ehtiyacları” bölməsinə baxın.
Bütün konfiqurasiyalarınız üçün əlavə olunacaq Son nöqtə deskriptorlarının ümumi sayı. Bu, istifadə olunan sinif(lər)dən çox asılıdır. Sinif nümunəsinin neçə son nöqtə deskriptoru tələb etdiyi barədə ətraflı məlumat üçün sinif(lər)inizin “Əsasdan Resurs Ehtiyacları” bölməsindəki “Son nöqtələrin sayı”na baxın. Nəzərə alın ki, burada nəzarət son nöqtələrini nəzərə almaq lazım deyil. USB sətirlərinin ümumi sayı. Kəmiyyətin sıfıra təyin edilməsi funksiyanı söndürəcək. Bunun söndürülməsi cihazın tətbiqdən ötürülən heç bir USB təsvir sətirini saxlamamasına səbəb olacaq. Bu o deməkdir ki, host təsvir sətirlərini (istehsalçı və məhsul adı kimi) əldə edə bilməyəcək. Hər konfiqurasiya üçün açılmış son nöqtələrin ümumi sayı. Cihaz nəzarət köçürmələri üçün ən azı iki açıq son nöqtə tələb edir, lakin siz həmçinin istifadə olunan sinif(lər)in son nöqtələrini əlavə etməlisiniz. Sinif nümunəsinin neçə açılmış son nöqtəni tələb etdiyi barədə ətraflı məlumat üçün sinif(lər)inizin “Əsasdan Resurs Ehtiyacları” bölməsindəki “Son nöqtələrin sayı”na baxın.
Defolt Dəyər
10 10
2
20 30 20
Siniflərin konfiqurasiyası
Siniflərin xüsusi kompilyasiya vaxtı konfiqurasiyaları var. Əlavə məlumat üçün USB Cihaz Siniflərinə baxın.
USB Cihazı Məlumat Konfiqurasiyası
sl_usbd_device_config.h konfiqurasiyası file Satıcı/Məhsul ID-si, cihaz sətirləri və s. kimi cihazınızla bağlı əsas məlumatları təyin etmək üçün kompile-time #define-s-ni yenidən qruplaşdırır. Aşağıdakı cədvəl bu konfiqurasiyada mövcud olan hər bir məlumat konfiqurasiyasını təsvir edir. file.
Cədvəl – USB Cihaz Məlumatı Konfiqurasiyası Müəyyən edir
Daimi
SL_USBD_DEVIC E_VENDOR_ID
SL_USBD_DEVIC E_PRODUCT_ID
Təsvir USB Tətbiqçilər Forumu tərəfindən çatdırılan satıcı identifikasiya nömrəniz. Satıcı ID-sini necə əldə edə biləcəyiniz haqqında ətraflı məlumat üçün http://www.usb.org/developers/vendor/ ünvanına baxın. Məhsulunuzun identifikasiya nömrəniz.
Copyright © 2025 Silicon Laboratories. Bütün hüquqlar qorunur.
9/174
Bitdiview
Daimi
Təsvir
SL_USBD_DEVICE_RELEASE Cihazınızın buraxılış nömrəsi. _NUMBER
SL_USBD_DEVICE_MANUFA Cihazınızın istehsalçısını təsvir edən sətir. Bu konfiqurasiya nəzərə alınmır
CTURER_STRING
SL_USBD_STRING_QUANTITY konfiqurasiyası 0-a təyin edilib.
SL_USBD_DEVICE_PRODUC Məhsulunuzu təsvir edən sətir. Konfiqurasiya zamanı bu konfiqurasiya nəzərə alınmır
T_STRING
SL_USBD_STRING_QUANTITY 0-a təyin edilib.
SL_USBD_DEVICE_SERIAL_N Cihazınızın seriya nömrəsini ehtiva edən sətir. Bu konfiqurasiya nəzərə alınmır
UMBER_STRING
SL_USBD_STRING_QUANTITY konfiqurasiyası 0-a təyin edilib.
SL_USBD_DEVICE_LANGUA Cihazınızın sətirlərinin dilinin identifikasiya nömrəsi. Mümkün dəyərlər bunlardır:
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_ALMAN
– SL_USBD_LANG_ID_GREEK
– SL_USBD_LANG_ID_ITALIAN
– SL_USBD_LANG_ID_PORTUGUESSE
– SL_USBD_LANG_ID_SANSKRIT
SL_USBD_STRING_QUANTITY konfiqurasiyası 0-a təyin edildikdə bu konfiqurasiya nəzərə alınmır.
USB Cihaz Hardware Konfiqurasiyası
İstifadə etdiyiniz Silicon Labs cihazından asılı olaraq, USB VBUS Sense siqnalı üçün konfiqurasiya etmək üçün GPIO pin və portunuz ola bilər. Konfiqurasiya sl_usbd_hardware_config.h başlığındadır file.
Daimi
SL_USBD_DRIVER_VBUS_SENSE_PORT SL_USBD_DRIVER_VBUS_SENSE_PIN
Təsvir
Lövhənizdə USB VBUS Sense siqnalı üçün GPIO Portu. Lövhənizdə USB VBUS Sense siqnalı üçün GPIO Pin.
Copyright © 2025 Silicon Laboratories. Bütün hüquqlar qorunur.
10/174
Bitdiview
Bitdiview
USB Cihazı Proqramlaşdırma Təlimatı
Bu bölmə USB Qurğu modulundan necə istifadə olunacağını izah edir.
USB Cihaz Modulunun İlkin Quraşdırılması
Bu bölmə USB Qurğu modulunu işə salmaq və cihazı əlavə etmək, hazırlamaq və işə salmaq üçün tələb olunan əsas addımları təsvir edir. USB Cihaz Modulunun işə salınması USB Qurğunun Əsasının işə salınması aCl ss(lər)inin işə salınması USB Cihazınızın əlavə edilməsi USB Cihazınızın qurulması Konfiqurasiyanın(lar)ın əlavə edilməsi USB funksiyasının(lar)ının əlavə edilməsi USB Cihazınızın işə salınması
Hadisə Hook funksiyaları
USB Cihaz Modulunun işə salınması
USB Device Core işə salınır
a ABŞ a sl_usbd_core_init() funksiyasını işə salmaqla B cihaz modulunun nüvəsini işə salmaqla başlayın. Aşağıda c lling sl_usbd_core_init() göstərilir.
Example – sl_usbd_core_init() çağırır
sl_status_t statusu; status = sl_usbd_core_init(); əgər (status ! SL_STATUS_OK) { /* Xəta baş verdi. Səhvlərin idarə edilməsi buraya əlavə edilməlidir. */
}
Sinif(lər)in işə salınması
USB cihaz modulunun nüvəsi işə salındıqdan sonra istifadə etmək istədiyiniz hər bir sinfi işə salmalısınız. Əlavə məlumat üçün acl ss(lər)inizin “Proqramlaşdırma Bələdçisi” bölməsinə baxın.
USB Cihazınızın qurulması
Konfiqurasiya(lar)ın əlavə edilməsi
Cihazınızı uğurla işə saldıqdan sonra yeni konfiqurasiyadan başlayaraq ona USB funksiyalarını əlavə etməyə başlaya bilərsiniz. Cihazın ən azı bir konfiqurasiyası olmalıdır. Konfiqurasiya(lar)ı əlavə etmək üçün aa sl_usbd_core_ dd_configuration() funksiyasına zəng edin. Bu funksiya əlavə etmək istədiyiniz hər bir konfiqurasiya üçün çağırılmalıdır. keçmişampAşağıdakı le Tam sürətin necə əlavə olunacağını göstərir.
Example – Cihazınıza Konfiqurasiya(lar)ın əlavə edilməsi
Copyright © 2025 Silicon Laboratories. Bütün hüquqlar qorunur.
11/174
Bitdiview
sl_status_t statusu; uint8_t config_nbr_fs;
/* Cihaza tam sürətli konfiqurasiyanın əlavə edilməsi. */
status = sl_usbd_core_add_configuration(0,
/* Konfiqurasiya üçün heç bir xüsusi atribut yoxdur. */
100u,
/* Maksimum enerji istehlakı: 100mA.
*/
SL_USBD_DEVICE_SPEED_FULL,
/* Tam Sürətli konfiqurasiya.
*/
“Config Add ExampTam Sürətli konfiqurasiya”,
&config_nbr_fs);
əgər (status ! SL_STATUS_OK) {
/* Xəta baş verdi. Səhvlərin idarə edilməsi buraya əlavə edilməlidir. */
}
USB Funksiya(lar)ın əlavə edilməsi
Cihazınıza ən azı bir konfiqurasiyanı uğurla əlavə etdikdən sonra siz cihazınıza interfeyslər və son nöqtələr əlavə edə bilərsiniz. Hər bir USB sinifinin interfeys və son nöqtələrin növü, miqdarı və digər parametrləri baxımından öz ehtiyacları var. Silicon Labs USB Cihazı təklif etdiyi siniflərdə interfeyslər və son nöqtələr əlavə edir.
Tətbiqinizdən USB sinifini yarada və onu konfiqurasiyaya əlavə edə bilərsiniz. USB cihaz sinif nümunələri konsepsiyası haqqında daha çox məlumat üçün USB Cihaz Siniflərinə baxın. Nəzərə alın ki, siz çoxfunksiyalı (kompozit) cihaz yaratmaq üçün konfiqurasiyaya çoxlu müxtəlif sinif nümunələrini yarada və əlavə edə bilərsiniz.
keçmişample aşağıda bir sinif nümunəsi yaratmaq və onu konfiqurasiyaya əlavə etmək yolları göstərilir.
Example – Cihazınıza Sinif Nümunəsinin əlavə edilməsi
sl_status_t statusu; uint8_t class_nbr;
/* İstifadə etmək istədiyiniz sinfin nümunəsini yaradın.*/ /* Qeyd edək ki, sinifdən asılı olaraq bu funksiya daha çox arqumentə malik ola bilər. */ status = sl_usbd_ _instance_create(&class_nbr); əgər (status ! SL_STATUS_OK) { /* Xəta baş verdi. Səhvlərin idarə edilməsi buraya əlavə edilməlidir. */ }
/* Tam Sürətli konfiqurasiyaya sinif nümunəsini əlavə edin. */ status = sl_usbd_ _add_to_configuration(class_nbr, /* Sinif nömrəsi sl_usbd_ tərəfindən qaytarıldı _nümunə_yaradın. */
config_nbr_fs); /* sl_usbd_core_add_configuration() tərəfindən qaytarılan konfiqurasiya nömrəsi. */ əgər (status ! SL_STATUS_OK) { /* Xəta baş verdi. Səhvlərin idarə edilməsi buraya əlavə edilməlidir. */ }
USB Cihazınızın Başlanması
Varsayılan olaraq, cihazın işə salınması tamamlandıqdan və nüvə işə salındıqdan sonra cihaz USB cihazının əsas vəzifəsi tərəfindən avtomatik olaraq işə salınacaq. Cihazın nə vaxt işə salındığını və USB host tərəfindən görünməsinə nəzarət etmək üçün avtomatik işə salma funksiyasını söndürmək üçün SL_USBD_AUTO_START_USB_DEVICE konfiqurasiyasını təyin edin. Deaktiv olduqda, cihazınızı qurduqdan/hazırladıqdan sonra sl_usbd_core_start_device() funksiyasına zəng edərək onu işə sala və USB hosta görünə bilərsiniz.
keçmişampAşağıda sl_usbd_core_start_device() funksiyasından istifadə edərək cihazınızı necə işə salacağınız göstərilir.
Example – Cihazınızın işə salınması
Copyright © 2025 Silicon Laboratories. Bütün hüquqlar qorunur.
12/174
Bitdiview
sl_status_t statusu;
status = sl_usbd_core_start_device(); əgər (status ! SL_STATUS_OK) { /* Xəta baş verdi. Səhvlərin idarə edilməsi buraya əlavə edilməlidir. */ }
Hadisə Hook funksiyaları
USB Cihazının əsas modulu tətbiqinizdə yenidən təyin edə biləcəyiniz iki zəif qarmaq funksiyası təklif edir. Onların məqsədi avtobus və konfiqurasiya hadisələri baş verdikdə xəbərdar etməkdir.
Cədvəl – USB Hadisə Hook Funksiyaları
Hadisə
Təsvir
avtobus
USB Bus hadisəsi baş verdikdə çağırılır
Konfiqurasiya USB Konfiqurasiya hadisəsi baş verdikdə çağırılır
Funksiya İmzası
void sl_usbd_on_bus_event(sl_usbd_bus_event_t hadisəsi); void sl_usbd_on_config_event(sl_usbd_config_event_t hadisəsi, uint8_t config_nbr);
Example – Hadisə Hook Funksiyaları
void sl_usbd_on_bus_event(sl_usbd_bus_event_t hadisə) { keçid (hadisə) { hal SL_USBD_EVENT_BUS_CONNECT:
// USB kabel host kontroller fasiləsinə daxil edildikdə çağırılır;
case SL_USBD_EVENT_BUS_DISCONNECT: // USB kabel host nəzarətçisinin fasiləsindən çıxarıldıqda çağırılır;
case SL_USBD_EVENT_BUS_RESET: // host sıfırlama əmrinin fasiləsini göndərdikdə çağırılır;
case SL_USBD_EVENT_BUS_SUSPEND: // host dayandırma əmrinin fasiləsini göndərdikdə çağırılır;
case SL_USBD_EVENT_BUS_RESUME: // host oyandırma əmri fasiləsi göndərdikdə çağırılır;
default: fasilə; } }
etibarsız sl_usbd_on_config_event(sl_usbd_config_event_t hadisə, uint8_t config_nbr) { keçid (hadisə) { hal SL_USBD_EVENT_CONFIG_SET:
// host konfiqurasiya fasiləsi təyin etdikdə çağırılır;
case SL_USBD_EVENT_CONFIG_UNSET: // konfiqurasiya təyin olunmayan fasilə olduqda çağırılır;
default: fasilə; } }
Copyright © 2025 Silicon Laboratories. Bütün hüquqlar qorunur.
13/174
Bitdiview
Copyright © 2025 Silicon Laboratories. Bütün hüquqlar qorunur.
14/174
Bitdiview
Bitdiview
USB cihaz sinifləri
Silicon Labs USB Cihazında mövcud olan USB sinifləri bəzi ümumi xüsusiyyətləri bölüşür. Bu bölmə bu xüsusiyyətləri və onların əsas təbəqə ilə qarşılıqlı əlaqəsini izah edir.
Müəyyən bir sinif haqqında daha çox məlumat üçün aşağıdakılara baxın:
CDC ACM Sinfi HID Sinfi MSC SCSI Sinfi Satıcı Sinfi
Sinif Nümunələri Haqqında
USB Cihazında mövcud olan USB sinifləri sinif nümunələri konsepsiyasını həyata keçirir. Sinif nümunəsi cihaz daxilində bir funksiyanı təmsil edir. Funksiya bir interfeys və ya bir qrup interfeys tərəfindən təsvir edilə bilər və müəyyən bir sinfə aiddir.
Hər bir USB sinif tətbiqi sinif nümunəsi konsepsiyasına əsaslanaraq, bəzi ümumi konfiqurasiyalara və funksiyalara malikdir. Ümumi konfiqurasiyalar və funksiyalar aşağıdakı cədvəldə təqdim olunur. 'Sabitlər və ya Funksiya' sütun başlığında XXXX yertutanı sinfin adı ilə əvəz edilə bilər: CDC, HID, MSC, CDC_ACM və ya VENDOR (funksiya adları üçün satıcı).
Cədvəl – Çox Sinif Nümunələri Anlayışı ilə Bağlı Sabitlər və Funksiyalar
Sabit və ya Funksiya
SL_USBD_XXXX_CL ASS_INS TANCE_QUANTITY
SL_USBD_XXXX_CONFIGUR ATION_QUANTITY
sl_usb d _XXXX_cre _insta nce yedi ()
sl_usbd_XXXX_add_to_conf iqurasiyası()
Təsvir
Sinif nümunələrinin maksimum sayını konfiqurasiya edir.
Maksimum konfiqurasiya sayını konfiqurasiya edir. Sinif inisializasiyası zamanı yaradılmış sinif nümunəsi bir və ya bir neçə konfiqurasiyaya əlavə olunacaq. Yeni sinif nümunəsi yaradır.
Müəyyən edilmiş cihaz konfiqurasiyasına mövcud sinif nümunəsini əlavə edir.
Kodun tətbiqi baxımından, sinif sinif idarəetmə strukturunu ehtiva edən yerli qlobal dəyişən elan edəcək. Bu sinif nəzarət strukturu bir sinif nümunəsi ilə əlaqələndirilir və sinif nümunəsini idarə etmək üçün xüsusi məlumatları ehtiva edir.
Aşağıdakı rəqəmlər bir neçə hadisə ssenarisini göstərir. Hər bir rəqəmə bir kod daxildirample ki, vəziyyət ssenarisinə uyğundur.
Şəkil – Çox Sinif Nümunələri – FS Cihazı (1 İnterfeysli 1 Konfiqurasiya) tipik USB cihazını təmsil edir. Cihaz Tam Sürətlidir (FS) və tək konfiqurasiyadan ibarətdir. Cihazın funksiyası məlumat mübadiləsi üçün bir cüt son nöqtədən ibarət bir interfeys ilə təsvir olunur. Bir sinif nümunəsi yaradılır və bütün interfeysi əlaqəli son nöqtə ilə idarə etməyə imkan verəcəkdir.
Şəkil – Çox Sinif Nümunələri – 1 İnterfeysli FS Cihazı 1 Konfiqurasiyası)
Copyright © 2025 Silicon Laboratories. Bütün hüquqlar qorunur.
15/174
Bitdiview
Şəkil – Çox Sinif Nümunələri – FS Cihazına (1 İnterfeysli 1 Konfiqurasiya) uyğun kod keçmişdə göstərilmişdir.ampaşağıda.
Example – Çox Sinif Nümunələri – 1 İnterfeys ilə FS Cihazı 1 Konfiqurasiyası)
sl_status_t statusu; uint8_t class_0;
void app_usbd_XXXX_enable(uint8_t class_nbr) { /* Sinfi aktivləşdirmə hadisəsini idarə edin. */ }
void app_usbd_XXXX_disable(uint8_t class_nbr) { /* Handle Class disable hadisəsi. */ }
sl_usbd_XXXX_callbacks_t class_callbacks = {
(1)
.enable = app_usbd_XXXXXX_enable,
.disable = app_usbd_XXXX_disable
};
status = sl_usbd_XXXX_init();
(2)
əgər (status ! SL_STATUS_OK) {
/* $$$$ Xətanı idarə edin. */
}
status = sl_usbd_XXXX_create_instance(&class_callbacks,
(3)
&sinif_0);
əgər (status ! SL_STATUS_OK) {
/* $$$$ Xətanı idarə edin. */
}
status = sl_usbd_XXXX_add_to_configuration(sinif_0, konfiqurasiya_0);
(4)
əgər (status ! SL_STATUS_OK) {
/* $$$$ Xətanı idarə edin. */
}
(1) Hər bir sinif cihazın qoşulması/bağlantısının kəsilməsi hadisələri və sinfə aid hadisələr üçün bir sıra geri çağırış funksiyaları təklif edir. Geri çağırış strukturu obyekti sl_usbd_XXXX_create_instance() ilə sinif nümunəsi yaratarkən arqument kimi ötürülür.
funksiyası.
(1) Sinfi işə salın. Bütün daxili dəyişənlər, strukturlar və sinif portları işə salınacaq. Qeyd edək ki, bəzi siniflərdə Init() funksiyası başqa arqumentlər qəbul edə bilər.
Copyright © 2025 Silicon Laboratories. Bütün hüquqlar qorunur.
16/174
Bitdiview
(2) class_0 olan sinif nümunəsini yaradın. sl_usbd_XXXX_create_instance() funksiyası class_0 ilə əlaqəli sinif idarəetmə strukturunu ayırır. Sinifdən asılı olaraq, sl_usbd_XXXX_create_instance() sinfi idarə strukturunda saxlanılan sinfə aid məlumatı təmsil edən sinif nömrəsindən başqa əlavə parametrlərə malik ola bilər. aaa (3) cl ss instansiyasını, class_0 , göstərilən konfiqurasiya nömrəsinə, config_0 əlavə edin. sl_usbd_XXXX_add_to_configuration() interfeysi 0 və onunla əlaqəli IN və OUT son nöqtələrini yaradacaq. Nəticədə, sinif nümunəsi 0 interfeysini və onun son nöqtələrini əhatə edir. 0 interfeysində edilən hər hansı əlaqə sinif nümunəsi nömrəsindən istifadə edəcək, class_0 . Şəkil – Çox Sinif Nümunələri – FS Cihazı (2 Konfiqurasiya və Çoxsaylı İnterfeys) daha mürəkkəb bir nümunəni təmsil edir.ample. Tam sürətli cihaz iki konfiqurasiyadan ibarətdir. Cihazın eyni sinfə aid iki funksiyası var, lakin hər bir funksiya iki interfeys ilə təsvir olunur və bir cüt iki istiqamətli son nöqtəyə malikdir. Bu keçmişdəample, iki sinif nümunəsi yaradılır. Hər bir sinif nümunəsi Şəkil – Çox Sinif Nümunələri – FS Cihazı (1 İnterfeys ilə 1 Konfiqurasiya) və Şəkil – Çox Sinif Nümunələri – FS Cihazı (2 Konfiqurasiya və Çoxsaylı İnterfeys) ilə müqayisədə sinif instansiyasının tək interfeys ilə əlaqəli olduğu interfeyslər qrupu ilə əlaqələndirilir.
Şəkil – Çox Sinif Nümunələri – FS Cihazı 2 Konfiqurasiyaları və Çoxsaylı İnterfeyslər)
Şəkil – Çox Sinif Nümunələri – FS Cihazı (2 Konfiqurasiya və Çoxsaylı İnterfeys) ilə uyğun gələn kod keçmişdə göstərilmişdir.ampaşağıda. Səhvlərin idarə edilməsi aydınlıq üçün buraxılmışdır.
Example – Çox Sinif Nümunələri – FS Cihazı 2 Konfiqurasiyaları və Çoxsaylı İnterfeyslər)
Copyright © 2025 Silicon Laboratories. Bütün hüquqlar qorunur.
17/174
Bitdiview
sl_status_t statusu; uint8_t class_0; uint8_t class_1;
status = sl_usbd_XXXX_init();
status = sl_usbd_XXXX_create_instance(&class_0); status = sl_usbd_XXXX_create_instance(&class_1);
status = sl_usbd_XXXX_add_to_configuration(class_0, cfg_0); status = sl_usbd_XXXX_add_to_configuration(class_1, cfg_0);
status = sl_usbd_XXXX_add_to_configuration(class_0, cfg_1); status = sl_usbd_XXXX_add_to_configuration(class_1, cfg_1);
(1)
(2) (3)
(4) (5)
(6) (6)
(1) Sinfi işə salın. İstənilən daxili dəyişənlər, strukturlar və sinif portları işə salınacaq.
(2) Sinif nümunəsini yaradın, class_0 . sl_usbd_XXXX_create_instance() funksiyası class_0 ilə əlaqəli sinif idarəetmə strukturunu ayırır.
(3) Sinif nümunəsini yaradın, class_1 . sl_usbd_XXXX_create_instance() funksiyası class_1 ilə əlaqəli başqa sinif idarəetmə strukturunu ayırır.
(4) cfg_0 konfiqurasiyasına class_0 sinif nümunəsini əlavə edin. sl_usbd_XXXX_add_to_configuration() interfeys 0, interfeys 1, alternativ interfeyslər və əlaqəli IN və OUT son nöqtələrini yaradacaq. Sinif nümunəsi nömrəsi, class_0, interfeys 0 və ya interfeys 1-də hər hansı məlumat əlaqəsi üçün istifadə ediləcək.
(5) cfg_0 konfiqurasiyasına class_1 sinif nümunəsini əlavə edin. sl_usbd_XXXX_add_to_configuration() interfeys 2, interfeys 3 və onlarla əlaqəli IN və OUT son nöqtələrini yaradacaq. Sinif nümunəsi nömrəsi, class_1, interfeys 2 və ya interfeys 3-də hər hansı məlumat əlaqəsi üçün istifadə ediləcək.
(6) Eyni sinif nümunələrini, class_0 və class_1 , digər konfiqurasiyaya əlavə edin, cfg_1 .
Hər bir sinif sl_usbd_XXXX_callbacks_t tipli strukturu müəyyən edir. Onun məqsədi hər bir sinifə hadisə baş verdikdə çağırılacaq bir sıra geri çağırış funksiyaları verməkdir. Hər sinifdə iki geri çağırış funksiyası mövcuddur. Onlar aşağıdakı cədvəldə təqdim olunur.
Cədvəl – Ümumi Sinif Geri Zəng Funksiyaları
Sahələr Təsvir .enable USB sinif nümunəsi uğurla aktivləşdirildikdə çağırılır. .disable USB sinif nümunəsi söndürüldükdə çağırılır.
Funksiya İmza etibarsız app_usbd_XXXX_enable(uint8_t class_nbr); void app_usbd_XXXX_disable(uint8_t class_nbr);
Copyright © 2025 Silicon Laboratories. Bütün hüquqlar qorunur.
18/174
Bitdiview
Bitdiview
USB Cihazı CDC ACM Sinfi
USB Cihazı CDC Əsas Sinif Bitdiview USB Cihazı CDC ACM Sinfi Resurs Əsas USB Cihazından CDC ACM Alt Sinifindən tələb olunurview USB Cihazı CDC ACM Sinif Konfiqurasiyası USB Cihazı CDC ACM Sinif Proqramlaşdırma Bələdçisi
Bu bölmə Silicon Labs-in USB Qurğu yığını tərəfindən dəstəklənən Rabitə Cihazı Sinfi (CDC) sinifini və əlaqəli CDC alt sinfini təsvir edir. Silicon Labs USB-Cihazı hazırda serial emulyasiya üçün adətən istifadə edilən Abstract Control Model (ACM) alt sinifini dəstəkləyir.
CDC müxtəlif telekommunikasiya və şəbəkə cihazlarını əhatə edir. Telekommunikasiya cihazları analoq modemləri, analoq və rəqəmsal telefonları, ISDN terminal adapterlərini və s. daxildir. Məsələn,ample, şəbəkə qurğularında ADSL və kabel modemləri, Ethernet adapterləri və hublar var. CDC USB keçidindən istifadə etməklə V.250 (telefon şəbəkəsi üzərindən modemlər üçün) və Ethernet (yerli şəbəkə cihazları üçün) kimi mövcud rabitə xidmətləri standartlarını əhatə etmək üçün çərçivə müəyyən edir. Rabitə cihazı cihazın idarə edilməsinə, lazım olduqda zənglərin idarə edilməsinə və məlumat ötürülməsinə cavabdehdir.
CDC yeddi əsas cihaz qrupunu müəyyən edir. Hər bir qrup bir neçə alt sinifi əhatə edə bilən ünsiyyət modelinə aiddir. Hər bir cihaz qrupunun CDC baza sinifindən başqa öz spesifikasiya sənədi var. Yeddi qrup bunlardır:
İctimai Kommutasiyalı Telefon Şəbəkəsi (PSTN), səs diapazonu modemləri, telefonlar və serial emulyasiya cihazları daxil olmaqla cihazlar. Integrated Services Digital Network (ISDN) cihazları, o cümlədən terminal adapterləri və telefonlar. Ethernet İdarəetmə Modeli (ECM) cihazları, o cümlədən IEEE 802 ailəsini dəstəkləyən cihazlar (məs.: kabel və ADSL modemləri, WiFi adapterləri). ADSL modemləri və ATM şəbəkələrinə qoşulmuş digər qurğular (iş stansiyaları, marşrutlaşdırıcılar, LAN açarları) daxil olmaqla, asinxron ötürmə rejimi (ATM) cihazları. Simsiz Mobil Rabitə (WMC) cihazları, o cümlədən səs və məlumat rabitəsini idarə etmək üçün istifadə edilən çoxfunksiyalı rabitə telefon cihazları. Ethernet çərçivəli məlumat mübadiləsi edən Ethernet Emulation Model (EEM) cihazları. Şəbəkə İdarəetmə Modeli (NCM) cihazları, o cümlədən yüksək sürətli şəbəkə cihazları (Yüksək Sürətli Paket Girişi modemləri, Xətt Terminal Avadanlığı)
CDC və əlaqəli alt sinif tətbiqi aşağıdakı spesifikasiyalara uyğundur:
Universal Serial Bus, Rabitə Qurğuları üçün Sinif Tərifləri, Revision 1.2, 3 noyabr 2010-cu il. Universal Serial Bus, Communications, PSTN Devices üçün alt sinif, Revision 1.2, 9 fevral 2007-ci il.
USB Cihazı CDC Əsas Sinif Bitdiview
CDC cihazı rabitə imkanlarını həyata keçirmək üçün aşağıdakı interfeyslərdən ibarətdir:
Rabitə Sinfi İnterfeysi (CCI) cihazın idarə edilməsinə və isteğe bağlı olaraq zənglərin idarə edilməsinə cavabdehdir. The
cihazın idarə edilməsi cihazın ümumi konfiqurasiyasına və idarə edilməsinə və baş verən hadisələrin ev sahibinə bildirilməsinə imkan verir. Zəngin idarə edilməsi zənglərin qurulmasına və dayandırılmasına imkan verir. Zənglərin idarə edilməsi DCI vasitəsilə çoxlaşdırıla bilər. CCI bütün CDC cihazları üçün məcburidir. CDC cihazı tərəfindən dəstəklənən rabitə modelini təyin etməklə CDC funksiyasını müəyyən edir. CCI-dən sonrakı interfeys(lər) Audio və ya satıcıya məxsus interfeys kimi hər hansı müəyyən edilmiş USB sinif interfeysi ola bilər. Satıcıya məxsus interfeys xüsusi olaraq DCI ilə təmsil olunur.
Data Class Interface (DCI) verilənlərin ötürülməsinə cavabdehdir. Göndərilən və/və ya qəbul edilən məlumatlar müəyyən bir şeyə əməl etmir
format. Məlumatlar kommunikasiya xəttindən alınan xam məlumatlar, mülkiyyət formatına uyğun verilənlər və s. ola bilər. CCI-dən sonra bütün DCI-lərə tabe interfeyslər kimi baxıla bilər.
CDC cihazında ən azı bir CCI və sıfır və ya daha çox DCI olmalıdır. Bir CCI və hər hansı tabeli DCI birlikdə ev sahibinə bir xüsusiyyət təmin edir. Bu qabiliyyətə funksiya da deyilir. CDC kompozit cihazında bir neçə ola bilər
Copyright © 2025 Silicon Laboratories. Bütün hüquqlar qorunur.
19/174
Bitdiview
funksiyaları. Buna görə də, cihaz Şəkil – CDC Kompozit Cihazında göstərildiyi kimi bir neçə CCI və DCI(lər) dəstindən ibarət olacaqdır.
Şəkil – CDC Kompozit Cihazı
CDC cihazı çox güman ki, aşağıdakı son nöqtələrin kombinasiyasından istifadə edəcək:
Bir cüt nəzarət IN və OUT son nöqtələri standart son nöqtə adlanır. İsteğe bağlı toplu və ya kəsmə IN son nöqtəsi. Bir cüt toplu və ya izoxron IN və OUT son nöqtələri. Qeyd edək ki, Silicon Labs USB cihaz yığını hazırda izoxron son nöqtələri dəstəkləmir.
Aşağıdakı cədvəl müxtəlif son nöqtələrin istifadəsini və CDC-nin hansı interfeysi ilə istifadə edildiyini göstərir.
Cədvəl – CDC Endpoint Usage
Son nöqtə
Nəzarət IN
Nəzarət OUT
Kesinti və ya toplu IN Toplu və ya izoxron IN Toplu və ya izoxron
OUT
İstiqamət
Cihaz-host
Host-todevice
Cihaz-host
Cihaz-host
Host-todevice
İnterfeys İstifadəsi
CCI
Sadalama üçün standart sorğular, sinfə aid sorğular, cihaz
idarəetmə və isteğe bağlı olaraq idarəetməyə zəng edin.
CCI
Sadalama üçün standart sorğular, sinfə aid sorğular, cihaz
idarəetmə və isteğe bağlı olaraq idarəetməyə zəng edin.
CCI
Zəngin aşkarlanması, seriya xətti statusu, şəbəkə statusu kimi hadisələr bildirişi.
DCI
Xam və ya formatlaşdırılmış məlumat rabitəsi.
DCI
Xam və ya formatlaşdırılmış məlumat rabitəsi.
Əksər rabitə cihazları hadisələrin sahibini xəbərdar etmək üçün kəsmə son nöqtəsindən istifadə edir. Xüsusi protokol USB protokol xətaları zamanı məlumatların təkrar ötürülməsinə əsaslandıqda, izoxron son nöqtələr məlumat ötürülməsi üçün istifadə edilməməlidir. İzoxron rabitə mahiyyət etibarilə məlumatları itirə bilər, çünki onun təkrar cəhd mexanizmləri yoxdur.
Yeddi əsas kommunikasiya modeli bir neçə alt sinifi əhatə edir. Alt sinif cihazın idarə edilməsi və zənglərin idarə edilməsi üçün CCI-dən istifadə etmə üsulunu təsvir edir. Aşağıdakı cədvəldə bütün mümkün alt siniflər və onların aid olduğu rabitə modelləri göstərilir.
Cədvəl – CDC alt sinifləri
Alt sinif
Birbaşa Xətt İdarəetmə Modeli Mücərrəd İdarəetmə Modeli
Ünsiyyət modeli
PSTN
PSTN
ExampBu Altsınıfdan istifadə edən Cihazlar
USB host tərəfindən birbaşa idarə olunan modem cihazları
Serial emulyasiya cihazları, serial əmr dəsti vasitəsilə idarə olunan modem cihazları
Copyright © 2025 Silicon Laboratories. Bütün hüquqlar qorunur.
20/174
Bitdiview
Alt sinif
Ünsiyyət modeli
ExampBu Altsınıfdan istifadə edən Cihazlar
Telefon İdarəetmə Modeli
PSTN
Çoxkanallı İdarəetmə ISDN Modeli
CAPI İdarəetmə Modeli ISDN
Ethernet Şəbəkə ECM Nəzarət Modeli
ATM şəbəkəsi
ATM
Nəzarət Modeli
Simsiz Telefon İdarəetmə Modeli
WMC
Cihaz İdarəetmə WMC
Mobil birbaşa xətt modeli
WMC
OBEX
WMC
Ethernet Emulyasiya EEM Modeli
Şəbəkə İdarəetmə Modeli
NCM
Səsli telefon cihazları
Əsas tarif terminalı adaptorları, əsas tarif terminalı adaptorları, telefonlar
Əsas tarif terminalı adaptorları, əsas tarif terminalı adaptorları, telefonlar DOC-SIS kabel modemləri, PPPoE emulyasiyasını dəstəkləyən ADSL modemləri, Wi-Fi adapterləri (IEEE 802.11-ailə), IEEE 802.3 adapterləri ADSL modemləri
Simsiz cihazlara qoşulan mobil terminal avadanlığı
Simsiz cihazlara qoşulan mobil terminal avadanlığı Simsiz cihazlara qoşulan mobil terminal avadanlığı
Simsiz cihazlara qoşulan mobil terminal avadanlığı Nəqliyyatın növbəti qatı kimi Ethernet çərçivələrindən istifadə edən qurğular. Şəbəkədə yüksək sürətli məlumat ötürmə qabiliyyətini daşıyan IEEE 802.3 adapterləri marşrutlaşdırma və İnternetə qoşulma cihazları üçün nəzərdə tutulmayıb
USB Cihaz CDC ACM Class Resurs Tələbləri Core
Hər dəfə sl_usbd_cdc_acm_add_to_configuration() funksiyasına zəng vasitəsilə USB konfiqurasiyasına CDC ACM sinif nümunəsini əlavə etdikdə, aşağıdakı resurslar əsasdan ayrılacaq.
Resurs
İnterfeyslər Alternativ interfeyslər Son nöqtələr İnterfeys qrupları
Kəmiyyət
2 2 3 1
Qeyd edək ki, bu nömrələr konfiqurasiyaya uyğundur. SL_USBD_INTERFACE_QUANTITY , SL_USBD_ALT_INTERFACE_QUANTITY , SL_USBD_INTERFACE_GROUP_QUANTITY və SL_USBD_DESCRIPTOR_QUANTITY konfiqurasiya dəyərlərinizi qurarkən, sinfin neçə konfiqurasiya əlavə ediləcəyini nəzərə almağı unutmayın. SL_USBD_OPEN_ENDPOINTS_QUANTITY konfiqurasiya dəyəri üçün son nöqtələr yalnız konfiqurasiya host tərəfindən təyin edildikdə açıldığı üçün siz sadəcə olaraq sinif nümunəsi üçün lazım olan son nöqtələrin sayını nəzərə almalısınız.
USB Cihazı CDC ACM Altsınıfı Bitdiview
CDC baza sinfi, USB Cihazı CDC Baza Sinfi Üstündə ətraflı müzakirə olunan Rabitə Sinfi İnterfeysi (CCI) və Məlumat Sinfi İnterfeysindən (DCI) ibarətdir.view . Bu bölmə ACM tipli CCI-dən bəhs edir. O, idarəetmə elementi üçün standart son nöqtədən və bildiriş elementi üçün kəsmə son nöqtəsindən ibarətdir. DCI üzərində müəyyən edilməmiş məlumatları daşımaq üçün bir cüt toplu son nöqtə istifadə olunur.
ACM alt sinfi iki növ rabitə cihazı tərəfindən istifadə olunur:
AT əmrlərini dəstəkləyən cihazlar (məsələn, səs diapazonu modemləri). Virtual COM port cihazları adlanan serial emulyasiya cihazları.
ACM alt sinfi üçün bir neçə alt sinifə xas sorğular var. Onlar cihazı idarə etməyə və konfiqurasiya etməyə imkan verir. Bütün ACM sorğularının tam siyahısı və təsviri spesifikasiyada tapıla bilər
Copyright © 2025 Silicon Laboratories. Bütün hüquqlar qorunur.
21/174
Bitdiview PSTN Cihazları üçün alt sinif, revision 1.2, 9 fevral 2007=, bölmə 6.2.2.
Bu siyahıdan Silicon Labs9 ACM alt sinfi aşağıdakıları dəstəkləyir:
Cədvəl – Silicon Labs tərəfindən dəstəklənən ACM sorğuları
Alt sinif Sorğunun Təsviri
SetCommFeature GetCommFeature ClearCommFeature
Ev sahibi bu sorğunu müəyyən kommunikasiya funksiyası üçün parametrlərə nəzarət etmək üçün göndərir. Serial emulyasiyası üçün istifadə edilmir.
Ev sahibi bu sorğunu müəyyən kommunikasiya funksiyası üçün cari parametrləri əldə etmək üçün göndərir. Serial emulyasiyası üçün istifadə edilmir.
Ev sahibi bu sorğunu müəyyən kommunikasiya funksiyası üçün parametrləri təmizləmək üçün göndərir. Serial emulyasiyası üçün istifadə edilmir.
SetLineCoding
Host bu sorğunu ACM cihaz parametrlərini konfiqurasiya etmək üçün göndərir: ötürmə sürəti, dayanma bitlərinin sayı, paritet növü və məlumat bitlərinin sayı. Serial emulyasiyası üçün, açıq virtual COM portu üçün serial parametrlərini hər dəfə konfiqurasiya etdikdə bu sorğu avtomatik olaraq serial terminal tərəfindən göndərilir.
GetLineCoding
Host cari ACM parametrlərini (vermə sürəti, dayandırma bitləri, paritet, məlumat bitləri) əldə etmək üçün bu sorğunu göndərir. Serial emulyasiyası üçün serial terminallar bu sorğunu virtual COM portunun açılması zamanı avtomatik göndərir.
SetControlLineState Host yarımdupleks modemlər üçün daşıyıcıya nəzarət etmək və Data Terminal Avadanlığının (DTE) hazır olub-olmadığını bildirmək üçün bu sorğunu göndərir. Serial emulyasiya vəziyyətində DTE seriyalı terminaldır. Serial emulyasiyası üçün müəyyən seriyalı terminallar sizə bu sorğunu idarəetmə dəsti ilə göndərməyə imkan verir.
SetBreak
Ev sahibi bu sorğunu RS-232 stil fasiləsi yaratmaq üçün göndərir. Serial emulyasiyası üçün müəyyən seriya terminalları bu sorğunu göndərməyə imkan verir.
Silicon Labs9 ACM alt sinifi cari seriya xətti vəziyyəti haqqında hostu xəbərdar etmək üçün kəsmə IN son nöqtəsindən istifadə edir. Serial
sətir vəziyyəti hostu məlumatlandıran bitmapdır:
Həddindən artıq yükləndiyinə görə məlumat ləğv edildi Paritet xətası Çərçivə xətası Üzük siqnalının aşkarlanmasının vəziyyəti Qırılma aşkarlanması mexanizminin vəziyyəti Ötürmə daşıyıcısının vəziyyəti Qəbuledici daşıyıcının aşkarlanmasının vəziyyəti
Silicon Labs9 ACM alt sinifinin tətbiqi aşağıdakı spesifikasiyaya uyğundur:
Universal Serial Bus, Communications, PSTN Devices üçün alt sinif, revision 1.2, 9 fevral 2007-ci il.
USB Cihazı CDC ACM Sinfi Konfiqurasiyası
Bu bölmə CDC ACM Sinifinin (Rabitə Qurğu Sinfi, Mücərrəd İdarəetmə Modeli) necə konfiqurasiya olunacağını müzakirə edir. Konfiqurasiya parametrlərinin iki qrupu var:
USB Cihazı CDC ACM Sinif Tətbiq Xüsusi Konfiqurasiyaları USB Cihazı CDC ACM Sinfi Nümunə Konfiqurasiyaları
USB Cihazı CDC ACM Sinif Tətbiqə Xüsusi Konfiqurasiyalar
CDC Baza Sinfi ACM Alt Sinfi
CDC Baza Sinfi
Birincisi, Silicon Labs USB cihazı CDC sinif modulundan istifadə etmək üçün proqram ehtiyaclarınıza uyğun olaraq CDC kompilyasiya vaxtı konfiqurasiyasını #define-s tənzimləməlisiniz. Onlar sl_usbd_core_config.h başlığında yenidən qruplaşdırılıblar file CDC bölməsi altında. Onların məqsədi USB cihaz moduluna neçə USB CDC obyektinin ayrılması barədə məlumat verməkdir.
Copyright © 2025 Silicon Laboratories. Bütün hüquqlar qorunur.
22/174
Bitdiview
Aşağıdakı cədvəl bu konfiqurasiya strukturunda mövcud olan hər bir konfiqurasiya sahəsini təsvir edir.
Cədvəl – USB Cihazı CDC Konfiqurasiyası Müəyyən edir
Konfiqurasiya Adı
S_INSTANCE_QUANT ITY KİMİ SL_USBD_CDC_CL
SL_USBD_CDC_CONF IGURATION_QUANTI
TY
SL_USBD_CDC_DATA _INTERFACE_QUANTI
TY
Təsvir
Funksiyaya zəng vasitəsilə ayıracağınız sinif nümunələrinin sayı
sl_usbd_cdc_acm_create_instance() .
Konfiqurasiyaların sayı. ACM sinif nümunələri sl_usbd_cdc_acm_add_to_configuration() üçün bir və ya daha çox aaaa konfiqurasiyalarına əlavə edilə bilər.
Bütün CDC funksiyaları üçün məlumat interfeyslərinin (DCI) ümumi sayı. Hər bir CDC ACM funksiyası sl_usbd_cdc_acm_create_instance() funksiyasına əlavə edilmiş aaaaaaaaa dd dt interfeysi olacaq.
Defolt Dəyər
2
1
2
ACM alt sinfi
ACM alt sinfi aşağıdakı cədvəldə göstərilən bir kompilyasiya vaxtı konfiqurasiyasına malikdir.
Cədvəl – USB Cihazı CDC ACM Konfiqurasiyasını Təyin et
Konfiqurasiya Adı
SL_USBD_CDC_ACM_SUBCL ASS_I NSTANCE_QUANTITY
Təsvir
Zəng vasitəsilə ayıracağınız alt sinif nümunələrinin sayını konfiqurasiya edir
sl_usbd_cdc_acm_create_instance() funksiyası.
Defolt Dəyər
2
USB Cihazı CDC ACM Sinfi Nümunə Konfiqurasiyaları
Bu bölmə CDC ACM seriya sinfi nümunələri ilə əlaqəli konfiqurasiyaları müəyyən edir. Sinif Nümunəsinin Yaradılması xətti vəziyyəti intervalı çağırış mgmt imkanları p_acm_callbacks
Sinif Nümunəsinin Yaradılması
CDC ACM seriyalı sinif nümunəsini yaratmaq üçün T a sl_usbd_cdc_acm_create_instance() funksiyasına zəng edin. onun funksiyası burada təsvir olunduğu kimi üç konfiqurasiya arqumentinə malikdir.
xətt_state_interval
Bu, CDC ACM seriyalı sinif nümunənizin T aa hostuna xətt vəziyyəti bildirişlərini bildirəcəyi intervaldır (millisaniyələrlə). onun v lue ikinin gücü olmalıdır (1, 2, 4, 8, 16 və s.).
call_mgmt_capabilities
Zəng İdarəetmə İmkanları bitmapı. Bitmapın mümkün dəyərləri aşağıdakılardır:
Dəyər (bit)
SL_USBD_ACM_SERIAL_CALL_MGMT_DEV
SL_USBD_ACM_SERIAL_CALL_MGMT_DATA_CCI _DCI
Təsvir
Cihaz zəng idarəçiliyini özü idarə edir. Cihaz Data Class interfeysi üzərindən zənglərin idarə edilməsi məlumatlarını göndərə/qəbul edə bilər.
p_acm_callbacks
Copyright © 2025 Silicon Laboratories. Bütün hüquqlar qorunur.
23/174
Bitdiview
aa M aa p_acm_callbacks sl_usbd_cdc_acm_callbacks_t tipli strukturun göstəricisidir. Onun məqsədi CDC AC Cl ss-ə CDC ACM hadisəsi baş verdikdə çağırılacaq geri çağırış funksiyaları dəstini verməkdir. Bütün geri çağırışlar məcburi deyil və geri çağırışa ehtiyac olmadıqda boş göstərici (NULL) geri çağırış strukturu dəyişəninə ötürülə bilər. Aşağıdakı cədvəl bu konfiqurasiya strukturunda mövcud olan hər bir konfiqurasiya sahəsini təsvir edir.
Cədvəl – sl_usbd_cdc_acm _callbacks_t Konfiqurasiya Strukturu
Sahələr
Təsvir
.aktiv edin
USB sinif nümunəsi aktiv olduqda çağırılır
uğurla.
.deaktiv edin
USB sinif nümunəsi söndürüldükdə çağırılır.
.line_control_changed Xətt nəzarəti dəyişikliyi qəbul edildikdə çağırılır.
line_coding_changed Xətt kodlaşdırma dəyişikliyi qəbul edildikdə çağırılır.
Funksiya İmzası
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 hadisə, uint8_t event_chngd); bool app_usbd_cdc_acm_line_coding_changed(uint8_t subclass_nbr, subclass_nbr, sl_usbd_cdc_acm_line_coding_t)
*p_line_kodlaşdırma
Geri çağırış funksiyaları üçün Hadisə Bildirişinin Geri Zənglərinin Qeydiyyatı bölməsinə baxın, məsələnample.
USB Cihazı CDC ACM Sinif Proqramlaşdırma Bələdçisi
Bu bölmə CDC Abstract Control Model sinifindən necə istifadə olunacağını izah edir. USB Cihazının işə salınması CDC ACM Sinfi USB Cihazı CDC ACM Sinfi Nümunəsinin Cihazınıza əlavə edilməsi CDC ACM Sinifindən istifadə etməklə əlaqə qurmaq
USB Cihazı CDC ACM Sinifinin işə salınması
Cihazınıza CDC ACM sinif funksionallığı əlavə etmək üçün siz ilk növbədə sl_usbd_cdc_init() nd sl_usbd_cdc_acm_init() funksiyalarını aac linq etməklə CDC əsas sinfini və ACM altsınıfını işə salmalısınız. Aşağıdakı sl_usbd_cdc_init() və sl_usbd_cdc_acm_init() funksiyalarının standart arqumentlərdən istifadə edərək necə aparılacağını göstərir.
Example – CDC ACM Sinifinin işə salınması
sl_status_t statusu;
status = sl_usbd_cdc_init(); əgər (status ! SL_STATUS_OK) { /* Xəta baş verdi. Səhvlərin idarə edilməsi buraya əlavə edilməlidir. */
}
status = sl_usbd_cdc_acm_init(); əgər (status ! SL_STATUS_OK) { /* Xəta baş verdi. Səhvlərin idarə edilməsi buraya əlavə edilməlidir. */
}
Cihazınıza USB Cihazı CDC ACM Sinif Nümunəsinin əlavə edilməsi
Cihazınıza CDC ACM sinif funksionallığı əlavə etmək üçün siz nümunə yaratmalı, sonra onu cihazınızın konfiqurasiyasına əlavə etməlisiniz.
CDC ACM Sinif Nümunəsinin yaradılması
Copyright © 2025 Silicon Laboratories. Bütün hüquqlar qorunur.
24/174
Bitdiview
CDC ACM Sinif Nümunəsinin Cihazınızın Konfiqurasiyasına əlavə edilməsi Hadisə Bildirişinin Geri Zənglərinin Qeydiyyatı
CDC ACM Sinif Nümunəsinin yaradılması
aa M aaa Cre te CDC AC cl ss instansiyasını sl_usbd_cdc_acm_create_instance() funksiyasını işə salmaqla. T aaa M aaa o ex mple aşağıda CDC AC cl ss instansiyasını vi sl_usbd_cdc_acm_create_instance() necə yaratmağı göstərir.
Example – sl_usbd_cdc_acm_create_instance() vasitəsilə CDC ACM funksiyasının yaradılması
uint8_t subclass_nbr; sl_status_t statusu;
status = sl_usbd_cdc_acm_create_instance(64u, SL_USBD_ACM_SERIAL_CALL_MGMT_DATA_CCI_DCI | SL_USBD_ACM_SERIAL_CALL_MGMT_DEV, NULL, &alt sinif_nbr);
əgər (status ! SL_STATUS_OK) { /* Xəta baş verdi. Səhvlərin idarə edilməsi buraya əlavə edilməlidir. */
}
CDC ACM Sinif Nümunəsinin Cihazınızın Konfiqurasiyasına əlavə edilməsi
CDC ACM sinif nümunəsini yaratdıqdan sonra funksiyaya zəng edərək onu konfiqurasiyaya əlavə edə bilərsiniz
sl_usbd_cdc_acm_add_to_configuration() .
Aşağıdakı sl_usbd_cdc_acm_add_to_configuration() nın necə c ll olduğunu göstərir.
Example – USBD ACM-ə zəng edin sl_usbd_cdc_acm_add_to_configuration()
sl_status_t statusu;
status = sl_usbd_cdc_acm_add_to_configuration(alt sinif_nbr,
(1)
config_nbr_fs);
(2)
əgər (status ! SL_STATUS_OK) {
/* Xəta baş verdi. Səhvlərin idarə edilməsi buraya əlavə edilməlidir. */
}
aaa (1) sl_usbd_cdc_acm_create_instance() tərəfindən qaytarılan konfiqurasiyaya dd-yə Cl ss nömrəsi. (2) Konfiqurasiya nömrəsi (burada onu Tam Sürətli konfiqurasiyaya əlavə edirik).
Hadisə Bildirişinin Geri Zənglərinin Qeydiyyatı
CDC ACM Serial sinfi bildiriş geri çağırış funksiyaları vasitəsilə xətt nəzarəti və ya kodlaşdırmada hər hansı dəyişikliklər barədə ərizənizi xəbərdar edə bilər. Geri çağırış funksiyaları strukturu ACM nümunəsinin yaradılması zamanı arqument kimi ötürülə bilər. Qeyd edək ki, bu geri çağırışlar isteğe bağlıdır. Məsample – CDC ACM Geri Zənglərin Qeydiyyatı geri çağırış qeydiyyatı funksiyalarının istifadəsini göstərir. Məsample – CDC ACM Geri Zənglərin Tətbiqi keçmişi göstərirampgeri çağırış funksiyalarının həyata keçirilməsi.
Example – CDC ACM Geri Zənglərin Qeydiyyatı
Copyright © 2025 Silicon Laboratories. Bütün hüquqlar qorunur.
25/174
Bitdiview
uint8_t subclass_nbr; sl_status_t statusu;
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, };
status = 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_calls_call);
əgər (status ! SL_STATUS_OK) { /* Xəta baş verdi. Səhvlərin idarə edilməsi buraya əlavə edilməlidir. */ }
Example – CDC ACM Geri Zənglərin İcrası
bool app_usbd_cdc_acm_line_coding_changed (uint8_t)
alt sinif_nbr,
sl_usbd_cdc_acm_line_coding_t *p_line_coding)
{
uint32_t baudrate_new;
uint8_t parity_new;
uint8_t stop_bits_new;
uint8_t data_bits_new;
/* TODO Yeni xətt kodlamasını tətbiq edin.*/ 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;
qayıtmaq (doğru);
(1)
}
void app_usbd_cdc_acm_line_control_changed (uint8_t subclass_nbr, uint8_t hadisə, uint8_t event_changed)
{ bool rts_state; bool rts_state_changed; bool dtr_state; bool dtr_state_changed; bool brk_state; bool brk_state_changed;
/* TODO Yeni xətt nəzarətini tətbiq edin. */ rts_state = ((hadisə və SL_USBD_CDC_ACM_CTRL_RTS) ! 0) ? doğru: yalan; rts_state_changed = ((hadisə_dəyişdi və SL_USBD_CDC_ACM_CTRL_RTS) ! 0) ? doğru: yalan; dtr_state = ((hadisə və SL_USBD_CDC_ACM_CTRL_DTR) ! 0) ? doğru: yalan; dtr_state_changed = ((hadisə_dəyişdi və SL_USBD_CDC_ACM_CTRL_DTR) ! 0) ? doğru: yalan; brk_state = ((hadisə və SL_USBD_CDC_ACM_CTRL_BREAK) ! 0) ? doğru: yalan; brk_state_changed = ((hadisə_dəyişdi və SL_USBD_CDC_ACM_CTRL_BREAK) ! 0) ? doğru: yalan;
}
(1) Sətir kodlaşdırmasının tətbiqi uğursuz olarsa, bu funksiyaya false qaytarılması vacibdir. Əks halda, həqiqəti qaytarın.
CDC ACM Sinifindən istifadə etməklə ünsiyyət
Serial Vəziyyəti
Xətt kodlaşdırma xəttinə nəzarət
Copyright © 2025 Silicon Laboratories. Bütün hüquqlar qorunur.
26/174
Bitdiview
Xətt Dövlət Alt Sinf Nümunə Rabitəsi
Serial Vəziyyəti
Xəttin kodlaşdırılması
USB host CDC ACM cihazının xətt kodlamasına (verilmə sürəti, paritet və s.) nəzarət edir. Zəruri hallarda, proqram xəttin kodlaşdırılmasına cavabdehdir. Aşağıdakı cədvəldə təsvir olunduğu kimi, cari xətt kodlamasını əldə etmək və qurmaq üçün iki funksiya təqdim olunur.
Cədvəl – CDC ACM Xətti Kodlaşdırma Funksiyaları
Funksiya
sl_usbd_cdc_acm_g e t_line _co d ing ()
sl_usbd_cdc_acm_s e t_line _co d ing ()
Təsvir
Tətbiqiniz ya SetLineCoding sorğuları olan hostdan, ya da sl_usbd_cdc_acm_set_line_coding() funksiyası ilə müəyyən edilmiş cari xətt kodlaşdırma parametrlərini əldə edə bilər.
Tətbiqiniz xətt kodlamasını təyin edə bilər. Ev sahibi parametrləri GetLineCoding sorğusu ilə əldə edə bilər.
Xətt Nəzarəti
USB host CDC ACM cihazının xətt nəzarətinə (RTS və DTR pinləri, fasilə siqnalı və s.) nəzarət edir. Lazım olduqda, tətbiqiniz xətt nəzarətlərinin tətbiqinə cavabdehdir. Aşağıdakı cədvəldə təsvir olunduğu kimi, cari xətt idarəedicilərini əldə etmək və qurmaq üçün funksiya təmin edilmişdir.
Cədvəl – CDC ACM Xəttinə Nəzarət Funksiyaları
Funksiya
sl_usb d _cd c_acm_g e t_line _co ntr o l_state ()
Tətbiqiniz SetControlLineState sorğusu ilə host tərəfindən təyin edilmiş cari nəzarət xətti vəziyyətini əldə edə bilər.
Xətt vəziyyəti
USB host xətti vəziyyətini müntəzəm olaraq alır. Tətbiqiniz hər dəfə dəyişdikdə xətt vəziyyətini yeniləməlidir. Lazım olduqda, tətbiqiniz xətt vəziyyətini təyin etmək üçün məsuliyyət daşıyır. Aşağıdakı cədvəldə təsvir olunduğu kimi, cari xətt nəzarətlərini əldə etmək və qurmaq üçün iki funksiya təmin edilmişdir.
Cədvəl – CDC ACM Line S tate Funksiyaları
Funksiya
sl_usb d _cd c_acm_se t _line _state _e ve nt()
sl_usbd_cdc_acm_cle ar_line _state _e ve nt()
Tətbiqiniz istənilən xətt vəziyyəti hadisə(lər)ini təyin edə bilər. Xətt vəziyyətini təyin edərkən, serial xəttinin vəziyyətində dəyişiklik barədə məlumat vermək üçün hosta IN ötürülməsi göndərilir.
Tətbiq xətt vəziyyətinin iki hadisəsini silə bilər: ötürücü daşıyıcı və qəbuledici daşıyıcının aşkarlanması. Bütün digər hadisələr ACM seriyalı emulyasiya alt sinfi tərəfindən öz-özünə təmizlənir.
Alt sinif Nümunə Əlaqəsi
Silicon Labs-in ACM alt sinfi ev sahibi ilə əlaqə saxlamaq üçün aşağıdakı funksiyaları təklif edir. Funksiyalar9 parametrləri haqqında ətraflı məlumat üçün CDC ACM Alt Sinf Funksiyaları arayışına baxın.
Funksiya adı
sl_usb d _cd c_acm_ re ad () sl_usb d _cd c_acm_write ()
Əməliyyat
Toplu OUT son nöqtəsi vasitəsilə hostdan məlumatları qəbul edir. Bu funksiya bloklanır. Toplu IN son nöqtəsi vasitəsilə məlumatı hosta göndərir. Bu funksiya bloklanır.
Copyright © 2025 Silicon Laboratories. Bütün hüquqlar qorunur.
27/174
Bitdiview
Cədvəl – CDC ACM Communication API Xülasə aaaaa sl_usbd_cdc_acm_read() və sl_usbd_cdc_acm_write() transferin blokladığı zaman sinxron əlaqəni təmin edir. Başqa sözlə, funksiyanı çağırdıqdan sonra proqram xəta ilə və ya xətasız köçürmə tamamlanana qədər bloklanır. Əbədi gözləməkdən qaçınmaq üçün vaxt aşımı təyin edilə bilər. keçmişample aşağıda oxumaq və yazmaq keçmişi göstəriramptoplu OUT son nöqtəsindən istifadə edərək hostdan məlumatları qəbul edir və toplu GİRİŞ son nöqtəsindən istifadə edərək məlumatları hosta göndərir.
Siyahı - Serial Oxu və Yaz Example
__ALGNED(4) uint8_t rx_buf[2];
__ALGNED(4) uint8_t tx_buf[2];
uint32_t
xfer_len;
sl_status_t
status;
status = sl_usbd_cdc_acm_read (alt sinif_nbr,
(1)
rx_buf,
(2)
2u,
0u,
(3)
&xfer_len);
əgər (status ! SL_STATUS_OK) {
/* Xəta baş verdi. Səhvlərin idarə edilməsi buraya əlavə edilməlidir. */
}
status = sl_usbd_cdc_acm_write (alt sinif_nbr,
(1)
tx_buf,
(4)
2u,
0u,
(3)
&xfer_len);
əgər (status ! SL_STATUS_OK) {
/* Xəta baş verdi. Səhvlərin idarə edilməsi buraya əlavə edilməlidir. */
}
T aaaaa M (1) sl_usbd_cdc_acm_create_instance() ilə yaradılmış cl ss instansiya nömrəsi transferi lazımi toplu OUT və ya IN son nöqtəsinə yönləndirmək üçün AC alt sinfinə n intern istinadını təmin edir. (2) Tətbiqiniz funksiyaya verilən buferin bütün məlumatları yerləşdirmək üçün kifayət qədər böyük olmasını təmin etməlidir. Əks halda, sinxronizasiya problemləri yarana bilər. (3) Sonsuz bloklama vəziyyətindən qaçınmaq üçün millisaniyələrlə ifadə olunan vaxt aşımı təyin edin. 809 dəyəri tətbiq tapşırığını əbədi olaraq gözləməyə məcbur edir. (4) Tətbiq işə salınmış ötürmə buferini təmin edir.
Copyright © 2025 Silicon Laboratories. Bütün hüquqlar qorunur.
28/174
Bitdiview
Bitdiview
USB Cihazı HID Sinfi
USB Cihazı HID sinfi bitdiview USB Cihazı HID Sinfi Resurs Əsas USB Cihazından Ehtiyaclar HID Sinfi Konfiqurasiyası USB Cihazı HID Sinfi Proqramlaşdırma Bələdçisi HID Dövri Daxiletmə Hesabatları Tapşırığı
Bu bölmə Silicon Labs USB Cihazı tərəfindən dəstəklənən İnsan İnterfeysi Cihazı (HID) sinifini təsvir edir.
HID sinfi klaviatura, siçan, işarə cihazları və oyun cihazları kimi kompüter əməliyyatlarını idarə etmək üçün insanların istifadə etdiyi cihazları əhatə edir.
HID sinfi düymələr, açarlar, düymələr və sürüşdürmə vasitələri kimi idarəetmə elementlərini ehtiva edən kompozit cihazda da istifadə edilə bilər. məsələnampaudio qulaqlıqda le, səssiz və səs səviyyəsinə nəzarət qulaqlıqların HID funksiyası ilə idarə olunur. HID sinfi yalnız nəzarət və kəsmə köçürmələrindən istifadə edərək istənilən məqsəd üçün məlumat mübadiləsi edə bilər.
HID sinfi ən qədim və ən çox istifadə edilən USB siniflərindən biridir. Bütün əsas host əməliyyat sistemləri HID cihazlarını idarə etmək üçün yerli drayver təmin edir, buna görə də müxtəlif satıcılara məxsus cihazlar HID sinfi ilə işləyir. Bu sinfə həmçinin müxtəlif növ çıxış elementləri daxildir, məsələn, LEDlər, audio, toxunma rəyi və s.
HID tətbiqi aşağıdakı spesifikasiyalara uyğundur:
İnsan İnterfeys Cihazları üçün Cihaz Sinfi Tərifi (HID), 6/27/01, Versiya 1.11. Universal Serial Bus HID İstifadə Cədvəlləri, 28/10/2004, Versiya 1.12.
USB Cihazı HID sinfi bitdiview
Bitdiview
HID cihazı aşağıdakı son nöqtələrdən ibarətdir:
Defolt son nöqtə adlanan bir cüt nəzarət GİRİŞ və ÇIXIŞ son nöqtəsi Kəsmə GİRİŞ son nöqtəsi İsteğe bağlı kəsmə OUT son nöqtəsi
Aşağıdakı cədvəl müxtəlif son nöqtələrin istifadəsini təsvir edir:
Cədvəl – HID Class Son Nöqtələrin İstifadəsi
Son nöqtə İstiqamətinin İstifadəsi
Nəzarət IN
Nəzarət
OUT
Interrupt IN
kəsmək
OUT
Cihaz-host
Host-todevice
Cihaz-host
Host-todevice
Sadalama, sinfə aid sorğular və məlumat rabitəsi üçün standart sorğular (GET_REPORT sorğusu ilə hosta göndərilən Daxiletmə, Xüsusiyyət hesabatları). Sadalama, sinfə aid sorğular və məlumat rabitəsi üçün standart sorğular (Çıxış, SET_REPORT sorğusu ilə hostdan alınan Xüsusiyyət hesabatları). Məlumat rabitəsi (Giriş və Xüsusiyyət hesabatları).
Məlumat rabitəsi (Çıxış və Xüsusiyyət hesabatları).
Hesabat
Copyright © 2025 Silicon Laboratories. Bütün hüquqlar qorunur.
29/174
Bitdiview
Host və HID cihazı hesabatlardan istifadə edərək məlumat mübadiləsi aparır. Hesabat HID cihazının idarəetmə vasitələri və digər fiziki şəxsləri haqqında məlumat verən formatlaşdırılmış məlumatları ehtiva edir. İdarəetmə istifadəçi tərəfindən manipulyasiya edilə bilər və cihazın bir aspektini idarə edir. məsələnample, idarəetmə siçan və ya klaviaturadakı düymə, açar və s. ola bilər. Digər qurumlar istifadəçini müəyyən cihazın9 xüsusiyyətlərinin vəziyyəti haqqında məlumatlandırır. məsələnample, klaviaturadakı LED-lər istifadəçiyə baş hərflərin aktiv olması, rəqəmsal klaviaturanın aktiv olması və s.
Hesabat məlumatlarının formatı və istifadəsi host tərəfindən Hesabat deskriptorunun məzmununu təhlil etməklə başa düşülür. Məzmunun təhlili təhlilçi tərəfindən həyata keçirilir. Hesabat deskriptoru cihazdakı hər bir idarəetmə tərəfindən təmin edilən məlumatları təsvir edir. O, cihaz haqqında məlumat parçaları olan elementlərdən ibarətdir və 1 baytlıq prefiksdən və dəyişən uzunluqdan ibarətdir.
data. Element formatı haqqında ətraflı məlumat üçün müraciət edin
1.11=, bölmə 5.6 və 6.2.2.
Əşyaların üç əsas növü var:
Əsas element müəyyən növ məlumat sahələrini müəyyənləşdirir və ya qruplaşdırır.
Qlobal element nəzarətin məlumat xüsusiyyətlərini təsvir edir.
Yerli element nəzarətin məlumat xüsusiyyətlərini təsvir edir.
Hər bir element növü müxtəlif funksiyalarla müəyyən edilir. Bir element funksiyası da adlandırıla bilər tag. Maddə funksiyası üç əsas element növündən birinə aid olan alt element kimi görünə bilər. Aşağıdakı cədvəldə qısa məlumat verilirview hər bir element növündə item9s funksiyalarının. Hər bir kateqoriyadakı maddələrin tam təsviri üçün baxın
Cədvəl – Hər Element növü üçün elementin funksiyasının təsviri
Element Növü Funksiya
Təsvir
Əsas Giriş
Bir və ya bir neçə fiziki nəzarət tərəfindən təmin edilən məlumatlar haqqında məlumatı təsvir edir.
Əsas çıxış Cihaza göndərilən məlumatları təsvir edir.
Əsas Xüsusiyyət
Cihazın və ya onun komponentlərindən birinin ümumi davranışına təsir edən cihaza göndərilən və ya cihazdan alınan cihaz konfiqurasiya məlumatını təsvir edir.
Əsas Kolleksiya Qrupu ilə əlaqəli elementlər (Giriş, Çıxış və ya Xüsusiyyət).
Əsas Sonu Kolleksiyanı bağlayır. Kolleksiya
Copyright © 2025 Silicon Laboratories. Bütün hüquqlar qorunur.
30/174
Bitdiview
Element Növü Funksiya
Təsvir
Qlobal İstifadə Səhifəsi
Cihazda mövcud olan funksiyanı müəyyənləşdirir.
Qlobal Məntiqi Məntiqi vahidlərdə bildirilən dəyərlərin aşağı həddini müəyyən edir. Minimum
Qlobal Məntiqi Məntiqi vahidlərdə bildirilən dəyərlərin yuxarı həddini müəyyən edir. Maksimum
Qlobal Fiziki Fiziki vahidlərdə bildirilən dəyərlərin aşağı həddini, yəni fiziki vahidlərlə ifadə olunan Məntiqi Minimumunu müəyyən edir.
Qlobal Fiziki Fiziki vahidlərdə bildirilən dəyərlərin yuxarı həddini, yəni fiziki vahidlərdə ifadə olunan Məntiqi Maksimum Maksimum müəyyən edir.
Qlobal Vahid
10-cu bazada vahid göstəricini göstərir. Göstərici -8 ilə +7 arasında dəyişir.
Göstərici
Qlobal Vahid
Məlumat verilən dəyərlərin vahidini göstərir. Məsələn, uzunluq, kütlə, temperatur vahidləri və s.
Qlobal Hesabat Ölçüsü
Hesabat sahələrinin ölçüsünü bitlərlə göstərir.
Qlobal Hesabat İD Müəyyən hesabata əlavə edilmiş prefiksi göstərir.
Qlobal Hesabat Sayı
Bir element üçün məlumat sahələrinin sayını göstərir.
Qlobal Push
Qlobal element vəziyyəti cədvəlinin surətini CPU yığınına yerləşdirir.
Qlobal Pop
Maddə vəziyyəti cədvəlini yığındakı sonuncu strukturla əvəz edir.
Yerli İstifadə
İstifadə Səhifəsi daxilində xüsusi İstifadə təyin etmək üçün indeksi təmsil edir. Bu, satıcının9 xüsusi nəzarət və ya nəzarət qrupları üçün istifadə etməyi təklif etdiyini göstərir. İstifadə proqram tərtibatçısına nəzarətin əslində nəyi ölçdüyü barədə məlumat verir.
Yerli İstifadə
Massiv və ya bitmap ilə əlaqəli başlanğıc istifadəni müəyyən edir.
Minimum
Yerli İstifadə
Massiv və ya bitmap ilə əlaqəli son istifadəni müəyyənləşdirir.
Maksimum
Yerli Göstərici Nəzarət üçün istifadə olunan bədən hissəsini müəyyən edir. İndeks Fiziki bölmədə bir işarəyə işarə edir
indeks
deskriptor.
Local Designator Massiv və ya bitmap ilə əlaqəli başlanğıc təyinedicinin indeksini müəyyən edir. Minimum
Yerli İşarəçi Massiv və ya bitmap ilə əlaqəli son təyinedicinin indeksini müəyyən edir. Maksimum
Yerli String İndeksi
String deskriptoru üçün sətir indeksi. O, sətri müəyyən element və ya nəzarətlə əlaqələndirməyə imkan verir.
Yerli String
Massivdəki nəzarət elementlərinə ardıcıl sətirlər qrupunu təyin edərkən ilk sətir indeksini təyin edir
Minimum və ya bitmap.
Yerli Yerli
String Maksimum
Ayırıcı
Massiv və ya bitmapdakı nəzarət elementlərinə ardıcıl sətirlər qrupunu təyin edərkən sonuncu sətir indeksini təyin edir.
Yerli elementlər dəstinin başlanğıcını və ya sonunu müəyyən edir.
Control9s məlumatları ən azı aşağıdakı elementləri müəyyən etməlidir:
Giriş, Çıxış və ya Xüsusiyyət Əsas elementlər İstifadə Yerli element İstifadə Səhifə Qlobal element Məntiqi Minimum Qlobal element Məntiqi Maksimum Qlobal element Hesabatın Ölçüsü Qlobal element
Copyright © 2025 Silicon Laboratories. Bütün hüquqlar qorunur.
31/174
Bitdiview
Hesabat Hesabının Qlobal elementi Aşağıdakı cədvəl host HID təhlilçi nöqteyi-nəzərindən Siçan Hesabatı deskriptor məzmununun təqdimatını göstərir. Siçanın üç düyməsi var (sol, sağ və təkər). Keçmişdə təqdim olunan kodample aşağıda bu siçan Hesabat deskriptorunun təqdimatına uyğun gələn kod tətbiqidir.
Şəkil – Host HID Ayrışdırıcısından Hesabat Deskriptor Məzmunu View
(1) İstifadə Səhifəsi element funksiyası cihazın ümumi funksiyasını təyin edir. Bu keçmişdəample, HID cihazı a məxsusdur
ümumi iş masası nəzarəti.
(2) Kolleksiya Tətbiqi qrupları Ümumi məqsədi olan və tətbiqlərə tanış ola bilən əsas maddələr. Diaqramda qrup üç Əsas Giriş elementindən ibarətdir. Bu kolleksiya üçün idarəetmə elementləri üçün təklif olunan istifadə İstifadə elementi ilə göstərildiyi kimi siçandır. (3) Tətbiqlərə tək nəzarət və ya nəzarət qruplarından istifadə haqqında daha ətraflı məlumat vermək üçün iç içə yığılmış kolleksiyalar istifadə edilə bilər. Bu keçmişdəample, Kolleksiya Tətbiqinə daxil edilmiş Fiziki Kolleksiya Kolleksiya Tətbiqini təşkil edən eyni üç Giriş elementindən ibarətdir. Collection Physical bir həndəsi nöqtədə toplanmış məlumat nöqtələrini təmsil edən məlumat elementləri dəsti üçün istifadə olunur. Keçmişdəample, təklif olunan istifadə İstifadə elementi ilə göstərildiyi kimi göstəricidir. Burada göstəricinin istifadəsi siçan mövqeyinin koordinatlarına aiddir və sistem proqramı ekran kursorunun hərəkətində siçan koordinatlarını tərcümə edəcəkdir. (4) İç-içə istifadə səhifələri də mümkündür və cihazın ümumi funksiyası daxilində müəyyən aspekt haqqında daha ətraflı məlumat verir. Bu halda, iki Giriş elementi qruplaşdırılır və siçanın düymələrinə uyğun gəlir. Bir Daxiletmə elementi siçanın üç düyməsini (sağ, sol və təkər) element üçün məlumat sahələrinin sayı (Hesabat sayı elementi), məlumat sahəsinin ölçüsü (Hesabat ölçüsü elementi) və hər bir məlumat sahəsi üçün mümkün dəyərlər (İstifadə Minimum və Maksimum, Məntiqi Minimum və Maksimum elementlər) baxımından müəyyən edir. Digər Daxiletmə elementi 13 bitlik sabitdir və bu, Giriş hesabatı məlumatlarını bayt sərhədinə uyğunlaşdırmağa imkan verir. Bu Daxiletmə elementi yalnız doldurma məqsədi üçün istifadə olunur. (5) Siçan mövqeyi koordinatları üçün ümumi iş masası nəzarətinə istinad edən başqa bir iç-içə istifadə səhifəsi müəyyən edilmişdir. Bu istifadə səhifəsi üçün Daxiletmə elementi iki İstifadə ilə müəyyən edilmiş x və y oxuna uyğun olan məlumat sahələrini təsvir edir.
maddələr.
Əvvəlki siçan Hesabat deskriptorunun məzmununu təhlil etdikdən sonra host9s HID təhlilçisi kəsilmə IN ötürülməsi ilə və ya GET_REPORT sorğusuna cavab olaraq cihaz tərəfindən göndərilən Giriş hesabatı məlumatlarını şərh edə bilir. Şəkildə göstərilən siçan Hesabat deskriptoruna uyğun olan giriş hesabatı məlumatları – Host HID Parserindən Hesabat Deskriptorunun Məzmunu View is
Copyright © 2025 Silicon Laboratories. Bütün hüquqlar qorunur.
32/174
Bitdiview
aşağıdakı cədvəldə göstərilir. Hesabat məlumatlarının ümumi ölçüsü 4 baytdır. Eyni son nöqtə üzərindən müxtəlif növ hesabatlar göndərilə bilər. Hesabatların müxtəlif növlərini fərqləndirmək məqsədilə məlumat hesabatına 1 baytlıq hesabat ID prefiksi əlavə edilir. Əgər hesabat identifikatoru keçmişdə istifadə olunubsaampsiçan hesabatında, hesabat məlumatının ümumi ölçüsü 5 bayt olacaqdır.
Cədvəl – Hosta Göndərilən və 3 Düyməli Siçanın Vəziyyətinə Uyğun Daxiletmə Hesabatı
Bit Ofset
0 1 2 3 16 24
Bit sayı 1 1 1 13 8 8
Təsvir Düymə 1 (sol düymə). Düymə 2 (sağ düymə). Düymə 3 (təkər düyməsi). İstifadə olunmayıb. X oxundakı mövqe. Y oxundakı mövqe.
Fiziki deskriptor nəzarəti və ya idarəediciləri aktivləşdirmək üçün nəzərdə tutulan bədənin hissələrini və ya hissələrini göstərir. Tətbiq bu məlumatdan cihazın idarə edilməsinə funksionallıq təyin etmək üçün istifadə edə bilər. Fiziki deskriptor isteğe bağlı sinfə aid deskriptordur və əksər cihazların ondan istifadə etmək üçün az qazancı var. istinad edin
Core-dan USB Cihazı HID Sinfi Resurs Tələbləri
Hər dəfə sl_usbd_hid_add_to_configuration() funksiyasına zəng vasitəsilə USB konfiqurasiyasına HID sinif nümunəsini əlavə etdikdə, aşağıdakı resurslar əsasdan ayrılacaq.
Resurs
İnterfeyslər Alternativ interfeyslər Son nöqtələr İnterfeys qrupları
Kəmiyyət
1 1 1 (2, əgər kəsmə OUT son nöqtəsi aktivdirsə) 0
Qeyd edək ki, bu nömrələr konfiqurasiyaya uyğundur. SL_USBD_INTERFACE_QUANTITY , SL_USBD_ALT_INTERFACE_QUANTITY , SL_USBD_INTERFACE_GROUP_QUANTITY və SL_USBD_DESCRIPTOR_QUANTITY konfiqurasiya dəyərlərinizi qurarkən, sinfin neçə konfiqurasiya əlavə ediləcəyini nəzərə almağı unutmayın. SL_USBD_OPEN_ENDPOINTS_QUANTITY konfiqurasiya dəyəri üçün son nöqtələr yalnız konfiqurasiya host tərəfindən təyin edildikdə açıldığı üçün siz sadəcə olaraq sinif nümunəsi üçün lazım olan son nöqtələrin sayını nəzərə almalısınız.
USB Cihazının HID Sinfi Konfiqurasiyası
HID sinifini konfiqurasiya etmək üçün iki qrup konfiqurasiya parametrləri istifadə olunur:
USB Cihazı HID Sinfi Tətbiqə Xüsusi Konfiqurasiyalar USB Cihazı HID Sinfi Nümunə Konfiqurasiyaları
USB Cihazı HID Sinif Tətbiqə Xüsusi Konfiqurasiyalar
Birincisi, Silicon Labs USB cihazının HID sinif modulundan istifadə etmək üçün HID tərtib vaxtı konfiqurasiyasını tətbiq ehtiyaclarınıza uyğun olaraq tənzimləyin. Onlar sl_usbd_core_config.h başlığında yenidən qruplaşdırılıblar file HID bölməsi altında. Onları iki hissəyə bölmək olar, kəmiyyət konfiqurasiyaları və HID tapşırıq konfiqurasiyaları. Kəmiyyət konfiqurasiyalarının məqsədi USB cihaz moduluna neçə USB HID obyektinin ayrılması barədə məlumat verməkdir.
Aşağıdakı cədvəl hər bir konfiqurasiyanı təsvir edir.
Cədvəl – USB Cihazının HID Konfiqurasiyası Müəyyən edir
Copyright © 2025 Silicon Laboratories. Bütün hüquqlar qorunur.
33/174
Bitdiview
Konfiqurasiya Adı
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
Təsvir
Funksiyaya zəng vasitəsilə ayıracağınız sinif nümunələrinin sayı
sl_usbd_hid_create_instance() .
Konfiqurasiyaların sayı. HID sinif nümunələri sl_usbd_hid_add_to_configuration() funksiyasına bir və ya bir neçə aaaa konfiqurasiyasına əlavə edilə bilər. Ayrılmaq üçün hesabat ID-lərinin ümumi sayını konfiqurasiya edir.
Ayrılmaq üçün Push/Pop elementlərinin ümumi sayını konfiqurasiya edir.
Taymer tapşırığı bütün taymer əsaslı HID əməliyyatlarını idarə edir. Bu konfiqurasiya yığının ölçüsünü təyin etməyə imkan verir (bayt sayı ilə). HID tapşırığının prioriteti. onun CMSIS-RTOS2 prioritetidir.
Defolt Dəyər
2 1 2 0 2048
osPriorityHigh
USB Cihazı HID Sinfi Nümunə Konfiqurasiyaları Sinif Nümunəsinin Yaradılması alt sinfi
protokol ölkə kodu
interval_in və interval_out p_hid_callback HID Class Report Deskriptor Example Bu bölmə HID sinif nümunələri ilə əlaqəli konfiqurasiyaları müəyyən edir.
Sinif Nümunəsinin Yaradılması
HID sinif nümunəsinin yaradılması aaa sl_usbd_hid_create_instance() funksiyasına zəng etməklə həyata keçirilir ki, bu da aşağıda təsvir olunan konfiqurasiya arqumentlərini kəsir.
alt sinif
HID alt sinifinin kodu. Mümkün dəyərlər bunlardır:
SL_USBD_HID_SUBCL ASS_NONE SL_USBD_HID_SUBCL ASS_BOOT
Yükləmə alt sinifindən istifadə edən HID cihazı standart hesabat formatlarından istifadə etməlidir. Alt sinif kodları haqqında ətraflı məlumat üçün HID spesifikasiyasının 1.11 revizyonunun 4.2-ci bölməsinə baxın.
protokol
HID cihazı tərəfindən istifadə olunan protokol. Mümkün dəyərlər bunlardır:
SL_USBD_HID_PROTOCOL_NONE SL_USBD_HID_PROTOCOL_KBD SL_USBD_HID_PROTOCOL_MOUSE
HID funksiyanız siçandırsa, protokol aa SL_USBD_HID_PROTOCOL_MOUSE olaraq təyin edilməlidir. Klaviaturadırsa, O SL_USBD_HID_PROTOCOL_KBD olaraq təyin edilməlidir. əks halda, protokol SL_USBD_HID_PROTOCOL_NONE olaraq təyin edilməlidir. Alt sinif kodları haqqında ətraflı məlumat üçün HID spesifikasiyasının 1.11 revizyonunun 4.3-cü bölməsinə baxın.
ölkə_kodu
ölkə kodunun identifikatoru. Mümkün dəyərlər bunlardır:
SL_USBD_HID_COUNTRY_CODE_DƏSTƏKLƏNMİR
Copyright © 2025 Silicon Laboratories. Bütün hüquqlar qorunur.
34/174
Bitdiview
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_HID_PUZBLC SL_USBD_HID_COUNTRY_CODE_DANISH SL_USBD_HID_COUNTRY_CODE_FINNISH SL_USBD_HID_COUNTRY_CODE_FRENCH SL_USBD_HID_COUNTRY_CODE_ALMAN SL_USBD_HID_COUNTRY_CODE_GREEKHID_SL_HERY_COUNTRY_COUNTRY SL_USBD_HID_COUNTRY_CODE_MACARISTAN SL_USBD_HID_COUNTRY_CODE_INTERNATIONAL SL_USBD_HID_COUNTRY_CODE_ITALIAN SL_USBD_HID_COUNTRY_CODE_JAPAN_KATAKANA SL_USBD_HID_COUNTRY_COUNTRY_COUNTRY_COUNTRY_COUNTRY_COUNTRY_CODE_CODE_USBD ATIN_AMERICAN SL_USBD_HID_COUNTRY_CODE_NETHERL ANDS_DUTCH SL_USBD_HID_COUNTRY_CODE_NORWEGIAN SL_USBD_HID_COUNTRY_CODE_PERSIAN_FARSI SL_USBD_HID_COUNTRY_CODE_POLBD_HID_COUNTRY_CODE_POLBD_HID_COUNTRY_COUNTRY_COUNTRY_HİDE_HALKAN 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_ALMAN SL_USBD_HID_COUNTRY_CODE_SWITZERL VƏ SL_USBD_HID_COUNTRY_CODE_TAIWAN SL_USBD_HID_COUNTRY_CODE_TURKIS_Q SL_USBD_HID_COUNTRY_COUNTRY_COUNTRY_COUNTRY_COUNTRY_COUNTRY SL_USBD_HID_COUNTRY_CODE_YUG OSL AVIA SL_USBD_HID_COUNTRY_CODE_TURKISH_F
Ölkə kodu aparatın hansı ölkə üçün lokallaşdırıldığını müəyyənləşdirir. Əksər avadanlıq lokallaşdırılmayıb və buna görə də bu aaaav lue SL_USBD_HID_COUNTRY_CODE_NOT_SUPPORTED (0) olacaq. Bununla belə, klaviaturalarım açar hərflərin dilini göstərmək üçün sahəni istifadə edir.
Ölkə kodları haqqında daha çox məlumat üçün HID spesifikasiyasının 1.11 revizyonunun 6.2.1 bölməsinə baxın.
interval_in və interval_out
interval_in və interval_out IN kəsmə son nöqtəsi və OUT kəsmə son nöqtəsinin sorğu intervalını təmsil edir.
Bu, son nöqtənin sorğu intervalını millisaniyələrlə ifadə edir. Bu dəyərin təyin edilməsi cihazınızın host üçün yeni hesabat yaratmağa nə dərəcədə həssas olmasından asılıdır. Məsələn, hesabat hər 16 millisaniyədən bir yaradılırsa, interval 16 və ya daha az olmalıdır.
Qiymət 2 gücü olmalıdır (1, 2, 4, 8, 16 və s.).
ctrl_rd_en doğru olaraq təyin edilərsə, interval_out v lue nəzərə alınmaz.
p_hid_callback
aaaa p_hid_callback sl_usbd_hid_callbacks_t tipli strukturun göstəricisidir. Onun məqsədi HID hadisəsi baş verdikdə çağırılacaq HID Cl ss geri çağırış funksiyaları dəstini verməkdir.
Copyright © 2025 Silicon Laboratories. Bütün hüquqlar qorunur.
35/174
Bitdiview
Bütün geri çağırışlar məcburi deyil və geri çağırışa ehtiyac olmadıqda boş göstərici (NULL) geri çağırış strukturu dəyişəninə ötürülə bilər. Aşağıdakı cədvəl bu konfiqurasiya strukturunda mövcud olan hər bir konfiqurasiya sahəsini təsvir edir.
Cədvəl – sl_usbd_hid_callbacks_t Konfiqurasiya Strukturu
Sahələr
Təsvir
Funksiya İmzası
.aktiv edin .disable .get_report_desc
.get_phy_desc
.set_output_report .get_feature_report .set_feature_report
USB sinif nümunəsi uğurla aktivləşdirildikdə çağırılır. USB sinif nümunəsi söndürüldükdə çağırılır.
Hesabat deskriptorunuzu ötürmək üçün HID Nümunəsinin yaradılması zamanı çağırılır. HID funksiyalarınızın hər biri üçün siz hesabat deskriptoru təqdim etməlisiniz. Hesabat deskriptoru ev sahibinə cihaz tərəfindən göndəriləcək dövri hesabatın necə təhlil edilməli olduğunu göstərir. Öz hesabat deskriptorunuzu yazmaq çətin ola bilər və buna görə də kömək etmək üçün bəzi resurslar var. Bu yeganə məcburi geri çağırış funksiyasıdır. Fiziki deskriptorunuzu ötürmək üçün HID Nümunəsinin yaradılması zamanı çağırılır. Fiziki deskriptor idarəetməni və ya idarəetmələri aktivləşdirən insan bədəninin xüsusi hissəsi və ya hissələri haqqında məlumat verən deskriptordur. Fiziki deskriptorlar haqqında daha çox məlumat üçün HID spesifikasiyasının 1.11 revizyonunun 6.2.3 bölməsinə baxın. Fiziki deskriptor isteğe bağlıdır və çox vaxt nəzərə alınmır. Burada ötürülən bufer NULL, uzunluq isə 0-a təyin edilə bilər. Host hesabat deskriptorunuzda təsvir olunduğu kimi hesabat təyin etdikdə (hesabat göndərdikdə) çağırılır.
Ev sahibi hesabat deskriptorunuzda təsvir olunduğu kimi xüsusiyyət hesabatı tələb etdikdə çağırılır.
Ev sahibi hesabat deskriptorunuzda təsvir olunduğu kimi xüsusiyyət hesabatını təyin etdikdə çağırılır.
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
Cari aktiv protokolu alır.
void app_usbd_hid_get_protocol(uint8_t class_nbr, uint8_t *p_protocol);
.set_protocol
Cari aktiv protokolu təyin edir.
void app_usbd_hid_set_protocol(uint8_t class_nbr, uint8_t protokolu);
HID Sinfi Hesabat Deskriptoru Example
Silicon Labs 'HID sinif sample proqram köhnə təmin edirampsadə siçan üçün hesabat deskriptorunun le. keçmişample aşağıda siçan hesabat deskriptorunu göstərir.
Example – Siçan Hesabatı Deskriptoru
statik 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)
Copyright © 2025 Silicon Laboratories. Bütün hüquqlar qorunur.
36/174
Bitdiview
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_ENDKOLLEKSİYON,(10)
SL_USBD_HID_MAIN_ENDCOLLECTION
(11)};
(1) Siçan hesabat deskriptorunu təmsil edən cədvəl hər sətir qısa bir elementə uyğun gələn şəkildə işə salınır. Sonuncu 1 baytlıq prefiksdən və 1 baytlıq məlumatdan formalaşır. istinad edin viewŞəkildə host HID analizatoru tərəfindən hazırlanmışdır – Host HID Ayrışdırıcısından Deskriptor Məzmununu Hesabatın View.
(2) Ümumi Masaüstü İstifadə Səhifəsi istifadə olunur.
(3) Ümumi Masaüstü İstifadə Səhifəsi daxilində istifadə tag idarəetmə qrupunun siçanı idarə etmək üçün olduğunu təklif edir. Siçan kolleksiyası adətən iki oxdan (X və Y) və bir, iki və ya üç düymədən ibarətdir.
(4) Siçan kolleksiyası işə salındı.
(5) Siçan kolleksiyası daxilində istifadə tag daha konkret desək, siçan idarəetmə vasitələrinin göstərici kolleksiyasına aid olduğunu göstərir. Göstərici kolleksiyası istifadəçi niyyətlərini proqrama yönəltmək, göstərmək və ya göstərmək üçün dəyər yaradan oxlar toplusudur.
(6) Göstərici kolleksiyası işə salındı.
(7) Düymələrdən İstifadə Səhifəsi üç 1 bitlik sahədən ibarət Daxiletmə elementini müəyyən edir. Hər 1 bitlik sahə müvafiq olaraq siçan 9-un 1, 2 və 3 düyməsini təmsil edir və 0 və ya 1 dəyərini qaytara bilər.
(8) Düymələrdən İstifadə Səhifəsi üçün Daxiletmə elementi 13 digər bitlə doldurulur.
(9) Digər Ümumi Masaüstü İstifadə Səhifəsi X və Y oxları ilə siçan mövqeyini təsvir etmək üçün göstərilmişdir. Daxiletmə elementi dəyəri -127 ilə 127 arasında ola bilən iki 8 bitlik sahədən ibarətdir.
(10) Göstərici kolleksiyası bağlıdır.
(11) Siçan kolleksiyası bağlıdır.
USB.org HID Səhifəsi
Copyright © 2025 Silicon Laboratories. Bütün hüquqlar qorunur.
37/174
Bitdiview
USB Tətbiqçilər Forumu (USB-IF) hesabat təsviri formatı haqqında digər məlumatlarla birlikdə “HID Deskriptor Aləti” adlı alət təqdim edir. Ətraflı məlumat üçün http://www.usb.org/developers/hidpage/ baxın.
USB Cihazı HID Sinif Proqramlaşdırma Bələdçisi
Bu bölmə HID sinifindən necə istifadə olunacağını izah edir. USB Cihazı HID Sinifinin işə salınması Cihazınıza USB Cihazı HID Sinfi Nümunəsinin əlavə edilməsi USB Cihazı HID Sinifindən istifadə etməklə əlaqə
USB Cihazı HID Sinifinin işə salınması
Cihazınıza HID Sinfi funksiyasını əlavə etmək üçün əvvəlcə sl_usbd_hid_init() funksiyasına zəng edərək sinfi işə salmalısınız. keçmişample aşağıda standart arqumentlərdən istifadə edərək sl_usbd_hid_init()-ə necə zəng etmək olar. sl_usbd_hid_init() -ə keçmək üçün konfiqurasiya arqumentləri haqqında ətraflı məlumat üçün USB Cihazı HID Sinif Tətbiq Xüsusi Konfiqurasiyalarına baxın.
Example – sl_usbd_hid_init() çağırır
sl_status_t statusu;
status = sl_usbd_hid_init(); əgər (status ! SL_STATUS_OK) { /* Xəta baş verdi. Səhvlərin idarə edilməsi buraya əlavə edilməlidir. */
}
Cihazınıza USB Cihazı HID Sinif Nümunəsinin əlavə edilməsi
Cihazınıza HID sinif funksionallığı əlavə etmək üçün siz nümunə yaratmalı, sonra onu cihazınızın konfiqurasiyasına əlavə etməlisiniz.
HID Sinif Nümunəsinin yaradılması
sl_usbd_hid_create_instance() funksiyasına zəng edərək HID sinif nümunəsi yaradın. keçmişample aşağıda standart arqumentlərdən istifadə edərək sl_usbd_hid_create_instance() vasitəsilə sadə siçan funksiyasının necə yaradılacağını göstərir. sl_usbd_hid_create_instance() -a keçmək üçün konfiqurasiya arqumentləri haqqında ətraflı məlumat üçün USB Cihazı HID Sinfi Nümunə Konfiqurasiyalarına baxın.
Example – sl_usbd_hid_create_instance() vasitəsilə siçan funksiyasının əlavə edilməsi
Copyright © 2025 Silicon Laboratories. Bütün hüquqlar qorunur.
38/174
Bitdiview
/* Qlobal sabitlər. */ statik sabit 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_HIDCOLLECTION1, + 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_PHYSICALH, + SL_USGP, +USGLOB SL_USBD_HID_USAGE_PAGE_BUTTON, SL_USBD_HID_LOCAL_USAGE_MIN + 1, 0 01, SL_USBD_HID_LOCAL_USAGE_MAX + 1, 0 03, SL_USBD_HID_GLOBAL_LOG_MIN + 0, 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_HIDT_MA1, + 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_INPUT + 1, SL_HID_MA, 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_DV_X, SL_USBD_HID_SLID_LOCID_1H, + 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_HIDREPORT10, + 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 };
/* Yerli dəyişənlər.*/ uint8_t class_nbr; sl_status_t statusu;
sl_usbd_hid_callbacks_t app_usbd_hid_callbacks = { NULL, NULL, app_usbd_hid_get_report_desc, NULL, NULL, NULL, NULL, NULL, NULL };
etibarsız app_usbd_hid_get_report_desc(uint8_t class_nbr, const uint8_t **p_report_ptr, uint16_t *p_report_len)
{ (boş) sinif_nbr;
*p_report_ptr = app_usbd_hid_mouse_report_desc; *p_report_len = sizeof(app_usbd_hid_mouse_report_desc); }
status = sl_usbd_hid_create_instance(SL_USBD_HID_SUBCLASS_BOOT, SL_USBD_HID_PROTOCOL_MOUSE, SL_USBD_HID_COUNTRY_CODE_NOT_SUPPORTED, Ex_USBD_HID_Mouse_ReportDesc, sizeof(ID_UScBD_Desc) 2u, doğru, &app_usbd_hid_callbacks, &class_nbr);
Copyright © 2025 Silicon Laboratories. Bütün hüquqlar qorunur.
39/174
Bitdiview
/* Xəta baş verdi. Səhvlərin idarə edilməsi buraya əlavə edilməlidir. */}
HID Sinif Nümunəsinin Cihazınızın Konfiqurasiya(lar)ına əlavə edilməsi HID sinif nümunəsini yaratdıqdan sonra funksiyaya zəng edərək onu konfiqurasiyaya əlavə edə bilərsiniz.
sl_usbd_hid_add_to_configuration() .
keçmişample aşağıda sl_usbd_hid_add_to_configuration() funksiyasına necə zəng etmək olar.
Example – sl_usbd_hid_add_to_configuration() çağırılır
sl_status_t statusu;
sl_usbd_hid_add_to_configuration(class_nbr,
(1)
config_nbr_fs); (2)
əgər (status ! SL_STATUS_OK) {
/* Xəta baş verdi. Səhvlərin idarə edilməsi buraya əlavə edilməlidir. */
}
(1) sl_usbd_hid_create_instance() tərəfindən qaytarılan konfiqurasiyaya əlavə ediləcək sinif nömrəsi. (2) Konfiqurasiya nömrəsi (burada onu Tam Sürətli konfiqurasiyaya əlavə edirik).
USB Cihazı HID Sinifindən istifadə edərək ünsiyyət
Sinif Nümunə Rabitə Sinxron Rabitə Sinif Nümunə Rabitə HID sinfi host ilə əlaqə saxlamaq üçün aşağıdakı funksiyaları təklif edir.
Cədvəl – HID Communication API xülasəsi
Funksiya adı
sl_usb d _hid _ re ad _sy nc() sl_usb d _hid _yaz _sy nc()
Əməliyyat kəsmə OUT son nöqtəsi vasitəsilə hostdan məlumatları qəbul edir. Bu funksiya bloklanır. Interrupt IN son nöqtəsi vasitəsilə məlumatları hosta göndərir. Bu funksiya bloklanır.
Sinxron Ünsiyyət Sinxron rabitə ötürmənin bloklanması deməkdir. Funksiya çağırışı zamanı proqramlar köçürmə xətalı və ya xətasız tamamlanana qədər bloklanır. Əbədi gözləməkdən qaçınmaq üçün vaxt aşımı təyin edilə bilər. keçmişample aşağıda kəsmə OUT son nöqtəsindən istifadə edərək hostdan məlumatları qəbul edən və kəsilmə IN son nöqtəsindən istifadə edərək məlumatı hosta göndərən oxu və yazını göstərir.
Example - Sinxron HID Oxu və Yaz
__ALGNED(4) uint8_t rx_buf[2];
__ALGNED(4) uint8_t tx_buf[2];
uint32_t
xfer_len;
sl_status_t
status;
status = sl_usbd_hid_read_sync (class_nbr,
(1)
(boş *)rx_buf,
(2)
2u,
0u,
(3)
&xfer_len);
əgər (status ! SL_STATUS_OK) {
/* Xəta baş verdi. Səhvlərin idarə edilməsi buraya əlavə edilməlidir. */
}
Copyright © 2025 Silicon Laboratories. Bütün hüquqlar qorunur.
40/174
Bitdiview
status =sl_usbd_hid_read_sync(class_nbr,(1)(void *)rx_buf,(2)2u,0u,(3)&xfer_len);if(status ! SL_STATUS_OK){/* Xəta baş verdi. Səhvlərin idarə edilməsi buraya əlavə edilməlidir. */}
status =sl_usbd_hid_write_sync(class_nbr,(1)(void *)tx_buf,(4)2u,0u,(3)&xfer_len);if(status ! SL_STATUS_OK){/* Xəta baş verdi. Səhvlərin idarə edilməsi buraya əlavə edilməlidir. */}
(1) sl_usbd_hid_create_instance()-dan yaradılmış sinif nümunəsi nömrəsi transferi düzgün kəsilmə OUT və ya IN son nöqtəsinə yönləndirmək üçün HID sinfi üçün daxili istinad təmin edir.
(2) Tətbiq funksiyaya verilən buferin bütün məlumatları yerləşdirmək üçün kifayət qədər böyük olmasını təmin etməlidir. Əks halda, sinxronizasiya problemləri yarana bilər. Daxili olaraq oxu əməliyyatı sl_usbd_hid_create_instance() çağırarkən təyin edilmiş nəzarət oxu bayrağından asılı olaraq ya nəzarətin son nöqtəsi ilə, ya da kəsilmənin son nöqtəsi ilə həyata keçirilir.
(3) Sonsuz bloklama vəziyyətindən qaçmaq üçün millisaniyələrlə ifadə olunan vaxt aşımı təyin edilə bilər. 809 dəyəri tətbiq tapşırığını əbədi olaraq gözləməyə məcbur edir.
(4) Tətbiq işə salınmış ötürmə buferini təmin edir.
HID Dövri Daxiletmə Hesabatları Tapşırığı
Bant genişliyinə qənaət etmək üçün ev sahibi hesabat tezliyini məhdudlaşdırmaqla kəsilmənin son nöqtəsindən hesabatları susdurmaq imkanına malikdir. Bunun üçün host SET_IDLE sorğusunu göndərməlidir. Silicon Labs tərəfindən həyata keçirilən HID sinfi bir və ya bir neçə giriş hesabatına tətbiq edə biləcəyiniz hesabat tezliyi məhdudiyyətinə hörmət edən daxili tapşırıqdan ibarətdir. Şəkil Dövri Daxiletmə Hesabatları Tapşırığı dövri giriş hesabatları tapşırıqlarının işləməsini göstərir.
Şəkil – Dövri Daxiletmə Hesabatları Tapşırığı
(1) Cihaz SET_IDLE sorğusu alır. Bu sorğu verilmiş hesabat ID-si üçün boş qalma müddətini təyin edir. SET_IDLE sorğusu haqqında ətraflı məlumat üçün baxın
(2) Hesabat ID strukturu (HID sinifinin işə salınması mərhələsində ayrılır) boş qalma müddəti ilə yenilənir. Boş qalma müddəti sayğacı boş qalma müddəti dəyəri ilə işə salınır. Hesabat ID strukturu giriş hesabatlarının ID strukturlarını ehtiva edən əlaqəli siyahının sonuna daxil edilir. Boş qalma müddəti dəyəri 4 ilə 1020 ms diapazonu verən 4 ms vahidində ifadə edilir.
Copyright © 2025 Silicon Laboratories. Bütün hüquqlar qorunur.
41/174
Bitdiview
Boş qalma müddəti kəsmə IN son nöqtəsinin sorğu intervalından azdırsa, hesabatlar sorğu intervalında yaradılır.
(3) Hər 4 ms-dən bir dövri giriş hesabatı tapşırığı giriş hesabatlarının ID siyahısına göz gəzdirir. Hər bir giriş hesabatı ID-si üçün tapşırıq iki mümkün əməliyyatdan birini yerinə yetirir. Tapşırıq dövrünün müddəti boş qalma müddəti üçün istifadə olunan 4 ms vahidə uyğun gəlir. Əgər host tərəfindən heç bir SET_IDLE sorğusu göndərilməyibsə, giriş hesabatlarının ID siyahısı boşdur və tapşırığın emal ediləcək heç nəsi yoxdur. Tapşırıq yalnız 0-dan fərqli və 0-dan çox boş qalma müddəti olan hesabat ID-lərini emal edir.
(4) Verilmiş giriş hesabatı ID-si üçün tapşırıq boş qalma müddətinin keçib-keçmədiyini yoxlayır. Boş qalma müddəti keçməyibsə, sayğac azalır və hosta heç bir giriş hesabatı göndərilmir.
(5) Boş qalma müddəti keçibsə (yəni boş qalma müddəti sayğacı sıfıra çatıb), kəsmə IN son nöqtəsi vasitəsilə sl_usbd_hid_write_sync() funksiyasına zəng etməklə giriş hesabatı hosta göndərilir.
(6) Tapşırıq tərəfindən göndərilən giriş hesabatı məlumatları Hesabat deskriptorunda təsvir edilən hər bir giriş hesabatı üçün ayrılmış daxili məlumat buferindən gəlir. Tətbiq tapşırığı giriş hesabatını göndərmək üçün sl_usbd_hid_write_sync() funksiyasına zəng edə bilər. Giriş hesabatı məlumatını göndərdikdən sonra, sl_usbd_hid_write_sync() yeni göndərilən məlumatla giriş hesabatı ID-si ilə əlaqəli daxili buferi yeniləyir. Sonra, dövri giriş hesabatları tapşırığı hər bir boş qalma müddətindən sonra və tətbiq tapşırığı daxili buferdəki məlumatları yeniləyənə qədər həmişə eyni giriş hesabatı məlumatlarını göndərir. Dövri daxiletmə hesabatı tapşırığı ilə dəqiq ötürülmə vaxtında baş verən dəyişiklik halında, giriş hesabatı ID məlumatlarının korlanmasının qarşısını almaq üçün bəzi kilidləmə mexanizmi mövcuddur.
Copyright © 2025 Silicon Laboratories. Bütün hüquqlar qorunur.
42/174
Bitdiview
Bitdiview
USB Cihazı MSC Sinif
USB Cihazı MSC sinfi bitdiview USB Cihazı MSC Class Resurs Əsas USB Cihazından Tələblər MSC Sinif Konfiqurasiyası USB Cihazı MSC Sinif Proqramlaşdırma Bələdçisi USB Cihazı MSC Sinif Yaddaş Sürücüləri
Bu bölmə Silicon Labs USB Cihazı tərəfindən dəstəklənən kütləvi saxlama cihazı sinifini (MSC) təsvir edir. MSC, USB cihazı və host arasında məlumat ötürməyə imkan verən bir protokoldur. Köçürülən məlumat icra olunan proqramlar, mənbə kodu, sənədlər, şəkillər, konfiqurasiya məlumatları və ya digər mətn və ya rəqəmsal məlumatlar kimi elektron şəkildə saxlanıla bilən hər hansı bir şeydir. USB cihazı hosta xarici yaddaş vasitəsi kimi görünür və ötürülməsini təmin edir filesürüklə və burax vasitəsilə.
A file sistem necə olacağını müəyyən edir files saxlama mühitində təşkil edilir. USB kütləvi saxlama sinifinin spesifikasiyası heç bir xüsusi tələb etmir file uyğun cihazlarda istifadə olunacaq sistem. Bunun əvəzinə, Kiçik Kompüter Sistemi İnterfeysi (SCSI) şəffaf əmr dəstindən istifadə edərək verilənlərin sektorlarını oxumaq və yazmaq üçün sadə interfeys təqdim edir. Beləliklə, əməliyyat sistemləri USB sürücüsünü sabit disk kimi qəbul edə bilər və onu istənilən ilə formatlaya bilər file bəyəndikləri sistem.
USB kütləvi saxlama cihazı sinfi aşağıdakı kimi iki nəqliyyat protokolunu dəstəkləyir:
Yalnız Toplu Nəqliyyat (BOT) Nəzarət/Toplu/Kəsmə (CBI) Nəqliyyatı (yalnız disket diskləri üçün istifadə olunur)
Kütləvi saxlama cihazı sinfi yalnız BOT protokolundan istifadə edərək SCSI şəffaf əmr dəstini həyata keçirir, bu da məlumatların və status məlumatlarının ötürülməsi üçün yalnız toplu son nöqtələrin istifadə ediləcəyini bildirir. MSC tətbiqi çoxlu məntiqi vahidləri dəstəkləyir.
MSC tətbiqi aşağıdakı spesifikasiyalara uyğundur:
Universal Serial Avtobus Kütləvi Saxlama Sinfi Spesifikasiyası Bitdiview, Revision 1.3 5 sentyabr 2008-ci il. Universal Serial Bus Kütləvi Saxlama Sinfi Yalnız Toplu Nəqliyyat, Revision 1.0 31 sentyabr 1999-cu il.
USB Cihazı MSC aCl ss Bitdiview
Protokolun Son Nöqtələri Sinfi Tələbləri Kiçik Kompüter Sistemi İnterfeysi (SCSI)
Protokol
Bu bölmədə biz Kütləvi Saxlama Sinifinin Yalnız Toplu Nəqliyyat (BOT) protokolunu müzakirə edəcəyik. Yalnız Toplu Nəqliyyat protokolunda üç s vartages:
Komanda Nəqliyyatı Məlumat Nəqliyyatı Status Nəqliyyatı
Kütləvi saxlama əmrləri host tərəfindən Command Block Wrapper (CBW) adlı struktur vasitəsilə göndərilir. Məlumat nəqlini tələb edən əmrlər üçün stage, host CBW-nin uzunluq və bayraq sahələri ilə müəyyən edilən baytların dəqiq sayını cihazdan göndərməyə və ya qəbul etməyə çalışacaq. Məlumat nəqlindən sonra stage, ev sahibi cihazdan komandanın statusunu, eləcə də hər hansı məlumat qalığını (əgər
Copyright © 2025 Silicon Laboratories. Bütün hüquqlar qorunur.
43/174
Bitdiview
hər hansı). Məlumat nəqli daxil olmayan əmrlər üçüntage, ev sahibi CBW göndərildikdən sonra birbaşa CSW almağa çalışır. Protokol Şəkil - MSC Protokolunda ətraflı təsvir edilmişdir.
Şəkil – MSC Protokolu
Son nöqtələr
Cihaz tərəfində, BOT spesifikasiyasına uyğun olaraq, MSC aşağıdakı son nöqtələrdən ibarətdir: Defolt son nöqtə adlanan bir cüt nəzarət IN və OUT son nöqtələri. Bir cüt toplu GİRİŞ və ÇIXIŞ son nöqtələri.
Aşağıdakı cədvəl son nöqtələrin müxtəlif istifadələrini göstərir.
Cədvəl – MSC Endpoint Usage
Son nöqtə
Nəzarət GİRİŞ YÜKLƏ YÜKLƏ OUT
İstiqamət
Qurğu Hostu Cihaza Yerləşdirəcək Cihaz
İstifadəsi
Sadalama və MSC sinfinə xas sorğular Sadalama və MSC sinfinə aid sorğular CSW və məlumat göndərin CBW və verilənləri qəbul edin
Sinif sorğuları
MSC BOT protokolu üçün iki müəyyən edilmiş nəzarət sorğusu var. Bu sorğular və onların təsviri aşağıdakı cədvəldə ətraflı şəkildə verilmişdir.
Cədvəl – Kütləvi Saxlama Sinfi Sorğuları
Sinif sorğuları
Yalnız Kütləvi Yaddaş Sıfırlaması
Təsvir
Bu sorğu kütləvi yaddaş cihazını və onunla əlaqəli interfeysi sıfırlamaq üçün istifadə olunur. Bu sorğu cihazı növbəti əmr blokunu qəbul etməyə hazırlayır.
Copyright © 2025 Silicon Laboratories. Bütün hüquqlar qorunur.
44/174
Bitdiview
Sinif sorğuları
Təsvir
Max Get Bu sorğu cihaz tərəfindən dəstəklənən ən yüksək məntiqi vahid nömrəsini (LUN) qaytarmaq üçün istifadə olunur. məsələnample, a
LUN
LUN 0 və LUN 1 olan cihaz 1 dəyəri qaytaracaq. Tək məntiqi vahidi olan cihaz 0 qaytaracaq və ya
xahiş. Qaytarıla bilən maksimum dəyər 15-dir.
Kiçik kompüter sistemi interfeysi SCSI
Proqramlaşdırma interfeysi səviyyəsində MSC cihazı SCSI və SFF-8020i (ATAPI) kimi standart yaddaş-media rabitə protokollarından birini həyata keçirir. “Proqramlaşdırma interfeysi” hansı protokolun həyata keçirildiyini müəyyənləşdirir və ana əməliyyat sisteminə USB yaddaş cihazı ilə əlaqə saxlamaq üçün uyğun cihaz drayverini yükləməyə kömək edir. SCSI, USB MSC saxlama cihazları ilə istifadə edilən ən ümumi protokoldur. Biz MSC SCSI alt sinifi üçün GSDK istifadəçilərimizin qutudan kənarda istifadə edə biləcəyi tətbiq təqdim edirik.
SCSI kompüterlər və periferik qurğular arasında əlaqəni idarə etmək üçün standartlar toplusudur. Bu standartlara əmrlər, protokollar, elektrik interfeysləri və optik interfeyslər daxildir. USB kimi digər aparat interfeyslərindən istifadə edən saxlama cihazları cihaz/host məlumatını əldə etmək və cihazın işinə nəzarət etmək və yaddaş mühitində məlumat bloklarını ötürmək üçün SCSI əmrlərindən istifadə edir.
SCSI əmrləri cihaz növlərinin və funksiyalarının geniş spektrini əhatə edir və buna görə də cihazlar bu əmrlərin alt dəstinə ehtiyac duyur. Ümumiyyətlə, əsas ünsiyyət üçün aşağıdakı əmrlər lazımdır:
SORĞU OXUMA BÜTÜNLÜĞÜ(10) OXUMA(10) TƏLƏB EDİN HİSSİ SINAQ VADİTƏSİ HAZIR YAZMA(10)
Core-dan USB Cihazı MSC Class Resurs Ehtiyacları
Hər dəfə sl_usbd_msc_add_to_configuration() funksiyası vasitəsilə USB konfiqurasiyasına MSC sinif nümunəsini əlavə etdikdə, aşağıdakı resurslar əsasdan ayrılacaq.
Resurs
İnterfeyslər Alternativ interfeyslər Son nöqtələr İnterfeys qrupları
Kəmiyyət
1 1 2 0
Qeyd edək ki, bu nömrələr konfiqurasiyaya uyğundur. SL_USBD_INTERFACE_QUANTITY , SL_USBD_ALT_INTERFACE_QUANTITY , SL_USBD_INTERFACE_GROUP_QUANTITY və SL_USBD_DESCRIPTOR_QUANTITY konfiqurasiya dəyərlərinizi qurarkən, sinfin neçə konfiqurasiya əlavə ediləcəyini nəzərə almağı unutmayın. SL_USBD_OPEN_ENDPOINTS_QUANTITY konfiqurasiya dəyəri üçün son nöqtələr yalnız konfiqurasiya host tərəfindən təyin edildikdə açıldığı üçün siz sadəcə olaraq sinif nümunəsi üçün lazım olan son nöqtələrin sayını nəzərə almalısınız.
USB Cihazı MSC Sinif Konfiqurasiyası
MSC sinifini konfiqurasiya etmək üçün iki qrup konfiqurasiya parametrləri istifadə olunur:
USB Cihazı MSC Sinif Tətbiqə Xüsusi Konfiqurasiyalar USB Cihazı MSC Sinif Məntiqi Vahid Konfiqurasiyası
USB Cihazı MSC Sinif Tətbiqə Xüsusi Konfiqurasiyalar
Class Compile-Time Konfiqurasiyaları Sinif Nümunəsinin yaradılması
Copyright © 2025 Silicon Laboratories. Bütün hüquqlar qorunur.
45/174
Bitdiview
Sinif Kompilyasiya Zamanı Konfiqurasiyaları
Silicon Labs USB Cihazı MSC sinfi və SCSI alt sinfi kompilyasiya zamanı sl_usbd_core_config.h-də yerləşən #defines vasitəsilə konfiqurasiya edilə bilər. file.
Cədvəl – Ümumi Konfiqurasiya Sabitləri
Konfiqurasiya Adı
Təsvir
SL_USBD_MSC_CLASS_INST Funksiyaya zəng vasitəsilə ayıracağınız sinif nümunələrinin sayı
ANCE_QUANTITY
sl_usbd_msc_scsi_create_instance() .
SL_USBD_MSC_CONFIGURA Sinif nümunəsinin zəng vasitəsilə əlavə edilə biləcəyi konfiqurasiya sayı
TION_QUANTITY
sl_usbd_msc_scsi_add_to_configuration() funksiyası.
SL_USBD_MSC_LUN_QUANT Zəng vasitəsilə əlavə edəcəyiniz sinif nümunəsi üzrə məntiqi vahidlərin sayı
ITY
sl_usbd_msc_scsi_lun_add() funksiyası.
SL_USBD_MSC_SCSI_64_BIT 64 bitlik Məntiqi Blok Ünvanı (LBA) dəstəyini aktivləşdirir və ya söndürür.
_LBA_EN
SL_USBD_MSC_DATA_BUFF ER_SIZE baytda sinif nümunəsi üçün verilənlər buferinin ölçüsü
Defolt Dəyər
2
1
2
0
512
Sinif Nümunəsinin Yaradılması
USB Cihazı MSC SCSI sinif nümunəsinin yaradılması sl_usbd_msc_scsi_create_instance() funksiyasına zəng etməklə həyata keçirilir. Bu funksiya aşağıda təsvir olunan bir konfiqurasiya arqumentini qəbul edir.
p_scsi_callbacks
p_scsi_callbacks sl_usbd_msc_scsi_callbacks_t tipli konfiqurasiya strukturunun göstəricisidir. Ümumi usb cihazı sinfi geri çağırışlarına əlavə olaraq, MSC sinifini məntiqi vahiddə hadisə baş verdikdə çağırılan əlavə geri çağırış funksiyaları dəsti ilə təmin edir. Əgər geri çağırışa ehtiyac yoxdursa, null göstərici (NULL) bu arqumentə ötürülə bilər.
Aşağıdakı cədvəl bu konfiqurasiya strukturunda mövcud olan hər bir konfiqurasiya sahəsini təsvir edir.
Cədvəl – sl_usbd_msc_scsi_callbacks_t Konfiqurasiya Strukturu
Sahələr
Təsvir
.aktiv edin
USB sinif nümunəsi uğurla aktivləşdirildikdə çağırılır.
.disable USB sinif nümunəsi söndürüldükdə çağırılır.
.host_eject Funksiya məntiqi vahid hostdan çıxarıldıqda çağırılır.
Funksiya İmzası
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 Cihazı MSC Sinif Məntiqi Vahid Konfiqurasiyası
MSC sinif nümunəsinə məntiqi vahid əlavə etmək sl_usbd_msc_lun_add() funksiyasını çağırmaqla həyata keçirilir. Bu funksiya aşağıda təsvir olunan bir konfiqurasiya arqumentini qəbul edir.
p_lu_info
p_lu_info sl_usbd_msc_scsi_lun_info_t tipli strukturun göstəricisidir. Onun məqsədi məntiqi vahid haqqında məlumatı MSC sinfinə təqdim etməkdir.
Aşağıdakı cədvəl bu konfiqurasiya strukturunda mövcud olan hər bir konfiqurasiya sahəsini təsvir edir.
Cədvəl – sl_usbd_msc_scsi_lun_info_t Konfiqurasiya Strukturu
Copyright © 2025 Silicon Laboratories. Bütün hüquqlar qorunur.
46/174
Bitdiview
Sahə
Təsvir
Sahə
.scsi_lun_api_p tr
Təsvir
Bu məntiqi vahidi idarə edəcək media sürücüsü API-yə göstərici. Yaddaş drayverləri haqqında ətraflı məlumat üçün USB Cihazı MSC Sinif Yaddaş Sürücülərinə baxın.
.ve nd o r_id _ p tr
.product_id_ptr
.p ro d uct_ re v isi on_level .is_ re ad _o nly
Məntiqi vahidin satıcı identifikasiyasını ehtiva edən sətir üçün göstərici. Sətirin maksimum uzunluğu 8 simvoldur. Məntiqi vahidin məhsul identifikasiyasını ehtiva edən sətir üçün göstərici. Sətirin maksimum uzunluğu 16 simvoldur. Məhsulun təftiş səviyyəsi.
Məntiqi vahidin yalnız nöqteyi-nəzərdən oxunmuş kimi görünməsi lazım olduğunu göstərən bayraq view ev sahibinin (doğru) və ya yox (yanlış).
USB Cihazı MSC Sinif Proqramlaşdırma Bələdçisi
Bu bölmə MSC sinifindən necə istifadə olunacağını izah edir.
USB Cihazının işə salınması MSC Sinif USB Cihazının Cihazınıza MSC SCSI Sinfi Nümunəsinin əlavə edilməsi USB Cihazı MSC Sinif Məntiqi Vahidin İdarə Edilməsi
USB Cihazı MSC Sinifinin işə salınması
MSC SCSI sinif funksionallığını cihazınıza əlavə etmək üçün əvvəlcə sl_usbd_msc_init() və sl_usbd_msc_scsi_init() funksiyalarına zəng edərək MSC əsas sinifini və SCSI altsınıfını işə salın.
keçmişample aşağıda sl_usbd_msc_init() və sl_usbd_msc_scsi_init() necə çağırılacağını göstərir.
Example – sl_usbd_msc_init() və sl_usbd_msc_scsi_init() çağırılır
sl_status_t statusu;
status = sl_usbd_msc_init(); əgər (status ! SL_STATUS_OK) { /* Xəta baş verdi. Səhvlərin idarə edilməsi buraya əlavə edilməlidir. */
}
status = sl_usbd_msc_scsi_init(); əgər (status ! SL_STATUS_OK) { /* Xəta baş verdi. Səhvlərin idarə edilməsi buraya əlavə edilməlidir. */
}
Cihazınıza USB Cihazı MSC SCSI Sinif Nümunəsinin əlavə edilməsi
MSC SCSI sinif funksionallığını cihazınıza əlavə etmək üçün əvvəlcə nümunə yaradın, sonra onu cihazınızın konfiqurasiyasına əlavə edin. Nümunənizə ən azı bir məntiqi vahid əlavə etməlisiniz.
MSC SCSI Sinif Nümunəsinin yaradılması
sl_usbd_msc_scsi_create_instance() funksiyasına zəng edərək MSC SCSI sinif nümunəsi yaradın.
keçmişample aşağıda defolt arqumentlərdən istifadə edərək sl_usbd_msc_scsi_create_instance() necə çağırılacağını göstərir. sl_usbd_msc_scsi_create_instance() -a keçmək üçün konfiqurasiya arqumentləri haqqında ətraflı məlumat üçün USB Cihazı MSC Sinif Tətbiq Xüsusi Konfiqurasiyalarına baxın.
Example – sl_usbd_ msc_scsi_create_instance() çağırılır
Copyright © 2025 Silicon Laboratories. Bütün hüquqlar qorunur.
47/174
Bitdiview
uint8_t class_nbr; sl_status_t statusu;
sl_usbd_msc_scsi_callbacks_t app_usbd_msc_scsi_callbacks = { .enable = NULL, .disable = NULL, .host_eject = NULL };
status = sl_usbd_msc_scsi_create_instance(&app_usbd_msc_scsi_callbacks,0 &class_nbr);
əgər (status ! SL_STATUS_OK) { /* Xəta baş verdi. Səhvlərin idarə edilməsi buraya əlavə edilməlidir. */ }
MSC Sinif Nümunəsinin Cihazınızın Konfiqurasiyasına əlavə edilməsi
MSC sinif nümunəsini yaratdıqdan sonra funksiyaya zəng edərək onu konfiqurasiyaya əlavə edə bilərsiniz
sl_usbd_msc_add_to_configuration() .
keçmişampAşağıda standart arqumentlərdən istifadə edərək sl_usbd_msc_scsi_add_to_configuration() funksiyasına necə zəng etmək olar.
Example – sl_usbd_ msc_scsi_add_to_configuration() çağırılır
sl_status_t statusu;
status = sl_usbd_msc_scsi_add_to_configuration(class_nbr,
(1)
config_nbr_fs);
(2)
əgər (status ! SL_STATUS_OK) {
/* Xəta baş verdi. Səhvlərin idarə edilməsi buraya əlavə edilməlidir. */
}
(1) sl_usbd_msc_scsi_create_instance() tərəfindən qaytarılan konfiqurasiyaya əlavə ediləcək sinif nömrəsi. (32) Konfiqurasiya nömrəsi (burada onu Tam Sürətli konfiqurasiyaya əlavə edirik).
USB Cihazı MSC Sinif Məntiqi Vahidin İdarə Edilməsi
Məntiqi Vahidin Əlavə edilməsi Saxlama Vasitəsinin Qoşulması/Ayrılması
Məntiqi Vahidin əlavə edilməsi
MSC SCSI sinif nümunənizə məntiqi vahid əlavə edərkən, o, yaddaş mühitinə (RAMDisk, SD kart, fleş yaddaş və s.) bağlanmalıdır. MSC sinfi yaddaş daşıyıcısı ilə əlaqə saxlamaq üçün yaddaş sürücüsündən istifadə edir. Məntiqi vahidi əlavə edərkən bu sürücü təchiz olunmalıdır.
keçmişample aşağıda sl_usbd_msc_scsi_lun_add() vasitəsilə məntiqi vahidin necə əlavə ediləcəyini göstərir.
Example – sl_usbd_msc_scsi_lun_add() vasitəsilə məntiqi vahidin əlavə edilməsi
Copyright © 2025 Silicon Laboratories. Bütün hüquqlar qorunur.
48/174
Bitdiview
sl_usbd_msc_scsi_lun_t *lu_object_ptr = NULL;
sl_usbd_msc_scsi_lun_info_t lu_info;
sl_status_t
status;
lu_info.sl_usbd_msc_scsi_lun_api_t = &app_usbd_scsi_storage_block_device_api;
lu_info.vendor_id_ptr
= “Silikon Laboratoriyaları”;
lu_info.product_id_ptr
= "cihazı bloklayın, məsələnample”;
lu_info.product_revision_level = 0x1000u;
lu_info.yalnız_oxunur
= yalan;
status = sl_usbd_msc_scsi_lun_add(class_nbr, &lu_info, &lu_object_ptr);
əgər (status ! SL_STATUS_OK) { /* Xəta baş verdi. Səhvlərin idarə edilməsi buraya əlavə edilməlidir. */ }
Saxlama Vasitəsinin Qoşulması/Çökülməsi
Məntiqi vahid əlavə edildikdən sonra, host tərəfdən mövcud olmaq üçün saxlama mühiti əlavə edilməlidir. MSC sinfi yaddaş mühitinin məntiqi vahidə assosiasiyasını idarə etmək üçün iki funksiya təklif edir: sl_usbd_msc_scsi_lun_attach() və sl_usbd_msc_scsi_lun_detach() . Bu funksiyalar sizə lazım olduqda daxil edilmiş proqramdan yenidən giriş əldə etmək üçün yaddaş qurğusunun çıxarılmasını təqlid etməyə imkan verir.
keçmişample aşağıda sl_usbd_msc_scsi_lun_attach() və sl_usbd_msc_scsi_lun_detach() funksiyalarından necə istifadə ediləcəyini göstərir.
Example – Media Əlavəsi/Ayrılması
sl_status_t statusu;
status = sl_usbd_msc_scsi_lun_attach(lu_object_ptr); əgər (status ! SL_STATUS_OK) { /* Xəta baş verdi. Səhvlərin idarə edilməsi buraya əlavə edilməlidir. */
}
…
(1)
status = sl_usbd_msc_scsi_lun_detach(lu_object_ptr); əgər (status ! SL_STATUS_OK) {
/* Xəta baş verdi. Səhvlərin idarə edilməsi buraya əlavə edilməlidir. */
}
…
(2)
status = sl_usbd_msc_scsi_lun_attach(lu_object_ptr) əgər (status ! SL_STATUS_OK) {
/* Xəta baş verdi. Səhvlərin idarə edilməsi buraya əlavə edilməlidir. */
}
…
(3)
(1) Bu andan etibarən, MSC cihazı hosta qoşulubsa, yaddaş mediası əlçatan olur.
(2) MSC cihazı hosta qoşulubsa, media indi əlçatmaz kimi görünəcək. Bu anda daxili tətbiqdən media üzərində əməliyyatlar edilə bilər.
(3) Yenə də MSC cihazı hosta qoşulubsa, yaddaş mediası qoşulmuş kimi görünəcək.
USB Cihazı MSC Class Yaddaş Sürücüləri
USB Cihazı MSC Class yaddaş mühiti ilə əlaqə saxlamaq üçün yaddaş sürücüsünə ehtiyac duyur. Hazırda Silicon Labs sürücülər təklif etmir.
Copyright © 2025 Silicon Laboratories. Bütün hüquqlar qorunur.
49/174
Bitdiview
TPY aa o sürücü AI typedef sl_usbd_msc_scsi_lun_api_t tərəfindən müəyyən edilir. bizim sl_usbd_msc_scsi_lun_api_t v ri ble aaaaaaaa sizin sl_usbd_msc_scsi_lun_info_t v rible, p ssed s arqumentinə daxil edilməlidir, siz sl_usbd_msd_m ilə məntiqi l vahidi dd sl_usbd_msd_) Strukturlar haqqında ətraflı məlumat üçün USB Cihazı MSC SCSI API bölməsinə baxın. Saxlama sürücüsünün tətbiqi RAM-da bir sıra sektorlar qədər sadə ola bilər. Tipik sektor ölçüsü (yəni blok ölçüsü) kütləvi saxlama cihazları üçün 512, CD-ROM-lar üçün isə 2048-dir.
Copyright © 2025 Silicon Laboratories. Bütün hüquqlar qorunur.
50/174
Bitdiview
Bitdiview
USB Cihaz Satıcı Sinfi
USB Cihaz Satıcı Sinfi Bitdiview Əsas USB Cihazı Satıcı Sinfi Resurs Ehtiyacları USB Cihazı Təchizatçı Sinfi Konfiqurasiyası USB Cihazı Satıcı Sinfi Proqramlaşdırma Bələdçisi Satıcı sinfi sizə mülkiyyət protokolunu həyata keçirə bilən satıcı üçün xüsusi qurğular yaratmağa imkan verir. O, host və cihaz arasında məlumat ötürmək üçün bir cüt toplu son nöqtəyə əsaslanır. Kütləvi köçürmələr böyük həcmdə strukturlaşdırılmamış məlumatların ötürülməsi üçün əlverişlidir və xətanın aşkarlanması və təkrar cəhd mexanizmindən istifadə etməklə etibarlı məlumat mübadiləsini təmin edir. Kütləvi son nöqtələrə əlavə olaraq, Vendor sinfi əlavə kəsmə son nöqtələrindən də istifadə edə bilər. İstənilən əməliyyat sistemi (ƏS) Vendor sinfi ilə işləyə bilər, bir şərtlə ki, ƏS-də Vendor sinfini idarə etmək üçün bir sürücü var. ƏS-dən asılı olaraq, sürücü yerli və ya satıcıya məxsus ola bilər. Məsələn, Microsoft Windows® altında tətbiqiniz satıcı cihazı ilə əlaqə saxlamaq üçün Microsoft tərəfindən təmin edilən WinUSB sürücüsü ilə qarşılıqlı əlaqədə olur.
USB Cihaz Satıcı Sinfi Bitdiview
Şəkil – Windows Host və Satıcı Sinfi Arasında Ümumi Arxitektura Satıcı sinifindən istifadə edərək host və cihaz arasındakı ümumi arxitekturanı göstərir. Bu keçmişdəample, əsas əməliyyat sistemi MS Windows-dur.
Şəkil – MS Windows Host və Satıcı Sinfi Arasında Ümumi Arxitektura
MS Windows tərəfində proqram USB kitabxanası ilə əlaqə quraraq satıcı cihazı ilə əlaqə saxlayır. Kitabxanalar, libusb kimi, cihazı və onunla əlaqəli boruları idarə etmək və idarəetmə, toplu və kəsmə son nöqtələri vasitəsilə cihazla əlaqə yaratmaq üçün API təklif edir.
Cihaz tərəfində Vendor sinfi aşağıdakı son nöqtələrdən ibarətdir:
Bir cüt nəzarət IN və OUT son nöqtələri standart son nöqtə adlanır. Bir cüt toplu GİRİŞ və ÇIXIŞ son nöqtələri.
Copyright © 2025 Silicon Laboratories. Bütün hüquqlar qorunur.
51/174
Bitdiview
Bir cüt kəsmə IN və OUT son nöqtələri. Bu cüt isteğe bağlıdır. Aşağıdakı cədvəl müxtəlif son nöqtələrin istifadəsini göstərir:
Cədvəl – Satıcı sinfinin son nöqtələrinin istifadəsi
Son nöqtə istiqaməti
Nəzarət IN
Nəzarət
OUT
Toplu IN
Cihaz-host
>Host-todevice
Cihaz-host
Yığma ÇIXARIŞ
Interrupt IN
kəsmək
OUT
Host-todevice
Cihaz-host
Host-todevice
İstifadəsi
Sadalama üçün standart sorğular və satıcıya xas sorğular.
Sadalama üçün standart sorğular və satıcıya xas sorğular.
Xam məlumat rabitəsi. Məlumatlar mülkiyyət protokoluna uyğun olaraq strukturlaşdırıla bilər.
Xam məlumat rabitəsi. Məlumatlar mülkiyyət protokoluna uyğun olaraq strukturlaşdırıla bilər.
Xam məlumat rabitəsi və ya bildiriş. Məlumatlar mülkiyyət protokoluna uyğun olaraq strukturlaşdırıla bilər. Xam məlumat rabitəsi və ya bildiriş. Məlumatlar mülkiyyət protokoluna uyğun olaraq strukturlaşdırıla bilər.
Cihaz proqramı hosta və ya hostdan məlumat göndərmək və ya qəbul etmək üçün toplu və kəsmə son nöqtələrindən istifadə edə bilər. O, yalnız ev sahibi tərəfindən göndərilən satıcıya məxsus sorğuları deşifrə etmək üçün standart son nöqtədən istifadə edə bilər. Standart sorğular Silicon Labs USB Cihazının Əsas təbəqəsi tərəfindən daxili olaraq idarə olunur.
Core-dan USB Cihaz Satıcı Sinfi Resurs Ehtiyacları
Hər dəfə sl_usbd_vendor_add_to_configuration() funksiyası vasitəsilə konfiqurasiyaya təchizatçı sinfinin nümunəsini əlavə etdikdə, aşağıdakı resurslar əsasdan ayrılacaq.
Resurs
İnterfeyslər Alternativ interfeyslər Son nöqtələr İnterfeys qrupları
Kəmiyyət
1 1 2 (kesinti son nöqtələrini aktiv etmisinizsə 4) 0
Qeyd edək ki, bu nömrələr konfiqurasiyaya uyğundur. SL_USBD_INTERFACE_QUANTITY , SL_USBD_ALT_INTERFACE_QUANTITY , SL_USBD_INTERFACE_GROUP_QUANTITY və SL_USBD_DESCRIPTOR_QUANTITY konfiqurasiya dəyərlərinizi qurarkən, sinfin neçə konfiqurasiya əlavə ediləcəyini nəzərə almağı unutmayın. SL_USBD_OPEN_ENDPOINTS_QUANTITY konfiqurasiya dəyəri üçün son nöqtələr yalnız konfiqurasiya host tərəfindən təyin edildikdə açıldığı üçün siz sadəcə olaraq sinif nümunəsi üçün lazım olan son nöqtələrin sayını nəzərə almalısınız.
USB Cihaz Satıcı Sinfi Konfiqurasiyası
Vendor sinfini konfiqurasiya etmək üçün iki qrup konfiqurasiya parametrləri istifadə olunur:
USB Cihaz Satıcı Sinfi Tətbiqə Xüsusi Konfiqurasiyalar USB Cihaz Satıcı Sinfi Nümunə Konfiqurasiyaları
USB Cihaz Satıcı Sinfi Tətbiqə Xüsusi Konfiqurasiyalar
Birincisi, Silicon Labs USB cihazı Təchizatçı sinif modulundan istifadə etmək üçün Tətbiq ehtiyaclarınıza uyğun olaraq Satıcı tərtib etmə vaxtı konfiqurasiyasını tənzimləyin. Onlar sl_usbd_core_config.h başlığında yenidən qruplaşdırılıblar file Satıcı bölməsi altında. Kəmiyyət konfiqurasiyalarının məqsədi USB cihaz modulunu neçə USB Vendor obyektinin ayrılması barədə məlumatlandırmaqdır.
Aşağıdakı cədvəl hər bir konfiqurasiyanı təsvir edir.
Copyright © 2025 Silicon Laboratories. Bütün hüquqlar qorunur.
52/174
Bitdiview
Cədvəl – USB Cihaz Satıcı Konfiqurasiyasını Müəyyən edir
Konfiqurasiya Adı
Təsvir
Defolt Dəyər
SL_USBD_VENDOR_CLASS_INSTANCE_QUANTITY sl_usbd_vendor_create_instance() 2 funksiyasına zəng vasitəsilə ayıracağınız sinif nümunələrinin sayı.
SL_USBD_VENDOR_CONFIGURATION_QUANTITY Konfiqurasiyaların sayı. Vendor sinfi nümunələri sl_usbd_vendor_add_to_configuration() funksiyasına zəng vasitəsilə bir və ya daha çox konfiqurasiyaya əlavə edilə bilər.
USB Cihaz Satıcı Sinfi Nümunə Konfiqurasiyaları
Bu bölmə Vendor sinif nümunələri ilə əlaqəli konfiqurasiyaları müəyyən edir.
Sinif Nümunəsinin yaradılması intr_en interval p_vendor_callbacks
Sinif Nümunəsinin Yaradılması
Vendor sinfinin nümunəsinin yaradılması aşağıda təsvir olunan üç konfiqurasiya arqumentini götürən sl_usbd_vendor_create_instance() funksiyasına zəng etməklə həyata keçirilir.
intr_en
Bir cüt kəsmə son nöqtəsinin əlavə edilib-edilmədiyini göstərən mantiq.
Dəyər
doğru yalan
Təsvir
Bir cüt IN/OUT son nöqtəsi əlavə olunacaq və quraşdırılmış proqrama təqdim ediləcək. Heç bir kəsmə nöqtəsi əlavə edilməyəcək. Yalnız bir cüt Toplu IN/OUT son nöqtəsi mövcud olacaq.
interval
Əgər siz intr_en-i doğru olaraq təyin etsəniz, kəsmə son nöqtələrinin sorğu intervalını (millisaniyələrlə) təyin edə bilərsiniz. Əgər intr_en-i false olaraq təyin etsəniz, intervalı 0-a təyin edə bilərsiniz, çünki bu, sinif tərəfindən nəzərə alınmayacaq.
p_vendor_callbacks
p_vendor_callbacks geri çağırış funksiyalarının struktur dəyişəninə göstəricidir. ki, siz sinfə xüsusi nəzarət sorğularını idarə etmək üçün təyin edə bilərsiniz. Əgər siz heç bir sinfə aid sorğulardan istifadə etmirsinizsə və ya bildirişi aktivləşdirmək/deaktiv etmək lazımdırsa, bunu NULL olaraq təyin edə bilərsiniz.
keçmişample aşağıda sinifə xüsusi sorğu işləyicinizin gözlənilən imzasını təqdim edir.
Example – Sinfi Xüsusi Sorğu Funksiyasının İmzası
app_usbd_vendor_req_handle (uint8_t
sinif_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) Satıcı sinfinin nümunə nömrəsi.
Copyright © 2025 Silicon Laboratories. Bütün hüquqlar qorunur.
53/174
Bitdiview
(2) Hostdan qəbul edilmiş quraşdırma sorğusuna göstərici.
USB Cihaz Satıcısı Sinif Proqramlaşdırma Bələdçisi
Bu bölmə Vendor sinfindən necə istifadə olunacağını izah edir. USB Cihaz Satıcı Sinifinin işə salınması Cihazınıza USB Cihaz Satıcı Sinfi Nümunəsinin əlavə edilməsi USB Cihaz Satıcı Sinifindən istifadə etməklə əlaqə
USB Cihaz Satıcı Sinifinin işə salınması
Cihazınıza Vendor Class funksionallığı əlavə etmək üçün əvvəlcə USBD_Vendor_Init() funksiyasına zəng edərək sinfi işə salın. keçmişample aşağıda sl_usbd_vendor_init()-ə necə zəng etmək olar.
Example – sl_usbd_vendor_init() çağırılır
sl_status_t statusu;
status = sl_usbd_vendor_init(); əgər (status ! SL_STATUS_OK) { /* Xəta baş verdi. Səhvlərin idarə edilməsi buraya əlavə edilməlidir. */ }
Cihazınıza USB Cihaz Satıcı Sinfi Nümunəsinin əlavə edilməsi
Cihazınıza təchizatçı sinfi funksionallığı əlavə etmək üçün əvvəlcə nümunə yaratmalı, sonra onu cihazınızın konfiqurasiyasına əlavə etməlisiniz.
Təchizatçı Sinfi Nümunəsinin Yaradılması Satıcı Sinfi Nümunəsinin Cihazınızın Konfiqurasiya(lar)ına əlavə edilməsi
Satıcı Sinfi Nümunəsinin yaradılması
sl_usbd_vendor_create_instance() funksiyasına zəng edərək Vendor sinif nümunəsi yaradın. keçmişample aşağıda defolt arqumentlərdən istifadə edərək sl_usbd_vendor_create_instance()-a necə zəng etmək olar. sl_usbd_vendor_create_instance() -a keçmək üçün konfiqurasiya arqumentləri haqqında ətraflı məlumat üçün USB Cihaz Satıcı Sinfi Nümunə Konfiqurasiyalarına baxın.
Example – sl_usbd_vendor_create_instance() çağırılır
uint8_t class_nbr; sl_status_t statusu;
status = sl_usbd_vendor_create_instance(yanlış,
(1)
0u,
(2)
app_usbd_vendor_callback_funksiyaları, (3)
&class_nbr);
əgər (status ! SL_STATUS_OK) {
/* Xəta baş verdi. Səhvlərin idarə edilməsi buraya əlavə edilməlidir. */
}
(1) Bu sinif nümunəsi ilə kəsilmənin son nöqtələri yoxdur. (2) Interrupt son nöqtələri qeyri-aktiv edildiyi üçün interval nəzərə alınmır.
Copyright © 2025 Silicon Laboratories. Bütün hüquqlar qorunur.
54/174
Bitdiview
(3) Tətbiqinizin bir hissəsi olan geri çağırış funksiyası, satıcıya məxsus sinif sorğularını idarə edir. Ətraflı məlumat üçün USB Cihaz Təchizatçı Sinifindən istifadə etməklə əlaqə yaratmağa baxın. Təchizatçı Sinfi Nümunəsinin Cihazınızın Konfiqurasiya(lar)ına əlavə edilməsi Təchizatçı sinfi nümunəsini yaratdıqdan sonra USBD_Vendor_ConfigAdd() funksiyasına zəng edərək onu konfiqurasiyaya əlavə edə bilərsiniz. keçmişampAşağıda defolt arqumentlərdən istifadə edərək sl_usbd_vendor_add_to_configuration() funksiyasına necə zəng etmək olar.
Example – sl_usbd_vendor_add_to_configuration() çağırılır
sl_status_t statusu;
status = sl_usbd_vendor_add_to_configuration(class_nbr,
(1)
config_nbr_fs);
(2)
əgər (status ! SL_STATUS_OK) {
/* Xəta baş verdi. Səhvlərin idarə edilməsi buraya əlavə edilməlidir. */
}
(1) sl_usbd_vendor_create_instance() tərəfindən qaytarılan konfiqurasiyaya əlavə ediləcək sinif nömrəsi. (2) Konfiqurasiya nömrəsi (burada onu Tam Sürətli konfiqurasiyaya əlavə edirik).
USB Cihaz Satıcı Sinifindən istifadə etməklə əlaqə
Ümumi Sinxron Rabitə Asinxron Ünsiyyət Təchizatçı Sorğu Ümumi Vendor sinfi ev sahibi ilə əlaqə saxlamaq üçün aşağıdakı funksiyaları təklif edir. Funksiya parametrləri haqqında ətraflı məlumat üçün USB Device Vendor API-ə baxın.
Cədvəl – Təchizatçı Əlaqə API Xülasəsi
Funksiya adı
sl_usb d _v e nd o r_ re ad _b ulk_sy nc() sl_usb d _v e nd o r_write _b ulk_sy nc() sl_usb d _v e nd o r_ re ad _b ulk_asy ncus() _ndr o _s _b ulk_asy nc() sl_usb d _v e nd o r_ re ad _inte rrup t_sy nc() sl_usb d _v e nd o r_write _inte rrup t_sy nc() sl_usb d _v re adrup _ast _in
()
sl_usb d _v e nd o r_write _inte rrup t_asy nc
()
Əməliyyat Hostdan toplu OUT son nöqtəsi vasitəsilə məlumatları qəbul edir. Bu funksiya bloklanır. Məlumatları toplu IN son nöqtəsi vasitəsilə hosta göndərir. Bu funksiya bloklanır. Əsas OUT son nöqtəsi vasitəsilə məlumatları qəbul edir. Bu funksiya bloklanmır. Məlumatları toplu IN son nöqtəsi vasitəsilə hosta göndərir. Bu funksiya bloklanmır. Kəsmə OUT son nöqtəsi vasitəsilə hostdan məlumat alır. Bu funksiya bloklanır. Interrupt IN son nöqtəsi vasitəsilə məlumatı hosta göndərir. Bu funksiya bloklanır. Kəsmə OUT son nöqtəsi vasitəsilə hostdan məlumat alır. Bu funksiya qeyri-
bloklama.
Interrupt IN son nöqtəsi vasitəsilə məlumatı hosta göndərir. Bu funksiya bloklanmır.
Satıcı sorğuları da ev sahibi ilə ünsiyyət qurmağın başqa bir yoludur. Ev sahibi tərəfindən göndərilən satıcı sorğularını idarə edərkən, proqram nəzarət son nöqtəsindən istifadə edərək hostdan məlumat ala və ya göndərə bilər; sl_usbd_vendor_create_instance() parametri kimi qəbul edilmiş proqram geri çağırışını təqdim etməlisiniz. Sinxron Rabitə
Copyright © 2025 Silicon Laboratories. Bütün hüquqlar qorunur.
55/174
Bitdiview
Sinxron rabitə o deməkdir ki, ötürmə bloklanır. Funksiya çağırıldıqda, proqram xəta ilə və ya xətasız köçürmə tamamlanana qədər bloklanır. Əbədi gözləməkdən qaçınmaq üçün vaxt aşımı təyin edilə bilər. keçmişample aşağıda toplu OUT son nöqtəsindən istifadə edərək hostdan məlumatları qəbul edən və toplu GİRİŞ son nöqtəsindən istifadə edərək məlumatları hosta göndərən oxu və yazını göstərir.
Example - Sinxron Toplu Oxu və Yaz
__ALGNED(4) uint8_t rx_buf[2];
__ALGNED(4) uint8_t tx_buf[2];
uint32_t
xfer_len;
sl_status_t
status;
status = sl_usbd_vendor_read_bulk_sync(class_nbr,
(1)
(void *)&rx_buf[0],
(2)
2u,
0u,
(3)
&xfer_len);
əgər (status ! SL_STATUS_OK) {
/* $$$$ Xətanı idarə edin. */
}
status = sl_usbd_vendor_write_bulk_sync(class_nbr,
(1)
(void *)&tx_buf[0],
(4)
2u,
0u,
(3)
yalan,
(5)
&xfer_len);
əgər (status ! SL_STATUS_OK) {
/* $$$$ Xətanı idarə edin. */
}
(1) sl_usbd_vendor_create_instance() ilə yaradılmış sinif nümunəsi nömrəsi köçürməni müvafiq toplu OUT və ya IN son nöqtəsinə yönləndirmək üçün Vendor sinfinə daxili istinad təmin edir.
(2) Tətbiq funksiyaya verilən buferin bütün məlumatları yerləşdirmək üçün kifayət qədər böyük olmasını təmin etməlidir. Əks halda, sinxronizasiya problemləri yarana bilər.
(3) Sonsuz bloklama vəziyyətindən qaçmaq üçün, millisaniyələrlə ifadə olunan vaxt aşımı təyin edilə bilər. 809 dəyəri tətbiq tapşırığını əbədi olaraq gözləməyə məcbur edir.
(4) Tətbiq işə salınmış ötürmə buferini təmin edir.
(5) Bu bayraq true olaraq təyin edilərsə və ötürmə uzunluğu son nöqtənin maksimum paket ölçüsündən çox olarsa, cihaz yığını ötürmənin bitdiyini bildirmək üçün hosta sıfır uzunluqda paket göndərəcək.
sl_usbd_vendor_read_interrupt_sync() və sl_usbd_vendor_write_interrupt_sync() kəsilmənin son nöqtəsi rabitə funksiyalarının istifadəsi Ex-də təqdim olunan toplu son nöqtə rabitə funksiyalarına bənzəyir.ample - Sinxron Toplu Oxu və Yaz.
Asinxron Rabitə
Asinxron rabitə, ötürmənin bloklanmaması deməkdir. Funksiya çağırıldıqda, proqram ötürmə məlumatını cihaz yığınına ötürür və bloklamır. Digər proqramların işlənməsi USB avtobusu üzərindən köçürmə davam edərkən edilə bilər. Köçürmə başa çatdıqdan sonra, köçürmənin başa çatması barədə proqrama məlumat vermək üçün cihaz yığını tərəfindən geri çağırış funksiyası çağırılır. keçmişample aşağıda asinxron oxumaq və yazmaq göstərilir.
Example - Asinxron Toplu Oxu və Yaz
Copyright © 2025 Silicon Laboratories. Bütün hüquqlar qorunur.
56/174
Bitdiview
etibarsız app_usbd_vendor_comm (uint8_t class_nbr)
{
__ALGNED(4) uint8_t rx_buf[2];
__ALGNED(4) uint8_t tx_buf[2];
sl_status_t
status;
status = sl_usbd_vendor_read_bulk_async(class_nbr,
(void *)&rx_buf[0],
(2)
2u,
app_usbd_vendor_rx_tamamlandı,
NULL);
(4)
əgər (status ! SL_STATUS_OK) {
/* $$$$ Xətanı idarə edin. */
}
status = sl_usbd_vendor_write_bulk_async(class_nbr,
(void *)&tx_buf[0],
(5)
2u,
app_usbd_vendor_tx_completed,
SIFIR,
(4)
false);
(6)
əgər (status ! SL_STATUS_OK) {
/* $$$$ Xətanı idarə edin. */
}
}
(1) (3)
(1) (3)
static void app_usbd_vendor_rx_completed(uint8_t class_nbr,
(3)
void *p_buf,
uint32_t buf_len,
uint32_t xfer_len,
void *p_callback_arg,
sl_status_t status)
{
əgər (status ! SL_STATUS_OK) {
/* $$$$ Do some processing. */
} başqa {
/* $$$$ Xətanı idarə edin. */
}
}
static void app_usbd_vendor_tx_completed(uint8_t class_nbr,
(3)
void *p_buf,
uint32_t buf_len,
uint32_t xfer_len,
void *p_callback_arg,
sl_status_t status)
{
əgər (status ! SL_STATUS_OK) {
/* $$$$ Do some processing. */
} başqa {
/* $$$$ Xətanı idarə edin. */
}
}
(1) The class instance number provides an internal reference to the Vendor class to route the transfer to the proper bulk OUT or IN endpoint. (2) The application must ensure that the buffer provided is large enough to accommodate all the data. Otherwise, there may be synchronization issues. (3) The application provides a callback function pointer passed as a parameter. Upon completion of the transfer, the device stack calls this callback function so that the application can finalize the transfer by analyzing the transfer result. For instance, on completion of a read operation, the application might perform processing on the received data. Upon write completion, the application can indicate if the write was successful and how many bytes were sent.
Copyright © 2025 Silicon Laboratories. Bütün hüquqlar qorunur.
57/174
Bitdiview
(4) An argument associated with the callback can be also passed. Then in the callback context, some private information can be retrieved. (5) The application provides the initialized transmit buffer. (6) If this flag is set to true , and the transfer length is a multiple of the endpoint maximum packet size, the device stack will send a zero-length packet to the host to signal the end of transfer. The use of interrupt endpoint communication functions, sl_usbd_vendor_read_interrupt_async() and sl_usbd_vendor_write_interrupt_async() , is similar to the bulk endpoint communication functions presented in Example Asynchronous Bulk Read and Write.
Vendor Request
The USB 2.0 specification defines three types of requests: standard, class, and vendor. All standard requests are handled directly by the core layer, while class requests are managed by the proper associated class. Vendor requests can be processed by the vendor class. To process vendor requests, you must provide an application callback as a parameter of sl_usbd_vendor_create_instance() . After a vendor request is received by the USB device, it must be decoded properly. The example below shows vendor request decoding. Certain requests may be required to receive from or send to the host during the data stage of a control transfer. If no data stage is present, you only have to decode the Setup packet. This example shows the three types of data stage management: no data, data OUT and data IN.
Example – Vendor Request Decoding
Copyright © 2025 Silicon Laboratories. Bütün hüquqlar qorunur.
58/174
Bitdiview
#define APP_VENDOR_REQ_NO_DATA
0x01u
#define APP_VENDOR_REQ_RECEIVE_DATA_FROM_HOST 0x02u
#define APP_VENDOR_REQ_SEND_DATA_TO_HOST 0x03u
#define APP_VENDOR_REQ_DATA_BUF_SIZE
50u
static uint8_t app_vendor_req_buf[APP_VENDOR_REQ_DATA_BUF_SIZE];
static bool app_usbd_vendor_req (uint8_t
class_nbr,
const sl_usbd_setup_req_t *p_setup_req)
(1)
{
bool valid;
sl_status_t statusu;
uint16_t req_len;
uint32_t xfer_len;
(void)class_nbr;
switch(p_setup_req->bRequest) { case APP_VENDOR_REQ_NO_DATA: valid = true; break;
(2) (3)
case APP_VENDOR_REQ_RECEIVE_DATA_FROM_HOST:
(4)
req_len = p_setup_req->wLength;
if (req_len > APP_VENDOR_REQ_DATA_BUF_SIZE) {
// Not enough room to receive data.
return (false);
}
// Receive data via Control OUT EP. // Wait transfer completion forever. status = sl_usbd_core_read_control_sync((void *)&app_vendor_req_buf[0u],
req_len, 0u, &xfer_len); if (status ! SL_STATUS_OK) { valid = false; } else { valid = true; } break;
case APP_VENDOR_REQ_SEND_DATA_TO_HOST:
(5)
req_len = APP_VENDOR_REQ_DATA_BUF_SIZE;
// Fill buf with a pattern. Mem_Set((void *)&AppVendorReqBuf[0u],
'A',
req_len);
// Send data via Control IN EP. // Wait transfer completion forever. status = sl_usbd_core_write_control_sync((void *)&app_vendor_req_buf[0u],
req_len, 0u, false, &xfer_len); if (status ! SL_STATUS_OK) { valid = DEF_FAIL; } else { valid = DEF_OK; } break;
defolt:
(6)
// Request is not supported.
Copyright © 2025 Silicon Laboratories. Bütün hüquqlar qorunur.
59/174
Bitdiview
valid =true;break;
case APP_VENDOR_REQ_RECEIVE_DATA_FROM_HOST:(4) req_len = p_setup_req->wLength;if(req_len > APP_VENDOR_REQ_DATA_BUF_SIZE){// Not enough room to receive data.return(false);}// Receive data via Control OUT EP.// Wait transfer completion forever. status =sl_usbd_core_read_control_sync((void *)&app_vendor_req_buf[0u],
req_len,0u,&xfer_len);if(status ! SL_STATUS_OK){ valid =false;}else{ valid =true;}break;
case APP_VENDOR_REQ_SEND_DATA_TO_HOST:(5) req_len = APP_VENDOR_REQ_DATA_BUF_SIZE;// Fill buf with a pattern.Mem_Set((void *)&AppVendorReqBuf[0u],’A’,
req_len);// Send data via Control IN EP.// Wait transfer completion forever. status =sl_usbd_core_write_control_sync((void *)&app_vendor_req_buf[0u],
req_len,0u,false,&xfer_len);if(status ! SL_STATUS_OK){ valid = DEF_FAIL;}else{ valid = DEF_OK;}break;
default:(6)// Request is not supported. valid = DEF_FAIL;break;}return(valid);}
(1) The core will pass the Setup packet content to your application. The structure sl_usbd_setup_req_t contains the same fields as defined by the USB 2.0 specification (refer to section “9.3 USB Device Requests” of the specification for more details):
typedef strukturu {
uint8_t bmRequestType; /* Characteristics of request.
*/
uint8_t bRequest; /* Specific request.
*/
uint16_t wValue; /* Varies according to request.
*/
uint16_t wIndex; /* Varies according to request; typically used as index.*/
uint16_t wLength; /* Transfer length if data stage indiki.
*/
} sl_usbd_setup_req_t;
(2) Determine the request. You may use a switch statement if you are using different requests. In this example, there are three different requests corresponding to the three types of the data stage: APP_VENDOR_REQ_NO_DATA, APP_VENDOR_REQ_RECEIVE_DATA_FROM_HOST, and APP_VENDOR_REQ_SEND_DATA_TO_HOST.
(3) If no data stage is present, you only need to decode the other fields. The presence of a data stage or not is indicated by the field wLength being non-null or null.
(4) If the host sends data to the device, you must call the function sl_usbd_core_read_control_sync() . The buffer provided should be able to contain up to wLength bytes. If any error occurs, return false to the core that will stall the status stage of the control transfer, indicating to the host that the request cannot be processed. true is returned in case of success.
(5) If the host receives data from the device, you must call the function sl_usbd_core_write_control_sync() . If any error occurs, return false to the core that will stall the status stage of the control transfer, indicating to the host that the request cannot be processed. true is returned in case of success.
(6) In this example, all requests not recognized are marked by returning false to the core. This one will stall the data or status stage of the control transfer indicating to the host that the request is not supported.
The host sends vendor requests through a host vendor application. USb libraries, such as libusb, can be used to help you develop your custom host vendor application.
Copyright © 2025 Silicon Laboratories. Bütün hüquqlar qorunur.
60/174
API Sənədləri
API Sənədləri
API Sənədləri
Modulların siyahısı
USB Device API USB Device ACM API USB Device CDC API USB Device Core API USB Device HID API USB Device MSC API USB Device MSC SCSI API USB Device Vendor API
Təsvir
USB Device API USB Device ACM API USB Device CDC API USB Device Core API USB Device HID API USB Device MSC API USB Device MSC SCSI API USB Device Vendor API
Copyright © 2025 Silicon Laboratories. Bütün hüquqlar qorunur.
61/174
USB Device API
USB Device API
USB Device API
USB Device API.
Modullar
USB Device ACM API USB Device CDC API USB Device Core API USB Device HID API USB Device MSC API USB Device MSC SCSI API USB Device Vendor API
Copyright © 2025 Silicon Laboratories. Bütün hüquqlar qorunur.
62/174
USB Device ACM API
USB Device ACM API
USB Device ACM API
USB Device CDC ACM API.
Modullar
a sl_usbd_cdc_ cm_line_coding_t sl_usbd_cdc_acm_callbacks_t
Funksiyalar
sl_status_t sl_status_t
sl_status_t sl_status_t sl_status_t
sl_status_t
sl_status_t
sl_status_t
sl_status_t sl_status_t sl_status_t sl_status_t sl_status_t
a sl_usbd_cdc_ cm_init(void)
GLOBAL VARIABLES.
ssll__uussbbdd__ccddcc__aaccmm__ccraellabtaec_kins_stta*npc_ea(cumin_tc1a6l_lbtalicnkes_,sutaintte8__int t*eprv_saul,bucinlats1s6__nt bcra)ll_mgmt_capabilities,
Add a new instance of the CDC ACM serial emulation subclass.
a a a a sl_usbd_cdc_ cm_ dd_to_configur tion(uint8_t subcl ss_nbr, uint8_t config_nbr)
Add a CDC ACM subclass class instance into USB device configuration.
a a sl_usbd_cdc_ cm_is_en bled(uint8_t subclass_nbr, bool *p_enabled)
Get the CDC ACM serial emulation subclass enable state.
a a a sl_usbd_cdc_ cm_re d(uint8_t subcl ss_nbr, uint8_t *p_buf, uint32_t buf_len, uint16_t timeout, uint32_t
*p_xfer_len) Receive data on the CDC ACM serial emulation subclass.
a a a a sl_usbd_cdc_ cm_re d_ sync(uint8_t subcl ss_nbr, uint8_t *p_buf, uint32_t buf_len, a a a a sl_usbd_cdc_ sync_function_t sync_fnct, void *p_ sync_ rg)
Receive data on the CDC ACM serial emulation subclass asynchronously.
a a sl_usbd_cdc_ cm_write(uint8_t subcl ss_nbr, uint8_t *p_buf, uint32_t buf_len, uint16_t timeout, uint32_t
*p_xfer_len) Send data on the CDC ACM serial emulation subclass.
a a a sl_usbd_cdc_ cm_write_ sync(uint8_t subcl ss_nbr, uint8_t *p_buf, uint32_t buf_len, a a a a sl_usbd_cdc_ sync_function_t sync_fnct, void *p_ sync_ rg)
Send data on the CDC ACM serial emulation subclass asynchronously.
a a a sl_usbd_cdc_ cm_get_line_control_st te(uint8_t subcl ss_nbr, uint8_t *p_line_ctrl)
Return the state of control lines.
a a a sl_usbd_cdc_ cm_get_line_coding(uint8_t subcl ss_nbr, sl_usbd_cdc_ cm_line_coding_t *p_line_coding)
Get the current state of the line coding.
a a a sl_usbd_cdc_ cm_set_line_coding(uint8_t subcl ss_nbr, sl_usbd_cdc_ cm_line_coding_t *p_line_coding)
Set a new line coding.
a a a sl_usbd_cdc_ cm_set_line_st te_event(uint8_t subcl ss_nbr, uint8_t events)
Set a line state event(s).
a a a a sl_usbd_cdc_ cm_cle r_line_st te_event(uint8_t subcl ss_nbr, uint8_t events)
Clear a line state event(s).
Copyright © 2025 Silicon Laboratories. Bütün hüquqlar qorunur.
63/174
USB Device ACM API
Makrolar
#define SL_USBD_CDC_ACM_NBR_NONE 255u
MODÜL.
#define SL_USBD_CDC_ACM_PARITY_NONE 0u
PORT SETTINGS DEFINES.
#define SL_USBD_CDC_ACM_PARITY_ODD 1u #define SL_USBD_CDC_ACM_PARITY_EVEN 2u #define SL_USBD_CDC_ACM_PARITY_MARK 3u #define SL_USBD_CDC_ACM_PARITY_SPACE 4u #define SL_USBD_CDC_ACM_STOP_BIT_1 0u #define SL_USBD_CDC_ACM_STOP_BIT_1_5 1u #define SL_USBD_CDC_ACM_STOP_BIT_2 2u #define SL_USBD_CDC_ACM_CTRL_BREAK 0 01u
LINE EVENTS FLAGS DEFINES.
#define SL_USBD_CDC_ACM_CTRL_RTS 0 02u #define SL_USBD_CDC_ACM_CTRL_DTR 0 04u #define SL_USBD_CDC_ACM_STATE_DCD 0 01u #define SL_USBD_CDC_ACM_STATE_DSR 0 02u #define SL_USBD_CDC_ACM_STATE_BREAK 0 04u #define SL_USBD_CDC_ACM_STATE_RING 0 08u #define SL_USBD_CDC_ACM_STATE_FRAMING 0 10u #define SL_USBD_CDC_ACM_STATE_PARITY 0 20u #define SL_USBD_CDC_ACM_STATE_OVERUN 0 40u #define SL_USBD_CDC_ACM_CALL_MGMT_DEV 0 01u
CALL MANAGEMENT CAPABILITIES.
#define SL_USBD_CDC_ACM_CALL_MGMT_DATA_CCI_DCI 0 02u #define SL_USBD_CDC_ACM_CALL_MGMT_DATA_OVER_DCI 0 02u | 0 01u)
Function Documentation
sl_usbd_cdc_acm_init
sl_status_t sl_usbd_cdc_acm_init (void )
GLOBAL VARIABLES. Parameters
Copyright © 2025 Silicon Laboratories. Bütün hüquqlar qorunur.
64/174
USB Device ACM API
Növ
boş
Direction N/A
Argument Name
MACROS GLOBAL CONSTANTS FUNCTION PROTOTYPES CDC ACM FUNCTIONS
Initialize the CDC ACM serial emulation subclass.
Qaytarır
Returns SL_STATUS_OK on success or another SL_STATUS code on failure.
Təsvir
sl_usbd_cdc_acm_create_instance
sl_status_t sl_usbd_cdc_acm_create_instance (uint16_t line_state_interval, uint16_t call_mgmt_capabilities, sl_usbd_cdc_acm_callbacks_t * p_acm_callbacks, uint8_t * p_subclass_nbr)
Add a new instance of the CDC ACM serial emulation subclass.
Parametrlər
Növ
uint16_t
uint16_t
Direction Argument Name
Təsvir
Yoxdur
line_state_interval Line state notification interval in milliseconds (value must
be a power of 2).
Yoxdur
call_mgmt_capabilities Call Management Capabilities bitmap. OR’ed of the
following flags:
SL_USBD_CDC_ACM_CALL_MGMT_DEV Device handles call management itself. SL_USBD_CDC_ACM_CALL_MGMT_DATA_CCI_DCI Device can send/receive call management information over a Data Class interface.
sl_usbd_cdc_acm_callbacks_t N/A
*
uint8_t *
Yoxdur
p_acm_callbacks p_subclass_nbr
Optional pointers to callback functions to be called on various events.
Param to variable that will receive CDC ACM serial emulation subclass instance number.
Qaytarır
Return SL_STATUS_OK on success or another SL_STATUS code on failure.
sl_usbd_cdc_acm_add_to_configuration
sl_status_t sl_usbd_cdc_acm_add_to_configuration (uint8_t subclass_nbr, uint8_t config_nbr)
Add a CDC ACM subclass class instance into USB device configuration.
Parametrlər
Növ
uint8_t uint8_t
Direction N/A N/A
Argument Name
subclass_nbr config_nbr
Description CDC ACM serial emulation subclass instance number. Configuration index to add new test class interface to.
Qaytarır
Copyright © 2025 Silicon Laboratories. Bütün hüquqlar qorunur.
65/174
USB Device ACM API
Returns SL_STATUS_OK on success or another SL_STATUS code on failure.
sl_usbd_cdc_acm_is_enabled
sl_status_t sl_usbd_cdc_acm_is_enabled (uint8_t subclass_nbr, bool * p_enabled)
Get the CDC ACM serial emulation subclass enable state.
Parametrlər
Növ
İstiqamət
Argument Name
Təsvir
uint8_t N/A
subclass_nbr CDC ACM serial emulation subclass instance number.
bool * N/A
p_enabled
Boolean to a variable that will receive enable status. The variable is set to true, CDC ACM serial emulation is enabled. The va
Sənədlər / Resurslar
![]() |
SILICON LABS USB Device Stack [pdf] Təlimat kitabçası USB Device Stack, Device Stack, Stack |