מדריך הוראות של SILICON LABS USB Device Stack

ערימת התקני USB

מפרטים

  • גרסת USB: 1.5.1
  • תאריך יציאה: 21 ביולי 2025
  • גרסת SDK של Simplicity: 2025.6.1

המוצר נגמרview

ערימת התקני ה-USB של Silicon Labs מספקת מגוון רחב של אפשרויות
קישוריות USB קלה לשימוש עבור פרויקטים של IoT, מקלה על
תקשורת בין מעבדי רשת ומארחים.

תכונות

  • מחסנית התקני USB יעילה
  • אידיאלי לפרויקטים של האינטרנט של הדברים
  • תמיכה בתקשורת בין מעבדי רשת ו
    מארחים

הוראות שימוש במוצר

תצורת התקן USB

קבע את הגדרות התקן ה-USB בהתאם לפרויקט שלך
דרישות על ידי עיון בסעיף תצורת התקן USB
בתיעוד.

מדריך תכנות התקני USB

עקוב אחר מדריך תכנות התקן USB כדי להבין כיצד
לתכנת ולקיים אינטראקציה עם התקן ה-USB עבור מגוון רחב של
יישומים.

מחלקות התקני USB

סעיף מחלקות התקני USB מספק מידע נוסףview של שונים
מחלקות כמו CDC ACM, HID, MSC SCSI ומחלקת ספקים. בחר את
המחלקה המתאימה בהתאם לפונקציונליות המכשיר שלך.

פתרון בעיות בהתקן USB

אם אתם נתקלים בבעיות כלשהן עם התקן ה-USB, עיינו ב
סעיף פתרון בעיות בהתקני USB לפתרונות וניפוי שגיאות
טיפים.

מארח USB של מערכת ההפעלה Microsoft Windows

אם אתה משתמש בהתקן USB עם מערכת הפעלה Microsoft Windows USB
מארח, ודא שפעל לפי ההנחיות המופיעות ב
תיעוד לאינטגרציה חלקה.

שאלות נפוצות

ש: מהם כמה אקס נפוציםampפחות מכשירים שאני יכול לבנות באמצעותם
מחסנית ה-USB הזו?

א: מחסנית ה-USB מאפשרת לך לבנות התקנים כגון
מתאמי USB-לטורי, עכברים או מקלדות, אחסון נשלף
מכשירים, ומכשירים מותאמים אישית.

ש: האם יש דרישות תוכנה ספציפיות לשימוש במערכת זו
מחסנית התקני USB?

א: תוכנה תואמת כוללת את Simplicity SDK, Simplicity
סטודיו, סימפליסיטי מפקד, GCC (אוסף המהדרים של גנו),
שולחן עבודה משובץ IAR עבור ARM ו-IAR EWARM.

USB אפיק טורי אוניברסלי

USB אפיק טורי אוניברסלי

USB מעלview מֵעַלview
הערות גרסה USB
מפרטים ותכונות מעלview
הגדרת התקן USB הסתיימהview
מדריך תכנות התקני USB מעלview
מחלקות התקני USB מעלview CDC ACM מחלקה נגמרהview מחלקת HID מעלview MSC SCSI Class Overview מחלקת ספקים מעלview
תיעוד API של התקן USB API של התקן USB API של ACM a sl_usbd_cdc_ cm_line_coding_t sl_usbd_cdc_acm_callbacks_t API של CDC של התקן USB a sl_usbd_cdc_subcl ss_driver_t API ליבה של התקן USB
sl_usbd_device_config_t sl_usbd_setup_req_t
ממשק API HID של התקן USB sl_usbd_cl ss_driver_t
sl_usbd_hid_callbacks_t ממשק API של MSC של התקן USB
sl_usbd_msc_subcl ss_driver_t התקן USB MSC SCSI API
sl_usbd_msc_scsi_callbacks_t

זכויות יוצרים © 2025 Silicon Laboratories. כל הזכויות שמורות.

1/174

USB אפיק טורי אוניברסלי
sl_usbd_msc_scsi_lun_ pi
sl_usbd_msc_scsi_lun_info sl_usbd_msc_scsi_lun
ממשק API של ספק התקני USB sl_usbd_vendor_callbacks_t
תיעוד API פתרון בעיות בהתקן USB
מֵעַלview מארח USB של מערכת ההפעלה Microsoft Windows
מֵעַלview

זכויות יוצרים © 2025 Silicon Laboratories. כל הזכויות שמורות.

2/174

מֵעַלview
מֵעַלview
מכשיר USB
USB הוא אחד מממשקי התקשורת המצליחים ביותר בהיסטוריה של מערכות מחשב והוא הסטנדרט דה פקטו לחיבור ציוד היקפי למחשב. מחסנית התקני USB של Silicon Labs היא מודול התקן USB שתוכנן במיוחד עבור מערכות משובצות. הוא נבנה מהיסוד עם האיכות, המדרגיות והאמינות של Silicon Labs, ועבר תהליך אימות קפדני כדי לעמוד במפרט USB 2.0. תיעוד זה מתאר כיצד לאתחל, להפעיל ולהשתמש במחסנית התקני USB של Silicon Labs. הוא מסביר את ערכי התצורה השונים ואת השימושים שלהם. הוא כולל גם סקירה כללית...view של הטכנולוגיה, סוגי אפשרויות התצורה, נהלי יישום, ודוגמאותampפחות שימוש טיפוסי עבור כל מחלקה זמינה.
כדי לעזור לך להבין את מושגי ה-USB במהירות, התיעוד כולל דוגמאות רבותampחיבורי USB עם פונקציות בסיסיות. אלהamples יספק לכם מסגרת שתאפשר לכם לבנות מכשירים במהירות. אלהampהנושאים כוללים:
מתאם USB-לטורי (מחלקת התקני תקשורת) עכבר או מקלדת (מחלקת התקני ממשק אנושי) התקן אחסון נשלף (מחלקת אחסון בנפח גדול) התקן מותאם אישית (מחלקת ספק)
להלן נגמרview של סעיפי התיעוד:
מפרטים ותכונות הגדרת התקן USB מדריך תכנות התקן USB סיווגי התקן USB
מחלקת CDC ACM מחלקת HID מחלקת MSC SCSI מחלקת ספק פתרון בעיות בהתקן USB מערכת הפעלה Microsoft Windows מארח USB

זכויות יוצרים © 2025 Silicon Laboratories. כל הזכויות שמורות.

3/174

USB
USB

גרסת USB 1.5.1 21 ביולי 2025 – הערות גרסה
גרסת SDK של Simplicity 2025.6.1
ערימת התקני ה-USB היעילה של Silicon Labs מציעה קישוריות USB רב-תכליתית וקלה לשימוש, אידיאלית לפרויקטים של IoT, כולל תקשורת בין מעבדי רשת ומארחים. לחצו כאן לצפייה בגרסאות קודמות.
סיכום שחרור
תכונות עיקריות | שינויים ב-API | תיקוני באגים | הפעלת שבבים
תכונות מפתח
שינויים בסיסיים בפלטפורמה בלבד.
שינויים ב-API
אַף לֹא אֶחָד.
תיקוני באגים
אַף לֹא אֶחָד.
הפעלת שבבים
אַף לֹא אֶחָד.
תכונות מפתח
תכונות חדשות | שיפורים | תכונות שהוסרו | תכונות שהוצאו משימוש
תכונות חדשות
אַף לֹא אֶחָד.
שיפורים
שינויים בסיסיים בפלטפורמה בלבד.
תכונות שהוסרו
אַף לֹא אֶחָד.
תכונות שהוצאו משימוש
אַף לֹא אֶחָד.
שינויים ב-API
ממשקי API חדשים | ממשקי API שהשתנו | ממשקי API שהוסרו | ממשקי API שהוצאו משימוש
ממשקי API חדשים

זכויות יוצרים © 2025 Silicon Laboratories. כל הזכויות שמורות.

4/174

USB
אַף לֹא אֶחָד.
ממשקי API שהשתנו
אַף לֹא אֶחָד.
ממשקי API שהוסרו
אַף לֹא אֶחָד.
ממשקי API שהוצאו משימוש
אַף לֹא אֶחָד.
תיקוני באגים
אַף לֹא אֶחָד.
הפעלת שבבים
אַף לֹא אֶחָד.
יישום דוגמהampשינויים
אקס חדשampאקס | גרסה משופרתamples | הוסר אקסamples | גרסה מפושטתamples
אקס חדשamples
אַף לֹא אֶחָד.
דוגמה שונהamples
אַף לֹא אֶחָד.
הוסר אקסamples
אַף לֹא אֶחָד.
אקס שהוצא משימושamples
אַף לֹא אֶחָד.
השפעת שינויי הגרסה
הצהרות השפעה | מדריך הגירה
הצהרות השפעה
אַף לֹא אֶחָד.
מדריך הגירה
אַף לֹא אֶחָד.
בעיות ומגבלות ידועות
אַף לֹא אֶחָד.
שימוש בגרסה זו

זכויות יוצרים © 2025 Silicon Laboratories. כל הזכויות שמורות.

5/174

USB

מה כוללת הגרסה? | תוכנה תואמת | התקנה ושימוש | עזרה ומשוב

מה יש בגרסה המהדורה?

יישום מחסנית התקני USB לדוגמהamples
תוכנה תואמת

תוֹכנָה
ערכת פיתוח תוכנה של סימפליסיטי, סטודיו סימפליסיטי, מפקד סימפליסיטי, GCC (אוסף המהדרים של GNU), שולחן עבודה משובץ של IAR עבור ARM, IAR EWARM.

גרסה או וריאנט תואמים
2025.6.0 5.11.0 1.18.2 (מסופק עם Simplicity Studio) 12.2.1 (מסופק עם Simplicity Studio) 9.40.1 (מסופק עם Simplicity Studio)

התקנה ושימוש

כדי להתחיל את הפיתוח שלכם, עיינו ב:
מדריך תכנות התקני USB. תיעוד API.
למידע נוסף על שילוב כספת מאובטחת, ראה כספת מאובטחת.
כדי לחזורview התראות על אבטחה ותוכנה ונהל את העדפות ההתראות שלך:
ò עבור אל https://community.silabs.com/. ò התחבר עם פרטי החשבון שלך. ò לחץ על הפרו שלךfile סמל בפינה הימנית העליונה של הדף.
õ בחר "התראות" מהתפריט הנפתח. ö במקטע "התראות", עבור לכרטיסייה "התראות המוצר שלי" כדיview ייעוץ היסטורי בנושא אבטחה ותוכנה
הודעות
÷ כדי לנהל את ההעדפות שלך, השתמש בכרטיסייה ניהול התראות כדי להתאים אישית אילו עדכוני מוצר והנחיות אתה מקבל
לְקַבֵּל.
לקבלת הגדרות תצורה מומלצות, ראה כאן.
כדי ללמוד עוד על התוכנה בגרסה זו, עיינו בתיעוד המקוון שלנו.
עזרה ומשוב

צרו קשר עם תמיכת Silicon Labs. כדי להשתמש בכלי Ask AI שלנו כדי לקבל תשובות, עיינו בשדה החיפוש בראש עמוד זה.

הערה: Ask AI הוא ניסיוני.

קבלו עזרה מקהילת המפתחים שלנו.
מדיניות שחרור ותחזוקה של SDK
עיין במדיניות השחרור והתחזוקה של ערכת ה-SDK שלנו.

זכויות יוצרים © 2025 Silicon Laboratories. כל הזכויות שמורות.

6/174

מֵעַלview
מֵעַלview
מפרטים
עומד בדרישות "גרסה 2.0 של מפרט אפיק טורי אוניברסלי" מיישם את "הודעה על שינוי הנדסת תיאור שיוך ממשק (ECN)" סוגי העברה
בקרת פסיקות בכמות גדולה (Bulk Interrupt) מחלקות USB מחלקת התקני תקשורת (CDC) מודל בקרה מופשט (ACM) התקן ממשק אנושי (HID) מחלקת אחסון בנפחים (MSC) מסגרת מחלקות ספציפית לספק
תכונות
ניתן להרחבה כך שיכלול רק תכונות נדרשות כדי למזער את טביעת הרגל של הזיכרון. תומך במהירות מלאה (12 מגה-ביט/שנייה). תומך בהתקנים מרוכבים (רב-תכליתיים). תומך בהתקנים מרובי תצורות. תומך בפונקציות חיסכון באנרגיה באמצעות USB (השהייה וחידוש של התקנים). שילוב מלא של Mass Storage Class במערכת ההפעלה Micrium. File מודול מערכת שפותח עם שכבת הפשטה CMSIS-RTOS2 כך שיוכל לעבוד עם מערכות הפעלה שונות. ערכת ה-GSDK של Silicon Labs מגיעה עם פורטים של FreeRTOS ו-Micrium OS.

זכויות יוצרים © 2025 Silicon Laboratories. כל הזכויות שמורות.

7/174

מֵעַלview
מֵעַלview

תצורת התקן USB

סעיף זה דן כיצד להגדיר את התקן ה-USB של Silicon Labs. ישנן שלוש קבוצות של פרמטרי תצורה, כדלקמן:
תצורת ליבת התקן USB תצורת מידע על התקן USB תצורת חומרת התקן USB
תצורת ליבת התקן USB
ניתן להגדיר את התקן ה-USB של Silicon Labs בזמן הקומפילציה באמצעות קבוצה של #defines הממוקמת בקובץ sl_usbd_core_config.h. fileהתקן USB משתמש ב-#defines במידת האפשר מכיוון שהוא מאפשר שינוי גודל של קוד ונתונים בזמן הקומפילציה בהתבסס על התכונות הזמינות. זה מאפשר להתאים את טביעות הרגליים של זיכרון הקריאה בלבד (ROM) וזיכרון הגישה האקראית (RAM) של התקן ה-USB של Silicon Labs בהתבסס על דרישות היישום שלך.
מומלץ: התחל את תהליך התצורה עם ערכי ברירת המחדל (מודגשים).
הסעיפים שלהלן מאורגנים לפי הסדר בתצורת התבנית file, sl_usbd_core_config.h.
תצורת ליבה (Core Configuration Classes)
תצורת ליבה
טבלה – קבועי תצורת ליבה של התקן USB

תיאור קבוע

ערך ברירת מחדל

גודל SL_USBD_TA SK_STACK_

מגדיר את גודל המחסנית בבתים של משימת הליבה של USBD

4096

SL_USBD_TA SK_PORIT Y

מגדיר את העדיפות של משימת הליבה של USBD. זוהי עדיפות של CMSIS-RTOS2.

עדיפות גבוהה של מערכת הפעלה

SL_USBD_A UTO_START _USB_DEVIC E

אם האפשרות הזו מופעלת, התקן ה-USB יופעל אוטומטית לאחר הפעלת הליבה ומשימת ליבת USBD אחת מתוזמנת בפעם הראשונה. אם היא מושבתת, היישום שלך יצטרך לקרוא ל-sl_usbd_core_start_device() כאשר הוא מוכן להתגלות על ידי מארח ה-USB.

SL_USBD_C המספר הכולל של תצורות שיתווספו דרך הפונקציה sl_usbd_add_configuration()

1

הפונקציה ONFIGURATI.

ON_QUANTI

TY

זכויות יוצרים © 2025 Silicon Laboratories. כל הזכויות שמורות.

8/174

מֵעַלview

קָבוּעַ
SL_USBD _INTERF ACE_QU אנטיטי
SL_USBD _ALT_INT ERFACE_ QUANTI
TY
SL_USBD _INTERF ACE_GR
OUP_QU
אנטיטי
SL_USBD _DESCRI
PTOR_Q
UANTITY
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 בזמן הקומפילציה כדי להגדיר מידע בסיסי בנוגע למכשיר שלך, כגון מזהה ספק/מוצר, מחרוזות מכשיר וכו'. הטבלה שלהלן מתארת ​​כל הגדרת תצורת מידע הזמינה בתצורה זו. file.

טבלה – הגדרת תצורת מידע על התקן USB

קָבוּעַ
מזהה_ספק_אלקטרוני SL_USBD_DEVIC
מזהה_מוצר_SL_USBD_DEVIC E_

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

זכויות יוצרים © 2025 Silicon Laboratories. כל הזכויות שמורות.

9/174

מֵעַלview

קָבוּעַ

תֵאוּר

מספר השחרור של המכשיר שלך: SL_USBD_DEVICE_RELEASE. _NUMBER

SL_USBD_DEVICE_MANUFA מחרוזת המתארת ​​את יצרן המכשיר שלך. תצורה זו מתעלמת כאשר

CTURER_STRING

התצורה SL_USBD_STRING_QUANTITY מוגדרת ל-0.

מחרוזת SL_USBD_DEVICE_PRODUC המתארת ​​את המוצר שלך. תצורה זו מתעלמת כאשר התצורה

T_STRING

SL_USBD_STRING_QUANTITY מוגדר ל-0.

SL_USBD_DEVICE_SERIAL_N מחרוזת המכילה את המספר הסידורי של המכשיר שלך. תצורה זו מתעלמת כאשר

UMBER_STRING

התצורה SL_USBD_STRING_QUANTITY מוגדרת ל-0.

SL_USBD_DEVICE_LANGUA מספר זיהוי של שפת המחרוזות של המכשיר שלך. ערכים אפשריים הם:
GE_ID

– SL_USBD_LANG_ID_ARABIC_SAUDI_ARABIA

– SL_USBD_LANG_ID_CHINESE_TAIWAN

– SL_USBD_LANG_ID_ENGLISH_US

– SL_USBD_LANG_ID_ENGLISH_UK

– SL_USBD_LANG_ID_FRENCH

– SL_USBD_LANG_ID_GERMAN

– SL_USBD_LANG_ID_GREEK

– SL_USBD_LANG_ID_ITALIAN

– SL_USBD_LANG_ID_PORTUGUESE

– SL_USBD_LANG_ID_SANSKRIT

תצורה זו מתעלמת כאשר התצורה SL_USBD_STRING_QUANTITY מוגדרת ל-0.

תצורת חומרה של התקן USB

בהתאם להתקן Silicon Labs בו אתם משתמשים, ייתכן שיהיה לכם את פין ה-GPIO והפורט להגדרה עבור אות USB VBUS Sense. הגדרות התצורה נמצאות בכותרת sl_usbd_hardware_config.h. file.

קָבוּעַ
SL_USBD_DRIVER_VBUS_SENSE_PORT קוד סודי של SL_USBD_DRIVER_VBUS_SENSE

תֵאוּר
יציאת GPIO עבור אות USB VBUS Sense בלוח שלך. פין GPIO עבור אות USB VBUS Sense בלוח שלך.

זכויות יוצרים © 2025 Silicon Laboratories. כל הזכויות שמורות.

10/174

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

זכויות יוצרים © 2025 Silicon Laboratories. כל הזכויות שמורות.

11/174

מֵעַלview

sl_status_t סטטוס; uint8_t config_nbr_fs;

/* הוספת תצורה במהירות מלאה למכשיר. */

סטטוס = sl_usbd_core_add_configuration(0,

/* אין מאפיינים מיוחדים לתצורה. */

100u,

/* צריכת חשמל מקסימלית: 100mA.

*/

SL_USBD_DEVICE_SPEED_FULL,

/* תצורה במהירות מלאה.

*/

"הוסף אקס"ampתצורת מהירות מלאה

&config_nbr_fs);

אם (סטטוס ! SL_STATUS_OK) {

/* אירעה שגיאה. יש להוסיף כאן את הטיפול בשגיאות. */

}

הוספת פונקציות USB
לאחר שהוספת בהצלחה לפחות תצורה אחת למכשיר שלך, תוכל להוסיף את הממשקים ונקודות הקצה למכשיר. לכל מחלקת USB יש צרכים משלה מבחינת סוג הממשק ונקודות הקצה, כמות ופרמטרים אחרים. מכשיר ה-USB של Silicon Labs מוסיף ממשקים ונקודות קצה במחלקות שהוא מציע.
מהאפליקציה שלך, תוכל ליצור מופעים של מחלקת USB ולהוסיף אותה לתצורה. למידע נוסף על מושג מופעי מחלקת התקני USB, ראה מחלקות התקני USB. שים לב שניתן ליצור מופעים ולהוסיף מופעי מחלקה רבים ושונים לתצורה כדי ליצור התקן רב-תכליתי (מרוכב).
האקסיתampההוראות למטה מציגות כיצד ליצור מופע מחלקה ולהוסיף אותו לתצורה.
Example – הוספת מופע מחלקה למכשיר שלך

sl_status_t סטטוס; uint8_t class_nbr;
/* צור מופע של המחלקה שברצונך להשתמש בה.*/ /* שים לב שבהתאם למחלקה, פונקציה זו יכולה להכיל יותר ארגומנטים. */ status = sl_usbd_ _create_instance(&class_nbr); if (status ! SL_STATUS_OK) { /* אירעה שגיאה. יש להוסיף כאן את הטיפול בשגיאות. */ }
/* הוסף את מופע המחלקה לתצורת Full-Speed. */ status = sl_usbd_ _add_to_configuration(class_nbr, /* מספר מחלקה המוחזר על ידי sl_usbd_ _create_instance. */
config_nbr_fs); /* מספר תצורה המוחזר על ידי sl_usbd_core_add_configuration(). */ if (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().
Example – הפעלת המכשיר

זכויות יוצרים © 2025 Silicon Laboratories. כל הזכויות שמורות.

12/174

מֵעַלview

סטטוס sl_status_t;
status = sl_usbd_core_start_device(); if (status !SL_STATUS_OK) { /* אירעה שגיאה. יש להוסיף כאן את הטיפול בשגיאות. */ }

פונקציות הוק אירועים
מודול הליבה של התקן ה-USB מציע שתי פונקציות וו חלשות שניתן להגדיר מחדש ביישום שלך. מטרתן היא להודיע ​​כאשר מתרחשים אירועי אפיק ותצורה.
טבלה – פונקציות אירועי USB של Hook

מִקרֶה

תֵאוּר

אוֹטוֹבּוּס

נקרא כאשר מתרחש אירוע אפיק USB

קריאה להגדרה כאשר מתרחש אירוע הגדרת USB

חתימת פונקציה
void sl_usbd_on_bus_event(sl_usbd_bus_event_t אירוע); void sl_usbd_on_config_event(sl_usbd_config_event_t אירוע, uint8_t config_nbr);

Example – פונקציות Hook של אירוע

void sl_usbd_on_bus_event(sl_usbd_bus_event_t event) { switch (event) { case SL_USBD_EVENT_BUS_CONNECT:}; הפקודה הזו אינה פעילה. TableT ל-Switch היא . / * ...} / } הפקודה הזו אינה פעילה.
// נקרא כאשר כבל USB מוכנס לבקר מארח;
case SL_USBD_EVENT_BUS_DISCONNECT: // נקרא כאשר כבל USB מוסר מבקר מארח break;
case SL_USBD_EVENT_BUS_RESET: // נקרא כאשר המארח שולח פקודת איפוס break;
case SL_USBD_EVENT_BUS_SUSPEND: // נקרא כאשר המארח שולח פקודת suspension break;
case SL_USBD_EVENT_BUS_RESUME: // נקרא כאשר המארח שולח פקודת השכמה break;
ברירת מחדל: הפסקה; } }
void sl_usbd_on_config_event(sl_usbd_config_event_t אירוע, uint8_t config_nbr) { switch (אירוע) { case SL_USBD_EVENT_CONFIG_SET:}
// נקרא כאשר המארח מגדיר הפסקת תצורה;
case SL_USBD_EVENT_CONFIG_UNSET: // נקרא כאשר תצורה אינה מוגדרת break;
ברירת מחדל: הפסקה; } }

זכויות יוצרים © 2025 Silicon Laboratories. כל הזכויות שמורות.

13/174

מֵעַלview

זכויות יוצרים © 2025 Silicon Laboratories. כל הזכויות שמורות.

14/174

מֵעַלview
מֵעַלview

מחלקות התקני USB

לסוגי ה-USB הזמינים בהתקן USB של Silicon Labs יש כמה מאפיינים משותפים. סעיף זה מסביר מאפיינים אלה ואת האינטראקציה שלהם עם שכבת הליבה.
למידע נוסף על מחלקה ספציפית, עיינו בסעיפים הבאים:
מחלקת 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_CONFIGUR ATION_QUANTITY
sl_usb d _XXXX_create _insta nce ()
sl_usbd_XXXX_add_to_conf איור()

תֵאוּר
מגדיר את המספר המרבי של מופעי מחלקה.
מגדיר את מספר התצורות המרבי. במהלך אתחול המחלקה, מופע מחלקה שנוצר יתווסף לתצורה אחת או יותר. יוצר מופע מחלקה חדש.
מוסיף מופע מחלקה קיים לתצורת ההתקן שצוינה.

מבחינת יישום קוד, המחלקה תצהיר על משתנה גלובלי מקומי המכיל מבנה בקרת מחלקה. מבנה בקרת מחלקה זה משויך למופע מחלקה אחד ויכיל מידע ספציפי לניהול מופע המחלקה.
האיורים הבאים מציגים מספר תרחישי מקרה. כל איור כולל דוגמה לקודampשמתאים לתרחיש המקרה.
איור – מופעי מחלקה מרובים – התקן FS (תצורה אחת עם ממשק אחד) מייצג התקן USB טיפוסי. ההתקן הוא מהירות מלאה (FS) ומכיל תצורה אחת. תפקיד ההתקן מתואר על ידי ממשק אחד המורכב מזוג נקודות קצה לתקשורת נתונים. נוצר מופע מחלקה אחד שיאפשר לך לנהל את הממשק כולו עם נקודת הקצה המשויכת אליו.
איור – מספר מופעי מחלקה – תצורת התקן FS 1 עם ממשק 1)

זכויות יוצרים © 2025 Silicon Laboratories. כל הזכויות שמורות.

15/174

מֵעַלview

הקוד המתאים לאיור – מופעי מחלקה מרובים – התקן FS (תצורה אחת עם ממשק אחד) מוצג בדוגמהampלה למטה.
Example – מופעי מחלקה מרובים – תצורת התקן FS 1 עם ממשק 1)

sl_status_t סטטוס; uint8_t class_0;

void app_usbd_XXXX_enable(uint8_t class_nbr) { /* טיפול באירוע הפעלת מחלקה. */ }

void app_usbd_XXXX_disable(uint8_t class_nbr) { /* טיפול באירוע השבתת מחלקה. */ }

sl_usbd_XXXX_callbacks_t class_callbacks = {

(1)

.enable = app_usbd_XXXX_enable,

.disable = app_usbd_XXXX_disable

};

סטטוס = sl_usbd_XXXX_init();

(2)

אם (סטטוס ! SL_STATUS_OK) {

/* $$$$ טפלו בשגיאה. */

}

סטטוס = sl_usbd_XXXX_create_instance(&class_callbacks,

(3)

&class_0);

אם (סטטוס ! SL_STATUS_OK) {

/* $$$$ טפלו בשגיאה. */

}

סטטוס = sl_usbd_XXXX_add_to_configuration(class_0, config_0);

(4)

אם (סטטוס ! SL_STATUS_OK) {

/* $$$$ טפלו בשגיאה. */

}

(1) כל מחלקה מציעה קבוצה של פונקציות callback עבור אירועי חיבור/ניתוק של התקן ועבור אירועים ספציפיים למחלקה. אובייקט מבנה ה-callback מועבר כארגומנט בעת יצירת מופע המחלקה עם sl_usbd_XXXX_create_instance()
פוּנקצִיָה.
(1) אתחול המחלקה. כל המשתנים הפנימיים, המבנים ויציאות המחלקה יאותחלו. שימו לב שהפונקציה Init() בחלק מהמחלקות עשויה לקבל ארגומנטים אחרים.

זכויות יוצרים © 2025 Silicon Laboratories. כל הזכויות שמורות.

16/174

מֵעַלview
(2) צור את מופע המחלקה, שהוא class_0. הפונקציה sl_usbd_XXXX_create_instance() מקצה מבנה בקרת מחלקה המשויך ל-class_0. בהתאם למחלקה, ל-sl_usbd_XXXX_create_instance() עשויים להיות פרמטרים נוספים מלבד מספר המחלקה המייצגים מידע ספציפי למחלקה המאוחסן במבנה בקרת המחלקה. aaa (3) הוסף את מופע המחלקה, class_0, למספר התצורה שצוין, config_0. הפונקציה sl_usbd_XXXX_add_to_configuration() תיצור את ממשק 0 ואת נקודות הקצה IN ו-OUT המשויכות אליו. כתוצאה מכך, מופע המחלקה כולל את ממשק 0 ואת נקודות הקצה שלו. כל תקשורת המתבצעת בממשק 0 תשתמש במספר מופע המחלקה, class_0. איור - מופעי מחלקה מרובים - התקן FS (2 תצורות וממשקים מרובים) מייצג דוגמה מורכבת יותר.ampלדוגמה. התקן מהירות מלאה מורכב משתי תצורות. להתקן יש שתי פונקציות השייכות לאותה מחלקה, אך כל פונקציה מתוארת על ידי שני ממשקים ויש לה זוג נקודות קצה דו כיווניות. בדוגמה זוampכלומר, נוצרים שני מופעי מחלקה. כל מופע מחלקה משויך לקבוצת ממשקים, בניגוד לאיור – מופעי מחלקה מרובים – התקן FS (תצורה אחת עם ממשק אחד) ואיור – מופעי מחלקה מרובים – התקן FS (2 תצורות וממשקים מרובים), שבהם מופע המחלקה היה משויך לממשק יחיד.
איור – מופעי מחלקה מרובים – תצורות התקן FS 2 וממשקים מרובים)

הקוד המתאים לאיור – מופעי מחלקה מרובים – התקן FS (2 תצורות וממשקים מרובים) מוצג בדוגמהampלהלן. טיפול בשגיאות הושמט לשם הבהירות.
Example – מופעי מחלקה מרובים – תצורות התקן FS 2 וממשקים מרובים)

זכויות יוצרים © 2025 Silicon Laboratories. כל הזכויות שמורות.

17/174

מֵעַלview

sl_status_t סטטוס; uint8_t class_0; uint8_t class_1;
סטטוס = sl_usbd_XXXX_init();
סטטוס = sl_usbd_XXXX_create_instance(&class_0); סטטוס = sl_usbd_XXXX_create_instance(&class_1);
סטטוס = sl_usbd_XXXX_add_to_configuration(class_0, cfg_0); סטטוס = sl_usbd_XXXX_add_to_configuration(class_1, cfg_0);
סטטוס = sl_usbd_XXXX_add_to_configuration(class_0, cfg_1); סטטוס = sl_usbd_XXXX_add_to_configuration(class_1, cfg_1);

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

(1) אתחול המחלקה. כל המשתנים הפנימיים, המבנים ופורטים של המחלקה יאותחלו.
(2) צור את מופע המחלקה, class_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. מטרתה היא לתת לכל מחלקה קבוצה של פונקציות callback שיש לקרוא להן כאשר מתרחש אירוע. שתי פונקציות callback קיימות בכל מחלקה. הן מוצגות בטבלה למטה.
טבלה - פונקציות קריאה חוזרות נפוצות של מחלקה

שדות תיאור .enable נקרא כאשר מופע מחלקת ה-USB מופעל בהצלחה. .disable נקרא כאשר מופע מחלקת ה-USB מושבת.

חתימה של הפונקציה void app_usbd_XXXX_enable(uint8_t class_nbr); void app_usbd_XXXX_disable(uint8_t class_nbr);

זכויות יוצרים © 2025 Silicon Laboratories. כל הזכויות שמורות.

18/174

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

זכויות יוצרים © 2025 Silicon Laboratories. כל הזכויות שמורות.

19/174

מֵעַלview
פונקציות. לכן, ההתקן יורכב מכמה קבוצות של CCI ו-DCI כפי שמוצג באיור - התקן מורכב של CDC.
איור – התקן מרוכב של CDC

מכשיר CDC צפוי להשתמש בשילוב הבא של נקודות קצה:
זוג נקודות קצה IN ו-OUT של בקרה הנקראות נקודת הקצה ברירת מחדל. נקודת קצה IN אופציונלית, בצובר או בפסיקה. זוג נקודות קצה IN ו-OUT בצובר או איזוכרוניות. שים לב שמחסנית התקני USB של Silicon Labs אינה תומכת כעת בנקודות קצה איזוכרוניות.
הטבלה שלהלן מציגה את השימוש בנקודות הקצה השונות ואת הממשק של ה-CDC שבו הן משמשות.
טבלה – שימוש בנקודות קצה של CDC

נקודת קצה
שליטה ב-IN
שליטה ב-OUT
הפרעה או כמות גדולה בתוך כמות גדולה או איזוכרוני בתוך כמות גדולה או איזוכרוני
הַחוּצָה

כיוון
התקן-למארח
מארח-להתקן
התקן-למארח
התקן-למארח
מארח-להתקן

שימוש בממשק

CCI

בקשות סטנדרטיות לספירה, בקשות ספציפיות למחלקה, התקן

ניהול, ואופציונלי ניהול שיחות.

CCI

בקשות סטנדרטיות לספירה, בקשות ספציפיות למחלקה, התקן

ניהול, ואופציונלי ניהול שיחות.

CCI

התראות על אירועים, כגון זיהוי צלצול, סטטוס קו טורי, סטטוס רשת.

DCI

תקשורת נתונים גולמית או מעוצבת.

DCI

תקשורת נתונים גולמית או מעוצבת.

רוב התקני התקשורת משתמשים בנקודת קצה של פסיקה כדי להודיע ​​למארח על אירועים. אין להשתמש בנקודות קצה איזוכרוניות להעברת נתונים כאשר פרוטוקול קנייני מסתמך על שידור נתונים חוזר במקרה של שגיאות בפרוטוקול USB. תקשורת איזוכרונית עלולה לאבד נתונים באופן טבעי מכיוון שאין לה מנגנוני ניסיון חוזר.
שבעת המודלים העיקריים של תקשורת מקיפים מספר תת-מחלקות. תת-מחלקה מתארת ​​את האופן שבו המכשיר צריך להשתמש ב-CCI כדי לטפל בניהול המכשירים וניהול השיחות. הטבלה שלהלן מציגה את כל תת-המחלקות האפשריות ואת מודל התקשורת שאליו הן שייכות.
טבלה - תת-מחלקות CDC

תת-מחלקה
מודל בקרה קו ישיר מודל בקרה מופשט

מודל תקשורת
PSTN
PSTN

Exampמספר התקנים המשתמשים בתת-מחלקה זו
התקני מודם הנשלטים ישירות על ידי מארח ה-USB
התקני אמולציה טוריים, התקני מודם הנשלטים באמצעות מערך פקודות טורי

זכויות יוצרים © 2025 Silicon Laboratories. כל הזכויות שמורות.

20/174

מֵעַלview

תת-מחלקה

מודל תקשורת

Exampמספר התקנים המשתמשים בתת-מחלקה זו

דגם בקרת טלפון

PSTN

מודל ISDN רב-ערוצי

דגם בקרת CAPI ISDN

מודל בקרת ECM ברשת Ethernet

רשת כספומט

כַּספּוֹמָט

דגם בקרה

דגם שלט רחוק אלחוטי

WMC

ניהול מכשירים WMC

דגם קו ישיר נייד

WMC

OBEX

WMC

מודל EEM של אמולציית אתרנט

מודל בקרת רשת

מלח"י

מכשירי טלפוניה קולית
מתאמי מסוף לתעריף בסיסי, מתאמי מסוף לתעריף ראשי, טלפונים
מתאמי מסוף תעריף בסיסי, מתאמי מסוף תעריף ראשי, טלפונים מודמים לכבלים DOC-SIS, מודמי ADSL התומכים באמולציית PPPoE, מתאמי Wi-Fi (משפחת IEEE 802.11), מתאמי IEEE 802.3 מודמי ADSL
ציוד קצה נייד המתחבר למכשירים אלחוטיים
ציוד קצה נייד המתחבר למכשירים אלחוטיים ציוד קצה נייד המתחבר למכשירים אלחוטיים
ציוד קצה נייד המתחבר למכשירים אלחוטיים. מכשירים המשתמשים במסגרות Ethernet כשכבת התעבורה הבאה. לא מיועד להתקני ניתוב וקישוריות לאינטרנט. מתאמי IEEE 802.3 הנושאים רוחב פס נתונים במהירות גבוהה ברשת.

דרישות משאבי מחלקה CDC ACM של התקן USB מהליבה

בכל פעם שמוסיפים מופע מחלקה של 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, מכיוון שנקודות קצה נפתחות רק כאשר תצורה מוגדרת על ידי המארח, עליכם לקחת בחשבון רק את מספר נקודות הקצה הדרושות עבור מופע מחלקה.
תת-מחלקה של CDC ACM של התקן USB מעלview

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

זכויות יוצרים © 2025 Silicon Laboratories. כל הזכויות שמורות.

21/174

מֵעַלview תת-קטגוריה עבור התקני PSTN, גרסה 1.2, 9 בפברואר 2007=, סעיף 6.2.2.
מרשימה זו, תת-המחלקה של Silicon Labs9 ACM תומכת בדברים הבאים:
טבלה – בקשות ACM הנתמכות על ידי Silicon Labs

תיאור בקשת תת-מחלקה

הגדרת תכונת תקשורת קבל תכונת תקשורת נקה תכונת תקשורת

המארח שולח בקשה זו כדי לשלוט בהגדרות עבור תכונת תקשורת נתונה. לא משמש לאמולציה טורית.
המארח שולח בקשה זו כדי לקבל את ההגדרות הנוכחיות עבור תכונת תקשורת נתונה. לא משמש לאמולציה טורית.
המארח שולח בקשה זו כדי לנקות את ההגדרות עבור תכונת תקשורת נתונה. לא משמש לאמולציה טורית.

קידוד קו

המארח שולח בקשה זו כדי להגדיר את הגדרות התקן ה-ACM: קצב באוד, מספר ביטים של עצירה, סוג זוגיות ומספר ביטים של נתונים. עבור אמולציה טורית, בקשה זו נשלחת אוטומטית על ידי מסוף טורי בכל פעם שאתה מגדיר את ההגדרות הטוריות עבור יציאת COM וירטואלית פתוחה.

GetLineCoding

המארח שולח בקשה זו כדי לקבל את הגדרות ה-ACM הנוכחיות (קצב באוד, סיביות עצירה, זוגיות, סיביות נתונים). עבור אמולציה טורית, מסופים טוריים שולחים בקשה זו באופן אוטומטי במהלך פתיחת יציאת COM וירטואלית.

SetControlLineState המארח שולח בקשה זו כדי לשלוט בספק עבור מודמים חצי דופלקס ולציין האם ציוד מסוף נתונים (DTE) מוכן או לא. במקרה של אמולציה טורית, ה-DTE הוא מסוף טורי. עבור אמולציה טורית, מסוימות מסוימות מאפשרות לך לשלוח בקשה זו כאשר הבקרות מוגדרות.

הגדרת ברייק

המארח שולח בקשה זו כדי ליצור ניתוק בסגנון RS-232. עבור אמולציה טורית, מסוימות מסוימות מסוימות מאפשרות לך לשלוח בקשה זו.

תת-המחלקה ACM של Silicon Labs9 משתמשת בנקודת הקצה של interrupt IN כדי להודיע ​​למארח על מצב הקו הטורי הנוכחי.
מצב קו הוא מפת סיביות המודיעה למארח על:

נתונים שנמחקו עקב חריגה, שגיאת זוגיות, שגיאת מסגור, מצב זיהוי אות הטבעת, מצב מנגנון זיהוי הפסקה, מצב נושא השידור, מצב זיהוי נושא המקלט.

יישום תת-המחלקה של Silicon Labs9 ACM עומד במפרט הבא:
אפיק טורי אוניברסלי, תקשורת, תת-מחלקה עבור התקני PSTN, גרסה 1.2, 9 בפברואר 2007.
תצורת מחלקת CDC ACM של התקן USB

סעיף זה דן כיצד להגדיר את מחלקת ה-CDC ACM (מחלקת התקני תקשורת, מודל בקרה מופשט). ישנן שתי קבוצות של פרמטרי תצורה:
תצורות ספציפיות ליישום של התקן USB CDC ACM Class תצורות מופע של התקן USB CDC ACM Class
תצורות ספציפיות ליישום של התקן USB CDC ACM Class

מחלקת בסיס CDC תת-מחלקה ACM
מחלקת בסיס של CDC

ראשית, כדי להשתמש במודול המחלקה CDC של התקן USB של Silicon Labs, תצטרכו להתאים את תצורת זמן הקומפילציה של CDC #define-s בהתאם לצורכי היישום שלכם. הם מקובצים מחדש בתוך הכותרת sl_usbd_core_config.h. file תחת סעיף CDC. מטרתם היא ליידע את מודול התקן ה-USB כמה אובייקטי USB CDC להקצות.

זכויות יוצרים © 2025 Silicon Laboratories. כל הזכויות שמורות.

22/174

מֵעַלview

הטבלה שלהלן מתארת ​​כל שדה תצורה הזמין במבנה תצורה זה.
טבלה – הגדרות תצורת CDC של התקן USB

שם תצורה
SL_USBD_CDC_CL כ-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 יש תצורה אחת בזמן קומפילציה המוצגת בטבלה שלהלן.
טבלה – הגדרת תצורת CDC ACM של התקן USB

שם תצורה
SL_USBD_CDC_ACM_SUBCL ASS_I NSTANCE_QUANTITY

תֵאוּר
מגדיר את מספר מופעי תת-המחלקה שתקצה באמצעות קריאה ל-
פונקציה sl_usbd_cdc_acm_create_instance().

ערך ברירת מחדל
2

תצורות מופע מחלקה של CDC ACM של התקן USB

סעיף זה מגדיר את התצורות הקשורות למופעי מחלקה סדרתיים של 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

תֵאוּר
המכשיר מטפל בניהול השיחות בעצמו. המכשיר יכול לשלוח/לקבל מידע על ניהול שיחות דרך ממשק Data Class.

p_acm_callbacks

זכויות יוצרים © 2025 Silicon Laboratories. כל הזכויות שמורות.

23/174

מֵעַלview

aa M aa p_acm_callbacks הוא מצביע למבנה מסוג sl_usbd_cdc_acm_callbacks_t. מטרתו היא לתת ל-CDC AC Cl ss קבוצה של פונקציות callback שיש לקרוא להן כאשר מתרחש אירוע CDC ACM. לא כל ה-callbacks הן חובה וניתן להעביר מצביע null (NULL) במשתנה מבנה ה-callbacks כאשר ה-callback אינו נחוץ. הטבלה שלהלן מתארת ​​כל שדה תצורה הזמין במבנה תצורה זה.
טבלה – מבנה תצורה של sl_usbd_cdc_acm _callbacks_t

שדות

תֵאוּר

.לְאַפשֵׁר

נקרא כאשר מופע מחלקת ה-USB מופעל

בְּהַצלָחָה.

.disable

נקרא כאשר מופע מחלקת ה-USB מושבת.

.line_control_changed נקרא כאשר מתקבל שינוי בקרת קו.

line_coding_changed נקרא כאשר מתקבל שינוי קידוד שורה.

חתימת פונקציה
חלל app_usbd_cdc_acm_enable(uint8_t subclass_nbr);
חלל app_usbd_cdc_acm_disable(uint8_t subclass_nbr);
void app_usbd_cdc_acm_line_control_changed(uint8_t subclass_nbr, uint8_t event, uint8_t event_chngd); bool app_usbd_cdc_acm_line_coding_changed(uint8_t subclass_nbr, subclass_nbr, sl_usbd_cdc_acm_line_coding_t)
קידוד_p_line

ראה סעיף רישום קריאה חוזרת של התראות אירועים עבור פונקציות קריאה חוזרת, לדוגמהample.
מדריך תכנות מחלקת CDC ACM של התקן USB

סעיף זה מסביר כיצד להשתמש במחלקה CDC Abstract Control Model. אתחול מחלקת USB CDC ACM הוספת מופע מחלקה USB CDC ACM להתקן שלך תקשורת באמצעות מחלקת CDC ACM
אתחול מחלקת CDC ACM של התקן ה-USB

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

Example – אתחול מחלקת CDC ACM

סטטוס sl_status_t;
status = sl_usbd_cdc_init(); if (status !SL_STATUS_OK) { /* אירעה שגיאה. יש להוסיף כאן את הטיפול בשגיאות. */
}
status = sl_usbd_cdc_acm_init(); if (status !SL_STATUS_OK) { /* אירעה שגיאה. יש להוסיף כאן את הטיפול בשגיאות. */
}
הוספת מופע מחלקה CDC ACM של התקן USB למכשיר שלך
כדי להוסיף פונקציונליות של מחלקת CDC ACM למכשיר שלך, עליך ליצור מופע ולאחר מכן להוסיף אותו לתצורה/ות של המכשיר שלך.
יצירת מופע מחלקה של CDC ACM

זכויות יוצרים © 2025 Silicon Laboratories. כל הזכויות שמורות.

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 תת-מחלקה_מספר; sl_status_t סטטוס;
סטטוס = sl_usbd_cdc_acm_create_instance(64u, SL_USBD_ACM_SERIAL_CALL_MGMT_DATA_CCI_DCI | SL_USBD_ACM_SERIAL_CALL_MGMT_DEV, NULL, &subclass_nbr);
אם (status ! SL_STATUS_OK) { /* אירעה שגיאה. יש להוסיף כאן את הטיפול בשגיאות. */
}
הוספת מופע מחלקת CDC ACM לתצורה/ות של המכשיר שלך
לאחר שיצרת מופע מחלקה של CDC ACM, תוכל להוסיף אותו לתצורה על ידי קריאה לפונקציה
sl_usbd_cdc_acm_add_to_configuration().
הדוגמה שלהלן מראה כיצד לבצע את הפעולה sl_usbd_cdc_acm_add_to_configuration().
Example – קריאה ל-USBD ACM sl_usbd_cdc_acm_add_to_configuration()

סטטוס sl_status_t;

סטטוס = sl_usbd_cdc_acm_add_to_configuration(subclass_nbr,

(1)

config_nbr_fs);

(2)

אם (סטטוס ! SL_STATUS_OK) {

/* אירעה שגיאה. יש להוסיף כאן את הטיפול בשגיאות. */

}

aaa (1) מספר CL ss שיש להוסיף לתצורה המוחזרת על ידי sl_usbd_cdc_acm_create_instance(). (2) מספר תצורה (כאן הוספתו לתצורה במהירות מלאה).
רישום שיחות חוזרות של התראות אירועים
מחלקת CDC ACM Serial יכולה להודיע ​​לאפליקציה שלך על כל שינוי בבקרת קו או קידוד באמצעות פונקציות callback של הודעות. ניתן להעביר מבנה של פונקציות callback כארגומנט במהלך יצירת מופע ACM. שים לב ש-callbacks אלה הם אופציונליים. לדוגמהample – רישום קריאה חוזרת של CDC ACM ממחיש את השימוש בפונקציות רישום קריאה חוזרת. לדוגמהample – יישום CDC ACM Callbacks מראה דוגמהampשל יישום פונקציות הקריאה החוזרת.
Example – רישום שיחות חוזרות של CDC ACM

זכויות יוצרים © 2025 Silicon Laboratories. כל הזכויות שמורות.

25/174

מֵעַלview

uint8_t תת-מחלקה_מספר; 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);
אם (status ! SL_STATUS_OK) { /* אירעה שגיאה. יש להוסיף כאן את הטיפול בשגיאות. */ }
Exampיישום של CDC ACM Callbacks

bool app_usbd_cdc_acm_line_coding_changed (uint8_t)

תת-מחלקה_מספר,

sl_usbd_cdc_acm_line_coding_t *p_line_coding)

{

uint32_t קצב_באוד_חדש;

uint8_t parity_new;

uint8_t stop_bits_new;

uint8_t נתונים_ביטים_חדשים;

/* TODO החל קידוד שורה חדש.*/ baudrate_new = p_line_coding->BaudRate; parity_new = p_line_coding->Parity; stop_bits_new = p_line_coding->StopBits; data_bits_new = p_line_coding->DataBits;

החזרה (אמת);

(1)

}

void app_usbd_cdc_acm_line_control_changed (uint8_t subclass_nbr, uint8_t event, uint8_t event_changed)
{ bool rts_state; bool rts_state_changed; bool dtr_state; bool dtr_state_changed; bool brk_state; bool brk_state_changed;}

/* TODO החל בקרת שורה חדשה. */ rts_state = ((event & SL_USBD_CDC_ACM_CTRL_RTS) ! 0) ? true : false; rts_state_changed = ((event_changed & SL_USBD_CDC_ACM_CTRL_RTS) ! 0) ? true : false; dtr_state = ((event & SL_USBD_CDC_ACM_CTRL_DTR) ! 0) ? true : false; dtr_state_changed = ((event_changed & SL_USBD_CDC_ACM_CTRL_DTR) ! 0) ? true : false; brk_state = ((event & SL_USBD_CDC_ACM_CTRL_BREAK) ! 0) ? true : false; brk_state_changed = ((event_changed ו-SL_USBD_CDC_ACM_CTRL_BREAK) ! 0) ? true : false;
}

(1) חשוב להחזיר false לפונקציה זו אם יישום קידוד השורות נכשל. אחרת, החזירו true.
תקשורת באמצעות מחלקת CDC ACM
סטטוס סידורי
קידוד קו בקרת קו

זכויות יוצרים © 2025 Silicon Laboratories. כל הזכויות שמורות.

26/174

מֵעַלview

תקשורת מופע תת-מחלקה של מצב קו
סטטוס סידורי
קידוד קו
מארח ה-USB שולט בקידוד הקווים (קצב באוד, זוגיות וכו') של התקן ה-CDC ACM. בעת הצורך, היישום אחראי על הגדרת קידוד הקווים. ישנן שתי פונקציות המסופקות לאחזור וקביעת קידוד הקווים הנוכחי, כמתואר בטבלה שלהלן.
טבלה - פונקציות קידוד קו CDC ACM

פוּנקצִיָה
sl_usbd_cdc_acm_g e t_line _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 _control 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 של Silicon Labs מציעה את הפונקציות הבאות לתקשורת עם המארח. לפרטים נוספים על פרמטרי functions9, עיינו במדריך פונקציות תת-מחלקה של CDC ACM.

שם הפונקציה
sl_usb d _cd c_acm_ קריאה () sl_usb d _cd c_acm_כתיבה ()

מִבצָע
מקבל נתונים מהמארח דרך נקודת קצה של יציאה בכמות גדולה. פונקציה זו חוסמת. שולח נתונים למארח דרך נקודת קצה של יציאה בכמות גדולה. פונקציה זו חוסמת.

זכויות יוצרים © 2025 Silicon Laboratories. כל הזכויות שמורות.

27/174

מֵעַלview

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

__ALIGNED(4) uint8_t rx_buf[2];

__ALIGNED(4) uint8_t tx_buf[2];

uint32_t

xfer_len;

sl_status_t

סטָטוּס;

סטטוס = sl_usbd_cdc_acm_read(subclass_nbr,

(1)

rx_buf,

(2)

2u,

0u,

(3)

&xfer_len);

אם (סטטוס ! SL_STATUS_OK) {

/* אירעה שגיאה. יש להוסיף כאן את הטיפול בשגיאות. */

}

סטטוס = sl_usbd_cdc_acm_write(subclass_nbr,

(1)

tx_buf,

(4)

2u,

0u,

(3)

&xfer_len);

אם (סטטוס ! SL_STATUS_OK) {

/* אירעה שגיאה. יש להוסיף כאן את הטיפול בשגיאות. */

}

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

זכויות יוצרים © 2025 Silicon Laboratories. כל הזכויות שמורות.

28/174

מֵעַלview
מֵעַלview

מחלקת HID של התקן USB

התקן USB HID Class Overview דרישות משאבים של מחלקת HID של התקן USB מהליבה הגדרת מחלקת HID של התקן USB מדריך תכנות מחלקת HID של התקן USB דוחות קלט תקופתיים של HID משימה
סעיף זה מתאר את מחלקת התקן ממשק אנושי (HID) הנתמכת על ידי התקן USB של Silicon Labs.
מחלקת HID כוללת התקנים המשמשים בני אדם לשליטה בפעולות מחשב, כגון מקלדות, עכברים, התקני הצבעה ומכשירי משחק.
ניתן להשתמש במחלקת HID גם במכשיר מורכב המכיל פקדים כגון כפתורים, מתגים, כפתורים ומחוונים. לדוגמהampבקרות ה-le, השתקה ועוצמת הקול באוזניות שמע נשלטות על ידי פונקציית HID של האוזניות. מחלקת HID יכולה להחליף נתונים לכל מטרה באמצעות העברות בקרה והפרעה בלבד.
מחלקת HID היא אחת ממחלקות ה-USB הוותיקות והנפוצות ביותר. כל מערכות ההפעלה העיקריות מספקות מנהל התקן מקורי לניהול התקני HID, ולכן מגוון התקנים ספציפיים לספקים פועלים עם מחלקת HID. מחלקה זו כוללת גם סוגים שונים של פריטי פלט כגון נוריות LED, שמע, משוב מישושי וכו'.
יישום ה-HID עומד במפרטים הבאים:
הגדרת מחלקת התקן עבור התקני ממשק אנושי (HID), 27/6/01, גרסה 1.11. טבלאות שימוש ב-HID באפיק טורי אוניברסלי, 28/10/2004, גרסה 1.12.
התקן USB HID Class Overview
מֵעַלview
התקן HID מורכב מנקודות הקצה הבאות:
זוג נקודות קצה של בקרה IN ו-OUT הנקראות נקודת קצה ברירת מחדל נקודת קצה של פסיקה IN נקודת קצה של פסיקה OUT אופציונלית
הטבלה שלהלן מתארת ​​את השימוש בנקודות הקצה השונות:
טבלה – שימוש בנקודות קצה של מחלקת HID

שימוש בכיוון נקודת הקצה

שליטה ב-IN
לִשְׁלוֹט
הַחוּצָה
פסיקה פנימה
לְהַפְרִיעַ
הַחוּצָה

התקן-למארח
מארח-להתקן
התקן-למארח
מארח-להתקן

בקשות סטנדרטיות לספירה, בקשות ספציפיות למחלקה ותקשורת נתונים (קלט, דוחות מאפיינים הנשלחים למארח עם בקשת GET_REPORT). בקשות סטנדרטיות לספירה, בקשות ספציפיות למחלקה ותקשורת נתונים (פלט, דוחות מאפיינים שהתקבלו מהמארח עם בקשת SET_REPORT). תקשורת נתונים (קלט ודוחות מאפיינים).
תקשורת נתונים (דוחות פלט ותכונות).

דִוּוּחַ

זכויות יוצרים © 2025 Silicon Laboratories. כל הזכויות שמורות.

29/174

מֵעַלview

מארח והתקן HID מחליפים נתונים באמצעות דוחות. דוח מכיל נתונים מעוצבים המספקים מידע על בקרות וישויות פיזיות אחרות של התקן ה-HID. בקרה ניתנת לתפעול על ידי המשתמש ומפעילה היבט של ההתקן. לדוגמהampלדוגמה, פקד יכול להיות כפתור בעכבר או במקלדת, מתג וכו'. ישויות אחרות מודיעות למשתמש על מצב תכונות מסוימות של המכשיר. לדוגמהampנוריות LED במקלדת מודיעות למשתמש על כפתור ה-Caps Lock פעיל, לוח המקשים המספרי פעיל וכו'.
המארח מבין את הפורמט והשימוש בנתוני דוח על ידי ניתוח תוכן של מתאר דוח. ניתוח התוכן מתבצע על ידי מנתח. מתאר הדוח מתאר נתונים המסופקים על ידי כל בקרה במכשיר. הוא מורכב מפריטים שהם פיסות מידע על המכשיר ומורכבים מקידומת של בייט אחד ומקוד באורך משתנה.
נתונים. לפרטים נוספים על פורמט הפריט, עיינו ב
1.11=, סעיף 5.6 ו-6.2.2.
ישנם שלושה סוגים עיקריים של פריטים:
הפריט הראשי מגדיר או מקבץ סוגים מסוימים של שדות נתונים.
פריט גלובלי מתאר מאפייני נתונים של פקד.
פריט מקומי מתאר מאפייני נתונים של פקד.
כל סוג פריט מוגדר על ידי פונקציות שונות. פונקציית פריט יכולה להיקרא גם tagניתן לראות פונקציית פריט כתת-פריט השייך לאחד משלושת סוגי הפריטים העיקריים. הטבלה שלהלן מספקת סקירה קצרהview של פונקציות item9s בכל סוג פריט. לתיאור מלא של הפריטים בכל קטגוריה, ראה
טבלה – תיאור תפקיד הפריט עבור כל סוג פריט

פריט סוג פריט פונקציה

תֵאוּר

קלט ראשי

מתאר מידע אודות הנתונים המסופקים על ידי בקרה פיזית אחת או יותר.

פלט ראשי מתאר נתונים שנשלחו למכשיר.

תכונה עיקרית

מתאר מידע על תצורת המכשיר שנשלח או התקבל מהמכשיר, אשר משפיע על ההתנהגות הכללית של המכשיר או אחד מרכיביו.

פריטים קשורים לקבוצת האוסף הראשית (קלט, פלט או תכונה).

סוף ראשי של סוגר אוסף. אוסף

זכויות יוצרים © 2025 Silicon Laboratories. כל הזכויות שמורות.

30/174

מֵעַלview

פריט סוג פריט פונקציה

תֵאוּר

דף שימוש גלובלי

מזהה פונקציה הזמינה בתוך המכשיר.

גלובלי לוגי מגדיר את הגבול התחתון של הערכים המדווחים ביחידות לוגיות. מינימום

גלובלי לוגי מגדיר את הגבול העליון של הערכים המדווחים ביחידות לוגיות. מקסימום

פיזי גלובלי מגדיר את הגבול התחתון של הערכים המדווחים ביחידות פיזיות, כלומר המינימום הלוגי המינימלי המבוטא ביחידות פיזיות.

פיזי גלובלי מגדיר את הגבול העליון של הערכים המדווחים ביחידות פיזיות, כלומר ה-Logical Maximum Maximum מבוטא ביחידות פיזיות.

יחידה גלובלית

מציין את אקספוננט היחידה בבסיס 10. האקספוננט נע בין -8 ל-+7.

מַעֲרִיך

יחידה גלובלית

מציין את יחידת הערכים המדווחים. לדוגמה, אורך, מסה, יחידות טמפרטורה וכו'.

גודל דוח גלובלי

מציין את גודל שדות הדוח בסיביות.

מזהה דוח גלובלי מציין את הקידומת שנוספה לדוח מסוים.

ספירת דוחות גלובלית

מציין את מספר שדות הנתונים עבור פריט.

דחיפה גלובלית

ממקם עותק של טבלת מצב הפריט הגלובלית על מחסנית ה-CPU.

פופ גלובלי

מחליף את טבלת מצב הפריט במבנה האחרון מהמחסנית.

שימוש מקומי

מייצג אינדקס לייעוד שימוש ספציפי בתוך דף שימוש. הוא מציין את השימוש המוצע על ידי הספק עבור פקד ספציפי או קבוצת פקדים. שימוש מספק מידע למפתח אפליקציות על מה שהפקד מודד בפועל.

שימוש מקומי

מגדיר את השימוש ההתחלתי המשויך למערך או למפת סיביות.

מִינִימוּם

שימוש מקומי

מגדיר את השימוש הסיום המשויך למערך או למפת סיביות.

מַקסִימוּם

ייעוד מקומי קובע את חלק הגוף המשמש עבור בקרה. אינדקס מצביע על ייעוד בפונקציה הפיזית

מַדָד

מתאר.

Local Designator מגדיר את האינדקס של ה-starting designator המשויך למערך או למפת סיביות. מינימום

Local Designator מגדיר את האינדקס של הסמן המסיים המשויך למערך או למפת סיביות. מקסימום

אינדקס מחרוזות מקומי

אינדקס מחרוזות עבור מתאר מחרוזת. הוא מאפשר לשייך מחרוזת לפריט או פקד מסוים.

מחרוזת מקומית

מציין את אינדקס המחרוזת הראשון בעת ​​הקצאת קבוצה של מחרוזות עוקבות לפקדים במערך.

מינימום או מפת סיביות.

מקומי מקומי

מקסימום מחרוזת
תוחם

מציין את אינדקס המחרוזת האחרון בעת ​​הקצאת קבוצה של מחרוזות עוקבות לפקדים במערך או במפת סיביות.
מגדיר את תחילתה או סופה של קבוצת פריטים מקומיים.

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

זכויות יוצרים © 2025 Silicon Laboratories. כל הזכויות שמורות.

31/174

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

(1) פונקציית הפריט דף שימוש מציינת את הפונקציה הכללית של ההתקן. בדוגמה זוample, מכשיר ה-HID שייך ל-
בקרת שולחן עבודה כללית.
(2) האוסף יישומי מקבץ פריטים עיקריים בעלי מטרה משותפת ועשויים להיות מוכרים ליישומים. בתרשים, הקבוצה מורכבת משלושה פריטי קלט עיקריים. עבור אוסף זה, השימוש המוצע עבור הפקדים הוא עכבר כפי שמצוין על ידי פריט השימוש. (3) ניתן להשתמש באוספים מקוננים כדי לספק פרטים נוספים על השימוש בפקד יחיד או קבוצת פקדים ליישומים. בדוגמה זוample, ה-Collect Physical, המקונן בתוך יישום האיסוף, מורכב מאותם שלושה פריטי קלט המרכיבים את יישום האיסוף. ה-Collect Physical משמש עבור קבוצת פריטי נתונים המייצגים נקודות נתונים שנאספו בנקודה גיאומטרית אחת. בדוגמהampלדוגמה, השימוש המוצע הוא מצביע כפי שמצוין על ידי פריט השימוש. כאן השימוש במצביע מתייחס לקואורדינטות מיקום העכבר ותוכנת המערכת תתרגם את קואורדינטות העכבר בתנועת סמן המסך. (4) דפי שימוש מקוננים אפשריים גם כן ומספקים פרטים נוספים על היבט מסוים בתוך הפונקציה הכללית של המכשיר. במקרה זה, שני פריטי קלט מקובצים ותואמים לכפתורי העכבר. פריט קלט אחד מגדיר את שלושת כפתורי העכבר (ימין, שמאל וגלגל) מבחינת מספר שדות הנתונים עבור הפריט (פריט ספירת דוחות), גודל שדה הנתונים (פריט גודל דוחות) וערכים אפשריים עבור כל שדה נתונים (מינימום ומקסימום שימוש, מינימום לוגי ומקסימום). פריט הקלט השני הוא קבוע של 13 סיביות המאפשר ליישר את נתוני דוח הקלט על גבול בתים. פריט קלט זה משמש רק למטרות ריפוד. (5) דף שימוש מקונן נוסף המתייחס לבקרת שולחן עבודה גנרית מוגדר עבור קואורדינטות מיקום העכבר. עבור דף שימוש זה, פריט הקלט מתאר את שדות הנתונים התואמים לציר x ו-y כפי שצוין על ידי שני פריטי השימוש.
פריטים.
לאחר ניתוח תוכן תיאור דוח העכבר הקודם, מנתח ה-HID של ה-host9 מסוגל לפרש את נתוני דוח הקלט שנשלחו על ידי ההתקן באמצעות העברה IN מסוג פסיקה או בתגובה לבקשת GET_REPORT. נתוני דוח הקלט התואמים לתיאור דוח העכבר המוצגים באיור - תוכן תיאור דוח ממנתח HID של ה-host. View is

זכויות יוצרים © 2025 Silicon Laboratories. כל הזכויות שמורות.

32/174

מֵעַלview

מוצג בטבלה שלהלן. הגודל הכולל של נתוני הדוח הוא 4 בתים. ניתן לשלוח סוגים שונים של דוחות דרך אותה נקודת קצה. לצורך הבחנה בין סוגי הדוחות השונים, נוסף קידומת של מזהה דוח של בייט אחד לדוח הנתונים. אם נעשה שימוש במזהה דוח בדוגמהampשל דוח העכבר, הגודל הכולל של נתוני הדוח יהיה 5 בתים.
טבלה - דוח קלט שנשלח למארח ומתאים למצב של עכבר בעל 3 לחצנים

מעט היסט
0 1 2 3 16 24

ספירת סיביות 1 1 1 13 8 8

תיאור כפתור 1 (כפתור שמאלי). כפתור 2 (כפתור ימני). כפתור 3 (כפתור גלגל). לא בשימוש. מיקום על ציר X. מיקום על ציר Y.

מתאר פיזי מציין את החלק או חלקי הגוף המיועדים להפעיל בקרה או בקרים. יישום עשוי להשתמש במידע זה כדי להקצות פונקציונליות לבקרה של התקן. מתאר פיזי הוא מתאר אופציונלי ספציפי למחלקה ולרוב ההתקנים יש רווח מועט מהשימוש בו. עיין ב
דרישות משאבי מחלקת HID של התקן USB מהליבה

בכל פעם שמוסיפים מופע של מחלקה 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 של התקן USB

שתי קבוצות של פרמטרי תצורה משמשות להגדרת מחלקת HID:
תצורות ספציפיות ליישום של מחלקת HID של התקן USB תצורות מופע של מחלקת HID של התקן USB
תצורות ספציפיות ליישום של מחלקת HID של התקן USB

ראשית, כדי להשתמש במודול מחלקת HID של התקן USB של Silicon Labs, יש להתאים את הגדרות זמן הקומפילציה של HID בהתאם לצורכי היישום שלכם. הן מקובצות מחדש בתוך הכותרת sl_usbd_core_config.h. file תחת סעיף HID. ניתן לחלק אותם לשני חלקים, תצורות כמות ותצורות משימת HID. מטרת תצורות הכמות היא ליידע את מודול התקן ה-USB כמה אובייקטי USB HID להקצות.
הטבלה שלהלן מתארת ​​כל הגדרת תצורה.
טבלה – הגדרות תצורת HID של התקן USB

זכויות יוצרים © 2025 Silicon Laboratories. כל הזכויות שמורות.

33/174

מֵעַלview

שם תצורה
SL_USBD_HID_CL ASS_I כמות_מעמד
SL_USBD_HID_CONFIG URATION_QUANTITY
SL_USBD_HID_REPORT_ מזהה_כמות
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(). מגדיר את המספר הכולל של מזהי דוחות להקצאה.
מגדיר את המספר הכולל של פריטי דחיפה/פופ להקצאה.
משימת הטיימר מטפלת בכל פעולות ה-HID המבוססות על טיימר. תצורה זו מאפשרת לך להגדיר את גודל המחסנית (במספר בתים). עדיפות של משימת HID. זוהי עדיפות CMSIS-RTOS2.

ערך ברירת מחדל
2 1 2 0 2048
עדיפות גבוהה של מערכת הפעלה

מחלקה של HID של התקן USB, תצורות מופע, מחלקה, יצירת מופע, תת-מחלקה
קוד_מדינה_של_פרוטוקול
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 של גרסה 1.11 של מפרט HID.
פּרוֹטוֹקוֹל
הפרוטוקול בו משתמש התקן ה-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 של גרסה 1.11 של מפרט HID.
קוד_מדינה
מזהה של קוד המדינה. ערכים אפשריים הם:
SL_USBD_HID_COUNTRY_CODE_NOT_SPORTED

זכויות יוצרים © 2025 Silicon Laboratories. כל הזכויות שמורות.

34/174

מֵעַלview
SL_USBD_HID_COUNTRY_CODE_ARABIC SL_USBD_HID_COUNTRY_CODE_BELGIAN SL_USBD_HID_COUNTRY_CODE_CANADIAN_DILINGUAL SL_USBD_HID_COUNTRY_CODE_CANADIAN_FRENCH SL_USBD_HID_COUNTRY_CODE_CZECH_REPUBLIC SL_USBD_HID_COUNTRY_CODE_DANISH SL_USBD_HID_COUNTRY_CODE_FINNISH SL_USBD_HID_COUNTRY_CODE_FRENCH SL_USBD_HID_COUNTRY_CODE_GERMAN SL_USBD_HID_COUNTRY_CODE_GREEK SL_USBD_HID_COUNTRY_CODE_HEBREW SL_USBD_HID_COUNTRY_CODE_HUNGARY SL_USBD_HID_COUNTRY_CODE_INTERNATIONAL SL_USBD_HID_COUNTRY_CODE_ITALIAN SL_USBD_HID_COUNTRY_CODE_JAPAN_KATAKANA SL_USBD_HID_COUNTRY_CODE_KOREAN SL_USBD_HID_COUNTRY_CODE_L ATIN_AMERICAN SL_USBD_HID_COUNTRY_CODE_NETHERL ANDS_DUTCH SL_USBD_HID_COUNTRY_CODE_NORWEGIAN SL_USBD_HID_COUNTRY_CODE_PERSIAN_FRSKI SL_USBD_HID_COUNTRY_CODE_POL AND SL_USBD_HID_COUNTRY_CODE_PORTUGUESE SL_USBD_HID_COUNTRY_CODE_RUSSIA SL_USBD_HID_COUNTRY_CODE_SLOVAKIA SL_USBD_HID_COUNTRY_CODE_SPANISH SL_USBD_HID_COUNTRY_CODE_SWEDISH SL_USBD_HID_COUNTRY_CODE_SWISS_FRENCH SL_USBD_HID_COUNTRY_CODE_SWISS_GERMAN SL_USBD_HID_COUNTRY_CODE_SWITZERL ו-SL_USBD_HID_COUNTRY_CODE_TAIWAN SL_USBD_HID_COUNTRY_CODE_TURKISH_Q SL_USBD_HID_COUNTRY_CODE_UK SL_USBD_HID_COUNTRY_CODE_US SL_USBD_HID_COUNTRY_CODE_YUG OSL AVIA SL_USBD_HID_COUNTRY_CODE_TURKISH_F
קוד המדינה מזהה את שפת המקשים עבורה החומרה מותאמת. רוב החומרה אינה מותאמת ולכן ערך זה יהיה SL_USBD_HID_COUNTRY_CODE_NOT_SUPPORTED (0). עם זאת, מקלדת עשויה להשתמש בשדה זה כדי לציין את שפת המקשים.
למידע נוסף על קודי המדינה, עיין בסעיף 6.2.1 של גרסה 1.11 של מפרט HID.
interval_in ו- interval_out
interval_in ו- interval_out מייצגים את מרווח הסקר של נקודת הקצה של פסיקת IN ונקודת הקצה של פסיקת OUT.
ערך זה מייצג את מרווח הזמן של בדיקת נקודת הקצה, במילישניות. הגדרת ערך זה תלויה בתדירות שבה המכשיר שלך רגיש לייצר דוח חדש עבור המארח. לדוגמה, אם דוח נוצר כל 16 מילישניות, המרווח צריך להיות 16 או פחות.
הערך חייב להיות חזקה של 2 (1, 2, 4, 8, 16 וכו').
הפונקציה interval_out מתעלמת אם הפונקציה ctrl_rd_en מוגדרת כ-true.
p_hid_callback
הפונקציה p_hid_callback היא מצביע למבנה מסוג sl_usbd_hid_callbacks_t. מטרתה לתת לפונקציית HID Cl ss קבוצה של פונקציות callback שיש לקרוא להן כאשר מתרחש אירוע HID.

זכויות יוצרים © 2025 Silicon Laboratories. כל הזכויות שמורות.

35/174

מֵעַלview

לא כל ה-callbacks הם חובה וניתן להעביר מצביע null (NULL) במשתנה מבנה ה-callbacks כאשר ה-callback אינו נחוץ. הטבלה שלהלן מתארת ​​כל שדה תצורה הזמין במבנה תצורה זה.
טבלה – מבנה תצורה sl_usbd_hid_callbacks_t

שדות

תֵאוּר

חתימת פונקציה

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

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

void app_usbd_hid_enable(uint8_t class_nbr); void app_usbd_hid_disable(uint8_t class_nbr); void app_usbd_hid_get_report_desc(uint8_t class_nbr, const uint8_t *p_report_ptr, uint16_tp_report_len);
void app_usbd_hid_get_phy_desc(uint8_t class_nbr, const uint8_t *p_report_ptr, uint16_tp_report_len);
void app_usbd_hid_set_output_report(uint8_t class_nbr, uint8_t report_id, uint8_t *p_report_buf, uint16_t report_len); void app_usbd_hid_get_feature_report(uint8_t class_nbr, uint8_t report_id, uint8_t *p_report_buf, uint16_t report_len); void app_usbd_hid_set_feature_report(uint8_t class_nbr, uint8_t report_id, uint8_t *p_report_buf, uint16_t report_len);

.get_protocol

מאחזר את הפרוטוקול הפעיל הנוכחי.

חלל app_usbd_hid_get_protocol(uint8_t class_nbr, uint8_t *p_protocol);

.set_protocol

מגדיר את הפרוטוקול הפעיל הנוכחי.

void app_usbd_hid_set_protocol(uint8_t class_nbr, uint8_t protocol);

תיאור דוח מחלקה HID אקספרסample

מחלקת HID של Silicon Labsampהאפליקציה מספקת אקספרסampשל תיאור דוח עבור עכבר פשוט. הדוגמהampלמטה מציג מתאר דוח עכבר.
Example – תיאור דוח עכבר

uint8_t סטטי app_usbd_hid_report_desc[] = {

(1) (2)

SL_USBD_HID_GLOBAL_USAGE_PAGE + 1, SL_USBD_HID_USAGE_PAGE_GENERIC_DESKTOP_CONTROLS,

SL_USBD_HID_LOCAL_USAGE + 1, SL_USBD_HID_CA_MOUSE,

(3)

זכויות יוצרים © 2025 Silicon Laboratories. כל הזכויות שמורות.

36/174

מֵעַלview

SL_USBD_HID_MAIN_COLLECTION +1, SL_USBD_HID_COLLECTION_APPLICATION,(4)

SL_USBD_HID_LOCAL_USAGE +1, SL_USBD_HID_CP_POINTER,(5)

SL_USBD_HID_MAIN_COLLECTION +1, SL_USBD_HID_COLLECTION_PHYSICAL,(6)

SL_USBD_HID_GLOBAL_USAGE_PAGE +1, SL_USBD_HID_USAGE_PAGE_BUTTON,(7)

SL_USBD_HID_LOCAL_USAGE_MIN +1,0 01,

SL_USBD_HID_LOCAL_USAGE_MAX +1,0 03,

SL_USBD_HID_GLOBAL_LOG_MIN +1,0 00,

SL_USBD_HID_GLOBAL_LOG_MAX +1,0 01,

SL_USBD_HID_GLOBAL_REPORT_COUNT +1,0 03,

SL_USBD_HID_GLOBAL_REPORT_SIZE +1,0 01,

SL_USBD_HID_MAIN_INPUT +1, SL_USBD_HID_MAIN_DATA |

SL_USBD_HID_MAIN_VARIABLE |

SL_USBD_HID_MAIN_ABSOLUTE,

SL_USBD_HID_GLOBAL_REPORT_COUNT +1,0 01,(8)

גודל_דו"ח_גלובלי_SL_USBD_HID +1,0 0D,

SL_USBD_HID_MAIN_INPUT +1, SL_USBD_HID_MAIN_CONSTANT,(9)

SL_USBD_HID_GLOBAL_USAGE_PAGE +1, SL_USBD_HID_USAGE_PAGE_GENERIC_DESKTOP_CONTROLS,

SL_USBD_HID_LOCAL_USAGE +1, SL_USBD_HID_DV_X,

SL_USBD_HID_LOCAL_USAGE +1, SL_USBD_HID_DV_Y,

SL_USBD_HID_GLOBAL_LOG_MIN +1,0 81,

SL_USBD_HID_GLOBAL_LOG_MAX +1,0 7F,

SL_USBD_HID_GLOBAL_REPORT_SIZE +1,0 08,

SL_USBD_HID_GLOBAL_REPORT_COUNT +1,0 02,

SL_USBD_HID_MAIN_INPUT +1, SL_USBD_HID_MAIN_DATA |

SL_USBD_HID_MAIN_VARIABLE |

SL_USBD_HID_MAIN_RELATIVE,

אוסף SL_USBD_HID_MAIN_END,(10)

אוסף SL_USBD_HID_MAIN_END

(11)};

(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) אוסף העכברים סגור.
דף HID של USB.org

זכויות יוצרים © 2025 Silicon Laboratories. כל הזכויות שמורות.

37/174

מֵעַלview
פורום מיישמי USB (USB-IF) מספק כלי בשם "HID Descriptor Tool" יחד עם מידע נוסף על פורמט תיאור הדוחות. ראה http://www.usb.org/developers/hidpage/ למידע נוסף.
מדריך תכנות של מחלקת HID של התקן USB
סעיף זה מסביר כיצד להשתמש במחלקה HID. אתחול מחלקת HID של התקן USB הוספת מופע מחלקה HID של התקן USB להתקן שלך תקשורת באמצעות מחלקת HID של התקן USB
אתחול מחלקת HID של התקן USB
כדי להוסיף פונקציונליות של מחלקת HID למכשיר שלך, עליך תחילה לאתחל את המחלקה על ידי קריאה לפונקציה sl_usbd_hid_init(). הפונקציה exampההוראות שלהלן מציגות כיצד לקרוא לפונקציה sl_usbd_hid_init() באמצעות ארגומנטים המוגדרים כברירת מחדל. למידע נוסף על ארגומנטי התצורה שיש להעביר לפונקציה sl_usbd_hid_init(), ראו תצורות ספציפיות ליישום של מחלקת HID של התקן USB.
Example – קריאה ל- sl_usbd_hid_init()
סטטוס sl_status_t;
status = sl_usbd_hid_init(); if (status !SL_STATUS_OK) { /* אירעה שגיאה. יש להוסיף כאן את הטיפול בשגיאות. */
}
הוספת מופע מחלקה HID של התקן USB למכשיר שלך
כדי להוסיף פונקציונליות של מחלקת HID למכשיר שלך, עליך ליצור מופע (instance) ולאחר מכן להוסיף אותו לתצורה (או תצורות) של המכשיר שלך.
יצירת מופע של מחלקה HID
צור מופע של מחלקה HID על ידי קריאה לפונקציה sl_usbd_hid_create_instance(). הדוגמהampההוראות שלהלן מציגות כיצד ליצור פונקציית עכבר פשוטה דרך sl_usbd_hid_create_instance() באמצעות ארגומנטים המוגדרים כברירת מחדל. למידע נוסף על ארגומנטי התצורה שיש להעביר ל-sl_usbd_hid_create_instance(), ראו תצורות מופע מחלקה של HID של התקן USB.
Example – הוספת פונקציית עכבר דרך sl_usbd_hid_create_instance()

זכויות יוצרים © 2025 Silicon Laboratories. כל הזכויות שמורות.

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 = { NULL, NULL, app_usbd_hid_get_report_desc, NULL, NULL, NULL, NULL, NULL, NULL };
void app_usbd_hid_get_report_desc(uint8_t class_nbr, const uint8_t **p_report_ptr, uint16_t *p_report_len)
{ (void)class_nbr;
‏*p_report_ptr = app_usbd_hid_mouse_report_desc;*p_report_len = sizeof(app_usbd_hid_mouse_report_desc); }
סטטוס = sl_usbd_hid_create_instance(SL_USBD_HID_SUBCLASS_BOOT, SL_USBD_HID_PROTOCOL_MOUSE, SL_USBD_HID_COUNTRY_CODE_NOT_SUPPORTED, Ex_USBD_HID_Mouse_ReportDesc, sizeof(Ex_USBD_HID_Mouse_ReportDesc), 2u, 2u, true, &app_usbd_hid_callbacks, &class_nbr);
זכויות יוצרים © 2025 Silicon Laboratories. כל הזכויות שמורות.

39/174

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

סטטוס sl_status_t;

sl_usbd_hid_add_to_configuration(מספר_מחלקה,

(1)

(2)

אם (סטטוס ! SL_STATUS_OK) {

/* אירעה שגיאה. יש להוסיף כאן את הטיפול בשגיאות. */

}

(1) מספר מחלקה להוספה לתצורה המוחזרת על ידי sl_usbd_hid_create_instance(). (2) מספר תצורה (כאן הוספתו לתצורה במהירות מלאה).
תקשורת באמצעות מחלקת HID של התקן USB
תקשורת בין מופעי מחלקה תקשורת סינכרונית תקשורת בין מופעי מחלקה מחלקת HID מציעה את הפונקציות הבאות לתקשורת עם המארח.
טבלה – סיכום API של תקשורת HID

שם הפונקציה
sl_usb d _hid _read ad _sy nc() sl_usb d _hid _write _sy nc()

פעולה מקבלת נתונים מהמארח דרך נקודת הקצה של interrupt OUT. פונקציה זו חוסמת. שולחת נתונים למארח דרך נקודת הקצה של interrupt IN. פונקציה זו חוסמת.

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

__ALIGNED(4) uint8_t rx_buf[2];

__ALIGNED(4) uint8_t tx_buf[2];

uint32_t

xfer_len;

sl_status_t

סטָטוּס;

סטטוס = sl_usbd_hid_read_sync(class_nbr,

(1)

‏(void *)rx_buf,

(2)

2u,

0u,

(3)

&xfer_len);

אם (סטטוס ! SL_STATUS_OK) {

/* אירעה שגיאה. יש להוסיף כאן את הטיפול בשגיאות. */

}

זכויות יוצרים © 2025 Silicon Laboratories. כל הזכויות שמורות.

40/174

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

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

זכויות יוצרים © 2025 Silicon Laboratories. כל הזכויות שמורות.

41/174

מֵעַלview
אם משך זמן הסרק קצר ממרווח הפיקוח של נקודת הקצה של הפריעה IN, הדוחות נוצרים במרווח הפיקוח.
(3) כל 4 אלפיות שנייה, משימת דוח הקלט התקופתי גולשת ברשימת מזהי דוחות הקלט. עבור כל מזהה דוח קלט, המשימה מבצעת אחת משתי פעולות אפשריות. משך תקופת המשימה תואם ליחידה של 4 אלפיות שנייה בה נעשה שימוש למשך זמן הסרק. אם לא נשלחו בקשות SET_IDLE על ידי המארח, רשימת מזהי דוחות הקלט ריקה ולמשימה אין מה לעבד. המשימה מעבדת רק מזהי דוחות השונים מ-0 ועם משך סרק גדול מ-0.
(4) עבור מזהה דוח קלט נתון, המשימה מאמתת אם משך זמן ההמתנה חלף. אם משך זמן ההמתנה לא חלף, המונה יורד ולא נשלח דוח קלט למארח.
(5) אם משך זמן ההתנהלות הסרק חלף (כלומר, מונה משך זמן ההתנהלות הסרק הגיע לאפס), דוח קלט נשלח למארח על ידי קריאה לפונקציה sl_usbd_hid_write_sync() דרך נקודת הקצה של interrupt IN.
(6) נתוני דוח הקלט הנשלחים על ידי המשימה מגיעים ממאגר נתונים פנימי המוקצה לכל דוח קלט המתואר במתאר הדוחות. משימת יישום יכולה לקרוא לפונקציה sl_usbd_hid_write_sync() כדי לשלוח דוח קלט. לאחר שליחת נתוני דוח הקלט, sl_usbd_hid_write_sync() מעדכן את המאגר הפנימי המשויך למזהה דוח קלט עם הנתונים שזה עתה נשלחו. לאחר מכן, משימת דוחות הקלט התקופתיים תמיד שולחת את אותם נתוני דוח קלט לאחר כל משך סרק שחלף ועד שמשימת היישום מעדכנת את הנתונים במאגר הפנימי. קיים מנגנון נעילה כלשהו כדי למנוע פגיעה בנתוני מזהה דוח הקלט במקרה של שינוי המתרחש בזמן השידור המדויק שבוצע על ידי משימת דוח הקלט התקופתי.

זכויות יוצרים © 2025 Silicon Laboratories. כל הזכויות שמורות.

42/174

מֵעַלview
מֵעַלview
מחלקת MSC של התקן USB
התקן USB MSC Class Overview דרישות משאבי מחלקת MSC של התקן USB מהליבה תצורת מחלקת MSC של התקן USB מדריך תכנות מחלקת MSC של התקן USB מנהלי התקנים לאחסון מחלקת MSC של התקן USB
סעיף זה מתאר את סוג התקני אחסון המוני (MSC) הנתמכים על ידי התקני USB של Silicon Labs. MSC הוא פרוטוקול המאפשר העברת מידע בין התקן USB למארח. המידע המועבר הוא כל דבר שניתן לאחסן באופן אלקטרוני, כגון תוכניות הרצה, קוד מקור, מסמכים, תמונות, נתוני תצורה או נתונים טקסטואליים או מספריים אחרים. התקן ה-USB מופיע כאמצעי אחסון חיצוני למארח, ומאפשר העברת... fileבאמצעות גרירה ושחרור.
A file המערכת מגדירה כיצד ה fileמאורגנים במדיה לאחסון. מפרט מחלקת אחסון המונים של USB אינו דורש שום דבר מיוחד file מערכת לשימוש במכשירים תואמים. במקום זאת, היא מספקת ממשק פשוט לקריאה וכתיבה של מגזרי נתונים באמצעות מערך הפקודות השקוף של ממשק מערכת המחשב הקטנה (SCSI). ככאלה, מערכות הפעלה עשויות להתייחס לכונן ה-USB כמו לכונן קשיח, ויכולות לעצב אותו עם כל file מערכת שהם אוהבים.
מחלקת התקני אחסון בנפח USB תומכת בשני פרוטוקולי תעבורה, כדלקמן:
בקרה/העברה בכמות גדולה/פסיקה (CBI) של תעבורה בכמות גדולה בלבד (BOT) (משמש רק עבור כונני תקליטונים)
מחלקת התקן אחסון בכמות גדולה מיישמת את מערך הפקודות השקוף של SCSI באמצעות פרוטוקול BOT בלבד, מה שאומר שרק נקודות קצה בכמות גדולה ישמשו להעברת נתונים ומידע סטטוס. יישום ה-MSC תומך ביחידות לוגיות מרובות.
יישום ה-MSC עומד במפרטים הבאים:
מפרט אחסון המוני של אפיק טורי אוניברסלי מעלview, גרסה 1.3, 5 בספטמבר 2008. Universal Serial Bus Mass Storage Class Bulk-Only Transport, גרסה 1.0, 31 בספטמבר 1999.
התקן USB MSC aCl ss מעלview
בקשות מחלקה של נקודות קצה של פרוטוקול, ממשק מערכת מחשב קטן (SCSI)
פּרוֹטוֹקוֹל
בסעיף זה, נדון בפרוטוקול Bulk-Only Transport (BOT) של מחלקת אחסון המוני. לפרוטוקול Bulk-Only Transport יש שלושה...tages:
הובלת הפקודה הובלת הנתונים הובלת הסטטוס
פקודות אחסון בנפח נשלחות על ידי המארח דרך מבנה הנקרא Command Block Wrapper (CBW). עבור פקודות הדורשות העברת נתוניםtagכלומר, המארח ינסה לשלוח או לקבל את מספר הבייטים המדויק מהמכשיר כפי שצוין על ידי שדות האורך והדגל של ה-CBW. לאחר סיום העברת הנתוניםtagה. המארח מנסה לקבל עטיפת מצב פקודה (CSW) מהמכשיר המפרטת את מצב הפקודה וכן כל שארית נתונים (אם

זכויות יוצרים © 2025 Silicon Laboratories. כל הזכויות שמורות.

43/174

מֵעַלview
עבור פקודות שאינן כוללות העברת נתוניםtagלדוגמה, המארח מנסה לקבל את ה-CSW ישירות לאחר שליחת ה-CBW. הפרוטוקול מפורט באיור – פרוטוקול MSC.
איור – פרוטוקול MSC

נקודות קצה
בצד המכשיר, בהתאם למפרט ה-BOT, ה-MSC מורכב מנקודות הקצה הבאות: זוג נקודות קצה IN ו-OUT של בקרה הנקראות נקודת קצה ברירת מחדל. זוג נקודות קצה IN ו-OUT של כמות גדולה של נקודות קצה.
הטבלה שלהלן מציינת את השימושים השונים של נקודות הקצה.
טבלה – שימוש בנקודות קצה של MSC

נקודת קצה
כניסת בקרה יציאה כניסת בקרה גורף יציאה גורף

כיוון
התקן למארח התקן למארח התקן למארח התקן למארח

נוֹהָג
בקשות ספציפיות למחלקת ספירה ו-MSC שליחת CSW ונתונים קבלת CBW ונתונים

בקשות לשיעורים
ישנן שתי בקשות בקרה מוגדרות עבור פרוטוקול MSC BOT. בקשות אלו ותיאוריהן מפורטים בטבלה שלהלן.

טבלה – בקשות לשיעורי אחסון בנפח גדול

בקשות לשיעורים
איפוס אחסון בכמות גדולה בלבד

תֵאוּר
בקשה זו משמשת לאיפוס התקן אחסון המוני והממשק המשויך אליו. בקשה זו מכינה את ההתקן לקבלת בלוק הפקודה הבא.

זכויות יוצרים © 2025 Silicon Laboratories. כל הזכויות שמורות.

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)
דרישות משאבי מחלקה MSC של התקן USB מהליבה

בכל פעם שתוסיף מופע מחלקה MSC לתצורת USB דרך הפונקציה sl_usbd_msc_add_to_configuration() , המשאבים הבאים יוקצו מהליבה.

מַשׁאָב
ממשקים ממשקים חלופיים נקודות קצה קבוצות ממשקים

כַּמוּת
1 1 2 0

שימו לב שמספרים אלה הם לכל תצורה. בעת הגדרת ערכי התצורה SL_USBD_INTERFACE_QUANTITY, SL_USBD_ALT_INTERFACE_QUANTITY, SL_USBD_INTERFACE_GROUP_QUANTITY ו-SL_USBD_DESCRIPTOR_QUANTITY, אל תשכחו לקחת בחשבון כמה תצורות יתווספו למחלקה. עבור ערך התצורה SL_USBD_OPEN_ENDPOINTS_QUANTITY, מכיוון שנקודות קצה נפתחות רק כאשר תצורה מוגדרת על ידי המארח, עליכם לקחת בחשבון רק את מספר נקודות הקצה הדרושות עבור מופע מחלקה.
תצורת מחלקת MSC של התקן USB

שתי קבוצות של פרמטרי תצורה משמשות להגדרת מחלקת MSC:
תצורות ספציפיות ליישום של התקן USB, תצורת יחידה לוגית, מחלקת MSC של התקן USB
תצורות ספציפיות ליישום של מחלקת MSC של התקן USB

יצירת מופע מחלקה בזמן קומפילציה של מחלקה

זכויות יוצרים © 2025 Silicon Laboratories. כל הזכויות שמורות.

45/174

מֵעַלview

תצורות בזמן קומפילציה של מחלקה
ניתן להגדיר את מחלקת MSC ותת-מחלקת SCSI של התקני USB של Silicon Labs בזמן הקומפילציה באמצעות #defines הממוקם בקובץ sl_usbd_core_config.h file.
טבלה - קבועי תצורה גנריים

שם תצורה

תֵאוּר

SL_USBD_MSC_CLASS_INST מספר מופעי המחלקה שתקצה באמצעות קריאה לפונקציה

ANCE_QUANTITY

sl_usbd_msc_scsi_create_instance().

SL_USBD_MSC_CONFIGURA מספר התצורה שאליה ניתן להוסיף מופע מחלקה באמצעות קריאה ל-

TION_QUANTITY

פונקציה sl_usbd_msc_scsi_add_to_configuration().

SL_USBD_MSC_LUN_QUANT מספר היחידות הלוגיות לכל מופע מחלקה שתוסיף באמצעות קריאה ל-

ITY

פונקציה sl_usbd_msc_scsi_lun_add().

SL_USBD_MSC_SCSI_64_BIT מאפשר או מבטל תמיכה עבור כתובת בלוק לוגית (LBA) של 64 סיביות.
_LBA_EN

SL_USBD_MSC_DATA_BUFF גודל מאגר הנתונים לכל מופע מחלקה בבתים ER_SIZE

ערך ברירת מחדל
2
1
2
0
512

יצירת מופע מחלקה
יצירת מופע מחלקה MSC SCSI של התקן USB מתבצעת על ידי קריאה לפונקציה sl_usbd_msc_scsi_create_instance(). פונקציה זו מקבלת ארגומנט תצורה אחד המתואר להלן.
p_scsi_callbacks
p_scsi_callbacks הוא מצביע למבנה תצורה מסוג sl_usbd_msc_scsi_callbacks_t. בנוסף לפונקציות callback connect/disconnect של מחלקת התקנים usb הנפוצות, הוא מספק למחלקת MSC קבוצה של פונקציות callback אופציונליות הנקראות כאשר מתרחש אירוע ביחידה הלוגית. ניתן להעביר מצביע null (NULL) לארגומנט זה אם אין צורך בפונקציות callback.
הטבלה שלהלן מתארת ​​כל שדה תצורה הזמין במבנה תצורה זה.
טבלה – מבנה תצורה של sl_usbd_msc_scsi_callbacks_t

שדות

תֵאוּר

.לְאַפשֵׁר

נקרא כאשר מופע מחלקת ה-USB מופעל בהצלחה.

.disable נקרא כאשר מופע מחלקת USB מושבת.

.host_eject פונקציה הנקראת כאשר יחידה לוגית נפלטה מהמארח.

חתימת פונקציה
חלל app_usbd_msc_scsi_enable(uint8_t class_nbr);
void app_usbd_msc_scsi_disable(uint8_t class_nbr); void app_usbd_msc_scsi_host_eject(uint8_t class_nbr, uint8_t lu_nbr);

תצורת יחידה לוגית של מחלקת MSC של התקן USB

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

p_lu_info

p_lu_info הוא מצביע למבנה מסוג sl_usbd_msc_scsi_lun_info_t. מטרתו לספק את המידע על היחידה הלוגית למחלקת MSC.
הטבלה שלהלן מתארת ​​כל שדה תצורה הזמין במבנה תצורה זה.

טבלה – מבנה תצורה sl_usbd_msc_scsi_lun_info_t

זכויות יוצרים © 2025 Silicon Laboratories. כל הזכויות שמורות.

46/174

מֵעַלview

שָׂדֶה

תֵאוּר

שָׂדֶה
.scsi_lun_api_p tr

תֵאוּר
מצביע ל-API של מנהל התקן המדיה שיטפל ביחידה לוגית זו. ראה מנהלי התקנים של מחלקת MSC של התקן USB לקבלת מידע נוסף על מנהלי התקנים של אחסון.

.ve nd o r_id _ p tr
.product_id_ptr
.pro d uct_ re visi on_level .is_ קריאה _רק

מצביע למחרוזת המכילה את זיהוי הספק של היחידה הלוגית. האורך המרבי של המחרוזת הוא 8 תווים. מצביע למחרוזת המכילה את זיהוי המוצר של היחידה הלוגית. האורך המרבי של המחרוזת הוא 16 תווים. רמת גרסת מוצר.
דגל המציין אם יש לראות את היחידה הלוגית כקריאה בלבד מנקודת המבט של view של המארח (אמת) או לא (שקר).

מדריך תכנות MSC Class של התקן USB

סעיף זה מסביר כיצד להשתמש במחלקה MSC.
אתחול מחלקת MSC של התקן USB הוספת מופע מחלקת SCSI של התקן USB להתקן שלך טיפול ביחידה לוגית של מחלקת MSC של התקן USB
אתחול מחלקת MSC של התקן ה-USB

כדי להוסיף פונקציונליות של מחלקת 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;
status = sl_usbd_msc_init(); if (status !SL_STATUS_OK) { /* אירעה שגיאה. יש להוסיף כאן את הטיפול בשגיאות. */
}
status = sl_usbd_msc_scsi_init(); if (status !SL_STATUS_OK) { /* אירעה שגיאה. יש להוסיף כאן את הטיפול בשגיאות. */
}
הוספת מופע מחלקה MSC SCSI של התקן USB למכשיר שלך
כדי להוסיף פונקציונליות של מחלקת 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(), ראו תצורות ספציפיות ליישום של מחלקת MSC של התקן USB.
Example – קריאה לפונקציה sl_usbd_ msc_scsi_create_instance()

זכויות יוצרים © 2025 Silicon Laboratories. כל הזכויות שמורות.

47/174

מֵעַלview

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

סטטוס sl_status_t;

סטטוס = sl_usbd_msc_scsi_add_to_configuration(class_nbr,

(1)

config_nbr_fs);

(2)

אם (סטטוס ! SL_STATUS_OK) {

/* אירעה שגיאה. יש להוסיף כאן את הטיפול בשגיאות. */

}

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

זכויות יוצרים © 2025 Silicon Laboratories. כל הזכויות שמורות.

48/174

מֵעַלview

sl_usbd_msc_scsi_lun_t *lu_object_ptr = NULL;

sl_usbd_msc_scsi_lun_info_t lu_info;

sl_status_t

סטָטוּס;

lu_info.sl_usbd_msc_scsi_lun_api_t = &app_usbd_scsi_storage_block_device_api;

lu_info.vendor_id_ptr

= "מעבדות סיליקון";

lu_info.product_id_ptr

= "התקן חסום לדוגמהampלה";

lu_info.product_revision_level = 0x1000u;

lu_info.is_read_only

= שקר;

סטטוס = sl_usbd_msc_scsi_lun_add(מספר_מחלקה, &lu_info, &lu_object_ptr);
אם (status ! SL_STATUS_OK) { /* אירעה שגיאה. יש להוסיף כאן את הטיפול בשגיאות. */ }

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

סטטוס sl_status_t;

status = sl_usbd_msc_scsi_lun_attach(lu_object_ptr); if (status !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 מחובר למארח, מדיה האחסון תופיע כמחוברת.
מנהלי התקנים של אחסון מסוג MSC של התקני USB
התקן USB מסוג MSC Class זקוק לדרייבר אחסון כדי לתקשר עם אמצעי אחסון. נכון לעכשיו, Silicon Labs אינה מציעה דרייברים.

זכויות יוצרים © 2025 Silicon Laboratories. כל הזכויות שמורות.

49/174

מֵעַלview
TPY aa מנהל ההתקן בעל בינה מלאכותית מוגדר על ידי typedef sl_usbd_msc_scsi_lun_api_t. יש לכלול את קובץ ה-sl_usbd_msc_scsi_lun_api_t שלך כדי לבצע את ה-sl_usbd_msc_scsi_lun_info_t שלך, באמצעות ארגומנט זה בעת הוספת יחידה לוגית עם sl_usbd_msc_scsi_lun_add(). עיין בסעיף API MSC SCSI של התקן USB לפרטים נוספים על המבנים. יישום מנהל ההתקן של האחסון יכול להיות פשוט כמו מערך של סקטורים ב-RAM. גודל סקטור טיפוסי (כלומר, גודל בלוק) הוא 512 עבור התקני אחסון בנפח גדול, ו-2048 עבור תקליטורים.

זכויות יוצרים © 2025 Silicon Laboratories. כל הזכויות שמורות.

50/174

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

בצד של מערכת ההפעלה Windows, היישום מתקשר עם התקן הספק באמצעות אינטראקציה עם ספריית USB. ספריות, כמו libusb, מציעות ממשק API לניהול התקן וה-Pipes הקשורים אליו, ולתקשורת עם ההתקן באמצעות נקודות קצה של בקרה, שיתוף בכמות גדולה והעברת פסיקות.
בצד המכשיר, מחלקת הספק מורכבת מנקודות הקצה הבאות:
זוג נקודות קצה של בקרה מסוג IN ו-OUT הנקראות נקודת הקצה ברירת מחדל. זוג נקודות קצה של IN ו-OUT בכמות גדולה.

זכויות יוצרים © 2025 Silicon Laboratories. כל הזכויות שמורות.

51/174

מֵעַלview

זוג נקודות קצה IN ו- OUT של הפרעות. זוג זה אופציונלי. הטבלה שלהלן מציינת את השימוש בנקודות הקצה השונות:
טבלה – שימוש בנקודות קצה של מחלקת ספקים

כיוון נקודת הקצה

שליטה ב-IN
לִשְׁלוֹט
הַחוּצָה
קבלה בכמות גדולה

התקן-למארח
מארח למכשיר
התקן-למארח

יציאה בכמות גדולה
פסיקה פנימה
לְהַפְרִיעַ
הַחוּצָה

מארח-להתקן
התקן-למארח
מארח-להתקן

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

יישום המכשיר יכול להשתמש בנקודות קצה בכמות גדולה ובנקודות פסיקה כדי לשלוח או לקבל נתונים אל המארח או ממנו. הוא יכול להשתמש רק בנקודת הקצה המוגדרת כברירת מחדל כדי לפענח בקשות ספציפיות לספק שנשלחו על ידי המארח. הבקשות הסטנדרטיות מנוהלות באופן פנימי על ידי שכבת הליבה של התקן ה-USB של Silicon Labs.
צרכי משאבי מחלקת ספק התקני USB מליבה

בכל פעם שאתה מוסיף מופע של מחלקת ספק (vendor) לתצורה באמצעות הפונקציה 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
ראשית, כדי להשתמש במודול המחלקה Vendor של Silicon Labs USB device, יש להתאים את הגדרות זמן הקומפילציה של Vendor בהתאם לצורכי היישום שלכם. הן מקובצות מחדש בתוך הכותרת sl_usbd_core_config.h. file תחת סעיף ספק. מטרת תצורות הכמות היא ליידע את מודול התקן ה-USB כמה אובייקטי ספק USB להקצות.
הטבלה שלהלן מתארת ​​כל הגדרת תצורה.

זכויות יוצרים © 2025 Silicon Laboratories. כל הזכויות שמורות.

52/174

מֵעַלview

טבלה – הגדרות תצורה של ספק התקן USB

שם תצורה

תֵאוּר

ערך ברירת מחדל

SL_USBD_VENDOR_CLASS_INSTANCE_QUANTITY מספר מופעי המחלקה שתקצה באמצעות קריאה לפונקציה 2 sl_usbd_vendor_create_instance().

SL_USBD_VENDOR_CONFIGURATION_QUANTITY מספר תצורות. ניתן להוסיף מופעי מחלקה של ספק לתצורה אחת או יותר באמצעות קריאה לפונקציה sl_usbd_vendor_add_to_configuration().

תצורות מופע של מחלקת ספק התקן USB

סעיף זה מגדיר את התצורות הקשורות למופעי מחלקת Vendor.
יצירת מופע מחלקה intr_en interval p_vendor_callbacks
יצירת מופע מחלקה

יצירת מופע של מחלקה Vendor מתבצעת על ידי קריאה לפונקציה sl_usbd_vendor_create_instance() , אשר מקבלת שלושה ארגומנטים של תצורה המתוארים להלן.

intr_en
ערך בוליאני המציין אם יש להוסיף זוג נקודות קצה של פסיקה או לא.

עֵרֶך
נכון שקר

תֵאוּר
זוג נקודות קצה IN/OUT יתווספו ויהיו זמינים ליישום המוטמע. לא יתווספו נקודות קצה של פסיקה. רק זוג נקודות קצה Bulk IN/OUT יהיה זמין.

הַפסָקָה
אם תגדיר את intr_en ל-true, תוכל לציין את מרווח השאלות של נקודות הקצה של הפסיקה (במילישניות). אם תגדיר את intr_en ל-false, תוכל להגדיר את interval ל-0 מכיוון שהוא יתעלם מהמחלקה.
p_vendor_callbacks
p_vendor_callbacks הוא מצביע למשתנה מבנה של פונקציות callback, שניתן לציין לטיפול בבקשות בקרה ספציפיות למחלקה. אם אינך משתמש בבקשות ספציפיות למחלקה או שאתה צריך להפעיל/להשבית התראות, תוכל להגדיר זאת ל-NULL.
האקסיתampהפקודה שלהלן מספקת את החתימה הצפויה של מטפל הבקשות הספציפי למחלקה שלך.
Example – חתימה של פונקציית בקשה ספציפית למחלקה

void app_usbd_vendor_req_handle(uint8_t)

מספר_מחלקה, (1)

‏const sl_usbd_setup_req_t *p_setup_req); (2)

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

(1) מספר מופע של מחלקת ספק.

זכויות יוצרים © 2025 Silicon Laboratories. כל הזכויות שמורות.

53/174

מֵעַלview

(2) מצביע לבקשת הגדרה שהתקבלה מהמארח.
מדריך תכנות של ספק התקני USB
סעיף זה מסביר כיצד להשתמש במחלקה Vendor. אתחול מחלקת ספק התקן USB הוספת מופע של מחלקת ספק התקן USB להתקן שלך תקשורת באמצעות מחלקת ספק התקן USB
אתחול מחלקת ספק התקן ה-USB
כדי להוסיף פונקציונליות של מחלקת ספקים למכשיר שלך, אתחל תחילה את המחלקה על ידי קריאה לפונקציה USBD_Vendor_Init(). הפונקציה exampהתמונה למטה מראה כיצד לקרוא לפונקציה sl_usbd_vendor_init().
Example – קריאה ל- sl_usbd_vendor_init()

סטטוס sl_status_t;
status = sl_usbd_vendor_init(); if (status !SL_STATUS_OK) { /* אירעה שגיאה. יש להוסיף כאן את הטיפול בשגיאות. */ }
הוספת מופע מחלקה של ספק התקן USB למכשיר שלך
כדי להוסיף פונקציונליות של מחלקת ספק (vendor class) למכשיר שלך, עליך תחילה ליצור מופע (instance), ולאחר מכן להוסיף אותו לתצורה (או תצורות) של המכשיר שלך.
יצירת מופע של מחלקת ספק הוספת מופע מחלקת הספק לתצורה/ות של המכשיר שלך
יצירת מופע של מחלקת ספקים
צור מופע של מחלקה Vendor על ידי קריאה לפונקציה sl_usbd_vendor_create_instance(). הדוגמהampההוראות שלהלן מציגות כיצד לקרוא לפונקציה sl_usbd_vendor_create_instance() באמצעות ארגומנטים המוגדרים כברירת מחדל. למידע נוסף על ארגומנטי התצורה שיש להעביר לפונקציה sl_usbd_vendor_create_instance(), ראו תצורות מופע מחלקה של ספקי התקני USB.
Example – קריאה לפונקציה sl_usbd_vendor_create_instance()

uint8_t class_nbr; sl_status_t סטטוס;

סטטוס = sl_usbd_vendor_create_instance(שקר,

(1)

0u,

(2)

app_usbd_vendor_callback_functions, (3)

&class_nbr);

אם (סטטוס ! SL_STATUS_OK) {

/* אירעה שגיאה. יש להוסיף כאן את הטיפול בשגיאות. */

}

(1) אין נקודות קצה של פסיקה עם מופע מחלקה זה. (2) מרווח זמן מתעלם מכיוון שנקודות קצה של פסיקה מושבתות.

זכויות יוצרים © 2025 Silicon Laboratories. כל הזכויות שמורות.

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(class_nbr,

(1)

config_nbr_fs);

(2)

אם (סטטוס ! SL_STATUS_OK) {

/* אירעה שגיאה. יש להוסיף כאן את הטיפול בשגיאות. */

}

(1) מספר מחלקה להוספה לתצורה המוחזרת על ידי sl_usbd_vendor_create_instance(). (2) מספר תצורה (כאן הוספתו לתצורה במהירות מלאה).
תקשורת באמצעות מחלקת ספק התקן USB
תקשורת סינכרונית כללית תקשורת אסינכרונית בקשת ספק כללי המחלקה Vendor מציעה את הפונקציות הבאות לתקשורת עם המארח. לפרטים נוספים על פרמטרי הפונקציה, ראה API של ספק התקני USB.
טבלה – סיכום API של תקשורת ספקים

שם הפונקציה
sl_usb d _v e nd o r_ read ad _b ulk_sy nc() sl_usb d _v e nd o r_ write _b ulk_sy nc() sl_usb d _v e nd o r_ read ad _b ulk_asy nc() sl_usb d _v e nd o r_ write _b ulk_asy nc() sl_usb d _v e nd o r_ read ad _inter rrup t_sy nc() sl_usb d _v e nd o r_ write _inter rrup t_sy nc() sl_usb d _v e nd o r_ read ad _inter rrup t_asy nc
()
sl_usb d _v e nd o r_write _inte rrup t_asy nc
()

פעולה מקבלת נתונים ממארח ​​דרך נקודת קצה bulk OUT. פונקציה זו חוסמת. שולחת נתונים למארח דרך נקודת קצה bulk IN. פונקציה זו חוסמת. מקבלת נתונים ממארח ​​דרך נקודת קצה bulk OUT. פונקציה זו אינה חוסמת. שולחת נתונים למארח דרך נקודת קצה bulk IN. פונקציה זו אינה חוסמת. מקבלת נתונים ממארח ​​דרך נקודת קצה interrupt OUT. פונקציה זו חוסמת. שולחת נתונים למארח דרך נקודת קצה interrupt IN. פונקציה זו חוסמת. מקבלת נתונים ממארח ​​דרך נקודת קצה interrupt OUT. פונקציה זו אינה-
חסימה.
שולח נתונים למארח דרך נקודת הקצה של interrupt IN. פונקציה זו אינה חסימה.

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

זכויות יוצרים © 2025 Silicon Laboratories. כל הזכויות שמורות.

55/174

מֵעַלview

תקשורת סינכרונית פירושה שההעברה נחסמת. כאשר פונקציה נקראת, היישום נחסם עד שההעברה מושלמת עם או בלי שגיאה. ניתן לציין פסק זמן כדי למנוע המתנה לנצח. הדוגמהampהתמונה למטה מציגה מערכת קריאה וכתיבה שמקבלת נתונים מהמארח באמצעות נקודת הקצה bulk OUT ושולחת נתונים למארח באמצעות נקודת הקצה bulk IN.
Example – קריאה וכתיבה סינכרוניים בכמות גדולה

__ALIGNED(4) uint8_t rx_buf[2];

__ALIGNED(4) uint8_t tx_buf[2];

uint32_t

xfer_len;

sl_status_t

סטָטוּס;

סטטוס = sl_usbd_vendor_read_bulk_sync(class_nbr,

(1)

(void *)&rx_buf[0],

(2)

2u,

0u,

(3)

&xfer_len);

אם (סטטוס ! SL_STATUS_OK) {

/* $$$$ טפלו בשגיאה. */

}

סטטוס = sl_usbd_vendor_write_bulk_sync(class_nbr,

(1)

(void *)&tx_buf[0],

(4)

2u,

0u,

(3)

שֶׁקֶר,

(5)

&xfer_len);

אם (סטטוס ! SL_STATUS_OK) {

/* $$$$ טפלו בשגיאה. */

}

(1) מספר מופע המחלקה שנוצר באמצעות sl_usbd_vendor_create_instance() מספק הפניה פנימית למחלקה Vendor כדי לנתב את ההעברה לנקודת הקצה המתאימה של OUT או IN בכמות גדולה.
(2) על היישום לוודא שהמאגר המסופק לפונקציה גדול מספיק כדי להכיל את כל הנתונים. אחרת, עלולות להתרחש בעיות סנכרון.
(3) על מנת להימנע ממצב של חסימה אינסופית, ניתן לציין פסק זמן המבוטא במילישניות. ערך של 809 גורם למשימת היישום להמתין לנצח.
(4) היישום מספק את מאגר השידור המאותחל.
(5) אם דגל זה מוגדר כ-true, ואורך ההעברה הוא כפולה מגודל החבילה המרבי של נקודת הקצה, מחסנית ההתקנים תשלח חבילה באורך אפס למארח כדי לאותת על סיום ההעברה.
השימוש בפונקציות תקשורת נקודות קצה עם פסיקות, sl_usbd_vendor_read_interrupt_sync() ו-sl_usbd_vendor_write_interrupt_sync(), דומה לפונקציות תקשורת נקודות קצה בכמות גדולה המוצגות בדוגמהample – קריאה וכתיבה סינכרוניים בכמות גדולה.
תקשורת אסינכרונית
תקשורת אסינכרונית פירושה שההעברה אינה חסומה. כאשר פונקציה נקראת, היישום מעבירה את מידע ההעברה למחסנית ההתקנים ואינה חוסמת. עיבודי יישום אחרים יכולים להתבצע בזמן שההעברה מתבצעת דרך אפיק ה-USB. לאחר השלמת ההעברה, פונקציית callback נקראת על ידי מחסנית ההתקנים כדי ליידע את היישום על השלמת ההעברה.ampההוראות למטה מציגות קריאה וכתיבה אסינכרוניות.
Example – קריאה וכתיבה אסינכרוניים בכמות גדולה

זכויות יוצרים © 2025 Silicon Laboratories. כל הזכויות שמורות.

56/174

מֵעַלview

חלל app_usbd_vendor_comm (uint8_t class_nbr)

{

__ALIGNED(4) uint8_t rx_buf[2];

__ALIGNED(4) uint8_t tx_buf[2];

sl_status_t

סטָטוּס;

סטטוס = sl_usbd_vendor_read_bulk_async(class_nbr,

(void *)&rx_buf[0],

(2)

2u,

app_usbd_vendor_rx_completed,

בָּטֵל);

(4)

אם (סטטוס ! SL_STATUS_OK) {

/* $$$$ טפלו בשגיאה. */

}

סטטוס = sl_usbd_vendor_write_bulk_async(class_nbr,

(void *)&tx_buf[0],

(5)

2u,

app_usbd_vendor_tx_completed,

ריק

(4)

שֶׁקֶר);

(6)

אם (סטטוס ! SL_STATUS_OK) {

/* $$$$ טפלו בשגיאה. */

}

}

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

חלל סטטי app_usbd_vendor_rx_completed (uint8_t class_nbr,

(3)

חלל *p_buf,

uint32_t buf_len,

uint32_t xfer_len,

חלל *p_callback_arg,

סטטוס sl_status_t)

{

אם (סטטוס ! SL_STATUS_OK) {

/* $$$$ בצע קצת עיבוד. */

} אחר {

/* $$$$ טפלו בשגיאה. */

}

}

חלל סטטי app_usbd_vendor_tx_completed(uint8_t class_nbr,

(3)

חלל *p_buf,

uint32_t buf_len,

uint32_t xfer_len,

חלל *p_callback_arg,

סטטוס sl_status_t)

{

אם (סטטוס ! SL_STATUS_OK) {

/* $$$$ בצע קצת עיבוד. */

} אחר {

/* $$$$ טפלו בשגיאה. */

}

}

(1) מספר מופע המחלקה מספק הפניה פנימית למחלקת הספק כדי לנתב את ההעברה לנקודת הקצה המתאימה של OUT או IN. (2) על היישום לוודא שהמאגר המסופק גדול מספיק כדי להכיל את כל הנתונים. אחרת, עלולות להיות בעיות סנכרון. (3) היישום מספק מצביע פונקציית callback המועבר כפרמטר. עם השלמת ההעברה, מחסנית ההתקנים קוראת לפונקציית callback זו כדי שהיישום יוכל לסיים את ההעברה על ידי ניתוח תוצאת ההעברה. לדוגמה, עם השלמת פעולת קריאה, היישום עשוי לבצע עיבוד על הנתונים שהתקבלו. עם השלמת הכתיבה, היישום יכול לציין אם הכתיבה הצליחה וכמה בתים נשלחו.

זכויות יוצרים © 2025 Silicon Laboratories. כל הזכויות שמורות.

57/174

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

זכויות יוצרים © 2025 Silicon Laboratories. כל הזכויות שמורות.

58/174

מֵעַלview

#הגדר APP_VENDOR_REQ_NO_DATA

0x01u

#הגדר APP_VENDOR_REQ_RECEIVE_DATA_FROM_HOST 0x02u

#הגדר APP_VENDOR_REQ_SEND_DATA_TO_HOST 0x03u

#הגדר APP_VENDOR_REQ_DATA_BUF_SIZE

50u

uint8_t סטטי app_vendor_req_buf[APP_VENDOR_REQ_DATA_BUF_SIZE];

קובץ bool סטטי app_usbd_vendor_req (uint8_t)

מספר_מחלקה,

(const sl_usbd_setup_req_t *p_setup_req)

(1)

{

בול תקף;

סטטוס sl_status_t;

uint16_t req_len;

uint32_t xfer_len;

מספר_מחלקה (void);

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

(2) (3)

מקרה APP_VENDOR_REQ_RECEIVE_DATA_FROM_HOST:

(4)

req_len = p_setup_req->wLength;

אם (req_len > APP_VENDOR_REQ_DATA_BUF_SIZE) {

// אין מספיק מקום לקבלת נתונים.

החזרה (שקר);

}

// קבלת נתונים דרך Control OUT EP. // המתנה לנצח עד להשלמת ההעברה. status = sl_usbd_core_read_control_sync((void *)&app_vendor_req_buf[0u],
req_len, 0u, &xfer_len); אם (status !SL_STATUS_OK) { valid = false; } אחרת { valid = true; } break; } Req_len: } * ...

מקרה APP_VENDOR_REQ_SEND_DATA_TO_HOST:

(5)

req_len = APP_VENDOR_REQ_DATA_BUF_SIZE;

// מילוי buf בתבנית. Mem_Set((void *)&AppVendorReqBuf[0u],
'א',
req_len);

// שלח נתונים דרך Control IN EP. // המתן לנצח עד להשלמת ההעברה. status = sl_usbd_core_write_control_sync((void *)&app_vendor_req_buf[0u],
req_len, 0u, false, &xfer_len); אם (מצב SL_STATUS_OK) { valid = DEF_FAIL; } אחרת { valid = DEF_OK; } הפסקה;

בְּרִירַת מֶחדָל:

(6)

// הבקשה אינה נתמכת.

זכויות יוצרים © 2025 Silicon Laboratories. כל הזכויות שמורות.

59/174

מֵעַלview

תקף = נכון; שבירה;
case APP_VENDOR_REQ_RECEIVE_DATA_FROM_HOST:(4) req_len = p_setup_req->wLength;if(req_len > APP_VENDOR_REQ_DATA_BUF_SIZE){// אין מספיק מקום לקבלת data.return(false);}// קבלת נתונים דרך Control OUT EP.// המתנה להשלמת ההעברה לנצח. status =sl_usbd_core_read_control_sync((void *)&app_vendor_req_buf[0u],
req_len,0u,&xfer_len);if(status !SL_STATUS_OK){ valid =false;}else{ valid =true;}break;} אם(status !SL_STATUS_OK){ valid =false;} אחרת{ valid =true;} הפסקה;
מקרה 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);// שלח נתונים דרך Control IN 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){ תקין = DEF_FAIL;}אחרת{ תקין = DEF_OK;}break;} Req_len: }אם(מצב SL_STATUS_OK){ תקין = DEF_FAIL;}אחרת{ תקין = DEF_OK;} הפסקה;
ברירת מחדל:(6) // הבקשה אינה נתמכת. valid = DEF_FAIL;break;}return(valid);}

(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; /* אורך העברה אם הנתוניםtagהווה.

*/

} sl_usbd_setup_req_t;

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

זכויות יוצרים © 2025 Silicon Laboratories. כל הזכויות שמורות.

60/174

תיעוד API
תיעוד API
תיעוד API
רשימת מודולים
API של התקן USB, API של התקן USB, ACM API של התקן USB, API של CDC, API של ליבת התקן USB, API של HID של התקן USB, API של MSC של התקן USB, API של MSC SCSI של התקן USB, API של ספק התקן USB

תֵאוּר
API של התקן USB, API של התקן USB, ACM API של התקן USB, API של CDC, API של ליבת התקן USB, API של HID של התקן USB, API של MSC של התקן USB, API של MSC SCSI של התקן USB, API של ספק התקן USB

זכויות יוצרים © 2025 Silicon Laboratories. כל הזכויות שמורות.

61/174

ממשק API של התקן USB
ממשק API של התקן USB
ממשק API של התקן USB
API של התקן USB.
מודולים
התקן USB ACM API התקן USB CDC API התקן USB Core API התקן USB HID API התקן USB MSC API התקן USB MSC SCSI API ספק התקן USB

זכויות יוצרים © 2025 Silicon Laboratories. כל הזכויות שמורות.

62/174

ממשק API של ACM להתקני USB

ממשק API של ACM להתקני USB

ממשק API של ACM להתקני USB

API של CDC ACM של התקן USB.
מודולים
sl_usbd_cdc_ cm_line_coding_t sl_usbd_cdc_acm_callbacks_t
פונקציות

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

sl_usbd_cdc_ cm_init(void)
משתנים גלובליים.
ssll__uussbbdd__ccddcc__aaccmm__ccraellabtaec_kins_stta*npc_ea(cumin_tc1a6l_lbtalicnkes_,sutaintte8__int t*eprv_saul,bucinlats1s6__nt bcra)ll_mgmt_capabilities,
הוסף מופע חדש של תת-המחלקה של אמולציה טורית CDC ACM.
aaaa sl_usbd_cdc_ cm_ dd_to_configuration(uint8_t subcl ss_nbr, uint8_t config_nbr)
הוסף מופע מחלקה של תת-מחלקה של CDC ACM לתצורת התקן USB.
aa sl_usbd_cdc_ cm_is_en דימם (uint8_t subclass_nbr, bool *p_enabled)
קבל את מצב ההפעלה של תת-מחלקת האמולציה הטורית של CDC ACM.
aaa sl_usbd_cdc_ cm_re d(uint8_t subcl ss_nbr, uint8_t *p_buf, uint32_t buf_len, uint16_t timeout, uint32_t
*p_xfer_len) קבל נתונים על תת-המחלקה של אמולציה טורית של 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 subcl ss_nbr, uint8_t *p_buf, uint32_t buf_len, uint16_t timeout, 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 subcl ss_nbr, uint8_t *p_line_ctrl)
החזר את מצב קווי הבקרה.
aaa sl_usbd_cdc_ cm_get_line_coding(uint8_t subcl ss_nbr, sl_usbd_cdc_ cm_line_coding_t *p_line_coding)
קבל את המצב הנוכחי של קידוד הקווים.
aaa sl_usbd_cdc_ cm_set_line_coding(uint8_t subcl ss_nbr, sl_usbd_cdc_ cm_line_coding_t *p_line_coding)
הגדר קידוד שורה חדש.
aaa sl_usbd_cdc_ cm_set_line_st te_event(uint8_t subcl ss_nbr, uint8_t events)
הגדר אירוע/אירועים של מצב שורה.
aaaa sl_usbd_cdc_ cm_cle r_line_st te_event(uint8_t subcl ss_nbr, uint8_t events)
נקה אירוע/אירועי מצב שורה.

זכויות יוצרים © 2025 Silicon Laboratories. כל הזכויות שמורות.

63/174

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

64/174

ממשק API של ACM להתקני USB

סוּג
בָּטֵל

כיוון לא רלוונטי

שם הארגומנט

פקודות מאקרו, קבועים גלובליים, אבות טיפוס של פונקציות, פונקציות CDC ACM

אתחול תת-המחלקה של האמולציה הטורית CDC ACM.
מחזיר

מחזירה קוד SL_STATUS_OK במקרה של הצלחה או קוד SL_STATUS אחר במקרה של כישלון.

תֵאוּר

sl_usbd_cdc_acm_create_instance

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

הוסף מופע חדש של תת-המחלקה של אמולציה טורית CDC ACM.
פרמטרים

סוּג
uint16_t
uint16_t

שם ארגומנט הכיוון

תֵאוּר

לא

line_state_interval מרווח התראות על מצב הקו במילישניות (הערך חייב להיות

תהיה חזקה של 2).

לא

call_mgmt_capabilities מפת סיביות של יכולות ניהול שיחות. OR'ed של ה-

הדגלים הבאים:

המכשיר SL_USBD_CDC_ACM_CALL_MGMT_DEV מטפל בניהול השיחות בעצמו. SL_USBD_CDC_ACM_CALL_MGMT_DATA_CCI_DCI המכשיר יכול לשלוח/לקבל מידע על ניהול שיחות דרך ממשק Data Class.

sl_usbd_cdc_acm_callbacks_t לא רלוונטי
*

uint8_t *

לא

p_acm_callbacks p_subclass_nbr

מצביעים אופציונליים לפונקציות קריאה חוזרת (callback) שיש לקרוא להן באירועים שונים.
פרמטר למשתנה שיקבל מספר מופע של תת-מחלקת אמולציה סדרתית של 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 subclass_nbr, uint8_t config_nbr)

הוסף מופע מחלקה של תת-מחלקה של CDC ACM לתצורת התקן USB.
פרמטרים

סוּג
uint8_t uint8_t

כיוון לא זמין/לא רלוונטי

שם הארגומנט
מספר_תת_מחלקה

תיאור מספר מופע של תת-מחלקת אמולציה טורית של CDC ACM. אינדקס תצורה להוספת ממשק מחלקת בדיקה חדש.

מחזיר

זכויות יוצרים © 2025 Silicon Laboratories. כל הזכויות שמורות.

65/174

ממשק API של ACM להתקני USB
מחזירה קוד SL_STATUS_OK במקרה של הצלחה או קוד SL_STATUS אחר במקרה של כישלון.

sl_usbd_cdc_acm_is_enabled

sl_status_t sl_usbd_cdc_acm_is_enabled (uint8_t subclass_nbr, bool * p_enabled)

קבל את מצב ההפעלה של תת-מחלקת האמולציה הטורית של CDC ACM.
פרמטרים

סוּג

כיוון

שם הארגומנט

תֵאוּר

uint8_t לא רלוונטי

מספר מופע של תת-מחלקה של אמולציה טורית של CDC ACM.

בול * לא רלוונטי

p_enabled

ערך בוליאני למשתנה שיקבל סטטוס הפעלה. המשתנה מוגדר כ-true, אמולציית סדרתית של CDC ACM מופעלת. הערך

מסמכים / משאבים

ערימת התקני USB של SILICON LABS [pdfמדריך הוראות
ערימת התקני USB, ערימת התקנים, ערימת

הפניות

השאר תגובה

כתובת האימייל שלך לא תפורסם. שדות חובה מסומנים *