Στοίβα συσκευών USB της SILICON LABS

Προδιαγραφές

  • Έκδοση USB: 1.5.1
  • Ημερομηνία κυκλοφορίας: 21 Ιουλίου 2025
  • Έκδοση SDK Simplicity: 2025.6.1

Προϊόν Πάνωview

Η στοίβα συσκευών USB της Silicon Labs παρέχει ευέλικτη και εύχρηστη συνδεσιμότητα USB για έργα IoT, διευκολύνοντας την επικοινωνία μεταξύ συνεπεξεργαστών δικτύου και κεντρικών υπολογιστών.

Χαρακτηριστικά

  • Αποδοτική στοίβα συσκευών USB
  • Ιδανικό για έργα IoT
  • Υποστήριξη επικοινωνίας μεταξύ συνεπεξεργαστών δικτύου και κεντρικών υπολογιστών

Ρύθμιση παραμέτρων συσκευής USB

Διαμορφώστε τις ρυθμίσεις της συσκευής USB σύμφωνα με τις απαιτήσεις του έργου σας, ανατρέχοντας στην ενότητα Διαμόρφωση συσκευής USB στην τεκμηρίωση.

Οδηγός προγραμματισμού συσκευής USB
Ακολουθήστε τον Οδηγό Προγραμματισμού Συσκευής USB για να κατανοήσετε πώς να προγραμματίζετε και να αλληλεπιδράτε με τη συσκευή USB για διάφορες εφαρμογές.

Κατηγορίες συσκευών USB
Η ενότητα Κλάσεις συσκευών USB παρέχει μια επιπλέονview διαφορετικών κλάσεων όπως CDC ACM, HID, MSC SCSI και Vendor Class. Επιλέξτε την κατάλληλη κλάση με βάση τη λειτουργικότητα της συσκευής σας.

Αντιμετώπιση προβλημάτων συσκευής USB
Εάν αντιμετωπίσετε οποιοδήποτε πρόβλημα με τη συσκευή USB, ανατρέξτε στην ενότητα Αντιμετώπιση προβλημάτων συσκευής USB για λύσεις και συμβουλές εντοπισμού σφαλμάτων.

Σημειώσεις έκδοσης USB
Προδιαγραφές και χαρακτηριστικάview
Ρύθμιση παραμέτρων συσκευής USB μέσωview
Οδηγός προγραμματισμού συσκευής USBview
Κλάσεις συσκευών USB πάνω απόview CDC ACM Κλάση Overview Κλάση HID Overview MSC SCSI Κλάση Overview Κλάση προμηθευτή πάνω απόview


Τεκμηρίωση API USB API Συσκευής USB ACM Συσκευής USB a sl_usbd_cdc_ cm_line_coding_t sl_usbd_cdc_acm_callbacks_t CDC Συσκευής USB API a sl_usbd_cdc_subcl ss_driver_t Πυρήνας Συσκευής USB API
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 είναι μια από τις πιο επιτυχημένες διεπαφές επικοινωνίας στην ιστορία των συστημάτων υπολογιστών και αποτελεί το de facto πρότυπο για τη σύνδεση περιφερειακών υπολογιστών. Η στοίβα συσκευών USB της Silicon Labs είναι μια μονάδα συσκευής USB σχεδιασμένη ειδικά για ενσωματωμένα συστήματα. Κατασκευασμένη από την αρχή με την ποιότητα, την επεκτασιμότητα και την αξιοπιστία της Silicon Labs, έχει περάσει από μια αυστηρή διαδικασία επικύρωσης για να συμμορφώνεται με την προδιαγραφή USB 2.0. Αυτή η τεκμηρίωση περιγράφει τον τρόπο αρχικοποίησης, εκκίνησης και χρήσης της στοίβας συσκευών USB της Silicon Labs. Εξηγεί τις διάφορες τιμές διαμόρφωσης και τις χρήσεις τους. Περιλαμβάνει επίσης μια επιπλέον...view της τεχνολογίας, τύποι δυνατοτήτων διαμόρφωσης, διαδικασίες υλοποίησης και, π.χ.ampΛιγότερα τυπικής χρήσης για κάθε διαθέσιμη κλάση.


Για να σας βοηθήσει να κατανοήσετε γρήγορα τις έννοιες του USB, η τεκμηρίωση περιλαμβάνει πολλά π.χ.ampλίρες USB με βασικές λειτουργίες. Αυτά τα π.χ.ampΤα les θα σας παρέχουν ένα πλαίσιο που σας επιτρέπει να κατασκευάζετε συσκευές γρήγορα. Αυτά τα π.χ.ampπεριλαμβάνουν:
Προσαρμογέας USB σε σειριακή θύρα (Κλάση συσκευών επικοινωνίας) Ποντίκι ή πληκτρολόγιο (Κλάση συσκευής ανθρώπινης διεπαφής) Αφαιρούμενη συσκευή αποθήκευσης (Κλάση μαζικής αποθήκευσης) Προσαρμοσμένη συσκευή (Κλάση προμηθευτή)
Το παρακάτω είναι το τέλοςview των ενοτήτων τεκμηρίωσης:
Προδιαγραφές και χαρακτηριστικά Διαμόρφωση συσκευής USB Οδηγός προγραμματισμού συσκευής USB Κατηγορίες συσκευών USB
Κλάση CDC ACM Κλάση HID Κλάση MSC SCSI Κλάση προμηθευτή Συσκευή USB Αντιμετώπιση προβλημάτων Λειτουργικό σύστημα Microsoft Windows USB Host

Πνευματικά δικαιώματα © 2025 Silicon Laboratories. Με την επιφύλαξη παντός δικαιώματος.

3/174

USB
USB

Έκδοση USB 1.5.1 21 Ιουλίου 2025 – Σημειώσεις έκδοσης
Έκδοση 2025.6.1 του Simplicity SDK
Η αποτελεσματική στοίβα συσκευών USB της Silicon Labs προσφέρει ευέλικτη και εύχρηστη συνδεσιμότητα USB, ιδανική για έργα IoT, συμπεριλαμβανομένης της επικοινωνίας μεταξύ συνεπεξεργαστών δικτύου και κεντρικών υπολογιστών. Κάντε κλικ εδώ για προηγούμενες εκδόσεις.
Περίληψη έκδοσης
Βασικά Χαρακτηριστικά | Αλλαγές API | Διορθώσεις Σφαλμάτων | Ενεργοποίηση Τσιπ
Βασικά Χαρακτηριστικά
Μόνο οι υποκείμενες αλλαγές πλατφόρμας.
Αλλαγές API
Κανένας.
Διορθώσεις σφαλμάτων
Κανένας.
Ενεργοποίηση τσιπ
Κανένας.
Βασικά Χαρακτηριστικά
Νέες δυνατότητες | Βελτιώσεις | Αφαιρεμένες δυνατότητες | Καταργημένες δυνατότητες
Νέα χαρακτηριστικά
Κανένας.
Βελτιώσεις
Μόνο οι υποκείμενες αλλαγές πλατφόρμας.
Αφαιρέθηκαν χαρακτηριστικά
Κανένας.
Καταργημένες δυνατότητες
Κανένας.
Αλλαγές API
Νέα API | Τροποποιημένα API | Καταργημένα API | Καταργημένα API
Νέα API

Πνευματικά δικαιώματα © 2025 Silicon Laboratories. Με την επιφύλαξη παντός δικαιώματος.

4/174

USB
Κανένας.
Τροποποιημένα API
Κανένας.
Αφαιρέθηκαν API
Κανένας.
Απαρχαιωμένα API
Κανένας.
Διορθώσεις σφαλμάτων
Κανένας.
Ενεργοποίηση τσιπ
Κανένας.
Εφαρμογή Πχampοι Αλλαγές
Νέα Εξamples | Τροποποιημένο Examples | Αφαιρέθηκε Examples | Απαρχαιωμένο Examples
Νέα Εξamples
Κανένας.
Τροποποιημένο Πχamples
Κανένας.
Αφαιρέθηκε ο Examples
Κανένας.
Απαρχαιωμένο Πρώηνamples
Κανένας.
Επιπτώσεις των Αλλαγών στην Έκδοση
Δηλώσεις Επιπτώσεων | Οδηγός Μετεγκατάστασης
Δηλώσεις Επιπτώσεων
Κανένας.
Οδηγός Μετανάστευσης
Κανένας.
Γνωστά Θέματα και Περιορισμοί
Κανένας.
Χρήση αυτής της έκδοσης

Πνευματικά δικαιώματα © 2025 Silicon Laboratories. Με την επιφύλαξη παντός δικαιώματος.

5/174

USB

Τι περιέχει η έκδοση; | Συμβατό λογισμικό | Εγκατάσταση και χρήση | Βοήθεια και σχόλια

Τι υπάρχει στην Έκδοση;

Εφαρμογή στοίβας συσκευών USB Examples
Συμβατό λογισμικό

Λογισμικό
Simplicity SDK Simplicity Studio Simplicity Commander GCC Η Συλλογή Μεταγλωττιστών GNU) Ενσωματωμένος πάγκος εργασίας IAR για ARM IAR EWARM

Συμβατή έκδοση ή παραλλαγή
2025.6.0 5.11.0 1.18.2 (παρέχεται με το Simplicity Studio) 12.2.1 (παρέχεται με το Simplicity Studio) 9.40.1 (παρέχεται με το Simplicity Studio)

Εγκατάσταση και χρήση

Για να ξεκινήσετε την ανάπτυξή σας, δείτε τα εξής:
Οδηγός προγραμματισμού συσκευής USB. Τεκμηρίωση API.
Για πληροφορίες σχετικά με την Ενοποίηση Ασφαλούς Θησαυροφυλάκιου, ανατρέξτε στην ενότητα Ασφαλές Θησαυροφυλάκιο.
Να εκ νέουview Ειδοποιήσεις συμβουλών ασφαλείας και λογισμικού και διαχείριση των προτιμήσεών σας για ειδοποιήσεις:
ò Μεταβείτε στη διεύθυνση https://community.silabs.com/. ó Συνδεθείτε με τα διαπιστευτήρια του λογαριασμού σας. ô Κάντε κλικ στον επαγγελματία σαςfile εικονίδιο στην επάνω δεξιά γωνία της σελίδας.
õ Επιλέξτε Ειδοποιήσεις από το αναπτυσσόμενο μενού. ö Στην ενότητα Ειδοποιήσεις, μεταβείτε στην καρτέλα Ειδοποιήσεις προϊόντος για ναview Ιστορική Συμβουλευτική Ασφάλειας και Λογισμικού
ειδοποιήσεις
÷ Για να διαχειριστείτε τις προτιμήσεις σας, χρησιμοποιήστε την καρτέλα Διαχείριση ειδοποιήσεων για να προσαρμόσετε ποιες ενημερώσεις προϊόντων και συμβουλές θέλετε
λαμβάνω.
Για τις συνιστώμενες ρυθμίσεις διαμόρφωσης, δείτε εδώ.
Για να μάθετε περισσότερα σχετικά με το λογισμικό αυτής της έκδοσης, ανατρέξτε στην ηλεκτρονική μας τεκμηρίωση.
Βοήθεια και σχόλια

Επικοινωνήστε με την υποστήριξη της Silicon Labs. Για να χρησιμοποιήσετε το εργαλείο μας "Ρωτήστε την Τεχνητή Νοημοσύνη" για να λάβετε απαντήσεις, ανατρέξτε στο πεδίο αναζήτησης στο επάνω μέρος αυτής της σελίδας.

Σημείωση: Το Ask AI είναι πειραματικό.

Λάβετε βοήθεια από την κοινότητα προγραμματιστών μας.
Πολιτική έκδοσης και συντήρησης SDK
Δείτε την Πολιτική έκδοσης και συντήρησης του SDK μας.

Πνευματικά δικαιώματα © 2025 Silicon Laboratories. Με την επιφύλαξη παντός δικαιώματος.

6/174

Υπερview
Υπερview
Προδιαγραφές
Συμμορφώνεται με την «Έκδοση προδιαγραφών Universal Serial Bus 2.0» Υλοποιεί την «Ειδοποίηση Αλλαγής Μηχανικής Περιγραφέα Συσχέτισης Διεπαφής (ECN)» Τύποι μεταφοράς
Κλάσεις USB ελέγχου μαζικής διακοπής Κλάση συσκευής επικοινωνίας (CDC) Αφηρημένο μοντέλο ελέγχου (ACM) Συσκευή ανθρώπινης διεπαφής (HID) Κλάση μαζικής αποθήκευσης (MSC) Πλαίσιο κλάσης ειδικά για τον προμηθευτή
Χαρακτηριστικά
Επεκτάσιμο ώστε να περιλαμβάνει μόνο τις απαιτούμενες λειτουργίες για ελαχιστοποίηση του αποτυπώματος μνήμης Υποστηρίζει πλήρη ταχύτητα (12 Mbit/s) Υποστηρίζει σύνθετες (πολλαπλών λειτουργιών) συσκευές Υποστηρίζει συσκευές πολλαπλών ρυθμίσεων Υποστηρίζει λειτουργίες εξοικονόμησης ενέργειας USB (αναστολή και συνέχιση συσκευής) Πλήρης ενσωμάτωση της κλάσης μαζικής αποθήκευσης στο λειτουργικό σύστημα Micrium File Μονάδα συστήματος που αναπτύχθηκε με το επίπεδο αφαίρεσης CMSIS-RTOS2, ώστε να μπορεί να λειτουργεί με διαφορετικά λειτουργικά συστήματα. Το Silicon Labs GSDK διαθέτει θύρες 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.
Διαμόρφωση βασικών κλάσεων διαμόρφωσης
Διαμόρφωση πυρήνα
Πίνακας – Σταθερές διαμόρφωσης πυρήνα συσκευής USB

Περιγραφή σταθεράς

Προεπιλεγμένη τιμή

SL_USBD_TA SK_STACK_ ΜΕΓΕΘΟΣ

Ρυθμίζει το μέγεθος της στοίβας σε byte της βασικής εργασίας USBD

4096

SL_USBD_TA SK_PRIORIT Y

Ρυθμίζει την προτεραιότητα της βασικής εργασίας USBD. Αυτή είναι μια προτεραιότητα CMSIS-RTOS2.

osPriorityHigh

SL_USBD_A UTO_START _USB_DEVIC E

Εάν είναι ενεργοποιημένη, η συσκευή USB θα ξεκινήσει αυτόματα μόλις ξεκινήσει ο πυρήνας και προγραμματιστεί για πρώτη φορά 1 εργασία πυρήνα USBD. Εάν είναι απενεργοποιημένη, η εφαρμογή σας θα πρέπει να καλέσει την sl_usbd_core_start_device() όταν είναι έτοιμη να εντοπιστεί από τον κεντρικό υπολογιστή USB.

SL_USBD_C Ο συνολικός αριθμός διαμορφώσεων που θα προστεθούν μέσω της συνάρτησης sl_usbd_add_configuration()

1

Λειτουργία ONFIGURATI.

ON_QUANTI

TY

Πνευματικά δικαιώματα © 2025 Silicon Laboratories. Με την επιφύλαξη παντός δικαιώματος.

8/174

Υπερview

Συνεχής
SL_USBD _INTERF ACE_QU ANTITY
SL_USBD _ALT_INT ERFACE_ QUANTI
TY
SL_USBD _INTERF ACE_GR
OUP_QU
ΑΡΧΑΙΟΤΗΤΑ
SL_USBD _DESCRI
PTOR_Q
ΑΝΟΤΗΤΑ
SL_USBD _STRING _QUANTI
TY
SL_USBD _OPEN_E NDPOIN TS_QUA NTITY

Περιγραφή Ο συνολικός αριθμός διεπαφών USB που θα προστεθούν για όλες τις διαμορφώσεις σας. Αυτό εξαρτάται σε μεγάλο βαθμό από την/τις κλάση/ες που χρησιμοποιούνται. Για περισσότερες πληροφορίες σχετικά με το πόσες διεπαφές απαιτεί μια παρουσία κλάσης, ανατρέξτε στην ενότητα "Ανάγκες πόρων από τον πυρήνα" της/των κλάσης/ών σας.
Ο συνολικός αριθμός εναλλακτικών διεπαφών USB που θα προστεθούν για όλες τις διαμορφώσεις σας. Αυτό εξαρτάται σε μεγάλο βαθμό από την/τις κλάση/ες που χρησιμοποιούνται. Αυτή η τιμή πρέπει πάντα να είναι ίση ή μεγαλύτερη από την SL_USBD_INTERFACE_QUANTITY. Για περισσότερες πληροφορίες σχετικά με το πόσες εναλλακτικές διεπαφές απαιτεί μια παρουσία κλάσης, ανατρέξτε στην ενότητα "Ανάγκες πόρων από τον πυρήνα" της/των κλάσης/ών σας.
Ο συνολικός αριθμός ομάδων διεπαφής USB που θα προστεθούν για όλες τις διαμορφώσεις σας. Αυτό εξαρτάται σε μεγάλο βαθμό από την/τις κλάση/ες που χρησιμοποιούνται. Για περισσότερες πληροφορίες σχετικά με το πόσες ομάδες διεπαφής απαιτούν μια παρουσία κλάσης, ανατρέξτε στην ενότητα "Ανάγκες πόρων από τον πυρήνα" της/των κλάσης/ών σας.
Ο συνολικός αριθμός περιγραφέων τελικού σημείου που θα προστεθούν για όλες τις διαμορφώσεις σας. Αυτό εξαρτάται σε μεγάλο βαθμό από την/τις κλάση/ες που χρησιμοποιούνται. Για περισσότερες πληροφορίες σχετικά με τον αριθμό των περιγραφέων τελικού σημείου που απαιτεί μια παρουσία κλάσης, ανατρέξτε στην ενότητα "Αριθμός τελικών σημείων" στην ενότητα "Ανάγκες πόρων από τον πυρήνα" της/των κλάσης/ών σας. Σημειώστε ότι τα τελικά σημεία ελέγχου δεν χρειάζεται να ληφθούν υπόψη εδώ. Ο συνολικός αριθμός συμβολοσειρών USB. Η ρύθμιση της ποσότητας σε μηδέν θα απενεργοποιήσει τη λειτουργία. Η απενεργοποίηση αυτής της λειτουργίας θα έχει ως αποτέλεσμα η συσκευή να μην αποθηκεύει καμία συμβολοσειρά περιγραφής USB που διαβιβάζεται από την εφαρμογή. Αυτό σημαίνει ότι ο κεντρικός υπολογιστής δεν θα μπορεί να ανακτήσει τις συμβολοσειρές περιγραφής (όπως τον κατασκευαστή και το όνομα του προϊόντος). Ο συνολικός αριθμός ανοιχτών τελικών σημείων ανά διαμόρφωση. Μια συσκευή απαιτεί τουλάχιστον δύο ανοιχτά τελικά σημεία για μεταφορές ελέγχου, αλλά πρέπει επίσης να προσθέσετε τα τελικά σημεία της/των κλάσης/ών που χρησιμοποιούνται. Για περισσότερες πληροφορίες σχετικά με τον αριθμό των ανοιχτών τελικών σημείων που απαιτεί μια παρουσία κλάσης, ανατρέξτε στην ενότητα "Αριθμός τελικών σημείων" στην ενότητα "Ανάγκες πόρων από τον πυρήνα" της/των κλάσης/ών σας.

Προεπιλεγμένη τιμή
10 10
2
20 30 20

Διαμόρφωση κλάσεων
Οι κλάσεις έχουν συγκεκριμένες διαμορφώσεις χρόνου μεταγλώττισης. Ανατρέξτε στην ενότητα Κλάσεις συσκευών USB για περισσότερες πληροφορίες.
Διαμόρφωση πληροφοριών συσκευής USB

Η διαμόρφωση sl_usbd_device_config.h file αναομαδοποιεί το metabol-time #define-s για να ορίσει βασικές πληροφορίες σχετικά με τη συσκευή σας, όπως το αναγνωριστικό προμηθευτή/προϊόντος, τις συμβολοσειρές συσκευής κ.λπ. Ο παρακάτω πίνακας περιγράφει κάθε ορισμό διαμόρφωσης πληροφοριών που είναι διαθέσιμος σε αυτήν τη διαμόρφωση file.

Πίνακας – Ορισμοί διαμόρφωσης πληροφοριών συσκευής USB

Συνεχής
SL_USBD_DEVIC ΗΛΕΚΤΡΟΝΙΚΟΣ_ΠΡΟΜΗΘΕΥΤΗΣ_ID
SL_USBD_DEVIC E_PRODUCT_ID

Περιγραφή Ο αριθμός αναγνώρισης προμηθευτή σας, όπως παρέχεται από το USB Implementers Forum. Για περισσότερες πληροφορίες σχετικά με το πώς μπορείτε να αποκτήσετε ένα αναγνωριστικό προμηθευτή, ανατρέξτε στη διεύθυνση 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 Συμβολοσειρά που περιέχει τον σειριακό αριθμό της συσκευής σας. Αυτή η διαμόρφωση αγνοείται όταν το

NUMBER_STRING

Η διαμόρφωση SL_USBD_STRING_QUANTITY έχει οριστεί σε 0.

SL_USBD_DEVICE_LANGUA Αριθμός αναγνώρισης της γλώσσας των συμβολοσειρών της συσκευής σας. Πιθανές τιμές είναι:
GE_ID

– SL_USBD_LANG_ID_ΑΡΑΒΙΚΑ_ΣΑΟΥΔΙΚΗ_ΑΡΑΒΙΑ

– SL_USBD_LANG_ID_CHINESE_TAIWAN

– SL_USBD_LANG_ID_ENGLISH_US

– SL_USBD_LANG_ID_ENGLISH_UK

– SL_USBD_LANG_ID_ΓΑΛΛΙΚΑ

– SL_USBD_LANG_ID_ΓΕΡΜΑΝΙΚΑ

– SL_USBD_LANG_ID_ΕΛΛΗΝΙΚΑ

– SL_USBD_LANG_ID_ITALIAN

– SL_USBD_LANG_ID_ΠΟΡΤΟΓΑΛΙΚΑ

– SL_USBD_LANG_ID_SANSKRIT

Αυτή η ρύθμιση παραμέτρων αγνοείται όταν η ρύθμιση παραμέτρων SL_USBD_STRING_QUANTITY έχει οριστεί σε 0.

Ρύθμιση παραμέτρων υλικού συσκευής USB

Ανάλογα με τη συσκευή Silicon Labs που χρησιμοποιείτε, πιθανώς θα έχετε τον ακροδέκτη και τη θύρα GPIO για να διαμορφώσετε το σήμα USB VBUS Sense. Οι ορισμοί διαμόρφωσης βρίσκονται στην κεφαλίδα sl_usbd_hardware_config.h. file.

Συνεχής
SL_USBD_DRIVER_VBUS_SENSE_PORT SL_USBD_DRIVER_VBUS_SENSE_PIN

Περιγραφή
Θύρα GPIO για το σήμα USB VBUS Sense στην πλακέτα σας. Ακροδέκτης GPIO για το σήμα USB VBUS Sense στην πλακέτα σας.

Πνευματικά δικαιώματα © 2025 Silicon Laboratories. Με την επιφύλαξη παντός δικαιώματος.

10/174

Υπερview
Υπερview
Οδηγός προγραμματισμού συσκευής USB
Αυτή η ενότητα εξηγεί τον τρόπο χρήσης της μονάδας συσκευής USB.
Αρχική εγκατάσταση της μονάδας συσκευής USB
Αυτή η ενότητα περιγράφει τα βασικά βήματα που απαιτούνται για την αρχικοποίηση της μονάδας συσκευής USB και για την προσθήκη, την προετοιμασία και την εκκίνηση μιας συσκευής. Αρχικοποίηση της μονάδας συσκευής USB Αρχικοποίηση του πυρήνα της συσκευής USB Αρχικοποίηση των ss aCl Προσθήκη της συσκευής USB Δημιουργία της συσκευής USB Προσθήκη διαμόρφωσης Προσθήκη λειτουργίας USB Έναρξη της συσκευής USB
Συναρτήσεις αγκίστρου συμβάντων
Αρχικοποίηση της μονάδας συσκευής USB
Αρχικοποίηση του πυρήνα της συσκευής USB
α ΗΠΑ α Ξεκινήστε αρχικοποιώντας τον πυρήνα της μονάδας συσκευής Β, ενεργοποιώντας τη συνάρτηση 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 ss σας για περισσότερες πληροφορίες.
Δημιουργία της συσκευής USB σας
Προσθήκη διαμόρφωσης(ών)
Αφού ολοκληρώσετε με επιτυχία την αρχικοποίηση της συσκευής σας, μπορείτε να ξεκινήσετε την προσθήκη των λειτουργιών USB σε αυτήν, ξεκινώντας με μια νέα διαμόρφωση. Μια συσκευή πρέπει να έχει τουλάχιστον μία διαμόρφωση. Για να προσθέσετε μια/τις διαμόρφωση/εις, καλέστε τη συνάρτηση aa sl_usbd_core_dd_configur tion(). Αυτή η συνάρτηση πρέπει να καλείται για κάθε διαμόρφωση που θέλετε να προσθέσετε. Η π.χ.ampΠαρακάτω φαίνεται πώς να προσθέσετε μια πλήρη ταχύτητα.
Example – Προσθήκη Διαμορφώσεων στη Συσκευή σας

Πνευματικά δικαιώματα © 2025 Silicon Laboratories. Με την επιφύλαξη παντός δικαιώματος.

11/174

Υπερview

κατάσταση sl_status_t; uint8_t config_nbr_fs;

/* Προσθήκη διαμόρφωσης πλήρους ταχύτητας στη συσκευή. */

κατάσταση = sl_usbd_core_add_configuration(0,

/* Δεν υπάρχουν ειδικά χαρακτηριστικά στη διαμόρφωση. */

100u,

/* Μέγιστη κατανάλωση ενέργειας: 100mA.

*/

SL_USBD_DEVICE_SPEED_FULL,

/* Διαμόρφωση πλήρους ταχύτητας.

*/

"Διαμόρφωση Προσθήκης Ex"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 προσφέρει δύο λειτουργίες weak hook που μπορείτε να επαναπροσδιορίσετε στην εφαρμογή σας. Σκοπός τους είναι να ειδοποιούν όταν προκύπτουν συμβάντα διαύλου και διαμόρφωσης.
Πίνακας – Λειτουργίες αγκίστρου συμβάντων USB

Συμβάν

Περιγραφή

Λεωφορείο

Καλείται όταν συμβεί συμβάν USB Bus

Διαμόρφωση που καλείται όταν προκύπτει συμβάν διαμόρφωσης USB

Υπογραφή συνάρτησης
void sl_usbd_on_bus_event(συμβάν sl_usbd_bus_event_t); void sl_usbd_on_config_event(συμβάν sl_usbd_config_event_t, uint8_t config_nbr);

Example – Συναρτήσεις Γάντζου Συμβάντων

void sl_usbd_on_bus_event(sl_usbd_bus_event_t event) { διακόπτης (event) { περίπτωση SL_USBD_EVENT_BUS_CONNECT:
// καλείται όταν εισάγεται καλώδιο USB σε ένα σημείο διακοπής του κεντρικού ελεγκτή;
περίπτωση SL_USBD_EVENT_BUS_DISCONNECT: // καλείται όταν το καλώδιο USB αφαιρείται από ένα σφάλμα ελεγκτή κεντρικού υπολογιστή;
περίπτωση SL_USBD_EVENT_BUS_RESET: // καλείται όταν ο κεντρικός υπολογιστής στέλνει την εντολή επαναφοράς break;
περίπτωση SL_USBD_EVENT_BUS_SUSPEND: // καλείται όταν ο κεντρικός υπολογιστής στέλνει την εντολή suspend break;
case SL_USBD_EVENT_BUS_RESUME: // καλείται όταν ο κεντρικός υπολογιστής στέλνει την εντολή wake up break;
προεπιλογή: διακοπή; } }
void sl_usbd_on_config_event(sl_usbd_config_event_t event, uint8_t config_nbr) { διακόπτης (event) { περίπτωση SL_USBD_EVENT_CONFIG_SET:
// καλείται όταν ο κεντρικός υπολογιστής ορίζει ένα διάλειμμα διαμόρφωσης;
περίπτωση 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 εφαρμόζουν την έννοια των στιγμιότυπων κλάσης. Μια στιγμιότυπη κλάση αντιπροσωπεύει μία συνάρτηση μέσα σε μια συσκευή. Η συνάρτηση μπορεί να περιγραφεί από μία διεπαφή ή από μια ομάδα διεπαφών και ανήκει σε μια συγκεκριμένη κλάση.
Κάθε υλοποίηση κλάσης USB έχει ορισμένες κοινές διαμορφώσεις και συναρτήσεις, με βάση την έννοια της παρουσίας κλάσης. Οι κοινές διαμορφώσεις και συναρτήσεις παρουσιάζονται στον παρακάτω πίνακα. Στον τίτλο της στήλης «Σταθερές ή Συνάρτηση», το σύμβολο κράτησης θέσης XXXX μπορεί να αντικατασταθεί από το όνομα της κλάσης: CDC, HID, MSC, CDC_ACM ή VENDOR (Πωλητής για ονόματα συναρτήσεων).
Πίνακας – Σταθερές και Συναρτήσεις που Σχετίζονται με την Έννοια των Πολλαπλών Στιγμιότυπων Κλάσης

Σταθερά ή Συνάρτηση
SL_USBD_XXXX_CL ASS_INS TANCE_QUANTITY
SL_USBD_XXXX_ΔΙΑΜΟΡΦΩΣΗ_ΠΟΣΟΤΗΤΑ
sl_usb d _XXXX_cre ate _insta nce ()
sl_usbd_XXXX_add_to_conf εικόνα()

Περιγραφή
Ρυθμίζει τον μέγιστο αριθμό στιγμιότυπων κλάσης.
Ρυθμίζει τον μέγιστο αριθμό διαμορφώσεων. Κατά την αρχικοποίηση της κλάσης, μια δημιουργημένη παρουσία κλάσης θα προστεθεί σε μία ή περισσότερες διαμορφώσεις. Δημιουργεί μια νέα παρουσία κλάσης.
Προσθέτει μια υπάρχουσα παρουσία κλάσης στην καθορισμένη διαμόρφωση συσκευής.

Όσον αφορά την υλοποίηση κώδικα, η κλάση θα δηλώσει μια τοπική καθολική μεταβλητή που περιέχει μια δομή ελέγχου κλάσης. Αυτή η δομή ελέγχου κλάσης σχετίζεται με μία παρουσία κλάσης και θα περιέχει συγκεκριμένες πληροφορίες για τη διαχείριση της παρουσίας κλάσης.
Τα παρακάτω σχήματα δείχνουν διάφορα σενάρια. Κάθε σχήμα περιλαμβάνει έναν κωδικό π.χ.ampπου αντιστοιχεί στο σενάριο της υπόθεσης.
Σχήμα – Πολλαπλές Παρουσίες Κλάσης – Η Συσκευή FS (1 Διαμόρφωση με 1 Διεπαφή) αντιπροσωπεύει μια τυπική συσκευή USB. Η συσκευή είναι Full-Speed ​​(FS) και περιέχει μία μόνο διαμόρφωση. Η λειτουργία της συσκευής περιγράφεται από μία διεπαφή που αποτελείται από ένα ζεύγος τελικών σημείων για επικοινωνία δεδομένων. Δημιουργείται μία παρουσία κλάσης που θα σας επιτρέψει να διαχειριστείτε ολόκληρη τη διεπαφή με το σχετικό τελικό σημείο.
Σχήμα – Πολλαπλές παρουσίες κλάσης – Διαμόρφωση συσκευής FS 1 με 1 διεπαφή)

Πνευματικά δικαιώματα © 2025 Silicon Laboratories. Με την επιφύλαξη παντός δικαιώματος.

15/174

Υπερview

Ο κώδικας που αντιστοιχεί στο Σχήμα – Πολλαπλές Παρουσίες Κλάσης – Συσκευή FS (1 Διαμόρφωση με 1 Διεπαφή) φαίνεται στο παράδειγμα.ample παρακάτω.
Example – Πολλαπλές Παρουσίες Κλάσης – Διαμόρφωση Συσκευής FS 1 με 1 Διεπαφή)

κατάσταση sl_status_t; uint8_t κλάση_0;

void app_usbd_XXXX_enable(uint8_t class_nbr) { /* Χειρισμός συμβάντος ενεργοποίησης κλάσης. */ }

void app_usbd_XXXX_disable(uint8_t class_nbr) { /* Χειρισμός συμβάντος απενεργοποίησης κλάσης. */ }

sl_usbd_XXXX_callbacks_t 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) Κάθε κλάση προσφέρει ένα σύνολο συναρτήσεων επανάκλησης για συμβάντα σύνδεσης/αποσύνδεσης συσκευής και για συμβάντα που αφορούν συγκεκριμένα την κλάση. Το αντικείμενο δομής επανάκλησης διαβιβάζεται ως όρισμα κατά τη δημιουργία της παρουσίας κλάσης με την sl_usbd_XXXX_create_instance()
λειτουργία.
(1) Αρχικοποίηση της κλάσης. Όλες οι εσωτερικές μεταβλητές, οι δομές και οι θύρες κλάσης θα αρχικοποιηθούν. Σημειώστε ότι η συνάρτηση Init() σε ορισμένες κλάσεις μπορεί να δέχεται άλλα ορίσματα.

Πνευματικά δικαιώματα © 2025 Silicon Laboratories. Με την επιφύλαξη παντός δικαιώματος.

16/174

Υπερview
(2) Δημιουργήστε την παρουσία κλάσης, η οποία είναι class_0. Η συνάρτηση sl_usbd_XXXX_create_instance() εκχωρεί μια δομή ελέγχου κλάσης που σχετίζεται με την class_0. Ανάλογα με την κλάση, η sl_usbd_XXXX_create_instance() μπορεί να έχει πρόσθετες παραμέτρους εκτός από τον αριθμό κλάσης που αντιπροσωπεύουν πληροφορίες που αφορούν συγκεκριμένες κλάσεις και είναι αποθηκευμένες στη δομή ελέγχου κλάσης. aaa (3) Προσθέστε την εντολή cl ss inst nce, class_0, στον καθορισμένο αριθμό διαμόρφωσης, config_0. Η sl_usbd_XXXX_add_to_configuration() θα δημιουργήσει τη διεπαφή 0 και τα σχετικά τελικά σημεία IN και OUT. Ως αποτέλεσμα, η παρουσία κλάσης περιλαμβάνει τη διεπαφή 0 και τα τελικά σημεία της. Οποιαδήποτε επικοινωνία γίνεται στη διεπαφή 0 θα χρησιμοποιεί τον αριθμό παρουσίας κλάσης, class_0. Σχήμα – Πολλαπλές Παρουσίες Κλάσης – Συσκευή FS (2 Διαμορφώσεις και Πολλαπλές Διεπαφές) αντιπροσωπεύει μια πιο σύνθετη εκδοχήampδηλ. Μια συσκευή πλήρους ταχύτητας αποτελείται από δύο διαμορφώσεις. Η συσκευή έχει δύο λειτουργίες που ανήκουν στην ίδια κλάση, αλλά κάθε λειτουργία περιγράφεται από δύο διεπαφές και έχει ένα ζεύγος αμφίδρομων τελικών σημείων. Σε αυτό το παράδειγμαampΔηλαδή, δημιουργούνται δύο στιγμιότυπα κλάσης. Κάθε στιγμιότυπο κλάσης σχετίζεται με μια ομάδα διεπαφών σε αντίθεση με το Figure – Πολλαπλές στιγμιότυπα κλάσης – Συσκευή FS (1 Διαμόρφωση με 1 Διασύνδεση) και το Figure – Πολλαπλές στιγμιότυπα κλάσης – Συσκευή FS (2 Διαμορφώσεις και Πολλαπλές Διεπαφές) όπου η στιγμιότυπο κλάσης συσχετίστηκε με μία μόνο διεπαφή.
Σχήμα – Πολλαπλές παρουσίες κλάσης – Διαμορφώσεις συσκευής FS 2 και πολλαπλές διεπαφές)

Ο κώδικας που αντιστοιχεί στο Σχήμα – Πολλαπλές Παρουσίες Κλάσης – Συσκευή FS (2 Διαμορφώσεις και Πολλαπλές Διεπαφές) φαίνεται στο παράδειγμα.ampπαρακάτω. Ο χειρισμός σφαλμάτων παραλείπεται για λόγους σαφήνειας.
Example – Πολλαπλές Παρουσίες Κλάσης – Διαμορφώσεις Συσκευής FS 2 και Πολλαπλές Διεπαφές)

Πνευματικά δικαιώματα © 2025 Silicon Laboratories. Με την επιφύλαξη παντός δικαιώματος.

17/174

Υπερview

sl_status_t κατάσταση; uint8_t κλάση_0; uint8_t κλάση_1;
κατάσταση = sl_usbd_XXXX_init();
κατάσταση = sl_usbd_XXXX_create_instance(&class_0); κατάσταση = sl_usbd_XXXX_create_instance(&class_1);
κατάσταση = sl_usbd_XXXX_add_to_configuration(class_0, cfg_0); κατάσταση = sl_usbd_XXXX_add_to_configuration(class_1, cfg_0);
κατάσταση = sl_usbd_XXXX_add_to_configuration(class_0, cfg_1); κατάσταση = sl_usbd_XXXX_add_to_configuration(class_1, cfg_1);

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

(1) Αρχικοποίηση της κλάσης. Οποιεσδήποτε εσωτερικές μεταβλητές, δομές και θύρες κλάσης θα αρχικοποιηθούν.
(2) Δημιουργήστε την κλάση instance, class_0. Η συνάρτηση sl_usbd_XXXX_create_instance() εκχωρεί μια δομή ελέγχου κλάσης που σχετίζεται με την class_0.
(3) Δημιουργήστε την κλάση class_1. Η συνάρτηση sl_usbd_XXXX_create_instance() εκχωρεί μια άλλη δομή ελέγχου κλάσης που σχετίζεται με την class_1.
(4) Προσθέστε την κλάση instance, class_0, στη διαμόρφωση, cfg_0. Η sl_usbd_XXXX_add_to_configuration() θα δημιουργήσει τη διεπαφή 0, τη διεπαφή 1, τις εναλλακτικές διεπαφές και τα σχετικά τελικά σημεία IN και OUT. Ο αριθμός instance της κλάσης, class_0, θα χρησιμοποιηθεί για οποιαδήποτε επικοινωνία δεδομένων στη διεπαφή 0 ή στη διεπαφή 1.
(5) Προσθέστε την κλάση instance, class_1, στη διαμόρφωση, cfg_0. Η sl_usbd_XXXX_add_to_configuration() θα δημιουργήσει τη διεπαφή 2, τη διεπαφή 3 και τα σχετικά τελικά σημεία IN και OUT. Ο αριθμός instance της κλάσης, class_1, θα χρησιμοποιηθεί για οποιαδήποτε επικοινωνία δεδομένων στη διεπαφή 2 ή στη διεπαφή 3.
(6) Προσθέστε τις ίδιες περιπτώσεις κλάσης, class_0 και class_1, στην άλλη διαμόρφωση, cfg_1.
Κάθε κλάση ορίζει δομή τύπου sl_usbd_XXXX_callbacks_t. Σκοπός της είναι να δώσει σε κάθε κλάση ένα σύνολο συναρτήσεων επανάκλησης που θα καλούνται όταν συμβεί κάποιο συμβάν. Δύο συναρτήσεις επανάκλησης υπάρχουν σε κάθε κλάση. Αυτές παρουσιάζονται στον παρακάτω πίνακα.
Πίνακας – Κοινές συναρτήσεις επανάκλησης κλάσης

Πεδία Περιγραφή .enable Καλείται όταν η παρουσία της κλάσης USB ενεργοποιηθεί με επιτυχία. .disable Καλείται όταν η παρουσία της κλάσης USB απενεργοποιηθεί.

Υπογραφή συνάρτησης void app_usbd_XXXX_enable(uint8_t class_nbr); void app_usbd_XXXX_disable(uint8_t class_nbr);

Πνευματικά δικαιώματα © 2025 Silicon Laboratories. Με την επιφύλαξη παντός δικαιώματος.

18/174

Υπερview
Υπερview
Συσκευή USB CDC ACM Κλάση
Συσκευή USB CDC Base Class Overview Ανάγκες πόρων κλάσης CDC ACM συσκευής USB από την υποκλάση CDC ACM της βασικής συσκευής USBview Διαμόρφωση κλάσης CDC ACM συσκευής USB Οδηγός προγραμματισμού κλάσης CDC ACM συσκευής USB
Αυτή η ενότητα περιγράφει την κλάση Communications Device Class (CDC) και τη σχετική υποκλάση CDC που υποστηρίζεται από τη στοίβα USB Device της Silicon Labs. Η συσκευή USB της Silicon Labs υποστηρίζει προς το παρόν την υποκλάση Abstract Control Model (ACM), η οποία χρησιμοποιείται συνήθως για σειριακή εξομοίωση.
Το CDC περιλαμβάνει διάφορες συσκευές τηλεπικοινωνιών και δικτύωσης. Οι συσκευές τηλεπικοινωνιών περιλαμβάνουν αναλογικά μόντεμ, αναλογικά και ψηφιακά τηλέφωνα, προσαρμογείς τερματικών ISDN κ.λπ. Για παράδειγμαampΓια παράδειγμα, οι συσκευές δικτύωσης περιέχουν μόντεμ ADSL και καλωδιακά μόντεμ, προσαρμογείς Ethernet και κόμβους. Το CDC ορίζει ένα πλαίσιο για την ενσωμάτωση των υπαρχόντων προτύπων υπηρεσιών επικοινωνίας, όπως το V.250 (για μόντεμ μέσω τηλεφωνικού δικτύου) και το Ethernet (για συσκευές τοπικού δικτύου), χρησιμοποιώντας μια σύνδεση USB. Μια συσκευή επικοινωνίας είναι υπεύθυνη για τη διαχείριση συσκευών, τη διαχείριση κλήσεων όταν χρειάζεται και τη μετάδοση δεδομένων.
Το CDC ορίζει επτά κύριες ομάδες συσκευών. Κάθε ομάδα ανήκει σε ένα μοντέλο επικοινωνίας, το οποίο μπορεί να περιλαμβάνει αρκετές υποκατηγορίες. Κάθε ομάδα συσκευών έχει το δικό της έγγραφο προδιαγραφών εκτός από την βασική κλάση CDC. Οι επτά ομάδες είναι:
Δημόσιο Τηλεφωνικό Δίκτυο Μεταγωγής (PSTN), συσκευές που περιλαμβάνουν μόντεμ φωνητικής ζώνης, τηλέφωνα και συσκευές σειριακής εξομοίωσης. Συσκευές Ψηφιακού Δικτύου Ολοκληρωμένων Υπηρεσιών (ISDN), συμπεριλαμβανομένων προσαρμογέων τερματικών και τηλεφώνων. Συσκευές Μοντέλου Ελέγχου Ethernet (ECM), συμπεριλαμβανομένων συσκευών που υποστηρίζουν την οικογένεια IEEE 802 (π.χ.: καλωδιακά και ADSL μόντεμ, προσαρμογείς WiFi). Συσκευές Ασύγχρονης Λειτουργίας Μεταφοράς (ATM), συμπεριλαμβανομένων μόντεμ ADSL και άλλων συσκευών που συνδέονται σε δίκτυα ATM (σταθμοί εργασίας, δρομολογητές, διακόπτες LAN). Συσκευές Ασύρματων Κινητών Επικοινωνιών (WMC), συμπεριλαμβανομένων συσκευών πολλαπλών λειτουργιών επικοινωνίας που χρησιμοποιούνται για τη διαχείριση επικοινωνιών φωνής και δεδομένων. Συσκευές Μοντέλου Εξομοίωσης Ethernet (EEM) που ανταλλάσσουν δεδομένα με πλαίσιο Ethernet. Συσκευές Μοντέλου Ελέγχου Δικτύου (NCM), συμπεριλαμβανομένων συσκευών δικτύου υψηλής ταχύτητας (μόντεμ πρόσβασης πακέτων υψηλής ταχύτητας, εξοπλισμός τερματικού γραμμής).
Η υλοποίηση του CDC και της σχετικής υποκλάσης συμμορφώνεται με τις ακόλουθες προδιαγραφές:
Καθολικός Σειριακός Δίαυλος, Ορισμοί Κλάσης για Συσκευές Επικοινωνίας, Αναθεώρηση 1.2, 3 Νοεμβρίου 2010. Καθολικός Σειριακός Δίαυλος, Επικοινωνίες, Υποκλάση για Συσκευές PSTN, Αναθεώρηση 1.2, 9 Φεβρουαρίου 2007.
Συσκευή USB CDC Base Class Overview
Μια συσκευή CDC αποτελείται από τις ακόλουθες διεπαφές για την υλοποίηση της δυνατότητας επικοινωνίας:
Η Διεπαφή Κλάσης Επικοινωνιών (CCI) είναι υπεύθυνη για τη διαχείριση συσκευών και προαιρετικά για τη διαχείριση κλήσεων.
Η διαχείριση συσκευών επιτρέπει τη γενική διαμόρφωση και τον έλεγχο της συσκευής και την ειδοποίηση συμβάντων στον κεντρικό υπολογιστή. Η διαχείριση κλήσεων επιτρέπει την πραγματοποίηση και τον τερματισμό κλήσεων. Η διαχείριση κλήσεων μπορεί να πολυπλεξτεί μέσω ενός DCI. Ένα CCI είναι υποχρεωτικό για όλες τις συσκευές CDC. Προσδιορίζει τη λειτουργία CDC καθορίζοντας το μοντέλο επικοινωνίας που υποστηρίζεται από τη συσκευή CDC. Η/Οι διεπαφή/ές που ακολουθούν το CCI μπορούν να είναι οποιαδήποτε καθορισμένη διεπαφή κλάσης USB, όπως Audio ή μια διεπαφή ειδική για τον προμηθευτή. Η διεπαφή ειδική για τον προμηθευτή αναπαρίσταται συγκεκριμένα από ένα DCI.
Η Διεπαφή Κλάσης Δεδομένων (DCI) είναι υπεύθυνη για τη μετάδοση δεδομένων. Τα δεδομένα που μεταδίδονται ή/και λαμβάνονται δεν ακολουθούν συγκεκριμένη διαδικασία.
μορφή. Τα δεδομένα θα μπορούσαν να είναι ακατέργαστα δεδομένα από μια γραμμή επικοινωνίας, δεδομένα που ακολουθούν μια ιδιόκτητη μορφή κ.λπ. Όλα τα DCI που ακολουθούν το CCI μπορούν να θεωρηθούν ως δευτερεύουσες διεπαφές.
Μια συσκευή CDC πρέπει να έχει τουλάχιστον ένα CCI και μηδέν ή περισσότερα DCI. Ένα CCI και οποιοδήποτε δευτερεύον DCI παρέχουν μαζί μια δυνατότητα στον κεντρικό υπολογιστή. Αυτή η δυνατότητα αναφέρεται επίσης ως συνάρτηση. Σε μια σύνθετη συσκευή CDC, θα μπορούσατε να έχετε πολλά

Πνευματικά δικαιώματα © 2025 Silicon Laboratories. Με την επιφύλαξη παντός δικαιώματος.

19/174

Υπερview
λειτουργίες. Επομένως, η συσκευή θα αποτελείται από διάφορα σύνολα CCI και DCI(s) όπως φαίνεται στο Σχήμα – Σύνθετη Συσκευή CDC.
Σχήμα – Σύνθετη συσκευή CDC

Μια συσκευή CDC είναι πιθανό να χρησιμοποιήσει τον ακόλουθο συνδυασμό τελικών σημείων:
Ένα ζεύγος τελικών σημείων ελέγχου IN και OUT που ονομάζεται προεπιλεγμένο τελικό σημείο. Ένα προαιρετικό τελικό σημείο IN μαζικής ή διακοπής. Ένα ζεύγος τελικών σημείων IN και OUT μαζικής ή ισόχρονων. Σημειώστε ότι η στοίβα συσκευών USB της Silicon Labs δεν υποστηρίζει προς το παρόν ισόχρονα τελικά σημεία.
Ο παρακάτω πίνακας δείχνει τη χρήση των διαφόρων τελικών σημείων και μέσω της διεπαφής του CDC.
Πίνακας – Χρήση τελικού σημείου CDC

Τελικό σημείο
Έλεγχος ΕΙΣ
Έλεγχος ΕΞΩ
Διακοπή ή μαζική είσοδος Μαζική ή ισόχρονη είσοδος Μαζική ή ισόχρονη
ΕΞΩ

Κατεύθυνση
Συσκευή-προς-κεντρικό υπολογιστή
Κεντρικός υπολογιστής-προς-συσκευή
Συσκευή-προς-κεντρικό υπολογιστή
Συσκευή-προς-κεντρικό υπολογιστή
Κεντρικός υπολογιστής-προς-συσκευή

Χρήση διεπαφής

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 εξομοίωσης Ethernet

Μοντέλο ελέγχου δικτύου

NCM

Συσκευές φωνητικής τηλεφωνίας
Προσαρμογείς τερματικού βασικής χρέωσης, προσαρμογείς τερματικού κύριας χρέωσης, τηλέφωνα
Προσαρμογείς τερματικού βασικής χρέωσης, προσαρμογείς τερματικού κύριας χρέωσης, τηλέφωνα, καλωδιακά μόντεμ 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

Περιγραφή αιτήματος υποκλάσης

SetCommFeature GetCommFeature ClearCommFeature

Ο κεντρικός υπολογιστής στέλνει αυτό το αίτημα για να ελέγξει τις ρυθμίσεις για μια δεδομένη λειτουργία επικοινωνίας. Δεν χρησιμοποιείται για σειριακή εξομοίωση.
Ο κεντρικός υπολογιστής στέλνει αυτό το αίτημα για να λάβει τις τρέχουσες ρυθμίσεις για μια δεδομένη λειτουργία επικοινωνίας. Δεν χρησιμοποιείται για σειριακή εξομοίωση.
Ο κεντρικός υπολογιστής στέλνει αυτό το αίτημα για να διαγράψει τις ρυθμίσεις για μια δεδομένη λειτουργία επικοινωνίας. Δεν χρησιμοποιείται για σειριακή εξομοίωση.

ΟρισμόςΚωδικοποίησηςΓραμμής

Ο κεντρικός υπολογιστής στέλνει αυτό το αίτημα για να διαμορφώσει τις ρυθμίσεις της συσκευής ACM: ρυθμός baud, αριθμός bit διακοπής, τύπος ισοτιμίας και αριθμός bit δεδομένων. Για μια σειριακή εξομοίωση, αυτό το αίτημα αποστέλλεται αυτόματα από ένα σειριακό τερματικό κάθε φορά που διαμορφώνετε τις σειριακές ρυθμίσεις για μια ανοιχτή εικονική θύρα COM.

GetLineCoding

Ο κεντρικός υπολογιστής στέλνει αυτό το αίτημα για να λάβει τις τρέχουσες ρυθμίσεις ACM (ρυθμός baud, bits διακοπής, ισοτιμία, bits δεδομένων). Για μια σειριακή εξομοίωση, τα σειριακά τερματικά στέλνουν αυτό το αίτημα αυτόματα κατά το άνοιγμα της εικονικής θύρας COM.

SetControlLineState Ο κεντρικός υπολογιστής στέλνει αυτό το αίτημα για να ελέγξει τον φορέα για ημιαμφίδρομα μόντεμ και να υποδείξει ότι ο Εξοπλισμός Τερματικού Δεδομένων (DTE) είναι έτοιμος ή όχι. Στην περίπτωση σειριακής εξομοίωσης, το DTE είναι ένα σειριακό τερματικό. Για μια σειριακή εξομοίωση, ορισμένα σειριακά τερματικά σάς επιτρέπουν να στείλετε αυτό το αίτημα με τα στοιχεία ελέγχου που έχουν οριστεί.

SetBreak

Ο κεντρικός υπολογιστής στέλνει αυτό το αίτημα για να δημιουργήσει μια διακοπή τύπου RS-232. Για μια σειριακή εξομοίωση, ορισμένα σειριακά τερματικά σάς επιτρέπουν να στείλετε αυτό το αίτημα.

Η υποκλάση Silicon Labs9 ACM χρησιμοποιεί το τελικό σημείο διακοπής IN για να ειδοποιήσει τον κεντρικό υπολογιστή σχετικά με την τρέχουσα κατάσταση της σειριακής γραμμής.
Η κατάσταση γραμμής είναι ένα bitmap που ενημερώνει τον κεντρικό υπολογιστή σχετικά με:

Τα δεδομένα απορρίφθηκαν λόγω υπέρβασης Σφάλμα ισοτιμίας Σφάλμα πλαισίου Κατάσταση ανίχνευσης σήματος δακτυλίου Κατάσταση μηχανισμού ανίχνευσης διακοπής Κατάσταση φορέα μετάδοσης Κατάσταση ανίχνευσης φορέα δέκτη

Η υλοποίηση της υποκλάσης Silicon Labs9 ACM συμμορφώνεται με την ακόλουθη προδιαγραφή:
Ενιαίος Σειριακός Δίαυλος, Επικοινωνίες, Υποκλάση για Συσκευές PSTN, αναθεώρηση 1.2, 9 Φεβρουαρίου 2007.
Διαμόρφωση κλάσης CDC ACM συσκευής USB

Αυτή η ενότητα εξετάζει τον τρόπο διαμόρφωσης της Κλάσης CDC ACM (Κλάση Συσκευής Επικοινωνίας, Αφηρημένο Μοντέλο Ελέγχου). Υπάρχουν δύο ομάδες παραμέτρων διαμόρφωσης:
Διαμορφώσεις ειδικής εφαρμογής για την κλάση CDC ACM συσκευής USB Διαμορφώσεις παρουσίας κλάσης CDC ACM συσκευής USB
Διαμορφώσεις ειδικής εφαρμογής για την κατηγορία CDC ACM της συσκευής USB

Βασική κλάση CDC Υποκλάση ACM
Βασική Κλάση CDC

Αρχικά, για να χρησιμοποιήσετε τη μονάδα κλάσης CDC της συσκευής USB της Silicon Labs, θα χρειαστεί να προσαρμόσετε τη διαμόρφωση χρόνου μεταγλώττισης CDC #define-s σύμφωνα με τις ανάγκες της εφαρμογής σας. Αναομαδοποιούνται μέσα στην κεφαλίδα sl_usbd_core_config.h file στην ενότητα CDC. Σκοπός τους είναι να ενημερώνουν τη μονάδα συσκευής USB σχετικά με το πόσα αντικείμενα CDC USB θα εκχωρήσουν.

Πνευματικά δικαιώματα © 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 προσθέτει vi c ll στη συνάρτηση sl_usbd_cdc_acm_create_instance() θα προσθέσει dt interf ce.

Προεπιλεγμένη τιμή
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, κ.λπ.).

call_mgmt_capabilities
Δυνατότητες διαχείρισης κλήσεων bitmap. Οι πιθανές τιμές του bitmap είναι οι εξής:

Τιμή (bit)
SL_USBD_ACM_SERIAL_CALL_MGMT_DEV
SL_USBD_ACM_SERIAL_CALL_MGMT_DATA_CCI _DCI

Περιγραφή
Η συσκευή χειρίζεται η ίδια τη διαχείριση κλήσεων. Η συσκευή μπορεί να στέλνει/λαμβάνει πληροφορίες διαχείρισης κλήσεων μέσω μιας διεπαφής κλάσης δεδομένων.

p_acm_callbacks

Πνευματικά δικαιώματα © 2025 Silicon Laboratories. Με την επιφύλαξη παντός δικαιώματος.

23/174

Υπερview

Το p_acm_callbacks είναι ένας δείκτης σε δομή τύπου sl_usbd_cdc_acm_callbacks_t. Σκοπός του είναι να δώσει στο CDC AC Cl ss ένα σύνολο συναρτήσεων επανάκλησης που θα κληθούν όταν συμβεί ένα συμβάν CDC ACM. Δεν είναι όλες οι επανάκλήσεις υποχρεωτικές και ένας δείκτης null (NULL) μπορεί να περάσει στη μεταβλητή δομής callbacks όταν η επανάκληση δεν είναι απαραίτητη. Ο παρακάτω πίνακας περιγράφει κάθε πεδίο διαμόρφωσης που είναι διαθέσιμο σε αυτήν τη δομή διαμόρφωσης.
Πίνακας – Δομή διαμόρφωσης sl_usbd_cdc_acm _callbacks_t

Πεδία

Περιγραφή

.καθιστώ ικανό

Καλείται όταν η παρουσία κλάσης USB είναι ενεργοποιημένη

επιτυχώς.

.καθιστώ ανίκανο

Καλείται όταν η παρουσία κλάσης USB είναι απενεργοποιημένη.

.line_control_changed Καλείται όταν λαμβάνεται μια αλλαγή ελέγχου γραμμής.

line_coding_changed Καλείται όταν λαμβάνεται μια αλλαγή κωδικοποίησης γραμμής.

Υπογραφή συνάρτησης
void app_usbd_cdc_acm_enable(uint8_t subclass_nbr);
void app_usbd_cdc_acm_disable(uint8_t subclass_nbr);
void app_usbd_cdc_acm_line_control_changed(uint8_t subclass_nbr, uint8_t event, uint8_t event_chngd); bool app_usbd_cdc_acm_line_coding_changed(uint8_t subclass_nbr, subclass_nbr, sl_usbd_cdc_acm_line_coding_t
*p_γραμμική_κωδικοποίηση

Δείτε την ενότητα Καταχώριση Επιστροφών Ειδοποίησης Συμβάντων για συναρτήσεις επανάκλησης, π.χ.ample.
Οδηγός προγραμματισμού κλάσης CDC ACM για συσκευές USB

Αυτή η ενότητα εξηγεί τον τρόπο χρήσης της κλάσης CDC Abstract Control Model. Αρχικοποίηση της κλάσης CDC ACM συσκευής USB Προσθήκη μιας παρουσίας κλάσης CDC ACM συσκευής USB στη συσκευή σας Επικοινωνία χρησιμοποιώντας την κλάση 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) { /* Παρουσιάστηκε σφάλμα. Εδώ θα πρέπει να προστεθεί χειρισμός σφαλμάτων. */
}
Προσθήκη μιας συσκευής USB CDC ACM Class Instance στη συσκευή σας
Για να προσθέσετε λειτουργικότητα κλάσης 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 υποκλάση_nbr; sl_status_t κατάσταση;
κατάσταση = sl_usbd_cdc_acm_create_instance(64u, SL_USBD_ACM_SERIAL_CALL_MGMT_DATA_CCI_DCI | SL_USBD_ACM_SERIAL_CALL_MGMT_DEV, NULL, &subclass_nbr);
αν (κατάσταση ! SL_STATUS_OK) { /* Παρουσιάστηκε σφάλμα. Εδώ θα πρέπει να προστεθεί χειρισμός σφαλμάτων. */
}
Προσθήκη της παρουσίας κλάσης CDC ACM στις ρυθμίσεις παραμέτρων της συσκευής σας
Αφού δημιουργήσετε μια παρουσία κλάσης CDC ACM, μπορείτε να την προσθέσετε σε μια διαμόρφωση καλώντας τη συνάρτηση
sl_usbd_cdc_acm_add_to_configuration().
Το παρακάτω παράδειγμα δείχνει πώς να εκτελέσετε την εντολή sl_usbd_cdc_acm_add_to_configuration().
Example – Κλήση στο USBD ACM sl_usbd_cdc_acm_add_to_configuration()

κατάσταση sl_status_t;

κατάσταση = sl_usbd_cdc_acm_add_to_configuration(subclass_nbr,

(1)

config_nbr_fs);

(2)

αν (κατάσταση! SL_STATUS_OK) {

/* Παρουσιάστηκε σφάλμα. Εδώ θα πρέπει να προστεθεί χειρισμός σφαλμάτων. */

}

aaa (1) Αριθμός ss Cl που θα προστεθεί στη διαμόρφωση που επιστρέφεται από την sl_usbd_cdc_acm_create_instance(). (2) Αριθμός διαμόρφωσης (εδώ προστίθεται σε μια διαμόρφωση πλήρους ταχύτητας).
Καταχώριση Επιστροφών Ειδοποίησης Συμβάντων
Η κλάση CDC ACM Serial μπορεί να ειδοποιήσει την εφαρμογή σας για τυχόν αλλαγές στον έλεγχο γραμμής ή την κωδικοποίηση μέσω συναρτήσεων ειδοποίησης επανάκλησης. Μια δομή συναρτήσεων επανάκλησης μπορεί να περάσει ως όρισμα κατά τη δημιουργία της παρουσίας ACM. Σημειώστε ότι αυτές οι επανάκλήσεις είναι προαιρετικές. Π.χ.ample – Η εγγραφή επανακλήσεων CDC ACM απεικονίζει τη χρήση των συναρτήσεων εγγραφής επανακλήσεων. Π.χ.ample – Η υλοποίηση επανακλήσεων CDC ACM δείχνει μια πρώηνampφύλλο υλοποίησης των συναρτήσεων επανάκλησης.
Example – Εγγραφή Επανακλήσεων CDC ACM

Πνευματικά δικαιώματα © 2025 Silicon Laboratories. Με την επιφύλαξη παντός δικαιώματος.

25/174

Υπερview

uint8_t υποκλάση_nbr; sl_status_t κατάσταση;
sl_usbd_cdc_acm_callbacks_t sli_usbd_cdc_acm_callbacks = { app_usbd_cdc_acm_connect, app_usbd_cdc_acm_disconnect, app_usbd_cdc_acm_line_control_changed, app_usbd_cdc_acm_line_coding_changed, };
κατάσταση = sl_usbd_cdc_acm_create_instance(64u, SL_USBD_ACM_SERIAL_CALL_MGMT_DATA_CCI_DCI | SL_USBD_ACM_SERIAL_CALL_MGMT_DEV, &sli_usbd_cdc_acm_callbacks, &subclass_nbr);
αν (κατάσταση ! SL_STATUS_OK) { /* Παρουσιάστηκε σφάλμα. Εδώ θα πρέπει να προστεθεί χειρισμός σφαλμάτων. */ }
Example – Υλοποίηση επανακλήσεων CDC ACM

bool app_usbd_cdc_acm_line_coding_changed (uint8_t

υποκλάση_nbr,

sl_usbd_cdc_acm_line_coding_t *p_line_coding)

{

uint32_t ρυθμός_baud_new;

uint8_t ισοτιμία_νέα;

uint8_t stop_bits_new;

uint8_t data_bits_new;

/* TODO Εφαρμογή νέας κωδικοποίησης γραμμής.*/ baudrate_new = p_line_coding->BaudRate; parity_new = p_line_coding->Parity; stop_bits_new = p_line_coding->StopBits; data_bits_new = p_line_coding->DataBits;

επιστροφή (αληθής);

(1)

}

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

/* 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 ελέγχει την κωδικοποίηση γραμμής (ρυθμός baud, ισοτιμία, κ.λπ.) της συσκευής CDC ACM. Όταν είναι απαραίτητο, η εφαρμογή είναι υπεύθυνη για τον ορισμό της κωδικοποίησης γραμμής. Παρέχονται δύο λειτουργίες για την ανάκτηση και τον ορισμό της τρέχουσας κωδικοποίησης γραμμής, όπως περιγράφεται στον παρακάτω πίνακα.
Πίνακας – Συναρτήσεις κωδικοποίησης γραμμής CDC ACM

Λειτουργία
sl_usbd_cdc_acm_g e t_line _cod ing ()
sl_usbd_cdc_acm_s και t_line _cod ing ()

Περιγραφή
Η εφαρμογή σας μπορεί να λάβει τις τρέχουσες ρυθμίσεις κωδικοποίησης γραμμής είτε από τον κεντρικό υπολογιστή με αιτήματα SetLineCoding είτε με τη συνάρτηση sl_usbd_cdc_acm_set_line_coding().
Η εφαρμογή σας μπορεί να ορίσει την κωδικοποίηση γραμμής. Ο κεντρικός υπολογιστής μπορεί να ανακτήσει τις ρυθμίσεις με το αίτημα GetLineCoding.

Έλεγχος γραμμής
Ο κεντρικός υπολογιστής USB ελέγχει τον έλεγχο γραμμής (ακίδες RTS και DTR, σήμα διακοπής κ.λπ.) της συσκευής CDC ACM. Όταν είναι απαραίτητο, η εφαρμογή σας είναι υπεύθυνη για την εφαρμογή των ελέγχων γραμμής. Παρέχεται μια συνάρτηση για την ανάκτηση και τον ορισμό των τρεχόντων ελέγχων γραμμής, όπως περιγράφεται στον παρακάτω πίνακα.
Πίνακας – Λειτουργίες ελέγχου γραμμής CDC ACM

Λειτουργία
sl_usb d _cd c_acm_g e t_line _co ntr o l_state ()

Η εφαρμογή σας μπορεί να λάβει την τρέχουσα κατάσταση της γραμμής ελέγχου που έχει οριστεί από τον κεντρικό υπολογιστή με το αίτημα SetControlLineState.

Γραμμική κατάσταση
Ο κεντρικός υπολογιστής USB ανακτά την κατάσταση της γραμμής σε τακτά χρονικά διαστήματα. Η εφαρμογή σας πρέπει να ενημερώνει την κατάσταση της γραμμής κάθε φορά που αλλάζει. Όταν είναι απαραίτητο, η εφαρμογή σας είναι υπεύθυνη για τον ορισμό της κατάστασης της γραμμής. Παρέχονται δύο συναρτήσεις για την ανάκτηση και τον ορισμό των τρεχόντων στοιχείων ελέγχου γραμμής, όπως περιγράφεται στον παρακάτω πίνακα.
Πίνακας – Συναρτήσεις κατάστασης γραμμής CDC ACM

Λειτουργία
sl_usb d _cd c_acm_se t _line _state _e ve nt()
sl_usbd_cdc_acm_cle ar_line _state _e ve nt()

Η εφαρμογή σας μπορεί να ορίσει οποιοδήποτε συμβάν κατάστασης γραμμής. Κατά τον ορισμό της κατάστασης γραμμής, αποστέλλεται στον κεντρικό υπολογιστή μια μεταφορά διακοπής IN για να ενημερώσει σχετικά με μια αλλαγή στην κατάσταση της σειριακής γραμμής.
Η εφαρμογή μπορεί να διαγράψει δύο συμβάντα της κατάστασης γραμμής: την ανίχνευση φορέα μετάδοσης και την ανίχνευση φορέα δέκτη. Όλα τα άλλα συμβάντα διαγράφονται αυτόματα από την υποκλάση σειριακής εξομοίωσης ACM.

Επικοινωνία στιγμιότυπων υποκλάσης

Η υποκλάση ACM της Silicon Labs προσφέρει τις ακόλουθες συναρτήσεις για την επικοινωνία με τον κεντρικό υπολογιστή. Για περισσότερες λεπτομέρειες σχετικά με τις παραμέτρους functions9, ανατρέξτε στην αναφορά CDC ACM Subclass Functions.

Όνομα συνάρτησης
sl_usb d _cd c_acm_ re ad () sl_usb d _cd c_acm_write ()

Λειτουργία
Λαμβάνει δεδομένα από τον κεντρικό υπολογιστή μέσω ενός τελικού σημείου μαζικής εισόδου (OUT). Αυτή η συνάρτηση μπλοκάρει. Στέλνει δεδομένα στον κεντρικό υπολογιστή μέσω ενός τελικού σημείου μαζικής εισόδου (IN). Αυτή η συνάρτηση μπλοκάρει.

Πνευματικά δικαιώματα © 2025 Silicon Laboratories. Με την επιφύλαξη παντός δικαιώματος.

27/174

Υπερview

Πίνακας – Σύνοψη CDC ACM Communication API aaaaa Οι συναρτήσεις sl_usbd_cdc_acm_read() και sl_usbd_cdc_acm_write() παρέχουν σύγχρονη επικοινωνία, πράγμα που σημαίνει ότι η μεταφορά μπλοκάρεται. Με άλλα λόγια, κατά την κλήση της συνάρτησης, η εφαρμογή μπλοκάρει μέχρι να ολοκληρωθεί η μεταφορά με ή χωρίς σφάλμα. Μπορεί να καθοριστεί ένα χρονικό όριο για να αποφευχθεί η αέναη αναμονή. Το παράδειγμαampΠαρακάτω φαίνεται μια εξίσωση ανάγνωσης και εγγραφής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_cdc_acm_read(subclass_nbr,

(1)

rx_buf,

(2)

2u,

0u,

(3)

&xfer_len);

αν (κατάσταση! SL_STATUS_OK) {

/* Παρουσιάστηκε σφάλμα. Εδώ θα πρέπει να προστεθεί χειρισμός σφαλμάτων. */

}

κατάσταση = sl_usbd_cdc_acm_write(subclass_nbr,

(1)

tx_buf,

(4)

2u,

0u,

(3)

&xfer_len);

αν (κατάσταση! SL_STATUS_OK) {

/* Παρουσιάστηκε σφάλμα. Εδώ θα πρέπει να προστεθεί χειρισμός σφαλμάτων. */

}

T aaaaa M (1) Ο αριθμός έναρξης κλάσης δημιουργήθηκε με την sl_usbd_cdc_acm_create_instance() και παρέχει εσωτερική αναφορά στην υποκλάση AC για τη δρομολόγηση της μεταφοράς στο κατάλληλο τελικό σημείο μαζικής εξόδου (OUT ή IN). (2) Η εφαρμογή σας πρέπει να διασφαλίσει ότι το buffer που παρέχεται στη συνάρτηση είναι αρκετά μεγάλο για να χωρέσει όλα τα δεδομένα. Διαφορετικά, ενδέχεται να προκύψουν προβλήματα συγχρονισμού. (3) Για να αποφύγετε μια κατάσταση άπειρου αποκλεισμού, καθορίστε ένα χρονικό όριο που εκφράζεται σε χιλιοστά του δευτερολέπτου. Η τιμή 809 κάνει την εργασία της εφαρμογής να περιμένει για πάντα. (4) Η εφαρμογή παρέχει το αρχικοποιημένο buffer μετάδοσης.

Πνευματικά δικαιώματα © 2025 Silicon Laboratories. Με την επιφύλαξη παντός δικαιώματος.

28/174

Υπερview
Υπερview

Κλάση HID συσκευής USB

Κλάση HID συσκευής USB πάνω απόview Ανάγκες πόρων κλάσης 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 Universal Serial Bus, 28/10/2004, Έκδοση 1.12.
Κλάση HID συσκευής USB πάνω απόview
Υπερview
Μια συσκευή HID αποτελείται από τα ακόλουθα τελικά σημεία:
Ένα ζεύγος τελικών σημείων ελέγχου IN και OUT που ονομάζεται προεπιλεγμένο τελικό σημείο Ένα τελικό σημείο διακοπής IN Ένα προαιρετικό τελικό σημείο διακοπής OUT
Ο παρακάτω πίνακας περιγράφει τη χρήση των διαφόρων τελικών σημείων:
Πίνακας – Χρήση τελικών σημείων κλάσης HID

Χρήση κατεύθυνσης τελικού σημείου

Έλεγχος ΕΙΣ
Ελεγχος
ΕΞΩ
Διακοπή ΕΙΣΟΔΟΥ
Διακοπή
ΕΞΩ

Συσκευή-προς-κεντρικό υπολογιστή
Κεντρικός υπολογιστής-προς-συσκευή
Συσκευή-προς-κεντρικό υπολογιστή
Κεντρικός υπολογιστής-προς-συσκευή

Τυπικά αιτήματα για απαρίθμηση, αιτήματα ειδικά για κλάσεις και επικοινωνία δεδομένων (Είσοδος, Αναφορές χαρακτηριστικών που αποστέλλονται στον κεντρικό υπολογιστή με αίτημα GET_REPORT). Τυπικά αιτήματα για απαρίθμηση, αιτήματα ειδικά για κλάσεις και επικοινωνία δεδομένων (Έξοδος, Αναφορές χαρακτηριστικών που ελήφθησαν από τον κεντρικό υπολογιστή με αίτημα SET_REPORT). Επικοινωνία δεδομένων (Είσοδος και Αναφορές χαρακτηριστικών).
Επικοινωνία δεδομένων (Αναφορές εξόδου και χαρακτηριστικών).

Εκθεση

Πνευματικά δικαιώματα © 2025 Silicon Laboratories. Με την επιφύλαξη παντός δικαιώματος.

29/174

Υπερview

Ένας κεντρικός υπολογιστής και μια συσκευή HID ανταλλάσσουν δεδομένα χρησιμοποιώντας αναφορές. Μια αναφορά περιέχει μορφοποιημένα δεδομένα που παρέχουν πληροφορίες σχετικά με τα στοιχεία ελέγχου και άλλες φυσικές οντότητες της συσκευής HID. Ένα στοιχείο ελέγχου είναι χειριζόμενο από τον χρήστη και χειρίζεται μια πτυχή της συσκευής. Για παράδειγμαampΓια παράδειγμα, ένα στοιχείο ελέγχου μπορεί να είναι ένα κουμπί σε ένα ποντίκι ή ένα πληκτρολόγιο, ένας διακόπτης κ.λπ. Άλλες οντότητες ενημερώνουν τον χρήστη για την κατάσταση ορισμένων λειτουργιών της συσκευής. Για παράδειγμαampΓια παράδειγμα, οι λυχνίες LED σε ένα πληκτρολόγιο ειδοποιούν τον χρήστη ότι το Caps Lock είναι ενεργό, το αριθμητικό πληκτρολόγιο είναι ενεργό κ.λπ.
Η μορφή και η χρήση των δεδομένων μιας αναφοράς γίνεται κατανοητή από τον κεντρικό υπολογιστή αναλύοντας το περιεχόμενο ενός περιγραφέα αναφοράς. Η ανάλυση του περιεχομένου γίνεται από έναν αναλυτή. Ο περιγραφέας αναφοράς περιγράφει δεδομένα που παρέχονται από κάθε στοιχείο ελέγχου σε μια συσκευή. Αποτελείται από στοιχεία που είναι τμήματα πληροφοριών σχετικά με τη συσκευή και αποτελούνται από ένα πρόθεμα 1 byte και μεταβλητού μήκους.
δεδομένα. Για περισσότερες λεπτομέρειες σχετικά με τη μορφή του στοιχείου, ανατρέξτε στην ενότητα
1.11=, ενότητα 5.6 και 6.2.2.
Υπάρχουν τρεις κύριοι τύποι αντικειμένων:
Το κύριο στοιχείο ορίζει ή ομαδοποιεί ορισμένους τύπους πεδίων δεδομένων.
Το καθολικό στοιχείο περιγράφει τα χαρακτηριστικά δεδομένων ενός στοιχείου ελέγχου.
Το τοπικό στοιχείο περιγράφει τα χαρακτηριστικά δεδομένων ενός στοιχείου ελέγχου.
Κάθε τύπος στοιχείου ορίζεται από διαφορετικές συναρτήσεις. Μια συνάρτηση στοιχείου μπορεί επίσης να ονομαστεί tagΜια συνάρτηση στοιχείου μπορεί να θεωρηθεί ως ένα υπο-στοιχείο που ανήκει σε έναν από τους τρεις κύριους τύπους στοιχείων. Ο παρακάτω πίνακας παρέχει μια σύντομη περιγραφήview των λειτουργιών του item9 σε κάθε τύπο στοιχείου. Για μια πλήρη περιγραφή των στοιχείων σε κάθε κατηγορία, βλ.
Πίνακας – Περιγραφή Λειτουργίας Αντικειμένου για Κάθε Τύπο Αντικειμένου

Τύπος στοιχείου Λειτουργία

Περιγραφή

Κύρια είσοδος

Περιγράφει πληροφορίες σχετικά με τα δεδομένα που παρέχονται από ένα ή περισσότερα φυσικά στοιχεία ελέγχου.

Κύρια έξοδος Περιγράφει τα δεδομένα που αποστέλλονται στη συσκευή.

Κύριο χαρακτηριστικό

Περιγράφει πληροφορίες διαμόρφωσης συσκευής που αποστέλλονται ή λαμβάνονται από τη συσκευή και οι οποίες επηρεάζουν τη συνολική συμπεριφορά της συσκευής ή ενός από τα στοιχεία της.

Στοιχεία που σχετίζονται με την κύρια ομάδα συλλογής (Είσοδος, Έξοδος ή Χαρακτηριστικό).

Κύριο Τέλος Κλείνει μια συλλογή. Συλλογή

Πνευματικά δικαιώματα © 2025 Silicon Laboratories. Με την επιφύλαξη παντός δικαιώματος.

30/174

Υπερview

Τύπος στοιχείου Λειτουργία

Περιγραφή

Σελίδα Παγκόσμιας Χρήσης

Προσδιορίζει μια λειτουργία που είναι διαθέσιμη στη συσκευή.

Καθολική Λογική Ορίζει το κατώτερο όριο των αναφερόμενων τιμών σε λογικές μονάδες. Ελάχιστη

Καθολική Λογική Ορίζει το ανώτατο όριο των αναφερόμενων τιμών σε λογικές μονάδες. Μέγιστο

Καθολικό Φυσικό Ορίζει το κατώτερο όριο των αναφερόμενων τιμών σε φυσικές μονάδες, δηλαδή το Λογικό Ελάχιστο Ελάχιστο που εκφράζεται σε φυσικές μονάδες.

Καθολική Φυσική Ορίζει το ανώτατο όριο των αναφερόμενων τιμών σε φυσικές μονάδες, δηλαδή το Λογικό Μέγιστο. Το μέγιστο εκφράζεται σε φυσικές μονάδες.

Παγκόσμια Μονάδα

Υποδεικνύει τον εκθέτη μονάδας σε βάση 10. Ο εκθέτης κυμαίνεται από -8 έως +7.

Εκθέτης

Παγκόσμια Μονάδα

Υποδεικνύει τη μονάδα των αναφερόμενων τιμών. Για παράδειγμα, μονάδες μήκους, μάζας, θερμοκρασίας κ.λπ.

Μέγεθος καθολικής αναφοράς

Υποδεικνύει το μέγεθος των πεδίων αναφοράς σε bit.

Καθολικό αναγνωριστικό αναφοράς Υποδεικνύει το πρόθεμα που προστίθεται σε μια συγκεκριμένη αναφορά.

Παγκόσμιος αριθμός αναφορών

Υποδεικνύει τον αριθμό των πεδίων δεδομένων για ένα στοιχείο.

Παγκόσμια ώθηση

Τοποθετεί ένα αντίγραφο του καθολικού πίνακα κατάστασης στοιχείων στη στοίβα της CPU.

Παγκόσμια ποπ

Αντικαθιστά τον πίνακα κατάστασης στοιχείων με την τελευταία δομή από τη στοίβα.

Τοπική Χρήση

Αντιπροσωπεύει ένα ευρετήριο για τον ορισμό μιας συγκεκριμένης Χρήσης μέσα σε μια Σελίδα Χρήσης. Υποδεικνύει την προτεινόμενη από τον προμηθευτή χρήση για ένα συγκεκριμένο στοιχείο ελέγχου ή ομάδα στοιχείων ελέγχου. Μια χρήση παρέχει πληροφορίες σε έναν προγραμματιστή εφαρμογών σχετικά με το τι μετρά στην πραγματικότητα ένα στοιχείο ελέγχου.

Τοπική Χρήση

Ορίζει την αρχική χρήση που σχετίζεται με έναν πίνακα ή ένα bitmap.

Ελάχιστο

Τοπική Χρήση

Ορίζει τη χρήση λήξης που σχετίζεται με έναν πίνακα ή ένα bitmap.

Ανώτατο όριο

Τοπικός Προσδιοριστής Καθορίζει το μέρος του σώματος που χρησιμοποιείται για έναν έλεγχο. Ο δείκτης υποδεικνύει έναν προσδιοριστή στο Φυσικό

Δείκτης

περιγραφέας.

Τοπικός προσδιοριστής Ορίζει τον δείκτη του αρχικού προσδιοριστή που σχετίζεται με έναν πίνακα ή bitmap. Ελάχιστο

Τοπικός προσδιοριστής Ορίζει τον δείκτη του τελικού προσδιοριστή που σχετίζεται με έναν πίνακα ή bitmap. Μέγιστο

Τοπικός Δείκτης Συμβολοσειράς

Δείκτης συμβολοσειράς για έναν περιγραφέα συμβολοσειράς. Επιτρέπει τη συσχέτιση μιας συμβολοσειράς με ένα συγκεκριμένο στοιχείο ή στοιχείο ελέγχου.

Τοπική συμβολοσειρά

Καθορίζει τον πρώτο δείκτη συμβολοσειράς κατά την αντιστοίχιση μιας ομάδας διαδοχικών συμβολοσειρών σε στοιχεία ελέγχου σε έναν πίνακα

Ελάχιστο ή bitmap.

Τοπικό

Μέγιστο όριο συμβολοσειράς
Οριοθέτης

Καθορίζει τον δείκτη της τελευταίας συμβολοσειράς κατά την αντιστοίχιση μιας ομάδας διαδοχικών συμβολοσειρών σε στοιχεία ελέγχου σε έναν πίνακα ή bitmap.
Ορίζει την αρχή ή το τέλος ενός συνόλου τοπικών στοιχείων.

Ένα δεδομένο ελέγχου9 πρέπει να ορίζει τουλάχιστον τα ακόλουθα στοιχεία:
Είσοδος, Έξοδος ή Χαρακτηριστικό Κύρια στοιχεία Χρήση Τοπικό στοιχείο Χρήση Σελίδα Καθολικό στοιχείο Λογικό Ελάχιστο Καθολικό στοιχείο Λογικό Μέγιστο Καθολικό στοιχείο Μέγεθος αναφοράς Καθολικό στοιχείο

Πνευματικά δικαιώματα © 2025 Silicon Laboratories. Με την επιφύλαξη παντός δικαιώματος.

31/174

Υπερview
Καθολικό στοιχείο αριθμού αναφορών Ο παρακάτω πίνακας δείχνει την αναπαράσταση ενός περιεχομένου περιγραφής αναφοράς ποντικιού από την οπτική γωνία ενός αναλυτή HID κεντρικού υπολογιστή. Το ποντίκι έχει τρία κουμπιά (αριστερά, δεξιά και τροχό). Ο κώδικας που παρουσιάζεται στο παράδειγμαampΠαρακάτω είναι μια υλοποίηση κώδικα που αντιστοιχεί σε αυτήν την αναπαράσταση περιγραφέα αναφοράς ποντικιού.
Σχήμα – Περιεχόμενο περιγραφής αναφοράς από έναν αναλυτή HID κεντρικού υπολογιστή View

(1) Η λειτουργία στοιχείου Σελίδα Χρήσης καθορίζει τη γενική λειτουργία της συσκευής. Σε αυτό το παράδειγμαampδηλαδή, η συσκευή HID ανήκει σε ένα
γενικός έλεγχος επιφάνειας εργασίας.
(2) Η Συλλογή Εφαρμογής ομαδοποιεί τα Κύρια στοιχεία που έχουν κοινό σκοπό και μπορεί να είναι οικεία σε εφαρμογές. Στο διάγραμμα, η ομάδα αποτελείται από τρία Κύρια στοιχεία Εισόδου. Για αυτήν τη συλλογή, η προτεινόμενη χρήση για τα στοιχεία ελέγχου είναι ένα ποντίκι, όπως υποδεικνύεται από το στοιχείο Χρήσης. (3) Οι ένθετες συλλογές μπορούν να χρησιμοποιηθούν για να δώσουν περισσότερες λεπτομέρειες σχετικά με τη χρήση ενός μόνο στοιχείου ελέγχου ή ομάδας στοιχείων ελέγχου σε εφαρμογές. Σε αυτό το παράδειγμαampΔηλαδή, το Collection Physical, ενσωματωμένο στην Collection Application, αποτελείται από τα ίδια τρία στοιχεία εισόδου που αποτελούν την Collection Application. Το Collection Physical χρησιμοποιείται για ένα σύνολο στοιχείων δεδομένων που αντιπροσωπεύουν σημεία δεδομένων που συλλέγονται σε ένα γεωμετρικό σημείο. Στην περίπτωση αυτήampΔηλαδή, η προτεινόμενη χρήση είναι ένας δείκτης όπως υποδεικνύεται από το στοιχείο Χρήσης. Εδώ, η χρήση του δείκτη αναφέρεται στις συντεταγμένες θέσης του ποντικιού και το λογισμικό συστήματος θα μεταφράσει τις συντεταγμένες του ποντικιού κατά την κίνηση του κέρσορα της οθόνης. (4) Είναι επίσης δυνατές ένθετες σελίδες χρήσης και παρέχουν περισσότερες λεπτομέρειες σχετικά με μια συγκεκριμένη πτυχή της γενικής λειτουργίας της συσκευής. Σε αυτήν την περίπτωση, δύο στοιχεία Εισόδου ομαδοποιούνται και αντιστοιχούν στα κουμπιά του ποντικιού. Ένα στοιχείο Εισόδου ορίζει τα τρία κουμπιά του ποντικιού (δεξιά, αριστερά και τροχός) ως προς τον αριθμό των πεδίων δεδομένων για το στοιχείο (στοιχείο Πλήθος Αναφοράς), το μέγεθος ενός πεδίου δεδομένων (στοιχείο Μέγεθος Αναφοράς) και τις πιθανές τιμές για κάθε πεδίο δεδομένων (στοιχεία Ελάχιστης και Μέγιστης Χρήσης, Λογικό Ελάχιστο και Μέγιστο). Το άλλο στοιχείο Εισόδου είναι μια σταθερά 13 bit που επιτρέπει την ευθυγράμμιση των δεδομένων αναφοράς Εισόδου σε ένα όριο byte. Αυτό το στοιχείο Εισόδου χρησιμοποιείται μόνο για λόγους συμπλήρωσης. (5) Μια άλλη ένθετη σελίδα χρήσης που αναφέρεται σε ένα γενικό στοιχείο ελέγχου επιφάνειας εργασίας ορίζεται για τις συντεταγμένες θέσης του ποντικιού. Για αυτήν τη σελίδα χρήσης, το στοιχείο Εισόδου περιγράφει τα πεδία δεδομένων που αντιστοιχούν στον άξονα x και y όπως καθορίζεται από τα δύο στοιχεία Χρήσης.
είδη.
Αφού αναλύσει το προηγούμενο περιεχόμενο της περιγραφής αναφοράς του ποντικιού, ο αναλυτής HID του host9s είναι σε θέση να ερμηνεύσει τα δεδομένα αναφοράς εισόδου που αποστέλλονται από τη συσκευή με μεταφορά διακοπής εισόδου ή σε απάντηση σε ένα αίτημα GET_REPORT. Τα δεδομένα αναφοράς εισόδου που αντιστοιχούν στον περιγραφέα αναφοράς του ποντικιού φαίνονται στο Σχήμα - Περιεχόμενο περιγραφής αναφοράς από έναν αναλυτή HID κεντρικού υπολογιστή. View is

Πνευματικά δικαιώματα © 2025 Silicon Laboratories. Με την επιφύλαξη παντός δικαιώματος.

32/174

Υπερview

φαίνεται στον παρακάτω πίνακα. Το συνολικό μέγεθος των δεδομένων αναφοράς είναι 4 byte. Διαφορετικοί τύποι αναφορών μπορούν να αποσταλούν μέσω του ίδιου τελικού σημείου. Για τον σκοπό της διάκρισης των διαφορετικών τύπων αναφορών, προστίθεται ένα πρόθεμα αναγνωριστικού αναφοράς 1 byte στην αναφορά δεδομένων. Εάν χρησιμοποιήθηκε αναγνωριστικό αναφοράς στηνampτης αναφοράς του ποντικιού, το συνολικό μέγεθος των δεδομένων της αναφοράς θα είναι 5 byte.
Πίνακας – Αναφορά εισόδου που στάλθηκε στον κεντρικό υπολογιστή και αντιστοιχεί στην κατάσταση ενός ποντικιού με 3 κουμπιά

Μετατόπιση bit
0 1 2 3 16 24

Αριθμός bit 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 NSTANCE_QUANTITY
SL_USBD_HID_CONFIG URATION_QUANTITY
SL_USBD_HID_REPORT_ ID_QUANTITY
SL_USBD_HID_PUSH_P OP_ITEM_QUANTITY
SL_USBD_HID_TIMER_T ASK_STACK_SIZE
SL_USBD_HID_TIMER_T ASK_PRIORITY

Περιγραφή
Αριθμός στιγμιότυπων κλάσης που θα εκχωρήσετε μέσω μιας κλήσης στη συνάρτηση
sl_usbd_hid_create_instance().
Αριθμός διαμορφώσεων. Οι παρουσίες κλάσης HID μπορούν να προστεθούν σε μία ή περισσότερες διαμορφώσεις aaaa μέσω της συνάρτησης sl_usbd_hid_add_to_configuration(). Διαμορφώνει τον συνολικό αριθμό των ID αναφορών που θα εκχωρηθούν.
Ρυθμίζει τον συνολικό αριθμό στοιχείων Push/Pop που θα εκχωρηθούν.
Η εργασία χρονοδιακόπτη χειρίζεται όλες τις λειτουργίες HID που βασίζονται σε χρονοδιακόπτη. Αυτή η διαμόρφωση σάς επιτρέπει να ορίσετε το μέγεθος της στοίβας (σε αριθμό byte). Προτεραιότητα της εργασίας HID. Αυτή είναι μια προτεραιότητα CMSIS-RTOS2.

Προεπιλεγμένη τιμή
2 1 2 0 2048
osPriorityHigh

Διαμορφώσεις στιγμιότυπου κλάσης HID συσκευής USB Δημιουργία στιγμιότυπου κλάσης Υποκλάση
πρωτόκολλο country_code
interval_in και interval_out p_hid_callback Περιγραφή αναφοράς κλάσης HID ExampΑυτή η ενότητα ορίζει τις διαμορφώσεις που σχετίζονται με τις παρουσίες της κλάσης HID.
Δημιουργία στιγμιότυπου κλάσης
Η δημιουργία μιας παρουσίας κλάσης HID γίνεται καλώντας τη συνάρτηση aaa sl_usbd_hid_create_instance(), η οποία χρησιμοποιεί διάφορα ορίσματα διαμόρφωσης που περιγράφονται παρακάτω.
υποδιαίρεση τάξεως
Κωδικός της υποκλάσης HID. Πιθανές τιμές είναι:
SL_USBD_HID_SUBCL ASS_NONE SL_USBD_HID_SUBCL ASS_BOOT
Μια συσκευή HID που χρησιμοποιεί την υποκλάση εκκίνησης πρέπει να χρησιμοποιεί τυπικές μορφές αναφοράς. Για περισσότερες πληροφορίες σχετικά με τους κωδικούς υποκλάσεων, ανατρέξτε στην ενότητα 4.2 της προδιαγραφής HID, αναθεώρηση 1.11.
πρωτόκολλο
Πρωτόκολλο που χρησιμοποιείται από τη συσκευή HID. Πιθανές τιμές είναι:
SL_USBD_HID_PROTOCOL_NONE SL_USBD_HID_PROTOCOL_KBD SL_USBD_HID_PROTOCOL_MOUSE
Εάν η συνάρτηση HID σας είναι ποντίκι, το πρωτόκολλο θα πρέπει να οριστεί σε SL_USBD_HID_PROTOCOL_MOUSE. Εάν είναι πληκτρολόγιο, θα πρέπει να οριστεί σε SL_USBD_HID_PROTOCOL_KBD. Διαφορετικά, το πρωτόκολλο θα πρέπει να οριστεί σε SL_USBD_HID_PROTOCOL_NONE. Για περισσότερες πληροφορίες σχετικά με τους κωδικούς υποκλάσεων, ανατρέξτε στην ενότητα 4.3 της αναθεώρησης 1.11 της προδιαγραφής HID.
κωδικός_χώρας
Αναγνωριστικό του κωδικού χώρας. Πιθανές τιμές είναι:
SL_USBD_HID_CODE_CODE_NOT_SUPPORTED

Πνευματικά δικαιώματα © 2025 Silicon Laboratories. Με την επιφύλαξη παντός δικαιώματος.

34/174

Υπερview
SL_USBD_HID_COUNTRY_CODE_ARABIC SL_USBD_HID_COUNTRY_CODE_BELGIAN SL_USBD_HID_COUNTRY_CODE_CANADIAN_BILINGUAL SL_USBD_HID_COUNTRY_CODE_CANADIAN_FRENCH SL_USBD_HID_COUNTRY_CODE_CZECH_REPUBLIC SL_USBD_HID_COUNTRY_CODE_DANISH SL_USBD_HID_COUNTRY_CODE_FINNISH SL_USBD_HID_COUNTRY_CODE_FRENCH SL_USBD_HID_COUNTRY_CODE_GERMAN SL_USBD_HID_COUNTRY_CODE_GREEK SL_USBD_HID_COUNTRY_CODE_HEBREW SL_USBD_HID_COUNTRY_CODE_HUNGARY SL_USBD_HID_COUNTRY_CODE_INTERNATIONAL SL_USBD_HID_COUNTRY_CODE_ITALIAN SL_USBD_HID_COUNTRY_CODE_JAPAN_KATAKANA SL_USBD_HID_COUNTRY_CODE_KOREAN SL_USBD_HID_COUNTRY_CODE_L ATIN_AMERICAN SL_USBD_HID_COUNTRY_CODE_NETHERL ΚΑΙ DUTCH SL_USBD_HID_COUNTRY_CODE_NORWEGIAN SL_USBD_HID_COUNTRY_CODE_PERSIAN_FARSI SL_USBD_HID_COUNTRY_CODE_POL ΚΑΙ 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 αντιπροσωπεύουν το διάστημα polling του τελικού σημείου διακοπής IN και του τελικού σημείου διακοπής OUT.
Αυτό αντιπροσωπεύει το διάστημα σταθμοσκόπησης του τελικού σημείου, σε χιλιοστά του δευτερολέπτου. Ο ορισμός αυτής της τιμής εξαρτάται από το πόσο συχνά η συσκευή σας είναι επιρρεπής στη δημιουργία μιας νέας αναφοράς για τον κεντρικό υπολογιστή. Για παράδειγμα, εάν μια αναφορά δημιουργείται κάθε 16 χιλιοστά του δευτερολέπτου, το διάστημα θα πρέπει να είναι 16 ή λιγότερο.
Η τιμή πρέπει να είναι δύναμη του 2 (1, 2, 4, 8, 16, κ.λπ.).
Ένα interval_out v lue αγνοείται εάν το ctrl_rd_en έχει οριστεί σε true.
p_hid_callback
aaaa Το p_hid_callback είναι ένας δείκτης σε δομή τύπου sl_usbd_hid_callbacks_t. Σκοπός του είναι να δώσει στο HID Cl ss σύνολο συναρτήσεων επανάκλησης που θα καλούνται όταν προκύπτει ένα συμβάν HID.

Πνευματικά δικαιώματα © 2025 Silicon Laboratories. Με την επιφύλαξη παντός δικαιώματος.

35/174

Υπερview

Δεν είναι όλες οι επανακλήσεις υποχρεωτικές και ένας δείκτης null (NULL) μπορεί να περάσει στη μεταβλητή δομής επανακλήσεων όταν δεν χρειάζεται η επανακλήση. Ο παρακάτω πίνακας περιγράφει κάθε πεδίο διαμόρφωσης που είναι διαθέσιμο σε αυτήν τη δομή διαμόρφωσης.
Πίνακας – Δομή διαμόρφωσης sl_usbd_hid_callbacks_t

Πεδία

Περιγραφή

Υπογραφή συνάρτησης

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

Καλείται όταν η παρουσία κλάσης USB ενεργοποιηθεί με επιτυχία. Καλείται όταν η παρουσία κλάσης USB απενεργοποιηθεί.
Καλείται κατά τη δημιουργία της Στιγμιαίας Παρουσίας HID για να διαβιβαστεί ο περιγραφέας αναφοράς σας. Για κάθε μία από τις συναρτήσεις HID, πρέπει να παρέχετε έναν περιγραφέα αναφοράς. Ο περιγραφέας αναφοράς υποδεικνύει στον κεντρικό υπολογιστή πώς πρέπει να αναλυθεί η περιοδική αναφορά που θα σταλεί από τη συσκευή. Η σύνταξη του δικού σας περιγραφέα αναφοράς μπορεί να είναι δύσκολη και γι' αυτό υπάρχουν ορισμένοι πόροι που μπορούν να σας βοηθήσουν. Αυτή είναι η μόνη υποχρεωτική συνάρτηση επανάκλησης. Καλείται κατά τη δημιουργία της Στιγμιαίας Παρουσίας HID για να διαβιβαστεί ο φυσικός σας περιγραφέας. Ο φυσικός περιγραφέας είναι ένας περιγραφέας που παρέχει πληροφορίες σχετικά με το συγκεκριμένο μέρος ή μέρη του ανθρώπινου σώματος που ενεργοποιούν ένα ή περισσότερα στοιχεία ελέγχου. Για περισσότερες πληροφορίες σχετικά με τους φυσικούς περιγραφείς, ανατρέξτε στην ενότητα 6.2.3 της αναθεώρησης 1.11 των προδιαγραφών HID. Ο φυσικός περιγραφέας είναι προαιρετικός και τις περισσότερες φορές αγνοείται. Το buffer που διαβιβάζεται εδώ μπορεί να οριστεί σε NULL και το μήκος να οριστεί σε 0. Καλείται όταν ο κεντρικός υπολογιστής ορίζει μια αναφορά όπως περιγράφεται στον περιγραφέα αναφοράς σας (όταν στέλνει μια αναφορά).
Καλείται όταν ο κεντρικός υπολογιστής ζητά μια αναφορά χαρακτηριστικού όπως περιγράφεται στην περιγραφή της αναφοράς σας.
Καλείται όταν ο κεντρικός υπολογιστής ορίζει μια αναφορά χαρακτηριστικών όπως περιγράφεται στην περιγραφή της αναφοράς σας.

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

.get_protocol

Ανακτά το τρέχον ενεργό πρωτόκολλο.

void app_usbd_hid_get_protocol(uint8_t class_nbr, uint8_t *p_protocol);

.set_protocol

Ορίζει το τρέχον ενεργό πρωτόκολλο.

void app_usbd_hid_set_protocol(uint8_t class_nbr, πρωτόκολλο uint8_t);

Περιγραφή αναφοράς κλάσης HID Example

Κλάσεις HID της Silicon Labsampη εφαρμογή παρέχει ένα παράδειγμαampενός περιγραφέα αναφοράς για ένα απλό ποντίκι. Το exampΤο παρακάτω δείχνει μια περιγραφή αναφοράς ποντικιού.
Example – Περιγραφέας αναφοράς ποντικιού

στατικό uint8_t app_usbd_hid_report_desc[] = {

(1) (2)

SL_USBD_HID_GLOBAL_USAGE_PAGE + 1, SL_USBD_HID_USAGE_PAGE_GENERIC_DESKTOP_CONTROLS,

SL_USBD_HID_LOCAL_USAGE + 1, SL_USBD_HID_CA_MOUSE,

(3)

Πνευματικά δικαιώματα © 2025 Silicon Laboratories. Με την επιφύλαξη παντός δικαιώματος.

36/174

Υπερview

SL_USBD_HID_MAIN_COLLECTION +1, SL_USBD_HID_COLLECTION_APPLICATION,(4)

SL_USBD_HID_LOCAL_USAGE +1, SL_USBD_HID_CP_POINTER,(5)

SL_USBD_HID_MAIN_COLLECTION +1, SL_USBD_HID_COLLECTION_PHYSICAL,(6)

SL_USBD_HID_GLOBAL_USAGE_PAGE +1, SL_USBD_HID_USAGE_PAGE_BUTTON,(7)

SL_USBD_HID_LOCAL_USAGE_MIN +1,0 01,

SL_USBD_HID_LOCAL_USAGE_MAX +1,0 03,

SL_USBD_HID_GLOBAL_LOG_MIN +1,0 00,

SL_USBD_HID_GLOBAL_LOG_MAX +1,0 01,

SL_USBD_HID_GLOBAL_REPORT_COUNT +1,0 03,

SL_USBD_HID_GLOBAL_REPORT_SIZE +1,0 01,

SL_USBD_HID_MAIN_INPUT +1, SL_USBD_HID_MAIN_DATA |

SL_USBD_HID_MAIN_VARIABLE |

SL_USBD_HID_MAIN_ABSOLUTE,

SL_USBD_HID_GLOBAL_REPORT_COUNT +1,0 01,(8)

SL_USBD_HID_GLOBAL_REPORT_SIZE +1,0 0D,

SL_USBD_HID_MAIN_INPUT +1, SL_USBD_HID_MAIN_CONSTANT,(9)

SL_USBD_HID_GLOBAL_USAGE_PAGE +1, SL_USBD_HID_USAGE_PAGE_GENERIC_DESKTOP_CONTROLS,

SL_USBD_HID_LOCAL_USAGE +1, SL_USBD_HID_DV_X,

SL_USBD_HID_LOCAL_USAGE +1, SL_USBD_HID_DV_Y,

SL_USBD_HID_GLOBAL_LOG_MIN +1,0 81,

SL_USBD_HID_GLOBAL_LOG_MAX +1,0 7F,

SL_USBD_HID_GLOBAL_REPORT_SIZE +1,0 08,

SL_USBD_HID_GLOBAL_REPORT_COUNT +1,0 02,

SL_USBD_HID_MAIN_INPUT +1, SL_USBD_HID_MAIN_DATA |

SL_USBD_HID_MAIN_VARIABLE |

SL_USBD_HID_MAIN_RELATIVE,

SL_USBD_HID_MAIN_ENDCOLLECTION,(10)

ΣΥΛΛΟΓΗ SL_USBD_HID_MAIN_END

(11)};

(1) Ο πίνακας που αντιπροσωπεύει έναν περιγραφέα αναφοράς ποντικιού αρχικοποιείται με τέτοιο τρόπο ώστε κάθε γραμμή να αντιστοιχεί σε ένα σύντομο στοιχείο. Το τελευταίο σχηματίζεται από ένα πρόθεμα 1 byte και δεδομένα 1 byte. Ανατρέξτε στο viewεπεξεργασμένο από έναν αναλυτή HID κεντρικού υπολογιστή στο Σχήμα – Περιεχόμενο περιγραφής αναφοράς από έναν αναλυτή HID κεντρικού υπολογιστή View.
(2) Χρησιμοποιείται η σελίδα Γενικής Χρήσης Επιφάνειας Εργασίας.
(3) Στη σελίδα Γενικής Χρήσης Επιφάνειας Εργασίας, η χρήση tag υποδηλώνει ότι η ομάδα χειριστηρίων προορίζεται για τον έλεγχο ενός ποντικιού. Μια συλλογή ποντικιών αποτελείται συνήθως από δύο άξονες (X και Y) και ένα, δύο ή τρία κουμπιά.
(4) Η συλλογή ποντικιών ξεκινά.
(5) Μέσα στη συλλογή ποντικιών, μια χρήση tag υποδηλώνει πιο συγκεκριμένα ότι τα στοιχεία ελέγχου του ποντικιού ανήκουν στη συλλογή δεικτών. Μια συλλογή δεικτών είναι μια συλλογή αξόνων που παράγει μια τιμή για να κατευθύνει, να υποδεικνύει ή να υποδεικνύει τις προθέσεις του χρήστη σε μια εφαρμογή.
(6) Η συλλογή δεικτών ξεκινά.
(7) Η σελίδα χρήσης κουμπιών ορίζει ένα στοιχείο εισόδου που αποτελείται από τρία πεδία του 1 bit. Κάθε πεδίο του 1 bit αντιπροσωπεύει το κουμπί 1, 2 και 3 του mouse9 αντίστοιχα και μπορεί να επιστρέψει την τιμή 0 ή 1.
(8) Το στοιχείο εισόδου για τη σελίδα χρήσης κουμπιών συμπληρώνεται με 13 άλλα bit.
(9) Μια άλλη σελίδα Γενικής Χρήσης Επιφάνειας Εργασίας υποδεικνύεται για την περιγραφή της θέσης του ποντικιού με τους άξονες X και Y. Το στοιχείο Εισαγωγής αποτελείται από δύο πεδία 8-bit των οποίων η τιμή μπορεί να κυμαίνεται μεταξύ -127 και 127.
(10) Η συλλογή δεικτών είναι κλειστή.
(11) Η συλλογή ποντικιών είναι κλειστή.
Σελίδα HID του USB.org

Πνευματικά δικαιώματα © 2025 Silicon Laboratories. Με την επιφύλαξη παντός δικαιώματος.

37/174

Υπερview
Το Φόρουμ Υλοποιητών USB (USB-IF) παρέχει ένα εργαλείο που ονομάζεται «Εργαλείο Περιγραφής HID» μαζί με άλλες πληροφορίες σχετικά με τη μορφή περιγραφής αναφοράς. Ανατρέξτε στη διεύθυνση http://www.usb.org/developers/hidpage/ για περισσότερες πληροφορίες.
Οδηγός προγραμματισμού κλάσης HID συσκευής USB
Αυτή η ενότητα εξηγεί τον τρόπο χρήσης της κλάσης HID. Αρχικοποίηση της κλάσης HID συσκευής USB Προσθήκη μιας παρουσίας κλάσης HID συσκευής USB στη συσκευή σας Επικοινωνία χρησιμοποιώντας την κλάση HID συσκευής USB
Αρχικοποίηση της κλάσης HID της συσκευής USB
Για να προσθέσετε λειτουργικότητα κλάσης HID στη συσκευή σας, πρέπει πρώτα να αρχικοποιήσετε την κλάση καλώντας τη συνάρτηση sl_usbd_hid_init(). Η π.χ.ampΠαρακάτω φαίνεται πώς να καλέσετε τη συνάρτηση 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 στη συσκευή σας, πρέπει να δημιουργήσετε μια παρουσία και, στη συνέχεια, να την προσθέσετε στις ρυθμίσεις παραμέτρων της συσκευής σας.
Δημιουργία μιας παρουσίας κλάσης 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
/* Καθολικές σταθερές. */ static const uint8_t app_usbd_hid_mouse_report_desc[] = {
SL_USBD_HID_GLOBAL_USAGE_PAGE + 1, SL_USBD_HID_USAGE_PAGE_GENERIC_DESKTOP_CONTROLS, SL_USBD_HID_LOCAL_USAGE + 1, SL_USBD_HID_CA_MOUSE, SL_USBD_HID_MAIN_COLLECTION + 1, SL_USBD_HID_COLLECTION_APPLICATION, SL_USBD_HID_LOCAL_USAGE + 1, SL_USBD_HID_CP_POINTER, SL_USBD_HID_MAIN_COLLECTION + 1, SL_USBD_HID_COLLECTION_PHYSICAL, SL_USBD_HID_GLOBAL_USAGE_PAGE + 1, SL_USBD_HID_USAGE_PAGE_BUTTON, SL_USBD_HID_LOCAL_USAGE_MIN + 1, 0 01, SL_USBD_HID_LOCAL_USAGE_MAX + 1, 0 03, SL_USBD_HID_GLOBAL_LOG_MIN + 1, 0 00, SL_USBD_HID_GLOBAL_LOG_MAX + 1, 0 01, SL_USBD_HID_GLOBAL_REPORT_COUNT + 1, 0 03, SL_USBD_HID_GLOBAL_REPORT_SIZE + 1, 0 01, SL_USBD_HID_MAIN_INPUT + 1, SL_USBD_HID_MAIN_DATA | SL_USBD_HID_MAIN_VARIABLE | SL_USBD_HID_MAIN_ABSOLUTE, SL_USBD_HID_GLOBAL_REPORT_COUNT + 1, 0 01, SL_USBD_HID_GLOBAL_REPORT_SIZE + 1, 0 0D, SL_USBD_HID_MAIN_INPUT + 1, SL_USBD_HID_MAIN_CONSTANT, SL_USBD_HID_GLOBAL_USAGE_PAGE + 1, SL_USBD_HID_USAGE_PAGE_GENERIC_DESKTOP_CONTROLS, SL_USBD_HID_LOCAL_USAGE + 1, SL_USBD_HID_DV_X, SL_USBD_HID_LOCAL_USAGE + 1, SL_USBD_HID_DV_Y, SL_USBD_HID_GLOBAL_LOG_MIN + 1, 0 81, SL_USBD_HID_GLOBAL_LOG_MAX + 1, 0 7F, SL_USBD_HID_GLOBAL_REPORT_SIZE + 1, 0 08, SL_USBD_HID_GLOBAL_REPORT_COUNT + 1, 0 02, SL_USBD_HID_MAIN_INPUT + 1, SL_USBD_HID_MAIN_DATA | SL_USBD_HID_MAIN_VARIABLE | SL_USBD_HID_MAIN_RELATIVE, SL_USBD_HID_MAIN_ENDCOLLECTION, SL_USBD_HID_MAIN_ENDCOLLECTION };
/* Τοπικές μεταβλητές.*/ uint8_t class_nbr; sl_status_t 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(class_nbr,

(1)

config_nbr_fs); (2)

αν (κατάσταση! SL_STATUS_OK) {

/* Παρουσιάστηκε σφάλμα. Εδώ θα πρέπει να προστεθεί χειρισμός σφαλμάτων. */

}

(1) Αριθμός κλάσης που θα προστεθεί στη διαμόρφωση που επιστρέφεται από την sl_usbd_hid_create_instance(). (2) Αριθμός διαμόρφωσης (εδώ προστίθεται σε μια διαμόρφωση πλήρους ταχύτητας).
Επικοινωνία με χρήση της κλάσης HID της συσκευής USB
Επικοινωνία Στιγμιότυπου Κλάσης Σύγχρονη Επικοινωνία Επικοινωνία Στιγμιότυπου Κλάσης Η κλάση HID προσφέρει τις ακόλουθες συναρτήσεις για την επικοινωνία με τον κεντρικό υπολογιστή.
Πίνακας – Σύνοψη API επικοινωνίας HID

Όνομα συνάρτησης
sl_usb d _hid _ re ad _sy nc() sl_usb d _hid _write _sy nc()

Λειτουργία Λαμβάνει δεδομένα από τον κεντρικό υπολογιστή μέσω του τελικού σημείου διακοπής OUT. Αυτή η συνάρτηση μπλοκάρει. Στέλνει δεδομένα στον κεντρικό υπολογιστή μέσω του τελικού σημείου διακοπής IN. Αυτή η συνάρτηση μπλοκάρει.

Σύγχρονη Επικοινωνία Η σύγχρονη επικοινωνία σημαίνει ότι η μεταφορά μπλοκάρεται. Κατά την κλήση της συνάρτησης, οι εφαρμογές μπλοκάρουν μέχρι να ολοκληρωθεί η μεταφορά με ή χωρίς σφάλμα. Μπορεί να καθοριστεί χρονικό όριο για να αποφευχθεί η αέναη αναμονή.ampΤο παρακάτω δείχνει μια λειτουργία ανάγνωσης και εγγραφής που λαμβάνει δεδομένα από τον κεντρικό υπολογιστή χρησιμοποιώντας το τελικό σημείο διακοπής OUT και στέλνει δεδομένα στον κεντρικό υπολογιστή χρησιμοποιώντας το τελικό σημείο διακοπής IN.
Example – Σύγχρονη ανάγνωση και εγγραφή HID

__ALIGNED(4) uint8_t rx_buf[2];

__ALIGNED(4) uint8_t tx_buf[2];

uint32_t

xfer_len;

sl_status_t

κατάσταση;

κατάσταση = sl_usbd_hid_read_sync(class_nbr,

(1)

(void *)rx_buf,

(2)

2u,

0u,

(3)

&xfer_len);

αν (κατάσταση! SL_STATUS_OK) {

/* Παρουσιάστηκε σφάλμα. Εδώ θα πρέπει να προστεθεί χειρισμός σφαλμάτων. */

}

Πνευματικά δικαιώματα © 2025 Silicon Laboratories. Με την επιφύλαξη παντός δικαιώματος.

40/174

Υπερview
status =sl_usbd_hid_read_sync(class_nbr,(1)(void *)rx_buf,(2)2u,0u,(3)&xfer_len);if(status ! SL_STATUS_OK){/* Παρουσιάστηκε σφάλμα. Εδώ θα πρέπει να προστεθεί χειρισμός σφαλμάτων. */}
status =sl_usbd_hid_write_sync(class_nbr,(1)(void *)tx_buf,(4)2u,0u,(3)&xfer_len);if(status ! SL_STATUS_OK){/* Παρουσιάστηκε σφάλμα. Εδώ θα πρέπει να προστεθεί χειρισμός σφαλμάτων. */}
(1) Ο αριθμός στιγμιότυπου κλάσης που δημιουργείται από την sl_usbd_hid_create_instance() παρέχει μια εσωτερική αναφορά για την κλάση HID για να δρομολογήσει τη μεταφορά στο κατάλληλο τελικό σημείο διακοπής OUT ή IN.
(2) Η εφαρμογή πρέπει να διασφαλίσει ότι το buffer που παρέχεται στη συνάρτηση είναι αρκετά μεγάλο για να χωρέσει όλα τα δεδομένα. Διαφορετικά, ενδέχεται να προκύψουν προβλήματα συγχρονισμού. Εσωτερικά, η λειτουργία ανάγνωσης γίνεται είτε με το τελικό σημείο ελέγχου είτε με το τελικό σημείο διακοπής, ανάλογα με τη σημαία ανάγνωσης ελέγχου που έχει οριστεί κατά την κλήση της sl_usbd_hid_create_instance().
(3) Για να αποφευχθεί μια κατάσταση άπειρου αποκλεισμού, μπορεί να καθοριστεί ένα χρονικό όριο που εκφράζεται σε χιλιοστά του δευτερολέπτου. Η τιμή 809 κάνει την εργασία εφαρμογής να περιμένει για πάντα.
(4) Η εφαρμογή παρέχει την αρχικοποιημένη προσωρινή μνήμη μετάδοσης.
Εργασία περιοδικών αναφορών εισαγωγής HID
Για εξοικονόμηση εύρους ζώνης, ο κεντρικός υπολογιστής έχει τη δυνατότητα να σιωπά τις αναφορές από ένα τελικό σημείο διακοπής εισόδου περιορίζοντας τη συχνότητα αναφοράς. Για να το κάνει αυτό, ο κεντρικός υπολογιστής πρέπει να στείλει το αίτημα SET_IDLE. Η κλάση HID που υλοποιείται από την Silicon Labs περιέχει μια εσωτερική εργασία που σέβεται τον περιορισμό συχνότητας αναφοράς, την οποία μπορείτε να εφαρμόσετε σε μία ή περισσότερες αναφορές εισόδου. Το Σχήμα Periodic Input Reports Task δείχνει τη λειτουργία των εργασιών περιοδικών αναφορών εισόδου.
Σχήμα – Εργασία περιοδικών αναφορών εισαγωγής

(1) Η συσκευή λαμβάνει ένα αίτημα SET_IDLE. Αυτό το αίτημα καθορίζει μια διάρκεια αδράνειας για ένα δεδομένο αναγνωριστικό αναφοράς. Για περισσότερες λεπτομέρειες σχετικά με το αίτημα SET_IDLE, βλ.
(2) Μια δομή αναγνωριστικού αναφοράς (που εκχωρείται κατά τη φάση αρχικοποίησης της κλάσης HID) ενημερώνεται με τη διάρκεια αδράνειας. Ένας μετρητής διάρκειας αδράνειας αρχικοποιείται με την τιμή διάρκειας αδράνειας. Η δομή αναγνωριστικού αναφοράς εισάγεται στο τέλος μιας συνδεδεμένης λίστας που περιέχει δομές αναγνωριστικού αναφορών εισόδου. Η τιμή διάρκειας αδράνειας εκφράζεται σε μονάδα 4 ms, η οποία δίνει ένα εύρος από 4 έως 1020 ms.

Πνευματικά δικαιώματα © 2025 Silicon Laboratories. Με την επιφύλαξη παντός δικαιώματος.

41/174

Υπερview
Εάν η διάρκεια αδράνειας είναι μικρότερη από το διάστημα σταθμοσκόπησης του τελικού σημείου διακοπής εισόδου, οι αναφορές δημιουργούνται στο διάστημα σταθμοσκόπησης.
(3) Κάθε 4 ms, η εργασία περιοδικής αναφοράς εισόδου αναζητά τη λίστα αναγνωριστικών αναφορών εισόδου. Για κάθε αναγνωριστικό αναφοράς εισόδου, η εργασία εκτελεί μία από τις δύο πιθανές λειτουργίες. Η διάρκεια της περιόδου εργασίας ταιριάζει με τη μονάδα 4 ms που χρησιμοποιείται για τη διάρκεια αδράνειας. Εάν δεν έχουν σταλεί αιτήματα SET_IDLE από τον κεντρικό υπολογιστή, η λίστα αναγνωριστικών αναφορών εισόδου είναι κενή και η εργασία δεν έχει τίποτα προς επεξεργασία. Η εργασία επεξεργάζεται μόνο αναγνωριστικά αναφοράς που διαφέρουν από το 0 και έχουν διάρκεια αδράνειας μεγαλύτερη από 0.
(4) Για ένα δεδομένο αναγνωριστικό αναφοράς εισόδου, η εργασία επαληθεύει εάν έχει παρέλθει η διάρκεια αδράνειας. Εάν δεν έχει παρέλθει η διάρκεια αδράνειας, ο μετρητής μειώνεται και δεν αποστέλλεται αναφορά εισόδου στον κεντρικό υπολογιστή.
(5) Εάν η διάρκεια αδράνειας έχει παρέλθει (δηλαδή, ο μετρητής διάρκειας αδράνειας έχει φτάσει στο μηδέν), αποστέλλεται μια αναφορά εισόδου στον κεντρικό υπολογιστή καλώντας τη συνάρτηση sl_usbd_hid_write_sync() μέσω του τελικού σημείου διακοπής εισόδου.
(6) Τα δεδομένα αναφοράς εισόδου που αποστέλλονται από την εργασία προέρχονται από ένα εσωτερικό buffer δεδομένων που έχει εκχωρηθεί για κάθε αναφορά εισόδου που περιγράφεται στον περιγραφέα αναφοράς. Μια εργασία εφαρμογής μπορεί να καλέσει τη συνάρτηση sl_usbd_hid_write_sync() για να στείλει μια αναφορά εισόδου. Μετά την αποστολή των δεδομένων αναφοράς εισόδου, η sl_usbd_hid_write_sync() ενημερώνει το εσωτερικό buffer που σχετίζεται με ένα αναγνωριστικό αναφοράς εισόδου με τα δεδομένα που μόλις στάλθηκαν. Στη συνέχεια, η εργασία περιοδικών αναφορών εισόδου στέλνει πάντα τα ίδια δεδομένα αναφοράς εισόδου μετά από κάθε περίοδο αδράνειας και μέχρι η εργασία εφαρμογής να ενημερώσει τα δεδομένα στο εσωτερικό buffer. Υπάρχει κάποιος μηχανισμός κλειδώματος για την αποφυγή αλλοίωσης των δεδομένων αναγνωριστικού αναφοράς εισόδου σε περίπτωση τροποποίησης που συμβαίνει την ακριβή στιγμή της μετάδοσης που γίνεται από την εργασία περιοδικής αναφοράς εισόδου.

Πνευματικά δικαιώματα © 2025 Silicon Laboratories. Με την επιφύλαξη παντός δικαιώματος.

42/174

Υπερview
Υπερview
Κλάση MSC συσκευής USB
Συσκευή USB Κλάση MSC Υπέρβασηview Ανάγκες πόρων για την κλάση MSC της συσκευής USB από τον πυρήνα Διαμόρφωση κλάσης MSC της συσκευής USB Οδηγός προγραμματισμού κλάσης MSC της συσκευής USB Οδηγοί αποθήκευσης κλάσης MSC της συσκευής USB
Αυτή η ενότητα περιγράφει την κλάση συσκευών μαζικής αποθήκευσης (MSC) που υποστηρίζεται από τη συσκευή USB της Silicon Labs. Το MSC είναι ένα πρωτόκολλο που επιτρέπει τη μεταφορά πληροφοριών μεταξύ μιας συσκευής USB και ενός κεντρικού υπολογιστή. Οι πληροφορίες που μεταφέρονται είναι οτιδήποτε μπορεί να αποθηκευτεί ηλεκτρονικά, όπως εκτελέσιμα προγράμματα, πηγαίος κώδικας, έγγραφα, εικόνες, δεδομένα διαμόρφωσης ή άλλα δεδομένα κειμένου ή αριθμητικών δεδομένων. Η συσκευή USB εμφανίζεται ως εξωτερικό μέσο αποθήκευσης στον κεντρικό υπολογιστή, επιτρέποντας τη μεταφορά... files μέσω μεταφοράς και απόθεσης.
A file το σύστημα ορίζει τον τρόπο με τον οποίο fileΤα s είναι οργανωμένα στο μέσο αποθήκευσης. Η προδιαγραφή κλάσης μαζικής αποθήκευσης USB δεν απαιτεί κάποια συγκεκριμένη file σύστημα που θα χρησιμοποιηθεί σε συμβατές συσκευές. Αντίθετα, παρέχει μια απλή διεπαφή για την ανάγνωση και την εγγραφή τομέων δεδομένων χρησιμοποιώντας το διαφανές σύνολο εντολών της Διεπαφής Συστήματος Μικρού Υπολογιστή (SCSI). Ως εκ τούτου, τα λειτουργικά συστήματα μπορούν να χειριστούν τη μονάδα USB σαν σκληρό δίσκο και να τη μορφοποιήσουν με οποιοδήποτε file σύστημα που τους αρέσει.
Η κλάση συσκευών μαζικής αποθήκευσης USB υποστηρίζει δύο πρωτόκολλα μεταφοράς, ως εξής:
Μεταφορά μόνο μαζικής μεταφοράς (BOT) Έλεγχος/Μαζική/Διακοπή (CBI) (χρησιμοποιείται μόνο για μονάδες δισκέτας)
Η κλάση συσκευών μαζικής αποθήκευσης υλοποιεί το σύνολο εντολών SCSI transparent χρησιμοποιώντας μόνο το πρωτόκολλο BOT, πράγμα που σημαίνει ότι μόνο μαζικά τελικά σημεία θα χρησιμοποιούνται για τη μετάδοση δεδομένων και πληροφοριών κατάστασης. Η υλοποίηση MSC υποστηρίζει πολλαπλές λογικές μονάδες.
Η υλοποίηση του MSC συμμορφώνεται με τις ακόλουθες προδιαγραφές:
Προδιαγραφή κλάσης μαζικής αποθήκευσης καθολικού σειριακού διαύλου (Universal Serial Bus Mass Storage Class Over)view, Αναθεώρηση 1.3 5 Σεπτεμβρίου 2008. Μεταφορά μόνο μαζικής μεταφοράς μέσω κλάσης μαζικής αποθήκευσης μέσω καθολικού σειριακού διαύλου, Αναθεώρηση 1.0 31 Σεπτεμβρίου 1999.
Συσκευή USB MSC aCl ss Overview
Πρωτόκολλο Τελικών Σημείων Αιτήματα Κλάσης Διεπαφή Μικρού Συστήματος Υπολογιστή (SCSI)
Πρωτόκολλο
Σε αυτήν την ενότητα, θα συζητήσουμε το πρωτόκολλο Bulk-Only Transport (BOT) της κλάσης Mass Storage. Το πρωτόκολλο Bulk-Only Transport έχει τρία stages:
Η Μεταφορά Εντολών Η Μεταφορά Δεδομένων Η Μεταφορά Κατάστασης
Οι εντολές μαζικής αποθήκευσης αποστέλλονται από τον κεντρικό υπολογιστή μέσω μιας δομής που ονομάζεται Command Block Wrapper (CBW). Για εντολές που απαιτούν μεταφορά δεδομένωνtagε., ο κεντρικός υπολογιστής θα προσπαθήσει να στείλει ή να λάβει τον ακριβή αριθμό bytes από τη συσκευή, όπως καθορίζεται από τα πεδία μήκους και σημαίας του CBW. Μετά τη μεταφορά δεδομένωνtagε., ο κεντρικός υπολογιστής επιχειρεί να λάβει ένα Εντολικό Περιτύλιγμα Κατάστασης (CSW) από τη συσκευή που αναφέρει λεπτομερώς την κατάσταση της εντολής καθώς και τυχόν υπολείμματα δεδομένων (εάν

Πνευματικά δικαιώματα © 2025 Silicon Laboratories. Με την επιφύλαξη παντός δικαιώματος.

43/174

Υπερview
οποιαδήποτε). Για εντολές που δεν περιλαμβάνουν μεταφορά δεδομένωνtagε., ο κεντρικός υπολογιστής επιχειρεί να λάβει το CSW αμέσως μετά την αποστολή του CBW. Το πρωτόκολλο περιγράφεται λεπτομερώς στο Σχήμα – Πρωτόκολλο MSC.
Σχήμα – Πρωτόκολλο MSC

Τελικά σημεία
Από την πλευρά της συσκευής, σύμφωνα με την προδιαγραφή BOT, το MSC αποτελείται από τα ακόλουθα τελικά σημεία: Ένα ζεύγος τελικών σημείων ελέγχου IN και OUT που ονομάζονται προεπιλεγμένα τελικά σημεία. Ένα ζεύγος τελικών σημείων μαζικής εισόδου και εξόδου.
Ο παρακάτω πίνακας υποδεικνύει τις διαφορετικές χρήσεις των τελικών σημείων.
Πίνακας – Χρήση τελικού σημείου MSC

Τελικό σημείο
Έλεγχος ΕΙΣΟΔΟΣ Έλεγχος ΕΞΟΔΟΣ Μαζική ΕΙΣΟΔΟΣ Μαζική ΕΞΟΔΟΣ

Κατεύθυνση
Συσκευή προς κεντρικό υπολογιστή Κεντρικός υπολογιστής προς συσκευή Συσκευή προς κεντρικό υπολογιστή Κεντρικός υπολογιστής προς συσκευή

Χρήση
Αιτήματα απαρίθμησης και 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. Παρέχουμε μια υλοποίηση για την υποκλάση SCSI MSC που οι χρήστες του 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:
Κλάση 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 Αριθμός στιγμιότυπων κλάσης που θα εκχωρήσετε μέσω μιας κλήσης στη συνάρτηση

ΠΟΣΟΤΗΤΑ_ΑΝΣΕΡΒΑΣΗΣ

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 bit.
_LBA_EN

SL_USBD_MSC_DATA_BUFF Μέγεθος buffer δεδομένων ανά στιγμιότυπο κλάσης σε byte ER_SIZE

Προεπιλεγμένη τιμή
2
1
2
0
512

Δημιουργία στιγμιότυπου κλάσης
Η δημιουργία μιας παρουσίας κλάσης SCSI MSC συσκευής USB γίνεται καλώντας τη συνάρτηση sl_usbd_msc_scsi_create_instance(). Αυτή η συνάρτηση δέχεται ένα όρισμα διαμόρφωσης που περιγράφεται παρακάτω.
p_scsi_επανακλήσεις
Το p_scsi_callbacks είναι ένας δείκτης σε μια δομή διαμόρφωσης τύπου sl_usbd_msc_scsi_callbacks_t. Εκτός από την κοινή κλάση callbacks connect/disconnect της συσκευής usb, παρέχει στην κλάση MSC ένα σύνολο προαιρετικών συναρτήσεων callback που καλούνται όταν προκύπτει ένα συμβάν στη λογική μονάδα. Ένας δείκτης null (NULL) μπορεί να περάσει σε αυτό το όρισμα εάν δεν απαιτούνται callbacks.
Ο παρακάτω πίνακας περιγράφει κάθε πεδίο διαμόρφωσης που είναι διαθέσιμο σε αυτήν τη δομή διαμόρφωσης.
Πίνακας – Δομή διαμόρφωσης sl_usbd_msc_scsi_callbacks_t

Πεδία

Περιγραφή

.καθιστώ ικανό

Καλείται όταν η παρουσία κλάσης USB ενεργοποιηθεί με επιτυχία.

.disable Καλείται όταν η παρουσία της κλάσης USB είναι απενεργοποιημένη.

.host_eject Συνάρτηση που καλείται όταν μια λογική μονάδα εξάγεται από τον κεντρικό υπολογιστή.

Υπογραφή συνάρτησης
void app_usbd_msc_scsi_enable(uint8_t class_nbr);
void app_usbd_msc_scsi_disable(uint8_t class_nbr); void app_usbd_msc_scsi_host_eject(uint8_t class_nbr, uint8_t lu_nbr);

Ρύθμιση παραμέτρων λογικής μονάδας κλάσης 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_read ad _only

Δείκτης σε μια συμβολοσειρά που περιέχει την αναγνώριση προμηθευτή της λογικής μονάδας. Το μέγιστο μήκος της συμβολοσειράς είναι 8 χαρακτήρες. Δείκτης σε μια συμβολοσειρά που περιέχει την αναγνώριση προϊόντος της λογικής μονάδας. Το μέγιστο μήκος της συμβολοσειράς είναι 16 χαρακτήρες. Επίπεδο αναθεώρησης προϊόντος.
Σημαία που υποδεικνύει εάν η λογική μονάδα θα πρέπει να θεωρείται μόνο για ανάγνωση από το σημείο view του κεντρικού υπολογιστή (αληθές) ή όχι (ψευδές).

Οδηγός προγραμματισμού συσκευής USB για την κλάση MSC

Αυτή η ενότητα εξηγεί τον τρόπο χρήσης της κλάσης MSC.
Αρχικοποίηση της κλάσης MSC συσκευής USB Προσθήκη μιας παρουσίας κλάσης SCSI MSC συσκευής 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) { /* Παρουσιάστηκε σφάλμα. Εδώ θα πρέπει να προστεθεί η διαχείριση σφαλμάτων. */
}
Προσθήκη μιας παρουσίας κλάσης SCSI MSC συσκευής 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);
αν (κατάσταση ! 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, μνήμη flash, κ.λπ.). Η κλάση 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_only_read_only

= ψευδές;

κατάσταση = sl_usbd_msc_scsi_lun_add(class_nbr, &lu_info, &lu_object_ptr);
αν (κατάσταση ! SL_STATUS_OK) { /* Παρουσιάστηκε σφάλμα. Εδώ θα πρέπει να προστεθεί χειρισμός σφαλμάτων. */ }

Σύνδεση/Αποσύνδεση Μέσου Αποθήκευσης
Αφού προστεθεί η λογική μονάδα, πρέπει να συνδεθεί ένα μέσο αποθήκευσης για να είναι διαθέσιμο από την πλευρά του κεντρικού υπολογιστή. Η κλάση MSC προσφέρει δύο συναρτήσεις για τον έλεγχο της συσχέτισης του μέσου αποθήκευσης με τη λογική μονάδα: sl_usbd_msc_scsi_lun_attach() και sl_usbd_msc_scsi_lun_detach(). Αυτές οι συναρτήσεις σάς επιτρέπουν να μιμηθείτε την αφαίρεση μιας συσκευής αποθήκευσης προκειμένου να αποκτήσετε ξανά πρόσβαση από την ενσωματωμένη εφαρμογή, εάν είναι απαραίτητο.
Ο πρώην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
Η Τεχνητή Νοημοσύνη (AI) του προγράμματος οδήγησης TPY ορίζεται από την 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(). Ανατρέξτε στην ενότητα Συσκευή USB MSC SCSI API για περισσότερες λεπτομέρειες σχετικά με τις δομές. Η υλοποίηση του προγράμματος οδήγησης αποθήκευσης μπορεί να είναι τόσο απλή όσο ένας πίνακας τομέων στη μνήμη RAM. Το τυπικό μέγεθος τομέα (δηλαδή, το μέγεθος μπλοκ) είναι 512 για συσκευές μαζικής αποθήκευσης και 2048 για CD-ROM.

Πνευματικά δικαιώματα © 2025 Silicon Laboratories. Με την επιφύλαξη παντός δικαιώματος.

50/174

Υπερview
Υπερview
Κλάση προμηθευτή συσκευής USB
Κλάση προμηθευτή συσκευής USB πάνω απόview Ανάγκες πόρων για την κλάση προμηθευτή συσκευών USB από τον πυρήνα Διαμόρφωση κλάσης προμηθευτή συσκευών USB Οδηγός προγραμματισμού κλάσης προμηθευτή συσκευών USB Η κλάση προμηθευτή σάς επιτρέπει να δημιουργείτε συσκευές ειδικές για τον προμηθευτή που μπορούν να εφαρμόσουν ένα ιδιόκτητο πρωτόκολλο. Βασίζεται σε ένα ζεύγος μαζικών τελικών σημείων για τη μεταφορά δεδομένων μεταξύ του κεντρικού υπολογιστή και της συσκευής. Οι μαζικές μεταφορές είναι βολικές για τη μεταφορά μεγάλων ποσοτήτων μη δομημένων δεδομένων και παρέχουν αξιόπιστη ανταλλαγή δεδομένων χρησιμοποιώντας έναν μηχανισμό ανίχνευσης σφαλμάτων και επανάληψης. Εκτός από τα μαζικά τελικά σημεία, η κλάση προμηθευτή μπορεί επίσης να χρησιμοποιήσει ένα προαιρετικό ζεύγος τελικών σημείων διακοπής. Οποιοδήποτε λειτουργικό σύστημα (ΛΣ) μπορεί να λειτουργήσει με την κλάση προμηθευτή, υπό την προϋπόθεση ότι το ΛΣ διαθέτει ένα πρόγραμμα οδήγησης για τον χειρισμό της κλάσης προμηθευτή. Ανάλογα με το ΛΣ, το πρόγραμμα οδήγησης μπορεί να είναι εγγενές ή ειδικό για τον προμηθευτή. Για παράδειγμα, στα Microsoft Windows®, η εφαρμογή σας αλληλεπιδρά με το πρόγραμμα οδήγησης WinUSB που παρέχεται από τη Microsoft για να επικοινωνήσει με τη συσκευή προμηθευτή.
Κλάση προμηθευτή συσκευής USB πάνω απόview
Το Σχήμα – Γενική Αρχιτεκτονική Μεταξύ της Κλάσης Host και Vendor των Windows δείχνει τη γενική αρχιτεκτονική μεταξύ του κεντρικού υπολογιστή και της συσκευής χρησιμοποιώντας την κλάση Vendor. Σε αυτό το παράδειγμαampΔηλαδή, το λειτουργικό σύστημα κεντρικού υπολογιστή είναι τα MS Windows.
Σχήμα – Γενική Αρχιτεκτονική Μεταξύ Κλάσης MS Windows Host και Κλάσης Vendor

Από την πλευρά των MS Windows, η εφαρμογή επικοινωνεί με τη συσκευή του προμηθευτή αλληλεπιδρώντας με μια βιβλιοθήκη USB. Οι βιβλιοθήκες, όπως το libusb, προσφέρουν ένα API για τη διαχείριση μιας συσκευής και των συσχετισμένων αγωγών της, καθώς και για την επικοινωνία με τη συσκευή μέσω τελικών σημείων ελέγχου, μαζικής αποστολής και διακοπής.
Από την πλευρά της συσκευής, η κλάση Vendor αποτελείται από τα ακόλουθα τελικά σημεία:
Ένα ζεύγος τελικών σημείων ελέγχου IN και OUT που ονομάζεται προεπιλεγμένο τελικό σημείο. Ένα ζεύγος τελικών σημείων μαζικής εισόδου και εξόδου.

Πνευματικά δικαιώματα © 2025 Silicon Laboratories. Με την επιφύλαξη παντός δικαιώματος.

51/174

Υπερview

Ένα ζεύγος τερματικών σημείων διακοπής IN και OUT. Αυτό το ζεύγος είναι προαιρετικό. Ο παρακάτω πίνακας υποδεικνύει τη χρήση των διαφορετικών τερματικών σημείων:
Πίνακας – Χρήση τελικών σημείων κλάσης προμηθευτή

Κατεύθυνση τελικού σημείου

Έλεγχος ΕΙΣ
Ελεγχος
ΕΞΩ
Μαζική ΕΙΣΟΔΟΣ

Συσκευή-προς-κεντρικό υπολογιστή
>Κεντρικός υπολογιστής-προς-συσκευή
Συσκευή-προς-κεντρικό υπολογιστή

Μαζική Εξαγωγή
Διακοπή ΕΙΣΟΔΟΥ
Διακοπή
ΕΞΩ

Κεντρικός υπολογιστής-προς-συσκευή
Συσκευή-προς-κεντρικό υπολογιστή
Κεντρικός υπολογιστής-προς-συσκευή

Χρήση
Τυπικά αιτήματα για απαρίθμηση και αιτήματα ειδικά για προμηθευτές.
Τυπικά αιτήματα για απαρίθμηση και αιτήματα ειδικά για προμηθευτές.
Επικοινωνία ακατέργαστων δεδομένων. Τα δεδομένα μπορούν να δομηθούν σύμφωνα με ένα ιδιόκτητο πρωτόκολλο.
Επικοινωνία ακατέργαστων δεδομένων. Τα δεδομένα μπορούν να δομηθούν σύμφωνα με ένα ιδιόκτητο πρωτόκολλο.
Επικοινωνία ή ειδοποίηση ακατέργαστων δεδομένων. Τα δεδομένα μπορούν να δομηθούν σύμφωνα με ένα ιδιόκτητο πρωτόκολλο. Επικοινωνία ή ειδοποίηση ακατέργαστων δεδομένων. Τα δεδομένα μπορούν να δομηθούν σύμφωνα με ένα ιδιόκτητο πρωτόκολλο.

Η εφαρμογή συσκευής μπορεί να χρησιμοποιήσει τελικά σημεία μαζικής αποστολής και διακοπής για την αποστολή ή λήψη δεδομένων προς ή από τον κεντρικό υπολογιστή. Μπορεί να χρησιμοποιήσει μόνο το προεπιλεγμένο τελικό σημείο για την αποκωδικοποίηση αιτημάτων που αφορούν συγκεκριμένους προμηθευτές και αποστέλλονται από τον κεντρικό υπολογιστή. Τα τυπικά αιτήματα διαχειρίζονται εσωτερικά από το βασικό επίπεδο της συσκευής USB της Silicon Labs.
Ανάγκες πόρων κλάσης προμηθευτή συσκευής USB από τον πυρήνα

Κάθε φορά που προσθέτετε μια παρουσία κλάσης προμηθευτή σε μια διαμόρφωση μέσω της συνάρτησης sl_usbd_vendor_add_to_configuration(), οι ακόλουθοι πόροι θα εκχωρηθούν από τον πυρήνα.

Πόρος
Διεπαφές Εναλλακτικές διεπαφές Τελικά σημεία Ομάδες διεπαφών

Ποσότητα
1 1 2 (4 εάν έχετε ενεργοποιήσει τα τελικά σημεία διακοπής) 0

Σημειώστε ότι αυτοί οι αριθμοί είναι ανά διαμόρφωση. Κατά τη ρύθμιση των τιμών διαμόρφωσης SL_USBD_INTERFACE_QUANTITY, SL_USBD_ALT_INTERFACE_QUANTITY, SL_USBD_INTERFACE_GROUP_QUANTITY και SL_USBD_DESCRIPTOR_QUANTITY, μην ξεχάσετε να λάβετε υπόψη πόσες διαμορφώσεις θα προστεθούν στην κλάση. Για την τιμή διαμόρφωσης SL_USBD_OPEN_ENDPOINTS_QUANTITY, επειδή τα τελικά σημεία ανοίγουν μόνο όταν μια διαμόρφωση ορίζεται από τον κεντρικό υπολογιστή, απλώς πρέπει να λάβετε υπόψη τον αριθμό των απαραίτητων τελικών σημείων για μια παρουσία κλάσης.
Ρύθμιση παραμέτρων κλάσης προμηθευτή συσκευής USB

Δύο ομάδες παραμέτρων διαμόρφωσης χρησιμοποιούνται για τη διαμόρφωση της κλάσης Vendor:
Κλάση προμηθευτή συσκευής USB Διαμορφώσεις ειδικής εφαρμογής Διαμορφώσεις παρουσίας κλάσης προμηθευτή συσκευής USB
Διαμορφώσεις ειδικής εφαρμογής για την κατηγορία προμηθευτή συσκευών USB
Αρχικά, για να χρησιμοποιήσετε την ενότητα κλάσης Vendor της συσκευής USB της Silicon Labs, προσαρμόστε τους ορισμούς διαμόρφωσης χρόνου μεταγλώττισης του 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 διάστημα p_vendor_callbacks
Δημιουργία στιγμιότυπου κλάσης

Η δημιουργία μιας παρουσίας κλάσης Vendor γίνεται καλώντας τη συνάρτηση sl_usbd_vendor_create_instance(), η οποία δέχεται τρία ορίσματα διαμόρφωσης που περιγράφονται παρακάτω.

intr_en
Λογική τιμή που υποδεικνύει εάν πρέπει να προστεθεί ή όχι ένα ζεύγος τελικών σημείων διακοπής.

Αξία
αληθινό ψευδές

Περιγραφή
Ένα ζεύγος τελικών σημείων ΕΙΣΟΔΟΥ/ΕΞΟΔΟΥ θα προστεθεί και θα γίνει διαθέσιμο στην ενσωματωμένη εφαρμογή. Δεν θα προστεθεί κανένα τελικό σημείο διακοπής. Θα είναι διαθέσιμο μόνο ένα ζεύγος τελικών σημείων μαζικής ΕΙΣΟΔΟΥ/ΕΞΟΔΟΥ.

διάστημα
Αν ορίσετε την παράμετρο intr_en σε true, μπορείτε να καθορίσετε το διάστημα σταθμοσκόπησης των τελικών σημείων διακοπής (σε χιλιοστά του δευτερολέπτου). Αν ορίσετε την παράμετρο intr_en σε false, μπορείτε να ορίσετε το διάστημα σε 0, καθώς θα αγνοηθεί από την κλάση.
p_vendor_callbacks
Το p_vendor_callbacks είναι ένας δείκτης προς μια μεταβλητή δομής συναρτήσεων επανάκλησης, την οποία μπορείτε να καθορίσετε για να χειρίζεται τα αιτήματα ελέγχου που αφορούν συγκεκριμένα την κλάση. Εάν δεν χρησιμοποιείτε αιτήματα που αφορούν συγκεκριμένα την κλάση ή χρειάζεστε ειδοποίηση ενεργοποίησης/απενεργοποίησης, μπορείτε να το ορίσετε σε NULL.
Ο πρώηνampΤο παρακάτω παρέχει την αναμενόμενη υπογραφή του χειριστή αιτημάτων για συγκεκριμένη κλάση.
Example – Υπογραφή Συνάρτησης Αίτησης Ειδικής Κλάσης

void app_usbd_vendor_req_handle(uint8_t

class_nbr, (1)

const sl_usbd_setup_req_t *p_setup_req); (2)

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

(1) Αριθμός στιγμιότυπου κλάσης προμηθευτή.

Πνευματικά δικαιώματα © 2025 Silicon Laboratories. Με την επιφύλαξη παντός δικαιώματος.

53/174

Υπερview

(2) Δείκτης σε ένα ληφθέν αίτημα εγκατάστασης από τον κεντρικό υπολογιστή.
Οδηγός προγραμματισμού κατηγορίας προμηθευτή συσκευών USB
Αυτή η ενότητα εξηγεί τον τρόπο χρήσης της κλάσης Vendor. Αρχικοποίηση της κλάσης USB Device Vendor Προσθήκη μιας παρουσίας κλάσης USB Device Vendor στη συσκευή σας Επικοινωνία χρησιμοποιώντας την κλάση USB Device Vendor
Αρχικοποίηση της κλάσης προμηθευτή συσκευής USB
Για να προσθέσετε μια λειτουργικότητα Κλάσης Προμηθευτή στη συσκευή σας, αρχικοποιήστε πρώτα την κλάση καλώντας τη συνάρτηση USBD_Vendor_Init(). Η π.χ.ampΠαρακάτω φαίνεται πώς να καλέσετε την sl_usbd_vendor_init().
Example – Κλήση της sl_usbd_vendor_init()

κατάσταση sl_status_t;
status = sl_usbd_vendor_init(); if (status ! SL_STATUS_OK) { /* Παρουσιάστηκε σφάλμα. Εδώ θα πρέπει να προστεθεί η διαχείριση σφαλμάτων. */ }
Προσθήκη μιας παρουσίας κλάσης προμηθευτή συσκευής USB στη συσκευή σας
Για να προσθέσετε λειτουργικότητα κλάσης προμηθευτή στη συσκευή σας, πρέπει πρώτα να δημιουργήσετε μια παρουσία και, στη συνέχεια, να την προσθέσετε στις ρυθμίσεις παραμέτρων της συσκευής σας.
Δημιουργία μιας παρουσίας κλάσης προμηθευτή Προσθήκη της παρουσίας κλάσης προμηθευτή στις ρυθμίσεις παραμέτρων της συσκευής σας
Δημιουργία μιας παρουσίας κλάσης προμηθευτή
Δημιουργήστε μια παρουσία κλάσης Vendor καλώντας τη συνάρτηση sl_usbd_vendor_create_instance(). Η exampΠαρακάτω φαίνεται πώς να καλέσετε την sl_usbd_vendor_create_instance() χρησιμοποιώντας προεπιλεγμένα ορίσματα. Για περισσότερες πληροφορίες σχετικά με τα ορίσματα διαμόρφωσης που θα μεταβιβαστούν στην sl_usbd_vendor_create_instance(), ανατρέξτε στην ενότητα Διαμορφώσεις παρουσίας κλάσης προμηθευτή συσκευών USB.
Example – Κλήση της sl_usbd_vendor_create_instance()

uint8_t class_nbr; sl_status_t κατάσταση;

κατάσταση = sl_usbd_vendor_create_instance(false,

(1)

0u,

(2)

λειτουργίες_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 προσφέρει τις ακόλουθες συναρτήσεις για επικοινωνία με τον κεντρικό υπολογιστή. Για περισσότερες λεπτομέρειες σχετικά με τις παραμέτρους της συνάρτησης, ανατρέξτε στο USB Device Vendor API.
Πίνακας – Σύνοψη API επικοινωνίας προμηθευτή

Όνομα συνάρτησης
sl_usb d _v e nd or r_ read ad _b ulk_sy nc() sl_usb d _v e nd or r_ write _b ulk_sy nc() sl_usb d _v e nd or r_ read ad _b ulk_asy nc() sl_usb d _v e nd or r_ write _b ulk_asy nc() sl_usb d _v e nd or r_ read ad _inte rrup t_sy nc() sl_usb d _v e nd or r_ write _inte rrup t_sy nc() sl_usb d _v e nd or r_ read ad _inte rrup t_asy nc
()
sl_usb d _v e nd or r_write _inte rrup t_asy nc
()

Λειτουργία Λαμβάνει δεδομένα από τον κεντρικό υπολογιστή μέσω του τελικού σημείου μαζικής εισόδου (OUT). Αυτή η συνάρτηση είναι μπλοκαρίσματος. Στέλνει δεδομένα στον κεντρικό υπολογιστή μέσω του τελικού σημείου μαζικής εισόδου (IN). Αυτή η συνάρτηση είναι μπλοκαρίσματος. Λαμβάνει δεδομένα από τον κεντρικό υπολογιστή μέσω του τελικού σημείου μαζικής εισόδου (OUT). Αυτή η συνάρτηση δεν είναι μπλοκαρίσματος. Στέλνει δεδομένα στον κεντρικό υπολογιστή μέσω του τελικού σημείου μαζικής εισόδου (IN). Αυτή η συνάρτηση δεν είναι μπλοκαρίσματος. Λαμβάνει δεδομένα από τον κεντρικό υπολογιστή μέσω του τελικού σημείου διακοπής OUT. Αυτή η συνάρτηση είναι μπλοκαρίσματος. Στέλνει δεδομένα στον κεντρικό υπολογιστή μέσω του τελικού σημείου διακοπής IN. Αυτή η συνάρτηση είναι μπλοκαρίσματος. Λαμβάνει δεδομένα από τον κεντρικό υπολογιστή μέσω του τελικού σημείου διακοπής OUT. Αυτή η συνάρτηση δεν είναι-
μπλοκάρισμα.
Στέλνει δεδομένα στον κεντρικό υπολογιστή μέσω του τελικού σημείου διακοπής εισόδου. Αυτή η συνάρτηση δεν μπλοκάρει.

Τα αιτήματα προμηθευτών είναι επίσης ένας άλλος τρόπος επικοινωνίας με τον κεντρικό υπολογιστή. Κατά τη διαχείριση αιτημάτων προμηθευτών που αποστέλλονται από τον κεντρικό υπολογιστή, η εφαρμογή μπορεί να λαμβάνει ή να στέλνει δεδομένα από ή προς τον κεντρικό υπολογιστή χρησιμοποιώντας το τελικό σημείο ελέγχου. Θα χρειαστεί να παρέχετε μια επανακλήση εφαρμογής που διαβιβάζεται ως παράμετρος της sl_usbd_vendor_create_instance(). Σύγχρονη Επικοινωνία

Πνευματικά δικαιώματα © 2025 Silicon Laboratories. Με την επιφύλαξη παντός δικαιώματος.

55/174

Υπερview

Σύγχρονη επικοινωνία σημαίνει ότι η μεταφορά μπλοκάρεται. Όταν καλείται μια συνάρτηση, η εφαρμογή μπλοκάρει μέχρι να ολοκληρωθεί η μεταφορά με ή χωρίς σφάλμα. Μπορεί να καθοριστεί ένα χρονικό όριο για να αποφευχθεί η αέναη αναμονή. Το π.χ.ampΤο παρακάτω δείχνει μια λειτουργία ανάγνωσης και εγγραφής που λαμβάνει δεδομένα από τον κεντρικό υπολογιστή χρησιμοποιώντας το τελικό σημείο μαζικής εισόδου (bulk OUT) και στέλνει δεδομένα στον κεντρικό υπολογιστή χρησιμοποιώντας το τελικό σημείο μαζικής εισόδου (bulk IN).
Example – Σύγχρονη μαζική ανάγνωση και εγγραφή

__ALIGNED(4) uint8_t rx_buf[2];

__ALIGNED(4) uint8_t tx_buf[2];

uint32_t

xfer_len;

sl_status_t

κατάσταση;

κατάσταση = sl_usbd_vendor_read_bulk_sync(class_nbr,

(1)

(void *)&rx_buf[0],

(2)

2u,

0u,

(3)

&xfer_len);

αν (κατάσταση! SL_STATUS_OK) {

/* $$$$ Χειρισμός του σφάλματος. */

}

κατάσταση = sl_usbd_vendor_write_bulk_sync(class_nbr,

(1)

(void *)&tx_buf[0],

(4)

2u,

0u,

(3)

ψευδής,

(5)

&xfer_len);

αν (κατάσταση! SL_STATUS_OK) {

/* $$$$ Χειρισμός του σφάλματος. */

}

(1) Ο αριθμός στιγμιότυπου κλάσης που δημιουργείται με την sl_usbd_vendor_create_instance() παρέχει μια εσωτερική αναφορά στην κλάση Vendor για τη δρομολόγηση της μεταφοράς στο κατάλληλο τελικό σημείο μαζικής εξόδου (OUT) ή εισόδου (IN).
(2) Η εφαρμογή πρέπει να διασφαλίσει ότι το buffer που παρέχεται στη συνάρτηση είναι αρκετά μεγάλο για να χωρέσει όλα τα δεδομένα. Διαφορετικά, ενδέχεται να προκύψουν προβλήματα συγχρονισμού.
(3) Για να αποφευχθεί μια κατάσταση άπειρου αποκλεισμού, μπορεί να καθοριστεί ένα χρονικό όριο που εκφράζεται σε χιλιοστά του δευτερολέπτου. Η τιμή 809 κάνει την εργασία εφαρμογής να περιμένει για πάντα.
(4) Η εφαρμογή παρέχει την αρχικοποιημένη προσωρινή μνήμη μετάδοσης.
(5) Εάν αυτή η σημαία έχει οριστεί σε true και το μήκος μεταφοράς είναι πολλαπλάσιο του μέγιστου μεγέθους πακέτου του τελικού σημείου, η στοίβα συσκευών θα στείλει ένα πακέτο μηδενικού μήκους στον κεντρικό υπολογιστή για να σηματοδοτήσει το τέλος της μεταφοράς.
Η χρήση των συναρτήσεων επικοινωνίας τερματικού σημείου διακοπής, sl_usbd_vendor_read_interrupt_sync() και sl_usbd_vendor_write_interrupt_sync(), είναι παρόμοια με τις συναρτήσεις μαζικής επικοινωνίας τερματικού σημείου που παρουσιάζονται στο Παράδειγμα.ample – Σύγχρονη μαζική ανάγνωση και εγγραφή.
Ασύγχρονη Επικοινωνία
Ασύγχρονη επικοινωνία σημαίνει ότι η μεταφορά δεν είναι μπλοκαρισμένη. Όταν καλείται μια συνάρτηση, η εφαρμογή μεταδίδει τις πληροφορίες μεταφοράς στη στοίβα συσκευών και δεν μπλοκάρει. Άλλες επεξεργασίες της εφαρμογής μπορούν να γίνουν ενώ η μεταφορά βρίσκεται σε εξέλιξη μέσω του διαύλου USB. Μόλις ολοκληρωθεί η μεταφορά, μια συνάρτηση επανάκλησης καλείται από τη στοίβα συσκευών για να ενημερώσει την εφαρμογή σχετικά με την ολοκλήρωση της μεταφοράς. Η π.χ.ampΤο παρακάτω δείχνει την ασύγχρονη ανάγνωση και εγγραφή.
Example – Ασύγχρονη Μαζική Ανάγνωση και Εγγραφή

Πνευματικά δικαιώματα © 2025 Silicon Laboratories. Με την επιφύλαξη παντός δικαιώματος.

56/174

Υπερview

void app_usbd_vendor_comm (uint8_t class_nbr)

{

__ALIGNED(4) uint8_t rx_buf[2];

__ALIGNED(4) uint8_t tx_buf[2];

sl_status_t

κατάσταση;

κατάσταση = sl_usbd_vendor_read_bulk_async(class_nbr,

(void *)&rx_buf[0],

(2)

2u,

app_usbd_vendor_rx_completed,

ΑΚΥΡΟΣ);

(4)

αν (κατάσταση! SL_STATUS_OK) {

/* $$$$ Χειρισμός του σφάλματος. */

}

κατάσταση = sl_usbd_vendor_write_bulk_async(class_nbr,

(void *)&tx_buf[0],

(5)

2u,

app_usbd_vendor_tx_completed,

ΑΚΥΡΟΣ,

(4)

ψευδής);

(6)

αν (κατάσταση! SL_STATUS_OK) {

/* $$$$ Χειρισμός του σφάλματος. */

}

}

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

στατικό void 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) {

/* $$$$ Κάντε κάποια επεξεργασία. */

} αλλο {

/* $$$$ Χειρισμός του σφάλματος. */

}

}

στατικό void 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) Ο αριθμός στιγμιότυπου κλάσης παρέχει μια εσωτερική αναφορά στην κλάση Vendor για τη δρομολόγηση της μεταφοράς στο κατάλληλο τελικό σημείο μαζικής OUT ή IN. (2) Η εφαρμογή πρέπει να διασφαλίσει ότι το παρεχόμενο buffer είναι αρκετά μεγάλο για να χωρέσει όλα τα δεδομένα. Διαφορετικά, ενδέχεται να υπάρχουν προβλήματα συγχρονισμού. (3) Η εφαρμογή παρέχει έναν δείκτη συνάρτησης επανάκλησης που διαβιβάζεται ως παράμετρος. Μετά την ολοκλήρωση της μεταφοράς, η στοίβα συσκευών καλεί αυτήν τη συνάρτηση επανάκλησης, ώστε η εφαρμογή να μπορεί να οριστικοποιήσει τη μεταφορά αναλύοντας το αποτέλεσμα της μεταφοράς. Για παράδειγμα, μετά την ολοκλήρωση μιας λειτουργίας ανάγνωσης, η εφαρμογή μπορεί να εκτελέσει επεξεργασία στα ληφθέντα δεδομένα. Μετά την ολοκλήρωση της εγγραφής, η εφαρμογή μπορεί να υποδείξει εάν η εγγραφή ήταν επιτυχής και πόσα byte στάλθηκαν.

Πνευματικά δικαιώματα © 2025 Silicon Laboratories. Με την επιφύλαξη παντός δικαιώματος.

57/174

Υπερview
(4) Μπορεί επίσης να διαβιβαστεί ένα όρισμα που σχετίζεται με την επανάκληση. Στη συνέχεια, στο πλαίσιο της επανάκλησης, μπορούν να ανακτηθούν ορισμένες ιδιωτικές πληροφορίες. (5) Η εφαρμογή παρέχει το αρχικοποιημένο buffer μετάδοσης. (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ε μιας μεταφοράς ελέγχου. Εάν δεν υπάρχουν δεδομέναtage είναι παρόν, χρειάζεται μόνο να αποκωδικοποιήσετε το πακέτο εγκατάστασης. Αυτό το παράδειγμαampΤο παρακάτω δείχνει τους τρεις τύπους δεδομένωνtagηλεκτρονική διαχείριση: χωρίς δεδομένα, δεδομένα ΕΞΟΔΟΣ και δεδομένα ΕΙΣΟΔΟΣ.
Example – Αποκωδικοποίηση Αιτήματος Προμηθευτή

Πνευματικά δικαιώματα © 2025 Silicon Laboratories. Με την επιφύλαξη παντός δικαιώματος.

58/174

Υπερview

#define APP_VENDOR_REQ_NO_DATA

0x01u

#define APP_VENDOR_REQ_RECEIVE_DATA_FROM_HOST 0x02u

#define APP_VENDOR_REQ_SEND_DATA_TO_HOST 0x03u

#define APP_VENDOR_REQ_DATA_BUF_SIZE

50 u

στατικό uint8_t app_vendor_req_buf[APP_VENDOR_REQ_DATA_BUF_SIZE];

στατική bool app_usbd_vendor_req (uint8_t

class_nbr,

const sl_usbd_setup_req_t *p_setup_req)

(1)

{

έγκυρο bool;

κατάσταση sl_status_t;

uint16_t req_len;

uint32_t xfer_len;

(void)class_nbr;

διακόπτης(p_setup_req->bRequest) { περίπτωση APP_VENDOR_REQ_NO_DATA: έγκυρο = αληθές; διάλειμμα;

(2) (3)

περίπτωση APP_VENDOR_REQ_RECEIVE_DATA_FROM_HOST:

(4)

req_len = p_setup_req->wLength;

αν (req_len > APP_VENDOR_REQ_DATA_BUF_SIZE) {

// Δεν υπάρχει αρκετός χώρος για λήψη δεδομένων.

επιστροφή (ψευδής)

}

// Λήψη δεδομένων μέσω Control OUT EP. // Αναμονή ολοκλήρωσης μεταφοράς για πάντα. status = sl_usbd_core_read_control_sync((void *)&app_vendor_req_buf[0u],
req_len, 0u, &xfer_len); αν (κατάσταση! SL_STATUS_OK) { έγκυρο = ψευδές; } αλλιώς { έγκυρο = αληθές; } διάλειμμα;

περίπτωση 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) { έγκυρο = DEF_FAIL; } αλλιώς { έγκυρο = DEF_OK; } διάλειμμα;

αθέτηση:

(6)

// Το αίτημα δεν υποστηρίζεται.

Πνευματικά δικαιώματα © 2025 Silicon Laboratories. Με την επιφύλαξη παντός δικαιώματος.

59/174

Υπερview

έγκυρο = αληθές; διάλειμμα;
περίπτωση APP_VENDOR_REQ_RECEIVE_DATA_FROM_HOST:(4) req_len = p_setup_req->wLength;if(req_len > APP_VENDOR_REQ_DATA_BUF_SIZE){// Δεν υπάρχει αρκετός χώρος για λήψη δεδομένων.return(false);}// Λήψη δεδομένων μέσω 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;
περίπτωση 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){ valid = DEF_FAIL;}else{ valid = DEF_OK;}break;
προεπιλογή:(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; /* Μήκος μεταφοράς εάν τα δεδομένα είναι stagε παρόν.

*/

} sl_usbd_setup_req_t;

(2) Προσδιορίστε το αίτημα. Μπορείτε να χρησιμοποιήσετε μια εντολή switch εάν χρησιμοποιείτε διαφορετικά αιτήματα. Σε αυτό το παράδειγμαampδηλαδή, υπάρχουν τρία διαφορετικά αιτήματα που αντιστοιχούν στους τρεις τύπους δεδομένωνtagη: APP_VENDOR_REQ_NO_DATA, APP_VENDOR_REQ_RECEIVE_DATA_FROM_HOST και APP_VENDOR_REQ_SEND_DATA_TO_HOST.
(3) Εάν δεν υπάρχουν δεδομέναtagΕάν υπάρχει το e, χρειάζεται μόνο να αποκωδικοποιήσετε τα άλλα πεδία. Η παρουσία ενός data stagΤο e ή όχι υποδεικνύεται από το πεδίο wLength που είναι μη null ή null.
(4) Εάν ο κεντρικός υπολογιστής στείλει δεδομένα στη συσκευή, πρέπει να καλέσετε τη συνάρτηση sl_usbd_core_read_control_sync(). Το παρεχόμενο buffer θα πρέπει να μπορεί να περιέχει έως και wLength bytes. Εάν παρουσιαστεί οποιοδήποτε σφάλμα, επιστρέψτε την τιμή false στον πυρήνα, η οποία θα σταματήσει την κατάσταση s.tagε της μεταφοράς ελέγχου, που υποδεικνύει στον κεντρικό υπολογιστή ότι το αίτημα δεν μπορεί να υποβληθεί σε επεξεργασία. Επιστρέφεται η τιμή true σε περίπτωση επιτυχίας.
(5) Εάν ο κεντρικός υπολογιστής λάβει δεδομένα από τη συσκευή, πρέπει να καλέσετε τη συνάρτηση sl_usbd_core_write_control_sync(). Εάν παρουσιαστεί οποιοδήποτε σφάλμα, επιστρέψτε την τιμή false στον πυρήνα, η οποία θα καθυστερήσει την κατάσταση s.tagε της μεταφοράς ελέγχου, που υποδεικνύει στον κεντρικό υπολογιστή ότι το αίτημα δεν μπορεί να υποβληθεί σε επεξεργασία. Επιστρέφεται η τιμή true σε περίπτωση επιτυχίας.
(6) Σε αυτό το παράδειγμαampδηλαδή, όλα τα αιτήματα που δεν αναγνωρίζονται επισημαίνονται με την επιστροφή false στον πυρήνα. Αυτό θα καθυστερήσει τα δεδομένα ή την κατάσταση.tagε της μεταφοράς ελέγχου που υποδεικνύει στον κεντρικό υπολογιστή ότι το αίτημα δεν υποστηρίζεται.
Ο κεντρικός υπολογιστής στέλνει αιτήματα προμηθευτών μέσω μιας εφαρμογής προμηθευτή κεντρικού υπολογιστή. Οι βιβλιοθήκες USB, όπως η libusb, μπορούν να χρησιμοποιηθούν για να σας βοηθήσουν να αναπτύξετε την προσαρμοσμένη εφαρμογή προμηθευτή κεντρικού υπολογιστή.

Πνευματικά δικαιώματα © 2025 Silicon Laboratories. Με την επιφύλαξη παντός δικαιώματος.

60/174

Τεκμηρίωση API
Τεκμηρίωση API
Τεκμηρίωση API
Κατάλογος ενοτήτων
API συσκευής USB API συσκευής USB ACM API συσκευής USB CDC API συσκευής USB Core API συσκευής USB HID API συσκευής USB MSC API συσκευής USB MSC SCSI API συσκευής USB Vendor API

Περιγραφή
API συσκευής USB API συσκευής USB ACM API συσκευής USB CDC API συσκευής USB Core API συσκευής USB HID API συσκευής USB MSC API συσκευής USB MSC SCSI API συσκευής USB Vendor API

Πνευματικά δικαιώματα © 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 Vendor API

Πνευματικά δικαιώματα © 2025 Silicon Laboratories. Με την επιφύλαξη παντός δικαιώματος.

62/174

ACM API συσκευής USB

ACM API συσκευής USB

ACM API συσκευής 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.
αααα sl_usbd_cdc_ cm_ dd_to_configur tion(uint8_t subcl ss_nbr, uint8_t config_nbr)
Προσθέστε μια παρουσία κλάσης υποκλάσης CDC ACM στη διαμόρφωση της συσκευής USB.
aa sl_usbd_cdc_ cm_is_en bled(uint8_t subclass_nbr, bool *p_enabled)
Λάβετε την κατάσταση ενεργοποίησης της υποκλάσης σειριακής εξομοίωσης CDC ACM.
ααα sl_usbd_cdc_ cm_re d(uint8_t subcl ss_nbr, uint8_t *p_buf, uint32_t buf_len, uint16_t χρονικό όριο, uint32_t
*p_xfer_len) Λήψη δεδομένων στην υποκλάση σειριακής εξομοίωσης CDC ACM.
αααα sl_usbd_cdc_ cm_re d_ sync(uint8_t subcl ss_nbr, uint8_t *p_buf, uint32_t buf_len, αααα sl_usbd_cdc_ sync_function_t sync_fnct, void *p_ sync_ rg)
Λήψη δεδομένων στην υποκλάση σειριακής εξομοίωσης CDC ACM ασύγχρονα.
αα sl_usbd_cdc_ cm_write(uint8_t subcl ss_nbr, uint8_t *p_buf, uint32_t buf_len, uint16_t χρονικό όριο, uint32_t
*p_xfer_len) Αποστολή δεδομένων στην υποκλάση σειριακής εξομοίωσης CDC ACM.
ααα sl_usbd_cdc_ cm_write_ sync(uint8_t subcl ss_nbr, uint8_t *p_buf, uint32_t buf_len, αααα sl_usbd_cdc_ sync_function_t sync_fnct, void *p_ sync_ rg)
Αποστολή δεδομένων στην υποκλάση σειριακής εξομοίωσης CDC ACM ασύγχρονα.
ααα sl_usbd_cdc_ cm_get_line_control_st te(uint8_t subcl ss_nbr, uint8_t *p_line_ctrl)
Επιστρέψτε την κατάσταση των γραμμών ελέγχου.
ααα sl_usbd_cdc_ cm_get_line_coding(uint8_t subcl ss_nbr, sl_usbd_cdc_ cm_line_coding_t *p_line_coding)
Λάβετε την τρέχουσα κατάσταση της κωδικοποίησης γραμμής.
ααα sl_usbd_cdc_ cm_set_line_coding(uint8_t subcl ss_nbr, sl_usbd_cdc_ cm_line_coding_t *p_line_coding)
Ορίστε μια νέα κωδικοποίηση γραμμής.
ααα sl_usbd_cdc_ cm_set_line_st te_event(uint8_t subcl ss_nbr, uint8_t events)
Ορίστε ένα/α συμβάν/α κατάστασης γραμμής.
αααα sl_usbd_cdc_ cm_cle r_line_st te_event(uint8_t subcl ss_nbr, uint8_t events)
Εκκαθάριση συμβάντος(-ων) κατάστασης γραμμής.

Πνευματικά δικαιώματα © 2025 Silicon Laboratories. Με την επιφύλαξη παντός δικαιώματος.

63/174

ACM API συσκευής USB
Μακροεντολές
#ορισμός 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 (void)
ΚΑΘΟΛΙΚΕΣ ΜΕΤΑΒΛΗΤΕΣ. Παράμετροι
Πνευματικά δικαιώματα © 2025 Silicon Laboratories. Με την επιφύλαξη παντός δικαιώματος.

64/174

ACM API συσκευής 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

Όνομα ορίσματος κατεύθυνσης

Περιγραφή

N/A

line_state_interval Διάστημα ειδοποίησης κατάστασης γραμμής σε χιλιοστά του δευτερολέπτου (η τιμή πρέπει

να είναι δύναμη του 2).

N/A

call_mgmt_capabilities Δυνατότητες διαχείρισης κλήσεων bitmap. Ή του

οι ακόλουθες σημαίες:

SL_USBD_CDC_ACM_CALL_MGMT_DEV Η συσκευή χειρίζεται η ίδια τη διαχείριση κλήσεων. SL_USBD_CDC_ACM_CALL_MGMT_DATA_CCI_DCI Η συσκευή μπορεί να στέλνει/λαμβάνει πληροφορίες διαχείρισης κλήσεων μέσω μιας διεπαφής κλάσης δεδομένων.

sl_usbd_cdc_acm_callbacks_t Δ/Υ
*

uint8_t *

N/A

p_acm_callbacks p_subclass_nbr

Προαιρετικοί δείκτες σε συναρτήσεις επανάκλησης που θα κληθούν σε διάφορα συμβάντα.
Παράμετρος σε μεταβλητή που θα λάβει αριθμό παρουσίας υποκλάσης σειριακής εξομοίωσης CDC ACM.

Επιστροφές

Επιστρέψτε SL_STATUS_OK σε περίπτωση επιτυχίας ή έναν άλλο κωδικό SL_STATUS σε περίπτωση αποτυχίας.

sl_usbd_cdc_acm_add_to_configuration

sl_status_t sl_usbd_cdc_acm_add_to_configuration (uint8_t subclass_nbr, uint8_t config_nbr)

Προσθέστε μια παρουσία κλάσης υποκλάσης CDC ACM στη διαμόρφωση της συσκευής USB.
Παράμετροι

Τύπος
uint8_t uint8_t

Κατεύθυνση Δ/ΑΝ/Α

Όνομα ορίσματος
subclass_nbr config_nbr

Περιγραφή Αριθμός παρουσίας υποκλάσης σειριακής εξομοίωσης CDC ACM. Ευρετήριο διαμόρφωσης για την προσθήκη νέας διεπαφής κλάσης δοκιμής.

Επιστροφές

Πνευματικά δικαιώματα © 2025 Silicon Laboratories. Με την επιφύλαξη παντός δικαιώματος.

65/174

ACM API συσκευής USB
Επιστρέφει SL_STATUS_OK σε περίπτωση επιτυχίας ή έναν άλλο κωδικό SL_STATUS σε περίπτωση αποτυχίας.

sl_usbd_cdc_acm_is_enabled

sl_status_t sl_usbd_cdc_acm_is_enabled (uint8_t υποκλάση_nbr, bool * p_enabled)

Λάβετε την κατάσταση ενεργοποίησης της υποκλάσης σειριακής εξομοίωσης CDC ACM.
Παράμετροι

Τύπος

Κατεύθυνση

Όνομα ορίσματος

Περιγραφή

uint8_t Δ/Υ

subclass_nbr Αριθμός παρουσίας υποκλάσης σειριακής εξομοίωσης CDC ACM.

bool * Δ/Υ

p_enabled

Λογική τιμή σε μια μεταβλητή που θα λάβει κατάσταση ενεργοποίησης. Η μεταβλητή έχει οριστεί σε true, η σειριακή εξομοίωση CDC ACM είναι ενεργοποιημένη. Η μεταβλητή va

Έγγραφα / Πόροι

Στοίβα συσκευών USB της SILICON LABS [pdf] Εγχειρίδιο οδηγιών
Στοίβα Συσκευών USB, Στοίβα Συσκευών, Στοίβα

Αναφορές

Αφήστε ένα σχόλιο

Η διεύθυνση email σας δεν θα δημοσιευτεί. Τα υποχρεωτικά πεδία επισημαίνονται *