סיליקאָן לאַבס יו-עס-בי דעווייס סטאַק ינסטרוקציע מאַנואַל

יו-עס-בי דעווייס סטאַק

ספּעסאַפאַקיישאַנז

  • וסב ווערסיע: 1.5.1
  • מעלדונג טאָג: יולי 21, 2025
  • סימפּליסיטי SDK ווערסיע: 2025.6.1

פּראָדוקט איבערview

דער USB דעווייס סטאַק פֿון סיליקאָן לאַבס גיט פֿילזײַטיקע און
גרינג-צו-נוצן USB קאַנעקטיוויטי פֿאַר IoT פּראָיעקטן, וואָס פאַסילאַטירט
קאָמוניקאַציע צווישן נעץ קאָ-פּראַסעסערז און האָסץ.

פֿעיִקייטן

  • עפעקטיווער USB מיטל סטאַק
  • אידעאל פֿאַר IoT פּראָיעקטן
  • שטיצע פֿאַר קאָמוניקאַציע צווישן נעץ קאָ-פּראַסעסערז און
    מחנות

פּראָדוקט באַניץ אינסטרוקציעס

USB מיטל קאָנפיגוראַציע

קאָנפיגוריר די USB מיטל סעטטינגס לויט דיין פּראָיעקט
רעקווייערמענץ דורך זיך באציען צו די USB דעווייס קאנפיגוראציע סעקציע
אין דער דאָקומענטאַציע.

יו-עס-בי דעווייס פּראָגראַמיר גייד

פֿאָלגט די USB דעווייס פּראָגראַמיר גייד צו פֿאַרשטיין ווי אַזוי
פּראָגראַם און אינטעראַקט מיט די USB מיטל פֿאַר פֿאַרשיידענע
אַפּלאַקיישאַנז.

יו-עס-בי דעווייס קלאסן

די USB דעווייס קלאסן סעקציע גיט אן איבערבליקview פון פאַרשידענע
קלאַסן ווי CDC ACM, HID, MSC SCSI, און ווענדאָר קלאַס. קלייַבט די
פּאַסיק קלאַס באַזירט אויף דיין מיטל פאַנגקשאַנאַליטי.

טראָובלעשווטינג פון USB דעווייס

אויב איר טרעפט פראבלעמען מיטן USB מיטל, זעט די
USB דעווייס טראָובלעשאָאָטינג סעקציע פֿאַר סאַלושאַנז און דיבאַגינג
עצות.

מייקראָסאָפֿט ווינדאָוז אָפּערירן סיסטעם וסב האָסט

אויב איר ניצט דעם USB מיטל מיט אַ Microsoft Windows אָפּערירן סיסטעם
באַלעבאָס, מאַכט זיכער צו נאָכפאָלגן די גיידליינז וואָס זענען צוגעשטעלט אין די
דאָקומענטאַציע פֿאַר נאָטלאָזער אינטעגראַציע.

FAQ

ק: וואָס זענען עטלעכע פּראָסט עקסampקלענערע דעווייסעס וואָס איך קען בויען מיט
דעם USB סטעק?

א: דער USB סטאַק ערלויבט אייך צו בויען דעווייסעס ווי
USB-צו-סעריאַל אַדאַפּטערס, מײַז אָדער קלאַוויאַטורן, אַרויסנעמבאַרע סטאָרידזש
דעווייסעס, און ספּעציעלע דעווייסעס.

פ: זענען דא עפעס ספעציפישע ווייכווארג רעקווייערמענץ פארן ניצן דעם
USB דעווייס סטאַק?

א: קאָמפּאַטיבלע ווייכווארג כולל סימפּליסיטי SDK, סימפּליסיטי
סטודיאָ, סימפּליסיטי קאַמאַנדער, GCC (די GNU קאָמפּיילער זאַמלונג),
IAR עמבעדיד וואָרקבענטש פֿאַר ARM, און IAR EWARM.

יוניווערסאַל סעריאַל באַס וסב

יוניווערסאַל סעריאַל באַס וסב

יו-עס-בי איבערview איבערview
מעלדונג הערות USB
ספּעציפֿיקאַציעס און פֿעיִקייטן איבערview
USB דעווייס קאָנפיגוראַציע איבערview
USB דעווייס פּראָגראַממינג גייד איבערview
USB דעווייס קלאסן איבערview CDC ACM קלאַס איבערview HID קלאַס איבערview MSC SCSI קלאַס איבערview פארקויפער קלאס איבערview
יו-עס-בי API API דאקומענטאציע יו-עס-בי דעווייס API יו-עס-בי דעווייס ACM API a sl_usbd_cdc_ cm_line_coding_t sl_usbd_cdc_acm_callbacks_t יו-עס-בי דעווייס CDC API a sl_usbd_cdc_subcl ss_driver_t יו-עס-בי דעווייס קאָר API
sl_usbd_device_config_t sl_usbd_setup_req_t
a sl_usbd_cl ss_driver_t USB דעווייס HID API
sl_usbd_hid_callbacks_t USB דעווייס MSC API
a sl_usbd_msc_subcl ss_driver_t USB דעווייס MSC SCSI API
sl_usbd_msc_scsi_callbacks_t

דרוקרעכט © 2025 סיליקאָן לאַבאָראַטאָריעס. אלע רעכטן רעזערווירט.

1/174

יוניווערסאַל סעריאַל באַס וסב
א sl_usbd_msc_scsi_lun_ פּי
sl_usbd_msc_scsi_lun_info sl_usbd_msc_scsi_lun
יו-עס-בי דעווייס פארקויפער API sl_usbd_vendor_callbacks_t
API דאָקומענטאַציע USB מיטל טראָובלעשווטינג
איבערview מייקראָסאָפֿט ווינדאָוז אָפּערירן סיסטעם וסב האָסט
איבערview

דרוקרעכט © 2025 סיליקאָן לאַבאָראַטאָריעס. אלע רעכטן רעזערווירט.

2/174

איבערview
איבערview
וסב דיווייס
USB איז איינע פון ​​די מערסט מצליחדיקע קאָמוניקאַציע אינטערפייסיז אין דער געשיכטע פון ​​קאָמפּיוטער סיסטעמען און איז דער דע פאַקטאָ סטאַנדאַרט פֿאַר פֿאַרבינדן קאָמפּיוטער פּעריפעריאַלס. סיליקאָן לאַבס USB דיווייס סטאַק איז אַ USB דיווייס מאָדול ספּעציעל דיזיינד פֿאַר עמבעדיד סיסטעמען. געבויט פֿון דער ערד אַרויף מיט סיליקאָן לאַבס' קוואַליטעט, סקאַלאַביליטי און רילייאַבילאַטי, איז עס דורכגעגאַנגען אַ שטרענג וואַלידאַציע פּראָצעס צו נאָכקומען מיט די USB 2.0 ספּעסיפיקאַציע. די דאָקומענטאַציע באַשרײַבט ווי צו איניציאַליזירן, אָנהייבן און נוצן סיליקאָן לאַבס USB דיווייס סטאַק. עס דערקלערט די פֿאַרשידענע קאָנפיגוראַציע ווערטן און זייערע נוצן. עס כולל אויך אַן איבערבליק.view פון דער טעכנאָלאָגיע, טיפּן פון קאָנפיגוראַציע מעגלעכקייטן, ימפּלעמענטאַציע פּראָצעדורן, און עקסampטיפּישע באַניץ פֿאַר יעדער פֿאַראַן קלאַס.
כדי צו העלפן אייך שנעל פארשטיין די USB קאנצעפטן, די דאקומענטאציע ווייזט אסאך ביישפילןampטעקעס פון USB מיט גרונטלעכע פונקציעס. די ביישפילןampלעס וועט אייך צושטעלן א פריימווערק וואס ערלויבט אייך שנעל צו בויען דעווייסעס. די ביישפילןampדי אַרייַננעמען:
USB-צו-סעריאַל אַדאַפּטער (קאָמוניקאַציע דעווייס קלאַס) מויז אָדער קלאַוויאַטור (מענטשלעך צובינד דעווייס קלאַס) אַרויסנעמבאַרע סטאָרידזש דעווייס (מאַס סטאָרידזש קלאַס) מנהג דעווייס (פאַרקויפער קלאַס)
די פאלגענדע איז די איבערview פון די דאָקומענטאַציע סעקציעס:
ספּעציפֿיקאַציעס און פֿעיִקייטן USB מיטל קאָנפֿיגוראַציע USB מיטל פּראָגראַממינג גייד USB מיטל קלאַסן
CDC ACM קלאַס HID קלאַס MSC SCSI קלאַס פאַרקויפער קלאַס USB מיטל טראָובלעשווטינג מייקראָסאָפֿט ווינדאָוז אָפּערירן סיסטעם USB האָסט

דרוקרעכט © 2025 סיליקאָן לאַבאָראַטאָריעס. אלע רעכטן רעזערווירט.

3/174

וסב
וסב

USB ווערסיע 1.5.1 21סטן יולי, 2025 – מעלדונג נאטיצן
סימפּליסיטי SDK ווערסיע 2025.6.1
סיליקאָן לאַבס'ס עפֿעקטיווע USB דעווייס סטאַק אָפערט פֿילזײַטיקע, גרינג-צו-נוצן USB קאָנעקטיוויטי וואָס איז ידעאַל פֿאַר IoT פּראָיעקטן, אַרייַנגערעכנט קאָמוניקאַציע צווישן נעץ קאָ-פּראַסעסערז און האָסץ. דריקט דאָ פֿאַר פֿריִערדיקע ווערסיעס.
מעלדונג קיצער
הויפּט פֿעיִטשערז | API ענדערונגען | באַג פֿיקסעס | טשיפּ אַקטיווירונג
שליסל פֿעיִקייטן
נאָר אונטערלייגנדיקע פּלאַטפאָרמע ענדערונגען.
API ענדערונגען
קיינער.
זשוק פיקסיז
קיינער.
טשיפּ ענייבאַלמענט
קיינער.
שליסל פֿעיִקייטן
נייע פֿעיִטשערז | פֿאַרבעסערונגען | אַוועקגענומעןע פֿעיִטשערז | פֿאַרעלטערטע פֿעיִטשערז
ניו פֿעיִקייטן
קיינער.
ענכאַנסמאַנץ
נאָר אונטערלייגנדיקע פּלאַטפאָרמע ענדערונגען.
אַוועקגענומען פֿעיִקייטן
קיינער.
דעפּרעסאַטעד פֿעיִקייטן
קיינער.
API ענדערונגען
נייע APIs | געענדערטע APIs | אוועקגענומען APIs | פארעלטערטע APIs
נייַע אַפּיס

דרוקרעכט © 2025 סיליקאָן לאַבאָראַטאָריעס. אלע רעכטן רעזערווירט.

4/174

וסב
קיינער.
מאָדיפיצירטע APIs
קיינער.
אַוועקגענומען APIs
קיינער.
דיפּרישיייטיד APIs
קיינער.
זשוק פיקסיז
קיינער.
טשיפּ ענייבאַלמענט
קיינער.
אַפּפּליקאַטיאָן עקסampדי ענדערונגען
ניו עקסampלעס | מאָדיפֿיצירטע עקסampלעס | אַוועקגענומען עקסampדי | פארעלטערטע עקסamples
ניו עקסamples
קיינער.
מאָדיפֿיצירטע עקסamples
קיינער.
אראפגענומען עקסamples
קיינער.
דעפּרעסירט עקסamples
קיינער.
השפּעה פון מעלדונג ענדערונגען
אימפּאַקט סטייטמענטס | מיגראַציע גייד
אימפּאַקט סטייטמענטס
קיינער.
מיגראַטיאָן גייד
קיינער.
באַוווסט ישוז און לימיטיישאַנז
קיינער.
ניצן דעם מעלדונג

דרוקרעכט © 2025 סיליקאָן לאַבאָראַטאָריעס. אלע רעכטן רעזערווירט.

5/174

וסב

וואָס איז אין דער אויסגאַבע? | קאָמפּאַטיבלע ווייכווארג | אינסטאַלאַציע און באַניץ | הילף און באַמערקונגען

וואָס איז אין דער מעלדונג?

יו-עס-בי דיווייס סטאַק אַפּליקאַציע עקסamples
קאַמפּאַטאַבאַל ווייכווארג

ווייכווארג
סימפליסיטי SDK סימפליסיטי סטודיאָ סימפליסיטי קאַמאַנדער GCC די GNU קאָמפּיילער זאַמלונג) IAR עמבעדיד וואָרקבענטש פֿאַר ARM IAR EWARM

קאָמפּאַטיבלע ווערסיע אָדער וואַריאַנט
2025.6.0 5.11.0 1.18.2 (צוגעשטעלט מיט סימפליסיטי סטודיאָ) 12.2.1 (צוגעשטעלט מיט סימפליסיטי סטודיאָ) 9.40.1 (צוגעשטעלט מיט סימפליסיטי סטודיאָ)

ייַנמאָנטירונג און נוצן

צו אָנהייבן אייער אַנטוויקלונג זעט אונדזער:
יו-עס-בי דעווייס פּראָגראַמיר גייד. אַפּי דאָקומענטאַציע.
פֿאַר אינפֿאָרמאַציע וועגן זיכערע וואָלט אינטעגראַציע, זעט זיכערע וואָלט.
צו שייַעךview זיכערהייט און ווייכווארג עצה נאָוטאַפאַקיישאַנז און פירן דיין נאָוטאַפאַקיישאַן פּרעפֿערענצן:
גייט צו https://community.silabs.com/. לאָגט זיך איין מיט אייערע קאנטע אינפארמאציע. דריקט אויף אייער פּראָfile איקאָן אין דער אויבערשטער רעכטער ווינקל פון דער בלאַט.
אויסקלייבן נאטיפיקאציעס פון דעם אויספאל מעניו. ö אין דער נאטיפיקאציעס סעקציע, גייט צו דער מיין פראדוקט נאטיפיקאציעס קוויטל צוview היסטארישע זיכערהייט און ווייכווארג עצה
נאָוטאַפאַקיישאַנז
÷ צו פאַרוואַלטן אייערע פּרעפֿערענצן, ניצט דעם "פאַרוואַלטן נאָוטיפיקאַציעס" קוויטל צו קאַסטאַמייזן וועלכע פּראָדוקט דערהייַנטיקונגען און אַדווייזעריז איר
באַקומען.
פֿאַר רעקאָמענדירטע קאָנפיגוראַציע סעטטינגס, זעט דאָ.
צו לערנען מער וועגן די ווייכווארג אין דעם אויסגאבע, גייט אריין אין אונדזער אנליין דאקומענטאציע.
הילף און באַמערקונגען

קאָנטאַקט סיליקאָן לאַבס שטיצע. צו נוצן אונדזער פרעג קינסטלעכע אינטעליגענץ געצייַג צו באַקומען ענטפֿערס, זעט דאָס זוכפֿעלד אין דער שפּיץ פֿון דער בלאַט.

באַמערקונג: פרעג קינסטלעכע אינטעליגענץ איז עקספּערימענטאַל.

באַקומט הילף פֿון אונדזער דעוועלאָפּער קהילה.
סדק ריליס און וישאַלט פּאָליטיק
זעט אונדזער SDK ארויסגעבן און אויפהאלטונג פאליסי.

דרוקרעכט © 2025 סיליקאָן לאַבאָראַטאָריעס. אלע רעכטן רעזערווירט.

6/174

איבערview
איבערview
ספּעסאַפאַקיישאַנז
קומט אין איינקלאַנג מיט די "יוניווערסאַל סעריאַל באַס ספּעסיפיקאַציע רעוויזיע 2.0" ימפּלעמענטירט די "אינטערפייס אַססאָסיאַטיאָן דעסקריפּטאָר ענדזשאַנירינג ענדערונג נאָוטיס (ECN)" טראַנספער טייפּס
קאָנטראָל באַלק ינטעראַפּט USB קלאַסן קאָמוניקאַציע מיטל קלאַס (CDC) אַבסטראַקט קאָנטראָל מאָדעל (ACM) מענטשלעכע צובינד מיטל (HID) מאַסע סטאָרידזש קלאַס (MSC) פאַרקויפער-ספּעציפֿיש קלאַס פריימווערק
פֿעיִקייטן
סקאַלירבאַר צו אַרייַננעמען בלויז פארלאנגטע פֿעיִקייטן צו מינאַמיזירן זכּרון פֿוסדרוק שטיצט פול-גיכקייַט (12 מעביט/ס) שטיצט קאָמפּאָזיט (מולטי-פונקציע) דעוויסעס שטיצט מולטי-קאָנפיגוראַציע דעוויסעס שטיצט USB מאַכט-שפּאָרן פאַנגקשאַנאַליטיעס (דעוויס סוספּענד און רעזומע) גאַנץ ינטאַגריישאַן פון מאַסע סטאָרידזש קלאַס אין מיקריום אָס File סיסטעם מאָדול דעוועלאָפּעד מיט CMSIS-RTOS2 אַבסטראַקציע שיכט אַזוי אַז עס קען אַרבעטן מיט פאַרשידענע אָפּערייטינג סיסטעמען. סיליקאָן לאַבס GSDK קומט מיט FreeRTOS און Micrium אָפּערייטינג סיסטעמען פּאָרץ.

דרוקרעכט © 2025 סיליקאָן לאַבאָראַטאָריעס. אלע רעכטן רעזערווירט.

7/174

איבערview
איבערview

USB מיטל קאָנפיגוראַציע

די סעקציע דיסקוטירט ווי אזוי צו קאנפיגורירן סיליקאן לאבס יו-עס-בי דעווייס. עס זענען דא דריי גרופעס פון קאנפיגוראציע פאראמעטערס, ווי פאלגנד:
USB מיטל קאָר קאָנפיגוראַציע USB מיטל אינפֿאָרמאַציע קאָנפיגוראַציע USB מיטל האַרדווער קאָנפיגוראַציע
USB מיטל קאָר קאָנפיגוראַציע
סיליקאָן לאַבס USB דעווייס קען קאָנפיגורירט ווערן ביים קאָמפּיילירן דורך אַ סכום #defines וואָס געפינען זיך אין sl_usbd_core_config.h file. USB דעווייס ניצט #defines ווען מעגלעך ווייל זיי ערלויבן קאָד און דאַטן גרייסן צו ווערן סקאלירט ביים קאָמפּייל צייט באזירט אויף וועלכע פֿעיִטשערס זענען ענייבאַלד. דאָס ערלויבט די לייען-נאָר זכּרון (ROM) און ראַנדאָם-אַקסעס זכּרון (RAM) פֿוסשטאַפּן פון סיליקאָן לאַבס USB דעווייס צו ווערן אַדזשאַסטיד באזירט אויף די באדערפענישן פון דיין אַפּליקאַציע.
רעקאָמענדירט: אָנהייבן דעם קאָנפיגוראַציע פּראָצעס מיט די פעליקייט ווערטן (אויסגעצייכנט אין פעט דרוק).
די סעקציעס אונטן זענען אָרגאַניזירט באַזירט אויף דער סדר אין דער טעמפּלאַט קאָנפיגוראַציע. file, sl_usbd_core_config.h.
קאָר קאָנפיגוראַציע קלאַסן קאָנפיגוראַציע
קאָר קאָנפיגוראַציע
טאַבעלע – USB דעווייס קאָר קאָנפיגוראַציע קאָנסטאַנטן

קאָנסטאַנט באַשרייַבונג

פעליקייַט ווערט

SL_USBD_TA SK_STACK_ גרייס

קאָנפיגורירט די סטעק גרייס אין בייטן פון USBD קאָר אויפגאַבע

4096

SL_USBD_TA SK_PRIORITH Y

קאָנפיגורירט די פּריאָריטעט פון USBD קאָר אויפגאַבע. דאָס איז אַ CMSIS-RTOS2 פּריאָריטעט.

osPriorityHigh

SL_USBD_A UTO_START _USB_DEVIC E

אויב עס איז אַקטיוויזירט, וועט דער USB מיטל אויטאָמאַטיש אָנגעהויבן ווערן אַמאָל דער קערנעל ווערט אָנגעהויבן און יענע 1 USBD קאָר אויפגאַבע איז פּלאַנירט פֿאַרן ערשטן מאָל. אויב עס איז דיסייבאַלד, וועט אייער אַפּליקאַציע דאַרפֿן רופן sl_usbd_core_start_device() ווען זי איז גרייט צו ווערן דעטעקטירט דורך דעם USB האָסט.

SL_USBD_C די גאַנצע צאָל קאָנפיגוראַציעס וואָס וועלן צוגעגעבן ווערן דורך די sl_usbd_add_configuration()

1

די ONFIGURATI פונקציע.

אן_קוואַנטי

TY

דרוקרעכט © 2025 סיליקאָן לאַבאָראַטאָריעס. אלע רעכטן רעזערווירט.

8/174

איבערview

קעסיידערדיק
SL_USBD _אינטערף ACE_QU אַנטיטי
SL_USBD _ALT_INT ERFACE_ קוואַנטיטי
TY
SL_USBD _אינטערף ACE_GR
OUP_QU
אַנטיטי
SL_USBD _באַשרייַבונג
פּטאָר_ק
ואַנטיטי
SL_USBD _STRING _QUANTI
TY
SL_USBD _OPEN_E NDPOIN TS_QUA NTITY

באַשרייַבונג די גאַנצע צאָל פון USB אינטערפייסיז וואָס דאַרפֿן צוגעגעבן ווערן פֿאַר אַלע אייערע קאָנפיגוראַציעס. דאָס איז שטאַרק אָפּהענגיק פֿון די קלאַס(ן) וואָס ווערן גענוצט. פֿאַר מער אינפֿאָרמאַציע וועגן וויפֿל אינטערפייסיז אַ קלאַס אינסטאַנץ דאַרף, זעט די סעקציע "רעסורסן דאַרפֿן פֿון קאָר" פֿון אייער קלאַס(ן).
די גאַנצע צאָל פון USB אַלטערנאַטיווע אינטערפייסיז וואָס מען דאַרף צולייגן פֿאַר אַלע אייערע קאָנפיגוראַציעס. דאָס איז שטאַרק אָפּהענגיק פֿון די קלאַס(ן) וואָס מען ניצט. דער ווערט מוז שטענדיק זיין גלייך אָדער גרעסער ווי SL_USBD_INTERFACE_QUANTITY. פֿאַר מער אינפֿאָרמאַציע וועגן וויפֿל אַלטערנאַטיווע אינטערפייסיז אַ קלאַס אינסטאַנץ דאַרף, זעט די סעקציע "רעסורסן דאַרפֿן פֿון קאָר" פֿון אייער קלאַס(ן).
די גאַנצע צאָל פון USB אינטערפייס גרופּעס וואָס וועלן צוגעגעבן ווערן פֿאַר אַלע אייערע קאָנפיגוראַציעס. דאָס איז שטאַרק אָפּהענגיק פֿון די קלאַס(ן) וואָס ווערן גענוצט. פֿאַר מער אינפֿאָרמאַציע וועגן וויפֿל אינטערפייס גרופּעס דאַרף אַ קלאַס אינסטאַנץ, זעט די סעקציע "רעסורסן דאַרפֿן פֿון קאָר" פֿון אייער קלאַס(ן).
די גאַנצע צאָל ענדפּוינט דעסקריפּטאָרן וואָס וועלן צוגעגעבן ווערן פֿאַר אַלע אייערע קאָנפיגוראַציעס. דאָס איז שטאַרק אָפּהענגיק פֿון די קלאַס(ן) וואָס ווערן גענוצט. פֿאַר מער אינפֿאָרמאַציע וועגן וויפֿל ענדפּוינט דעסקריפּטאָרן אַ קלאַס אינסטאַנץ דאַרף, זעט "נומער פֿון ענדפּוינטס" אין דער סעקציע "רעסורסן דאַרפֿן פֿון קאָר" פֿון אייער קלאַס(ן). באַמערקט אַז די קאָנטראָל ענדפּוינטס דאַרפֿן נישט באַטראַכט ווערן דאָ. די גאַנצע צאָל פֿון USB סטרינגס. שטעלן די קוואַנטיטעט צו נול וועט דיאַקטיווירן די פֿונקציע. דיאַקטיווירן דאָס וועט פֿאַראורזאַכן אַז די דעווייס זאָל נישט לאַגערן קיין USB באַשרייַבונג סטרינגס וואָס ווערן דורכגעגעבן פֿון דער אַפּליקאַציע. דאָס מיינט אַז דער באַלעבאָס וועט נישט קענען צוריקקריגן די באַשרייַבונג סטרינגס (אַזאַ ווי פאַבריקאַנט און פּראָדוקט נאָמען). די גאַנצע צאָל פֿון געעפֿנטע ענדפּוינטס פּער קאָנפיגוראַציע. אַ דעווייס דאַרף לפּחות צוויי געעפֿנטע ענדפּוינטס פֿאַר קאָנטראָל טראַנספֿערס, אָבער איר מוזט אויך צולייגן די ענדפּוינטס פֿון די קלאַס(ן) וואָס ווערן גענוצט. פֿאַר מער אינפֿאָרמאַציע וועגן וויפֿל געעפֿנטע ענדפּוינטס אַ קלאַס אינסטאַנץ דאַרף, זעט "נומער פֿון ענדפּוינטס" אין דער סעקציע "רעסורסן דאַרפֿן פֿון קאָר" פֿון אייער קלאַס(ן).

פעליקייַט ווערט
10 10
2
20 30 20

קלאַסן קאָנפיגוראַציע
קלאַסן האָבן ספּעציפֿישע קאָמפּייל-צייט קאָנפיגוראַציעס. זעט USB דעווייס קלאַסן פֿאַר מער אינפֿאָרמאַציע.
USB דעווייס אינפארמאציע קאנפיגוראציע

די sl_usbd_device_config.h קאָנפיגוראַציע file גרופּירט איבער קאָמפּייל-צייט #define-s צו שטעלן גרונטלעכע אינפֿאָרמאַציע וועגן דיין מיטל, אַזאַ ווי פאַרקויפער/פּראָדוקט ID, מיטל סטרינגס, עטק. די טאַבעלע אונטן באַשרײַבט יעדע אינפֿאָרמאַציע קאָנפיגוראַציע דעפֿיניציע בנימצא אין דעם קאָנפיגוראַציע file.

טאַבעלע – USB דעווייס אינפֿאָרמאַציע קאָנפיגוראַציע דעפינירט

קעסיידערדיק
SL_USBD_DEVIC E_VENDOR_ID
SL_USBD_DEVIC E_PRODUCT_ID

באַשרייַבונג אייער פארקויפער אידענטיפיקאציע נומער ווי איבערגעגעבן דורך די USB אימפלעמענטארס פארום. פאר מער אינפארמאציע וועגן ווי אזוי איר קענט באקומען א פארקויפער אידענטיפיקאציע, זעט http://www.usb.org/developers/vendor/ . אייער פראדוקט אידענטיפיקאציע נומער.

דרוקרעכט © 2025 סיליקאָן לאַבאָראַטאָריעס. אלע רעכטן רעזערווירט.

9/174

איבערview

קעסיידערדיק

באַשרייַבונג

SL_USBD_DEVICE_RELEASE ארויסגעבונג נומער פון אייער דעווייס. _NUMBER

SL_USBD_DEVICE_MANUFA שטריקל וואס באשרייבט דעם פאבריקאנט פון אייער דעווייס. די קאנפיגוראציע ווערט איגנארירט ווען די

CTURER_STRING

קאָנפיגוראַציע SL_USBD_STRING_QUANTITY איז געשטעלט צו 0.

SL_USBD_DEVICE_PRODUC שטריקל וואס באשרייבט אייער פראדוקט. די קאנפיגוראציע ווערט איגנארירט ווען די קאנפיגוראציע

ט_סטרינג

SL_USBD_STRING_QUANTITY איז געשטעלט צו 0.

SL_USBD_DEVICE_SERIAL_N סטרינג וואס אנטהאלט די סעריע נומער פון אייער דעווייס. די קאנפיגוראציע ווערט איגנארירט ווען די

נומער_סטרינג

קאָנפיגוראַציע SL_USBD_STRING_QUANTITY איז געשטעלט צו 0.

SL_USBD_DEVICE_LANGUA אידענטיפיקאציע נומער פון דער שפראך פון אייער דעווייס'ס סטרינגס. מעגלעכע ווערטן זענען:
GE_ID

– SL_USBD_LANG_ID_ARABIC_SAUDI_ARABIA

– SL_USBD_LANG_ID_CHINESE_TAIWAN

– SL_USBD_LANG_ID_ENGLISH_US

– SL_USBD_LANG_ID_ENGLISH_UK

– SL_USBD_LANG_ID_FRENCH

– SL_USBD_LANG_ID_GERMAN

– SL_USBD_LANG_ID_GREK

– SL_USBD_LANG_ID_ITALIAN

– SL_USBD_LANG_ID_PORTUGEESE

– SL_USBD_LANG_ID_סאַנסקריט

די קאָנפיגוראַציע ווערט איגנאָרירט ווען די קאָנפיגוראַציע SL_USBD_STRING_QUANTITY איז געשטעלט צו 0.

USB מיטל האַרדווער קאָנפיגוראַציע

דעפּענדינג אויף די סיליקאָן לאַבס מיטל וואָס איר ניצט, וועט איר מעגלעך האָבן די GPIO פּין און פּאָרט צו קאָנפיגורירן פֿאַר USB VBUS סענס סיגנאַל. די קאָנפיגוראַציע דעפיניציעס זענען אין די sl_usbd_hardware_config.h כעאַדער. file.

קעסיידערדיק
SL_USBD_דרייווער_VBUS_סענס_פּאָרט SL_USBD_דרייווער_VBUS_סענס_פּין

באַשרייַבונג
GPIO פּאָרט פֿאַר די USB VBUS סענס סיגנאַל אויף דיין ברעט. GPIO פּין פֿאַר די USB VBUS סענס סיגנאַל אויף דיין ברעט.

דרוקרעכט © 2025 סיליקאָן לאַבאָראַטאָריעס. אלע רעכטן רעזערווירט.

10/174

איבערview
איבערview
יו-עס-בי דעווייס פּראָגראַמיר גייד
די סעקציע דערקלערט ווי אזוי צו ניצן דעם USB דעווייס מאָדול.
ערשטע סעטאַפּ פון USB דעווייס מאָדול
די סעקציע באשרייבט די גרונטלעכע טריט וואָס זענען נויטיק צו איניציאַליזירן דעם USB דעווייס מאָדול און צו לייגן, צוגרייטן און אָנהייבן אַ דעווייס. איניציאַליזירן דעם USB דעווייס מאָדול איניציאַליזירן דעם USB דעווייס קאָר איניציאַליזירן די aCl ss(es) צולייגן אייער USB דעווייס בויען אייער USB דעווייס צולייגן קאָנפיגוראַציע(ס) צולייגן USB פונקציע(ס) אָנהייבן אייער USB דעווייס
געשעעניש הוק פונקציעס
איניציאַליזירן דעם USB דעווייס מאָדול
איניציאַליזירן דעם USB דעווייס קאָר
הייבט אן מיט איניציאליזירן דעם B דעווייס מאָדול קאָר דורך אויספילן די פונקציע sl_usbd_core_init(). דער ביישפּיל אונטן ווייזט ווי אזוי אויסצופילן sl_usbd_core_init().
Example – רופט sl_usbd_core_init()
sl_status_t סטאַטוס; סטאַטוס = sl_usbd_core_init(); אויב (סטאַטוס ! SL_STATUS_OK) { /* עס איז געשען אַ טעות. מען זאָל צולייגן דאָ די טעותן. */
}
איניציאַליזירן די קלאַס(ן)
נאכדעם וואס דער USB דעווייס מאדול קערן איז איניציאליזירט געווארן, מוזט איר איניציאליזירן יעדע קלאס וואס איר פלאנירט צו ניצן. זעט די סעקציע "פראגראמיר גייד" פון אייערע ACL ss(es) פאר מער אינפארמאציע.
בויען דיין USB מיטל
צולייגן קאָנפיגוראַציע(ס)
נאכדעם וואס איר האט ערפאלגרייך איניציאליזירט אייער אפאראט, קענט איר אנהייבן צולייגן די USB פונקציעס צו אים, אנפאנגענדיג מיט א נייער קאנפיגוראציע. א אפאראט מוז האבן לפחות איין קאנפיגוראציע. כדי צו צולייגן קאנפיגוראציע(ס), רופט די פונקציע aa sl_usbd_core_dd_configuration() function. די פונקציע מוז גערופן ווערן פאר יעדער קאנפיגוראציע וואס איר ווילט צולייגן. די עקס.ampדי לינק אונטן ווייזט ווי אזוי צו לייגן צו א פול-גיך.
Example – צולייגן קאָנפיגוראַציע(ס) צו אייער דעווייס

דרוקרעכט © 2025 סיליקאָן לאַבאָראַטאָריעס. אלע רעכטן רעזערווירט.

11/174

איבערview

sl_status_t סטאַטוס; uint8_t קאָנפיג_nbr_fs;

/* צולייגן א פול-גיך קאנפיגוראציע צום אפאראט. */

סטאַטוס = sl_usbd_core_add_configuration(0,

/* קיין ספּעציעלע אַטריביוטן צו דער קאָנפיגוראַציע. */

100ו,

/* מאַקסימום מאַכט קאַנסאַמשאַן: 100mA.

*/

SL_USBD_DEVICE_SPEED_FULL,

/* פול-גיכקייט קאנפיגוראציע.

*/

קאָנפיגורירן לייג עקסamp"פול-גיכקייט קאנפיגוראציע",

&קאָנפֿיג_nbr_fs);

אויב (סטאַטוס ! SL_STATUS_OK) {

/* עס איז געשען אַ טעות. מען זאָל צולייגן דאָ די באַהאַנדלונג פון טעותן. */

}

צולייגן USB פונקציע(ס)
נאכדעם וואס איר האט ערפאלגרייך צוגעלייגט כאטש איין קאנפיגוראציע צו אייער אפאראט, קענט איר צולייגן די אינטערפייסעס און ענדפונקטן צו אייער אפאראט. יעדע USB קלאס האט אירע אייגענע באדערפענישן אין טערמינען פון אינטערפייס און ענדפונקטן טיפ, קוואנטיטעט, און אנדערע פאראמעטערס. סיליקאן לאבס USB אפאראט לייגט צו אינטערפייסעס און ענדפונקטן אין די קלאסן וואס עס אפערט.
פֿון אייער אַפּליקאַציע, קענט איר אינסטאַנציירן אַ USB קלאַס און עס צולייגן צו אַ קאָנפֿיגוראַציע. פֿאַר מער אינפֿאָרמאַציע וועגן דעם קאָנצעפּט פֿון USB דיווייס קלאַס אינסטאַנסן, זעט USB דיווייס קלאַסן. באַמערקט אַז איר קענט אינסטאַנציירן און צולייגן פֿיל פֿאַרשידענע קלאַס אינסטאַנסן צו אַ קאָנפֿיגוראַציע צו שאַפֿן אַ מולטי-פֿונקציע (קאָמפּאָזיט) דיווייס.
די עקסampדי לינק אונטן ווייזט ווי אזוי צו שאַפֿן אַ קלאַס אינסטאַנץ און צולייגן עס צו אַ קאָנפיגוראַציע.
Example – צולייגן א קלאס אינסטאנץ צו אייער אפאראט

sl_status_t סטאַטוס; uint8_t קלאַס_nbr;
/* שאַפֿט אַן אינסטאַנץ פֿון דער קלאַס וואָס איר ווילט ניצן.*/ /* באַמערקט אַז לויט דער קלאַס קען די פֿונקציע האָבן מער אַרגומענטן. */ סטאַטוס = sl_usbd_ _create_instance(&class_nbr); אויב (status ! SL_STATUS_OK) { /* עס איז געשען א טעות. מען זאל צולייגן דא די טעותן. */ }
/* לייג צו די קלאס אינסטאנץ צו די פול-גיכקייט קאנפיגוראציע. */ סטאטוס = sl_usbd_ _add_to_configuration(class_nbr, /* קלאס נומער צוריקגעגעבן דורך sl_usbd_ _שאַפֿן_אינסטאַנץ. */
config_nbr_fs); /* קאנפיגוראציע נומער צוריקגעגעבן דורך sl_usbd_core_add_configuration(). */ אויב (status ! SL_STATUS_OK) { /* עס איז פארגעקומען א טעות. מען זאל צולייגן דא די טעותן. */ }
אָנהייבן דיין USB מיטל
דורך דיפאָלט, וועט דער דעווייס ווערן אויטאָמאַטיש אָנגעהויבן דורך דער USB דעווייס קאָר אויפגאַבע נאָכדעם וואָס די דעווייס איניציאַליזאַציע איז געענדיקט און דער קערנעל איז אָנגעהויבן. צו קאָנטראָלירן ווען דער דעווייס ווערט אָנגעהויבן און ווערט קענטיק דורך דעם USB האָסט, ניצט די קאָנפיגוראַציע דעפינירן SL_USBD_AUTO_START_USB_DEVICE צו דיאַקטיווירן די אויטאָ-אָנהייב פֿונקציע. ווען דיאַקטיווירט, נאָכדעם וואָס איר האָט געבויט/צוגעגרייט אייער דעווייס, קענט איר עס אָנהויבן און מאַכן עס קענטיק פֿאַר דעם USB האָסט דורך רופן די פֿונקציע sl_usbd_core_start_device().
די עקסampדי ליסטע אונטן ווייזט ווי אזוי צו אנהייבן אייער דעווייס ניצנדיק די sl_usbd_core_start_device() פונקציע.
Exampלע – אָנהייבן דיין מיטל

דרוקרעכט © 2025 סיליקאָן לאַבאָראַטאָריעס. אלע רעכטן רעזערווירט.

12/174

איבערview

sl_status_t סטאַטוס;
סטאַטוס = sl_usbd_core_start_device(); אויב (סטאַטוס ! SL_STATUS_OK) { /* עס איז פארגעקומען א טעות. מען זאָל צולייגן דא די טעות באַהאַנדלונג. */ }

געשעעניש הוק פונקציעס
דער USB דעווייס קאָר מאָדול אָפפערט צוויי שוואַכע הוק פונקציעס וואָס איר קענט איבערדעפינירן אין אייער אַפּליקאַציע. זייער ציל איז צו מעלדן ווען באַס און קאָנפיגוראַציע געשעענישן פּאַסירן.
טאַבעלע – USB געשעעניש קרוק פונקציעס

געשעעניש

באַשרייַבונג

ויטאָבוס

גערופן ווען עס פאסירט USB באס געשעעניש

קאָנפיגוראַציע גערופן ווען USB קאָנפיגוראַציע געשעעניש פּאַסירט

פונקציע אונטערשריפט
פּאָמיד sl_usbd_on_bus_event(sl_usbd_bus_event_t געשעעניש); פּאָמיד sl_usbd_on_config_event(sl_usbd_config_event_t געשעעניש, uint8_t קאָנפיג_nbr);

Exampלע – געשעעניש הוק פונקציעס

פּאָיד sl_usbd_on_bus_event(sl_usbd_bus_event_t געשעעניש) { סוויטש (געשעעניש) { פאַל SL_USBD_EVENT_BUS_CONNECT:
// גערופן ווען USB קאַבל ווערט אריינגעשטעלט אין אַ האָסט קאָנטראָללער ברייק;
פאַל SL_USBD_EVENT_BUS_DISCONNECT: // גערופן ווען USB קאַבל ווערט אַוועקגענומען פֿון אַ האָסט קאָנטראָללער ברייק;
פאַל SL_USBD_EVENT_BUS_RESET: // גערופן ווען דער האָסט שיקט אַ ריסעט באַפֿעל break;
פאַל SL_USBD_EVENT_BUS_SUSPEND: // גערופן ווען דער האָסט שיקט suspend באַפֿעל break;
פאַל SL_USBD_EVENT_BUS_RESUME: // גערופן ווען דער האָסט שיקט וועיק אַפּ באַפֿעל break;
פעליקייט: ברעכן; } }
void sl_usbd_on_config_event(sl_usbd_config_event_t געשעעניש, uint8_t קאנפיג_nbr) { סוויטש (געשעעניש) { פאל SL_USBD_EVENT_CONFIG_SET:
// גערופן ווען דער האוסט שטעלט א קאנפיגוראציע ברעיק;
פאַל SL_USBD_EVENT_CONFIG_UNSET: // גערופן ווען אַ קאָנפיגוראַציע איז נישט געשטעלט break;
פעליקייט: ברעכן; } }

דרוקרעכט © 2025 סיליקאָן לאַבאָראַטאָריעס. אלע רעכטן רעזערווירט.

13/174

איבערview

דרוקרעכט © 2025 סיליקאָן לאַבאָראַטאָריעס. אלע רעכטן רעזערווירט.

14/174

איבערview
איבערview

יו-עס-בי דעווייס קלאסן

די USB קלאַסן וואָס זענען פֿאַראַן אין סיליקאָן לאַבס USB דעווייס טיילן עטלעכע געמיינזאַמע כאַראַקטעריסטיקס. די סעקציע דערקלערט די כאַראַקטעריסטיקס און זייערע אינטעראַקציעס מיטן קערן שיכט.
פֿאַר מער אינפֿאָרמאַציע וועגן אַ ספּעציפֿישן קלאַס, זעט די פֿאָלגנדיקע:
CDC ACM קלאַס HID קלאַס MSC SCSI קלאַס פאַרקויפער קלאַס
וועגן קלאַס אינסטאַנסן
די USB קלאַסן וואָס זענען פֿאַראַן אין USB Device נוצן דעם קאָנצעפּט פֿון קלאַס אינסטאַנסן. אַ קלאַס אינסטאַנס רעפּרעזענטירט איין פֿונקציע אין אַ דעווייס. די פֿונקציע קען ווערן באַשריבן דורך איין אינטערפֿייס אָדער דורך אַ גרופּע אינטערפֿייסן און געהערט צו אַ ספּעציפֿישער קלאַס.
יעדע USB קלאַס אימפּלעמענטאַציע האט עטלעכע קאָנפיגוראַציעס און פונקציעס אין געמיינזאַם, באַזירט אויף דעם באַגריף פון קלאַס אינסטאַנץ. די געמיינזאַמע קאָנפיגוראַציעס און פונקציעס ווערן פּרעזענטירט אין דער טאַבעלע אונטן. אין דער קאָלום טיטל 'קאָנסטאַנטן אָדער פונקציע', קען דער פּלעיסהאָולדער XXXX ווערן ערזעצט מיטן נאָמען פון דער קלאַס: CDC, HID, MSC, CDC_ACM אָדער VENDOR (ווענדאָר פֿאַר פונקציע נעמען).
טאַבעלע – קאָנסטאַנטן און פונקציעס פֿאַרבונדן מיטן באַגריף פֿון קייפל קלאַס אינסטאַנסן

קאָנסטאַנט אָדער פֿונקציע
SL_USBD_XXXX_CL ASS_INS TANCE_QUANTITY
SL_USBD_XXXX_קאָנפֿיגוראַציע_קוואַנטיטעט
sl_usb ד _XXXX_שאַפֿן _אינסטאַנץ ()
sl_usbd_XXXX_add_to_conf אידענטיפיקאציע()

באַשרייַבונג
קאָנפיגורירט די מאַקסימום נומער פון קלאַס אינסטאַנסן.
קאָנפיגורירט די מאַקסימום צאָל קאָנפיגוראַציעס. בעת דער קלאַס איניציאַליזאַציע, וועט אַ באַשאַפֿענע קלאַס אינסטאַנץ ווערן צוגעגעבן צו איין אָדער מער קאָנפיגוראַציעס. שאַפֿט אַ נייע קלאַס אינסטאַנץ.
לייגט צו אַן עקזיסטירנדיקע קלאַס אינסטאַנץ צו דער ספּעציפֿיצירטער דעווייס קאָנפֿיגוראַציע.

אין טערמינען פון קאָד אימפּלעמענטאַציע, וועט די קלאַס דעקלערירן אַ לאָקאַלע גלאָבאַלע וועריאַבל וואָס כּולל אַ קלאַס קאָנטראָל סטרוקטור. די קלאַס קאָנטראָל סטרוקטור איז פֿאַרבונדן מיט איין קלאַס אינסטאַנץ און וועט אַנטהאַלטן ספּעציפֿישע אינפֿאָרמאַציע צו פאַרוואַלטן די קלאַס אינסטאַנץ.
די פאלגענדע בילדער ווייזן עטלעכע פאל-סצענארן. יעדע בילד אנטהאלט א קאוד ביישפילampוואָס קאָרעספּאָנדירט צום פאַל סצענאַר.
פיגור – קייפל קלאַס אינסטאַנסן – FS דעווייס (1 קאָנפיגוראַציע מיט 1 אינטערפייס) רעפּרעזענטירט אַ טיפּיש USB דעווייס. דער דעווייס איז פול-גיכקייט (FS) און אנטהאלט איין קאָנפיגוראַציע. די פונקציע פון ​​דעם דעווייס ווערט באַשריבן דורך איין אינטערפייס צוזאַמענגעשטעלט פון אַ פּאָר ענדפּונקטן פֿאַר דאַטן קאָמוניקאַציע. איין קלאַס אינסטאַנס ווערט באשאפן און וועט אייך דערלויבן צו פאַרוואַלטן דעם גאַנצן אינטערפייס מיט זיין פֿאַרבונדענע ענדפּוינט.
פיגור – קייפל קלאַס אינסטאַנסן – FS דעווייס 1 קאָנפיגוראַציע מיט 1 צובינד)

דרוקרעכט © 2025 סיליקאָן לאַבאָראַטאָריעס. אלע רעכטן רעזערווירט.

15/174

איבערview

דער קאָד וואָס קאָרעספּאָנדירט צו פיגור – קייפל קלאַס אינסטאַנסן – FS דעווייס (1 קאָנפיגוראַציע מיט 1 צובינד) ווערט געוויזן אין דעם בייַשפּיל.ample אונטן.
Example – קייפל קלאַס אינסטאַנסן – FS דעווייס 1 קאָנפיגוראַציע מיט 1 צובינד)

sl_status_t סטאַטוס; uint8_t קלאַס_0;

void app_usbd_XXXX_enable(uint8_t class_nbr) { /* האנדלען קלאס ענייבל געשעעניש. */ }

void app_usbd_XXXX_disable(uint8_t class_nbr) { /* האנדלען קלאס דיסייבל געשעעניש. */ }

sl_usbd_XXXX_callbacks_t קלאַס_callbacks = {

(1)

.ענייבאַל = app_usbd_XXXX_ענייבאַל,

.דיסייבל = app_usbd_XXXX_דיסייבל

};

סטאַטוס = sl_usbd_XXXX_init();

(2)

אויב (סטאַטוס ! SL_STATUS_OK) {

/* $$$$ באַהאַנדלען דעם טעות. */

}

סטאַטוס = sl_usbd_XXXX_create_instance(&קלאַס_קאָלבאַקס,

(3)

&קלאס_0);

אויב (סטאַטוס ! SL_STATUS_OK) {

/* $$$$ באַהאַנדלען דעם טעות. */

}

סטאַטוס = sl_usbd_XXXX_add_to_configuration(קלאַס_0, קאָנפיג_0);

(4)

אויב (סטאַטוס ! SL_STATUS_OK) {

/* $$$$ באַהאַנדלען דעם טעות. */

}

(1) יעדע קלאַס אָפפערט אַ סכום פון קאָלבעק פונקציעס פֿאַר דעווייס פֿאַרבינדן/דיסקאַנעקטן געשעענישן און פֿאַר קלאַס ספּעציפֿישע געשעענישן. דער קאָלבעק סטרוקטור אָביעקט ווערט דורכגעגעבן ווי אַ אַרגומענט ווען מען שאַפֿט די קלאַס אינסטאַנץ מיט sl_usbd_XXXX_create_instance()
פֿונקציע.
(1) איניציאליזירן די קלאַס. אַלע אינערלעכע וועריאַבאַלן, סטרוקטורן און קלאַס פּאָרטן וועלן איניציאליזירט ווערן. באַמערקט אַז די Init() פונקציע אין עטלעכע קלאַסן קען נעמען אַנדערע אַרגומענטן.

דרוקרעכט © 2025 סיליקאָן לאַבאָראַטאָריעס. אלע רעכטן רעזערווירט.

16/174

איבערview
(2) שאַפֿט די קלאַס אינסטאַנץ, וואָס איז קלאַס_0. די פֿונקציע sl_usbd_XXXX_create_instance() אַלאָקירט אַ קלאַס קאָנטראָל סטרוקטור פֿאַרבונדן מיט קלאַס_0. דעפּענדינג אויף דער קלאַס, קען sl_usbd_XXXX_create_instance() האָבן נאָך פּאַראַמעטערס חוץ דעם קלאַס נומער וואָס רעפּרעזענטירן קלאַס-ספּעציפֿישע אינפֿאָרמאַציע וואָס איז געהיט אין דער קלאַס קאָנטראָל סטרוקטור. (3) לייגט צו דעם קלאַס אינסטאַנץ, קלאַס_0, צו דעם ספּעציפֿישן קאָנפֿיגוראַציע נומער, קאָנפֿיג_0. sl_usbd_XXXX_add_to_configuration() וועט שאַפֿן דעם אינטערפֿייס 0 און זיינע פֿאַרבונדענע IN און OUT ענדפּונקטן. דערפֿאַר נעמט די קלאַס אינסטאַנץ אַרום דעם אינטערפֿייס 0 און זיינע ענדפּונקטן. יעדע קאָמוניקאַציע וואָס ווערט געטאָן אויף דעם אינטערפֿייס 0 וועט נוצן דעם קלאַס אינסטאַנץ נומער, קלאַס_0. פֿיגור – קייפל קלאַס אינסטאַנץ – FS דעווייס (2 קאָנפֿיגוראַציעס און קייפל אינטערפֿייסיז) רעפּרעזענטירט אַ מער קאָמפּליצירטן עקס.ampא פול-גיך אפאראט איז צוזאמענגעשטעלט פון צוויי קאנפיגוראציעס. דער אפאראט האט צוויי פונקציעס וואס געהערן צו דער זעלבער קלאס, אבער יעדע פונקציע ווערט באשריבן דורך צוויי אינטערפייסעס און האט א פאר צוויי-דירעקציאנעלע ענדפונקטן. אין דעם ביישפילampלע, צוויי קלאַס אינסטאַנסן ווערן באשאפן. יעדע קלאַס אינסטאַנס איז פארבונדן מיט אַ גרופּע פון ​​אינטערפייסיז, פארקערט ווי פיגור – קייפל קלאַס אינסטאַנסן – FS דעווייס (1 קאָנפיגוראַציע מיט 1 אינטערפיי) און פיגור – קייפל קלאַס אינסטאַנסן – FS דעווייס (2 קאָנפיגוראַציעס און קייפל אינטערפייסיז), וואו די קלאַס אינסטאַנס איז געווען פארבונדן מיט אַן איינציקן אינטערפיי.
פיגור – קייפל קלאַס אינסטאַנסן – FS דעווייס 2 קאָנפיגוראַציעס און קייפל אינטערפייסיז)

דער קאָד וואָס קאָרעספּאָנדירט צו פיגור – קייפל קלאַס אינסטאַנסן – FS דעווייס (2 קאָנפיגוראַציעס און קייפל אינטערפייסיז) ווערט געוויזן אין דעם בייַשפּיל.ampאונטן. די טעות באַהאַנדלונג איז אויסגעלאָזט פֿאַר קלאַרקייט.
Example – קייפל קלאַס אינסטאַנסן – FS דעווייס 2 קאָנפיגוראַציעס און קייפל אינטערפייסיז)

דרוקרעכט © 2025 סיליקאָן לאַבאָראַטאָריעס. אלע רעכטן רעזערווירט.

17/174

איבערview

sl_status_t סטאַטוס; uint8_t קלאַס_0; uint8_t קלאַס_1;
סטאַטוס = sl_usbd_XXXX_init();
סטאַטוס = sl_usbd_XXXX_create_instance(&קלאַס_0); סטאַטוס = sl_usbd_XXXX_create_instance(&קלאַס_1);
סטאַטוס = sl_usbd_XXXX_add_to_configuration(קלאַס_0, cfg_0); סטאַטוס = sl_usbd_XXXX_add_to_configuration(קלאַס_1, cfg_0);
סטאַטוס = sl_usbd_XXXX_add_to_configuration(קלאַס_0, cfg_1); סטאַטוס = sl_usbd_XXXX_add_to_configuration(קלאַס_1, cfg_1);

(1)
(2) (3)
(4) (5)
(6) (6)

(1) איניציאליזירן די קלאַס. אַלע אינערלעכע וועריאַבאַלן, סטרוקטורן און קלאַס פּאָרטן וועלן איניציאליזירט ווערן.
(2) שאַפֿן די קלאַס אינסטאַנץ, class_0. די פֿונקציע sl_usbd_XXXX_create_instance() אַלאָקירט אַ קלאַס קאָנטראָל סטרוקטור פֿאַרבונדן מיט class_0.
(3) שאַפֿן די קלאַס אינסטאַנץ, class_1. די פֿונקציע sl_usbd_XXXX_create_instance() אַלאָקירט אַן אַנדער קלאַס קאָנטראָל סטרוקטור פֿאַרבונדן מיט class_1.
(4) לייג צו די קלאס אינסטאנץ, class_0, צו די קאנפיגוראציע, cfg_0. sl_usbd_XXXX_add_to_configuration() וועט שאפן די אינטערפייס 0, אינטערפייס 1, אנדערע אינטערפייסן, און די פארבונדענע IN און OUT ענדפונקטן. די קלאס אינסטאנץ נומער, class_0, וועט ווערן גענוצט פאר יעדער דאטן קאמוניקאציע אויף אינטערפייס 0 אדער אינטערפייס 1.
(5) לייג צו די קלאס אינסטאנץ, class_1, צו די קאנפיגוראציע, cfg_0. sl_usbd_XXXX_add_to_configuration() וועט שאפן די אינטערפייס 2, אינטערפייס 3 און זייערע פארבונדענע IN און OUT ענדפונקטן. די קלאס אינסטאנץ נומער, class_1, וועט ווערן גענוצט פאר יעדער דאטן קאמוניקאציע אויף אינטערפייס 2 אדער אינטערפייס 3.
(6) לייג צו די זעלבע קלאס אינסטאנצן, class_0 און class_1, צו דער אנדערער קאנפיגוראציע, cfg_1.
יעדע קלאַס דעפינירט אַ סטרוקטור פֿון טיפּ sl_usbd_XXXX_callbacks_t. איר ציל איז צו געבן יעדער קלאַס אַ סכום פֿון קאָלבעק פֿונקציעס וואָס מע דאַרף רופֿן ווען אַ געשעעניש פּאַסירט. צוויי קאָלבעק פֿונקציעס זענען פֿאַראַן אין יעדער קלאַס. זיי ווערן פּרעזענטירט אין דער טאַבעלע אונטן.
טאַבעלע – געוויינטלעכע קלאַס צוריקרוף פונקציעס

פעלדער באַשרייַבונג .enable גערופן ווען די USB קלאַס אינסטאַנץ איז הצלחה ענייבאַלד. .disable גערופן ווען די USB קלאַס אינסטאַנץ איז דיסייבאַלד.

פונקציע אונטערשריפט void app_usbd_XXXX_enable(uint8_t class_nbr); void app_usbd_XXXX_disable(uint8_t class_nbr);

דרוקרעכט © 2025 סיליקאָן לאַבאָראַטאָריעס. אלע רעכטן רעזערווירט.

18/174

איבערview
איבערview
USB מיטל CDC ACM קלאַס
יו-עס-בי דעווייס סי-די-סי באַזע קלאַס איבערview USB דעווייס CDC ACM קלאַס רעסורס באדערפענישן פון קאָר USB דעווייס CDC ACM סובקלאַס איבערview USB מיטל CDC ACM קלאַס קאָנפיגוראַציע USB מיטל CDC ACM קלאַס פּראָגראַממינג גייד
די סעקציע באשרייבט די קאָמוניקאַציעס דעווייס קלאַס (CDC) קלאַס און די פֿאַרבונדענע CDC סובקלאַס וואָס ווערט געשטיצט דורך סיליקאָן לאַבס'ס USB דעווייס סטאַק. סיליקאָן לאַבס USB-דעווייס שטיצט איצט די אַבסטראַקט קאָנטראָל מאָדעל (ACM) סובקלאַס, וואָס ווערט געוויינטלעך געניצט פֿאַר סעריעל עמולאַציע.
CDC נעמט אריין פארשידענע טעלעקאמוניקאציע און נעטוואָרקינג דעווייסעס. טעלעקאמוניקאציע דעווייסעס נעמען איין אנאלאג מאָדעמס, אנאלאג און דידזשיטאל טעלעפאנען, ISDN טערמינאל אַדאַפּטערס, א.א.וו. למשל.ampנעטוואָרקינג דעוויסעס אַנטהאַלטן ADSL און קאַבל מאָדעמס, עטהערנעט אַדאַפּטערז, און כאַבז. CDC דעפינירט אַ פריימווערק צו פֿאַרנעמען עקזיסטירנדיקע קאָמוניקאַציע סערוויסעס סטאַנדאַרדן, אַזאַ ווי V.250 (פֿאַר מאָדעמס איבער טעלעפֿאָן נעץ) און עטהערנעט (פֿאַר לאָקאַלע נעץ דעוויסעס), ניצנדיק אַ USB פֿאַרבינדונג. אַ קאָמוניקאַציע מיטל איז פאַראַנטוואָרטלעך פֿאַר מיטל פאַרוואַלטונג, רוף פאַרוואַלטונג ווען נייטיק, און דאַטן טראַנסמיסיע.
די סי-די-סי דעפינירט זיבן הויפט גרופעס פון דעווייסעס. יעדע גרופע געהערט צו א מאדעל פון קאמוניקאציע, וואס קען ארייננעמען עטליכע סוב-קלאסן. יעדע גרופע פון ​​דעווייסעס האט איר אייגענע ספעציפיקאציע דאקומענט חוץ די סי-די-סי באזע קלאס. די זיבן גרופעס זענען:
פובליק סוויטשט טעלעפאן נעטווארק (PSTN), דעווייסעס אריינגערעכנט שטימבאנד מאָדעמס, טעלעפאנען, און סעריאַל עמולאציע דעווייסעס. אינטעגרירטע סערוויסעס דידזשיטאַל נעטווארק (ISDN) דעווייסעס, אריינגערעכנט טערמינאַל אַדאַפּטערס און טעלעפאנען. עטהערנעט קאָנטראָל מאָדעל (ECM) דעווייסעס, אריינגערעכנט דעווייסעס וואָס שטיצן די IEEE 802 משפּחה (למשל: קאַבלע און ADSL מאָדעמס, WiFi אַדאַפּטערס). אַסינטשראָנאָוס טראַנספער מאָדע (ATM) דעווייסעס, אריינגערעכנט ADSL מאָדעמס און אַנדערע דעווייסעס פארבונדן צו ATM נעטוואָרקס (וואָרקסטיישאַנז, ראָוטערס, LAN סוויטשיז). וויירלעס מאָביל קאָמוניקאַציעס (WMC) דעווייסעס, אריינגערעכנט מולטי-פונקציע קאָמוניקאַציע האַנדסעט דעווייסעס געניצט צו פירן שטימע און דאַטן קאָמוניקאַציעס. עטהערנעט עמולאציע מאָדעל (EEM) דעווייסעס וואָס וועקסלען עטהערנעט-פריימד דאַטן. נעטוואָרק קאָנטראָל מאָדעל (NCM) דעווייסעס, אריינגערעכנט הויך-גיכקייַט נעץ דעווייסעס (הויך גיכקייַט פּאַקעט אַקסעס מאָדעמס, ליניע טערמינאַל עקוויפּמענט).
די CDC און די פארבונדענע סובקלאס אימפלעמענטאציע זענען אין איינקלאנג מיט די פאלגנדע ספעציפיקאציעס:
יוניווערסאַל סעריאַל באַס, קלאַס דעפֿיניציעס פֿאַר קאָמוניקאַציע דעוויסעס, רעוויזיע 1.2, 3טן נאָוועמבער 2010. יוניווערסאַל סעריאַל באַס, קאָמוניקאַציעס, סובקלאַס פֿאַר PSTN דעוויסעס, רעוויזיע 1.2, 9טן פעברואַר 2007.
יו-עס-בי דעווייס סי-די-סי באַזע קלאַס איבערview
א CDC מיטל איז צוזאמענגעשטעלט פון די פאלגנדע אינטערפייסעס צו אימפלעמענטירן קאמוניקאציע מעגלעכקייט:
קאָמוניקאַציע קלאַס אינטערפייס (CCI) איז פאַראַנטוואָרטלעך פֿאַר די מיטל פאַרוואַלטונג און אָפּציאָנעל די רוף פאַרוואַלטונג.
דעווייס פאַרוואַלטונג ערמעגליכט די אַלגעמיינע קאָנפיגוראַציע און קאָנטראָל פון די דעווייס און די מעלדונג פון געשעענישן צו דעם באַלעבאָס. די רוף פאַרוואַלטונג ערמעגליכט רופן אויפשטעלן און ענדיקן. רוף פאַרוואַלטונג קען זיין מולטיפּלעקסט דורך אַ DCI. א CCI איז פארלאנגט פֿאַר אַלע CDC דעוויסעס. עס ידענטיפיצירט די CDC פונקציע דורך ספּעסיפיצירן די קאָמוניקאַציע מאָדעל געשטיצט דורך די CDC דעווייס. די צובינד(ס) נאָך די CCI קענען זיין קיין דעפינירט USB קלאַס צובינד, אַזאַ ווי אַודיאָ אָדער אַ פאַרקויפער-ספּעציפיש צובינד. די פאַרקויפער-ספּעציפיש צובינד איז רעפּרעזענטירט ספּאַסיפיקלי דורך אַ DCI.
דאַטן קלאַס אינטערפייס (DCI) איז פאַראַנטוואָרטלעך פֿאַר דאַטן טראַנסמיסיע. דאַטן טראַנסמיטטעד און/אָדער באקומען נאָכפאָלגן נישט אַ ספּעציפֿיש
פֿאָרמאַט. דאַטן קענען זיין רויע דאַטן פֿון אַ קאָמוניקאַציע ליניע, דאַטן וואָס פֿאָלגן אַ פּראַפּריעטאַרי פֿאָרמאַט, אאַז"וו. אַלע די DCIs וואָס פֿאָלגן די CCI קענען געזען ווערן ווי אונטערגעאָרדנטע אינטערפֿייסן.
א CDC דעווייס מוז האבן לפחות איין CCI און נול אדער מער DCIs. איין CCI און יעדע אונטערגעארדנטע DCI צוזאמען צושטעלן א אייגנשאפט פארן האוסט. די מעגלעכקייט ווערט אויך גערופן א פונקציע. אין א CDC קאמפאזיט דעווייס, קענט איר האבן עטלעכע

דרוקרעכט © 2025 סיליקאָן לאַבאָראַטאָריעס. אלע רעכטן רעזערווירט.

19/174

איבערview
פונקציעס. דעריבער, וואָלט די דעווייס זיין צוזאַמענגעשטעלט פון עטלעכע סעטן פון CCI און DCI(s) ווי געוויזן אין פיגור – CDC קאָמפּאָזיט דעווייס.
פיגור – סי-די-סי קאמפאזיט דעווייס

א CDC מיטל וועט מסתּמא נוצן די פאלגענדע קאָמבינאַציע פון ​​ענדפּונקטן:
א פּאָר קאָנטראָל IN און OUT ענדפּונקטן גערופן דער דיפאָלט ענדפּונקט. אן אָפּציאָנעלער באַלק אָדער ינטעראַפּט IN ענדפּונקט. א פּאָר באַלק אָדער איזאָכראָנישע IN און OUT ענדפּונקטן. באַמערקט אַז סיליקאָן לאַבס USB דעווייס סטעק שטיצט נישט דערווייל איזאָכראָנישע ענדפּונקטן.
די טאַבעלע אונטן ווײַזט די נוצֿונג פֿון די פֿאַרשידענע ענדפּונקטן און דורך וועלכע אינטערפֿייס פֿון די CDC זיי ווערן גענוצט.
טאַבעלע – CDC ענדפּוינט באַניץ

ענדפּוינט
קאָנטראָל IN
קאָנטראָל OUT
איבעררייַסן אָדער מאַסע אין מאַסע אָדער יסאָכראָניש אין מאַסע אָדער יסאָכראָניש
OUT

ריכטונג
דעווייס-צו-האוסט
האָסט-צו-דעווייס
דעווייס-צו-האוסט
דעווייס-צו-האוסט
האָסט-צו-דעווייס

צובינד באַניץ

CCI

סטאַנדאַרט בקשות פֿאַר אויסרעכענונג, קלאַס-ספּעציפֿישע בקשות, מיטל

פאַרוואַלטונג, און אָפּציאָנעל רופן פאַרוואַלטונג.

CCI

סטאַנדאַרט בקשות פֿאַר אויסרעכענונג, קלאַס-ספּעציפֿישע בקשות, מיטל

פאַרוואַלטונג, און אָפּציאָנעל רופן פאַרוואַלטונג.

CCI

געשעענישן מעלדונג, אַזאַ ווי רינג דעטעקט, סעריאַל ליניע סטאַטוס, נעץ סטאַטוס.

DCI

רויע אדער פֿאָרמאַטירטע דאַטן קאָמוניקאַציע.

DCI

רויע אדער פֿאָרמאַטירטע דאַטן קאָמוניקאַציע.

רובֿ קאָמוניקאַציע דעוויסעס נוצן אַן אינטעראַפּט ענדפּוינט צו מעלדן דעם באַלעבאָס וועגן געשעענישן. איזאָכראָנישע ענדפּוינטס זאָלן נישט געניצט ווערן פֿאַר דאַטן טראַנסמיסיע ווען אַ פּראַפּריעטאַרי פּראָטאָקאָל פאַרלאָזט זיך אויף דאַטן ריטראַנסמיסיע אין פאַל פון USB פּראָטאָקאָל ערראָרס. איזאָכראָנישע קאָמוניקאַציע קען ינכעראַנטלי פאַרלירן דאַטן ווייַל עס האט קיין ריטריו מעקאַניזאַמז.
די זיבן הויפּט מאָדעלן פון קאָמוניקאַציע נעמען אַרום עטלעכע סובקלאַסן. א סובקלאַס באַשרײַבט ווי דער מיטל זאָל נוצן דעם CCI צו האַנדלען מיט די מיטל פאַרוואַלטונג און רוף פאַרוואַלטונג. די טאַבעלע אונטן ווײַזט אַלע מעגלעכע סובקלאַסן און דעם קאָמוניקאַציע מאָדעל צו וועלכן זיי געהערן.
טאַבעלע – CDC סובקלאַסן

אונטערקלאַס
דירעקט ליניע קאָנטראָל מאָדעל אַבסטראַקט קאָנטראָל מאָדעל

קאָמוניקאַציע מאָדעל
PSTN
PSTN

Exampלע פון ​​דעוויסעס וואָס נוצן דעם סובקלאַס
מאָדעם דעוויסעס גלייך קאָנטראָלירט דורך די USB באַלעבאָס
סעריעלע עמולאַציע דעוויסעס, מאָדעם דעוויסעס קאַנטראָולד דורך אַ סעריעל באַפֿעל סעט

דרוקרעכט © 2025 סיליקאָן לאַבאָראַטאָריעס. אלע רעכטן רעזערווירט.

20/174

איבערview

אונטערקלאַס

קאָמוניקאַציע מאָדעל

Exampלע פון ​​דעוויסעס וואָס נוצן דעם סובקלאַס

טעלעפאָן קאָנטראָל מאָדעל

PSTN

מולטי-קאַנאַל קאָנטראָל ISDN מאָדעל

קאַפּי קאָנטראָל מאָדעל ISDN

עטערנעט נעטוואָרקינג ECM קאָנטראָל מאָדעל

באַנקאָמאַט נעטוואָרקינג

אַטם

קאָנטראָל מאָדעל

וויירלעס האַנדסעט קאָנטראָל מאָדעל

WMC

דעווייס פאַרוואַלטונג WMC

מאָביל דירעקט ליניע מאָדעל

WMC

OBEX

WMC

עטהערנעט עמולאַציע EEM מאָדעל

נעץ קאָנטראָל מאָדעל

נקם

שטימע טעלעפאָניע דעוויסעס
באַסיק ראַטע טערמינאַל אַדאַפּטערז, ערשטיק ראַטע טערמינאַל אַדאַפּטערז, טעלעפאָנען
באַסיק ראַטע טערמינאַל אַדאַפּטערז, ערשטיק ראַטע טערמינאַל אַדאַפּטערז, טעלעפאָנען DOC-SIS קאַבלע מאָדעמס, ADSL מאָדעמס וואָס שטיצן PPPoE עמולאַציע, Wi-Fi אַדאַפּטערז (IEEE 802.11-משפּחה), IEEE 802.3 אַדאַפּטערז ADSL מאָדעמס
מאָביל טערמינאַל עקוויפּמענט וואָס קאַנעקץ צו וויירלעס דעוויסעס
מאָביל טערמינאַל עקוויפּמענט וואָס פֿאַרבינדט זיך צו וויירלעסע דעוויסעס מאָביל טערמינאַל עקוויפּמענט וואָס פֿאַרבינדט זיך צו וויירלעסע דעוויסעס
מאָביל טערמינאַל עקוויפּמענט וואָס קאַנעקט זיך צו וויירלעס דעוויסעס דעוויסעס וואָס נוצן עטהערנעט ראַמען ווי דער ווייַטער שיכט פון טראַנספּאָרט. נישט בדעה פֿאַר רוטינג און אינטערנעט קאַנעקטיוויטי דעוויסעס IEEE 802.3 אַדאַפּטערז וואָס טראָגן הויך-גיכקייַט דאַטן באַנדווידט אויף נעץ

USB דעווייס CDC ACM קלאַס רעסורס באדערפענישן פון קאָר

יעדעס מאל איר לייגט צו א CDC ACM קלאס אינסטאנץ צו א USB קאנפיגוראציע דורך א רוף צו דער פונקציע sl_usbd_cdc_acm_add_to_configuration() , וועלן די פאלגנדע רעסורסן ווערן צוגעטיילט פונעם קערן.

מיטל
אינטערפייסיז אַלטערנאַטיווע אינטערפייסיז ענדפּונקטן אינטערפיי גרופּעס

קוואַנטיטי
2 2 3 1

באַמערקט אַז די נומערן זענען פּער קאָנפיגוראַציע. ווען איר שטעלט אויף אייערע SL_USBD_INTERFACE_QUANTITY, SL_USBD_ALT_INTERFACE_QUANTITY, SL_USBD_INTERFACE_GROUP_QUANTITY און SL_USBD_DESCRIPTOR_QUANTITY קאָנפיגוראַציע ווערטן, פֿאַרגעסט נישט צו נעמען אין חשבון וויפֿל קאָנפיגוראַציעס די קלאַס וועט צוגעגעבן ווערן. פֿאַר די SL_USBD_OPEN_ENDPOINTS_QUANTITY קאָנפיגוראַציע ווערט, ווייל ענדפּונקטן ווערן געעפֿנט נאָר ווען אַ קאָנפיגוראַציע ווערט באַשטימט דורך דעם האָסט, דאַרפֿט איר נאָר נעמען אין חשבון די צאָל נויטיקע ענדפּונקטן פֿאַר אַ קלאַס אינסטאַנץ.
USB דעווייס CDC ACM סובקלאס איבערview

די CDC באַזע קלאַס איז צוזאַמענגעשטעלט פון אַ קאָמוניקאַציע קלאַס צובינד (CCI) און דאַטן קלאַס צובינד (DCI), וואָס ווערט דיסקוטירט אין דעטאַל אין USB דעווייס CDC באַזע קלאַס איבערview די סעקציע דיסקוטירט א CCI פון טיפ ACM. עס באשטייט פון א דיפאָלט ענדפּוינט פארן מענעדזשמענט עלעמענט און אן אינטעראַפּט ענדפּוינט פארן נאָטיפיקאַציע עלעמענט. א פּאָר פון באַלק ענדפּונקטן ווערט גענוצט צו פירן נישט-ספּעציפֿיצירטע דאַטן איבערן DCI.
די ACM סובקלאַס ווערט גענוצט דורך צוויי טיפּן קאָמוניקאַציע דעוויסעס:
דעווייסעס וואָס שטיצן AT קאָמאַנדעס (למשל, קולבאַנד מאָדעמס). סעריאַל עמולאַציע דעווייסעס וואָס ווערן אויך גערופן ווירטועל COM פּאָרט דעווייסעס.
עס זענען דא עטלעכע סובקלאס-ספעציפישע פארלאנגען פאר דער ACM סובקלאס. זיי ערלויבן אייך צו קאנטראלירן און קאנפיגורירן דעם אפאראט. די פולשטענדיגע ליסטע און באשרייבונג פון אלע ACM פארלאנגען קען מען געפינען אין דער ספעציפיקאציע.

דרוקרעכט © 2025 סיליקאָן לאַבאָראַטאָריעס. אלע רעכטן רעזערווירט.

21/174

איבערview אונטערקלאס פאר PSTN דעווייסעס, רעוויזיע 1.2, 9טן פעברואר, 2007=, סעקציע 6.2.2.
פֿון דער רשימה שטיצט די סיליקאָן לאַבס9 ACM סובקלאַס די פֿאָלגנדע:
טאַבעלע – ACM ריקוועסץ געשטיצט דורך סיליקאָן לאַבס

אונטערקלאַס בקשה באַשרייַבונג

סעטקאםפיטשער באקוםקאםפיטשער קלארקאםפיטשער

דער באַלעבאָס שיקט דעם בקשה צו קאָנטראָלירן די סעטטינגס פֿאַר אַ געגעבענע קאָמוניקאַציע פֿונקציע. נישט געניצט פֿאַר סעריעלע עמולאַציע.
דער באַלעבאָס שיקט דעם בקשה צו באַקומען די איצטיקע סעטטינגס פֿאַר אַ געגעבענע קאָמוניקאַציע פֿונקציע. נישט געניצט פֿאַר סעריעלע עמולאַציע.
דער באַלעבאָס שיקט דעם בקשה צו ויסמעקן די סעטטינגס פֿאַר אַ געגעבענע קאָמוניקאַציע פֿונקציע. נישט געניצט פֿאַר סעריעלע עמולאַציע.

סעטליין קאָדירונג

דער באַלעבאָס שיקט דעם בקשה צו קאָנפיגורירן די ACM מיטל סעטטינגס: באָד קורס, נומער פון סטאָפּ ביטן, פּאַריטי טיפּ און נומער פון דאַטן ביטן. פֿאַר אַ סעריעל עמולאַציע, ווערט דעם בקשה אויטאָמאַטיש געשיקט דורך אַ סעריעל טערמינאַל יעדעס מאָל איר קאָנפיגורירט די סעריעל סעטטינגס פֿאַר אַן אָפֿענעם ווירטועל COM פּאָרט.

געטליין קאָדירונג

דער האוסט שיקט דעם פארלאנג צו באקומען די איצטיגע ACM סעטינגס (באָד רעיט, סטאָפּ ביטס, פּאַריטעט, דאַטן ביטס). פֿאַר אַ סעריעל עמולאַציע, שיקן סעריעל טערמינאַלס דעם פארלאנג אויטאָמאַטיש בעתן עפענען דעם ווירטועל COM פּאָרט.

SetControlLineState דער האָסט שיקט דעם בקשה צו קאָנטראָלירן דעם קעריער פֿאַר האַלב-דופּלעקס מאָדעמס און אָנווייַזן צי דאַטן טערמינאַל עקוויפּמענט (DTE) איז גרייט צי נישט. אין דעם פאַל פון סעריעל עמולאַציע, איז דער DTE אַ סעריעל טערמינאַל. פֿאַר אַ סעריעל עמולאַציע, לאָזן געוויסע סעריעל טערמינאַלס אייך שיקן דעם בקשה מיט די קאָנטראָלן געשטעלט.

סעטברעיק

דער באַלעבאָס שיקט דעם בקשה צו דזשענערירן אַן RS-232 סטיל ברייק. פֿאַר אַ סעריעל עמולאַציע, געוויסע סעריעל טערמינאַלן לאָזן אייך שיקן דעם בקשה.

סיליקאָן לאַבס9 ACM סובקלאַס ניצט דעם אינטעראַפּט IN ענדפּוינט צו מעלדן דעם האָסט וועגן דעם איצטיקן סעריאַל ליניע צושטאַנד.
ליניע שטאַט איז אַ ביטמאַפּ וואָס אינפאָרמירט דעם באַלעבאָס וועגן:

דאַטן אַוועקגעוואָרפן צוליב אָוווערראַן פּאַריטעט טעות ראַמינג טעות צושטאַנד פון רינג סיגנאַל דעטעקציע צושטאַנד פון ברעכן דעטעקציע מעקאַניזאַם צושטאַנד פון טראַנסמיסיע טרעגער צושטאַנד פון ופנעמער טרעגער דעטעקציע

סיליקאָן לאַבס9 ACM סובקלאַס ימפּלעמענטאַציע איז אין לויט מיט די פאלגענדע ספּעסיפיקאַציע:
יוניווערסאַל סעריאַל באַס, קאָמוניקאַציעס, סובקלאַס פֿאַר PSTN דעוויסעס, רעוויזיע 1.2, 9טן פעברואַר, 2007.
USB דעווייס CDC ACM קלאַס קאָנפיגוראַציע

די סעקציע דיסקוטירט ווי אזוי צו קאנפיגורירן די CDC ACM קלאס (קאמוניקאציע דעווייס קלאס, אבסטראקט קאנטראל מאדעל). עס זענען דא צוויי גרופעס פון קאנפיגוראציע פאראמעטערס:
USB דעווייס CDC ACM קלאַס אַפּליקאַציע ספּעציפֿישע קאָנפֿיגוראַציעס USB דעווייס CDC ACM קלאַס אינסטאַנס קאָנפֿיגוראַציעס
USB דעווייס CDC ACM קלאַס אַפּליקאַציע ספּעציפֿישע קאָנפיגוראַציעס

CDC באַזע קלאַס ACM סובקלאַס
CDC באַזע קלאַס

ערשטנס, צו ניצן דעם סיליקאָן לאַבס USB דעווייס CDC קלאַס מאָדול, וועט איר דאַרפֿן צו סטרויערן די CDC קאָמפּייל-צייט קאָנפיגוראַציע #define-s לויט אייערע אַפּליקאַציע באַדערפענישן. זיי זענען איבערגרופּט אינעם sl_usbd_core_config.h כעדער. file אונטער דער CDC סעקציע. זייער צוועק איז צו אינפארמירן דעם USB דעווייס מאדול וועגן וויפיל USB CDC אביעקטן צו צוטיילן.

דרוקרעכט © 2025 סיליקאָן לאַבאָראַטאָריעס. אלע רעכטן רעזערווירט.

22/174

איבערview

די טאַבעלע אונטן באַשרײַבט יעדעס קאָנפיגוראַציע פעלד וואָס איז בנימצא אין דער קאָנפיגוראַציע סטרוקטור.
טאַבעלע – USB דעווייס CDC קאָנפיגוראַציע דעפינירט

קאָנפיגוראַטיאָן נאָמען
SL_USBD_CDC_CL AS S_INSTANCE_QUANT ITY
SL_USBD_CDC_CONF IGURATION_QUANTI
TY
SL_USBD_CDC_DATA _INTERFACE_QUANTI
TY

באַשרייַבונג
נומער פון קלאַס אינסטאַנסן וואָס איר וועט צוטיילן דורך אַ רוף צו דער פונקציע
sl_usbd_cdc_acm_create_instance() .
נומער פון קאנפיגוראציעס. ACM קלאס אינסטאנצן קענען צוגעגעבן ווערן צו איין אדער מער aaaa קאנפיגוראציעס דורך צו די sl_usbd_cdc_acm_add_to_configuration().
גאַנץ נומער פון דאַטן אינטערפייסיז (DCI) פֿאַר אַלע די CDC פונקציעס. יעדע CDC ACM פונקציע וואָס איז צוגעגעבן צו דער פונקציע sl_usbd_cdc_acm_create_instance() וועט צולייגן דעם אינטערפייס.

פעליקייַט ווערט
2
1
2

ACM סובקלאַס
די ACM סובקלאַס האט איין קאָמפּייל-צייט קאָנפיגוראַציע געוויזן אין דער טאַבעלע אונטן.
טאַבעלע – USB דעווייס CDC ACM קאָנפיגוראַציע דעפינירן

קאָנפיגוראַטיאָן נאָמען
SL_USBD_CDC_ACM_SUBCL ASS_I STANCES_QUANTITY

באַשרייַבונג
קאָנפיגורירט די צאָל סובקלאַס אינסטאַנסן וואָס איר וועט צוטיילן דורך אַ רוף צו די
פונקציע sl_usbd_cdc_acm_create_instance().

פעליקייַט ווערט
2

USB דעווייס CDC ACM קלאַס אינסטאַנס קאָנפיגוראַציעס

די סעקציע דעפינירט די קאָנפיגוראַציעס שייך צו די CDC ACM סעריאַל קלאַס אינסטאַנסעס. קלאַס אינסטאַנס שאַפונג ליניע שטאַט אינטערוואַל רוף פאַרוואַלטונג קייפּאַבילאַטיז p_acm_callbacks
קלאַס אינסטאַנס שאַפונג

כדי צו שאַפֿן אַ CDC ACM סעריאַל קלאַס אינסטאַנס, רופֿט אָן די פֿונקציע T a sl_usbd_cdc_acm_create_instance(). די פֿונקציע דאַרף דרײַ קאָנפֿיגוראַציע אַרגומענטן, ווי דאָ באַשריבן.

ליניע_צושטאנד_אינטערוואַל
דאָס איז דער אינטערוואַל (אין מיליסעקונדעס) וואָס אייער CDC ACM סעריאַל קלאַס אינסטאַנס וועט מעלדן די ליניע שטאַט נאָוטאַפאַקיישאַנז צו די T aa האָסט. דער ווערט מוז זיין אַ מאַכט פון צוויי (1, 2, 4, 8, 16, אאז"וו).

רוף_פֿאַרוואַלטונג_מעגלעכקייטן
רוף פאַרוואַלטונג קייפּאַבילאַטיז ביטמאַפּ. מעגלעכע ווערטן פון די ביטמאַפּ זענען ווי גייט:

ווערט (ביט)
SL_USBD_ACM_SERIAL_CALL_MGMT_DEV
SL_USBD_ACM_SERIAL_CALL_MGMT_DATA_CCI _DCI

באַשרייַבונג
די דעווייס האַנדלט מיט רופן פאַרוואַלטונג אַליין. די דעווייס קען שיקן/באַקומען רופן פאַרוואַלטונג אינפֿאָרמאַציע איבער אַ דאַטן קלאַס צובינד.

p_acm_callbacks

דרוקרעכט © 2025 סיליקאָן לאַבאָראַטאָריעס. אלע רעכטן רעזערווירט.

23/174

איבערview

aa M aa p_acm_callbacks איז א צייגער צו א סטרוקטור פון טיפ sl_usbd_cdc_acm_callbacks_t. איר צוועק איז צו געבן דעם CDC AC Cl ss א סכום פון קאל-בעק פונקציעס וואס זאלן גערופן ווערן ווען א CDC ACM געשעעניש פאסירט. נישט אלע קאל-בעקס זענען פארלאנגט און א נול צייגער ( NULL ) קען אריבערגעגעבן ווערן אין דער קאל-בעקס סטרוקטור וועריאבל ווען דער קאל-בעק איז נישט נויטיג. די טאבעלע אונטן באשרייבט יעדעס קאנפיגוראציע פעלד וואס איז פאראן אין דער קאנפיגוראציע סטרוקטור.
טאַבעלע – sl_usbd_cdc_acm _callbacks_t קאָנפיגוראַציע סטרוקטור

פעלדער

באַשרייַבונג

.ענייבאַל

גערופן ווען די USB קלאַס אינסטאַנץ איז ענייבאַלד

הצלחה.

.דיסייבאַל

גערופן ווען די USB קלאַס אינסטאַנץ איז דיסייבאַלד.

.line_control_changed גערופן ווען א ליניע קאנטראל ענדערונג ווערט באקומען.

ליניע_קאָדירונג_געענדערט ווערט גערופן ווען אַ ליניע קאָדירונג ענדערונג ווערט באַקומען.

פונקציע אונטערשריפט
פּאָיד אַפּ_וסבד_סי-די-סי_אַקם_ענייבאַל(uint8_ט סובקלאַס_נאָבר);
פּאָיד אַפּ_וסבד_סי-די-סי_אַקם_דיסאַבלע(וינט8_ט סובקלאַס_נאָבר);
void app_usbd_cdc_acm_line_control_changed(uint8_t סובקלאס_nbr, uint8_t געשעעניש, uint8_t געשעעניש_chngd); bool app_usbd_cdc_acm_line_coding_changed(uint8_t סובקלאס_nbr, סובקלאס_nbr, sl_usbd_cdc_acm_line_coding_t
*p_line_coding

זע סעקציע רעגיסטרירן געשעעניש נאָטיפיקאַציע קאָלבאַקס פֿאַר קאָלבאַק פונקציעס למשלample.
USB דעווייס CDC ACM קלאַס פּראָגראַממינג גייד

די סעקציע דערקלערט ווי אזוי צו ניצן די CDC Abstract Control Model קלאס. איניציאליזירן די USB Device CDC ACM קלאס צולייגן א USB Device CDC ACM קלאס אינסטאנץ צו אייער דעווייס קאמוניקירן ניצן די CDC ACM קלאס
איניציאַליזירן די USB דעווייס CDC ACM קלאַס

כדי צו לייגן צו CDC ACM קלאס פונקציאנאליטעט צו אייער דעווייס, מוזט איר ערשט איניציאליזירן די CDC באזע קלאס און די ACM סובקלאס דורך אויספילן די פונקציעס sl_usbd_cdc_init() און sl_usbd_cdc_acm_init(). דער ביישפיל אונטן ווייזט ווי אזוי צו לייגן צו sl_usbd_cdc_init() און sl_usbd_cdc_acm_init() ניצנדיק די פעליקייט ארגומענטן.

Exampלע – איניציאליזאציע פון ​​CDC ACM קלאס

sl_status_t סטאַטוס;
סטאַטוס = sl_usbd_cdc_init(); אויב (סטאַטוס ! SL_STATUS_OK) { /* עס איז פארגעקומען א טעות. מען זאָל צולייגן דא די טעותן. */
}
סטאַטוס = sl_usbd_cdc_acm_init(); אויב (סטאַטוס ! SL_STATUS_OK) { /* עס איז פארגעקומען א טעות. מען זאָל צולייגן דא די טעותן. */
}
צולייגן אַ USB מיטל CDC ACM קלאַס אינסטאַנץ צו דיין מיטל
כדי צו לייגן CDC ACM קלאַס פאַנגקשאַנאַליטי צו אייער מיטל, מוזט איר שאַפֿן אַן אינסטאַנץ, און דערנאָך לייגן עס צו צו אייער מיטל'ס קאָנפיגוראַציע(ס).
שאַפֿן אַ CDC ACM קלאַס אינסטאַנץ

דרוקרעכט © 2025 סיליקאָן לאַבאָראַטאָריעס. אלע רעכטן רעזערווירט.

24/174

איבערview
צולייגן די CDC ACM קלאַס אינסטאַנץ צו אייערע דעווייס'ס קאָנפיגוראַציע(ס) רעגיסטרירן געשעעניש אָנזאָג קאָלבאַקס
שאַפֿן אַ CDC ACM קלאַס אינסטאַנץ
שאַפֿן אַ CDC AC קלאַס אינסטאַנץ דורך אויסרופן די פונקציע sl_usbd_cdc_acm_create_instance(). דאָס בייַשפּיל אונטן ווײַזט ווי אַזוי צו שאַפֿן אַ CDC AC קלאַס אינסטאַנץ מיט sl_usbd_cdc_acm_create_instance().
Example – שאַפֿן אַ CDC ACM פֿונקציע דורך sl_usbd_cdc_acm_create_instance()

uint8_t סובקלאס_nbr; sl_status_t סטאטוס;
סטאַטוס = sl_usbd_cdc_acm_create_instance(64u, SL_USBD_ACM_SERIAL_CALL_MGMT_DATA_CCI_DCI | SL_USBD_ACM_SERIAL_CALL_MGMT_DEV, נול, &סובקלאַס_נומער);
אויב (סטאַטוס ! SL_STATUS_OK) { /* עס איז געשען אַ טעות. מען זאָל צולייגן דאָ די טעות באַהאַנדלונג. */
}
צולייגן די CDC ACM קלאַס אינסטאַנץ צו אייערע דעווייס'ס קאָנפיגוראַציע(ס)
נאכדעם וואס איר האט באשאפן א CDC ACM קלאס אינסטאנץ, קענט איר עס צולייגן צו א קאנפיגוראציע דורך אנרופן די פונקציע
sl_usbd_cdc_acm_add_to_configuration().
דער בייַשפּיל אונטן ווייזט ווי אַזוי צו נוצן sl_usbd_cdc_acm_add_to_configuration().
Exampלע – רוף צו USBD ACM sl_usbd_cdc_acm_add_to_configuration()

sl_status_t סטאַטוס;

סטאַטוס = sl_usbd_cdc_acm_add_to_configuration(subclass_nbr,

(1)

קאָנפיג_nbr_fs);

(2)

אויב (סטאַטוס ! SL_STATUS_OK) {

/* עס איז געשען אַ טעות. מען זאָל צולייגן דאָ די באַהאַנדלונג פון טעותן. */

}

aaa (1) קל ss נומער צו לייגן צו דער קאנפיגוראציע וואס ווערט צוריקגעגעבן דורך sl_usbd_cdc_acm_create_instance(). (2) קאנפיגוראציע נומער (דא לייגט עס צו צו א פול-גיך קאנפיגוראציע).
רעגיסטרירן געשעעניש מעלדונג קאָלבאַקס
די CDC ACM סעריאַל קלאַס קען מעלדן אייער אַפּליקאַציע וועגן יעדע ענדערונג אין ליניע קאָנטראָל אָדער קאָדירונג דורך מעלדונג קאָלבעק פונקציעס. א קאָלבעק פונקציעס סטרוקטור קען ווערן דורכגעגעבן ווי אַ אַרגומענט בעת דער ACM אינסטאַנץ שאַפונג. באַמערקט אַז יענע קאָלבעקס זענען אָפּציאָנעל. למשל.ampלע – CDC ACM קאָלבאַקס רעגיסטראַציע אילוסטרירט די נוצן פון די קאָלבאַק רעגיסטראַציע פונקציעס. למשלampלע – CDC ACM קאַללבאַקס ימפּלעמענטאַציע ווייזט אַן עקסampדי ווירקונג פון די קאלבעק פונקציעס.
Exampלע – CDC ACM צוריקרופן רעגיסטראַציע

דרוקרעכט © 2025 סיליקאָן לאַבאָראַטאָריעס. אלע רעכטן רעזערווירט.

25/174

איבערview

uint8_t סובקלאס_nbr; sl_status_t סטאטוס;
sl_usbd_cdc_acm_callbacks_t sli_usbd_cdc_acm_callbacks = { app_usbd_cdc_acm_connect, app_usbd_cdc_acm_disconnect, app_usbd_cdc_acm_line_control_changed, app_usbd_cdc_acm_line_coding_changed, };
סטאַטוס = sl_usbd_cdc_acm_create_instance(64u, SL_USBD_ACM_SERIAL_CALL_MGMT_DATA_CCI_DCI | SL_USBD_ACM_SERIAL_CALL_MGMT_DEV, &sli_usbd_cdc_acm_callbacks, &subclass_nbr);
אויב (סטאַטוס ! SL_STATUS_OK) { /* עס איז פארגעקומען א טעות. מען זאָל צולייגן דא די טעותן. */ }
Exampלע – CDC ACM קאָלבאַקס ימפּלעמענטאַציע

בול app_usbd_cdc_acm_line_coding_changed (uint8_t

סובקלאַס_נומער,

sl_usbd_cdc_acm_line_coding_t *p_line_coding)

{

uint32_t באַודרייט_נייַ;

uint8_t פּאַריטעט_נייַ;

uint8_t סטאָפּ_ביטס_ניי;

uint8_t דאַטן_ביטס_ניי;

/* טו-דא אנװענדן נײַע ליניע קאָדירונג.*/ באַודרייט_נײַ = פּ_ליניע_קאָדירונג->באַודרייט; פּאַריטעט_נײַ = פּ_ליניע_קאָדירונג->פּאַריטעט; סטאָפּ_ביטס_נײַ = פּ_ליניע_קאָדירונג->סטאָפּביטס; דאַטאַ_ביטס_נײַ = פּ_ליניע_קאָדירונג->דאַטאַביטס;

צוריקקער (אמת);

(1)

}

פּאָיד app_usbd_cdc_acm_line_control_changed (uint8_t סובקלאַס_nbr, uint8_t געשעעניש, uint8_t געשעעניש_changed)
{ בול רץ_שטאַט; בול רץ_שטאַט_געטוישט; בול דטר_שטאַט; בול דטר_שטאַט_געטוישט; בול ברק_שטאַט; בול ברק_שטאַט_געטוישט;

/* טו-דא אנװענדן א נייע ליניע קאנטראל. */ rts_state = ((event & SL_USBD_CDC_ACM_CTRL_RTS) ! 0) ? אמת : נישט אמת; rts_state_changed = ((event_changed & SL_USBD_CDC_ACM_CTRL_RTS) ! 0) ? אמת : נישט אמת; dtr_state = ((event & SL_USBD_CDC_ACM_CTRL_DTR) ! 0) ? אמת : נישט אמת; dtr_state_changed = ((event_changed & SL_USBD_CDC_ACM_CTRL_DTR) ! 0) ? אמת : נישט אמת; brk_state = ((event & SL_USBD_CDC_ACM_CTRL_BREAK) ! 0) ? אמת : נישט אמת; brk_state_changed = ((event_changed & SL_USBD_CDC_ACM_CTRL_BREAK) ! 0) ? אמת : פאַלש;
}

(1) עס איז וויכטיג צוריקצוגעבן פאַלש צו דער פונקציע אויב די ליניע קאָדירונג אַפּליקאַציע איז דורכגעפאַלן. אַנדערש, צוריקגעבן אמת.
קאָמוניקירן ניצנדיק די CDC ACM קלאַס
סעריעל סטאַטוס
ליניע קאָדירונג ליניע קאָנטראָל

דרוקרעכט © 2025 סיליקאָן לאַבאָראַטאָריעס. אלע רעכטן רעזערווירט.

26/174

איבערview

ליניע שטאַט סובקלאַס אינסטאַנס קאָמוניקאַציע
סעריעל סטאַטוס
ליניע קאָדירונג
דער USB האָסט קאָנטראָלירט די ליניע קאָדירונג (באָד רעיט, פּאַריטעט, אאז"וו) פון די CDC ACM מיטל. ווען נייטיק, איז די אַפּליקאַציע פאַראַנטוואָרטלעך פֿאַר שטעלן די ליניע קאָדירונג. עס זענען דאָ צוויי פונקציעס צוגעשטעלט צו צוריקקריגן און שטעלן די איצטיקע ליניע קאָדירונג, ווי באַשריבן אין דער טאַבעלע אונטן.
טאַבעלע – CDC ACM ליניע קאָדירונג פונקציעס

פֿונקציע
sl_usbd_cdc_acm_g e t_line _coding ()
sl_usbd_cdc_acm_s e t_line _coding ()

באַשרייַבונג
אייער אַפּליקאַציע קען באַקומען די איצטיקע ליניע קאָדירונג סעטטינגס געשטעלט פֿונעם האָסט מיט SetLineCoding ריקוועסץ אָדער מיט דער פֿונקציע sl_usbd_cdc_acm_set_line_coding() .
אייער אַפּליקאַציע קען שטעלן די ליניע קאָדירונג. דער באַלעבאָס קען צוריקקריגן די סעטטינגס מיטן GetLineCoding פארלאנג.

שורה קאָנטראָל
דער USB האָסט קאָנטראָלירט די ליניע קאָנטראָל (RTS און DTR פּינס, ברעיק סיגנאַל, און אַזוי ווייטער) פון די CDC ACM מיטל. ווען נייטיק, איז אייער אַפּליקאַציע פאַראַנטוואָרטלעך פֿאַר אָנווענדן די ליניע קאָנטראָלס. אַ פֿונקציע איז צוגעשטעלט צו צוריקקריגן און שטעלן די איצטיקע ליניע קאָנטראָלס, ווי עס איז באַשריבן אין דער טאַבעלע אונטן.
טאַבעלע – CDC ACM ליניע קאָנטראָל פונקציעס

פֿונקציע
sl_usb d _cd c_acm_g e t_line _contr o l_state ()

אייער אַפּליקאַציע קען באַקומען דעם איצטיקן קאָנטראָל ליניע צושטאַנד וואָס איז באַשטימט געוואָרן דורך דעם האָסט מיט דער SetControlLineState בקשה.

שורה שטאַט
דער USB האָסט באַקומט דעם ליניע צושטאַנד אין אַ רעגולערן אינטערוואַל. אייער אַפּליקאַציע מוז דערהייַנטיקן דעם ליניע צושטאַנד יעדעס מאָל ווען עס ענדערט זיך. ווען נייטיק, איז אייער אַפּליקאַציע פאַראַנטוואָרטלעך פֿאַר באַשטעטיקן דעם ליניע צושטאַנד. צוויי פונקציעס זענען צוגעשטעלט צו באַקומען און באַשטעטיקן די איצטיקע ליניע קאָנטראָלס, ווי באַשריבן אין דער טאַבעלע אונטן.
טאַבעלע – CDC ACM ליניע שטאַט פונקציעס

פֿונקציע
sl_usb d _cd c_acm_se t _line _state _e ve nt()
sl_usbd_cdc_acm_cle ar_line _state _e ve nt()

אייער אַפּליקאַציע קען שטעלן יעדע ליניע שטאַט געשעעניש(ן). בשעת איר שטעלט דעם ליניע שטאַט, ווערט אַן אינטעראַפּט IN טראַנספער געשיקט צום האָסט צו מיטטיילן וועגן אים וועגן אַן ענדערונג אין דעם סעריעלן ליניע שטאַט.
אַפּליקאַציע קען אויסמעקן צוויי געשעענישן פון די ליניע שטאַט: טראַנסמיסיע טרעגער און ריסיווער טרעגער דעטעקציע. אַלע די אנדערע געשעענישן ווערן זעלבסט-אויסגעמעקט דורך די ACM סעריאַל עמולאַציע סובקלאַס.

סובקלאַס אינסטאַנץ קאָמוניקאַציע

סיליקאָן לאַבס' ACM סובקלאַס אָפפערט די פאלגענדע פונקציעס צו קאָמוניקירן מיטן באַלעבאָס. פֿאַר מער פרטים וועגן די functions9 פּאַראַמעטערס, זעט די CDC ACM סובקלאַס פונקציעס רעפֿערענץ.

פֿונקציע נאָמען
sl_usb d _cd c_acm_ לייען אד () sl_usb d _cd c_acm_שרייבן ()

אָפּעראַציע
באַקומט דאַטן פֿון האָסט דורך אַ מאַסע OUT ענדפּוינט. די פֿונקציע בלאָקירט. שיקט דאַטן צום האָסט דורך אַ מאַסע IN ענדפּוינט. די פֿונקציע בלאָקירט.

דרוקרעכט © 2025 סיליקאָן לאַבאָראַטאָריעס. אלע רעכטן רעזערווירט.

27/174

איבערview

טאַבעלע – CDC ACM קאָמוניקאַציע API קיצער aaaaa sl_usbd_cdc_acm_read() און sl_usbd_cdc_acm_write() צושטעלן סינקראָנישע קאָמוניקאַציע, וואָס מיינט אַז די טראַנספער בלאָקירט. מיט אַנדערע ווערטער, ווען מען רופט די פונקציע, בלאָקירט די אַפּליקאַציע ביז די טראַנספער איז פֿאַרענדיקט מיט אָדער אָן אַ טעות. מען קען ספּעציפֿיצירן אַ טיימאַוט כּדי צו פֿאַרמייַדן וואַרטן אויף אייביק. די עקס.ampדי לינק אונטן ווייזט א לייען און שרייבן ביישפילampוואָס באַקומט דאַטן פֿונעם האָסט ניצנדיק דעם בולק OUT ענדפּוינט און שיקט דאַטן צום האָסט ניצנדיק דעם בולק IN ענדפּוינט.
ליסטינג – סעריאַל לייענען און שרייבן עקסample

__אויסגעשטעלט(4) uint8_t rx_buf[2];

__אויסגעשטעלט(4) uint8_t טקס_בוף[2];

uint32_t

xfer_len;

sl_status_t

סטאַטוס;

סטאַטוס = sl_usbd_cdc_acm_read(סובקלאַס_nbr,

(1)

רקס_בוף,

(2)

2ו,

0ו,

(3)

&xfer_len);

אויב (סטאַטוס ! SL_STATUS_OK) {

/* עס איז געשען אַ טעות. מען זאָל צולייגן דאָ די באַהאַנדלונג פון טעותן. */

}

סטאַטוס = sl_usbd_cdc_acm_write(סובקלאַס_nbr,

(1)

טקס_בוף,

(4)

2ו,

0ו,

(3)

&xfer_len);

אויב (סטאַטוס ! SL_STATUS_OK) {

/* עס איז געשען אַ טעות. מען זאָל צולייגן דאָ די באַהאַנדלונג פון טעותן. */

}

ט אאאאאא מ (1) די קלאס אינסטאנץ נומער באשאפן מיט sl_usbd_cdc_acm_create_instance() גיט אן אינטערנע רעפערענץ צו די AC סובקלאס צו רוטן די טראנספער צו די ריכטיגע באלק OUT אדער IN ענדפונקט. (2) אייער אפליקאציע מוז זיכער מאכן אז דער בופער וואס ווערט צוגעשטעלט צו די פונקציע איז גרויס גענוג צו אקאמאדירן אלע דאטן. אנדערש קענען סינקראניזאציע פראבלעמען פאסירן. (3) כדי צו פארמיידן אן אומענדליכע בלאקירנדע סיטואציע, ספעציפיצירט א טיימאוט אויסגעדריקט אין מיליסעקונדעס. א ווערט פון 809 מאכט די אפליקאציע אויפגאבע ווארטן אויף אייביג. (4) די אפליקאציע גיט דעם איניציאליזירטן טראנסמיט בופער.

דרוקרעכט © 2025 סיליקאָן לאַבאָראַטאָריעס. אלע רעכטן רעזערווירט.

28/174

איבערview
איבערview

יו-עס-בי דעווייס HID קלאַס

יו-עס-בי דעווייס HID קלאַס איבערview יו-עס-בי דעווייס HID קלאַס רעסורס באדערפענישן פון קאָר יו-עס-בי דעווייס HID קלאַס קאָנפיגוראַציע יו-עס-בי דעווייס HID קלאַס פּראָגראַממינג גייד HID פּעריִאָדישע אַרייַנשרייַב באַריכטן אַרבעט
די סעקציע באשרייבט די מענטשלעכע צובינד מיטל (HID) קלאַס וואָס ווערט געשטיצט דורך סיליקאָן לאַבס USB מיטל.
די HID קלאַס נעמט אַרום דעוויסעס געניצט דורך מענטשן צו קאָנטראָלירן קאָמפּיוטער אַפּעריישאַנז, אַזאַ ווי קלאַוויאַטורן, מײַז, פּוינטינג דעוויסעס און שפּיל דעוויסעס.
די HID קלאַס קען אויך געניצט ווערן אין אַ קאָמפּאָזיט מיטל וואָס כּולל קאָנטראָלן ווי קנעפּלעך, סוויטשיז, קנעפּלעך און סליידערס. למשלampלע, שטום און וואָלומען קאָנטראָלס אין אַן אַודיאָ כעדסעט ווערן קאָנטראָלירט דורך די HID פונקציע פון ​​​​​​דעם כעדסעט. HID קלאַס קען אויסטוישן דאַטן פֿאַר יעדן צוועק ניצנדיק בלויז קאָנטראָל און ינטעראַפּט טראַנספערס.
די HID קלאַס איז איינע פון ​​די עלטסטע און מערסט גענוצטע USB קלאַסן. אַלע די הויפּט האָסט אָפּערייטינג סיסטעמען צושטעלן אַ נאַטירלעכן דרייווער צו פאַרוואַלטן HID דעוויסעס, וואָס איז וואָס אַ פאַרשיידנקייט פון פאַרקויפער-ספּעציפֿישע דעוויסעס אַרבעטן מיט די HID קלאַס. די קלאַס אויך כולל פאַרשידענע טייפּס פון אַוטפּוט זאכן אַזאַ ווי LEDs, אַודיאָ, טאַקטיל פידבעק, עטק.
די HID אימפלעמענטאציע איז אין איינקלאנג מיט די פאלגנדע ספעציפיקאציעס:
דעווייס קלאס דעפיניציע פאר מענטשלעכע אינטערפייס דעווייסעס (HID), 6/27/01, ווערסיע 1.11. יוניווערסאל סעריאַל באַס HID באַניץ טישן, 10/28/2004, ווערסיע 1.12.
יו-עס-בי דעווייס HID קלאַס איבערview
איבערview
א HID דעווייס איז צוזאמענגעשטעלט פון די פאלגנדע ענדפונקטן:
א פּאָר קאָנטראָל IN און OUT ענדפּונקטן גערופן דער פעליקייט ענדפּוינט אן אינטעראַפּט IN ענדפּוינט אן אָפּציאָנעלער אינטעראַפּט OUT ענדפּוינט
די טאַבעלע אונטן באַשרײַבט די נוצן פון די פֿאַרשידענע ענדפּונקטן:
טאַבעלע – HID קלאַס ענדפּונקטן באַניץ

ענדפּונקט ריכטונג באַניץ

קאָנטראָל IN
קאָנטראָל
OUT
אינטעראַפּט אין
יבעררייַסן
OUT

דעווייס-צו-האוסט
האָסט-צו-דעווייס
דעווייס-צו-האוסט
האָסט-צו-דעווייס

סטאַנדאַרט בקשות פֿאַר ענומעראַציע, קלאַס-ספּעציפֿישע בקשות, און דאַטן קאָמוניקאַציע (אַרייַנפֿוט, פֿעיִטשער באַריכטן געשיקט צום האָסט מיט GET_REPORT בקשה). סטאַנדאַרט בקשות פֿאַר ענומעראַציע, קלאַס-ספּעציפֿישע בקשות און דאַטן קאָמוניקאַציע (אַוטפּוט, פֿעיִטשער באַריכטן באַקומען פֿונעם האָסט מיט SET_REPORT בקשה). דאַטן קאָמוניקאַציע (אַרייַנפֿוט און פֿעיִטשער באַריכטן).
דאַטן קאָמוניקאַציע (רעזולטאַט און שטריך באַריכטן).

באריכט

דרוקרעכט © 2025 סיליקאָן לאַבאָראַטאָריעס. אלע רעכטן רעזערווירט.

29/174

איבערview

א באַלעבאָס און אַ HID מיטל וועקסלען דאַטן ניצנדיק באַריכטן. אַ באַריכט כּולל פֿאָרמאַטירטע דאַטן וואָס געבן אינפֿאָרמאַציע וועגן קאָנטראָלן און אַנדערע פֿיזישע ענטיטעטן פֿון דעם HID מיטל. אַ קאָנטראָל איז מאַניפּולירבאר דורך דעם באַניצער און אָפּערירט אַן אַספּעקט פֿון דעם מיטל. למשלampלמשל, א קאנטראל קען זיין א קנעפל אויף א מויז אדער א קלאַוויאַטור, א סוויטש, א.א.וו. אנדערע ענטיטעטן אינפאָרמירן דעם באַניצער וועגן דעם צושטאַנד פון געוויסע אַפּאַראַט'ס פֿעיִטשערז.ampלע, על-אי-דיס אויף א קלאַוויאַטור מעלדן דעם באַניצער וועגן דעם קאַפּס לאָק אָן, דעם נומערישן קלאַוויאַטור אַקטיוו, אאַז"וו.
דער פֿאָרמאַט און די נוצן פֿון אַ באַריכט דאַטן ווערט פֿאַרשטאַנען דורך דעם באַלעבאָס דורך אַנאַליזירן דעם אינהאַלט פֿון אַ באַריכט דעסקריפּטאָר. אַנאַליזירן דעם אינהאַלט ווערט געטאָן דורך אַ פּאַרסער. דער באַריכט דעסקריפּטאָר באַשרײַבט דאַטן וואָס ווערן צוגעשטעלט דורך יעדן קאָנטראָל אין אַ מיטל. עס איז צוזאַמענגעשטעלט פֿון זאַכן וואָס זענען שטיקלעך אינפֿאָרמאַציע וועגן דעם מיטל און באַשטייען פֿון אַ 1-בייט פּרעפֿיקס און אַ וועריאַבל-לענג.
דאַטן. פֿאַר מער פרטים וועגן דעם פֿאָרמאַט פֿון דעם אַרטיקל, זעט
1.11=, סעקציע 5.6 און 6.2.2.
עס זענען דא דריי הויפּט טיפּן פון זאכן:
הויפּט אייטעם דעפינירט אדער גרופּירט געוויסע טיפן דאַטן פעלדער.
גלאבאלער אייטעם באשרייבט די דאטן אייגנשאפטן פון א קאנטראל.
לאקאל אייטעם באשרייבט די דאטן אייגנשאפטן פון א קאנטראל.
יעדער אייטעם טיפ ווערט דעפינירט דורך פארשידענע פונקציעס. אן אייטעם פונקציע קען אויך גערופן ווערן א tagאן אייטעם פונקציע קען געזען ווערן אלס א סוב-אייטעם וואס געהערט צו איינעם פון די דריי הויפט אייטעם טיפן. די טאבעלע אונטן גיט א קורצע איבערבליק.view פון די item9s פונקציעס אין יעדן item טיפ. פאר א פולשטענדיגע באשרייבונג פון די זאכן אין יעדער קאטעגאריע, זעה
טאַבעלע – באַשרייַבונג פֿון יעדן טיפּ פֿון דעם זאַך

אייטעם אייטעם טיפ פונקציע

באַשרייַבונג

הויפּט אַרייַנשרייַב

באַשרײַבט אינפֿאָרמאַציע וועגן די דאַטן וואָס ווערן צוגעשטעלט דורך איין אָדער מער פֿיזישע קאָנטראָלן.

הויפּט אַרויסגאַנג באַשרײַבט דאַטן געשיקט צום מיטל.

הויפּט שטריך

באַשרײַבט אינפֿאָרמאַציע וועגן די קאָנפיגוראַציע פֿון דעם מיטל וואָס ווערט געשיקט אָדער באַקומען פֿון דעם מיטל, וואָס האָט אַן השפּעה אויף דעם אַלגעמיינעם נאַטור פֿון דעם מיטל אָדער איינעם פֿון זײַנע קאָמפּאָנענטן.

הויפּט זאַמלונג גרופּע פֿאַרבונדענע זאכן (אַרייַנגאַנג, אַרויסגאַנג אָדער שטריך).

הויפּט סוף פון שליסט אַ זאַמלונג. זאַמלונג

דרוקרעכט © 2025 סיליקאָן לאַבאָראַטאָריעס. אלע רעכטן רעזערווירט.

30/174

איבערview

אייטעם אייטעם טיפ פונקציע

באַשרייַבונג

גלאבאלע באַניץ בלאַט

אידענטיפיצירט אַ פונקציע וואָס איז בנימצא אין דעם מיטל.

גלאָבאַלע לאָגישע דעפינירט די אונטערשטע גרענעץ פון די געמאָלדענע ווערטן אין לאָגישע איינהייטן. מינימום

גלאָבאַלע לאָגישע דעפינירט דעם אויבערשטן גרענעץ פון די געמאָלדענע ווערטן אין לאָגישע איינהייטן. מאַקסימום

גלאָבאַלע פיזישע דעפינירט דעם אונטערשטן גרענעץ פון די געמאָלדענע ווערטן אין פיזישע איינהייטן, דאָס הייסט דער לאָגישער מינימום אויסגעדריקט אין פיזישע איינהייטן.

גלאָבאַלע פיזישע דעפינירט דעם אויבערשטן גרענעץ פון די געמאָלדענע ווערטן אין פיזישע איינהייטן, דאָס איז דער לאָגישער מאַקסימום מאַקסימום אויסגעדריקט אין פיזישע איינהייטן.

גלאבאלע איינהייט

ווײַזט אָן דעם איינהייט עקספּאָנענט אין באַזע 10. דער עקספּאָנענט גייט פֿון -8 ביז +7.

עקספּאָנענט

גלאבאלע איינהייט

ווײַזט אָן די איינהייט פֿון די געמאָלדענע ווערטן. למשל, לענג, מאַסע, טעמפּעראַטור איינהייטן, אאַז"וו.

גלאבאלע באריכט גרייס

ווײַזט אָן די גרייס פֿון די באַריכט־פֿעלדער אין ביטן.

גלאבאלער באריכט אידענטיפיקאציע ווײַזט אָן דעם פּרעפיקס וואָס איז צוגעגעבן צו אַ באַזונדערן באריכט.

גלאבאלע באריכט צייל

ווײַזט אָן די צאָל דאַטן־פֿעלדער פֿאַר אַן אייטעם.

גלאבאלער שטופּ

שטעלט א קאפיע פון ​​דער גלאבאלער אייטעם שטאַט טאבעלע אויפן סי-פי-יו סטעק.

גלאבאלער פּאָפּ

ערזעצט די אייטעם שטאַט טאַבעלע מיט דער לעצטער סטרוקטור פֿון דעם סטעק.

לאקאלע באַניץ

רעפּרעזענטירט אַן אינדעקס צו באַצייכענען אַ ספּעציפֿישע באַניץ אין אַ באַניץ בלאַט. עס ווײַזט דעם פאַרקויפֿער'ס פֿאָרגעלייגטע באַניץ פֿאַר אַ ספּעציפֿישע קאָנטראָל אָדער גרופּע קאָנטראָלן. אַ באַניץ גיט אינפֿאָרמאַציע צו אַן אַפּליקאַציע דעוועלאָפּער וועגן וואָס אַ קאָנטראָל מעסט טאַקע.

לאקאלע באַניץ

דעפינירט די אָנהייב נוצן פֿאַרבונדן מיט אַן אַרעי אָדער ביטמאַפּ.

מינימום

לאקאלע באַניץ

דעפינירט די ענדגילטיגע באַניץ פֿאַרבונדן מיט אַן אַרעי אָדער ביטמאַפּ.

מאַקסימום

לאקאלער באַצייכענונג באַשטימט דעם קערפּער טייל געניצט פֿאַר אַ קאָנטראָל. אינדעקס ווייזט צו אַ באַצייכענונג אין דעם פיזישן

אינדעקס

באַשרײַבער.

לאקאל באַצייכענונג דעפינירט דעם אינדעקס פון דעם אָנהייב באַצייכענונג פֿאַרבונדן מיט אַן אַרעי אָדער ביטמאַפּ. מינימום

לאקאל באַצייכענונג דעפינירט דעם אינדעקס פון דעם ענדיקנדיקן באַצייכענונג פֿאַרבונדן מיט אַן אַרעי אָדער ביטמאַפּ.

לאקאלער סטרינג אינדעקס

סטרינג אינדעקס פֿאַר אַ סטרינג דעסקריפּטאָר. עס דערלויבט אַ סטרינג צו זיין פֿאַרבונדן מיט אַ באַזונדערן נומער אָדער קאָנטראָל.

לאקאלע סטרינג

ספּעציפֿיצירט דעם ערשטן סטרינג אינדעקס ווען מען באַשטימט אַ גרופּע פֿון סיקווענטשאַלע סטרינגס צו קאָנטראָלן אין אַן אַרעי

מינימום אדער ביטמאַפּ.

לאקאל לאקאל

שטריקל מאַקסימום
דעלימיטער

ספּעציפֿיצירט דעם לעצטן סטרינג אינדעקס ווען מען צוטיילט אַ גרופּע פֿון סיקווענטשאַלע סטרינגס צו קאָנטראָלן אין אַן אַרעי אָדער ביטמאַפּ.
דעפינירט דעם אָנהייב אָדער סוף פֿון אַ סכום לאָקאַלע זאַכן.

א control9s דאטן מוז דעפינירן לפחות די פאלגנדע זאכן:
אינפוט, אויטפוט אדער אייגנשאפט הויפט זאכן באניץ לאקאלער זאך באניץ בלאט גלאבאלער זאך לאגישער מינימום גלאבאלער זאך לאגישער מאקסימום גלאבאלער זאך באריכט גרייס גלאבאלער זאך

דרוקרעכט © 2025 סיליקאָן לאַבאָראַטאָריעס. אלע רעכטן רעזערווירט.

31/174

איבערview
באַריכט צייל גלאָבאַלע אייטעם די טאַבעלע אונטן ווייזט די רעפּרעזענטאַציע פון ​​אַ מאַוס באַריכט דעסקריפּטאָר אינהאַלט פֿון אַ האָסט HID פּאַרסער פּערספּעקטיוו. די מויז האט דריי קנעפּלעך (לינקס, רעכטס, און ראָד). דער קאָד וואָס ווערט פּרעזענטירט אין דעם בייַשפּיל.ampאונטן איז אַ קאָד אימפּלעמענטאַציע וואָס קאָראַספּאַנדירט צו דעם מויז באריכט דעסקריפּטאָר רעפּרעזענטאַציע.
פיגור – באריכט דעסקריפּטאָר אינהאַלט פֿון אַ האָסט HID פּאַרסער View

(1) די באַניץ בלאַט נומער פֿונקציע ספּעציפֿיצירט די אַלגעמיינע פֿונקציע פֿון דעם מיטל. אין דעם בייַשפּילampלע, די HID דעווייס געהערט צו א
אַלגעמיינע דעסקטאַפּ קאָנטראָל.
(2) די קאלעקציע אפליקאציע גרופירט הויפט זאכן וואס האבן א געמיינזאמען צוועק און זענען אפשר באקאנט פאר אפליקאציעס. אין דיאגראם, איז די גרופע צוזאמענגעשטעלט פון דריי הויפט איינגאבע זאכן. פאר די קאלעקציע, איז די פארגעשלאגענע באניץ פאר די קאנטראלן א מויז ווי אנגעצייכנט דורך די באניץ זאך. (3) איינגענעסטטע קאלעקציעס קענען ווערן גענוצט צו געבן מער פרטים וועגן די באניץ פון איין קאנטראל אדער גרופע קאנטראלן פאר אפליקאציעס. אין דעם ביישפיל.ampדי, די קאלעקציע פיזישע, איינגענעסט אין די קאלעקציע אפליקאציע, איז צוזאמענגעשטעלט פון די זעלבע דריי אינפוט זאכן וואס פארמען די קאלעקציע אפליקאציע. די קאלעקציע פיזישע ווערט גענוצט פאר א סכום דאטן זאכן וואס רעפרעזענטירן דאטן פונקטן געזאמלט ביי איין געאמעטרישן פונקט. אין דעם ביישפילampלע, די פארגעשלאגענע באניץ איז א צייגער ווי אנגעצייכנט דורך דעם באניץ איינטעם. דא באציט זיך דער צייגער באניץ צו די מויז פאזיציע קאארדינאטן און די סיסטעם ווייכווארג וועט איבערזעצן די מויז קאארדינאטן אין באוועגונג פון דעם עקראן קורסאר. (4) איינגענעסטעד באניץ בלעטער זענען אויך מעגלעך און געבן מער פרטים וועגן א געוויסן אספעקט אין דער אלגעמיינער פונקציע פון ​​דעם אפאראט. אין דעם פאל, צוויי אינפוט איינטעם זענען גרופירט און קארעספאנדירן צו די קנעפלעך פון דער מויז. איין אינפוט איינטעם דעפינירט די דריי קנעפלעך פון דער מויז (רעכטס, לינקס און ראד) אין טערמינען פון נומער פון דאטן פעלדער פאר דעם איינטעם (רעפארט צייל איינטעם), גרייס פון א דאטן פעלד (רעפארט גרייס איינטעם) און מעגלעכע ווערטן פאר יעדן דאטן פעלד (באניץ מינימום און מאקסימום, לאגיש מינימום און מאקסימום איינטעם). דער אנדערער אינפוט איינטעם איז א 13-ביט קאנסטאנט וואס ערלויבט די אינפוט באריכט דאטן צו זיין אויסגעשטעלט אויף א בייט גרענעץ. דער אינפוט איינטעם ווערט גענוצט נאר פאר פּאַדינג צוועקן. (5) נאך א איינגענעסטעד באניץ בלאט וואס באציט זיך צו א גענערישן דעסקטאפ קאנטראל איז דעפינירט פאר די מויז פאזיציע קאארדינאטן. פאר דעם באניץ בלאט, באשרייבט דער אינפוט איינטעם די דאטן פעלדער וואס קארעספאנדירן צו די x- און y-אקס ווי ספעציפיצירט דורך די צוויי באניץ
זאכן.
נאכדעם וואס מען אנאליזירט דעם פריערדיגן אינהאלט פונעם מאוס באריכט דעסקריפּטאר, קען דער האוסט9'ס HID פארזער אויסטייטשן די אינפוט באריכט דאטן וואס זענען געשיקט געווארן דורך דעם אפאראט מיט אן אינטעראפט IN טראנספער אדער אלס ענטפער צו א GET_REPORT פארלאנג. די אינפוט באריכט דאטן וואס קארעספאנדירן צום מאוס באריכט דעסקריפּטאר וואס ווערט געוויזן אין בילד – באריכט דעסקריפּטאר אינהאלט פון א האוסט HID פארזער. View is

דרוקרעכט © 2025 סיליקאָן לאַבאָראַטאָריעס. אלע רעכטן רעזערווירט.

32/174

איבערview

געוויזן אין דער טאַבעלע אונטן. די גאַנצע גרייס פון די באַריכט דאַטן איז 4 בייטס. פֿאַרשידענע טייפּס פון באַריכטן קענען געשיקט ווערן איבער דעם זעלבן ענדפּוינט. כּדי צו אונטערשיידן די פֿאַרשידענע טייפּס פון באַריכטן, ווערט אַ 1-בייט באַריכט ID פּרעפיקס צוגעגעבן צום דאַטן באַריכט. אויב אַ באַריכט ID איז געניצט געוואָרן אין דעם עקס.ampפון די מויז באריכט, די גאַנצע גרייס פון די באריכט דאַטן וואָלט זיין 5 בייטס.
טאַבעלע – אינפוט באַריכט געשיקט צום האָסט און קאָרעספּאָנדירנדיק צום צושטאַנד פֿון אַ 3 קנעפּלעך מויז

ביסל אָפסעט
0 1 2 3 16 24

ביט צייל 1 1 1 13 8 8

באַשרייַבונג קנעפּל 1 (לינקער קנעפּל). קנעפּל 2 (רעכטער קנעפּל). קנעפּל 3 (ראָד קנעפּל). נישט גענוצט. פּאָזיציע אויף אַקס X. פּאָזיציע אויף אַקס Y.

א פיזישער דעסקריפּטאָר ווײַזט אָן דעם טייל אָדער טיילן פֿונעם קערפּער וואָס זענען בדעה צו אַקטיוויזירן אַ קאָנטראָל אָדער קאָנטראָלן. אַן אַפּליקאַציע קען נוצן די אינפֿאָרמאַציע צו באַשטימען אַ פֿונקציאָנאַליטעט צום קאָנטראָל פֿון אַ מיטל. א פיזישער דעסקריפּטאָר איז אַן אָפּציאָנעלער קלאַס-ספּעציפֿישער דעסקריפּטאָר און רובֿ דעוויסעס האָבן קליינעם נוץ פֿאַר נוצן עס. זעט
יו-עס-בי דעווייס HID קלאַס רעסורס באדערפענישן פון קאָר

יעדעס מאל איר לייגט צו א HID קלאס אינסטאנץ צו א USB קאנפיגוראציע דורך א רוף צו דער פונקציע sl_usbd_hid_add_to_configuration() , וועלן די פאלגנדע רעסורסן ווערן צוגעטיילט פונעם קערן.

מיטל
אינטערפייסיז אַלטערנאַטיווע אינטערפייסיז ענדפּונקטן אינטערפיי גרופּעס

קוואַנטיטי
1 1 1 (2 אויב אינטעראַפּט OUT ענדפּוינט איז ענייבאַלד) 0

באַמערקט אַז די נומערן זענען פּער קאָנפיגוראַציע. ווען איר שטעלט אויף אייערע SL_USBD_INTERFACE_QUANTITY, SL_USBD_ALT_INTERFACE_QUANTITY, SL_USBD_INTERFACE_GROUP_QUANTITY און SL_USBD_DESCRIPTOR_QUANTITY קאָנפיגוראַציע ווערטן, פֿאַרגעסט נישט צו נעמען אין חשבון וויפֿל קאָנפיגוראַציעס די קלאַס וועט צוגעגעבן ווערן. פֿאַר די SL_USBD_OPEN_ENDPOINTS_QUANTITY קאָנפיגוראַציע ווערט, ווייל ענדפּונקטן ווערן געעפֿנט נאָר ווען אַ קאָנפיגוראַציע ווערט באַשטימט דורך דעם האָסט, דאַרפֿט איר נאָר נעמען אין חשבון די צאָל נויטיקע ענדפּונקטן פֿאַר אַ קלאַס אינסטאַנץ.
יו-עס-בי דעווייס HID קלאַס קאָנפיגוראַציע

צוויי גרופּעס פון קאָנפיגוראַציע פּאַראַמעטערס ווערן גענוצט צו קאָנפיגורירן די HID קלאַס:
USB דעווייס HID קלאַס אַפּליקאַציע-ספּעציפֿישע קאָנפֿיגוראַציעס USB דעווייס HID קלאַס אינסטאַנס קאָנפֿיגוראַציעס
יו-עס-בי דעווייס HID קלאַס אַפּליקאַציע-ספּעציפֿישע קאָנפֿיגוראַציעס

ערשטנס, צו ניצן דעם סיליקאָן לאַבס USB דעווייס HID קלאַס מאָדול, אַדזשאַסטירט די HID קאָמפּייל-צייט קאָנפיגוראַציע דעפינירט לויט אייערע אַפּליקאַציע באדערפענישן. זיי זענען ריגרופּירט אין דעם sl_usbd_core_config.h כעאַדער. file אונטער דער HID סעקציע. זיי קענען צעטיילט ווערן אין צוויי סעקציעס, די קוואַנטיטעט קאָנפיגוראַציעס און די HID אויפגאַבע קאָנפיגוראַציעס. דער ציל פון די קוואַנטיטעט קאָנפיגוראַציעס איז צו אינפאָרמירן דעם USB דעווייס מאָדול וועגן וויפיל USB HID אָביעקטן צו אַלאָקירן.
די טאַבעלע אונטן באַשרײַבט יעדע קאָנפיגוראַציע דעפֿיניציע.
טאַבעלע – USB דעווייס HID קאָנפיגוראַציע דעפינירט

דרוקרעכט © 2025 סיליקאָן לאַבאָראַטאָריעס. אלע רעכטן רעזערווירט.

33/174

איבערview

קאָנפיגוראַטיאָן נאָמען
SL_USBD_HID_CL ASS_I STANCES_QUANTITY
SL_USBD_HID_CONFIG URATION_QUANTITY
SL_USBD_HID_רעפּאָרט_ ID_QUANTITY
SL_USBD_HID_PUSH_P OP_ITEM_QUANTITY
SL_USBD_HID_TIMER_T פרעג_שטאַק_גרייס
SL_USBD_HID_TIMER_T פרעג_פּריאָריטעט

באַשרייַבונג
נומער פון קלאַס אינסטאַנסן וואָס איר וועט צוטיילן דורך אַ רוף צו דער פונקציע
sl_usbd_hid_create_instance() .
נומער פון קאנפיגוראציעס. HID קלאס אינסטאנצן קענען צוגעגעבן ווערן צו איין אדער מערערע aaaa קאנפיגוראציעס דורך צו דער פונקציע sl_usbd_hid_add_to_configuration(). קאנפיגורירט די גאנצע נומער פון באריכט IDs צו צוטיילן.
קאָנפיגורירט די גאַנצע צאָל פון פּוש/פּאָפּ זאכן צו אַלאָקירן.
די טיימער אויפגאַבע האַנדלט מיט אַלע טיימער-באַזירטע HID אָפּעראַציעס. די קאָנפיגוראַציע דערלויבט איר צו שטעלן די סטעק גרייס (אין נומער פון בייטן). פּריאָריטעט פון HID אויפגאַבע. דאָס איז אַ CMSIS-RTOS2 פּריאָריטעט.

פעליקייַט ווערט
2 1 2 0 2048
osPriorityHigh

יו־עס־בי דעווייס HID קלאַס אינסטאַנץ קאָנפיגוראַציעס קלאַס אינסטאַנץ שאַפונג סובקלאַס
פּראָטאָקאָל לאַנד_קאָד
interval_in און interval_out p_hid_callback HID קלאַס באַריכט דעסקריפּטאָר בייַשפּילampדי סעקציע דעפינירט די קאנפיגוראציעס שייך צו די HID קלאס אינסטאנצן.
קלאַס אינסטאַנס שאַפונג
שאַפֿן אַ HID קלאַס אינסטאַנץ ווערט געטאָן דורך רופן די פונקציע aaa sl_usbd_hid_create_instance() , וואָס נעמט עטלעכע קאָנפיגוראַציע אַרגומענטן וואָס ווערן באַשריבן אונטן.
אונטערקלאַס
קאָד פֿון דער HID סובקלאַס. מעגלעכע ווערטן זענען:
SL_USBD_HID_SUBCL ASS_NONE SL_USBD_HID_SUBCL ASS_BOOT
א HID דעווייס וואס ניצט די "boot" סובקלאס מוז ניצן סטאנדארט באריכט פֿאָרמאַטן. פֿאַר מער אינפֿאָרמאַציע וועגן די סובקלאס קאָודז, זעט סעקציע 4.2 פֿון HID ספּעציפֿיקאַציע רעוויזיע 1.11.
פּראָטאָקאָל
פּראָטאָקאָל געניצט דורך דעם HID מיטל. מעגלעכע ווערטן זענען:
SL_USBD_HID_PROTOCOL_NONE SL_USBD_HID_PROTOCOL_KBD SL_USBD_HID_PROTOCOL_MOUSE
אויב אייער HID פונקציע איז א מויז, זאל דער פראטאקאל זיין געשטעלט צו SL_USBD_HID_PROTOCOL_MOUSE. אויב עס איז א קלאַוויאַטור, זאל עס זיין געשטעלט צו SL_USBD_HID_PROTOCOL_KBD. אנדערש, זאל דער פראטאקאל זיין געשטעלט צו SL_USBD_HID_PROTOCOL_NONE. פאר מער אינפארמאציע איבער די סובקלאס קאודס, זעהט סעקציע 4.3 פון HID ספעציפיקאציע רעוויזיע 1.11.
לאַנד_קאָד
אידענטיפיקאציע פון ​​די לאנד קאוד. מעגלעכע ווערטן זענען:
SL_USBD_HID_LAND_CODE_NOT_SUPPORTED

דרוקרעכט © 2025 סיליקאָן לאַבאָראַטאָריעס. אלע רעכטן רעזערווירט.

34/174

איבערview
SL_USBD_HID_לאַנד_קאָד_אַראַביש SL_USBD_HID_לאַנד_קאָד_בעלגיש SL_USBD_HID_לאַנד_קאָד_קאַנאַדישער_צוויישפּראַכיקער SL_USBD_HID_לאַנד_קאָד_קאַנאַדישער_פֿראַנצייזיש SL_USBD_HID_לאַנד_קאָד_טשעכיש SL_USBD_HID_לאַנד_קאָד_דעניש SL_USBD_HID_לאַנד_קאָד_פֿיניש SL_USBD_HID_לאַנד_קאָד_פֿראַנצייזיש SL_USBD_HID_לאַנד_קאָד_דײַטש SL_USBD_HID_לאַנד_קאָד_גריכיש SL_USBD_HID_לאַנד_קאָד_העברעיִש SL_USBD_HID_לאַנד_קאָד_אונגאַריש SL_USBD_HID_לאַנד_קאָד_אינטערנאַציאָנאַל SL_USBD_HID_לאַנד_קאָד_איטאַליעניש SL_USBD_HID_LAND_CODE_JAPAN_KATAKANA SL_USBD_HID_LAND_CODE_KOREAN SL_USBD_HID_LAND_CODE_L ATIN_AMERICAN SL_USBD_HID_LAND_CODE_NETHERL ANDS_DUTCH SL_USBD_HID_LAND_CODE_NORWEGIAN SL_USBD_HID_LAND_CODE_PERSIAN_FRSIC SL_USBD_HID_LAND_CODE_POL AND SL_USBD_HID_LAND_CODE_PORTUGEES SL_USBD_HID_LAND_CODE_RUSSLAND SL_USBD_HID_LAND_CODE_SLOVAKIA SL_USBD_HID_LAND_CODE_SPANISH SL_USBD_HID_LAND_CODE_SWEDISH SL_USBD_HID_LAND_CODE_WISS_FRENCH SL_USBD_HID_LAND_CODE_WISS_GERMAN SL_USBD_HID_LAND_CODE_SWITZERL און SL_USBD_HID_LAND_CODE_TAIWAN SL_USBD_HID_LAND_CODE_TURKISH_Q SL_USBD_HID_LAND_CODE_UK SL_USBD_HID_LAND_CODE_US SL_USBD_HID_LAND_CODE_YUG OSL AVIA SL_USBD_HID_LAND_CODE_TURKISH_F
דער לאַנד קאָד אידענטיפיצירט פֿאַר וועלכן לאַנד די האַרדווער איז לאָקאַליזירט. רובֿ האַרדווער איז נישט לאָקאַליזירט און דעריבער וואָלט די ווערט זיין SL_USBD_HID_COUNTRY_CODE_NOT_SUPPORTED (0). אָבער, קלאַוויאַטורן קענען נוצן דאָס פעלד צו אָנווייַזן די שפּראַך פֿון די קלאַוויאַטור קאַפּס.
פֿאַר מער אינפֿאָרמאַציע וועגן די לאַנד קאָודן, זעט סעקציע 6.2.1 פֿון HID ספּעציפֿיקאַציע רעוויזיע 1.11.
אינטערוואַל_אין און אינטערוואַל_אויס
interval_in און interval_out רעפּרעזענטירן די פּאָלינג אינטערוואַל פון די IN ינטעראַפּט ענדפּוינט און די OUT ינטעראַפּט ענדפּוינט.
דאָס רעפּרעזענטירט דעם פּאָלינג אינטערוואַל פֿון דעם ענדפּונקט, אין מיליסעקונדעס. דאָס שטעלן דעם ווערט ווענדט זיך ווי אָפֿט אייער דעווייס איז סאַסעפּטאַבאַל צו דזשענערירן אַ נייעם באַריכט פֿאַר דעם האָסט. למשל, אויב אַ באַריכט ווערט דזשענערירט יעדע 16 מיליסעקונדעס, זאָל דער אינטערוואַל זיין 16 אָדער ווייניקער.
דער ווערט מוז זיין אַ מאַכט פון 2 (1, 2, 4, 8, 16, אאז"וו).
א interval_out v lue ווערט איגנארירט אויב ctrl_rd_en איז געשטעלט צו true.
פּ_היד_רוף־צוריק
aaaa p_hid_callback איז א צייגאר צו א סטרוקטור פון טיפ sl_usbd_hid_callbacks_t. איר צוועק איז צו געבן דעם HID Cl ss א סכום פון קאל-בעק פונקציעס וואס זאלן גערופן ווערן ווען א HID געשעעניש פאסירט.

דרוקרעכט © 2025 סיליקאָן לאַבאָראַטאָריעס. אלע רעכטן רעזערווירט.

35/174

איבערview

נישט אלע קאלבעקס זענען פארלאנגט און א נול פוינטער ( NULL ) קען אריינגעגעבן ווערן אין די קאלבעקס סטרוקטור וועריעבל ווען דער קאלבעק איז נישט נויטיג. די טאבעלע אונטן באשרייבט יעדע קאנפיגוראציע פעלד וואס איז פאראן אין די קאנפיגוראציע סטרוקטור.
טאַבעלע – sl_usbd_hid_callbacks_t קאָנפיגוראַציע סטרוקטור

פעלדער

באַשרייַבונג

פונקציע אונטערשריפט

.ענייבאַל .דיסייבאַל .געט_רעפּאָרט_דעסק
.get_phy_desc
.שטעלן_אויסגאַבע_רעפּאָרט .באַקומען_פֿיטשער_רעפּאָרט .שטעלן_פֿיטשער_רעפּאָרט

גערופן ווען די USB קלאַס אינסטאַנץ איז הצלחה אַקטיוויזירט. גערופן ווען די USB קלאַס אינסטאַנץ איז דיסייבאַלד.
גערופן בעת ​​דער HID אינסטאַנץ שאַפונג צו דורכגעבן אייער באַריכט דעסקריפּטאָר. פֿאַר יעדער פון אייערע HID פונקציעס, מוזט איר צושטעלן אַ באַריכט דעסקריפּטאָר. דער באַריכט דעסקריפּטאָר ווייזט דעם האָסט ווי דער פּעריִאָדישער באַריכט וואָס וועט געשיקט ווערן דורך דעם מיטל זאָל געפּאַרסט ווערן. שרייבן אייער אייגענעם באַריכט דעסקריפּטאָר קען זיין אַרויסרופן, און דעריבער זענען דאָ עטלעכע רעסורסן צו העלפן. דאָס איז די איינציקע פארלאנגטע צוריקרוף פונקציע. גערופן בעת ​​דער HID אינסטאַנץ שאַפונג צו דורכגעבן אייער גשמיותן דעסקריפּטאָר. דער גשמיותער דעסקריפּטאָר איז אַ דעסקריפּטאָר וואָס גיט אינפֿאָרמאַציע וועגן דעם ספּעציפֿישן טייל אָדער טיילן פון דעם מענטשלעכן קערפּער וואָס אַקטיוויזירן אַ קאָנטראָל אָדער קאָנטראָלס. פֿאַר מער אינפֿאָרמאַציע וועגן גשמיותן דעסקריפּטאָרן, זעט סעקציע 6.2.3 פון HID ספּעציפֿיקאַציע רעוויזיע 1.11. דער גשמיותער דעסקריפּטאָר איז אָפּציאָנאַל און רובֿ פון דער צייט איגנאָרירט. דער באַפֿער וואָס ווערט דאָ דורכגעגעבן קען באַשטעטיקט ווערן צו NULL און די לענג באַשטעטיקט צו 0. גערופן ווען דער האָסט שטעלט אַ באַריכט ווי באַשריבן אין אייער באַריכט דעסקריפּטאָר (ווען עס שיקט אַ באַריכט).
גערופן ווען דער באַלעבאָס בעט אַ פֿעיִטשער באַריכט ווי באַשריבן אין דיין באַריכט דעסקריפּטאָר.
גערופן ווען דער באַלעבאָס שטעלט אַ פֿעיִטשער באַריכט ווי באַשריבן אין דיין באַריכט דעסקריפּטאָר.

void app_usbd_hid_enable(uint8_t class_nbr); void app_usbd_hid_disable(uint8_t class_nbr); void app_usbd_hid_get_report_desc(uint8_t class_nbr, const uint8_t *p_report_ptr, uint16_tp_report_len);
פּאָמיד אַפּ_וסבד_היד_געט_פי_דעסק(uint8_t קלאַס_נומער, קאָנסט uint8_t *פּ_רעפּאָרט_פּטר, uint16_טפּ_רעפּאָרט_לען);
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);

.באַקומען_פּראָטאָקאָל

באַקומט דעם איצטיקן אַקטיוון פּראָטאָקאָל.

פּאָיד אַפּ_וסבד_היד_געט_פּראָטאָקאָל(uint8_t קלאַס_נומער, uint8_t *פּ_פּראָטאָקאָל);

.סעט_פּראָטאָקאָל

שטעלט איין דעם איצטיקן אקטיוון פראטאקאל.

פּאָיד אַפּ_וסבד_היד_סעט_פּראָטאָקאָל(uint8_t קלאַס_nbr, uint8_t פּראָטאָקאָל);

HID קלאַס באַריכט דעסקריפּטאָר עקסample

סיליקאָן לאַבס'ס HID קלאַסampדי אַפּליקאַציע גיט אַן עקס.ampדי לע פון ​​אַ באַריכט דעסקריפּטאָר פֿאַר אַ פּשוט מויז. די עקס.ampדי לינק אונטן ווייזט א מויז באריכט דעסקריפּטאר.
Exampלע – מויז באַריכט דיסקריפּטאָר

סטאַטיש uint8_t אַפּ_וסבד_היד_רעפּאָרט_דעסק[] = {

(1) (2)

SL_USBD_HID_GLOBAL_USAGE_PAGE + 1, SL_USBD_HID_USAGE_PAGE_GENERIC_DESKTOP_CONTROLS,

SL_USBD_HID_LOCAL_USAGE + 1, SL_USBD_HID_CA_MOUSE,

(3)

דרוקרעכט © 2025 סיליקאָן לאַבאָראַטאָריעס. אלע רעכטן רעזערווירט.

36/174

איבערview

SL_USBD_HID_MAIN_COLLECTION +1, SL_USBD_HID_COLLECTION_APPLICATION,(4)

SL_USBD_HID_LOCAL_USAGE +1, SL_USBD_HID_CP_POINTER,(5)

SL_USBD_HID_MAIN_COLLECTION +1, SL_USBD_HID_COLLECTION_PHYSICAL,(6)

SL_USBD_HID_GLOBAL_USAGE_PAGE +1, SL_USBD_HID_USAGE_PAGE_BUTTON,(7)

SL_USBD_HID_LOCAL_USAGE_MIN +1,0 01,

SL_USBD_HID_LOCAL_USAGE_MAX +1,0 03,

SL_USBD_HID_GLOBAL_LOG_MIN +1,0 00,

SL_USBD_HID_GLOBAL_LOG_MAX +1,0 01,

SL_USBD_HID_GLOBAL_REPORT_COUNT +1,0 03,

SL_USBD_HID_GLOBAL_REPORT_SIZE +1,0 01,

SL_USBD_HID_MAIN_INPUT +1, SL_USBD_HID_MAIN_DATA |

SL_USBD_HID_MAIN_VARIABLE |

SL_USBD_HID_MAIN_ABSOLUTE,

SL_USBD_HID_GLOBAL_REPORT_COUNT +1,0 01,(8)

SL_USBD_HID_GLOBAL_REPORT_SIZE +1,0 0D,

SL_USBD_HID_MAIN_INPUT +1, SL_USBD_HID_MAIN_CONSTANT,(9)

SL_USBD_HID_GLOBAL_USAGE_PAGE +1, SL_USBD_HID_USAGE_PAGE_GENERIC_DESKTOP_CONTROLS,

SL_USBD_HID_LOCAL_USAGE +1, SL_USBD_HID_DV_X,

SL_USBD_HID_LOCAL_USAGE +1, SL_USBD_HID_DV_Y,

SL_USBD_HID_GLOBAL_LOG_MIN +1,0 81,

SL_USBD_HID_GLOBAL_LOG_MAX +1,0 7F,

SL_USBD_HID_GLOBAL_REPORT_SIZE +1,0 08,

SL_USBD_HID_GLOBAL_REPORT_COUNT +1,0 02,

SL_USBD_HID_MAIN_INPUT +1, SL_USBD_HID_MAIN_DATA |

SL_USBD_HID_MAIN_VARIABLE |

SL_USBD_HID_MAIN_RELATIVE,

SL_USBD_HID_MAIN_ENDCOLLECTION,(10)

SL_USBD_HID_MAIN_ENDCOLLECTION

(11)};

(1) די טאַבעלע וואָס רעפּרעזענטירט אַ מויז באַריכט דעסקריפּטאָר איז איניציאַליזירט אויף אַזאַ וועג אַז יעדע שורה קאָרעספּאָנדירט צו אַ קורצן נומער. דער לעצטער איז געשאַפֿן פֿון אַ 1-בייט פּרעפֿיקס און אַ 1-בייט דאַטן. זעט viewגעשאַפֿן דורך אַ האָסט HID פּאַרסער אין פֿיגור – באַריכט דעסקריפּטאָר אינהאַלט פֿון אַ האָסט HID פּאַרסער View.
(2) די אלגעמיינע דעסקטאַפּ באַניץ בלאַט ווערט גענוצט.
(3) אינעם אלגעמיינעם דעסקטאַפּ באַניץ בלאַט, די באַניץ tag סאַגדזשעסטירט אַז די גרופּע קאָנטראָלן איז פֿאַר קאָנטראָלירן אַ מויז. אַ מויז זאַמלונג באַשטייט טיפּיש פֿון צוויי אַקסעס (X און Y) און איין, צוויי, אָדער דריי קנעפּלעך.
(4) די מויז זאַמלונג ווערט אָנגעהויבן.
(5) אינערהאלב דער מויז זאַמלונג, אַ באַניץ tag סאַגדזשעסטירט מער ספּעציפֿיש אַז די מויז קאָנטראָלס געהערן צו דער פּוינטער זאַמלונג. א פּוינטער זאַמלונג איז אַ זאַמלונג פון אַקסעס וואָס דזשענערירט אַ ווערט צו דירעקטירן, אָנווייַזן אָדער ווײַזן באַניצער כוונות צו אַן אַפּלאַקיישאַן.
(6) די פּוינטער זאַמלונג הייבט זיך אָן.
(7) די קנעפּלעך באַניץ בלאַט דעפינירט אַן אינפוט נומער צוזאַמענגעשטעלט פון דריי 1-ביט פעלדער. יעדער 1-ביט פעלד רעפּרעזענטירט די מויז'ס קנעפּלעך 1, 2 און 3 ריספּעקטיוולי און קען צוריקגעבן אַ ווערט פון 0 אָדער 1.
(8) דער איינגאַבע־אייטעם פֿאַר דער קנעפּלעך־באַניץ־בלאַט איז אויסגעפֿילט מיט 13 אַנדערע ביטן.
(9) נאך אן אלגעמיינע דעסקטאפ באנוץ בלאט איז אנגעצייכנט פארן באשרייבן די מויז פאזיציע מיט די אקסן X און Y. די אינפוט אייטעם איז צוזאמענגעשטעלט פון צוויי 8-ביט פעלדער וועמענס ווערט קען זיין צווישן -127 און 127.
(10) די פּוינטער זאַמלונג איז פֿאַרמאַכט.
(11) די מויז זאַמלונג איז פֿאַרמאַכט.
USB.org HID בלאַט

דרוקרעכט © 2025 סיליקאָן לאַבאָראַטאָריעס. אלע רעכטן רעזערווירט.

37/174

איבערview
דער USB אימפלעמענטארס פארום (USB-IF) גיט א געצייג גערופן "HID דעסקריפּטאָר געצייג" צוזאמען מיט אנדערע אינפארמאציע איבער דעם באריכט דעסקריפּטאָר פֿאָרמאַט. זעט http://www.usb.org/developers/hidpage/ פאר מער אינפארמאציע.
יו-עס-בי דעווייס HID קלאַס פּראָגראַממינג גייד
די סעקציע דערקלערט ווי אזוי צו ניצן די HID קלאס. איניציאליזירן די USB דעווייס HID קלאס צולייגן א USB דעווייס HID קלאס אינסטאנץ צו אייער דעווייס קאמוניקירן ניצן די USB דעווייס HID קלאס
איניציאַליזירן די USB דעווייס HID קלאַס
כדי צו לייגן HID קלאַס פונקציאָנאַליטעט צו אייער דעווייס, מוזט איר ערשט איניציאַליזירן די קלאַס דורך רופן די פונקציע sl_usbd_hid_init(). די עקס.ampדי ליסטע אונטן ווייזט ווי אזוי צו רופן sl_usbd_hid_init() ניצנדיק דיפאָלט אַרגומענטן. פֿאַר מער אינפֿאָרמאַציע וועגן די קאָנפיגוראַציע אַרגומענטן צו געבן צו sl_usbd_hid_init(), זעט USB Device HID קלאַס אַפּליקאַציע ספּעציפֿישע קאָנפיגוראַציעס.
Example – רופט sl_usbd_hid_init()
sl_status_t סטאַטוס;
סטאַטוס = sl_usbd_hid_init(); אויב (סטאַטוס ! SL_STATUS_OK) { /* עס איז פארגעקומען א טעות. מען זאָל צולייגן דא די טעותן. */
}
צולייגן אַ USB מיטל HID קלאַס אינסטאַנס צו דיין מיטל
כדי צו לייגן HID קלאַס פאַנגקשאַנאַליטעט צו אייער מיטל, מוזט איר שאַפֿן אַן אינסטאַנץ, און דערנאָך לייגן עס צו צו אייער מיטל'ס קאָנפיגוראַציע(ס).
שאַפֿן אַ HID קלאַס אינסטאַנץ
שאַפֿט אַ HID קלאַס אינסטאַנץ דורך רופן די פֿונקציע sl_usbd_hid_create_instance(). די עקסampדי ליסטע אונטן ווייזט ווי אזוי צו שאַפֿן אַ פּשוטע מויז פֿונקציע דורך sl_usbd_hid_create_instance() ניצנדיק דיפאָלט אַרגומענטן. פֿאַר מער אינפֿאָרמאַציע וועגן די קאָנפֿיגוראַציע אַרגומענטן צו געבן צו sl_usbd_hid_create_instance(), זעט USB Device HID קלאַס אינסטאַנס קאָנפֿיגוראַציעס.
Example – צולייגן א מויז פונקציע דורך sl_usbd_hid_create_instance()

דרוקרעכט © 2025 סיליקאָן לאַבאָראַטאָריעס. אלע רעכטן רעזערווירט.

38/174

איבערview
/* גלאָבאַלע קאָנסטאַנטן. */ סטאַטיק קאָנסט uint8_t app_usbd_hid_mouse_report_desc[] = {
SL_USBD_HID_GLOBAL_USAGE_PAGE + 1, SL_USBD_HID_USAGE_PAGE_GENERIC_DESKTOP_CONTROLS, SL_USBD_HID_LOCAL_USAGE + 1, SL_USBD_HID_CA_MOUSE, SL_USBD_HID_MAIN_COLLECTION + 1, SL_USBD_HID_COLLECTION_APPLICATION, SL_USBD_HID_LOCAL_USAGE + 1, SL_USBD_HID_CP_POINTER, SL_USBD_HID_MAIN_COLLECTION + 1, SL_USBD_HID_COLLECTION_PHYSICAL, SL_USBD_HID_GLOBAL_USAGE_PAGE + 1, SL_USBD_HID_USAGE_PAGE_BUTTON, SL_USBD_HID_LOCAL_USAGE_MIN + 1, 0 01, SL_USBD_HID_LOCAL_USAGE_MAX + 1, 0 03, SL_USBD_HID_GLOBAL_LOG_MIN + 1, 0 00, SL_USBD_HID_GLOBAL_LOG_MAX + 1, 0 01, SL_USBD_HID_GLOBAL_REPORT_COUNT + 1, 0 03, SL_USBD_HID_GLOBAL_REPORT_SIZE + 1, 0 01, SL_USBD_HID_MAIN_INPUT + 1, SL_USBD_HID_MAIN_DATA | SL_USBD_HID_MAIN_VARIABLE | SL_USBD_HID_MAIN_ABSOLUTE, SL_USBD_HID_GLOBAL_REPORT_COUNT + 1, 0 01, SL_USBD_HID_GLOBAL_REPORT_SIZE + 1, 0 0D, SL_USBD_HID_MAIN_INPUT + 1, SL_USBD_HID_MAIN_CONSTANT, SL_USBD_HID_GLOBAL_USAGE_PAGE + 1, SL_USBD_HID_USAGE_PAGE_GENERIC_DESKTOP_CONTROLS, SL_USBD_HID_LOCAL_USAGE + 1, SL_USBD_HID_DV_X, SL_USBD_HID_LOCAL_USAGE + 1, SL_USBD_HID_DV_Y, SL_USBD_HID_GLOBAL_LOG_MIN + 1, 0 81, SL_USBD_HID_GLOBAL_LOG_MAX + 1, 0 7F, SL_USBD_HID_GLOBAL_REPORT_SIZE + 1, 0 08, SL_USBD_HID_GLOBAL_REPORT_COUNT + 1, 0 02, SL_USBD_HID_MAIN_INPUT + 1, SL_USBD_HID_MAIN_DATA | SL_USBD_HID_MAIN_VARIABLE | SL_USBD_HID_MAIN_RELATIVE, SL_USBD_HID_MAIN_ENDCOLLECTION, SL_USBD_HID_MAIN_ENDCOLLECTION };
/* לאקאלע וועריאַבלען.*/ uint8_t class_nbr; sl_status_t status;
sl_usbd_hid_callbacks_t app_usbd_hid_callbacks = { נול, נול, app_usbd_hid_get_report_desc, נול, נול, נול, נול, נול, נול, נול };
פּאָיד אַפּ_וסבד_הייד_געט_רעפּאָרט_דעסק(uint8_t קלאַס_נומער, קאָנסט uint8_t **פּ_רעפּאָרט_פּטר, uint16_t *פּ_רעפּאָרט_לען)
{ (פּאָסט)קלאַס_נומער;
*p_report_ptr = app_usbd_hid_mouse_report_desc; *p_report_len = sizeof(app_usbd_hid_mouse_report_desc); }
סטאַטוס = sl_usbd_hid_create_instance(SL_USBD_HID_SUBCLASS_BOOT, SL_USBD_HID_PROTOCOL_MOUSE, SL_USBD_HID_COUNTRY_CODE_NOT_SUPPORTED, Ex_USBD_HID_Mouse_ReportDesc, sizeof(Ex_USBD_HID_Mouse_ReportDesc), 2u, 2u, true, &app_usbd_hid_callbacks, &class_nbr);
דרוקרעכט © 2025 סיליקאָן לאַבאָראַטאָריעס. אלע רעכטן רעזערווירט.

39/174

איבערview
/* עס איז געשען אַ טעות. מען זאָל צולייגן דאָ די באַהאַנדלונג פון טעותן. */}
צולייגן די HID קלאַס אינסטאַנץ צו אייער דעווייס'ס קאָנפיגוראַציע(ס) נאָכדעם ווי איר האָט באשאפן אַ HID קלאַס אינסטאַנץ, קענט איר עס צולייגן צו אַ קאָנפיגוראַציע דורך רופן די פונקציע
sl_usbd_hid_add_to_configuration().
די עקסampדי ליסטע אונטן ווייזט ווי אזוי צו רופן sl_usbd_hid_add_to_configuration().
Example – רופט sl_usbd_hid_add_to_configuration()

sl_status_t סטאַטוס;

sl_usbd_hid_add_to_configuration(קלאַס_nbr,

(1)

קאָנפיג_nbr_fs); (2)

אויב (סטאַטוס ! SL_STATUS_OK) {

/* עס איז געשען אַ טעות. מען זאָל צולייגן דאָ די באַהאַנדלונג פון טעותן. */

}

(1) קלאַס נומער צו לייגן צו דער קאָנפיגוראַציע צוריקגעגעבן דורך sl_usbd_hid_create_instance(). (2) קאָנפיגוראַציע נומער (דאָ לייגט מען עס צו צו אַ פול-גיכקייט קאָנפיגוראַציע).
קאָמוניקאַציע ניצן די USB מיטל HID קלאַס
קלאַס אינסטאַנס קאָמוניקאַציע סינקראָנאָזע קאָמוניקאַציע קלאַס אינסטאַנס קאָמוניקאַציע די HID קלאַס אָפפערט די פאלגענדע פונקציעס צו קאָמוניקירן מיטן באַלעבאָס.
טאַבעלע – HID קאָמוניקאַציע API קיצער

פֿונקציע נאָמען
sl_usb d _hid _read ad _sy nc() sl_usb d _hid _write _sy nc()

אָפּעראַציע באַקומט דאַטן פֿון דעם האָסט דורך אינטעראַפּט OUT ענדפּוינט. די פֿונקציע בלאָקירט. שיקט דאַטן צום האָסט דורך אינטעראַפּט IN ענדפּוינט. די פֿונקציע בלאָקירט.

סינקראָנישע קאָמוניקאַציע סינקראָנישע קאָמוניקאַציע מיינט אַז די טראַנספער בלאָקירט. ביים רוף פון דער פונקציע בלאָקירט די אַפּליקאַציע ביז די טראַנספער איז געענדיקט מיט אָדער אָן אַ טעות. מען קען ספּעציפֿיצירן אַ טיימאַוט כּדי צו פֿאַרמייַדן וואַרטן אויף אייביק. די עקס.ampדי לעטער אונטן ווייזט א לייען און שרייבן וואס באקומט דאטן פונעם האוסט ניצנדיג דעם אינטעראַפּט OUT ענדפּוינט און שיקט דאטן צום האוסט ניצנדיג דעם אינטעראַפּט IN ענדפּוינט.
Example – סינקראָניש HID לייענען און שרייבן

__אויסגעשטעלט(4) uint8_t rx_buf[2];

__אויסגעשטעלט(4) uint8_t טקס_בוף[2];

uint32_t

xfer_len;

sl_status_t

סטאַטוס;

סטאַטוס = sl_usbd_hid_read_sync(קלאַס_nbr,

(1)

(פּאָסטלעכער *)rx_buf,

(2)

2ו,

0ו,

(3)

&xfer_len);

אויב (סטאַטוס ! SL_STATUS_OK) {

/* עס איז געשען אַ טעות. מען זאָל צולייגן דאָ די באַהאַנדלונג פון טעותן. */

}

דרוקרעכט © 2025 סיליקאָן לאַבאָראַטאָריעס. אלע רעכטן רעזערווירט.

40/174

איבערview
סטאַטוס =sl_usbd_hid_read_sync(class_nbr,(1)(void *)rx_buf,(2)2u,0u,(3)&xfer_len);if(status ! SL_STATUS_OK){/* עס איז געשען א טעות. מען זאל צולייגן די טעותן דא. */}
סטאַטוס =sl_usbd_hid_write_sync(class_nbr,(1)(void *)tx_buf,(4)2u,0u,(3)&xfer_len);if(status ! SL_STATUS_OK){/* עס איז געשען א טעות. מען זאל צולייגן די טעותן דא. */}
(1) די קלאַס אינסטאַנס נומער באשאפן פֿון sl_usbd_hid_create_instance() גיט אַן אינערלעכע רעפֿערענץ פֿאַר דער HID קלאַס צו רוטן די טראַנספֿער צו די ריכטיקע אינטעראַפּט OUT אָדער IN ענדפּוינט.
(2) די אַפּליקאַציע מוז זיכער מאַכן אַז דער באַפער וואָס ווערט געגעבן צו דער פונקציע איז גרויס גענוג צו אַקאַמאַדירן אַלע דאַטן. אַנדערש קענען סינקראָניזאַציע פּראָבלעמען פּאַסירן. אינעווייניק, ווערט די לייען אָפּעראַציע געטאָן אָדער מיטן קאָנטראָל ענדפּוינט אָדער מיטן אינטעראַפּט ענדפּוינט, דיפּענדינג אויף דעם קאָנטראָל לייען פאָן וואָס איז געשטעלט ווען מען רופט sl_usbd_hid_create_instance().
(3) כדי צו פארמיידן אן אומענדלעכע בלאקירנדיקע סיטואציע, קען מען ספעציפיצירן א טיימאוט אויסגעדריקט אין מיליסעקונדעס. א ווערט פון 809 מאכט אז די אפליקאציע אויפגאבע זאל ווארטן אויף אייביג.
(4) די אַפּליקאַציע גיט דעם איניציאַליזירטן טראַנסמיסיע באַפער.
HID פּעריִאָדישע אַרייַנשרייַב באַריכטן אויפֿגאַבע
כדי צו שפּאָרן באַנדברייט, האט דער האָסט די מעגלעכקייט צו שטיל מאַכן באַריכטן פון אַן אינטעראַפּט IN ענדפּוינט דורך באַגרענעצן די באַריכט-פרעקווענץ. צו טאָן דאָס, מוז דער האָסט שיקן די SET_IDLE בקשה. די HID קלאַס אימפּלעמענטירט דורך סיליקאָן לאַבס כּולל אַן אינערלעכע אויפגאַבע וואָס רעספּעקטירט די באַריכט-פרעקווענץ באַגרענעצונג וואָס איר קענט צולייגן צו איין אָדער עטלעכע אַרייַנשרייַב באַריכטן. פיגור פּעריאָדישע אַרייַנשרייַב באַריכטן אויפגאַבע ווייזט די פונקציאָנירן פון די פּעריאָדישע אַרייַנשרייַב באַריכטן אויפגאַבעס.
פיגור – פּעריִאָדישע איינגאַבע באַריכטן אויפֿגאַבע

(1) די דעווייס באקומט א SET_IDLE פארלאנג. די פארלאנג ספעציפיצירט אן אומזיסט צייט פאר א געגעבענע באריכט ID. פאר מער פרטים וועגן די SET_IDLE פארלאנג, זעה
(2) א באריכט ID סטרוקטור (צוגעטיילט בעת דער HID קלאס איניציאליזאציע פאזע) ווערט אפדעיטירט מיט דער ליידיגער דויער. א ליידיגער דויער ציילער ווערט איניציאליזירט מיטן ליידיגן דויער ווערט. די באריכט ID סטרוקטור ווערט אריינגעשטעלט אין סוף פון א פארבינדענע ליסטע וואס אנטהאלט אינפוט באריכט ID סטרוקטורן. דער ליידיגער דויער ווערט ווערט אויסגעדריקט אין 4-מס איינהייטן וואס גיט א קייט פון 4 ביז 1020 מס.

דרוקרעכט © 2025 סיליקאָן לאַבאָראַטאָריעס. אלע רעכטן רעזערווירט.

41/174

איבערview
אויב די ליידיגע דויער איז ווייניקער ווי די פּאָלינג אינטערוואַל פון די ינטעראַפּט IN ענדפּוינט, די באַריכטן ווערן דזשענערירט ביים פּאָלינג אינטערוואַל.
(3) יעדע 4 מיליסעקונדעס, בלעטערט די פעריאדישע אינפוט באריכט אויפגאבע די אינפוט באריכט ID ליסטע. פאר יעדן אינפוט באריכט ID, פירט די אויפגאבע אויס איינע פון ​​צוויי מעגלעכע אפעראציעס. די געדויער פון דער אויפגאבע פעריאדע שטימט מיט די 4-מיליסעקונדעס איינהייט גענוצט פאר די ליידיגע געדויער. אויב קיין SET_IDLE פארלאנגען זענען נישט געשיקט געווארן דורך דעם האוסט, איז די אינפוט באריכט ID ליסטע ליידיג און די אויפגאבע האט גארנישט צו פארארבעטן. די אויפגאבע פארארבעט נאר באריכט IDs וואס זענען אנדערש פון 0 און מיט אן ליידיגע געדויער גרעסער ווי 0.
(4) פֿאַר אַ געגעבענעם אינפוט באַריכט ID, וועריפֿיצירט די אויפֿגאַבע צי די ליידיקע דויער איז פֿאַרביי. אויב די ליידיקע דויער איז נישט פֿאַרביי, ווערט דער ציילער פֿאַרקלענערט און קיין אינפוט באַריכט ווערט נישט געשיקט צום האָסט.
(5) אויב די ליידיגע דויער איז פארביי (דאס הייסט, דער ליידיגע דויער ציילער האט דערגרייכט נול), ווערט אן אינפוט באריכט געשיקט צום האוסט דורך רופן די sl_usbd_hid_write_sync() פונקציע דורך דעם אינטעראַפּט IN ענדפּוינט.
(6) די אינפוט באריכט דאטן געשיקט דורך די אויפגאבע קומט פון אן אינערליכן דאטן באפער וואס איז צוגעטיילט פאר יעדן אינפוט באריכט באשריבן אין דעם באריכט דעסקריפטאר. אן אפליקאציע אויפגאבע קען רופן די sl_usbd_hid_write_sync() פונקציע צו שיקן אן אינפוט באריכט. נאכדעם וואס מען שיקט די אינפוט באריכט דאטן, sl_usbd_hid_write_sync() דערהיינטיקט דעם אינערליכן באפער וואס איז פארבונדן מיט אן אינפוט באריכט ID מיט די דאטן וואס איז יעצט געשיקט געווארן. דערנאך, שיקט די פעריאדישע אינפוט באריכט אויפגאבע שטענדיג די זעלבע אינפוט באריכט דאטן נאך יעדן ליידיגן צייט וואס איז פארבייגעגאנגען און ביז די אפליקאציע אויפגאבע דערהיינטיקט די דאטן אין דעם אינערליכן באפער. עס איז דא א פארשליסונג מעכאניזם צו פארמיידן פארדארבענקייט פון די אינפוט באריכט ID דאטן אין פאל פון א מאדיפיקאציע וואס פאסירט אין דער גענויער צייט פון טראנסמיסיע געטאן דורך די פעריאדישע אינפוט באריכט אויפגאבע.

דרוקרעכט © 2025 סיליקאָן לאַבאָראַטאָריעס. אלע רעכטן רעזערווירט.

42/174

איבערview
איבערview
USB מיטל MSC קלאַס
יו-עס-בי דעווייס MSC קלאַס איבערview USB מיטל MSC קלאַס רעסורס באדערפענישן פון קאָר USB מיטל MSC קלאַס קאָנפיגוראַציע USB מיטל MSC קלאַס פּראָגראַממינג גייד USB מיטל MSC קלאַס סטאָרידזש דרייווערס
די סעקציע באשרייבט די מאַסע סטאָרידזש מיטל קלאַס (MSC) געשטיצט דורך סיליקאָן לאַבס USB מיטל. MSC איז אַ פּראָטאָקאָל וואָס ערמעגליכט די טראַנספער פון אינפֿאָרמאַציע צווישן אַ USB מיטל און אַ האָסט. די אינפֿאָרמאַציע וואָס ווערט טראַנספערד איז אַלץ וואָס קען ווערן סטאָרד עלעקטראָניש, אַזאַ ווי עקסעקוטאַבאַל מגילה, מקור קאָד, דאָקומענטן, בילדער, קאָנפיגוראַציע דאַטן, אָדער אנדערע טעקסט אָדער נומערישע דאַטן. די USB מיטל דערשיינט ווי אַן עקסטערנאַל סטאָרידזש מעדיום צו די האָסט, ערמעגליכט די טראַנספער פון fileס דורך שלעפּן און פאַלן.
A file סיסטעם דעפינירט ווי אזוי די fileס זענען אָרגאַניזירט אין די סטאָרידזש מעדיע. די USB מאַסע סטאָרידזש קלאַס ספּעסיפיקאַציע ריקווייערז נישט קיין באַזונדער file סיסטעם צו ווערן גענוצט אויף קאָנפאָרמירנדע דעוויסעס. אַנשטאָט, עס גיט אַ פּשוט צובינד צו לייענען און שרייבן סעקטאָרן פון דאַטן ניצן די קליין קאָמפּיוטער סיסטעם צובינד (SCSI) טראַנספּעראַנט באַפֿעל סעט. ווי אַזאַ, אָפּערייטינג סיסטעמען קען מייַכל די USB דרייוו ווי אַ שווער דרייוו, און קענען פֿאָרמאַט עס מיט קיין file סיסטעם וואָס זיי ליב האָבן.
די USB מאַסע סטאָרידזש מיטל קלאַס שטיצט צוויי טראַנספּאָרט פּראָטאָקאָלן, ווי גייט:
באַלק-בלויז טראַנספּאָרט (BOT) קאָנטראָל/באַלק/אינטעראַפּט (CBI) טראַנספּאָרט (געניצט בלויז פֿאַר פלאַפּי דיסק דרייווז)
די מאַסע סטאָרידזש מיטל קלאַס ימפּלעמענטירט די SCSI טראַנספּאַרענט באַפֿעלן סעט ניצנדיק די BOT פּראָטאָקאָל בלויז, וואָס באַדייט אַז בלויז מאַסע ענדפּוינץ וועלן ווערן גענוצט צו טראַנסמיטירן דאַטן און סטאַטוס אינפֿאָרמאַציע. די MSC ימפּלעמענטאַציע שטיצט קייפל לאָגישע יוניץ.
די MSC אימפּלעמענטאַציע איז אין לויט מיט די פאלגענדע ספּעסיפיקאַציעס:
יוניווערסאַל סעריאַל באַס מאַסע סטאָרידזש קלאַס ספּעסיפיקאַציע איבערview, רעוויזיע 1.3 סעפטעמבער 5, 2008. יוניווערסאַל סעריאַל באַס מאַסע סטאָרידזש קלאַס באַלק-בלויז טראַנספּאָרט, רעוויזיע 1.0 סעפטעמבער 31, 1999.
יו-עס-בי דעווייס MSC aCl ss איבערview
פּראָטאָקאָל ענדפּונקטן קלאַס ריקוועסץ קליין קאָמפּיוטער סיסטעם צובינד (SCSI)
פּראָטאָקאָל
אין דעם אָפּטייל וועלן מיר דיסקוטירן דעם Bulk-Only Transport (BOT) פּראָטאָקאָל פֿון דער Mass Storage קלאַס. דער Bulk-Only Transport פּראָטאָקאָל האָט דריי...tagעס:
דער קאמאנד טראנספארט דער דאטן טראנספארט דער סטאטוס טראנספארט
מאַסע סטאָרידזש קאַמאַנדז ווערן געשיקט דורך דעם האָסט דורך אַ סטרוקטור גערופן די קאַמאַנד בלאָק ראַפּער (CBW). פֿאַר קאַמאַנדז וואָס דאַרפן אַ דאַטן טראַנספּאָרט סיסטעם...tagד.ה., דער באַלעבאָס וועט פּרוּוון צו שיקן אָדער באַקומען די גענויע צאָל בייטס פֿון דעם מיטל ווי ספּעציפֿיצירט דורך די לענג און פֿאָן פֿעלדער פֿון די CBW. נאָך דעם דאַטן טראַנספּאָרטtagלמשל, דער באַלעבאָס פּרוּווט צו באַקומען אַ קאָמאַנד סטאַטוס ראַפּער (CSW) פֿון דעם מיטל וואָס דעטאַלירט דעם סטאַטוס פֿון דעם באַפֿעל ווי אויך יעדן דאַטן רעשט (אויב

דרוקרעכט © 2025 סיליקאָן לאַבאָראַטאָריעס. אלע רעכטן רעזערווירט.

43/174

איבערview
פֿאַר באַפֿעלן וואָס טאָן ניט אַרייַננעמען אַ דאַטן טראַנספּאָרט stagד.ה., דער באַלעבאָס פּרוּווט צו באַקומען די CSW גלייך נאָכדעם וואָס CBW ווערט געשיקט. דער פּראָטאָקאָל איז דעטאַלירט אין בילד – MSC פּראָטאָקאָל.
פיגור – MSC פּראָטאָקאָל

ענדפּוינץ
אויף דער דעווייס זייט, אין איינקלאַנג מיט דער BOT ספּעציפֿיקאַציע, איז די MSC צוזאַמענגעשטעלט פֿון די פֿאָלגנדיקע ענדפּונקטן: אַ פּאָר קאָנטראָל IN און OUT ענדפּונקטן גערופֿן דיפֿאָלט ענדפּונקטן. אַ פּאָר באַלק IN און OUT ענדפּונקטן.
די טאַבעלע אונטן ווײַזט די פֿאַרשידענע באַנוץ פֿון די ענדפּונקטן.
טאַבעלע – MSC ענדפּוינט באַניץ

ענדפּוינט
קאָנטראָל אין קאָנטראָל אויס גרויס אין גרויס אויס

ריכטונג
מיטל צו האָסט באַלעבאָס צו מיטל מיטל צו האָסט באַלעבאָס צו מיטל

באַניץ
אויסרעכענונג און MSC קלאַס-ספּעציפֿישע בקשות אויסרעכענונג און MSC קלאַס-ספּעציפֿישע בקשות שיקן CSW און דאַטן באַקומען CBW און דאַטן

קלאַס ריקוועסץ
עס זענען דא צוויי דעפינירטע קאנטראל פארלאנגען פארן MSC BOT פראטאקאל. די פארלאנגען און זייערע באשרייבונגען זענען דעטאלירט אין דער טאבעלע אונטן.

טאַבעלע – מאַסע סטאָרידזש קלאַס ריקוועסץ

קלאַס ריקוועסץ
נאָר פֿאַר מאַסע סטאָרידזש באַשטעטיק

באַשרייַבונג
די בקשה ווערט גענוצט צו איבערשטעלן דעם מאַסע סטאָרידזש מיטל און זיין פֿאַרבונדענע צובינד. די בקשה גרייט דעם מיטל צו באַקומען דעם קומענדיקן באַפֿעל בלאָק.

דרוקרעכט © 2025 סיליקאָן לאַבאָראַטאָריעס. אלע רעכטן רעזערווירט.

44/174

איבערview

קלאַס ריקוועסץ

באַשרייַבונג

באַקומען מאַקס די בקשה ווערט גענוצט צו צוריקגעבן די העכסטע לאָגישע יוניט נומער (LUN) וואָס ווערט געשטיצט דורך דעם מיטל. למשלample, אַ

LUN

א דעווייס מיט LUN 0 און LUN 1 וועט צוריקגעבן א ווערט פון 1. א דעווייס מיט איין לאגישער איינהייט וועט צוריקגעבן 0 אדער אפשטעלן דעם

פארלאנג. דער מאקסימום ווערט וואס קען צוריקגעגעבן ווערן איז 15.

קליין קאָמפּיוטער סיסטעם צובינד SCSI

אויף דער פּראָגראַמיר-אינטערפֿייס לעוועל, ימפּלעמענטירט די MSC דעווייס איינע פֿון די סטאַנדאַרט סטאָרידזש-מעדיע קאָמוניקאַציע פּראָטאָקאָלן, ווי SCSI און SFF-8020i (ATAPI). די "פּראָגראַמיר-אינטערפֿייס" ספּעציפֿיצירט וועלכע פּראָטאָקאָל איז ימפּלעמענטירט, און העלפֿט דעם האָסט אָפּערייטינג סיסטעם צו לאָדן דעם פּאַסיקן דעווייס דרייווער פֿאַר קאָמוניקאַציע מיטן USB סטאָרידזש דעווייס. SCSI איז דער מערסט פֿאַרשפּרייטער פּראָטאָקאָל געניצט מיט USB MSC סטאָרידזש דעווייסעס. מיר צושטעלן אַן ימפּלעמענטאַציע פֿאַר MSC SCSI סובקלאַס וואָס אונדזערע GSDK באַניצער קענען נוצן גלייך פֿון דער קעסטל.
SCSI איז א סכום סטאַנדאַרדן פֿאַר האַנדלען מיט קאָמוניקאַציע צווישן קאָמפּיוטערס און פּעריפערישע דעוויסעס. די סטאַנדאַרדן אַרייַננעמען קאָמאַנדעס, פּראָטאָקאָלן, עלעקטרישע אינטערפייסיז און אָפּטישע אינטערפייסיז. סטאָרידזש דעוויסעס וואָס נוצן אַנדערע האַרדווער אינטערפייסיז, אַזאַ ווי USB, נוצן SCSI קאָמאַנדעס צו באַקומען דעווייס/האָסט אינפֿאָרמאַציע און קאָנטראָלירן די דעווייס' אָפּעראַציע און טראַנספערירן בלאַקס פון דאַטן אין די סטאָרידזש מעדיע.
SCSI קאמאנדעס דעקן א ברייטע קייט פון דעווייס טיפן און פונקציעס און דעריבער דארפן דעווייסעס א טייל פון די קאמאנדעס. בכלל, די פאלגענדע קאמאנדעס זענען נויטיג פאר גרונטלעכע קאמוניקאציע:
אנפֿראַגע לייענען קאַפּאַציטעט (10) לייענען (10) בעטן סענס טעסט איינהייט גרייט שרייבן (10)
USB דעווייס MSC קלאַס רעסורס באדערפענישן פֿון קאָר

יעדעס מאל איר לייגט צו אן MSC קלאס אינסטאנץ צו א USB קאנפיגוראציע דורך די פונקציע sl_usbd_msc_add_to_configuration() , וועלן די פאלגנדע רעסורסן ווערן צוגעטיילט פונעם קערן.

מיטל
אינטערפייסיז אַלטערנאַטיווע אינטערפייסיז ענדפּונקטן אינטערפיי גרופּעס

קוואַנטיטי
1 1 2 0

באַמערקט אַז די נומערן זענען פּער קאָנפיגוראַציע. ווען איר שטעלט אויף אייערע SL_USBD_INTERFACE_QUANTITY, SL_USBD_ALT_INTERFACE_QUANTITY, SL_USBD_INTERFACE_GROUP_QUANTITY און SL_USBD_DESCRIPTOR_QUANTITY קאָנפיגוראַציע ווערטן, פֿאַרגעסט נישט צו נעמען אין חשבון וויפֿל קאָנפיגוראַציעס די קלאַס וועט צוגעגעבן ווערן. פֿאַר די SL_USBD_OPEN_ENDPOINTS_QUANTITY קאָנפיגוראַציע ווערט, ווייל ענדפּונקטן ווערן געעפֿנט נאָר ווען אַ קאָנפיגוראַציע ווערט באַשטימט דורך דעם האָסט, דאַרפֿט איר נאָר נעמען אין חשבון די צאָל נויטיקע ענדפּונקטן פֿאַר אַ קלאַס אינסטאַנץ.
USB דעווייס MSC קלאַס קאָנפיגוראַציע

צוויי גרופּעס פון קאָנפיגוראַציע פּאַראַמעטערס ווערן גענוצט צו קאָנפיגורירן די MSC קלאַס:
USB מיטל MSC קלאַס אַפּליקאַציע-ספּעציפֿישע קאָנפֿיגוראַציעס USB מיטל MSC קלאַס לאָגישע איינהייט קאָנפֿיגוראַציע
USB דעווייס MSC קלאַס אַפּליקאַציע-ספּעציפֿישע קאָנפֿיגוראַציעס

קלאַס קאָמפּייל-צייט קאָנפיגוראַציעס קלאַס אינסטאַנס שאַפונג

דרוקרעכט © 2025 סיליקאָן לאַבאָראַטאָריעס. אלע רעכטן רעזערווירט.

45/174

איבערview

קלאַס קאָמפּייל-צייט קאָנפיגוראַציעס
סיליקאָן לאַבס USB דעווייס MSC קלאַס און SCSI סובקלאַס זענען קאָנפיגוראַבלע ביי קאָמפּייל צייט דורך #defines וואָס געפינט זיך אין sl_usbd_core_config.h file.
טאַבעלע – אַלגעמיינע קאָנפיגוראַציע קאָנסטאַנטן

קאָנפיגוראַטיאָן נאָמען

באַשרייַבונג

SL_USBD_MSC_CLASS_INST נומער פון קלאַס אינסטאַנסן וואָס איר וועט צוטיילן דורך אַ רוף צו דער פונקציע

ANCE_QUANTITY

sl_usbd_msc_scsi_create_instance() .

SL_USBD_MSC_CONFIGURA נומער פון קאָנפיגוראַציע צו וועלכער אַ קלאַס אינסטאַנץ קען צוגעגעבן ווערן דורך אַ רוף צו די

ציע_קוואַנטיטעט

פונקציע sl_usbd_msc_scsi_add_to_configuration().

SL_USBD_MSC_LUN_QUANT נומער פון לאָגישע איינהייטן פּער קלאַס אינסטאַנץ וואָס איר וועט צולייגן דורך אַ רוף צו די

אייטי

פונקציע sl_usbd_msc_scsi_lun_add().

SL_USBD_MSC_SCSI_64_BIT אַקטיוויזירט אָדער דיאַקטיוויזירט שטיצע פֿאַר לאָגישע בלאָק אַדרעס (LBA) פון 64 ביטס.
_LBA_EN

SL_USBD_MSC_DATA_BUFF גרייס פון דאַטן באַפער פּער קלאַס אינסטאַנס אין בייטן ER_SIZE

פעליקייַט ווערט
2
1
2
0
512

קלאַס אינסטאַנס שאַפונג
שאַפֿן אַ USB דעווייס MSC SCSI קלאַס אינסטאַנץ ווערט געטאָן דורך רופן די sl_usbd_msc_scsi_create_instance() פֿונקציע. די פֿונקציע נעמט איין קאָנפֿיגוראַציע אַרגומענט וואָס ווערט באַשריבן אונטן.
p_scsi_callbacks
p_scsi_callbacks איז א צייגער צו א קאנפיגוראציע סטרוקטור פון טיפ sl_usbd_msc_scsi_callbacks_t. אין צוגאב צו דער געווענליכער usb דעווייס קלאס קאלבעקס קאנעקט/דיסקאנעקט, גיט עס די MSC קלאס מיט א סעט פון אפציאנעלע קאלבעק פונקציעס וואס ווערן גערופן ווען אן איווענט פאסירט אויף דער לאגישער איינהייט. א נול צייגער ( NULL ) קען אריבערגעגעבן ווערן צו דעם ארגומענט אויב קיין קאלבעקס זענען נישט נויטיג.
די טאַבעלע אונטן באַשרײַבט יעדעס קאָנפיגוראַציע פעלד וואָס איז בנימצא אין דער קאָנפיגוראַציע סטרוקטור.
טאַבעלע – sl_usbd_msc_scsi_callbacks_t קאָנפיגוראַציע סטרוקטור

פעלדער

באַשרייַבונג

.ענייבאַל

גערופן ווען די USB קלאַס אינסטאַנץ איז הצלחה ענייבאַלד.

.disable גערופן ווען די USB קלאַס אינסטאַנץ איז דיסייבאַלד.

.host_eject פונקציע גערופן ווען א לאגישע איינהייט ווערט ארויסגעווארפן פונעם האוסט.

פונקציע אונטערשריפט
פּאָיד אַפּ_וסבד_מסק_סי_ענייבאַל(uint8_ט קלאַס_נאָבר);
פּאָמיד אַפּ_usbd_msc_scsi_דיסאַבלע(uint8_t קלאַס_nbr); פּאָמיד אַפּ_usbd_msc_scsi_האָסט_עדזשעקט(uint8_t קלאַס_nbr, uint8_t lu_nbr);

USB דעווייס MSC קלאַס לאָגישע יוניט קאָנפיגוראַציע

צולייגן א לאגישע איינהייט צו אן MSC קלאס אינסטאנץ ווערט געטאן דורך רופן די פונקציע sl_usbd_msc_lun_add(). די פונקציע נעמט איין קאנפיגוראציע ארגומענט וואס ווערט באשריבן אונטן.

פּ_לו_אינפאָ

p_lu_info איז א צייגער צו א סטרוקטור פון טיפ sl_usbd_msc_scsi_lun_info_t. איר צוועק איז צו צושטעלן די אינפארמאציע איבער דער לאגישער איינהייט צו דער MSC קלאס.
די טאַבעלע אונטן באַשרײַבט יעדעס קאָנפיגוראַציע פעלד וואָס איז בנימצא אין דער קאָנפיגוראַציע סטרוקטור.

טאַבעלע – sl_usbd_msc_scsi_lun_info_t קאָנפיגוראַציע סטרוקטור

דרוקרעכט © 2025 סיליקאָן לאַבאָראַטאָריעס. אלע רעכטן רעזערווירט.

46/174

איבערview

פעלד

באַשרייַבונג

פעלד
.scsi_lun_api_p tr

באַשרייַבונג
א צייגער צום מעדיע דרייווער API וואס וועט האנדלען מיט דעם לאגישן איינהייט. זעהט USB דעווייס MSC קלאס סטארעדזש דרייווערס פאר מער אינפארמאציע וועגן סטארעדזש דרייווערס.

.ווע און אָ ר_יד _ פּ טר
פּראָדוקט_איידי_פּטר
.פּראָדוקט_ איבערבליק אויף_לעוועל .איז_ לייענען _נאָר

א צייגער צו א סטרינג וואס אנטהאלט די פארקויפער אידענטיפיקאציע פון ​​דער לאגישער איינהייט. די מאקסימום לענג פון דער סטרינג איז 8 אותיות. א צייגער צו א סטרינג וואס אנטהאלט די פראדוקט אידענטיפיקאציע פון ​​דער לאגישער איינהייט. די מאקסימום לענג פון דער סטרינג איז 16 אותיות. פראדוקט רעוויזיע לעוועל.
פאָן וואָס ווײַזט צי די לאָגישע איינהייט זאָל געזען ווערן ווי נאָר לייענען פֿון דעם פּונקט פֿון view פונעם באַלעבאָס (אמת) אדער נישט (פאַלש).

USB דעווייס MSC קלאַס פּראָגראַממינג גייד

די סעקציע דערקלערט ווי אזוי צו ניצן די MSC קלאַס.
איניציאליזירן די USB דעווייס MSC קלאַס צולייגן אַ USB דעווייס MSC SCSI קלאַס אינסטאַנץ צו דיין דעווייס USB דעווייס MSC קלאַס לאָגישע יוניט האַנדלינג
איניציאַליזירן די USB דעווייס MSC קלאַס

כדי צו לייגן MSC SCSI קלאס פונקציאנאליטעט צו אייער דעווייס, ערשט איניציאליזירן די MSC באזע קלאס און די SCSI סובקלאס דורך רופן די פונקציע sl_usbd_msc_init() און sl_usbd_msc_scsi_init().
די עקסampדי ליסטע אונטן ווייזט ווי אזוי צו רופן sl_usbd_msc_init() און sl_usbd_msc_scsi_init().

Example – רופן sl_usbd_msc_init() און sl_usbd_msc_scsi_init()

sl_status_t סטאַטוס;
סטאַטוס = sl_usbd_msc_init(); אויב (סטאַטוס ! SL_STATUS_OK) { /* עס איז פארגעקומען א טעות. מען זאָל צולייגן דא די טעותן. */
}
סטאַטוס = sl_usbd_msc_scsi_init(); אויב (סטאַטוס ! SL_STATUS_OK) { /* עס איז פארגעקומען א טעות. מען זאָל צולייגן דא די טעותן. */
}
צולייגן אַ USB מיטל MSC SCSI קלאַס אינסטאַנץ צו דיין מיטל
כדי צו לייגן MSC SCSI קלאס פונקציאנאליטעט צו אייער אפאראט, שאפט ערשט אן אינסטאנץ, און דערנאך לייגט עס צו צו אייער אפאראט'ס קאנפיגוראציע(ס). איר מוזט צולייגן לפחות איין לאגישע איינהייט צו אייער אינסטאנץ.
שאַפֿן אַן MSC SCSI קלאַס אינסטאַנץ
שאַפֿט אַ MSC SCSI קלאַס אינסטאַנץ דורך רופן די פֿונקציע sl_usbd_msc_scsi_create_instance() .
די עקסampדי ליסטע אונטן ווייזט ווי אזוי צו רופן sl_usbd_msc_scsi_create_instance() ניצנדיק דיפאָלט אַרגומענטן. פֿאַר מער אינפֿאָרמאַציע וועגן די קאָנפיגוראַציע אַרגומענטן צו געבן צו sl_usbd_msc_scsi_create_instance(), זעט USB Device MSC קלאַס אַפּליקאַציע ספּעציפֿישע קאָנפיגוראַציעס.
Example – רופט sl_usbd_ msc_scsi_create_instance()

דרוקרעכט © 2025 סיליקאָן לאַבאָראַטאָריעס. אלע רעכטן רעזערווירט.

47/174

איבערview

uint8_t קלאַס_נומער; sl_סטאַטוס_t סטאַטוס;
sl_usbd_msc_scsi_callbacks_t app_usbd_msc_scsi_callbacks = { .enable = נול, .disable = נול, .host_eject = נול };
סטאַטוס = sl_usbd_msc_scsi_create_instance(&app_usbd_msc_scsi_callbacks,0 &class_nbr);
אויב (סטאַטוס ! SL_STATUS_OK) { /* עס איז פארגעקומען א טעות. מען זאָל צולייגן דא די טעותן. */ }
צולייגן די MSC קלאַס אינסטאַנץ צו אייערע דעווייס'ס קאָנפיגוראַציע(ס)
נאכדעם וואס איר האט באשאפן אן MSC קלאס אינסטאנץ, קענט איר עס צולייגן צו א קאנפיגוראציע דורך אנרופן די פונקציע
sl_usbd_msc_add_to_configuration() .
די עקסampדי ליסטע אונטן ווייזט ווי אזוי צו רופן sl_usbd_msc_scsi_add_to_configuration() ניצנדיק דיפאָלט אַרגומענטן.
Example – רופט sl_usbd_ msc_scsi_add_to_configuration()

sl_status_t סטאַטוס;

סטאַטוס = sl_usbd_msc_scsi_add_to_configuration(קלאַס_nbr,

(1)

קאָנפיג_nbr_fs);

(2)

אויב (סטאַטוס ! SL_STATUS_OK) {

/* עס איז געשען אַ טעות. מען זאָל צולייגן דאָ די באַהאַנדלונג פון טעותן. */

}

(1) קלאַס נומער צו לייגן צו דער קאָנפיגוראַציע צוריקגעגעבן דורך sl_usbd_msc_scsi_create_instance(). (32) קאָנפיגוראַציע נומער (דאָ לייגט מען עס צו צו אַ פול-גיכקייט קאָנפיגוראַציע).
USB דעווייס MSC קלאַס לאָגישע יוניט האַנדלינג
צולייגן אַ לאָגישע איינהייט אַטאַטשירן/אָפּטיילן אַ סטאָרידזש מעדיום
צולייגן אַ לאָגישע איינהייט
ווען מען לייגט צו א לאגישע איינהייט צו אייער MSC SCSI קלאס אינסטאנץ, מוז עס זיין געבונדן צו א סטאָרידזש מעדיום (RAMDisk, SD קארטל, פלעש מעמארי, א.א.וו.). די MSC קלאס ניצט א סטאָרידזש דרייווער צו קאָמוניקירן מיט סטאָרידזש מעדיע. דעם דרייווער וועט מען דאַרפֿן צושטעלן ווען מען לייגט צו די לאגישע איינהייט.
די עקסampדי ליסטע אונטן ווייזט ווי אזוי צו לייגן צו א לאגישע איינהייט דורך sl_usbd_msc_scsi_lun_add().
Example – צולייגן א לאגישע איינהייט דורך sl_usbd_msc_scsi_lun_add()

דרוקרעכט © 2025 סיליקאָן לאַבאָראַטאָריעס. אלע רעכטן רעזערווירט.

48/174

איבערview

sl_usbd_msc_scsi_lun_t *lu_object_ptr = נול;

sl_usbd_msc_scsi_lun_info_t לו_info;

sl_status_t

סטאַטוס;

lu_info.sl_usbd_msc_scsi_lun_api_t = &app_usbd_scsi_storage_block_device_api;

lu_info.vendor_id_ptr

= "סיליקאָן לאַבס";

lu_info.product_id_ptr

= "בלאָק מיטל עקסampלע";

lu_info.product_revision_level = 0x1000u;

lu_info.is_read_only

= פאַלש;

סטאַטוס = sl_usbd_msc_scsi_lun_add(קלאַס_נומער, &lu_אינפאָ, &lu_אָבדזשעקט_פּטר);
אויב (סטאַטוס ! SL_STATUS_OK) { /* עס איז פארגעקומען א טעות. מען זאָל צולייגן דא די טעותן. */ }

אַטאַטשירן/אַראָפּנעמען אַ סטאָרידזש מעדיום
נאכדעם וואס די לאגישע איינהייט איז צוגעגעבן געווארן, מוז א סטאָרידזש מעדיום אנגעהענגט ווערן כדי צו זיין צוטריטלעך פון דער האסט זייט. די MSC קלאס אפערט צוויי פונקציעס צו קאנטראלירן די סטאָרידזש מעדיע פארבינדונג צו דער לאגישער איינהייט: sl_usbd_msc_scsi_lun_attach() און sl_usbd_msc_scsi_lun_detach(). די פונקציעס ערלויבן אייך צו נאכמאכן די אראפנעמונג פון א סטאָרידזש דעווייס כדי צוריקצוקומען פון דער איינגעבעטעטער אפליקאציע אויב נויטיג.
די עקסampדי ליסטע אונטן ווייזט ווי אזוי צו ניצן די פונקציע sl_usbd_msc_scsi_lun_attach() און sl_usbd_msc_scsi_lun_detach().
Exampלע – מעדיע צוטשעפּען/אָפּטיילן

sl_status_t סטאַטוס;

סטאַטוס = sl_usbd_msc_scsi_lun_attach(lu_object_ptr); אויב (סטאַטוס ! SL_STATUS_OK) { /* עס איז געשען אַ טעות. מען זאָל צולייגן דאָ די טעותן. */
}

(1)

סטאַטוס = sl_usbd_msc_scsi_lun_detach(lu_object_ptr); אויב (סטאַטוס ! SL_STATUS_OK) {
/* עס איז געשען אַ טעות. מען זאָל צולייגן דאָ די באַהאַנדלונג פון טעותן. */
}

(2)

סטאַטוס = sl_usbd_msc_scsi_lun_attach(lu_object_ptr) אויב (סטאַטוס ! SL_STATUS_OK) {
/* עס איז געשען אַ טעות. מען זאָל צולייגן דאָ די באַהאַנדלונג פון טעותן. */
}

(3)

(1) פֿון דעם מאָמענט, אויב די MSC מיטל איז פֿאַרבונדן צו אַ האָסט, איז די סטאָרידזש מעדיע צוטריטלעך.
(2) אויב די MSC דעווייס איז פארבונדן צו א האוסט, וועט די מעדיע יעצט דערשייַנען ווי נישט בנימצא. אין דעם מאָמענט, קענען אפעראציעס דורכגעפירט ווערן אויף די מעדיע פון ​​דער איינגעבעטעטער אַפּליקאַציע.
(3) ווידער, אויב די MSC דעווייס איז פארבונדן צום האוסט, וועט די סטאָרידזש מעדיע דערשייַנען ווי פארבונדן.
USB מיטל MSC קלאַס סטאָרידזש דרייווערס
די USB דעווייס MSC קלאַס דאַרף אַ סטאָרידזש דרייווער צו קאָמוניקירן מיט אַ סטאָרידזש מעדיום. פֿאַר דעם מאָמענט, סיליקאָן לאַבס אָפפערט נישט דרייווערס.

דרוקרעכט © 2025 סיליקאָן לאַבאָראַטאָריעס. אלע רעכטן רעזערווירט.

49/174

איבערview
TPY aa דער דרייווער AI איז דעפינירט דורך typedef sl_usbd_msc_scsi_lun_api_t. אונדזער sl_usbd_msc_scsi_lun_api_t ווערסיע מוז זיין אריינגערעכנט צו aaaaaaaa אייער sl_usbd_msc_scsi_lun_info_t ווערסיע, פּססעד ס אַרגומענט ווען איר לייגט צו לאָגיק יוניט מיט sl_usbd_msc_scsi_lun_add(). זעט סעקציע USB דעווייס MSC SCSI API פֿאַר מער פרטים וועגן די סטרוקטורן. די סטאָרידזש דרייווער אימפּלעמענטאַציע קען זיין אַזוי פּשוט ווי אַן אַרעי פון סעקטאָרן אין RAM. טיפּישע סעקטאָר גרייס (ד"ה, בלאָק גרייס) איז 512 פֿאַר מאַסע סטאָרידזש דעוויסעס, און 2048 פֿאַר CD-ROMs.

דרוקרעכט © 2025 סיליקאָן לאַבאָראַטאָריעס. אלע רעכטן רעזערווירט.

50/174

איבערview
איבערview
יו-עס-בי דעווייס פארקויפער קלאס
יו-עס-בי דעווייס פארקויפער קלאס איבערview USB דעווייס פארקויפער קלאס רעסורס באדערפענישן פון קאָר USB דעווייס פארקויפער קלאס קאנפיגוראציע USB דעווייס פארקויפער קלאס פראגראמירן גייד די פארקויפער קלאס ערלויבט אייך צו בויען פארקויפער-ספעציפישע דעווייסעס וואס קענען אימפלעמענטירן א פראפריעטאריעל פראטאקאל. עס פארלאזט זיך אויף א פאר פון גרויסע ענדפונקטן צו טראנספערירן דאטן צווישן דעם האוסט און דעם דעווייס. גרויסע טראנספערס זענען באקוועם פארן טראנספערירן גרויסע סומעס פון אומסטרוקטורירטע דאטן און צושטעלן א פארלעסלעכן אויסטויש פון דאטן דורך ניצן א טעות דעטעקציע און ריטריי מעקאניזם. אין צוגאב צו גרויסע ענדפונקטן, קען די פארקויפער קלאס אויך ניצן אן אפציאנאלע פאר פון אינטעראפט ענדפונקטן. יעדע אפערירן סיסטעם (OS) קען ארבעטן מיט דער פארקויפער קלאס צוגעשטעלט אז די OS האט א דרייווער צו האנדלען מיט דער פארקויפער קלאס. דעפּענדינג אויף די OS, קען דער דרייווער זיין געבוירענער אדער פארקויפער-ספעציפיש. למשל, אונטער מייקראסאפט ווינדאוס®, אינטעראקטירט אייער אפליקאציע מיטן WinUSB דרייווער צוגעשטעלט דורך מייקראסאפט צו קאמוניקירן מיטן פארקויפער דעווייס.
יו-עס-בי דעווייס פארקויפער קלאס איבערview
פיגור – אלגעמיינע ארכיטעקטור צווישן ווינדאוס האוסט און ווענדאָר קלאַס ווייזט די אלגעמיינע ארכיטעקטור צווישן דעם האוסט און דעם דעווייס ניצנדיק די ווענדאָר קלאַס. אין דעם בייַשפּילampלע, די באַלעבאָס אָפּערייטינג סיסטעם איז MS Windows.
פיגור – אַלגעמיינע אַרכיטעקטור צווישן MS Windows האָסט און ווענדאָר קלאַס

אויף דער MS Windows זייט, קאָמוניקירט די אַפּליקאַציע מיטן פאַרקויפער מיטל דורך אינטעראַקטירן מיט אַ USB ביבליאָטעק. ביבליאָטעקן, ווי libusb, פאָרשלאָגן אַן API צו פאַרוואַלטן אַ מיטל און זיינע פֿאַרבונדענע פּייפּס, און צו קאָמוניקירן מיטן מיטל דורך קאָנטראָל, באַלק און אינטעראַפּט ענדפּונקטן.
אויף דער דעווייס זייט, איז די ווענדאָר קלאַס צוזאַמענגעשטעלט פון די פאלגענדע ענדפּונקטן:
א פּאָר קאָנטראָל IN און OUT ענדפּונקטן גערופן דער דיפאָלט ענדפּונקט. א פּאָר פון מאַסן IN און OUT ענדפּונקטן.

דרוקרעכט © 2025 סיליקאָן לאַבאָראַטאָריעס. אלע רעכטן רעזערווירט.

51/174

איבערview

א פּאָר אינטעראַפּט אינ און אויט ענדפּונקטן. דאָס פּאָר איז אָפּציאָנעל. די טאַבעלע אונטן ווײַזט די נוצן פון די פֿאַרשידענע ענדפּונקטן:
טאַבעלע – באַניץ פון ווענדאָר קלאַס ענדפּונקטן

ענדפּונקט ריכטונג

קאָנטראָל IN
קאָנטראָל
OUT
גרויסע אריינגאבע

דעווייס-טו-האָסט
>האָסט-צו-דעווייס
דעווייס-טו-האָסט

גרויסע אויסגאס
אינטעראַפּט אין
יבעררייַסן
OUT

האָסט-צו-דעווייס
דעווייס-טו-האָסט
האָסט-צו-דעווייס

באַניץ
סטאַנדאַרט בקשות פֿאַר ענומעראַציע און פאַרקויפער-ספּעציפֿישע בקשות.
סטאַנדאַרט בקשות פֿאַר ענומעראַציע און פאַרקויפער-ספּעציפֿישע בקשות.
רויע דאַטן קאָמוניקאַציע. דאַטן קענען זיין סטרוקטורירט לויט אַ פּראַפּריעטאַרי פּראָטאָקאָל.
רויע דאַטן קאָמוניקאַציע. דאַטן קענען זיין סטרוקטורירט לויט אַ פּראַפּריעטאַרי פּראָטאָקאָל.
רויע דאַטן קאָמוניקאַציע אָדער אָנזאָגן. דאַטן קענען זיין סטרוקטורירט לויט אַ פּראַפּריעטאַרי פּראָטאָקאָל. רויע דאַטן קאָמוניקאַציע אָדער אָנזאָגן. דאַטן קענען זיין סטרוקטורירט לויט אַ פּראַפּריעטאַרי פּראָטאָקאָל.

די דעווייס אַפּליקאַציע קען נוצן מאַסע און ינטעראַפּט ענדפּוינטס צו שיקן אָדער באַקומען דאַטן צו אָדער פון דעם האָסט. עס קען נאָר נוצן דעם פעליקייַט ענדפּוינט צו דעקאָדירן פאַרקויפער-ספּעציפֿיש ריקוועסץ געשיקט דורך דעם האָסט. די נאָרמאַל ריקוועסץ זענען געראטן אינטערנאַללי דורך די קאָר שיכטע פון ​​סיליקאָן לאַבס USB דעווייס.
USB דעווייס פארקויפער קלאס רעסורס באדערפענישן פון קאָר

יעדעס מאל איר לייגט צו א ווענדאָר קלאַס אינסטאַנס צו א קאָנפיגוראַציע דורך די פונקציע sl_usbd_vendor_add_to_configuration() , וועלן די פאלגענדע רעסורסן ווערן צוגעטיילט פונעם קאָר.

מיטל
אינטערפייסיז אַלטערנאַטיווע אינטערפייסיז ענדפּונקטן אינטערפיי גרופּעס

קוואַנטיטי
1 1 2 (4 אויב איר האָט אַקטיוויזירט אינטעראַפּט ענדפּונקטן) 0

באַמערקט אַז די נומערן זענען פּער קאָנפיגוראַציע. ווען איר שטעלט אויף אייערע SL_USBD_INTERFACE_QUANTITY, SL_USBD_ALT_INTERFACE_QUANTITY, SL_USBD_INTERFACE_GROUP_QUANTITY און SL_USBD_DESCRIPTOR_QUANTITY קאָנפיגוראַציע ווערטן, פֿאַרגעסט נישט צו נעמען אין חשבון וויפֿל קאָנפיגוראַציעס די קלאַס וועט צוגעגעבן ווערן. פֿאַר די SL_USBD_OPEN_ENDPOINTS_QUANTITY קאָנפיגוראַציע ווערט, ווייל ענדפּונקטן ווערן געעפֿנט נאָר ווען אַ קאָנפיגוראַציע ווערט באַשטימט דורך דעם האָסט, דאַרפֿט איר נאָר נעמען אין חשבון די צאָל נויטיקע ענדפּונקטן פֿאַר אַ קלאַס אינסטאַנץ.
USB דעווייס פארקויפער קלאס קאנפיגוראציע

צוויי גרופּעס פון קאָנפיגוראַציע פּאַראַמעטערס ווערן גענוצט צו קאָנפיגורירן די ווענדאָר קלאַס:
USB דעווייס פארקויפער קלאס אפליקאציע-ספעציפישע קאנפיגוראציעס USB דעווייס פארקויפער קלאס אינסטאנץ קאנפיגוראציעס
USB דעווייס פארקויפער קלאס אַפּליקאַציע-ספּעציפֿישע קאָנפֿיגוראַציעס
ערשטנס, צו ניצן דעם סיליקאָן לאַבס USB דעווייס ווענדאָר קלאַס מאָדול, אַדזשאַסטירט די ווענדאָר קאָמפּיל-טיים קאָנפיגוראַציע דעפינירט לויט אייערע אַפּליקאַציע באדערפענישן. זיי זענען ריגרופּירט אין דעם sl_usbd_core_config.h כעאַדער. file אונטערן פארקויפער סעקציע. די קוואנטיטעט קאנפיגוראציעס ציל איז צו אינפארמירן דעם USB דעווייס מאדול וועגן וויפיל USB פארקויפער אביעקטן צו צוטיילן.
די טאַבעלע אונטן באַשרײַבט יעדע קאָנפיגוראַציע דעפֿיניציע.

דרוקרעכט © 2025 סיליקאָן לאַבאָראַטאָריעס. אלע רעכטן רעזערווירט.

52/174

איבערview

טאַבעלע – USB דעווייס פאַרקויפער קאָנפיגוראַציע דעפינירט

קאָנפיגוראַטיאָן נאָמען

באַשרייַבונג

פעליקייַט ווערט

SL_USBD_VENDOR_CLASS_INSTANCE_QUANTITY די צאָל קלאַס אינסטאַנסן וואָס איר וועט צוטיילן דורך אַ רוף צו די 2 פונקציע sl_usbd_vendor_create_instance() .

SL_USBD_VENDOR_CONFIGURATION_QUANTITY נומער פון קאָנפיגוראַציעס. פארקויפער קלאַס אינסטאַנסן קענען ווערן צוגעגעבן צו איין אָדער מער קאָנפיגוראַציעס דורך אַ רוף צו דער פונקציע sl_usbd_vendor_add_to_configuration().

USB דעווייס פארקויפער קלאס אינסטאנץ קאנפיגוראציעס

די סעקציע דעפינירט די קאָנפיגוראַציעס שייך צו די ווענדאָר קלאַס אינסטאַנסן.
קלאַס אינסטאַנס שאַפונג intr_en אינטערוואַל p_vendor_callbacks
קלאַס אינסטאַנס שאַפונג

שאַפֿן אַ ווענדאָר קלאַס אינסטאַנץ ווערט געטאָן דורך רופן די פֿונקציע sl_usbd_vendor_create_instance() , וואָס נעמט דריי קאָנפיגוראַציע אַרגומענטן וואָס ווערן באַשריבן אונטן.

אינטער_ען
בוליאַן וואָס ווײַזט צי אַ פּאָר פון ינטעראַפּט ענדפּונקטן זאָל צוגעגעבן ווערן צי נישט.

ווערט
אמת פאַלש

באַשרייַבונג
א פּאָר אין/אויס ענדפּונקטן וועט ווערן צוגעגעבן און צוגעשטעלט צו דער איינגעבעטעטער אַפּליקאַציע. קיין אינטעראַפּט ענדפּונקטן וועט נישט ווערן צוגעגעבן. נאָר אַ פּאָר פון באַלק אין/אויס ענדפּונקטן וועט זיין צוגעשטעלט.

מעהאַלעך
אויב איר שטעלט intr_en צו true, קענט איר ספעציפיצירן די אינטעראַפּט ענדפּוינטס פּאָלינג אינטערוואַל (אין מיליסעקונדעס). אויב איר שטעלט intr_en צו false, קענט איר שטעלן אינטערוואַל צו 0 ווייל עס וועט ווערן איגנאָרירט דורך דער קלאַס.
פּ_ווענדאָר_קאָלבאַקס
p_vendor_callbacks איז א צייגער צו א קאל-בעק פונקציע סטרוקטור וועריאַבל, וואָס איר קענט ספּעציפֿיצירן צו האַנדלען מיט די קלאַס ספּעציפֿישע קאָנטראָל ריקוועסץ. אויב איר ניצט נישט קיין קלאַס ספּעציפֿישע ריקוועסץ אָדער דאַרפֿט אַקטיווירן/דיאַקטיווירן אָנזאָגן, קענט איר דאָס שטעלן צו NULL.
די עקסampדי לינק אונטן גיט די ערווארטעטע אונטערשריפט פון אייער קלאס-ספעציפישע פארלאנגען הענדלער.
Example – אונטערשריפט פון קלאַס-ספּעציפֿישער בקשה פֿונקציע

פּאָיד אַפּ_וסבד_ווענדאָר_רעק_האַנדלע(uint8_t

קלאַס_נומער, (1)

קאנסט sl_usbd_setup_req_t *p_setup_req); (2)

sl_usbd_vendor_callbacks_t app_usbd_vendor_callback_functions =
{
.ענייבאַל = נול, .דיסייבאַל = נול, .סעטאַפּ_רעק = אַפּ_וסבד_ווענדאָר_רעק_האַנדלע,
};

(1) פארקויפער קלאס אינסטאנץ נומער.

דרוקרעכט © 2025 סיליקאָן לאַבאָראַטאָריעס. אלע רעכטן רעזערווירט.

53/174

איבערview

(2) צייג צו א באקומענע סעטאַפּ פארלאנג פון האוסט.
יו-עס-בי דעווייס פארקויפער קלאס פראגראמירן גייד
די סעקציע דערקלערט ווי אזוי צו ניצן די ווענדאָר קלאַס. איניציאַליזירן די USB דעווייס ווענדאָר קלאַס צולייגן אַ USB דעווייס ווענדאָר קלאַס אינסטאַנץ צו דיין דעווייס קאָמוניקירן ניצן די USB דעווייס ווענדאָר קלאַס
איניציאַליזירן די USB דעווייס פארקויפער קלאַס
כדי צו לייגן צו א ווענדאָר קלאַס פונקציאָנאַליטעט צו אייער דעווייס, ערשט איניציאליזירן די קלאַס דורך רופן די פונקציע USBD_Vendor_Init(). די עקסampדי ליסטע אונטן ווייזט ווי אזוי צו רופן sl_usbd_vendor_init().
Example – רופט sl_usbd_vendor_init()

sl_status_t סטאַטוס;
סטאַטוס = sl_usbd_vendor_init(); אויב (סטאַטוס ! SL_STATUS_OK) { /* עס איז פארגעקומען א טעות. מען זאָל צולייגן דא די טעותן. */ }
צולייגן אַ USB דעווייס פארקויפער קלאַס אינסטאַנץ צו דיין דעווייס
כּדי צו לייגן צו ווענדאָר קלאַס פאַנגקשאַנאַליטי צו אייער מיטל, מוזט איר ערשט שאַפֿן אַן אינסטאַנץ, און דערנאָך לייגן עס צו צו אייער מיטל'ס קאָנפיגוראַציע(ס).
שאַפֿן אַ ווענדאָר קלאַס אינסטאַנץ צולייגן די ווענדאָר קלאַס אינסטאַנץ צו דיין מיטל ס קאָנפיגוראַציע(ס)
שאַפֿן אַ ווענדאָר קלאַס אינסטאַנץ
שאַפֿט אַ Vendor קלאַס אינסטאַנץ דורך רופן די פֿונקציע sl_usbd_vendor_create_instance(). די עקסampדי ליסטע אונטן ווייזט ווי אזוי צו רופן sl_usbd_vendor_create_instance() ניצנדיק דיפאָלט אַרגומענטן. פֿאַר מער אינפֿאָרמאַציע וועגן די קאָנפיגוראַציע אַרגומענטן צו געבן צו sl_usbd_vendor_create_instance(), זעט USB דעווייס ווענדאָר קלאַס אינסטאַנס קאָנפיגוראַציעס.
Example – רופט sl_usbd_vendor_create_instance()

uint8_t קלאַס_נומער; sl_סטאַטוס_t סטאַטוס;

סטאַטוס = sl_usbd_vendor_create_instance(פאַלש,

(1)

0ו,

(2)

אַפּ_וסבד_ווענדאָר_רוף־צוריק_פונקציעס, (3)

&קלאַס_נומער);

אויב (סטאַטוס ! SL_STATUS_OK) {

/* עס איז געשען אַ טעות. מען זאָל צולייגן דאָ די באַהאַנדלונג פון טעותן. */

}

(1) קיין אינטעראַפּט ענדפּונקטן מיט דעם קלאַס אינסטאַנץ. (2) אינטערוואַל ווערט איגנאָרירט ווייל אינטעראַפּט ענדפּונקטן זענען דיסייבאַלד.

דרוקרעכט © 2025 סיליקאָן לאַבאָראַטאָריעס. אלע רעכטן רעזערווירט.

54/174

איבערview

(3) צוריקרוף פונקציע וואס איז טייל פון אייער אפליקאציע וואס האנדלט מיט פארקויפער-ספעציפישע קלאס פארלאנגען. זעהט קאמוניקירן מיט די USB דעווייס פארקויפער קלאס פאר מער אינפארמאציע. צולייגן די פארקויפער קלאס אינסטאנץ צו אייער דעווייס'ס קאנפיגוראציע(ס) נאכדעם וואס איר האט באשאפן א פארקויפער קלאס אינסטאנץ, קענט איר עס צולייגן צו א קאנפיגוראציע דורך רופן די פונקציע USBD_Vendor_ConfigAdd(). די עקסampדי ליסטע אונטן ווייזט ווי אזוי צו רופן sl_usbd_vendor_add_to_configuration() ניצנדיק דיפאָלט אַרגומענטן.
Example – רופט sl_usbd_vendor_add_to_configuration()

sl_status_t סטאַטוס;

סטאַטוס = sl_usbd_vendor_add_to_configuration(קלאַס_nbr,

(1)

קאָנפיג_nbr_fs);

(2)

אויב (סטאַטוס ! SL_STATUS_OK) {

/* עס איז געשען אַ טעות. מען זאָל צולייגן דאָ די באַהאַנדלונג פון טעותן. */

}

(1) קלאַס נומער צו לייגן צו דער קאָנפיגוראַציע צוריקגעגעבן דורך sl_usbd_vendor_create_instance(). (2) קאָנפיגוראַציע נומער (דאָ לייגט מען עס צו צו אַ פול-גיכקייט קאָנפיגוראַציע).
קאָמוניקאַציע ניצן די USB דעווייס ווענדאָר קלאַס
אַלגעמיינע סינקראָנישע קאָמוניקאַציע אַסינקראָנישע קאָמוניקאַציע פאַרקויפער בקשה אַלגעמיין די פאַרקויפער קלאַס אָפפערס די פאלגענדע פונקציעס צו קאָמוניקירן מיט דעם באַלעבאָס. פֿאַר מער פרטים וועגן די פּאַראַמעטערס פון דער פונקציע, זען USB Device Vendor API.
טאַבעלע – פֿאַרקויפֿער קאָמוניקאַציע API קיצער

פֿונקציע נאָמען
סל_וסב ד _ווענד אדער ר_ לייען אד _בולק_סי נק() סל_וסב ד _ווענד אדער ר_שרייב _בולק_סי נק() סל_וסב ד _ווענד אדער ר_ לייען אד _בולק_אזי נק() סל_וסב ד _ווענד אדער ר_שרייב _בולק_אזי נק() סל_וסב ד _ווענד אדער ר_ לייען אד _אינטער ראפ ט_סי נק() סל_וסב ד _ווענד אדער ר_ שרייב _אינטער ראפ ט_סי נק() סל_וסב ד _ווענד אדער ר_ לייען אד _אינטער ראפ ט_אזי נק
()
סל_וסב ד _ווע און אדער ר_שרייב _אינטער רעפּוטאַציע ט_אַסי נק
()

אָפּעראַציע באַקומט דאַטן פֿון האָסט דורך באַלק OUT ענדפּוינט. די פֿונקציע בלאָקירט. שיקט דאַטן צו האָסט דורך באַלק IN ענדפּוינט. די פֿונקציע בלאָקירט. באַקומט דאַטן פֿון האָסט דורך באַלק OUT ענדפּוינט. די פֿונקציע איז נישט-בלאָקירנדיק. שיקט דאַטן צו האָסט דורך באַלק IN ענדפּוינט. די פֿונקציע איז נישט-בלאָקירנדיק. באַקומט דאַטן פֿון האָסט דורך אינטעראַפּט OUT ענדפּוינט. די פֿונקציע בלאָקירט. שיקט דאַטן צו האָסט דורך אינטעראַפּט IN ענדפּוינט. די פֿונקציע בלאָקירט. באַקומט דאַטן פֿון האָסט דורך אינטעראַפּט OUT ענדפּוינט. די פֿונקציע איז נישט-
בלאַקינג.
שיקט דאַטן צום האָסט דורך אינטעראַפּט IN ענדפּוינט. די פונקציע איז נישט-בלאָקירנדיק.

די פארקויפער פארלאנגען זענען אויך נאך א וועג צו קאמוניקירן מיטן האוסט. ווען מען פירט פארקויפער פארלאנגען געשיקט דורך דעם האוסט, קען די אפליקאציע באקומען אדער שיקן דאטן פון אדער צום האוסט ניצנדיג דעם קאנטראל ענדפונקט; איר וועט דארפן צושטעלן אן אפליקאציע קאלבעק וואס ווערט אריבערגעגעבן אלס א פאראמעטער פון sl_usbd_vendor_create_instance(). סינקראנאזע קאמוניקאציע

דרוקרעכט © 2025 סיליקאָן לאַבאָראַטאָריעס. אלע רעכטן רעזערווירט.

55/174

איבערview

סינקראָנישע קאָמוניקאַציע מיינט אַז די טראַנספער בלאָקירט. ווען אַ פונקציע ווערט גערופן, בלאָקירט די אַפּליקאַציע ביז די טראַנספער ענדיגט זיך מיט אָדער אָן אַ טעות. מען קען ספּעציפֿיצירן אַ טיימאַוט כּדי צו פֿאַרמייַדן וואַרטן אויף אייביק. די עקס.ampדי לינק אונטן ווייזט א לייען און שרייבן וואס באקומט דאטן פונעם האוסט ניצנדיג דעם באלק OUT ענדפונקט און שיקט דאטן צום האוסט ניצנדיג דעם באלק IN ענדפונקט.
Exampלע – סינקראָנישע מאַסע לייענען און שרייבן

__אויסגעשטעלט(4) uint8_t rx_buf[2];

__אויסגעשטעלט(4) uint8_t טקס_בוף[2];

uint32_t

xfer_len;

sl_status_t

סטאַטוס;

סטאַטוס = sl_usbd_vendor_read_bulk_sync(class_nbr,

(1)

(ליידיג *)&rx_buf[0],

(2)

2ו,

0ו,

(3)

&xfer_len);

אויב (סטאַטוס ! SL_STATUS_OK) {

/* $$$$ באַהאַנדלען דעם טעות. */

}

סטאַטוס = sl_usbd_vendor_write_bulk_sync( קלאַס_nbr,

(1)

(ליידיג *)&tx_buf[0],

(4)

2ו,

0ו,

(3)

פאַלש,

(5)

&xfer_len);

אויב (סטאַטוס ! SL_STATUS_OK) {

/* $$$$ באַהאַנדלען דעם טעות. */

}

(1) די קלאַס אינסטאַנס נומער באשאפן מיט sl_usbd_vendor_create_instance() גיט אַן אינערלעכע רעפערענץ צו דער ווענדאָר קלאַס צו רוטן די טראַנספער צו די ריכטיקע מאַסע OUT אָדער IN ענדפּוינט.
(2) די אַפּליקאַציע מוז זיכער מאַכן אַז דער באַפער וואָס ווערט צוגעשטעלט צו דער פונקציע איז גרויס גענוג צו אַקאַמאַדירן אַלע דאַטן. אַנדערש קענען סינקראָניזאַציע פּראָבלעמען פּאַסירן.
(3) כדי צו פארמיידן אן אומענדלעכע בלאקירנדיקע סיטואציע, קען מען ספעציפיצירן א טיימאוט אויסגעדריקט אין מיליסעקונדעס. א ווערט פון 809 מאכט אז די אפליקאציע אויפגאבע זאל ווארטן אויף אייביג.
(4) די אַפּליקאַציע גיט דעם איניציאַליזירטן טראַנסמיסיע באַפער.
(5) אויב די פאָן איז געשטעלט צו אמת, און די טראַנספער לענג איז אַ קייפל פון די ענדפּוינט מאַקסימום פּאַקעט גרייס, וועט די דעווייס סטעק שיקן אַ נול-לענג פּאַקעט צו די האָסט צו סיגנאַלירן די סוף פון די טראַנספער.
די נוצן פון אינטעראַפּט ענדפּוינט קאָמוניקאַציע פונקציעס, sl_usbd_vendor_read_interrupt_sync() און sl_usbd_vendor_write_interrupt_sync(), איז ענלעך צו מאַסע ענדפּוינט קאָמוניקאַציע פונקציעס פּרעזענטירט אין עקס.ample – סינקראָנאָוס מאַסע לייענען און שרייבן.
אַסינטשראָנאָוס קאָמוניקאַציע
אסינכראנישע קאמוניקאציע מיינט אז די טראנספער איז נישט-בלאקירנדיק. ווען א פונקציע ווערט גערופן, גיט די אפליקאציע איבער די טראנספער אינפארמאציע צום דעווייס סטאק און בלאקירט נישט. אנדערע אפליקאציע פראצעסירונג קען געטאן ווערן בשעת די טראנספער איז אין פראגרעס איבערן יו-עס-בי באס. אזוי שנעל ווי די טראנספער איז געענדיגט, ווערט א קאל-בעק פונקציע גערופן דורך דעם דעווייס סטאק צו אינפארמירן די אפליקאציע וועגן די טראנספער פארענדיגונג. די עקסampדי לינק אונטן ווייזט אסינקראניש לייענען און שרייבן.
Exampלע – אַסינקראָניש מאַסע לייענען און שרייבן

דרוקרעכט © 2025 סיליקאָן לאַבאָראַטאָריעס. אלע רעכטן רעזערווירט.

56/174

איבערview

פּאָיד אַפּ_וסבד_ווענדאָר_קאָם (uint8_t קלאַס_nbr)

{

__אויסגעשטעלט(4) uint8_t rx_buf[2];

__אויסגעשטעלט(4) uint8_t טקס_בוף[2];

sl_status_t

סטאַטוס;

סטאַטוס = sl_usbd_vendor_read_bulk_async(קלאַס_nbr,

(ליידיג *)&rx_buf[0],

(2)

2ו,

אַפּ_וסבד_ווענדאָר_רקס_פאַרענדיקט,

נול);

(4)

אויב (סטאַטוס ! SL_STATUS_OK) {

/* $$$$ באַהאַנדלען דעם טעות. */

}

סטאַטוס = sl_usbd_vendor_write_bulk_async(קלאַס_nbr,

(ליידיג *)&tx_buf[0],

(5)

2ו,

אַפּ_וסבד_ווענדאָר_טקס_פאַרענדיקט,

NULL,

(4)

פאַלש);

(6)

אויב (סטאַטוס ! SL_STATUS_OK) {

/* $$$$ באַהאַנדלען דעם טעות. */

}

}

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

סטאַטיש פּאָיד אַפּ_וסבד_ווענדאָר_רקס_פאַרענדיקט(uint8_t קלאַס_נומער,

(3)

פּאָיד *p_buf,

uint32_t בופ_לען,

uint32_t xfer_len,

פּאָיד *p_callback_arg,

sl_status_t סטאַטוס)

{

אויב (סטאַטוס ! SL_STATUS_OK) {

/* $$$$ מאַך עטלעכע פּראָצעסן. */

} אַנדערש {

/* $$$$ באַהאַנדלען דעם טעות. */

}

}

סטאַטיש פּאָיד אַפּ_וסבד_ווענדאָר_טקס_פאַרענדיקט(uint8_ט קלאַס_נומער,

(3)

פּאָיד *p_buf,

uint32_t בופ_לען,

uint32_t xfer_len,

פּאָיד *p_callback_arg,

sl_status_t סטאַטוס)

{

אויב (סטאַטוס ! SL_STATUS_OK) {

/* $$$$ מאַך עטלעכע פּראָצעסן. */

} אַנדערש {

/* $$$$ באַהאַנדלען דעם טעות. */

}

}

(1) די קלאַס אינסטאַנץ נומער גיט אַן אינערלעכע רעפֿערענץ צו דער ווענדאָר קלאַס צו רוטן די טראַנספֿער צו די ריכטיקע מאַסע OUT אָדער IN ענדפּוינט. (2) די אַפּליקאַציע מוז זיכער מאַכן אַז דער באַפֿער וואָס ווערט צוגעשטעלט איז גרויס גענוג צו אַקאַמאַדירן אַלע דאַטן. אַנדערש, קען זיין סינגקראָניזאַציע פּראָבלעמען. (3) די אַפּליקאַציע גיט אַ קאָלבעק פֿונקציע פּוינטער וואָס ווערט דורכגעגעבן ווי אַ פּאַראַמעטער. נאָך דעם ווי די טראַנספֿער איז פֿאַרענדיקט, רופֿט דער דעווייס סטעק די קאָלבעק פֿונקציע אַזוי אַז די אַפּליקאַציע קען פֿאַרענדיקן די טראַנספֿער דורך אַנאַליזירן די טראַנספֿער רעזולטאַט. למשל, נאָך דעם ווי אַ לייען אָפּעראַציע איז פֿאַרענדיקט, קען די אַפּליקאַציע דורכפֿירן פּראָצעסינג אויף די באַקומענע דאַטן. נאָך דעם ווי די שרייבן איז פֿאַרענדיקט, קען די אַפּליקאַציע אָנווייַזן צי די שרייבן איז געווען געראָטן און וויפֿל בייטס זענען געשיקט געוואָרן.

דרוקרעכט © 2025 סיליקאָן לאַבאָראַטאָריעס. אלע רעכטן רעזערווירט.

57/174

איבערview
(4) אן ארגומענט פארבונדן מיטן קאלבעק קען אויך אריבערגעגעבן ווערן. דערנאך אין דעם קאלבעק קאנטעקסט, קען מען צוריק באקומען עטליכע פריוואטע אינפארמאציע. (5) די אפליקאציע גיט דעם איניציאליזירטן טראנסמיט באפער. (6) אויב די פאן איז געשטעלט צו אמת, און די טראנספער לענג איז א קייפל פון די ענדפונקט מאקסימום פאקעט גרייס, וועט די דעווייס סטאק שיקן א נול-לענג פאקעט צום האוסט צו סיגנאלירן דעם סוף פון טראנספער. די נוצן פון אינטעראפט ענדפונקט קאמוניקאציע פונקציעס, sl_usbd_vendor_read_interrupt_async() און sl_usbd_vendor_write_interrupt_async(), איז ענליך צו די מאסק ענדפונקט קאמוניקאציע פונקציעס וואס ווערן פרעזענטירט אין עקס.ample אַסינקראָנאָוס מאַסע לייענען און שרייבן.
פארקויפער פארלאנג
די USB 2.0 ספעציפיקאציע דעפינירט דריי טיפן פארלאנגען: סטאנדארט, קלאס, און פארקויפער. אלע סטאנדארט פארלאנגען ווערן באהאנדלט גלייך דורך די קערן לייער, בשעת קלאס פארלאנגען ווערן באהאנדלט דורך די ריכטיגע פארבונדענע קלאס. פארקויפער פארלאנגען קענען ווערן באהאנדלט דורך די פארקויפער קלאס. צו באהאנדלען פארקויפער פארלאנגען, מוזט איר צושטעלן אן אפליקאציע קאלבעק אלס א פאראמעטער פון sl_usbd_vendor_create_instance(). נאכדעם וואס א פארקויפער פארלאנג ווערט באקומען דורך די USB דעווייס, מוז עס ווערן דעקאדירט ריכטיג. די עקסampדי לינק אונטן ווייזט די דעקאדירונג פון פארלאנגען פון פארקויפער. געוויסע פארלאנגען קענען זיין פארלאנגט צו באקומען פון אדער שיקן צום האוסט בעת די דאטן סעסיע.tagפון א קאנטראל איבערפיר. אויב קיין דאטן נישטtage איז פאראן, דארפסטו נאר דעקאדירן דעם סעטאפ פאקעט. דאס למשלampלע ווייזט די דריי טיפן דאַטןtagעלעקטראָניש פאַרוואַלטונג: קיין דאַטן, דאַטן אַרויס און דאַטן אַרייַן.
Exampלע – פארקויפער בעטן דעקאָדירונג

דרוקרעכט © 2025 סיליקאָן לאַבאָראַטאָריעס. אלע רעכטן רעזערווירט.

58/174

איבערview

#דעפינירן APP_VENDOR_REQ_NO_DATA

0x01u

#דעפינירן APP_VENDOR_REQ_RECEIVE_DATA_FROM_HOST 0x02u

#דעפינירן APP_VENDOR_REQ_SEND_DATA_TO_HOST 0x03u

#דעפינירן APP_VENDOR_REQ_DATA_BUF_SIZE

50u

סטאַטיק uint8_t app_vendor_req_buf[APP_VENDOR_REQ_DATA_BUF_SIZE];

סטאַטישע בול app_usbd_vendor_req (uint8_t

קלאַס_נומער,

קאָנסט sl_usbd_setup_req_t *p_setup_req)

(1)

{

בול גילטיק;

sl_status_t סטאַטוס;

uint16_t רעק_לען;

uint32_t xfer_len;

(לייג)קלאס_נומער;

סוויטש(p_setup_req->bRequest) { קעיס APP_VENDOR_REQ_NO_DATA: גילטיק = אמת; ברעכן;

(2) (3)

פאַל APP_VENDOR_REQ_RECEIVE_DATA_FROM_HOST:

(4)

רעק_לען = p_סעטאַפּ_רעק->wלענג;

אויב (req_len > APP_VENDOR_REQ_DATA_BUF_SIZE) {

// נישט גענוג פּלאַץ צו באַקומען דאַטן.

צוריקקער (פאַלש);

}

// באַקומען דאַטן דורך קאָנטראָל OUT EP. // וואַרטן אויף אייביק ביז די טראַנספער איז געענדיקט. סטאַטוס = sl_usbd_core_read_control_sync((void *)&app_vendor_req_buf[0u],
req_len, 0u, &xfer_len); אויב (סטאַטוס ! SL_STATUS_OK) { גילטיק = נישט; } אַנדערש { גילטיק = אמת; } ברעכן;

פאַל APP_VENDOR_REQ_SEND_DATA_TO_HOST:

(5)

רעק_לען = APP_VENDOR_REQ_DATA_BUF_SIZE;

// פֿילט אויס buf מיט אַ מוסטער. Mem_Set((void *)&AppVendorReqBuf[0u],
'א',
רעק_לען);

// שיק דאטן דורך קאנטראל אין EP. // ווארט אויף אייביג ביז די טראנספער איז פארענדיגט. סטאטוס = sl_usbd_core_write_control_sync((void *)&app_vendor_req_buf[0u],
req_len, 0u, false, &xfer_len); אויב (סטאַטוס ! SL_STATUS_OK) { גילטיק = DEF_FAIL; } אַנדערש { גילטיק = DEF_OK; } ברעכן;

פעליקייַט:

(6)

// די בקשה ווערט נישט געשטיצט.

דרוקרעכט © 2025 סיליקאָן לאַבאָראַטאָריעס. אלע רעכטן רעזערווירט.

59/174

איבערview

גילטיק = אמת; ברעכן;
פאַל APP_VENDOR_REQ_RECEIVE_DATA_FROM_HOST:(4) req_len = p_setup_req->wLength;if(req_len > APP_VENDOR_REQ_DATA_BUF_SIZE){// נישט גענוג פּלאַץ צו באַקומען דאַטן.return(false);}// באַקומען דאַטן דורך קאָנטראָל OUT EP.// וואַרטן אויף אייביק ביז די טראַנספער איז געענדיקט. status =sl_usbd_core_read_control_sync((void *)&app_vendor_req_buf[0u],
req_len,0u,&xfer_len);אויב(סטאַטוס ! SL_STATUS_OK){ גילטיק = פאַלש;}אַנדערש{ גילטיק = אמת;}ברעכן;
פאַל APP_VENDOR_REQ_SEND_DATA_TO_HOST:(5) req_len = APP_VENDOR_REQ_DATA_BUF_SIZE;// פֿיל buf מיט אַ פּאַטערן.Mem_Set((void *)&AppVendorReqBuf[0u],'A',
req_len);// שיקט דאטן דורך קאנטראל אין EP.// ווארט אויף אייביג ביז טראנספער איז פארענדיגט. 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;}אנדערש{ valid = DEF_OK;}ברעך;
פעליקייט:(6) // פארלאנג ווערט נישט געשטיצט. גילטיק = DEF_FAIL;ברעיק;}צוריקגעבן(גילטיק);}

(1) דער קערן וועט איבערגעבן דעם אינהאַלט פֿון דעם סעטאַפּ פּאַקעט צו אייער אַפּליקאַציע. די סטרוקטור sl_usbd_setup_req_t כּולל די זעלבע פֿעלדער ווי דעפֿינירט דורך דער USB 2.0 ספּעציפֿיקאַציע (זעט אָפּטייל "9.3 USB דעווייס ריקוועסץ" פֿון דער ספּעציפֿיקאַציע פֿאַר מער פרטים):

typedef struct {

uint8_t bmRequestType; /* קעראַקטעריסטיקס פון בקשה.

*/

uint8_t bRequest; /* ספעציפישע פארלאנג.

*/

uint16_t wValue; /* ווערייִרט לויט בקשה.

*/

uint16_t wIndex; /* ווערייִרט לויט בקשה; טיפּיש געניצט ווי אינדעקס.*/

uint16_t wLength; /* טראַנספער לענג אויב דאַטן stage פאָרשטעלן.

*/

} sl_usbd_setup_req_t;

(2) באַשטימט די בקשה. איר קענט ניצן אַ "switch statement" אויב איר ניצט אַנדערע בקשה. אין דעם בייַשפּילampלע, עס זענען דא דריי פארשידענע פארלאנגען וואס קארעספאנדירן צו די דריי טיפן פון די דאטןtagע: APP_VENDOR_REQ_NO_DATA, APP_VENDOR_REQ_RECEIVE_DATA_FROM_HOST, און APP_VENDOR_REQ_SEND_DATA_TO_HOST.
(3) אויב קיין דאַטןtage איז פאראן, דארפט איר נאר דעקאדירן די אנדערע פעלדער. די אנוועזנהייט פון א דאטן stage אדער נישט ווערט אנגעצייכנט דורך דעם פעלד wLength זייענדיג נישט-נול אדער נול.
(4) אויב דער האָסט שיקט דאַטן צום דעווייס, מוזט איר רופן די פונקציע sl_usbd_core_read_control_sync(). דער באַפער וואָס ווערט צוגעשטעלט זאָל קענען אַנטהאַלטן ביז wLength בייטס. אויב עס פּאַסירט אַ טעות, גיט צוריק "false" צום קאָר, וואָס וועט אָפּשטעלן דעם סטאַטוס.tage פון די קאנטראל טראנספער, וואס ווייזט פארן האוסט אז די פארלאנג קען נישט ווערן פראצעסירט. true ווערט צוריקגעגעבן אין פאל פון הצלחה.
(5) אויב דער האוסט באקומט דאטן פון דעם אפאראט, מוזט איר רופן די פונקציע sl_usbd_core_write_control_sync(). אויב עס פאסירט א טעות, גיט צוריק "false" צום קערן וואס וועט אפשטעלן דעם סטאטוס.tage פון די קאנטראל טראנספער, וואס ווייזט פארן האוסט אז די פארלאנג קען נישט ווערן פראצעסירט. true ווערט צוריקגעגעבן אין פאל פון הצלחה.
(6) אין דעם בייַשפּילampאלע פארלאנגען נישט דערקענט ווערן באצייכנט מיט צוריקגעבן פאלש צום קערן. דאס וועט אפשטעלן די דאטן אדער סטאטוס.tage פון די קאנטראל טראנספער וואס ווייזט צום האוסט אז די פארלאנג ווערט נישט געשטיצט.
דער האָסט שיקט פֿאַרקויפֿער ריקוועסץ דורך אַ האָסט פֿאַרקויפֿער אַפּליקאַציע. יו-עס-בי ביבליאָטעקן, ווי למשל libusb, קענען געניצט ווערן צו העלפֿן אײַך אַנטוויקלען אײַער אייגענע האָסט פֿאַרקויפֿער אַפּליקאַציע.

דרוקרעכט © 2025 סיליקאָן לאַבאָראַטאָריעס. אלע רעכטן רעזערווירט.

60/174

אַפּי דאַקיומענטיישאַן
אַפּי דאַקיומענטיישאַן
אַפּי דאַקיומענטיישאַן
רשימה פון מאַדזשולז
USB מיטל API USB מיטל ACM API USB מיטל CDC API USB מיטל קאָר API USB מיטל HID API USB מיטל MSC API USB מיטל MSC SCSI API USB מיטל פאַרקויפער API

באַשרייַבונג
USB מיטל API USB מיטל ACM API USB מיטל CDC API USB מיטל קאָר API USB מיטל HID API USB מיטל MSC API USB מיטל MSC SCSI API USB מיטל פאַרקויפער API

דרוקרעכט © 2025 סיליקאָן לאַבאָראַטאָריעס. אלע רעכטן רעזערווירט.

61/174

יו-עס-בי דעווייס API
יו-עס-בי דעווייס API
יו-עס-בי דעווייס API
יו-עס-בי דעווייס API.
מאָדולעס
USB מיטל ACM API USB מיטל CDC API USB מיטל Core API USB מיטל HID API USB מיטל MSC API USB מיטל MSC SCSI API USB מיטל פאַרקויפער API

דרוקרעכט © 2025 סיליקאָן לאַבאָראַטאָריעס. אלע רעכטן רעזערווירט.

62/174

יו-עס-בי דעווייס עי-סי-עם עי-איי-פי

יו-עס-בי דעווייס עי-סי-עם עי-איי-פי

יו-עס-בי דעווייס עי-סי-עם עי-איי-פי

יו-עס-בי דעווייס CDC ACM API.
מאָדולעס
א sl_usbd_cdc_ cm_line_coding_t sl_usbd_cdc_acm_callbacks_t
פאַנגקשאַנז

sl_סטאַטוס_ט sl_סטאַטוס_ט
sl_סטאַטוס_ט sl_סטאַטוס_ט sl_סטאַטוס_ט
sl_status_t
sl_status_t
sl_status_t
סל_סטאַטוס_ט סל_סטאַטוס_ט סל_סטאַטוס_ט סל_סטאַטוס_ט סל_סטאַטוס_ט

א sl_usbd_cdc_ cm_init(void)
גלאבאלע וועריאַבלען.
ssll__uussbbdd__ccddcc__aaccmm__ccraellabtaec_kins_stta*npc_ea(cumin_tc1a6l_lbtalicnkes_,sutaintte8__int t*eprv_saul,bucinlats1s6__nt bcra)ll_mgmt_capabilities,
לייג צו א נייע אינסטאַנץ פון די CDC ACM סעריעל עמולאַציע סובקלאַס.
aaaa sl_usbd_cdc_ cm_ dd_to_configuration(uint8_t סובקל ss_nbr, uint8_t config_nbr)
לייג צו אַ CDC ACM סובקלאַס קלאַס אינסטאַנס אין USB מיטל קאָנפיגוראַציע.
aa sl_usbd_cdc_ cm_is_en בליט(uint8_t סובקלאס_nbr, bool *p_enabled)
באַקומען די CDC ACM סעריעל עמולאַציע סובקלאַס ענייבאַל שטאַט.
aaa sl_usbd_cdc_ cm_re d(uint8_t סובקל ss_nbr, uint8_t *p_buf, uint32_t buf_len, uint16_t טיימאוט, uint32_t
*p_xfer_len) באַקומען דאַטן אויף די CDC ACM סעריעל עמולאַציע סובקלאַס.
aaaa sl_usbd_cdc_ cm_re d_ sync(uint8_t subcl ss_nbr, uint8_t *p_buf, uint32_t buf_len, aaaa sl_usbd_cdc_ sync_function_t sync_fnct, void *p_ sync_ rg)
באַקומען דאַטן אויף די CDC ACM סעריאַל עמולאַציע סובקלאַס אַסינקראָנאָס.
aa sl_usbd_cdc_ cm_write(uint8_t סובקל ss_nbr, uint8_t *p_buf, uint32_t buf_len, uint16_t טיימאוט, uint32_t
*p_xfer_len) שיקט דאטן אויף דער CDC ACM סעריעל עמולאציע סובקלאס.
aaa sl_usbd_cdc_ cm_write_ sync(uint8_t subcl ss_nbr, uint8_t *p_buf, uint32_t buf_len, aaaa sl_usbd_cdc_ sync_function_t sync_fnct, void *p_ sync_ rg)
שיקט דאַטן אויף דער CDC ACM סעריעל עמולאַציע סובקלאַס אַסינקראָנאָס.
aaa sl_usbd_cdc_ cm_get_line_control_st te(uint8_t סובקל ss_nbr, uint8_t *p_line_ctrl)
צוריקגעבן דעם צושטאנד פון קאנטראל ליניעס.
aaa sl_usbd_cdc_ cm_get_line_coding(uint8_t סובקל ss_nbr, sl_usbd_cdc_ cm_line_coding_t *p_line_coding)
באַקומען דעם איצטיקן צושטאַנד פֿון דער ליניע קאָדירונג.
aaa sl_usbd_cdc_ cm_set_line_coding(uint8_t סובקל ss_nbr, sl_usbd_cdc_ cm_line_coding_t *p_line_coding)
שטעלן אַ נייע שורה קאָדירונג.
aaa sl_usbd_cdc_ cm_set_line_st te_event(uint8_t סובקל ss_nbr, uint8_t events)
שטעלן אַ ליניע שטאַט געשעעניש(ן).
aaaa sl_usbd_cdc_ cm_cle r_line_st te_event(uint8_t סובקל ss_nbr, uint8_t events)
אויסמעקן א ליניע שטאַט געשעעניש(ן).

דרוקרעכט © 2025 סיליקאָן לאַבאָראַטאָריעס. אלע רעכטן רעזערווירט.

63/174

יו-עס-בי דעווייס עי-סי-עם עי-איי-פי
מאַקראָס
#דעפינירן SL_USBD_CDC_ACM_NBR_NONE 255u
מאָדולע.
#דעפינירן SL_USBD_CDC_ACM_PARITY_NONE 0u
פּאָרט סעטטינגס דעפינירט.
#דעפינירן SL_USBD_CDC_ACM_PARITY_ODD 1u #דעפינירן SL_USBD_CDC_ACM_PARITY_EVEN 2u #דעפינירן SL_USBD_CDC_ACM_PARITY_MARK 3u #דעפינירן SL_USBD_CDC_ACM_PARITY_SPACE 4u #דעפינירן SL_USBD_CDC_ACM_STOP_BIT_1 0u #דעפינירן SL_USBD_CDC_ACM_STOP_BIT_1_5 1u #דעפינירן SL_USBD_CDC_ACM_STOP_BIT_2 2u #דעפינירן SL_USBD_CDC_ACM_CTRL_BREAK 0 01u
ליניע געשעענישן פאָן דעפינירט.
#דעפינירן SL_USBD_CDC_ACM_CTRL_RTS 0 02u #דעפינירן SL_USBD_CDC_ACM_CTRL_DTR 0 04u #דעפינירן SL_USBD_CDC_ACM_STATE_DCD 0 01u #דעפינירן SL_USBD_CDC_ACM_STATE_DSR 0 02u #דעפינירן SL_USBD_CDC_ACM_STATE_BREAK 0 04u #דעפינירן SL_USBD_CDC_ACM_STATE_RING 0 08u #דעפינירן SL_USBD_CDC_ACM_STATE_FRAMING 0 10u #דעפינירן SL_USBD_CDC_ACM_STATE_PARITY 0 20u #דעפינירן SL_USBD_CDC_ACM_STATE_OVERUN 0 40u #דעפינירן SL_USBD_CDC_ACM_CALL_MGMT_DEV 0 01u
רוף פאַרוואַלטונג קייפּאַבילאַטיז.
#דעפינירן SL_USBD_CDC_ACM_CALL_MGMT_DATA_CCI_DCI 0 02u #דעפינירן SL_USBD_CDC_ACM_CALL_MGMT_DATA_OVER_DCI 0 02u | 0 01u)
פונקציע דאקומענטאציע
sl_usbd_cdc_acm_init
sl_status_t sl_usbd_cdc_acm_init (לא גילטיק)
גלאבאלע וועריאַבלען. פּאַראַמעטערס
דרוקרעכט © 2025 סיליקאָן לאַבאָראַטאָריעס. אלע רעכטן רעזערווירט.

64/174

יו-עס-בי דעווייס עי-סי-עם עי-איי-פי

טיפּ
פּאָסל

ריכטונג נישט פֿאַראַן

אַרגומענט נאָמען

מאַקראָס גלאָבאַלע קאָנסטאַנטן פונקציע פּראָטאָטיפּן CDC ACM פונקציעס

איניציאליזירן די CDC ACM סעריעלע עמולאציע סובקלאס.
קערט

גיט צוריק SL_STATUS_OK ביי סוקסעס אדער אן אנדער SL_STATUS קאד ביי דורכפאל.

באַשרייַבונג

sl_usbd_cdc_acm_create_instance

sl_status_t sl_usbd_cdc_acm_create_instance (uint16_t ליין_סטעיט_אינטערוואַל, uint16_t רוף_מגמט_קייפּאַביליטיז, sl_usbd_cdc_acm_קאָללבאַקס_t * p_acm_קאָללבאַקס, uint8_t * p_סובקלאַס_nbr)

לייג צו א נייע אינסטאַנץ פון די CDC ACM סעריעל עמולאַציע סובקלאַס.
פּאַראַמעטערס

טיפּ
uint16_t
uint16_t

ריכטונג אַרגומענט נאָמען

באַשרייַבונג

N/A

ליניע_שטאַט_אינטערוואַל ליניע שטאַט אָנזאָג אינטערוואַל אין מיליסעקונדעס (ווערט מוז

זיין אַ מאַכט פון 2).

N/A

call_mgmt_capabilities רוף פאַרוואַלטונג קייפּאַבילאַטיז ביטמאַפּ. אָר'ד פון די

די פאלגענדע פלאַגס:

SL_USBD_CDC_ACM_CALL_MGMT_DEV די דעווייס האַנדלט מיט רוף פאַרוואַלטונג אַליין. SL_USBD_CDC_ACM_CALL_MGMT_DATA_CCI_DCI די דעווייס קען שיקן/באַקומען רוף פאַרוואַלטונג אינפֿאָרמאַציע איבער אַ דאַטן קלאַס צובינד.

sl_usbd_cdc_acm_callbacks_t נישט פֿאַראַן
*

uint8_t *

N/A

p_acm_callbacks p_subclass_nbr

אפציאָנעלע פּוינטערס צו רוף-בעק פונקציעס וואָס זאָלן גערופן ווערן ביי פארשידענע געשעענישן.
פּאַראַם צו וועריאַבל וואָס וועט באַקומען CDC ACM סעריעל עמולאַציע סובקלאַס אינסטאַנס נומער.

קערט

צוריקגעבן SL_STATUS_OK ביי הצלחה אדער אן אנדער SL_STATUS קאד ביי דורכפאל.

sl_usbd_cdc_acm_add_to_configuration

sl_status_t sl_usbd_cdc_acm_add_to_configuration (uint8_t סובקלאס_nbr, uint8_t קאנפיג_nbr)

לייג צו אַ CDC ACM סובקלאַס קלאַס אינסטאַנס אין USB מיטל קאָנפיגוראַציע.
פּאַראַמעטערס

טיפּ
uint8_t uint8_t

ריכטונג נישטא/אן/א

אַרגומענט נאָמען
סובקלאַס_נומער קאָנפיג_נומער

באַשרייַבונג CDC ACM סעריעל עמולאַציע סובקלאַס אינסטאַנס נומער. קאָנפיגוראַציע אינדעקס צו לייגן צו נייע טעסט קלאַס צובינד.

קערט

דרוקרעכט © 2025 סיליקאָן לאַבאָראַטאָריעס. אלע רעכטן רעזערווירט.

65/174

יו-עס-בי דעווייס עי-סי-עם עי-איי-פי
גיט צוריק SL_STATUS_OK ביי סוקסעס אדער אן אנדער SL_STATUS קאד ביי דורכפאל.

sl_usbd_cdc_acm_is_enabled

sl_status_t sl_usbd_cdc_acm_is_enabled (uint8_t סובקלאס_nbr, bool * p_enabled)

באַקומען די CDC ACM סעריעל עמולאַציע סובקלאַס ענייבאַל שטאַט.
פּאַראַמעטערס

טיפּ

ריכטונג

אַרגומענט נאָמען

באַשרייַבונג

uint8_t נישט פֿאַראַן

סובקלאַס_נומער CDC ACM סעריעל עמולאַציע סובקלאַס אינסטאַנס נומער.

בול * נישט פֿאַראַן

פּ_ענייבאַלד

בוליאַן צו אַ וועריאַבל וואָס וועט באַקומען אַקטיווירן סטאַטוס. די וועריאַבל איז געשטעלט צו אמת, CDC ACM סעריעל עמולאַציע איז אַקטיווירט. די וועריאַבל

דאָקומענטן / רעסאָורסעס

סיליקאָן לאַבס וסב דיווייס סטאַק [pdf] אינסטרוקציע מאַנואַל
יו-עס-בי דעווייס סטאַק, דעווייס סטאַק, סטאַק

רעפערענצן

לאָזן אַ באַמערקונג

דיין בליצפּאָסט אַדרעס וועט נישט זיין ארויס. פארלאנגט פעלדער זענען אנגעצייכנט *