SILICON LABS USB Device Stack Instruction Manual

USB Device Stack

Техникалык шарттар

  • USB версиясы: 1.5.1
  • Чыккан датасы: 21-жылдын 2025-июлунда
  • Simplicity SDK Version: 2025.6.1

Продукт бүттүview

Silicon Labs тарабынан USB түзмөк стек ар тараптуу жана камсыз кылат
IoT долбоорлору үчүн колдонууга оңой USB туташуу
тармактык процессорлор менен хосттордун ортосундагы байланыш.

Өзгөчөлүктөрү

  • Натыйжалуу USB түзмөк стек
  • IoT долбоорлору үчүн идеалдуу
  • Тармактык процессорлордун ортосундагы байланышты колдоо жана
    хосттор

Продукт колдонуу нускамалары

USB түзмөк конфигурациясы

Долбооруңузга ылайык USB аппаратынын жөндөөлөрүн конфигурациялаңыз
USB түзмөктүн конфигурациясы бөлүмүнө кайрылуу менен талаптар
документтерде.

USB түзмөк программалоо колдонмосу

Кантип жасоону түшүнүү үчүн USB түзмөгүн программалоо колдонмосун аткарыңыз
программа жана ар кандай USB аспап менен өз ара аракеттенүү
колдонмолор.

USB түзмөк класстары

USB Device Classes бөлүмү ашыкча камсыз кылатview ар кандай
CDC ACM, HID, MSC SCSI жана Vendor Class сыяктуу класстар. тандаңыз
сиздин түзмөгүңүздүн иштешине жараша тиешелүү класс.

USB түзмөгүнүн бузулушун оңдоо

Эгерде сиз USB түзмөгүндө кандайдыр бир маселеге туш болсоңуз, анда караңыз
Чечимдер жана мүчүлүштүктөрдү оңдоо үчүн USB түзмөгүндөгү көйгөйлөрдү чечүү бөлүмү
кеңештер.

Microsoft Windows OS USB Хост

Эгер сиз USB түзмөгүн Microsoft Windows OS USB менен колдонуп жатсаңыз
Хост, бөлүмдө берилген көрсөтмөлөрдү аткарыңыз
үзгүлтүксүз интеграциялоо үчүн документтер.

Көп берилүүчү суроолор

С: Кээ бир жалпы эксampМен колдонуп кура турган түзмөктөр
бул USB стек?

A: USB стек сыяктуу түзмөктөрдү курууга мүмкүндүк берет
USB-сериялык адаптер, чычкан же клавиатура, алынуучу сактагыч
түзмөктөр жана ыңгайлаштырылган түзмөктөр.

С: Муну колдонуу үчүн кандайдыр бир атайын программалык талаптар барбы
USB түзмөк стек?

A: Шайкеш программа Simplicity SDK, Simplicity камтыйт
Studio, Simplicity Commander, GCC (GNU Compiler Collection),
ARM үчүн IAR Embedded Workbench жана IAR EWARM.

Universal Serial Bus USB

Universal Serial Bus USB

USB Overview Бүттүview
Release Notes USB
Спецификациялар жана өзгөчөлүктөр бүттүview
USB түзмөгүнүн конфигурациясы бүттүview
USB түзмөктү программалоо боюнча колдонмо бүттүview
USB түзмөк класстары бүттүview CDC ACM классы бүттүview HID классы бүттүview MSC SCSI классы бүттүview Сатуучу класс бүттүview
USB API API Документация USB Device API USB Device ACM API a sl_usbd_cdc_ cm_line_coding_t sl_usbd_cdc_acm_callbacks_t USB Device CDC API жана sl_usbd_cdc_subcl ss_driver_t USB Device Core API
sl_usbd_device_config_t sl_usbd_setup_req_t
sl_usbd_cl ss_driver_t USB Device HID API
sl_usbd_hid_callbacks_t USB Device MSC API
sl_usbd_msc_subcl ss_driver_t USB түзмөгү MSC SCSI API
sl_usbd_msc_scsi_callbacks_t

Copyright © 2025 Silicon Laboratories. Бардык укуктар корголгон.

1/174

Universal Serial Bus USB
a sl_usbd_msc_scsi_lun_ pi
sl_usbd_msc_scsi_lun_info sl_usbd_msc_scsi_lun
USB Device Vendor API sl_usbd_vendor_callbacks_t
API Documentation USB түзмөгүндөгү көйгөйлөрдү чечүү
Бүттүview Microsoft Windows OS USB Хост
Бүттүview

Copyright © 2025 Silicon Laboratories. Бардык укуктар корголгон.

2/174

Бүттүview
Бүттүview
USB түзмөк
USB компьютер системаларынын тарыхындагы эң ийгиликтүү байланыш интерфейстеринин бири жана компьютердин перифериялык түзүлүштөрүн туташтыруу үчүн де-факто стандарты болуп саналат. Silicon Labs USB Device стек - бул атайын орнотулган системалар үчүн иштелип чыккан USB түзмөк модулу. Силикон лабораториясынын сапаты, масштабдуулугу жана ишенимдүүлүгү менен түп тамырынан бери курулган, ал USB 2.0 спецификациясына ылайык келүү үчүн катуу текшерүү процессинен өттү. Бул документация Silicon Labs USB Device стекин кантип инициализациялоону, баштоону жана колдонууну сүрөттөйт. Бул ар кандай конфигурация баалуулуктарын жана аларды колдонууну түшүндүрөт. Ал ошондой эле ашык камтыйтview технологияны, конфигурациялоо мүмкүнчүлүктөрүнүн түрлөрүн, ишке ашыруу жол-жоболорун жана эксampар бир жеткиликтүү класс үчүн типтүү колдонуу.
USB концепцияларын тез түшүнүүгө жардам берүү үчүн, документацияда көптөгөн эксampНегизги функциялары бар USB. Булар эксamples сизге түзмөктөрдү тез курууга мүмкүндүк берген негиз менен камсыз кылат. Булар эксamples камтыйт:
USB-сериялык адаптер (Байланыш түзмөгүнүн классы) Чычкан же клавиатура (Адам интерфейсинин түзмөгү классы) Алынып алына турган сактагыч түзмөгү (Массалык сактагыч классы) Ыңгайлаштырылган түзмөк (Вендер классы)
Төмөнкү бүттүview документтердин бөлүмдөрү:
Техникалык мүнөздөмөлөрү жана өзгөчөлүктөрү USB түзмөк конфигурациясы USB түзмөк программалоо колдонмосу USB түзмөк класстары
CDC ACM классы HID классы MSC SCSI классы сатуучу классы USB түзмөгүндөгү мүчүлүштүктөрдү аныктоо Microsoft Windows OS USB хосту

Copyright © 2025 Silicon Laboratories. Бардык укуктар корголгон.

3/174

USB
USB

USB версиясы 1.5.1 21-июль, 2025-жыл – Чыгуу эскертүүлөрү
Simplicity SDK Version 2025.6.1
Silicon Labs'тин эффективдүү USB түзмөгүнүн стеки IoT долбоорлору үчүн идеалдуу универсалдуу, колдонууга оңой USB туташуусун сунуштайт, анын ичинде тармактык процессорлор менен хосттордун ортосундагы байланыш. Мурунку чыгарылыштар үчүн бул жерди басыңыз.
Релиздин жыйынтыгы
Негизги өзгөчөлүктөрү | API өзгөртүүлөр | Мүчүлүштүктөрдү оңдоо | Чипти иштетүү
Негизги өзгөчөлүктөрү
Негизги платформа гана өзгөрөт.
API өзгөртүүлөр
Жок.
Мүчүлүштүктөрдү оңдоо
Жок.
Чипти иштетүү
Жок.
Негизги өзгөчөлүктөрү
Жаңы мүмкүнчүлүктөр | Жакшыртуулар | Өчүрүлгөн Функциялар | Эскирген өзгөчөлүктөр
Жаңы функциялар
Жок.
Жакшыртуулар
Негизги платформа гана өзгөрөт.
Өчүрүлгөн өзгөчөлүктөр
Жок.
Эскирген өзгөчөлүктөр
Жок.
API өзгөртүүлөр
Жаңы API'лер | Өзгөртүлгөн API'лер | Алынып салынган API | Эскирген API'лер
Жаңы API'лер

Copyright © 2025 Silicon Laboratories. Бардык укуктар корголгон.

4/174

USB
Жок.
Өзгөртүлгөн API'лер
Жок.
API'лер алынып салынды
Жок.
Эскирген API'лер
Жок.
Мүчүлүштүктөрдү оңдоо
Жок.
Чипти иштетүү
Жок.
Колдонмо Example Өзгөрүүлөр
Жаңы Эксamples | Өзгөртүлгөн Examples | Өчүрүлгөн Examples | Эскирген Examples
Жаңы Эксamples
Жок.
Өзгөртүлгөн Examples
Жок.
Өчүрүлгөн Examples
Жок.
Эскирген Examples
Жок.
Релиздеги өзгөрүүлөрдүн таасири
Таасир билдирүүлөрү | Миграция колдонмосу
Таасир билдирүүлөрү
Жок.
Миграция колдонмосу
Жок.
Белгилүү маселелер жана чектөөлөр
Жок.
Бул чыгарууну колдонуу

Copyright © 2025 Silicon Laboratories. Бардык укуктар корголгон.

5/174

USB

Чыгармада эмне бар? | Compatible Software | Орнотуу жана колдонуу | Жардам жана пикир

Чыгармада эмне бар?

USB Device Stack Application Examples
Шайкеш программалык камсыздоо

Программалык камсыздоо
Simplicity SDK Simplicity Studio Simplicity Commander GCC The GNU Compiler Collection) ARM IAR EWARM үчүн IAR Embedded Workbench

Шайкеш версия же Вариант
2025.6.0 5.11.0 1.18.2 (Simplicity Studio менен камсыздалган) 12.2.1 (Simplicity Studio менен камсыздалган) 9.40.1 (Simplicity Studio менен камсыздалган)

Орнотуу жана колдонуу

Өнүгүүңүздү баштоо үчүн, биздин караңыз:
USB түзмөк программалоо колдонмосу. API документациясы.
Secure Vault интеграциясы тууралуу маалымат алуу үчүн, Secure Vault караңыз.
Кайраview Коопсуздук жана программалык камсыздоо боюнча кеңеш эскертмелери жана эскертме тандоолоруңузду башкарыңыз:
ò https://community.silabs.com/ дарегине өтүңүз. ó Каттоо эсебиңиздин дайындары менен кириңиз. ô Профессоруңузду басыңызfile беттин жогорку оң бурчундагы сөлөкөтү.
õ ылдый түшүүчү менюдан Эскертмелерди тандаңыз. ö Эскертмелер бөлүмүндө, кайра өтүү үчүн Менин Продукциям эскертмелери өтмөгүнө өтүңүзview тарыхый коопсуздук жана программалык камсыздоо боюнча кеңеш
эскертмелер
÷ Тандоолорду башкаруу үчүн, өнүм жаңыртууларын жана кеңештерин ыңгайлаштыруу үчүн Эскертмелерди башкаруу өтмөгүн колдонуңуз
алуу.
Сунушталган конфигурация орнотуулары үчүн бул жерден караңыз.
Бул чыгарылыштагы программалык камсыздоо жөнүндө көбүрөөк билүү үчүн, биздин онлайн документтерибизге кириңиз.
Жардам жана пикир

Silicon Labs колдоо кызматы менен байланышыңыз. Жооп алуу үчүн AI сура куралыбызды колдонуу үчүн, бул барактын жогору жагындагы издөө талаасын караңыз.

Эскертүү: Сурак AI эксперименталдык.

Иштеп чыгуучулар коомчулугубуздан жардам алыңыз.
SDK чыгаруу жана тейлөө саясаты
Биздин SDK чыгаруу жана тейлөө саясатыбызды караңыз.

Copyright © 2025 Silicon Laboratories. Бардык укуктар корголгон.

6/174

Бүттүview
Бүттүview
Техникалык шарттар
"Universal Serial Bus спецификациясын кайра карап чыгуу 2.0" ылайык келет "Интерфейс Ассоциациясынын Дескриптору Инженердик Өзгөртүү Эскертүүсүн (ECN)" Өткөрмө түрлөрүн ишке ашырат
Башкаруу жапырт үзгүлтүккө учуратуу USB класстары Байланыш түзмөк классы (CDC) Абстракттуу башкаруу модели (ACM) Адам интерфейси түзмөгү (HID) Массалык сактоо классы (MSC) Сатуучуга тиешелүү класс алкагы
Өзгөчөлүктөрү
Эстутумдун көлөмүн азайтуу үчүн керектүү функцияларды гана камтуу үчүн масштабдалат Толук ылдамдыкты (12 Мбит/сек) колдойт Композиттик (көп функциялуу) түзмөктөрдү колдойт Көп конфигурациялуу түзмөктөрдү колдойт USB энергияны үнөмдөөчү функцияларды колдойт (түзмөктү токтотуу жана улантуу) Массалык сактоо классын Micrium OS менен толук интеграциялоо File Системалык модулу CMSIS-RTOS2 абстракция катмары менен иштелип чыккан, ошондуктан ал ар кандай ОС менен иштей алат. Silicon Labs GSDK FreeRTOS жана Micrium OS порттору менен келет.

Copyright © 2025 Silicon Laboratories. Бардык укуктар корголгон.

7/174

Бүттүview
Бүттүview

USB түзмөк конфигурациясы

Бул бөлүмдө Silicon Labs USB түзмөгүн кантип конфигурациялоо керектиги талкууланат. Төмөнкүдөй конфигурация параметрлеринин үч тобу бар:
USB түзмөгүнүн негизги конфигурациясы USB түзмөк маалыматы конфигурациясы USB аппаратынын аппараттык конфигурациясы
USB түзмөгүнүн негизги конфигурациясы
Silicon Labs USB түзмөгүн компиляция учурунда sl_usbd_core_config.h ичинде жайгашкан #defines топтому аркылуу конфигурациялоого болот. file. USB түзмөгү мүмкүн болгон учурда #defines колдонот, анткени алар компиляция убагында код менен берилиштердин өлчөмдөрүн кайсы функциялар иштетилгенине жараша масштабдашууга мүмкүндүк берет. Бул Silicon Labs USB түзмөгүнүн окуу үчүн гана эстутум (ROM) жана кокус кирүүчү эстутум (RAM) издерин колдонмоңуздун талаптарынын негизинде тууралоого мүмкүндүк берет.
Сунушталат: Конфигурация процессин демейки маанилер менен баштаңыз (калың шрифт менен белгиленген).
Төмөнкү бөлүмдөр шаблон конфигурациясындагы тартиптин негизинде уюштурулган file, sl_usbd_core_config.h.
Негизги конфигурация класстары Конфигурация
Негизги конфигурация
Таблица – USB түзмөктүн негизги конфигурациясынын константалары

Туруктуу Description

Демейки маани

SL_USBD_TA SK_STACK_ SIZE

USBD негизги тапшырмасынын байттары менен стектин өлчөмүн конфигурациялайт

4096

SL_USBD_TA SK_PRIORIT Y

USBD негизги тапшырмасынын артыкчылыктуулугун конфигурациялайт. Бул CMSIS-RTOS2 приоритети.

osPriorityHigh

SL_USBD_A UTO_START _USB_DEVIC E

Эгер иштетилсе, USB түзмөгү ядро ​​башталганда жана 1 USBD негизги тапшырмасы биринчи жолу пландаштырылгандан кийин автоматтык түрдө иштетилет. Эгер өчүрүлгөн болсо, колдонмоңуз USB хост тарабынан табылууга даяр болгондо sl_usbd_core_start_device() чакырышы керек болот.

SL_USBD_C sl_usbd_add_configuration() аркылуу кошула турган конфигурациялардын жалпы саны

1

ONFIGURATI функциясы.

ON_QUANTI

TY

Copyright © 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
UANTITY
SL_USBD _STRING _QUANTI
TY
SL_USBD _OPEN_E NDPOIN TS_QUA NTITY

Сүрөттөмө бардык конфигурацияларыңыз үчүн кошула турган USB интерфейстеринин жалпы саны. Бул колдонулган класстан (класстардан) көз каранды. Класс инстанциясы канча интерфейсти талап кылары жөнүндө көбүрөөк маалымат алуу үчүн, классыңыздын(лардын) “Негизги ресурстарга муктаждыктары” бөлүмүн караңыз.
Бардык конфигурацияларыңыз үчүн кошула турган USB кошумча интерфейстеринин жалпы саны. Бул колдонулган класстан (класстардан) көз каранды. Бул маани ар дайым SL_USBD_INTERFACE_QUANTITY ге барабар же чоңураак болушу керек. Класс инстанциясы канча альтернативдик интерфейстерди талап кылары жөнүндө көбүрөөк маалымат алуу үчүн, классыңыздын(лардын) “Негизги ресурстардын муктаждыктары” бөлүмүн караңыз.
Бардык конфигурацияларыңыз үчүн кошула турган USB интерфейс топторунун жалпы саны. Бул колдонулган класстан (класстардан) көз каранды. Канча интерфейс тобуна класс үлгүсү керек экендиги жөнүндө көбүрөөк маалымат алуу үчүн, классыңыздын(лардын) “Негизги ресурстарга болгон муктаждыктары” бөлүмүн караңыз.
Бардык конфигурацияларыңызга кошула турган Endpoint дескрипторлорунун жалпы саны. Бул колдонулган класстан (класстардан) көз каранды. Класс инстанциясы канча акыркы чекит дескрипторун талап кылары жөнүндө көбүрөөк маалымат алуу үчүн, классыңыздын(лардын) “Негизги ресурстук муктаждыктар” бөлүмүндөгү “Акыркы чекиттердин саны” караңыз. Бул жерде башкаруунун акыркы чекиттерин эске алуунун кереги жок экенин белгилеңиз. USB саптарынын жалпы саны. Санды нөлгө коюу функцияны өчүрөт. Муну өчүрүү түзмөктүн колдонмодон өткөн USB сүрөттөмө саптарын сактабай калышына алып келет. Бул хост сыпаттоо саптарын (мисалы, өндүрүүчү жана өнүм аталышы) ала албай калат дегенди билдирет. Бир конфигурацияда ачылган акыркы чекиттердин жалпы саны. Түзмөккө башкаруу өткөрүү үчүн жок дегенде эки ачылган акыркы чекит керек, бирок сиз ошондой эле колдонулган класстын (класстардын) акыркы чекиттерин кошууңуз керек. Класс инстанциясы канча ачылган акыркы чекиттерди талап кылары жөнүндө көбүрөөк маалымат алуу үчүн, классыңыздын(лардын) “Негизги ресурстук муктаждыктар” бөлүмүндөгү “Акырткы чекиттердин саны” караңыз.

Демейки маани
10 10
2
20 30 20

Класстарды конфигурациялоо
Класстардын атайын компиляция убактысы конфигурациялары бар. Көбүрөөк маалымат алуу үчүн USB түзмөк класстарын караңыз.
USB түзмөк маалыматын конфигурациялоо

sl_usbd_device_config.h конфигурациясы file түзмөгүңүзгө байланыштуу негизги маалыматты орнотуу үчүн компиляция убактысын #define-s кайра топтойт, мисалы, Сатуучу/Продукт ID, түзмөк саптары ж.б. file.

Таблица – USB түзмөк маалыматы конфигурациясын аныктайт

Туруктуу
SL_USBD_DEVIC E_VENDOR_ID
SL_USBD_DEVIC E_PRODUCT_ID

Сүрөттөмөсү USB Implementers Forum тарабынан берилген сатуучунун идентификациялык номери. Сатуучунун идентификаторун кантип алууга болору тууралуу көбүрөөк маалымат алуу үчүн, караңыз http://www.usb.org/developers/vendor/ . Сиздин продуктунун идентификациялык номери.

Copyright © 2025 Silicon Laboratories. Бардык укуктар корголгон.

9/174

Бүттүview

Туруктуу

Description

SL_USBD_DEVICE_RELEASE Түзмөгүңүздүн релиз номери. _NUMBER

SL_USBD_DEVICE_MANUFA Түзмөгүңүздүн өндүрүүчүсүн сүрөттөгөн сап. Бул конфигурация болгондо этибарга алынбайт

CTURER_STRING

SL_USBD_STRING_QUANTITY конфигурациясы 0гө коюлган.

SL_USBD_DEVICE_PRODUC Өнүмүңүздү сүрөттөгөн сап. Бул конфигурация конфигурацияда этибарга алынбайт

T_STRING

SL_USBD_STRING_QUANTITY 0гө коюлган.

SL_USBD_DEVICE_SERIAL_N Түзмөгүңүздүн сериялык номерин камтыган сап. Бул конфигурация болгондо этибарга алынбайт

UMBER_STRING

SL_USBD_STRING_QUANTITY конфигурациясы 0гө коюлган.

SL_USBD_DEVICE_LANGUA Түзмөгүңүздүн саптарынын тилинин идентификациялык номери. Мүмкүн болгон баалуулуктар:
GE_ID

– SL_USBD_LANG_ID_ARABIC_SAUDI_ARABIA

– SL_USBD_LANG_ID_CHINESE_TAIWAN

– SL_USBD_LANG_ID_ENGLISH_US

– SL_USBD_LANG_ID_ENGLISH_UK

– SL_USBD_LANG_ID_FRENCH

– SL_USBD_LANG_ID_GERMAN

– SL_USBD_LANG_ID_GREEK

– SL_USBD_LANG_ID_ITALIAN

– SL_USBD_LANG_ID_PORTUGUESE

– SL_USBD_LANG_ID_SANSKRIT

SL_USBD_STRING_QUANTITY конфигурациясы 0 болуп коюлганда, бул конфигурация этибарга алынбайт.

USB түзмөктүн аппараттык конфигурациясы

Сиз колдонуп жаткан Silicon Labs түзмөгүңүзгө жараша, сизде USB VBUS Sense сигналын конфигурациялоо үчүн GPIO пин жана порту болушу мүмкүн. Конфигурация аныктайт sl_usbd_hardware_config.h темасында file.

Туруктуу
SL_USBD_DRIVER_VBUS_SENSE_PORT SL_USBD_DRIVER_VBUS_SENSE_PIN

Description
Тактадагы USB VBUS Sense сигналы үчүн GPIO порту. Тактадагы USB VBUS Sense сигналы үчүн GPIO Pin.

Copyright © 2025 Silicon Laboratories. Бардык укуктар корголгон.

10/174

Бүттүview
Бүттүview
USB түзмөк программалоо колдонмосу
Бул бөлүмдө USB түзмөк модулун кантип колдонуу керектиги түшүндүрүлөт.
USB түзмөк модулунун баштапкы орнотуу
Бул бөлүмдө USB түзмөк модулун инициализациялоо жана аппаратты кошуу, даярдоо жана баштоо үчүн зарыл болгон негизги кадамдар сүрөттөлөт. USB түзмөгүнүн модулун инициализациялоо USB түзмөгүңүздүн өзөгүн инициализациялоо aCl ss(ларды) инициализациялоо USB түзмөгүңүздү кошуу USB түзмөгүңүздү куруу Конфигурацияны(ларды) кошуу USB функциясын(ларды) кошуу USB түзмөгүңүздү баштоо
Event Hook функциялары
USB түзмөк модулун баштоо
USB түзмөгүнүн өзөгүн баштоо
a US a sl_usbd_core_init() функциясын иштетүү менен B түзмөгүнүн модулунун өзөгүн баштоодон баштаңыз. Т aa ал ex mple төмөндө көрсөтүлгөн c lling sl_usbd_core_init() .
Example – Чакыруу sl_usbd_core_init()
sl_status_t статусу; статус = sl_usbd_core_init(); эгерде (статус ! SL_STATUS_OK) { /* Ката кетти. Ката иштетүү бул жерге кошулушу керек. */
}
Кластарды инициализациялоо
USB түзмөгүнүн модулунун өзөгү инициализациялангандан кийин, сиз колдоно турган ар бир классты инициализациялашыңыз керек. Көбүрөөк маалымат алуу үчүн сиздин acl ss(лер)иңиздин “Программалоо колдонмосу” бөлүмүн караңыз.
USB түзмөгүңүздү куруу
Конфигурация(лар)ды кошуу
Аспабыңызды ийгиликтүү инициализациялагандан кийин, жаңы конфигурациядан баштап, ага USB функцияларын кошо баштасаңыз болот. Түзмөктө жок дегенде бир конфигурация болушу керек. Конфигурация(ларды) кошуу үчүн, aa sl_usbd_core_ dd_configur tion() функциясын чакырыңыз. Бул функция сиз кошкуңуз келген ар бир конфигурация үчүн чакырылышы керек. мурдагыample төмөндө Толук ылдамдыкты кантип кошууну көрсөтөт.
Example – Түзмөгүңүзгө конфигурация(ларды) кошуу

Copyright © 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,

/* Толук ылдамдыктагы конфигурация.

*/

"Config Add Example Full-Speed ​​конфигурациясы”,

&config_nbr_fs);

эгерде (статус ! SL_STATUS_OK) {

/* Ката кетти. Ката иштетүү бул жерге кошулушу керек. */

}

USB функцияларын кошуу
Түзмөгүңүзгө жок дегенде бир конфигурацияны ийгиликтүү кошкондон кийин, түзмөгүңүзгө интерфейстерди жана акыркы чекиттерди кошо аласыз. Ар бир USB классынын интерфейси жана акыркы чекиттеринин түрү, саны жана башка параметрлери боюнча өзүнүн муктаждыктары бар. Silicon Labs USB Device өзү сунуштаган класстарга интерфейстерди жана акыркы чекиттерди кошот.
Колдонмоңуздан сиз USB классын жаратып, аны конфигурацияга кошо аласыз. USB түзмөк класстарынын концепциясы жөнүндө көбүрөөк маалымат алуу үчүн, USB түзмөк класстарын караңыз. Көп функциялуу (композиттик) түзүлүштү түзүү үчүн конфигурацияга көптөгөн ар кандай класс инстанцияларын жаратып, кошууга болорун эске алыңыз.
мурдагыampТөмөндө класстын инстанциясын кантип түзүү жана аны конфигурацияга кошуу керектиги көрсөтүлгөн.
Example – Сиздин түзмөгүңүзгө класс үлгүсүн кошуу

sl_status_t статусу; uint8_t class_nbr;
/* Колдонгуңуз келген класстын мисалын түзүңүз.*/ /* Класска жараша бул функциянын аргументтери көп болушу мүмкүн экенин эске алыңыз. */ абалы = sl_usbd_ _create_instance(&class_nbr); эгерде (статус ! SL_STATUS_OK) { /* Ката кетти. Ката иштетүү бул жерге кошулушу керек. */ }
/* Класс үлгүсүн Full-Speed ​​конфигурациясына кошуңуз. */ абалы = sl_usbd_ _add_to_configuration(class_nbr, /* Класс номери sl_usbd_ тарабынан кайтарылды _мисалы. */
config_nbr_fs); /* sl_usbd_core_add_configuration() тарабынан кайтарылган конфигурация номери. */ эгерде (статус ! SL_STATUS_OK) { /* Ката кетти. Ката иштетүү бул жерге кошулушу керек. */ }
USB түзмөгүңүздү баштоо
Демейки боюнча, түзмөктү инициализациялоо аяктагандан жана ядро ​​башталгандан кийин, USB түзмөгүнүн негизги милдети тарабынан аппарат автоматтык түрдө ишке киргизилет. Түзмөк качан иштетилгенин жана USB хост тарабынан көрүнөөрүн көзөмөлдөө үчүн, автоматтык баштоо мүмкүнчүлүгүн өчүрүү үчүн SL_USBD_AUTO_START_USB_DEVICE аныктоо конфигурациясын колдонуңуз. Өчүрүлгөндө, сиз түзмөгүңүздү кургандан/даярдагандан кийин, sl_usbd_core_start_device() функциясын чакырып, аны иштетип, USB хостуна көрүнүктүү кыла аласыз.
мурдагыample төмөндө sl_usbd_core_start_device() функциясын колдонуу менен түзмөгүңүздү кантип баштоону көрсөтөт.
Example – Түзмөгүңүздү баштоо

Copyright © 2025 Silicon Laboratories. Бардык укуктар корголгон.

12/174

Бүттүview

sl_status_t статусу;
статус = sl_usbd_core_start_device(); эгерде (статус ! SL_STATUS_OK) { /* Ката кетти. Ката иштетүү бул жерге кошулушу керек. */ }

Event Hook функциялары
USB Түзмөктүн негизги модулу колдонмоңузда кайра аныктай турган эки начар илгич функцияларын сунуштайт. Алардын максаты автобус жана конфигурация окуялары болгондо кабарлоо болуп саналат.
Таблица – USB Event Hook функциялары

Окуя

Description

Автобус

USB Bus окуясы пайда болгондо чакырылат

Конфигурация USB Конфигурация окуясы болгондо чакырылат

Function Signature
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 – Event Hook функциялары

void sl_usbd_on_bus_event(sl_usbd_bus_event_t event) { switch (окуя) { case SL_USBD_EVENT_BUS_CONNECT:
// USB кабели хост контроллеринин үзүлүшүнө киргизилгенде чакырылат;
case SL_USBD_EVENT_BUS_DISCONNECT: // USB кабели хост контроллеринин үзүлүшүнөн алынып салынганда чакырылат;
case SL_USBD_EVENT_BUS_RESET: // хост кайра орнотуу буйругун жөнөткөндө чакырылат;
case SL_USBD_EVENT_BUS_SUSPEND: // хост токтото туруу буйругун жөнөткөндө чакырылат;
case SL_USBD_EVENT_BUS_RESUME: // хост ойготуу буйругун үзгүлтүккө учуратканда чакырды;
демейки: үзүү; } }
void sl_usbd_on_config_event(sl_usbd_config_event_t event, uint8_t config_nbr) { switch (окуя) { case SL_USBD_EVENT_CONFIG_SET:
// хост конфигурация тыныгуусун койгондо чакырылат;
case SL_USBD_EVENT_CONFIG_UNSET: // конфигурация орнотулбаган үзгүлтүккө учураганда чакырылат;
демейки: үзүү; } }

Copyright © 2025 Silicon Laboratories. Бардык укуктар корголгон.

13/174

Бүттүview

Copyright © 2025 Silicon Laboratories. Бардык укуктар корголгон.

14/174

Бүттүview
Бүттүview

USB түзмөк класстары

Silicon Labs USB Deviceде жеткиликтүү USB класстары кээ бир жалпы мүнөздөмөлөрдү бөлүшөт. Бул бөлүмдө бул мүнөздөмөлөр жана алардын өзөк катмары менен өз ара аракеттенүүсү түшүндүрүлөт.
Белгилүү бир класс боюнча көбүрөөк маалымат алуу үчүн, төмөнкүнү караңыз:
CDC ACM класс HID класс MSC SCSI класс сатуучу класс
Class Instances жөнүндө
USB түзмөктө жеткиликтүү USB класстары класс инстанцияларынын концепциясын ишке ашырат. Класс үлгүсү түзмөктүн ичиндеги бир функцияны билдирет. Функция бир интерфейс менен же интерфейстердин тобу менен сүрөттөлүшү мүмкүн жана белгилүү бир класска таандык.
Ар бир USB классын ишке ашыруу класстын инстанциясынын концепциясына негизделген кээ бир конфигурацияларга жана жалпы функцияларга ээ. Жалпы конфигурациялар жана функциялар төмөнкү таблицада берилген. "Туруктуулар же функция" тилкесинин аталышында XXXX толтургуч класстын аталышы менен алмаштырылышы мүмкүн: CDC, HID, MSC, CDC_ACM же VENDOR (функциялардын аталыштары үчүн сатуучу).
Таблица – Бир нече класстык инстанциялар түшүнүгүнө тиешелүү константтар жана функциялар

Туруктуу же Функция
SL_USBD_XXXX_CL ASS_INS TANCE_QUANTITY
SL_USBD_XXXX_CONFIGUR ATION_QUANTITY
sl_usb d _XXXX_cre _insta nce жеди ()
sl_usbd_XXXX_add_to_conf игурациясы()

Description
Класс инстанцияларынын максималдуу санын конфигурациялайт.
Конфигурациялардын максималдуу санын конфигурациялайт. Классты инициализациялоо учурунда түзүлгөн класс үлгүсү бир же бир нече конфигурацияга кошулат. Жаңы класс инстанциясын түзөт.
Белгиленген түзмөк конфигурациясына учурдагы класс үлгүсүн кошот.

Кодду ишке ашыруу жагынан класс классты башкаруу структурасын камтыган жергиликтүү глобалдык өзгөрмө жарыялайт. Бул классты башкаруу структурасы бир класс инстанциясы менен байланышкан жана класстын инстанциясын башкаруу үчүн атайын маалыматты камтыйт.
Төмөнкү сандар бир нече окуянын сценарийин көрсөтөт. Ар бир фигура мурунку кодду камтыйтampле бул окуянын сценарийине туура келет.
Сүрөт – Бир нече класстык инстанциялар – FS түзмөгү (1 интерфейси бар 1 конфигурация) кадимки USB түзүлүшүн билдирет. Түзмөк Full-Speed ​​(FS) жана бир конфигурацияны камтыйт. Аппараттын функциясы маалымат байланышы үчүн жуп акыркы чекиттерден турган бир интерфейс менен сүрөттөлөт. Бир класс үлгүсү түзүлдү жана ага байланышкан акыркы чекити менен бүт интерфейсти башкарууга мүмкүндүк берет.
Сүрөт – Бир нече класс инстанциялары – 1 интерфейси бар FS Device 1 конфигурациясы)

Copyright © 2025 Silicon Laboratories. Бардык укуктар корголгон.

15/174

Бүттүview

Сүрөткө туура келген код – Бир нече класс инстанциялары – FS түзмөгү (1 Интерфейс менен 1 Конфигурация) мурунку сүрөттө көрсөтүлгөн.ampле төмөндө.
Example – Бир нече класс инстанциялары – 1 интерфейс менен FS Device 1 конфигурациясы)

sl_status_t статусу; uint8_t class_0;

void app_usbd_XXXX_enable(uint8_t class_nbr) { /* Handle Классты иштетүү окуясы. */ }

void app_usbd_XXXX_disable(uint8_t class_nbr) { /* Handle Class өчүрүү окуясы. */ }

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)

&класс_0);

эгерде (статус ! SL_STATUS_OK) {

/* $$$$ Катаны жөнгө салыңыз. */

}

статус = sl_usbd_XXXX_add_to_configuration(класс_0, config_0);

(4)

эгерде (статус ! SL_STATUS_OK) {

/* $$$$ Катаны жөнгө салыңыз. */

}

(1) Ар бир класс түзмөктү туташтыруу/ажыратуу окуялары жана класска тиешелүү окуялар үчүн кайра чалуу функцияларынын топтомун сунуштайт. Кайра чалуу структурасынын объекти sl_usbd_XXXX_create_instance() менен класс инстанциясын түзүүдө аргумент катары өткөрүлөт.
функция.
(1) Классты баштаңыз. Бардык ички өзгөрмөлөр, структуралар жана класс порттору инициализацияланат. Кээ бир класстардагы Init() функциясы башка аргументтерди алышы мүмкүн экенин эске алыңыз.

Copyright © 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 инстанциясын, class_0 , көрсөтүлгөн конфигурация номерине, config_0 кошуңуз. sl_usbd_XXXX_add_to_configuration() 0 интерфейсин жана ага байланыштуу IN жана OUT акыркы чекиттерин түзөт. Натыйжада, класс үлгүсү 0 интерфейсин жана анын акыркы чекиттерин камтыйт. 0 интерфейсинде жасалган бардык байланыш класстын үлгү номерин колдонот, class_0 . Сүрөт – Бир нече класс инстанциялары – FS түзмөгү (2 конфигурация жана бир нече интерфейс) татаалыраак эксплуатацияны билдиретample. Толук ылдамдыктагы аппарат эки конфигурациядан турат. Түзмөктүн бир класска таандык эки функциясы бар, бирок ар бир функция эки интерфейс менен сүрөттөлөт жана бир жуп эки багыттуу акыркы чекиттери бар. Бул эксampле, эки класстык инстанция түзүлөт. Ар бир класс инстанциясы интерфейстердин тобу менен байланыштырылган. Сүрөт – Бир нече класс инстанциялары – FS түзмөгү (1 интерфейси бар 1 конфигурация) жана фигура – ​​Бир нече класс инстанциялары – FS түзмөгү (2 конфигурация жана бир нече интерфейс), мында класс инстанциясы бир интерфейс менен байланышкан.
Сүрөт – Бир нече класс инстанциялары – FS Device 2 конфигурациялары жана бир нече интерфейстер)

Сүрөт – Бир нече класс инстанциялары – FS түзмөгүнө (2 конфигурация жана бир нече интерфейс) тиешелүү код мурунку сүрөттө көрсөтүлгөн.ampле төмөндө. Түшүнүктүү болуу үчүн каталарды иштетүү жокко эсе.
Example – Бир нече класс инстанциялары – FS Device 2 конфигурациялары жана бир нече интерфейстер)

Copyright © 2025 Silicon Laboratories. Бардык укуктар корголгон.

17/174

Бүттүview

sl_status_t статусу; uint8_t class_0; uint8_t class_1;
статус = sl_usbd_XXXX_init();
статус = sl_usbd_XXXX_create_instance(&класс_0); статус = sl_usbd_XXXX_create_instance(&class_1);
статус = sl_usbd_XXXX_add_to_configuration(класс_0, cfg_0); статус = sl_usbd_XXXX_add_to_configuration(class_1, cfg_0);
статус = sl_usbd_XXXX_add_to_configuration(класс_0, cfg_1); статус = sl_usbd_XXXX_add_to_configuration(class_1, cfg_1);

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

(1) Классты баштаңыз. Бардык ички өзгөрмөлөр, структуралар жана класс порттору инициализацияланат.
(2) Класс үлгүсүн түзүңүз, class_0 . sl_usbd_XXXX_create_instance() функциясы class_0 менен байланышкан классты башкаруу структурасын бөлүп берет.
(3) Класс үлгүсүн түзүңүз, class_1 . sl_usbd_XXXX_create_instance() функциясы class_1 менен байланышкан башка классты башкаруу структурасын бөлүп берет.
(4) cfg_0 конфигурациясына class_0 класс үлгүсүн кошуңуз. sl_usbd_XXXX_add_to_configuration() 0 интерфейсин, 1 интерфейсин, кошумча интерфейстерди жана ага байланыштуу IN жана OUT акыркы чекиттерин түзөт. Класс инстанциясынын номери, class_0 , 0 интерфейсинде же 1 интерфейсинде ар кандай маалымат байланышы үчүн колдонулат.
(5) cfg_0 конфигурациясына class_1 класс үлгүсүн кошуңуз. sl_usbd_XXXX_add_to_configuration() интерфейс 2, интерфейс 3 жана алар менен байланышкан IN жана OUT акыркы чекиттерин түзөт. Класс үлгүсүнүн номери, class_1 , интерфейс 2 же интерфейс 3 боюнча ар кандай маалымат байланышы үчүн колдонулат.
(6) Башка конфигурацияга, cfg_1 , class_0 жана class_1 сыяктуу класс инстанцияларын кошуңуз.
Ар бир класс sl_usbd_XXXX_callbacks_t түрүнүн структурасын аныктайт. Анын максаты ар бир класска окуя болгондо чакыра турган кайра чалуу функцияларынын топтомун берүү болуп саналат. Ар бир класста эки кайра чалуу функциясы бар. Алар төмөнкү таблицада берилген.
Таблица – Common Class кайра чалуу функциялары

Fields Description .enable USB класс үлгүсү ийгиликтүү иштетилгенде чакырылат. .disable USB класс үлгүсү өчүрүлгөндө Чакырылды.

Function Signature void app_usbd_XXXX_enable(uint8_t class_nbr); void app_usbd_XXXX_disable(uint8_t class_nbr);

Copyright © 2025 Silicon Laboratories. Бардык укуктар корголгон.

18/174

Бүттүview
Бүттүview
USB түзмөк CDC ACM классы
USB түзмөгүнүн CDC базалык классы бүттүview USB түзмөгүнүн CDC ACM классынын ресурсу негизги USB түзмөгүнөн CDC ACM субклассынын керектөөлөрүview USB Device CDC ACM Class Configuration USB Device CDC ACM Class Программалоо колдонмосу
Бул бөлүм Silicon Labs' USB Device стеки тарабынан колдоого алынган Communications Device Class (CDC) классын жана тиешелүү CDC субклассын сүрөттөйт. Silicon Labs USB-түзмөгү учурда сериялык эмуляция үчүн колдонулган абстракттуу башкаруу моделин (ACM) подклассын колдойт.
CDC ар кандай телекоммуникациялык жана тармактык түзүлүштөрдү камтыйт. Телекоммуникациялык түзүлүштөр аналогдук модемдерди, аналогдук жана санариптик телефондорду, ISDN терминалдык адаптерлерди ж.б. камтыйт. Мисалы үчүнample, тармактык түзүлүштөр ADSL жана кабелдик модемдерди, Ethernet адаптерлерин жана хабдарды камтыйт. CDC USB шилтемесин колдонуу менен V.250 (телефон түйүнүндөгү модемдер үчүн) жана Ethernet (жергиликтүү тармак түзмөктөрү үчүн) сыяктуу учурдагы байланыш кызматтарынын стандарттарын инкапсуляциялоо үчүн негизди аныктайт. Байланыш түзмөгү аппаратты башкаруу, керек болгон учурда чалууларды башкаруу жана маалыматтарды берүү үчүн жооптуу.
CDC аппараттардын жети негизги тобун аныктайт. Ар бир топ бир нече субкласстарды камтышы мүмкүн болгон байланыш моделине кирет. Ар бир түзмөк тобунун CDC базалык классынан тышкары өзүнүн спецификациялык документи бар. Жети топ болуп төмөнкүлөр саналат:
Коомдук коммутациялык телефон тармагы (PSTN), үн тилкелүү модемдерди, телефондорду жана сериялык эмуляцияны камтыган түзмөктөр. Integrated Services Digital Network (ISDN) түзмөктөрү, анын ичинде терминалдык адаптерлер жана телефондор. Ethernet Control Model (ECM) түзмөктөрү, анын ичинде IEEE 802 үй-бүлөсүн колдогон түзмөктөр (мисалы: кабелдик жана ADSL модемдери, WiFi адаптерлери). Асинхрондук өткөрүү режими (ATM) түзмөктөрү, анын ичинде ADSL модемдери жана банкомат тармактарына туташтырылган башка түзмөктөр (жумуш станциялары, роутерлер, LAN которгучтары). Зымсыз мобилдик байланыш (WMC) түзмөктөрү, анын ичинде үн жана маалымат байланыштарын башкаруу үчүн колдонулган көп функциялуу байланыш телефон аппараттары. Ethernet рамкалуу маалыматтарды алмашуучу Ethernet Emululation Model (EEM) түзмөктөрү. Тармакты башкаруу модели (NCM) түзмөктөрү, анын ичинде жогорку ылдамдыктагы тармак түзмөктөрү (Жогорку ылдамдыктагы пакеттик кирүү модемдери, Line Terminal Equipment)
CDC жана аны менен байланышкан субклассты ишке ашыруу төмөнкү спецификацияларга ылайык келет:
Universal Serial Bus, Communications Devices үчүн класстын аныктамалары, Ревизия 1.2, 3-ноябрь 2010-ж.
USB түзмөгүнүн CDC базалык классы бүттүview
CDC аппараты байланыш мүмкүнчүлүгүн ишке ашыруу үчүн төмөнкү интерфейстерден турат:
Communications Class Interface (CCI) аппаратты башкаруу жана кошумча чалууларды башкаруу үчүн жооптуу. The
аппаратты башкаруу аппараттын жалпы конфигурациясын жана башкаруусун жана окуяларды хостко билдирүүнү камсыз кылат. Чалууларды башкаруу чалууларды түзүүгө жана токтотууга мүмкүндүк берет. Чалууларды башкаруу DCI аркылуу мультиплекстештирилиши мүмкүн. CCI бардык CDC түзмөктөрү үчүн милдеттүү болуп саналат. Ал CDC аппараты тарабынан колдоого алынган байланыш моделин көрсөтүү менен CDC функциясын аныктайт. CCIден кийинки интерфейс(лер) Аудио же сатуучуга тиешелүү интерфейс сыяктуу аныкталган USB классынын интерфейси болушу мүмкүн. Сатуучуга тиешелүү интерфейс атайын DCI тарабынан көрсөтүлөт.
Data Class Interface (DCI) маалыматтарды берүү үчүн жооптуу. Берилген жана/же алынган маалыматтар белгилүү бир нерсеге ылайык келбейт
формат. Берилиштер байланыш линиясынан алынган чийки маалыматтар, менчик форматтагы маалыматтар ж.
CDC түзмөгүндө жок дегенде бир CCI жана нөл же андан көп DCI болушу керек. Бир CCI жана каалаган баш ийген DCI чогуу хостко өзгөчөлүк берет. Бул мүмкүнчүлүк функция деп да аталат. CDC курама түзмөгүндө сизде бир нече болушу мүмкүн

Copyright © 2025 Silicon Laboratories. Бардык укуктар корголгон.

19/174

Бүттүview
функциялары. Демек, аппарат сүрөттө көрсөтүлгөндөй CCI жана DCI(лер) бир нече топтомдорунан турат - CDC Композиттик түзмөк.
Сүрөт - CDC Композиттик түзмөк

CDC аппараты төмөнкү акыркы чекиттердин айкалышын колдонушу мүмкүн:
Демейки акыркы чекит деп аталган IN жана OUT акыркы чекиттеринин түгөйү. Кошумча жапырт же үзгүлтүк IN акыркы чекити. Жабык же изохрондук IN жана OUT акыркы чекиттеринин жуптары. Silicon Labs USB түзмөгүнүн стеки учурда изохрондук акыркы чекиттерди колдобой турганын эске алыңыз.
Төмөнкү таблицада ар кандай акыркы чекиттердин колдонулушу жана алар CDCдин кайсы интерфейси тарабынан колдонулганы көрсөтүлгөн.
Таблица – CDC Endpoint Usage

Акыркы чекит
Control IN
Control OUT
Үзгүлтүк же жапырт IN Жапыртылган же изохрондук IN Жаппай же изохрондуу
OUT

Багыт
Deviceto-host
Хост-түзмөк
Deviceto-host
Deviceto-host
Хост-түзмөк

Интерфейсти колдонуу

CCI

Эсептөө үчүн стандарттык суроо-талаптар, класска тиешелүү суроо-талаптар, түзмөк

башкаруу жана ыктыярдуу түрдө башкарууну чакырыңыз.

CCI

Эсептөө үчүн стандарттык суроо-талаптар, класска тиешелүү суроо-талаптар, түзмөк

башкаруу жана ыктыярдуу түрдө башкарууну чакырыңыз.

CCI

Окуялардын билдирүүсү, мисалы, шакек аныктоо, сериялык линиянын абалы, тармак абалы.

DCI

Чийки же форматталган маалымат байланышы.

DCI

Чийки же форматталган маалымат байланышы.

Көпчүлүк байланыш түзүлүштөрү окуялардын ээсине кабарлоо үчүн үзгүлтүктүн акыркы чекин колдонушат. Проприетардык протокол USB протоколунун каталары болгон учурда маалыматтарды кайра жөнөтүүгө таянган учурда изохрондук акыркы чекиттер маалыматтарды берүү үчүн колдонулбашы керек. Изохрондук байланыш табиятынан маалыматтарды жоготуп коюшу мүмкүн, анткени анын кайра аракет кылуу механизмдери жок.
Байланыштын жети негизги модели бир нече подкласстарды камтыйт. Субкласс аппаратты башкаруу жана чалууларды башкаруу үчүн CCIди кантип колдонушу керектигин сүрөттөйт. Төмөнкү таблицада мүмкүн болгон бардык класстар жана алар таандык болгон байланыш модели көрсөтүлгөн.
Таблица – CDC субкласстары

подкласс
Түз сызык башкаруу модели абстракттуу башкаруу модели

Коммуникация модели
PSTN
PSTN

ExampБул подклассты колдонгон түзмөктөр
Модем түзмөктөрү түздөн-түз USB хост тарабынан башкарылат
Сериялык эмуляциялык түзүлүштөр, сериялык буйруктар топтому аркылуу башкарылуучу модемдик түзүлүштөр

Copyright © 2025 Silicon Laboratories. Бардык укуктар корголгон.

20/174

Бүттүview

подкласс

Коммуникация модели

ExampБул подклассты колдонгон түзмөктөр

Телефон башкаруу модели

PSTN

Көп каналдуу башкаруу ISDN модели

CAPI башкаруу модели ISDN

Ethernet Networking ECM башкаруу модели

ATM Networking

банкомат

Башкаруу модели

Зымсыз телефон башкаруу модели

WMC

Түзмөктү башкаруу WMC

Мобилдик түз линия модели

WMC

OBEX

WMC

Ethernet эмуляциясы EEM модели

Тармакты башкаруу модели

NCM

Үн телефония аппараттары
Негизги тарифтик терминалдык адапторлор, баштапкы тарифтик терминалдык адапторлор, телефондор
Негизги тарифтик терминалдык адапторлор, негизги тарифтик терминалдык адаптерлер, телефондор DOC-SIS кабелдик модемдери, PPPoE эмуляциясын колдогон ADSL модемдери, Wi-Fi адаптерлери (IEEE 802.11-үй-бүлө), IEEE 802.3 адаптерлери ADSL модемдери
Зымсыз түзмөктөргө туташтырылган мобилдик терминалдык жабдуулар
Зымсыз түзмөктөргө туташтырылган мобилдик терминалдык жабдуулар Зымсыз түзмөктөргө туташтырылган мобилдик терминалдык жабдуулар
Зымсыз түзмөктөргө туташтырылган мобилдик терминалдык жабдуулар Кийинки транспорт катмары катары Ethernet алкактарын колдонгон түзмөктөр. Тармакта жогорку ылдамдыктагы маалымат өткөрүү жөндөмдүүлүгүн алып жүрүүчү IEEE 802.3 адаптерлери багыттоо жана Интернетке туташуу үчүн арналган эмес

USB түзмөгүнүн CDC ACM классынын ресурстук муктаждыктары Core

CDC ACM класс үлгүсүн sl_usbd_cdc_acm_add_to_configuration() функциясына чакыруу аркылуу USB конфигурациясына кошкон сайын, төмөнкү ресурстар өзөктөн бөлүнөт.

Ресурс
Интерфейстер Альтернативдүү интерфейстер Акыркы чекиттер Интерфейс топтору

Саны
2 2 3 1

Бул сандар ар бир конфигурацияда экенин эске алыңыз. SL_USBD_INTERFACE_QUANTITY , SL_USBD_ALT_INTERFACE_QUANTITY , SL_USBD_INTERFACE_GROUP_QUANTITY жана SL_USBD_DESCRIPTOR_QUANTITY конфигурация маанилерин орнотуп жатканда, класс канча конфигурация кошуларын эске алууну унутпаңыз. SL_USBD_OPEN_ENDPOINTS_QUANTITY конфигурация мааниси үчүн, акыркы чекиттер конфигурация хост тарабынан коюлганда гана ачылгандыктан, класстын үлгүсү үчүн керектүү акыркы чекиттердин санын эске алышыңыз керек.
USB түзмөгүнүн CDC ACM субклассы аштыview

CDC базалык классы Байланыш классынын интерфейсинен (CCI) жана берилиштер классынын интерфейсинен (DCI) турат, алар USB түзмөгүнүн CDC базалык классында кеңири талкууланат.view . Бул бөлүмдө ACM түрүндөгү CCI талкууланат. Ал башкаруу элементи үчүн демейки акыркы чекиттен жана эскертме элементи үчүн үзгүлтүктүн акыркы чекитинен турат. DCI боюнча такталбаган маалыматтарды алып жүрүү үчүн жапырт акыркы чекиттердин жуптары колдонулат.
ACM подклассы байланыш түзүлүштөрүнүн эки түрү тарабынан колдонулат:
AT буйруктарын колдогон түзмөктөр (мисалы, үн тилкелүү модемдер). Сериялык эмуляция түзмөктөрү, алар Виртуалдык COM порт түзмөктөрү деп да аталат.
ACM субклассы үчүн бир нече субкласска тиешелүү суроо-талаптар бар. Алар аппаратты башкарууга жана конфигурациялоого мүмкүндүк берет. Бардык ACM суроо-талаптарынын толук тизмесин жана сыпаттамасын спецификациядан тапса болот

Copyright © 2025 Silicon Laboratories. Бардык укуктар корголгон.

21/174

Бүттүview PSTN түзмөктөрүнүн подклассы, 1.2 ревизия, 9-февраль, 2007=, 6.2.2 бөлүм.
Бул тизмеден Silicon Labs9 ACM субклассы төмөнкүлөрдү колдойт:
Таблица - Silicon Labs тарабынан колдоого алынган ACM өтүнүчтөрү

Subclass өтүнүчүнүн сүрөттөлүшү

SetCommFeature GetCommFeature ClearCommFeature

Хост бул сурамды берилген байланыш функциясынын жөндөөлөрүн көзөмөлдөө үчүн жөнөтөт. Сериялык эмуляция үчүн колдонулбайт.
Хост бул сурамды берилген байланыш функциясынын учурдагы жөндөөлөрүн алуу үчүн жөнөтөт. Сериялык эмуляция үчүн колдонулбайт.
Хост бул сурамды берилген байланыш функциясынын жөндөөлөрүн тазалоо үчүн жөнөтөт. Сериялык эмуляция үчүн колдонулбайт.

SetLineCoding

Хост бул суроону ACM түзмөгүнүн жөндөөлөрүн конфигурациялоо үчүн жөнөтөт: берүү ылдамдыгы, токтотуу биттеринин саны, паритеттин түрү жана маалымат биттеринин саны. Сериялык эмуляция үчүн, бул суроо ачык виртуалдык COM порту үчүн сериялык орнотууларды конфигурациялаган сайын сериялык терминал тарабынан автоматтык түрдө жөнөтүлөт.

GetLineCoding

Хост бул өтүнүчтү учурдагы ACM жөндөөлөрүн алуу үчүн жөнөтөт (берүү ылдамдыгы, токтотуу биттери, паритет, маалымат биттери). Сериялык эмуляция үчүн сериялык терминалдар бул суроону виртуалдык COM портун ачуу учурунда автоматтык түрдө жөнөтүшөт.

SetControlLineState Хост бул өтүнүчтү жарым дуплекстүү модемдер үчүн ташуучуну көзөмөлдөө үчүн жөнөтөт жана Маалымат Терминалынын Жабдуусу (DTE) даяр же даяр эмес экенин көрсөтөт. Сериялык эмуляцияда DTE сериялык терминал болуп саналат. Сериялык эмуляция үчүн белгилүү бир сериялык терминалдар бул суроону башкаруу элементтери менен жөнөтүүгө мүмкүндүк берет.

SetBreak

Хост бул сурамды RS-232 стилиндеги үзгүлтүккө учуратууга жөнөтөт. Сериялык эмуляция үчүн белгилүү бир сериялык терминалдар бул суроону жөнөтүүгө мүмкүндүк берет.

Silicon Labs9 ACM подклассы учурдагы сериялык линиянын абалы жөнүндө хостко билдирүү үчүн үзгүлтүккө учуроо IN акыркы чекитин колдонот. Сериал
сызык абалы - бул хостко маалымат берүүчү битмап:

Ашып кеткендиктен берилиштер өчүрүлдү Паритет катасы Фреймдик ката

Silicon Labs9 ACM субклассын ишке ашыруу төмөнкү спецификацияга ылайык келет:
Universal Serial Bus, Communications, Subclass for PSTN Devices, версия 1.2, 9-февраль, 2007-ж.
USB Device CDC ACM Class Configuration

Бул бөлүмдө CDC ACM классын кантип конфигурациялоо керектиги талкууланат (Байланыш түзмөк классы, абстракттуу башкаруу модели). Конфигурация параметрлеринин эки тобу бар:
USB түзмөгүнүн CDC ACM классынын Колдонмонун атайын конфигурациялары USB түзмөгүнүн CDC ACM класс үлгүсүнүн конфигурациялары
USB Device CDC ACM Class Колдонмонун Конфигурациялары

CDC базалык классы ACM субклассы
CDC базалык классы

Биринчиден, Silicon Labs USB түзмөгүнүн CDC класс модулун колдонуу үчүн, CDC компиляция убактысы конфигурациясын #define-s колдонмоңуздун муктаждыктарына жараша тууралашыңыз керек болот. Алар sl_usbd_core_config.h башынын ичинде кайра топтолгон file CDC бөлүмүндө. Алардын максаты USB түзмөгүнүн модулуна канча USB CDC объектисин бөлүү керектиги жөнүндө маалымат берүү.

Copyright © 2025 Silicon Laboratories. Бардык укуктар корголгон.

22/174

Бүттүview

Төмөнкү таблица бул конфигурация структурасында жеткиликтүү болгон ар бир конфигурация талаасын сүрөттөйт.
Таблица – USB Device CDC конфигурациясын аныктайт

Конфигурация аты
SL_USBD_CDC_CL S_INSTANCE_QUANT ITY КАТЫ
SL_USBD_CDC_CONF IGURATION_QUANTI
TY
SL_USBD_CDC_DATA _INTERFACE_QUANTI
TY

Description
Функцияга чакыруу аркылуу сиз бөлгөн класс инстанцияларынын саны
sl_usbd_cdc_acm_create_instance() .
Конфигурациялардын саны. ACM класс инстанцияларын sl_usbd_cdc_acm_add_to_configuration() бир же бир нече aaaa конфигурацияларына кошууга болот.
Бардык CDC функциялары үчүн маалымат интерфейстеринин (DCI) жалпы саны. Ар бир CDC ACM функциясы sl_usbd_cdc_acm_create_instance() функциясына кошулган aaaaaaaaa dd dt интерфенцияны түзөт.

Демейки маани
2
1
2

ACM субклассы
ACM субклассы төмөнкү таблицада көрсөтүлгөн бир компиляция убактысы конфигурациясына ээ.
Таблица – USB Device CDC ACM Конфигурациясын аныктоо

Конфигурация аты
SL_USBD_CDC_ACM_SUBCL ASS_I NSTANCE_QUANTITY

Description
Чалуу аркылуу сиз бөлгөн субкласс инстанцияларынын санын конфигурациялайт
sl_usbd_cdc_acm_create_instance() функциясы.

Демейки маани
2

USB Device CDC ACM Class Instance Configurations

Бул бөлүм CDC ACM сериялык класс инстанцияларына тиешелүү конфигурацияларды аныктайт. Класс инстанциясын түзүү линиясынын абалынын интервалы чалуу mgmt мүмкүнчүлүктөрү p_acm_callbacks
Класс үлгүсүн түзүү

CDC ACM сериялык класс үлгүсүн түзүү үчүн T a sl_usbd_cdc_acm_create_instance() функциясын чакырыңыз. анын функциясы бул жерде сүрөттөлгөндөй үч конфигурация аргументине ээ.

line_state_interval
Бул сиздин CDC ACM сериялык класс үлгүңүз T aa хостуна сызык абалынын билдирмелерин билдире турган интервал (миллисекунд менен). анын v люю экинин күчү болушу керек (1, 2, 4, 8, 16, ж.б.).

call_mgmt_capabilities
Чалууларды башкаруу мүмкүнчүлүктөрүнүн бит картасы. Битмаптын мүмкүн болгон маанилери төмөнкүдөй:

Мааниси (бит)
SL_USBD_ACM_SERIAL_CALL_MGMT_DEV
SL_USBD_ACM_SERIAL_CALL_MGMT_DATA_CCI _DCI

Description
Түзмөк чалууларды башкарууну өзү башкарат. Түзмөк Data Class интерфейси аркылуу чалууларды башкаруу маалыматын жөнөтө/ала алат.

p_acm_callbacks

Copyright © 2025 Silicon Laboratories. Бардык укуктар корголгон.

23/174

Бүттүview

aa M aa p_acm_callbacks sl_usbd_cdc_acm_callbacks_t түрүндөгү структурага көрсөткүч. Анын максаты CDC AC Cl ss CDC ACM окуясы болгондо чакыра турган кайра чалуу функцияларынын топтомун берүү. Бардык эле кайра чалуулар милдеттүү эмес жана нөл көрсөткүчтү ( NULL ) кайра чалуу зарыл болбогон учурда кайра чалуу структурасынын өзгөрмөсүнө өткөрүп берүүгө болот. Төмөнкү таблица бул конфигурация структурасында жеткиликтүү болгон ар бир конфигурация талаасын сүрөттөйт.
Таблица – sl_usbd_cdc_acm _callbacks_t Конфигурация түзүмү

Талаалар

Description

.иштетүү

USB класс үлгүсү иштетилгенде чакырылат

ийгиликтүү.

.өчүрүү

USB класс үлгүсү өчүрүлгөндө чакырылат.

.line_control_changed Сызыкты башкаруунун өзгөртүүсү кабыл алынганда чакырылат.

line_coding_changed Сапты коддоо өзгөртүүсү кабыл алынганда чакырылат.

Function Signature
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 окуя, uint8_t event_chngd); bool app_usbd_cdc_acm_line_coding_changed(uint8_t subclass_nbr, subclass_nbr, sl_usbd_cdc_acm_line_coding_t
*p_line_coding

Кайта чалуу функциялары үчүн Окуя жөнүндө кабарлоонун кайра чалууларын каттоо бөлүмүн караңыз, мисалыample.
USB Device CDC ACM Class Программалоо колдонмосу

Бул бөлүмдө CDC абстракттуу башкаруу модели классын кантип колдонуу керектиги түшүндүрүлөт. USB түзмөгүн инициализациялоо CDC ACM классын USB түзмөгүңүзгө кошуу CDC ACM классын түзмөгүңүзгө кошуу CDC ACM классын колдонуу менен байланышуу
USB түзмөгүнүн CDC ACM классын баштоо

Түзмөгүңүзгө CDC ACM классынын функционалдуулугун кошуу үчүн, адегенде sl_usbd_cdc_init() nd sl_usbd_cdc_acm_init() функцияларын колдонуу менен CDC базалык классын жана ACM подклассын инициализациялашыңыз керек. T aaaaa ал мурунку мпле төмөндө c ll sl_usbd_cdc_init() жана sl_usbd_cdc_acm_init() демейки аргументтерди кантип колдонууну көрсөтөт.

Example – CDC ACM классын инициализациялоо

sl_status_t статусу;
статус = sl_usbd_cdc_init(); эгерде (статус ! SL_STATUS_OK) { /* Ката кетти. Ката иштетүү бул жерге кошулушу керек. */
}
статус = sl_usbd_cdc_acm_init(); эгерде (статус ! SL_STATUS_OK) { /* Ката кетти. Ката иштетүү бул жерге кошулушу керек. */
}
USB түзмөгүңүзгө CDC ACM класс үлгүсүн кошуу
CDC ACM класс функционалдуулугун түзмөгүңүзгө кошуу үчүн, сиз үлгү түзүп, андан соң аны түзмөгүңүздүн конфигурациясына(ларына) кошушуңуз керек.
CDC ACM класс инстанциясын түзүү

Copyright © 2025 Silicon Laboratories. Бардык укуктар корголгон.

24/174

Бүттүview
CDC ACM класстын инстанциясын Түзмөгүңүздүн конфигурациясына(-ларына) кошуу Окуя жөнүндө кабарлоону кайра чалууларды каттоо
CDC ACM класс инстанциясын түзүү
aa M aaa Cre te CDC AC cl ss инстанциясын sl_usbd_cdc_acm_create_instance() функциясын иштетүү менен. T aaa M aaa ал экс мпле төмөндө CDC AC cl ss инстанциясын vi sl_usbd_cdc_acm_create_instance() кантип түзүү керектигин көрсөтөт.
Example – sl_usbd_cdc_acm_create_instance() аркылуу CDC ACM функциясын түзүү

uint8_t subclass_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() .
T aa he ex mple төмөндө кантип c ll 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(подкласс_nbr,

(1)

config_nbr_fs);

(2)

эгерде (статус ! SL_STATUS_OK) {

/* Ката кетти. Ката иштетүү бул жерге кошулушу керек. */

}

aaa (1) sl_usbd_cdc_acm_create_instance() тарабынан кайтарылган конфигурацияга Cl ss саны dd. (2) Конфигурация номери (бул жерде аны Full-Speed ​​конфигурациясына кошуу).
Окуя жөнүндө кабарлоону кайра чалууларды каттоо
CDC ACM Serial классы эскертме кайра чалуу функциялары аркылуу линияны башкарууда же коддоодо ар кандай өзгөртүүлөр жөнүндө колдонмоңузга кабарлай алат. Кайра чалуу функцияларынын түзүмү ACM инстанциясын түзүү учурунда аргумент катары берилиши мүмкүн. Бул кайра чалуулар милдеттүү эмес экенин эске алыңыз. Мисample – CDC ACM кайра чалууларды каттоо кайра чалууларды каттоо функцияларын колдонууну көрсөтөт. Мисample – CDC ACM кайра чалууларды ишке ашыруу экс көрсөтөтampкайра чалуу функцияларын ишке ашыруу.
Example – CDC ACM кайра чалууларды каттоо

Copyright © 2025 Silicon Laboratories. Бардык укуктар корголгон.

25/174

Бүттүview

uint8_t subclass_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_calls &sli_usbd_cdc_acm_calls);
эгерде (статус ! SL_STATUS_OK) { /* Ката кетти. Ката иштетүү бул жерге кошулушу керек. */ }
Example – CDC ACM кайра чалууларды ишке ашыруу

bool app_usbd_cdc_acm_line_coding_changed (uint8_t

subclass_nbr,

sl_usbd_cdc_acm_line_coding_t *p_line_coding)

{

uint32_t baudrate_new;

uint8_t parity_new;

uint8_t stop_bits_new;

uint8_t data_bits_new;

/* TODO Жаңы сап коддоосун колдонуңуз.*/ baudrate_new = p_line_coding->BaudRate; parity_new = p_line_coding->Паритет; 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 окуя, 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 = ((окуя жана SL_USBD_CDC_ACM_CTRL_RTS) ! 0) ? чын : жалган; rts_state_changed = ((event_changed & SL_USBD_CDC_ACM_CTRL_RTS) ! 0) ? чын : жалган; dtr_state = ((окуя жана SL_USBD_CDC_ACM_CTRL_DTR) ! 0) ? чын : жалган; dtr_state_changed = ((event_changed & SL_USBD_CDC_ACM_CTRL_DTR) ! 0) ? чын : жалган; brk_state = ((окуя жана SL_USBD_CDC_ACM_CTRL_BREAK) ! 0) ? чын : жалган; brk_state_changed = ((event_changed & SL_USBD_CDC_ACM_CTRL_BREAK) ! 0) ? чын : жалган;
}

(1) Эгерде сапты коддоо колдонулбай калса, бул функцияга false кайтаруу маанилүү. Болбосо, чындыкты кайтарыңыз.
CDC ACM классын колдонуу менен байланышуу
Сериялык абалы
Line Coding Line Control

Copyright © 2025 Silicon Laboratories. Бардык укуктар корголгон.

26/174

Бүттүview

Line State Subclass Instance Communication
Сериялык абалы
Line Coding
USB хост CDC ACM түзмөгүнүн линиясын коддоону (берүү ылдамдыгы, паритет ж.б.) көзөмөлдөйт. Зарыл болгон учурда, тиркеме линиянын коддоосун орнотуу үчүн жооптуу болот. Төмөнкү таблицада сүрөттөлгөндөй, учурдагы сап коддоосун алуу жана орнотуу үчүн эки функция бар.
Таблица – CDC ACM Line Coding Functions

Функция
sl_usbd_cdc_acm_g e t_line _co d ing ()
sl_usbd_cdc_acm_s e t_line _co d ing ()

Description
Сиздин колдонмоңуз SetLineCoding сурамдары менен же sl_usbd_cdc_acm_set_line_coding() функциясы менен орнотулган учурдагы сап коддоо орнотууларын ала алат.
Сиздин колдонмоңуз сызык коддоосун орното алат. Хост орнотууларды GetLineCoding сурамы менен ала алат.

Line Control
USB хост CDC ACM түзмөгүнүн линиясын башкарууну (RTS жана DTR пиндери, үзүлүү сигналы жана башкалар) башкарат. Зарыл болгон учурда, сиздин колдонмоңуз линиялык башкаруу элементтерин колдонуу үчүн жооптуу болот. Төмөнкү таблицада сүрөттөлгөндөй, учурдагы линиянын башкаруу элементтерин алуу жана орнотуу үчүн функция берилген.
Таблица – CDC ACM Line Control Functions

Функция
sl_usb d _cd c_acm_g e t_line _co ntr o l_state ()

Сиздин колдонмоңуз SetControlLineState сурамы менен хост тарабынан коюлган учурдагы башкаруу сызыгынын абалын ала алат.

Line State
USB хосту үзгүлтүксүз аралыкта линиянын абалын чыгарып турат. Колдонмоңуз өзгөргөн сайын сызык абалын жаңыртышы керек. Зарыл болгон учурда, сиздин колдонмоңуз линия абалын орнотуу үчүн жооптуу болот. Төмөнкү таблицада сүрөттөлгөндөй, учурдагы линияны башкаруу элементтерин алуу жана орнотуу үчүн эки функция берилген.
Таблица – CDC ACM Line S tate функциялары

Функция
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 сериялык эмуляция субклассы тарабынан өзүн-өзү тазалайт.

Subclass Instance Communication

Silicon Labs' ACM субклассы хост менен байланышуу үчүн төмөнкү функцияларды сунуштайт. Functions9 параметрлери жөнүндө көбүрөөк маалымат алуу үчүн CDC ACM Subclass Functions шилтемесин караңыз.

Функциянын аты
sl_usb d _cd c_acm_ re ad () sl_usb d _cd c_acm_write ()

Операция
Хосттан маалыматтарды жапырт OUT акыркы чекити аркылуу алат. Бул функция бөгөттөөдө. Дайындарды жалпы IN акыркы чекити аркылуу хостко жөнөтөт. Бул функция бөгөттөөдө.

Copyright © 2025 Silicon Laboratories. Бардык укуктар корголгон.

27/174

Бүттүview

Таблица – CDC ACM Communication API Кыскача маалымат aaaaa sl_usbd_cdc_acm_read() жана sl_usbd_cdc_acm_write() трнссфер бөгөттөп жаткан синхрондуу байланышты камсыздайт. Башкача айтканда, функцияны чакыргандан кийин, колдонмо катасыз же катасыз өткөрүп бүтмөйүнчө блоктот. Түбөлүк күтпөш үчүн күтүү убактысы көрсөтүлүшү мүмкүн. мурдагыample төмөндө окуу жана жазуу экс көрсөтөтample, ал массалык OUT акыркы чекитинин жардамы менен хосттон маалыматтарды кабыл алат жана массалык 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(подкласс_nbr,

(1)

rx_buf,

(2)

2u,

0u,

(3)

&xfer_len);

эгерде (статус ! SL_STATUS_OK) {

/* Ката кетти. Ката иштетүү бул жерге кошулушу керек. */

}

статус = sl_usbd_cdc_acm_write(подкласс_nbr,

(1)

tx_buf,

(4)

2u,

0u,

(3)

&xfer_len);

эгерде (статус ! SL_STATUS_OK) {

/* Ката кетти. Ката иштетүү бул жерге кошулушу керек. */

}

T aaaaa M (1) ал sl_usbd_cdc_acm_create_instance() менен түзүлгөн cl ss инстанциясынын саны туура жапырт OUT же IN акыркы чекитине которууну багыттоо үчүн AC субклассына n интерн шилтемесин берет. (2) Сиздин тиркемеңиз функцияга берилген буфер бардык маалыматтарды жайгаштыруу үчүн жетиштүү болушун камсыз кылышы керек. Болбосо, синхрондоштуруу маселелери пайда болушу мүмкүн. (3) Чексиз бөгөттөө кырдаалын болтурбоо үчүн, миллисекунд менен көрсөтүлгөн күтүү убакытын көрсөтүңүз. 809 мааниси колдонмо тапшырмасын түбөлүк күтүүгө мажбурлайт. (4) Тиркеме инициализацияланган берүү буферин камсыз кылат.

Copyright © 2025 Silicon Laboratories. Бардык укуктар корголгон.

28/174

Бүттүview
Бүттүview

USB түзмөк HID классы

USB түзмөгүнүн HID классы бүттүview USB түзмөгүнүн HID классындагы ресурстун негизги USB түзмөгүндөгү муктаждыктары HID классынын конфигурациясы USB түзмөгүнүн HID классынын программалоо колдонмосу HID мезгилдүү киргизүү отчеттору тапшырмасы
Бул бөлүм Silicon Labs USB Device тарабынан колдоого алынган Human Interface Device (HID) классын сүрөттөйт.
HID классы клавиатуралар, чычкандар, көрсөтүүчү түзүлүштөр жана оюн түзмөктөрү сыяктуу компьютердик операцияларды башкаруу үчүн адамдар колдонгон түзүлүштөрдү камтыйт.
HID классын ошондой эле баскычтар, өчүргүчтөр, баскычтар жана жылдыргычтар сыяктуу башкаруу элементтерин камтыган курама түзүлүштө колдонсо болот. Мисалы үчүнampАудио гарнитурадагы le, үнүн басуу жана үн көлөмүн башкаруу гарнитуранын HID функциясы менен башкарылат. HID классы башкаруу жана үзгүлтүккө учуратуу которууларды колдонуу менен каалаган максатта маалыматтарды алмаша алат.
HID классы эң эски жана эң кеңири колдонулган USB класстарынын бири. Бардык негизги хост операциялык тутумдары HID түзмөктөрүн башкаруу үчүн жергиликтүү драйверди камсыздайт, ошондуктан сатуучуларга тиешелүү ар кандай түзмөктөр HID классы менен иштешет. Бул класс ошондой эле чыгаруу элементтеринин ар кандай түрлөрүн камтыйт, мисалы, LED, аудио, тактилдик пикир ж.б.
HID ишке ашыруу төмөнкү спецификацияларга туура келет:
Адам интерфейси түзмөктөрү үчүн түзмөк классынын аныктамасы (HID), 6/27/01, версия 1.11. Universal Serial Bus HID Usage Tables, 10/28/2004, Version 1.12.
USB түзмөгүнүн HID классы бүттүview
Бүттүview
HID аппараты төмөнкү акыркы чекиттерден турат:
Демейки акыркы чекит деп аталган IN жана OUT башкаруунун жуп акыркы чекиттери Үзгүлтүксүз IN акыркы чекити Кошумча үзүлүү OUT акыркы чекити
Төмөнкү таблица ар кандай акыркы чекиттерди колдонууну сүрөттөйт:
Таблица – HID классынын акыркы чекиттерин колдонуу

Акыркы чекит багытын колдонуу

Control IN
Control
OUT
Interrupt IN
Үзүлүү
OUT

Deviceto-host
Хост-түзмөк
Deviceto-host
Хост-түзмөк

Санактоо, класска тиешелүү суроо-талаптар жана маалымат байланышы үчүн стандарттуу сурамдар (Киргизүү, Функция отчеттору GET_REPORT сурамы менен хостко жөнөтүлөт). Санактоо үчүн стандарттуу суроо-талаптар, класска тиешелүү суроо-талаптар жана маалымат байланышы (Чыгуу, SET_REPORT сурамы менен хосттон алынган Функция отчеттору). Маалымат байланышы (Киргизүү жана Функция отчеттору).
Маалымат байланышы (Чыгуу жана Функция отчеттору).

Баяндама

Copyright © 2025 Silicon Laboratories. Бардык укуктар корголгон.

29/174

Бүттүview

Хост жана HID түзмөгү отчеттордун жардамы менен маалымат алмашат. Отчет HID аппаратынын башкаруу элементтери жана башка физикалык жактары жөнүндө маалымат берүүчү форматталган маалыматтарды камтыйт. Башкаруу колдонуучу тарабынан башкарылат жана аппараттын бир бөлүгүн башкарат. Мисалы үчүнample, башкаруучу чычкандын же клавиатуранын баскычы, которгуч, ж.б. болушу мүмкүн. Башка объекттер колдонуучуга айрым түзмөк9 функцияларынын абалы жөнүндө маалымат беришет. Мисалы үчүнample, клавиатурадагы диоддор колдонуучуга баш тамгалар күйгүзүлгөнү, сандык клавиатура активдүү ж.б.у.с.
Отчеттун маалыматтарынын форматы жана колдонулушу хост тарабынан Отчеттун дескрипторунун мазмунун талдоо аркылуу түшүнүлөт. Мазмунду анализдөө талдоочу тарабынан жүргүзүлөт. Отчеттун дескриптору аппараттагы ар бир башкаруу тарабынан берилген маалыматтарды сүрөттөйт. Ал түзмөк жөнүндө маалымат бөлүктөрүнөн турат жана 1 байт префикстен жана өзгөрмө узундуктан турат
маалыматтар. Элементтин форматы жөнүндө көбүрөөк маалымат алуу үчүн, караңыз
1.11=, бөлүм 5.6 жана 6.2.2.
буюмдардын үч негизги түрү бар:
Негизги пункт маалымат талааларынын белгилүү түрлөрүн аныктайт же топтойт.
Глобалдык пункт башкаруунун маалымат мүнөздөмөлөрүн сүрөттөйт.
Жергиликтүү пункт башкаруунун маалымат мүнөздөмөлөрүн сүрөттөйт.
Ар бир нерсенин түрү ар кандай функциялар менен аныкталат. Элементтин функциясын а деп да атоого болот tag. Элементтин функциясын үч негизги нерсе түрүнүн бирине кирген субпункт катары көрүүгө болот. Төмөнкү таблицада кыскача маалымат берилгенview ар бир пункт түрүндөгү item9s функцияларынын. Ар бир категориядагы нерселердин толук сүрөттөлүшү үчүн караңыз
Таблица – Ар бир нерсенин түрү үчүн нерсенин функциясынын сүрөттөлүшү

Элементтин түрү функциясы

Description

Негизги киргизүү

Бир же бир нече физикалык башкаруу тарабынан берилген маалыматтар жөнүндө маалыматты сүрөттөйт.

Негизги Чыгуу Аппаратка жөнөтүлгөн маалыматтарды сүрөттөйт.

Негизги өзгөчөлүк

Аппараттын же анын компоненттеринин биринин жалпы жүрүм-турумуна таасир этүүчү аппаратка жөнөтүлгөн же аппараттан алынган конфигурация маалыматын сүрөттөйт.

Негизги чогултуу тобуна тиешелүү элементтер (киргизүү, чыгаруу же өзгөчөлүк).

Негизги аягы Коллекцияны жабат. Коллекция

Copyright © 2025 Silicon Laboratories. Бардык укуктар корголгон.

30/174

Бүттүview

Элементтин түрү функциясы

Description

Глобалдык колдонуу барагы

Аппараттын ичинде жеткиликтүү функцияны аныктайт.

Global Logical Логикалык бирдиктерде билдирилген маанилердин төмөнкү чегин аныктайт. Минималдуу

Global Logical Логикалык бирдиктерде билдирилген маанилердин жогорку чегин аныктайт. Максималдуу

Global Physical Физикалык бирдиктерде билдирилген маанилердин төмөнкү чегин аныктайт, башкача айтканда, физикалык бирдиктерде көрсөтүлгөн Логикалык Минималдуу Минималдуу.

Global Physical Физикалык бирдиктерде билдирилген маанилердин жогорку чегин аныктайт, башкача айтканда, физикалык бирдиктерде туюнтулган Логикалык Максималдуу Максимум.

Глобалдык бирдиги

10-базадагы бирдик көрсөткүчтү көрсөтөт. Көрсөткүч -8ден +7ге чейин.

Көрсөткүч

Глобалдык бирдиги

Билдирилген маанилердин бирдигин көрсөтөт. Мисалы, узундук, масса, температура бирдиктери ж.

Глобалдык отчеттун өлчөмү

Отчёт талааларынын көлөмүн бит менен көрсөтөт.

Global Report ID Белгилүү бир отчетко кошулган префиксти көрсөтөт.

Глобалдык отчеттун саны

Элемент үчүн маалымат талааларынын санын көрсөтөт.

Global Push

Процессордун стекине глобалдык элементтин абалы таблицасынын көчүрмөсүн жайгаштырат.

Global Pop

Элементтин абалы таблицасын стектеги акыркы структурага алмаштырат.

Жергиликтүү колдонуу

Колдонуу бетиндеги белгилүү бир Колдонууну белгилөө үчүн индексти билдирет. Бул сатуучуга белгилүү бир башкаруу же башкаруу тобу үчүн колдонууну сунуш кылат. Колдонуу колдонмону иштеп чыгуучуга башкаруу чындыгында эмнени өлчөп жаткандыгы жөнүндө маалымат берет.

Жергиликтүү колдонуу

Массив же битмап менен байланышкан баштапкы колдонууну аныктайт.

Минималдуу

Жергиликтүү колдонуу

Массив же битмап менен байланышкан акыркы колдонууну аныктайт.

Максималдуу

Жергиликтүү белгилөөчү башкаруу үчүн колдонулган дене бөлүгүн аныктайт. Индекс Физикалык көрсөткүчтөгү белгини көрсөтөт

Индекс

дескриптор.

Жергиликтүү белгилөөчү Массив же битмап менен байланышкан баштапкы белгилөөчүнүн индексин аныктайт. Минималдуу

Жергиликтүү белгилөөчү Массив же битмап менен байланышкан аяктоочу белгинин индексин аныктайт. Максималдуу

Жергиликтүү сап индекси

String дескриптору үчүн сап индекси. Ал сапты белгилүү бир нерсе же башкаруу менен байланыштырууга мүмкүндүк берет.

Local String

Массивдеги башкаруу элементтерине ырааттуу саптардын тобун дайындоодо биринчи сап индексин көрсөтөт

Минималдуу же битмап.

Жергиликтүү Жергиликтүү

String Maximum
Бөлгүч

Массивдеги же битмаптагы башкаруу элементтерине ырааттуу саптардын тобун дайындоодо акыркы сап индексин көрсөтөт.
Жергиликтүү элементтердин топтомунун башталышын же аягын аныктайт.

Control9s маалыматтары жок дегенде төмөнкү элементтерди аныкташы керек:
Киргизүү, чыгаруу же өзгөчөлүк Негизги пункттар Колдонуу Жергиликтүү нерсе Колдонуу барагы Глобалдык нерсе Логикалык Минималдуу Глобалдык нерсе Логикалык Максимум Глобалдык нерсе Отчеттун көлөмү Глобалдык нерсе

Copyright © 2025 Silicon Laboratories. Бардык укуктар корголгон.

31/174

Бүттүview
Report Count Global пункту Төмөнкү таблица хост HID талдоочу көз карашынан Чычкан отчетунун дескрипторунун мазмунун көрсөтөт. Чычкандын үч баскычы бар (сол, оң жана дөңгөлөк). Код экс-де көрсөтүлгөнampТөмөндө бул чычкан Отчеттун дескрипторуна туура келген коддун ишке ашырылышы.
Сүрөт – Хост HID талдоочусунун Дескриптордун мазмуну жөнүндө отчет View

(1) Usage Page пунктунун функциясы аппараттын жалпы функциясын аныктайт. Бул эксampле, HID аппараты а таандык
жалпы иш тактасын башкаруу.
(2) Коллекциялык Колдонмо топтору Жалпы максаты бар жана тиркемелерге тааныш болушу мүмкүн болгон негизги пункттар. Диаграммада топ үч Киргизүү Негизги пункттан турат. Бул коллекция үчүн, башкаруу элементтери үчүн сунушталган колдонуу "Usage" пунктунда көрсөтүлгөн чычкан болуп саналат. (3) Бирдиктүү башкарууну же башкаруу элементтер тобун колдонмолорго колдонуу жөнүндө көбүрөөк маалымат берүү үчүн ички жыйнактар ​​колдонулушу мүмкүн. Бул эксample, Коллекция Колдонмого уя салынган Физикалык Коллекция Коллекция Тиркемесин түзгөн ошол эле үч Киргизүү пунктунан турат. Collection Physical бир геометриялык чекитте чогултулган маалымат чекиттерин билдирген маалымат элементтеринин жыйындысы үчүн колдонулат. мурдагыample, сунушталган колдонуу Колдонуу пунктунда көрсөтүлгөн көрсөткүч. Бул жерде көрсөткүчтүн колдонулушу чычкандын позициясынын координаттарын билдирет жана системалык программа чычкандын координаттарын экран курсорунун кыймылында которуп берет. (4) Уюшкан колдонуу баракчалары да мүмкүн жана аппараттын жалпы функциясынын белгилүү бир аспектиси жөнүндө көбүрөөк маалымат берет. Бул учурда, эки Киргизүү пункттары топтоштурулган жана чычкандын баскычтарына туура келет. Бир Киргизүү пункту чычкандын үч баскычын (оң, сол жана дөңгөлөк) пункт үчүн маалымат талааларынын саны (Отчеттун саны пункту), маалымат талаасынын өлчөмү (Report Size пункту) жана ар бир маалымат талаасы үчүн мүмкүн болгон маанилер (Колдонуу Минимуми жана Максимум, Логикалык Минимум жана Максимум элементтери) боюнча аныктайт. Башка Киргизүү пункту 13 биттик константа болуп саналат, ал Киргизүү отчетунун маалыматтарын байт чегинде тегиздөөгө мүмкүндүк берет. Бул Киргизүү элементи толтуруу максатында гана колдонулат. (5) Чычкан позициясынын координаттары үчүн жалпы иш тактасын башкарууга шилтеме жасаган дагы бир уяча колдонуу барагы аныкталган. Бул колдонуу барагы үчүн Киргизүү пункту эки Колдонуу тарабынан көрсөтүлгөн x жана y огуна туура келген маалымат талааларын сүрөттөйт.
буюмдар.
Мурунку чычкан Отчетунун дескрипторунун мазмунун талдоодон кийин, host9s HID талдоочу аппарат тарабынан үзгүлтүккө учуратуу IN өткөрүп берүү менен же GET_REPORT сурамына жооп катары жөнөтүлгөн Киргизүү отчетунун маалыматтарын чечмелей алат. Сүрөттө көрсөтүлгөн чычкан Отчеттун дескрипторуна туура келген Киргизүү отчетунун маалыматтары – Хост HID талдоочусунун баяндама дескрипторунун мазмуну View is

Copyright © 2025 Silicon Laboratories. Бардык укуктар корголгон.

32/174

Бүттүview

төмөнкү таблицада көрсөтүлгөн. Отчеттун маалыматтарынын жалпы көлөмү 4 байт. Отчеттордун ар кандай түрлөрү бир эле акыркы чекит аркылуу жөнөтүлүшү мүмкүн. Отчеттордун ар кандай түрлөрүн айырмалоо максатында, маалымат отчетуна 1 байттык отчет ID префикси кошулат. Эгерде отчеттун идентификатору эксampчычкан отчетунун le, отчет маалыматтарынын жалпы көлөмү 5 байт болмок.
Таблица – Хостка жөнөтүлгөн жана 3 баскычтуу чычкандын абалына туура келген киргизүү отчету

Bit Offset
0 1 2 3 16 24

Бит саны 1 1 1 13 8 8

Сүрөттөмө 1 баскычы (сол баскыч). 2 баскычы (оң баскыч). 3 баскычы (дөңгөлөк баскычы). Колдонулган эмес. X огундагы абал. Y огундагы позиция.

Физикалык дескриптор башкарууну же башкаруу элементтерин иштетүү үчүн арналган дененин бөлүгүн же бөлүктөрүн көрсөтөт. Колдонмо бул маалыматты аппаратты башкарууга функцияларды дайындоо үчүн колдонушу мүмкүн. Физикалык дескриптор класска тиешелүү факультативдик дескриптор болуп саналат жана көпчүлүк түзмөктөрдө аны колдонуудан пайда аз. кайрылыңыз
USB Device HID классынын ресурстук муктаждыктары Core

sl_usbd_hid_add_to_configuration() функциясына чакыруу аркылуу USB конфигурациясына HID класс үлгүсүн кошкон сайын, төмөнкү ресурстар өзөктөн бөлүнөт.

Ресурс
Интерфейстер Альтернативдүү интерфейстер Акыркы чекиттер Интерфейс топтору

Саны
1 1 1 (2, эгерде үзгүлтүксүз OUT акыркы чекити иштетилген болсо) 0

Бул сандар ар бир конфигурацияда экенин эске алыңыз. SL_USBD_INTERFACE_QUANTITY , SL_USBD_ALT_INTERFACE_QUANTITY , SL_USBD_INTERFACE_GROUP_QUANTITY жана SL_USBD_DESCRIPTOR_QUANTITY конфигурация маанилерин орнотуп жатканда, класс канча конфигурация кошуларын эске алууну унутпаңыз. SL_USBD_OPEN_ENDPOINTS_QUANTITY конфигурация мааниси үчүн, акыркы чекиттер конфигурация хост тарабынан коюлганда гана ачылгандыктан, класстын үлгүсү үчүн керектүү акыркы чекиттердин санын эске алышыңыз керек.
USB түзмөгүнүн HID классынын конфигурациясы

HID классын конфигурациялоо үчүн конфигурация параметрлеринин эки тобу колдонулат:
USB түзмөгүнүн HID классынын Колдонмого спецификалык конфигурациялары USB түзмөгүнүн HID класс үлгүсүнүн конфигурациялары
USB түзмөгүнүн HID классынын Колдонмого атайын конфигурациялары

Биринчиден, Silicon Labs USB түзмөгүнүн HID класс модулун колдонуу үчүн, HID компиляция убактысынын конфигурациясын колдонмоңуздун муктаждыктарына жараша тууралаңыз. Алар sl_usbd_core_config.h башынын ичинде кайра топтолгон file HID бөлүмүндө. Аларды эки бөлүккө бөлүүгө болот, сандык конфигурациялар жана HID тапшырма конфигурациялары. Сандык конфигурациялардын максаты USB түзмөгүнүн модулуна канча USB HID объектисин бөлүштүрүү керектиги жөнүндө маалымат берүү.
Төмөнкү таблица ар бир конфигурацияны сүрөттөйт.
Таблица – USB Device HID конфигурациясын аныктайт

Copyright © 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

Description
Функцияга чакыруу аркылуу сиз бөлгөн класс инстанцияларынын саны
sl_usbd_hid_create_instance() .
Конфигурациялардын саны. HID классынын инстанцияларын sl_usbd_hid_add_to_configuration() функциясына бир же бир нече aaaa конфигурацияларына кошууга болот. Бөлүнүш үчүн отчет ID'леринин жалпы санын конфигурациялайт.
Бөлүшүү үчүн Push/Pop элементтеринин жалпы санын конфигурациялайт.
Таймер тапшырмасы таймерге негизделген бардык HID операцияларын аткарат. Бул конфигурация стектин өлчөмүн (байттардын саны менен) коюуга мүмкүндүк берет. HID тапшырмасынын артыкчылыгы. анын CMSIS-RTOS2 приоритети болуп саналат.

Демейки маани
2 1 2 0 2048
osPriorityHigh

USB Device HID Класс Инстанциясы Конфигурациялары Класс Инстанциясын түзүү субклассы
протокол өлкөнүн_коду
interval_in жана interval_out p_hid_callback HID класс отчетунун дескриптору Мисample Бул бөлүм HID класс инстанцияларына тиешелүү конфигурацияларды аныктайт.
Класс үлгүсүн түзүү
HID классынын инстанциясын түзүү aaa sl_usbd_hid_create_instance() функциясын чакыруу менен аткарылат, ал төмөндө сүрөттөлгөн конфигурация аргументтерин ажыратат.
подкласс
HID субклассынын коду. Мүмкүн болгон баалуулуктар:
SL_USBD_HID_SUBCL ASS_NONE SL_USBD_HID_SUBCL ASS_BOOT
Жүктөө субклассын колдонгон HID аппараты стандарттык отчет форматтарын колдонушу керек. Субкласстын коддору боюнча көбүрөөк маалымат алуу үчүн HID спецификациясынын 1.11 ревизиясынын 4.2 бөлүмүн караңыз.
протокол
HID түзмөгү колдонгон протокол. Мүмкүн болгон баалуулуктар:
SL_USBD_HID_PROTOCOL_NONE SL_USBD_HID_PROTOCOL_KBD SL_USBD_HID_PROTOCOL_MOUSE
Эгер HID функцияңыз чычкан болсо, протокол aa SL_USBD_HID_PROTOCOL_MOUSE деп коюлушу керек. Эгерде ал клавиатура болсо, аны SL_USBD_HID_PROTOCOL_KBD деп коюу керек. антпесе, протокол SL_USBD_HID_PROTOCOL_NONE деп коюлушу керек. Субкласстын коддору жөнүндө көбүрөөк маалымат алуу үчүн HID спецификациясынын 1.11 ревизиясынын 4.3 бөлүмүн караңыз.
өлкөнүн_коду
өлкөнүн кодунун ID. Мүмкүн болгон баалуулуктар:
SL_USBD_HID_COUNTRY_CODE_КОЛДОНУЛБАЙТ

Copyright © 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_CHCODE_PUZBLC 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_GREEKHID_SL_HERYCOUNTRY_USBDW 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_SL_CODE_COUNTRY_COUNTRY_CODE_CODE_USBD ATIN_AMERICAN SL_USBD_HID_COUNTRY_CODE_NETHERL ANDS_DUTCH SL_USBD_HID_COUNTRY_CODE_NORWEGIAN SL_USBD_HID_COUNTRY_CODE_PERSIAN_FARSI SL_USBD_HID_COUNTRY_CODE_POL_HID_COUNTRY_CODE_POLBD_HID_COUNTRY_HID_CODE 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_COUNTRY_COUNTRYCODE_USBD_HID_COUNTRY_COUNTRYCODE SL_USBD_HID_COUNTRY_CODE_YUG OSL AVIA SL_USBD_HID_COUNTRY_CODE_TURKISH_F
Өлкө коду аппараттык камсыздоо кайсы өлкө үчүн локализацияланганын аныктайт. Көпчүлүк жабдыктар локализацияланган эмес, андыктан бул aaaav lue SL_USBD_HID_COUNTRY_CODE_NOT_SUPPORTED (0) болот. Бирок, клавиатура мен баскычтардын тилин көрсөтүү үчүн талааны колдоном.
Өлкө коддору боюнча көбүрөөк маалымат алуу үчүн HID спецификациясынын 1.11 ревизиясынын 6.2.1 бөлүмүн караңыз.
аралык_кирүү жана аралык_чыгуу
interval_in жана interval_out IN үзгүлтүктүн акыркы чекитинин жана OUT үзгүлтүктүн акыркы чекитинин сурамжылоонун интервалын билдирет.
Бул акыркы чекиттин интервалын миллисекунд менен көрсөтөт. Бул маанини коюу сиздин түзмөгүңүздүн хост үчүн жаңы отчетту канчалык көп түзөөрүнө жараша болот. Мисалы, ар бир 16 миллисекундда отчет түзүлсө, интервал 16 же андан аз болушу керек.
Маани 2дин күчү болушу керек (1, 2, 4, 8, 16, ж.б.).
ctrl_rd_en чын деп коюлса, interval_out v lue этибарга алынбайт.
p_hid_callback
aaaa p_hid_callback sl_usbd_hid_callbacks_t түрүндөгү структурага көрсөткүч. Анын максаты HID окуясы пайда болгондо чакыра турган кайра чалуу функцияларынын HID Cl ss топтомун берүү.

Copyright © 2025 Silicon Laboratories. Бардык укуктар корголгон.

35/174

Бүттүview

Бардык эле кайра чалуулар милдеттүү эмес жана нөл көрсөткүчтү ( NULL ) кайра чалуу зарыл болбогон учурда кайра чалуу структурасынын өзгөрмөсүнө өткөрүп берүүгө болот. Төмөнкү таблица бул конфигурация структурасында жеткиликтүү болгон ар бир конфигурация талаасын сүрөттөйт.
Таблица – sl_usbd_hid_callbacks_t Конфигурация түзүмү

Талаалар

Description

Function Signature

.иштетүү .disable .get_report_desc
.get_phy_desc
.set_output_report .get_feature_report .set_feature_report

USB класс үлгүсү ийгиликтүү иштетилгенде чакырылат. USB класс үлгүсү өчүрүлгөндө чакырылат.
Отчетуңуздун дескрипторун өткөрүү үчүн HID инстанциясын түзүү учурунда чакырылган. HID функцияларыңыздын ар бири үчүн сиз отчеттун дескрипторун беришиңиз керек. Отчеттун дескриптору хостко аппарат тарабынан жөнөтүлө турган мезгилдүү отчет кандайча талданышы керектигин көрсөтөт. Өзүңүздүн отчетуңуздун дескрипторун жазуу кыйын болушу мүмкүн, ошондуктан жардам бере турган кээ бир ресурстар бар. Бул жалгыз милдеттүү кайра чалуу функциясы. Физикалык дескрипторуңузду өткөрүү үчүн HID инстанциясын түзүү учурунда чакырылган. Физикалык дескриптор - бул башкарууну же башкарууну активдештирип жаткан адам денесинин белгилүү бир бөлүгү же бөлүктөрү жөнүндө маалымат берүүчү дескриптор. Физикалык дескрипторлор боюнча көбүрөөк маалымат алуу үчүн HID спецификациясынын 1.11 ревизиясынын 6.2.3 бөлүмүн караңыз. Физикалык дескриптор милдеттүү эмес жана көпчүлүк учурда көңүл бурулбайт. Бул жерде өткөрүлүүчү буферди NULL жана узундугу 0 деп коюуга болот. Хост баяндамаңыздын дескрипторунда сүрөттөлгөндөй отчетту орноткондо (ал отчет жөнөткөндө) чакырылат.
Хост баяндамаңыздын дескрипторунда сүрөттөлгөн функциялык отчетту талап кылганда чакырылат.
Хост баяндамаңыздын дескрипторунда сүрөттөлгөн функциялык отчетту орноткондо чакырылат.

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

.get_protocol

Учурдагы активдүү протоколду чыгарат.

void app_usbd_hid_get_protocol(uint8_t class_nbr, uint8_t *p_protocol);

.set_protocol

Учурдагы активдүү протоколду орнотот.

void app_usbd_hid_set_protocol(uint8_t class_nbr, uint8_t protocol);

HID класс отчетунун дескриптору Example

Silicon Labs' HID классы sample өтүнмө эксти камсыз кылатampжөнөкөй чычкан үчүн отчеттун дескриптору. мурдагыample төмөндө чычкан отчетунун дескрипторун көрсөтөт.
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)

Copyright © 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_ENDCOLLECTION

(11)};

(1) Чычкан отчетунун дескрипторун көрсөткөн таблица ар бир сап кыска пунктка туура келгидей кылып инициализацияланган. Акыркысы 1 байттык префикстен жана 1 байттык маалыматтардан түзүлөт. кайрылыңыз viewСүрөттө хост HID талдоочу тарабынан жасалган – Хост HID талдоочусунун Дескриптордун мазмуну жөнүндө отчет View.
(2) Жалпы иш тактасын колдонуу барагы колдонулат.
(3) Жалпы иш тактасын колдонуу бетинде, колдонуу tag башкаруу элементтеринин тобу чычканды башкаруу үчүн экенин сунуштайт. Чычкан коллекциясы адатта эки огунан (X жана Y) жана бир, эки же үч баскычтан турат.
(4) Чычкан чогултуу башталды.
(5) Чычкан коллекциясынын ичинде колдонуу tag чычкандын башкаруу элементтери көрсөткүчтөр коллекциясына таандык экенин конкреттүү сунуштайт. Көрсөткүчтөрдүн коллекциясы – бул колдонмого колдонуучунун ниетин багыттоо, көрсөтүү же көрсөтүү үчүн маанини жаратуучу октордун жыйындысы.
(6) Көрсөткүчтөрдү чогултуу башталды.
(7) Баскычтарды колдонуу барагы үч 1 биттик талаадан турган Киргизүү элементин аныктайт. Ар бир 1 биттик талаа чычкандын 1, 2 жана 3 баскычтарын билдирет жана 0 же 1 маанисин кайтара алат.
(8) Баскычтарды колдонуу барагы үчүн киргизүү пункту 13 башка бит менен толтурулган.
(9) X жана Y октору менен чычкандын абалын сүрөттөө үчүн башка Жалпы иш тактасын колдонуу барагы көрсөтүлгөн. Киргизүү пункту мааниси -127 жана 127 ортосунда болушу мүмкүн болгон эки 8 биттик талаадан турат.
(10) Көрсөткүчтөр жыйнагы жабык.
(11) Чычкан жыйнагы жабык.
USB.org HID баракчасы

Copyright © 2025 Silicon Laboratories. Бардык укуктар корголгон.

37/174

Бүттүview
USB Implementers Forum (USB-IF) отчеттун дескриптор форматы боюнча башка маалымат менен бирге "HID Дескриптордун куралы" деп аталган куралды берет. Көбүрөөк маалымат үчүн http://www.usb.org/developers/hidpage/ караңыз.
USB Device HID классын программалоо колдонмосу
Бул бөлүмдө HID классын кантип колдонуу керектиги түшүндүрүлөт. USB түзмөгүнүн HID классын инициализациялоо USB түзмөгүңүзгө HID класс үлгүсүн кошуу USB түзмөгүңүздүн HID классын колдонуу менен байланышуу
USB түзмөгүнүн HID классын баштоо
Түзмөгүңүзгө HID Class функциясын кошуу үчүн, адегенде sl_usbd_hid_init() функциясын чакырып, классты инициализациялашыңыз керек. мурдагыample төмөндө демейки аргументтерди колдонуу менен sl_usbd_hid_init() кантип чалуу керектигин көрсөтөт. sl_usbd_hid_init() га өтүү үчүн конфигурация аргументтери жөнүндө көбүрөөк маалымат алуу үчүн, USB Device HID классынын Колдонмонун конкреттүү конфигурацияларын караңыз.
Example – Чакыруу sl_usbd_hid_init()
sl_status_t статусу;
статус = sl_usbd_hid_init(); эгерде (статус ! SL_STATUS_OK) { /* Ката кетти. Ката иштетүү бул жерге кошулушу керек. */
}
Түзмөгүңүзгө USB Device HID класс үлгүсүн кошуу
Түзмөгүңүзгө HID классынын функциясын кошуу үчүн, инстанция түзүп, андан соң аны түзмөгүңүздүн конфигурациясына(ларына) кошушуңуз керек.
HID класс үлгүсүн түзүү
sl_usbd_hid_create_instance() функциясын чакыруу менен HID класстын үлгүсүн түзүңүз. мурдагыample төмөндө демейки аргументтерди колдонуу менен sl_usbd_hid_create_instance() аркылуу жөнөкөй чычкан функциясын кантип түзүүнү көрсөтөт. sl_usbd_hid_create_instance() га өтүү үчүн конфигурация аргументтери жөнүндө көбүрөөк маалымат алуу үчүн, USB Device HID Class Instance Configurations караңыз.
Example – sl_usbd_hid_create_instance() аркылуу чычкан функциясын кошуу

Copyright © 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_HIDCOLLECTION1, + SL_USBD_HID_COLLECTION_APPLICATION, SL_USBD_HID_LOCAL_USAGE + 1, SL_USBD_HID_CP_POINTER, SL_USBD_HID_MAIN_COLLECTION + 1, SL_USBD_HID_COLLECTION_PHYSICALH_AGE_USAGE, + SL_USBD_HID_COLLECTION_PHYSICALH_AGE_USG1, 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_0MIN + 0, SL_USBD_HID_GLOBAL_LOG_MAX + 1, 0 01, SL_USBD_HID_GLOBAL_REPORT_COUNT + 1, 0 03, SL_USBD_HID_GLOBAL_REPORT_SIZE + 1, 0 01, SL_USBD_PUT_MA1, SL_USBD_HID_MAIN_DATA | SL_USBD_HID_MAIN_VARIABLE | SL_USBD_HID_MAIN_ABSOLUTE, SL_USBD_HID_GLOBAL_REPORT_COUNT + 1, 0 01, SL_USBD_HID_GLOBAL_REPORT_SIZE + 1, 0 0D, SL_USBD_HID_MAIN_INPUT + 1, SL_USBD_HID_MAIN_INPUT + 1, SL_USBD_HID_GLOBAL_REPORT_MA, SL_USBD_HID_GLOBAL_USAGE_PAGE + 1, SL_USBD_HID_USAGE_PAGE_GENERIC_DESKTOP_CONTROLS, SL_USBD_HID_LOCAL_USAGE + 1, SL_USBD_HID_DV_X, SL_USBD_HID_DVALID_HID_LOCALID_1, SL_USBD_HID_GLOBAL_LOG_MIN + 1, 0 81, SL_USBD_HID_GLOBAL_LOG_MAX + 1, 0 7F, SL_USBD_HID_GLOBAL_REPORT_SIZE + 1, 0 08, SL_USBD_HIDREPORT10, + SL_USBD_HID_MAIN_INPUT + 1, SL_USBD_HID_MAIN_DATA | SL_USBD_HID_MAIN_VARIABLE | SL_USBD_HID_MAIN_RELATIVE, SL_USBD_HID_MAIN_ENDCOLLECTION, SL_USBD_HID_MAIN_ENDCOLLECTION };
/* Жергиликтүү өзгөрмөлөр.*/ uint8_t class_nbr; sl_status_t статусу;
sl_usbd_hid_callbacks_t app_usbd_hid_callbacks = { NULL, NULL, app_usbd_hid_get_report_desc, NULL, NULL, NULL, NULL, NULL, NULL };
void app_usbd_hid_get_report_desc(uint8_t class_nbr, const uint8_t **p_report_ptr, uint16_t *p_report_len)
{ (void)class_nbr;
*p_report_ptr = app_usbd_hid_mouse_report_desc; *p_report_len = sizeof(app_usbd_hid_mouse_report_desc); }
статус = sl_usbd_hid_create_instance(SL_USBD_HID_SUBCLASS_BOOT, SL_USBD_HID_PROTOCOL_MOUSE, SL_USBD_HID_COUNTRY_CODE_NOT_SUPPORTED, Ex_USBD_HID_Mouse_ReportDesc, sizeof(ID_USBDesc,BD_HID2), 2u, true, &app_usbd_hid_callbacks, &class_nbr);
Copyright © 2025 Silicon Laboratories. Бардык укуктар корголгон.

39/174

Бүттүview
/* Ката кетти. Ката иштетүү бул жерге кошулушу керек. */}
HID класс инстанциясын түзмөгүңүздүн конфигурациясына(ларына) кошуу HID класс үлгүсүн түзгөндөн кийин, функцияны чакырып, аны конфигурацияга кошо аласыз.
sl_usbd_hid_add_to_configuration() .
мурдагыample төмөндө 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) Конфигурация номери (бул жерде аны Full-Speed ​​конфигурациясына кошуу).
USB түзмөк HID классын колдонуу менен байланышуу
Class Instance Communication Синхрондуу Байланыш Класс Instance Communication HID классы хост менен байланышуу үчүн төмөнкү функцияларды сунуштайт.
Таблица – HID Communication API Жыйынтык

Функциянын аты
sl_usb d _hid _ re ad _sy nc() sl_usb d _hid _write _sy nc()

Операция Үзгүлтүк OUT акыркы чекити аркылуу хосттон маалыматтарды кабыл алат. Бул функция бөгөттөөдө. Interrupt IN акыркы чекити аркылуу хостко маалыматтарды жөнөтөт. Бул функция бөгөттөөдө.

Синхрондук байланыш Синхрондуу байланыш которуу бөгөттөлүп жатканын билдирет. Функцияны чакыргандан кийин, тиркемелер ката менен же катасыз которуу аяктаганга чейин блоктошот. Түбөлүк күтпөш үчүн күтүү убактысы көрсөтүлүшү мүмкүн. мурдагыample төмөндө interrupt OUT акыркы чекитинин жардамы менен хосттон маалыматтарды кабыл алган окуу жана жазууну көрсөтөт жана interrupt 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(класс_nbr,

(1)

(жараксыз *)rx_buf,

(2)

2u,

0u,

(3)

&xfer_len);

эгерде (статус ! SL_STATUS_OK) {

/* Ката кетти. Ката иштетүү бул жерге кошулушу керек. */

}

Copyright © 2025 Silicon Laboratories. Бардык укуктар корголгон.

40/174

Бүттүview
status =sl_usbd_hid_read_sync(class_nbr,(1)(void *)rx_buf,(2)2u,0u,(3)&xfer_len);if(status ! SL_STATUS_OK){/* Ката кетти. Ката иштетүү бул жерге кошулушу керек. */}
status =sl_usbd_hid_write_sync(class_nbr,(1)(void *)tx_buf,(4)2u,0u,(3)&xfer_len);if(status ! SL_STATUS_OK){/* Ката кетти. Ката иштетүү бул жерге кошулушу керек. */}
(1) sl_usbd_hid_create_instance() файлынан түзүлгөн класс инстанциясынын номери HID классы үчүн өткөрүүнү туура үзгүлтүккө учуратуу OUT же IN акыркы чекитине багыттоо үчүн ички маалымдаманы камсыз кылат.
(2) Колдонмо функцияга берилген буфер бардык маалыматтарды жайгаштыруу үчүн жетиштүү болушун камсыз кылууга тийиш. Болбосо, синхрондоштуруу маселелери пайда болушу мүмкүн. Ички окуу операциясы sl_usbd_hid_create_instance() чалуу учурунда коюлган башкаруунун окуу желегине жараша башкаруунун акыркы чекити менен же үзгүлтүктүн акыркы чекити менен аткарылат.
(3) Чексиз бөгөттөө кырдаалын болтурбоо үчүн, миллисекунд менен туюнтулган күтүү убактысы көрсөтүлүшү мүмкүн. 809 мааниси колдонмо тапшырмасын түбөлүк күтүүгө мажбурлайт.
(4) Тиркеме инициализацияланган берүү буферин камсыз кылат.
HID Мезгил-мезгили менен киргизүү отчеттору тапшырмасы
Өткөрүү жөндөмдүүлүгүн үнөмдөө үчүн хостто отчеттордун жыштыгын чектөө менен үзгүлтүктүн акыркы чекитинен отчеттордун үнүн басуу мүмкүнчүлүгү бар. Бул үчүн, хост SET_IDLE өтүнүчүн жөнөтүшү керек. Silicon Labs тарабынан ишке ашырылган HID классы бир же бир нече киргизүү отчетторуна колдоно ала турган отчеттуулук жыштыгын чектөөнү урматтаган ички тапшырманы камтыйт. Фигура Мезгил-мезгили менен Киргизүү Отчеттору Тапшырма мезгилдүү киргизүү отчетторунун тапшырмаларынын иштешин көрсөтөт.
Сүрөт – Мезгил-мезгили менен киргизүү отчеттору тапшырма

(1) Түзмөк SET_IDLE өтүнүчүн алат. Бул сурам берилген отчёттун идентификатору үчүн бош туруу мөөнөтүн көрсөтөт. SET_IDLE сурамы жөнүндө көбүрөөк маалымат алуу үчүн, караңыз
(2) Отчеттун ID түзүмү (HID классын инициализациялоо фазасында бөлүнгөн) бош жүрүү узактыгы менен жаңыланат. Бош туруу узактыгын эсептегичи бош жүрүү узактыгы мааниси менен инициализацияланат. Отчеттун ID түзүмү кирүүчү отчеттордун ID структураларын камтыган шилтемеленген тизменин аягында киргизилет. Бош иштөөнүн узактыгы 4 мс бирдигинде көрсөтүлөт, ал 4 ден 1020 мс диапазонун берет.

Copyright © 2025 Silicon Laboratories. Бардык укуктар корголгон.

41/174

Бүттүview
Эгерде бош туруу узактыгы үзгүлтүк IN акыркы чекитинин добуш берүү интервалынан азыраак болсо, отчеттор добуш берүү интервалында түзүлөт.
(3) Ар бир 4 мс, мезгилдүү киргизүү отчет тапшырмасы киргизүү отчеттордун ID тизмесин карап чыгат. Ар бир киргизилген отчет ID үчүн тапшырма эки мүмкүн болгон операциянын бирин аткарат. Тапшырма мезгилинин узактыгы бош жүрүү үчүн колдонулган 4 мс бирдигине дал келет. Хост тарабынан эч кандай SET_IDLE сурамдары жөнөтүлбөсө, киргизүү отчетторунун ID тизмеси бош жана тапшырманын иштете турган эч нерсеси жок. Тапшырма 0дөн айырмаланган жана бош убактысы 0дөн ашкан отчет ID'лерин гана иштетет.
(4) Берилген киргизүү отчетунун идентификатору үчүн тапшырма бош убакыттын өткөнүн текшерет. Эгерде бош туруу мөөнөтү бүтө элек болсо, эсептегич азаят жана хостко эч кандай киргизүү отчету жөнөтүлбөйт.
(5) Эгерде бош туруу узактыгы өтүп кетсе (башкача айтканда, бош жүрүү убактысынын эсептегичи нөлгө жетсе), sl_usbd_hid_write_sync() функциясына үзгүлтүк IN акыркы чекити аркылуу чакыруу аркылуу киргизүү отчету хостко жөнөтүлөт.
(6) Тапшырма тарабынан жөнөтүлгөн киргизүү отчетунун маалыматтары Отчеттун дескрипторунда сүрөттөлгөн ар бир киргизүү отчету үчүн бөлүнгөн ички берилиштер буферинен келет. Колдонмо тапшырмасы киргизүү отчетун жөнөтүү үчүн sl_usbd_hid_write_sync() функциясын чакыра алат. Киргизилген отчеттун берилиштерин жөнөткөндөн кийин, sl_usbd_hid_write_sync() жаңы эле жөнөтүлгөн маалыматтар менен кириш отчетунун идентификаторуна байланышкан ички буферди жаңылайт. Андан кийин, мезгил-мезгили менен киргизүү отчеттору тапшырмасы ар бир бош туруу мөөнөтү өткөндөн кийин жана колдонмо тапшырмасы ички буфердеги маалыматтарды жаңыртмайынча, ошол эле киргизүү отчетунун берилиштерин жөнөтөт. Мезгил-мезгили менен киргизүү отчетунун тапшырмасы аркылуу өткөрүп берүүнүн так убагында болуп жаткан өзгөртүүлөр киргизилген учурда, кириш отчетунун ID маалыматтарынын бузулушун болтурбоо үчүн кээ бир кулпулоо механизми бар.

Copyright © 2025 Silicon Laboratories. Бардык укуктар корголгон.

42/174

Бүттүview
Бүттүview
USB түзмөк MSC классы
USB түзмөк MSC классы бүттүview USB түзмөгүнүн MSC классындагы ресурстун негизги USB түзмөгүнөн керектөөлөрү MSC классынын конфигурациясы USB түзмөгү MSC классынын программалоо колдонмосу USB түзмөгүнүн MSC классынын сактагыч драйверлери
Бул бөлүм Silicon Labs USB Device тарабынан колдоого алынган массалык сактоо түзүлүшүнүн классын (MSC) сүрөттөйт. MSC - бул USB түзмөгү менен хост ортосунда маалыматты өткөрүүгө мүмкүндүк берүүчү протокол. Өткөрүлүп жаткан маалымат бул аткарылуучу программалар, баштапкы код, документтер, сүрөттөр, конфигурация маалыматтары же башка тексттик же сандык маалыматтар сыяктуу электрондук түрдө сактала турган бардык нерселер. USB түзмөгү хостко тышкы сактагыч катары пайда болуп, которууну камсыз кылат fileсүйрөп түшүрүү аркылуу.
A file системасы кантип аныктайт fileлар сактагычтарда уюштурулган. USB массалык сактагыч класс спецификациясы эч кандай өзгөчө талап кылбайт file шайкеш түзмөктөрдө колдонула турган система. Анын ордуна, ал Small Computer System Interface (SCSI) тунук буйрук топтомун колдонуу менен маалыматтардын секторлорун окуу жана жазуу үчүн жөнөкөй интерфейсти камсыз кылат. Ошентип, операциялык системалар USB дискке катуу диск сыяктуу мамиле кылышы мүмкүн жана аны каалагандай форматташы мүмкүн file алар жактырган система.
USB массалык сактоо түзүлүшүнүн классы төмөнкүдөй эки транспорттук протоколду колдойт:
Жапырт гана транспорт (BOT) Control/Bulk/Interrupt (CBI) Транспорт (дислет дисктери үчүн гана колдонулат)
Массалык сактоо түзүлүшүнүн классы SCSI тунук командалар топтомун BOT протоколун гана колдонуу менен ишке ашырат, бул маалыматтарды жана статус маалыматын өткөрүү үчүн жапырт акыркы чекиттер гана колдонуларын билдирет. MSC ишке ашыруу бир нече логикалык бирдиктерди колдойт.
MSC ишке ашыруу төмөнкү спецификацияларга ылайык келет:
Универсал сериялык автобустун массалык сактоо классынын спецификациясы бүттүview, Ревизия 1.3, 2008-жылдын 5-сентябры. Универсал сериялык автобустун массалык сактоо классы жапырт гана транспорт, Ревизия 1.0 31-сентябрь, 1999-ж.
USB Device MSC aCl ss Overview
Protocol Endpoints Class Requests Small Computer System Interface (SCSI)
Протокол
Бул бөлүмдө биз Массалык сактоо классынын жапырт гана транспорту (BOT) протоколун талкуулайбыз. Жапырт гана транспорттук протоколдо үч с барtages:
Командалык транспорт Маалыматтарды ташуу Статус транспорту
Массалык сактоо буйруктары хост тарабынан Command Block Wrapper (CBW) деп аталган структура аркылуу жөнөтүлөт. Маалыматтарды ташууну талап кылган буйруктар үчүн stage, хост CBW узундугу жана желек талааларында көрсөтүлгөндөй, аппараттан байттардын так санын жөнөтүүгө же алууга аракет кылат. Маалыматтарды ташыгандан кийин сtage, хост түзмөктөн буйруктун статусун, ошондой эле ар кандай маалымат калдыктарын (эгерде

Copyright © 2025 Silicon Laboratories. Бардык укуктар корголгон.

43/174

Бүттүview
ар кандай). Маалыматтарды ташууну камтыбаган буйруктар үчүнtage, хост CBW жөнөтүлгөндөн кийин CSWти түздөн-түз алууга аракет кылат. Протокол сүрөттө сүрөттөлгөн - MSC протоколу.
Сүрөт – MSC протоколу

Акыркы чекиттер
Түзмөк тарабында, BOT спецификациясына ылайык, MSC төмөнкү акыркы чекиттерден турат: демейки акыркы чекит деп аталган IN жана OUT башкаруунун жуп акыркы чекиттери. Бир жуп жапырт IN жана OUT акыркы чекиттери.
Төмөнкү таблица акыркы чекиттердин ар кандай колдонулушун көрсөтөт.
Таблица – MSC Endpoint Usage

Акыркы чекит
Control IN Control OUT Bulk IN DOPY OUT

Багыт
Түзмөктүн Хосттун Хосттун Түзмөктүн Хосттун Түзмөктүн

Колдонуу
Санактоо жана MSC классына тиешелүү суроо-талаптар Эсептөө жана MSC классына тиешелүү суроо-талаптар CSW жана маалыматтарды жөнөтүү CBW жана маалыматтарды алуу

Class Requests
MSC BOT протоколу үчүн эки аныкталган башкаруу сурамдары бар. Бул суроо-талаптар жана алардын сыпаттамалары төмөнкү таблицада кеңири берилген.

Таблица – Массалык сактоо классынын суроо-талаптары

Class Requests
Жапырт гана массалык сактоону баштапкы абалга келтирүү

Description
Бул сурам массалык сактоо түзмөгүн жана ага байланыштуу интерфейсти баштапкы абалга келтирүү үчүн колдонулат. Бул сурам аппаратты кийинки буйрук блогун алууга даярдайт.

Copyright © 2025 Silicon Laboratories. Бардык укуктар корголгон.

44/174

Бүттүview

Class Requests

Description

Макс алуу Бул суроо түзмөк колдоого алган эң жогорку логикалык бирдик санын (LUN) кайтаруу үчүн колдонулат. Мисалы үчүнampле, а

ЛУН

LUN 0 жана LUN 1 менен түзмөк 1 маанисин кайтарат. Жалгыз логикалык бирдиги бар түзмөк 0 кайтарып берет же

өтүнүч. Кайтарылышы мүмкүн болгон максималдуу маани - 15.

Чакан компьютер тутумунун интерфейси SCSI

Программалоо интерфейсинин деңгээлинде MSC аппараты SCSI жана SFF-8020i (ATAPI) сыяктуу стандарттык сактоочу медиа байланыш протоколдорунун бирин ишке ашырат. "Программалоо интерфейси" кайсы протокол ишке ашырылганын аныктайт жана хост операциялык тутумуна USB сактагыч түзмөгү менен байланышуу үчүн ылайыктуу түзмөк драйверин жүктөөгө жардам берет. SCSI - USB MSC сактагыч түзмөктөрүндө колдонулган эң кеңири таралган протокол. Биз MSC SCSI субклассы үчүн ишке ашырууну камсыз кылабыз, аны биздин GSDK колдонуучуларыбыз кутудан тышкары колдоно алышат.
SCSI - бул компьютерлер менен перифериялык түзүлүштөрдүн ортосундагы байланышты башкаруу үчүн стандарттардын жыйындысы. Бул стандарттарга буйруктар, протоколдор, электрдик интерфейстер жана оптикалык интерфейстер кирет. USB сыяктуу башка аппараттык интерфейстерди колдонгон сактагыч түзмөктөр SCSI буйруктарын түзмөк/хост маалыматын алуу жана аппараттын иштешин көзөмөлдөө жана сактагычтагы маалымат блокторун өткөрүү үчүн колдонушат.
SCSI буйруктары түзмөктүн түрлөрүнүн жана функцияларынын кеңири спектрин камтыйт, ошондуктан, түзмөктөргө бул буйруктардын бир бөлүгү керек. Жалпысынан, төмөнкү буйруктар негизги байланыш үчүн зарыл:
СУРОО ОКУУ МҮМКҮНДҮЛҮГҮ(10) ОКУУ(10) СУРОО СЕНСИН СЫНОО БИРДИГИ ДАЯР ЖАЗУУ(10)
USB түзмөгү MSC классынын ресурстук муктаждыктары Core

MSC класстын үлгүсүн sl_usbd_msc_add_to_configuration() функциясы аркылуу USB конфигурациясына кошкон сайын, төмөнкү ресурстар өзөктөн бөлүнөт.

Ресурс
Интерфейстер Альтернативдүү интерфейстер Акыркы чекиттер Интерфейс топтору

Саны
1 1 2 0

Бул сандар ар бир конфигурацияда экенин эске алыңыз. SL_USBD_INTERFACE_QUANTITY , SL_USBD_ALT_INTERFACE_QUANTITY , SL_USBD_INTERFACE_GROUP_QUANTITY жана SL_USBD_DESCRIPTOR_QUANTITY конфигурация маанилерин орнотуп жатканда, класс канча конфигурация кошуларын эске алууну унутпаңыз. SL_USBD_OPEN_ENDPOINTS_QUANTITY конфигурация мааниси үчүн, акыркы чекиттер конфигурация хост тарабынан коюлганда гана ачылгандыктан, класстын үлгүсү үчүн керектүү акыркы чекиттердин санын эске алышыңыз керек.
USB Device MSC класстын конфигурациясы

MSC классын конфигурациялоо үчүн конфигурация параметрлеринин эки тобу колдонулат:
USB түзмөгү MSC классы Колдонмого спецификалык конфигурациялар USB түзмөгү MSC классынын логикалык бирдигинин конфигурациясы
USB Device MSC Class Колдонмого конкреттүү конфигурациялары

Класстын компиляция убактысынын конфигурациялары Класс инстанциясын түзүү

Copyright © 2025 Silicon Laboratories. Бардык укуктар корголгон.

45/174

Бүттүview

Класстын компиляция убактысынын конфигурациялары
Silicon Labs USB Device MSC классы жана SCSI субклассы компиляция убагында sl_usbd_core_config.h ичинде жайгашкан #defines аркылуу конфигурацияланат. file.
Таблица – Жалпы конфигурация константалары

Конфигурация аты

Description

SL_USBD_MSC_CLASS_INST Функцияга чакыруу аркылуу бөлүштүрө турган класс инстанцияларынын саны

ANCE_QUANTITY

sl_usbd_msc_scsi_create_instance() .

SL_USBD_MSC_CONFIGURA Класс инстанциясын чакыруу аркылуу кошууга боло турган конфигурациянын саны

TION_QUANTITY

sl_usbd_msc_scsi_add_to_configuration() функциясы.

SL_USBD_MSC_LUN_QUANT Класс үлгүсүнө чалуу аркылуу кошо турган логикалык бирдиктердин саны

ITY

sl_usbd_msc_scsi_lun_add() функциясы.

SL_USBD_MSC_SCSI_64_BIT 64 биттен турган Логикалык блок даректи (LBA) колдоону иштетет же өчүрөт.
_LBA_EN

SL_USBD_MSC_DATA_BUFF Берилиш буферинин бир класс инстанциясына байт боюнча өлчөмү ER_SIZE

Демейки маани
2
1
2
0
512

Класс үлгүсүн түзүү
USB Device MSC SCSI класс үлгүсүн түзүү sl_usbd_msc_scsi_create_instance() функциясын чакыруу менен ишке ашырылат. Бул функция төмөндө сүрөттөлгөн бир конфигурация аргументин алат.
p_scsi_callbacks
p_scsi_callbacks sl_usbd_msc_scsi_callbacks_t түрүндөгү конфигурация структурасынын көрсөткүчү. Жалпы usb түзмөгүнүн классындагы кайра чалууларга кошулуу/ажыратуудан тышкары, ал MSC классын логикалык бирдикте окуя болгондо чакыра турган кошумча кайра чалуу функцияларынын жыйындысы менен камсыз кылат. Эгерде кайра чалуулардын кереги жок болсо, бул аргументке нөл көрсөткүч (NULL) берилиши мүмкүн.
Төмөнкү таблица бул конфигурация структурасында жеткиликтүү болгон ар бир конфигурация талаасын сүрөттөйт.
Таблица – sl_usbd_msc_scsi_callbacks_t Конфигурация түзүмү

Талаалар

Description

.иштетүү

USB класс үлгүсү ийгиликтүү иштетилгенде чакырылат.

.disable USB класс үлгүсү өчүрүлгөндө Чакырылды.

.host_eject Логикалык бирдик хосттон чыгарылганда чакырылат.

Function Signature
void app_usbd_msc_scsi_enable(uint8_t class_nbr);
void app_usbd_msc_scsi_disable(uint8_t class_nbr); void app_usbd_msc_scsi_host_eject(uint8_t class_nbr, uint8_t lu_nbr);

USB түзмөгү MSC классынын логикалык бирдигинин конфигурациясы

MSC классынын инстанциясына логикалык бирдикти кошуу sl_usbd_msc_lun_add() функциясын чакыруу менен ишке ашырылат. Бул функция төмөндө сүрөттөлгөн бир конфигурация аргументин алат.

p_lu_info

p_lu_info sl_usbd_msc_scsi_lun_info_t түрүндөгү структурага көрсөткүч. Анын максаты MSC классына логикалык бирдик жөнүндө маалымат берүү.
Төмөнкү таблица бул конфигурация структурасында жеткиликтүү болгон ар бир конфигурация талаасын сүрөттөйт.

Таблица – sl_usbd_msc_scsi_lun_info_t Конфигурация түзүмү

Copyright © 2025 Silicon Laboratories. Бардык укуктар корголгон.

46/174

Бүттүview

Талаа

Description

Талаа
.scsi_lun_api_p tr

Description
Бул логикалык бирдикти иштете турган медиа драйверинин API көрсөткүчү. Сактагыч драйверлери жөнүндө көбүрөөк маалымат алуу үчүн USB Device MSC Class Storage Drivers караңыз.

.ve nd o r_id _ p tr
.product_id_ptr
.p ro d uct_ re v isi on_level .is_ re ad _o nly

Логикалык бирдиктин сатуучу идентификациясын камтыган сапка көрсөткүч. Саптын максималдуу узундугу - 8 белги. Логикалык бирдиктин продукт идентификациясын камтыган сапка көрсөткүч. Саптын максималдуу узундугу - 16 белги. Продукцияны кайра карап чыгуу деңгээли.
Логикалык бирдик чекитинен баштап гана окулушу керек экендигин көрсөткөн желек view хосттун (чын) же жок (жалган).

USB Device MSC Class Программалоо колдонмосу

Бул бөлүмдө MSC классын кантип колдонуу керектиги түшүндүрүлөт.
USB түзмөгүн инициализациялоо MSC классы USB түзмөгүңүзгө MSC SCSI класс үлгүсүн кошуу USB түзмөгүңүзгө MSC классынын логикалык бирдигин иштетүү
USB түзмөгүнүн MSC классын баштоо

Түзмөгүңүзгө MSC SCSI классынын функционалдуулугун кошуу үчүн, адегенде sl_usbd_msc_init() жана sl_usbd_msc_scsi_init() функциясын чакырып, MSC базалык классын жана SCSI субклассын инициализациялаңыз.
мурдагыample төмөндө sl_usbd_msc_init() жана sl_usbd_msc_scsi_init() кантип чалуу керектигин көрсөтөт.

Example – sl_usbd_msc_init() жана sl_usbd_msc_scsi_init() чалуу

sl_status_t статусу;
статус = sl_usbd_msc_init(); эгерде (статус ! SL_STATUS_OK) { /* Ката кетти. Ката иштетүү бул жерге кошулушу керек. */
}
статус = sl_usbd_msc_scsi_init(); эгерде (статус ! SL_STATUS_OK) { /* Ката кетти. Ката иштетүү бул жерге кошулушу керек. */
}
USB түзмөгүңүзгө MSC SCSI класс инстанциясын кошуу
Түзмөгүңүзгө MSC SCSI класс функционалдуулугун кошуу үчүн, адегенде инстанцияны түзүп, андан соң аны түзмөгүңүздүн конфигурациясына(ларына) кошуңуз. Сиз инстанцияңызга жок дегенде бир логикалык бирдикти кошушуңуз керек.
MSC SCSI класс инстанциясын түзүү
sl_usbd_msc_scsi_create_instance() функциясын чакырып, MSC SCSI класс үлгүсүн түзүңүз.
мурдагыample төмөндө демейки аргументтерди колдонуу менен sl_usbd_msc_scsi_create_instance() кантип чалуу керектигин көрсөтөт. sl_usbd_msc_scsi_create_instance() га өтүү үчүн конфигурация аргументтери жөнүндө көбүрөөк маалымат алуу үчүн, USB Device MSC Class Class Application Specific Configurations караңыз.
Example – sl_usbd_ msc_scsi_create_instance() чалуу

Copyright © 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) Конфигурация номери (бул жерде аны Full-Speed ​​конфигурациясына кошуу).
USB түзмөгү MSC классынын логикалык бирдигин иштетүү
Логикалык бирдикти кошуу Сактагычты тиркөө/ажыратуу
Логикалык бирдикти кошуу
MSC SCSI класс инстанцияңызга логикалык бирдикти кошкондо, ал сактагычка (RAMDisk, SD карта, флеш эс тутум ж.б.) байланышы керек. MSC классы сактагыч медиа менен байланышуу үчүн сактагыч драйверин колдонот. Логикалык бирдикти кошууда бул драйвер камсыз болушу керек.
мурдагыample төмөндө sl_usbd_msc_scsi_lun_add() аркылуу логикалык бирдикти кантип кошууну көрсөтөт.
Example – sl_usbd_msc_scsi_lun_add() аркылуу Логикалык бирдикти кошуу

Copyright © 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

= "блок түзмөк эксample”;

lu_info.product_revision_level = 0x1000u;

lu_info.is_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() . Бул функциялар керек болсо, кыстарылган тиркемеден кайра кирүү мүмкүнчүлүгүн алуу үчүн сактагыч түзүлүштү алып салууну эмуляциялоого мүмкүндүк берет.
мурдагыample төмөндө sl_usbd_msc_scsi_lun_attach() жана sl_usbd_msc_scsi_lun_detach() функциясын кантип колдонуу керектиги көрсөтүлгөн.
Example – Media Attach/Detach

sl_status_t статусу;

статус = sl_usbd_msc_scsi_lun_attach(lu_object_ptr); эгерде (статус ! SL_STATUS_OK) { /* Ката кетти. Ката иштетүү бул жерге кошулушу керек. */
}

(1)

статус = sl_usbd_msc_scsi_lun_detach(lu_object_ptr); эгерде (статус ! SL_STATUS_OK) {
/* Ката кетти. Ката иштетүү бул жерге кошулушу керек. */
}

(2)

статус = sl_usbd_msc_scsi_lun_attach(lu_object_ptr) эгерде (статус ! SL_STATUS_OK) {
/* Ката кетти. Ката иштетүү бул жерге кошулушу керек. */
}

(3)

(1) Ушул учурдан тартып, MSC түзмөгү хостко туташкан болсо, сактагычка жеткиликтүү болот.
(2) MSC түзмөгү хостко туташкан болсо, медиа азыр жеткиликсиз болуп көрүнөт. Бул учурда, операциялар камтылган тиркемеден медиада аткарылышы мүмкүн.
(3) Кайрадан, MSC түзмөгү хостко туташкан болсо, сактагыч медиа туташкан катары көрүнөт.
USB түзмөк MSC класс сактоо драйверлери
USB түзмөгүнүн MSC классына сактагыч менен байланышуу үчүн сактагыч драйвер керек. Учурда Silicon Labs айдоочуларды сунуштабайт.

Copyright © 2025 Silicon Laboratories. Бардык укуктар корголгон.

49/174

Бүттүview
TPY ааа ал айдоочу AI typedef sl_usbd_msc_scsi_lun_api_t тарабынан аныкталат. биздин sl_usbd_msc_scsi_lun_api_t v ri ble aaaaaaa сиздин sl_usbd_msc_scsi_lun_info_t v rible, p ssed с аргументиңизге кошулушу керек, сиз dd логика l бирдигин sl_usbdcsid_ (sl_usbd_mss_) менен кошкондо. Түзүмдөр жөнүндө көбүрөөк маалымат алуу үчүн USB Device MSC SCSI API бөлүмүн караңыз. Сактоочу драйверди ишке ашыруу RAMдагы секторлордун массивиндей жөнөкөй болушу мүмкүн. Сектордун типтүү өлчөмү (б.а. блоктун өлчөмү) массалык сактоо түзүлүштөрү үчүн 512, ал эми CD-ROM үчүн 2048.

Copyright © 2025 Silicon Laboratories. Бардык укуктар корголгон.

50/174

Бүттүview
Бүттүview
USB түзмөк сатуучу классы
USB түзмөк сатуучу классы бүттүview USB түзмөгүнүн сатуучу классындагы ресурстун негизги USB түзмөгүнүн сатуучу классынын конфигурациясынын USB түзмөгүнүн сатуучу классынын программалоо колдонмосу Сатуучу классы проприетардык протоколду ишке ашыра ала турган сатуучуга тиешелүү түзмөктөрдү түзүүгө мүмкүндүк берет. Ал хост менен аппараттын ортосунда маалыматтарды өткөрүү үчүн бир жуп жапырт акыркы чекиттерге таянат. Жаппай которуулар структураланбаган маалыматтардын чоң көлөмүн өткөрүү үчүн ыңгайлуу жана каталарды аныктоо жана кайра аракет кылуу механизмин колдонуу менен ишенимдүү маалымат алмашууну камсыз кылат. Жапырт акыркы чекиттерден тышкары, Вендор классы үзгүлтүктүн акыркы чекиттеринин кошумча түгөйүн да колдоно алат. Каалаган операциялык система (OS) Vendor классы менен иштей алат, эгерде ОС Vendor классын башкаруу үчүн драйверге ээ болсо. Операцияга жараша, драйвер жергиликтүү же сатуучуга тиешелүү болушу мүмкүн. Мисалы, Microsoft Windows® астында, сиздин колдонмоңуз сатуучу түзмөг менен байланышуу үчүн Microsoft тарабынан берилген WinUSB драйвери менен иштешет.
USB түзмөк сатуучу классы бүттүview
Сүрөт – Windows Хост менен Сатуучу классынын ортосундагы жалпы архитектура Жетүүчү классты колдонуу менен хост менен түзмөктүн ортосундагы жалпы архитектураны көрсөтөт. Бул эксample, хост операциялык системасы MS Windows болуп саналат.
Сүрөт – MS Windows Хост жана Сатуучу классынын ортосундагы жалпы архитектура

MS Windows тарабында, тиркеме USB китепканасы менен өз ара аракеттенүү аркылуу сатуучу түзмөк менен байланышат. Libusb сыяктуу китепканалар түзмөктү жана ага байланышкан түтүктөрдү башкаруу жана башкаруу, жапырт жана үзгүлтүктүн акыркы чекиттери аркылуу түзмөк менен байланышуу үчүн API сунуштайт.
Түзмөк тарабында, Сатуучу класс төмөнкү акыркы чекиттерден турат:
Демейки акыркы чекит деп аталган IN жана OUT акыркы чекиттеринин түгөйү. Бир жуп жапырт IN жана OUT акыркы чекиттери.

Copyright © 2025 Silicon Laboratories. Бардык укуктар корголгон.

51/174

Бүттүview

Үзгүлтүктүн IN жана OUT акыркы чекиттеринин жуптары. Бул жуп милдеттүү эмес. Төмөнкү таблица ар кандай акыркы чекиттерди колдонууну көрсөтөт:
Таблица – Сатуучу классынын акыркы чекиттерин колдонуу

Акыркы чекит багыты

Control IN
Control
OUT
Жаппай IN

Device-tohost
> Хост-түзмөк
Device-tohost

Жаппай ЧЫГАРЫЛУУ
Interrupt IN
Үзүлүү
OUT

Хост-түзмөк
Device-tohost
Хост-түзмөк

Колдонуу
Эсептөө үчүн стандарттык суроо-талаптар жана сатуучуга тиешелүү суроо-талаптар.
Эсептөө үчүн стандарттык суроо-талаптар жана сатуучуга тиешелүү суроо-талаптар.
Чийки маалымат байланышы. Маалыматтар проприетардык протоколго ылайык түзүлүшү мүмкүн.
Чийки маалымат байланышы. Маалыматтар проприетардык протоколго ылайык түзүлүшү мүмкүн.
Чийки маалымат байланышы же билдирүү. Маалыматтар проприетардык протоколго ылайык түзүлүшү мүмкүн. Чийки маалымат байланышы же билдирүү. Маалыматтар проприетардык протоколго ылайык түзүлүшү мүмкүн.

Түзмөк тиркемеси хостко же андан маалыматтарды жөнөтүү же кабыл алуу үчүн жапырт жана үзгүлтүккө учураган акыркы чекиттерди колдоно алат. Ал хост тарабынан жөнөтүлгөн сатуучуга тиешелүү суроо-талаптарды чечмелөө үчүн демейки акыркы чекитти гана колдоно алат. Стандарттык суроо-талаптар Silicon Labs USB түзмөгүнүн негизги катмары тарабынан башкарылат.
USB түзмөгүнүн сатуучу классынын ресурстук муктаждыктары Core

sl_usbd_vendor_add_to_configuration() функциясы аркылуу конфигурацияга сатуучу класстын инстанциясын кошкон сайын, төмөнкү ресурстар өзөктөн бөлүнөт.

Ресурс
Интерфейстер Альтернативдүү интерфейстер Акыркы чекиттер Интерфейс топтору

Саны
1 1 2 (эгер сиз үзгүлтүктүн акыркы чекиттерин иштетсеңиз 4) 0

Бул сандар ар бир конфигурацияда экенин эске алыңыз. SL_USBD_INTERFACE_QUANTITY , SL_USBD_ALT_INTERFACE_QUANTITY , SL_USBD_INTERFACE_GROUP_QUANTITY жана SL_USBD_DESCRIPTOR_QUANTITY конфигурация маанилерин орнотуп жатканда, класс канча конфигурация кошуларын эске алууну унутпаңыз. SL_USBD_OPEN_ENDPOINTS_QUANTITY конфигурация мааниси үчүн, акыркы чекиттер конфигурация хост тарабынан коюлганда гана ачылгандыктан, класстын үлгүсү үчүн керектүү акыркы чекиттердин санын эске алышыңыз керек.
USB түзмөгүнүн сатуучу классынын конфигурациясы

Сатуучу классын конфигурациялоо үчүн конфигурация параметрлеринин эки тобу колдонулат:
USB түзмөгүнүн сатуучу классынын Колдонмого спецификалык конфигурациялары USB түзмөгүнүн сатуучу классынын конфигурациялары
USB түзмөгүнүн сатуучу классынын Колдонмого тиешелүү конфигурациялары
Биринчиден, Silicon Labs USB түзмөгүнүн Сатуучу класс модулун колдонуу үчүн, Vendor компиляция убактысынын конфигурациясын колдонмоңуздун муктаждыктарына жараша тууралаңыз. Алар sl_usbd_core_config.h башынын ичинде кайра топтолгон file Сатуучу бөлүмүндө. Сандык конфигурациялардын максаты - USB түзмөгүнүн модулуна канча USB сатуучу объекти бөлүү керектиги жөнүндө маалымат берүү.
Төмөнкү таблица ар бир конфигурацияны сүрөттөйт.

Copyright © 2025 Silicon Laboratories. Бардык укуктар корголгон.

52/174

Бүттүview

Таблица – USB Device Сатуучу Конфигурациясын аныктайт

Конфигурация аты

Description

Демейки маани

SL_USBD_VENDOR_CLASS_INSTANCE_QUANTITY sl_usbd_vendor_create_instance() 2 функциясына чакыруу аркылуу сиз бөлгөн класс инстанцияларынын саны.

SL_USBD_VENDOR_CONFIGURATION_QUANTITY Конфигурациялардын саны. Сатуучу класстын инстанцияларын sl_usbd_vendor_add_to_configuration() функциясына чакыруу аркылуу бир же бир нече конфигурацияга кошууга болот.

USB түзмөгүнүн сатуучу классынын конфигурациялары

Бул бөлүм Сатуучу класс инстанцияларына тиешелүү конфигурацияларды аныктайт.
Класс Инстанциясын түзүү intr_en интервал p_vendor_callbacks
Класс үлгүсүн түзүү

Vendor классынын инстанциясын түзүү sl_usbd_vendor_create_instance() функциясын чакыруу менен аткарылат, ал төмөндө сүрөттөлгөн үч конфигурация аргументин алат.

intr_en
Үзгүлтүктүн акыркы чекиттеринин түгөйү кошулушу керекпи же кошулбашы керек экенин көрсөткөн логикалык.

Нарк
чын жалган

Description
Бир жуп IN/OUT акыркы чекиттери кошулуп, кыналган колдонмого жеткиликтүү болот. Үзгүлтүктүн акыркы чекити кошулбайт. Булк IN/OUT акыркы чекити түгөй гана жеткиликтүү болот.

интервал
Эгерде сиз intr_en параметрин true деп койсоңуз, үзгүлтүктүн акыркы чекиттеринин сурам интервалын (миллисекунд менен) көрсөтө аласыз. Эгерде сиз intr_en false деп койсоңуз, интервалды 0 деп коюңуз, анткени класс аны этибарга албайт.
p_vendor_callbacks
p_vendor_callbacks кайра чалуу функцияларынын структурасынын өзгөрмөсүнө көрсөткүч. класстын спецификалык башкаруу суроо-талаптарын аткаруу үчүн белгилей аласыз. Эгер сиз кандайдыр бир класска тиешелүү суроо-талаптарды колдонбосоңуз же эскертмени иштетүү/өчүрүү керек болсо, аны NULL деп кое аласыз.
мурдагыample төмөндө сиздин класска тиешелүү суроо-талаптарды иштетүүчүнүн күтүлгөн колтамгасын камсыз кылат.
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) Сатуучу класстын инстанциясынын номери.

Copyright © 2025 Silicon Laboratories. Бардык укуктар корголгон.

53/174

Бүттүview

(2) Хосттан кабыл алынган орнотуу сурамына көрсөткүч.
USB түзмөк сатуучу классынын программалоо колдонмосу
Бул бөлүмдө Vendor классын кантип колдонуу керектиги түшүндүрүлөт. USB түзмөгүнүн сатуучу классын инициализациялоо Аспабыңызга USB түзмөгүнүн сатуучу классын кошуу USB түзмөгүнүн сатуучу классын колдонуу менен байланышуу
USB түзмөк сатуучу классын баштоо
Түзмөгүңүзгө Vendor Class функциясын кошуу үчүн, алгач USBD_Vendor_Init() функциясын чакырып классты инициализациялаңыз. мурдагыample төмөндө sl_usbd_vendor_init() кантип чалуу керектигин көрсөтөт.
Example – Чалуу sl_usbd_vendor_init()

sl_status_t статусу;
статус = sl_usbd_vendor_init(); эгерде (статус ! SL_STATUS_OK) { /* Ката кетти. Ката иштетүү бул жерге кошулушу керек. */ }
Түзмөгүңүзгө USB Device Сатуучу Класс Инстанциясын кошуу
Түзмөгүңүзгө сатуучу классынын функционалдуулугун кошуу үчүн, адегенде инстанцияны түзүп, андан соң аны түзмөгүңүздүн конфигурациясына(ларына) кошушуңуз керек.
Сатуучу класстын инстанциясын түзүү Сиздин түзмөгүңүздүн конфигурациясына(ларына) Сатуучу класстын инстанциясын кошуу
Сатуучу класстын инстанциясын түзүү
sl_usbd_vendor_create_instance() функциясын чакырып, Vendor класстын үлгүсүн түзүңүз. мурдагыample төмөндө демейки аргументтерди колдонуу менен sl_usbd_vendor_create_instance() кантип чалуу керектигин көрсөтөт. sl_usbd_vendor_create_instance() га өтүү үчүн конфигурация аргументтери жөнүндө көбүрөөк маалымат алуу үчүн, USB Device Vendor Class Instance Configurations караңыз.
Example – sl_usbd_vendor_create_instance() чалуу

uint8_t class_nbr; sl_status_t статусу;

статус = sl_usbd_vendor_create_instance(жалган,

(1)

0u,

(2)

app_usbd_vendor_callback_functions, (3)

&class_nbr);

эгерде (статус ! SL_STATUS_OK) {

/* Ката кетти. Ката иштетүү бул жерге кошулушу керек. */

}

(1) Бул класстын инстанциясы менен үзгүлтүктүн акыркы чекиттери жок. (2) Үзгүлтүктүн акыркы чекиттери өчүрүлгөндүктөн, интервал этибарга алынбайт.

Copyright © 2025 Silicon Laboratories. Бардык укуктар корголгон.

54/174

Бүттүview

(3) Класстын сатуучуга тиешелүү суроо-талаптарын аткарган тиркемеңиздин бир бөлүгү болгон кайра чалуу функциясы. Көбүрөөк маалымат алуу үчүн USB түзмөк сатуучу классын колдонуу менен байланышты караңыз. Түзмөгүңүздүн Конфигурациясына(-ларына) Сатуучу класстын инстанциясын кошуу Сиз сатуучу класстын инстанциясын түзгөндөн кийин, USBD_Vendor_ConfigAdd() функциясын чакырып, аны конфигурацияга кошо аласыз. мурдагыample төмөндө демейки аргументтерди колдонуу менен 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) Конфигурация номери (бул жерде аны Full-Speed ​​конфигурациясына кошуу).
USB түзмөк сатуучу классын колдонуу менен байланышуу
Жалпы синхрондуу байланыш Асинхрондук байланыш сатуучунун суроо-талабы Жалпы Сатуучу классы хост менен байланышуу үчүн төмөнкү функцияларды сунуштайт. Функциянын параметрлери жөнүндө көбүрөөк маалымат алуу үчүн, USB Device Vendor API караңыз.
Таблица – Сатуучунун байланыш API резюме

Функциянын аты
sl_usb d _v e nd o r_ re ad _b ulk_sy nc() sl_usb d _v e nd o r_write _b ulk_sy nc() sl_usb d _v e nd o r_ re ad _b ulk_asy ncus()dwr o _s _b ulk_asy nc() sl_usb d _v e nd o r_ re ad _inte rrup t_sy nc() sl_usb d _v e nd o r_write _inte rrup t_sy nc() sl_usb d _v e ndrncte _ast
()
sl_usb d _v e nd o r_write _inte rrup t_asy nc
()

Operation Receives data from host through bulk OUT endpoint. This function is blocking. Sends data to host through bulk IN endpoint. This function is blocking. Receives data from host through bulk OUT endpoint. This function is non-blocking. Sends data to host through bulk IN endpoint. This function is non-blocking. Receives data from host through interrupt OUT endpoint. This function is blocking. Sends data to host through interrupt IN endpoint. This function is blocking. Receives data from host through interrupt OUT endpoint. This function is non-
бөгөт коюу.
Sends data to host through interrupt IN endpoint. This function is non-blocking.

The vendor requests are also another way to communicate with the host. When managing vendor requests sent by the host, the application can receive or send data from or to the host using the control endpoint; you will need to provide an application callback passed as a parameter of sl_usbd_vendor_create_instance() . Synchronous Communication

Copyright © 2025 Silicon Laboratories. Бардык укуктар корголгон.

55/174

Бүттүview

Synchronous communication means that the transfer is blocking. When a function is called, the application blocks until the transfer completes with or without an error. A timeout can be specified to avoid waiting forever. The example below shows a read and write that receives data from the host using the bulk OUT endpoint and sends data to the host using the bulk IN endpoint.
Example – Synchronous Bulk Read and Write

__ALIGNED(4) uint8_t rx_buf[2];

__ALIGNED(4) uint8_t tx_buf[2];

uint32_t

xfer_len;

sl_status_t

статусу;

status = sl_usbd_vendor_read_bulk_sync(class_nbr,

(1)

(void *)&rx_buf[0],

(2)

2u,

0u,

(3)

&xfer_len);

эгерде (статус ! SL_STATUS_OK) {

/* $$$$ Катаны жөнгө салыңыз. */

}

status = sl_usbd_vendor_write_bulk_sync( class_nbr,

(1)

(void *)&tx_buf[0],

(4)

2u,

0u,

(3)

false,

(5)

&xfer_len);

эгерде (статус ! SL_STATUS_OK) {

/* $$$$ Катаны жөнгө салыңыз. */

}

(1) The class instance number created with sl_usbd_vendor_create_instance() provides an internal reference to the Vendor class to route the transfer to the proper bulk OUT or IN endpoint.
(2) The application must ensure that the buffer provided to the function is large enough to accommodate all the data. Otherwise, synchronization issues might happen.
(3) In order to avoid an infinite blocking situation, a timeout expressed in milliseconds can be specified. A value of 809 makes the application task wait forever.
(4) Тиркеме инициализацияланган берүү буферин камсыз кылат.
(5) If this flag is set to true , and the transfer length is multiple of the endpoint maximum packet size, the device stack will send a zero-length packet to the host to signal the end of the transfer.
The use of interrupt endpoint communication functions, sl_usbd_vendor_read_interrupt_sync() and sl_usbd_vendor_write_interrupt_sync() , is similar to bulk endpoint communication functions presented in Example – Synchronous Bulk Read and Write.
Асинхрондук байланыш
Asynchronous communication means that the transfer is non-blocking. When a function is called, the application passes the transfer information to the device stack and does not block. Other application processing can be done while the transfer is in progress over the USB bus. Once the transfer has completed, a callback function is called by the device stack to inform the application about the transfer completion. The example below shows asynchronous read and write.
Example – Asynchronous Bulk Read and Write

Copyright © 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

статусу;

status = sl_usbd_vendor_read_bulk_async(class_nbr,

(void *)&rx_buf[0],

(2)

2u,

app_usbd_vendor_rx_completed,

NULL);

(4)

эгерде (статус ! SL_STATUS_OK) {

/* $$$$ Катаны жөнгө салыңыз. */

}

status = sl_usbd_vendor_write_bulk_async(class_nbr,

(void *)&tx_buf[0],

(5)

2u,

app_usbd_vendor_tx_completed,

НӨЛ,

(4)

false);

(6)

эгерде (статус ! SL_STATUS_OK) {

/* $$$$ Катаны жөнгө салыңыз. */

}

}

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

static void app_usbd_vendor_rx_completed(uint8_t class_nbr,

(3)

void *p_buf,

uint32_t buf_len,

uint32_t xfer_len,

void *p_callback_arg,

sl_status_t status)

{

эгерде (статус ! SL_STATUS_OK) {

/* $$$$ Do some processing. */

} башка {

/* $$$$ Катаны жөнгө салыңыз. */

}

}

static void app_usbd_vendor_tx_completed(uint8_t class_nbr,

(3)

void *p_buf,

uint32_t buf_len,

uint32_t xfer_len,

void *p_callback_arg,

sl_status_t status)

{

эгерде (статус ! SL_STATUS_OK) {

/* $$$$ Do some processing. */

} башка {

/* $$$$ Катаны жөнгө салыңыз. */

}

}

(1) The class instance number provides an internal reference to the Vendor class to route the transfer to the proper bulk OUT or IN endpoint. (2) The application must ensure that the buffer provided is large enough to accommodate all the data. Otherwise, there may be synchronization issues. (3) The application provides a callback function pointer passed as a parameter. Upon completion of the transfer, the device stack calls this callback function so that the application can finalize the transfer by analyzing the transfer result. For instance, on completion of a read operation, the application might perform processing on the received data. Upon write completion, the application can indicate if the write was successful and how many bytes were sent.

Copyright © 2025 Silicon Laboratories. Бардык укуктар корголгон.

57/174

Бүттүview
(4) An argument associated with the callback can be also passed. Then in the callback context, some private information can be retrieved. (5) The application provides the initialized transmit buffer. (6) If this flag is set to true , and the transfer length is a multiple of the endpoint maximum packet size, the device stack will send a zero-length packet to the host to signal the end of transfer. The use of interrupt endpoint communication functions, sl_usbd_vendor_read_interrupt_async() and sl_usbd_vendor_write_interrupt_async() , is similar to the bulk endpoint communication functions presented in Example Asynchronous Bulk Read and Write.
Vendor Request
The USB 2.0 specification defines three types of requests: standard, class, and vendor. All standard requests are handled directly by the core layer, while class requests are managed by the proper associated class. Vendor requests can be processed by the vendor class. To process vendor requests, you must provide an application callback as a parameter of sl_usbd_vendor_create_instance() . After a vendor request is received by the USB device, it must be decoded properly. The example below shows vendor request decoding. Certain requests may be required to receive from or send to the host during the data stage of a control transfer. If no data stage is present, you only have to decode the Setup packet. This example shows the three types of data stage management: no data, data OUT and data IN.
Example – Vendor Request Decoding

Copyright © 2025 Silicon Laboratories. Бардык укуктар корголгон.

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

50u

static uint8_t app_vendor_req_buf[APP_VENDOR_REQ_DATA_BUF_SIZE];

static bool app_usbd_vendor_req (uint8_t

class_nbr,

const sl_usbd_setup_req_t *p_setup_req)

(1)

{

bool valid;

sl_status_t статусу;

uint16_t req_len;

uint32_t xfer_len;

(void)class_nbr;

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

(2) (3)

case APP_VENDOR_REQ_RECEIVE_DATA_FROM_HOST:

(4)

req_len = p_setup_req->wLength;

if (req_len > APP_VENDOR_REQ_DATA_BUF_SIZE) {

// Not enough room to receive data.

return (false);

}

// Receive data via Control OUT EP. // Wait transfer completion forever. status = sl_usbd_core_read_control_sync((void *)&app_vendor_req_buf[0u],
req_len, 0u, &xfer_len); if (status ! SL_STATUS_OK) { valid = false; } else { valid = true; } break;

case APP_VENDOR_REQ_SEND_DATA_TO_HOST:

(5)

req_len = APP_VENDOR_REQ_DATA_BUF_SIZE;

// Fill buf with a pattern. Mem_Set((void *)&AppVendorReqBuf[0u],
'A',
req_len);

// Send data via Control IN EP. // Wait transfer completion forever. status = sl_usbd_core_write_control_sync((void *)&app_vendor_req_buf[0u],
req_len, 0u, false, &xfer_len); if (status ! SL_STATUS_OK) { valid = DEF_FAIL; } else { valid = DEF_OK; } break;

демейки:

(6)

// Request is not supported.

Copyright © 2025 Silicon Laboratories. Бардык укуктар корголгон.

59/174

Бүттүview

valid =true;break;
case APP_VENDOR_REQ_RECEIVE_DATA_FROM_HOST:(4) req_len = p_setup_req->wLength;if(req_len > APP_VENDOR_REQ_DATA_BUF_SIZE){// Not enough room to receive data.return(false);}// Receive data via Control OUT EP.// Wait transfer completion forever. status =sl_usbd_core_read_control_sync((void *)&app_vendor_req_buf[0u],
req_len,0u,&xfer_len);if(status ! SL_STATUS_OK){ valid =false;}else{ valid =true;}break;
case APP_VENDOR_REQ_SEND_DATA_TO_HOST:(5) req_len = APP_VENDOR_REQ_DATA_BUF_SIZE;// Fill buf with a pattern.Mem_Set((void *)&AppVendorReqBuf[0u],’A’,
req_len);// Send data via Control IN EP.// Wait transfer completion forever. status =sl_usbd_core_write_control_sync((void *)&app_vendor_req_buf[0u],
req_len,0u,false,&xfer_len);if(status ! SL_STATUS_OK){ valid = DEF_FAIL;}else{ valid = DEF_OK;}break;
default:(6)// Request is not supported. valid = DEF_FAIL;break;}return(valid);}

(1) The core will pass the Setup packet content to your application. The structure sl_usbd_setup_req_t contains the same fields as defined by the USB 2.0 specification (refer to section “9.3 USB Device Requests” of the specification for more details):

typedef структурасы {

uint8_t bmRequestType; /* Characteristics of request.

*/

uint8_t bRequest; /* Specific request.

*/

uint16_t wValue; /* Varies according to request.

*/

uint16_t wIndex; /* Varies according to request; typically used as index.*/

uint16_t wLength; /* Transfer length if data stage бар.

*/

} sl_usbd_setup_req_t;

(2) Determine the request. You may use a switch statement if you are using different requests. In this example, there are three different requests corresponding to the three types of the data stage: APP_VENDOR_REQ_NO_DATA, APP_VENDOR_REQ_RECEIVE_DATA_FROM_HOST, and APP_VENDOR_REQ_SEND_DATA_TO_HOST.
(3) If no data stage is present, you only need to decode the other fields. The presence of a data stage or not is indicated by the field wLength being non-null or null.
(4) If the host sends data to the device, you must call the function sl_usbd_core_read_control_sync() . The buffer provided should be able to contain up to wLength bytes. If any error occurs, return false to the core that will stall the status stage of the control transfer, indicating to the host that the request cannot be processed. true is returned in case of success.
(5) If the host receives data from the device, you must call the function sl_usbd_core_write_control_sync() . If any error occurs, return false to the core that will stall the status stage of the control transfer, indicating to the host that the request cannot be processed. true is returned in case of success.
(6) In this example, all requests not recognized are marked by returning false to the core. This one will stall the data or status stage of the control transfer indicating to the host that the request is not supported.
The host sends vendor requests through a host vendor application. USb libraries, such as libusb, can be used to help you develop your custom host vendor application.

Copyright © 2025 Silicon Laboratories. Бардык укуктар корголгон.

60/174

API документациясы
API документациясы
API документациясы
Модулдардын тизмеси
USB Device API USB Device ACM API USB Device CDC API USB Device Core API USB Device HID API USB Device MSC API USB Device MSC SCSI API USB Device Vendor API

Description
USB Device API USB Device ACM API USB Device CDC API USB Device Core API USB Device HID API USB Device MSC API USB Device MSC SCSI API USB Device Vendor API

Copyright © 2025 Silicon Laboratories. Бардык укуктар корголгон.

61/174

USB Device API
USB Device API
USB Device API
USB Device API.
Модульдер
USB Device ACM API USB Device CDC API USB Device Core API USB Device HID API USB Device MSC API USB Device MSC SCSI API USB Device Vendor API

Copyright © 2025 Silicon Laboratories. Бардык укуктар корголгон.

62/174

USB Device ACM API

USB Device ACM API

USB Device ACM API

USB Device CDC ACM API.
Модульдер
a 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

a sl_usbd_cdc_ cm_init(void)
GLOBAL VARIABLES.
ssll__uussbbdd__ccddcc__aaccmm__ccraellabtaec_kins_stta*npc_ea(cumin_tc1a6l_lbtalicnkes_,sutaintte8__int t*eprv_saul,bucinlats1s6__nt bcra)ll_mgmt_capabilities,
Add a new instance of the CDC ACM serial emulation subclass.
a a a a sl_usbd_cdc_ cm_ dd_to_configur tion(uint8_t subcl ss_nbr, uint8_t config_nbr)
Add a CDC ACM subclass class instance into USB device configuration.
a a sl_usbd_cdc_ cm_is_en bled(uint8_t subclass_nbr, bool *p_enabled)
Get the CDC ACM serial emulation subclass enable state.
a a a sl_usbd_cdc_ cm_re d(uint8_t subcl ss_nbr, uint8_t *p_buf, uint32_t buf_len, uint16_t timeout, uint32_t
*p_xfer_len) Receive data on the CDC ACM serial emulation subclass.
a a a a sl_usbd_cdc_ cm_re d_ sync(uint8_t subcl ss_nbr, uint8_t *p_buf, uint32_t buf_len, a a a a sl_usbd_cdc_ sync_function_t sync_fnct, void *p_ sync_ rg)
Receive data on the CDC ACM serial emulation subclass asynchronously.
a a sl_usbd_cdc_ cm_write(uint8_t subcl ss_nbr, uint8_t *p_buf, uint32_t buf_len, uint16_t timeout, uint32_t
*p_xfer_len) Send data on the CDC ACM serial emulation subclass.
a a a sl_usbd_cdc_ cm_write_ sync(uint8_t subcl ss_nbr, uint8_t *p_buf, uint32_t buf_len, a a a a sl_usbd_cdc_ sync_function_t sync_fnct, void *p_ sync_ rg)
Send data on the CDC ACM serial emulation subclass asynchronously.
a a a sl_usbd_cdc_ cm_get_line_control_st te(uint8_t subcl ss_nbr, uint8_t *p_line_ctrl)
Return the state of control lines.
a a a sl_usbd_cdc_ cm_get_line_coding(uint8_t subcl ss_nbr, sl_usbd_cdc_ cm_line_coding_t *p_line_coding)
Get the current state of the line coding.
a a a sl_usbd_cdc_ cm_set_line_coding(uint8_t subcl ss_nbr, sl_usbd_cdc_ cm_line_coding_t *p_line_coding)
Set a new line coding.
a a a sl_usbd_cdc_ cm_set_line_st te_event(uint8_t subcl ss_nbr, uint8_t events)
Set a line state event(s).
a a a a sl_usbd_cdc_ cm_cle r_line_st te_event(uint8_t subcl ss_nbr, uint8_t events)
Clear a line state event(s).

Copyright © 2025 Silicon Laboratories. Бардык укуктар корголгон.

63/174

USB Device ACM API
Макрос
#define SL_USBD_CDC_ACM_NBR_NONE 255u
МОДУЛЬ.
#define SL_USBD_CDC_ACM_PARITY_NONE 0u
PORT SETTINGS DEFINES.
#define SL_USBD_CDC_ACM_PARITY_ODD 1u #define SL_USBD_CDC_ACM_PARITY_EVEN 2u #define SL_USBD_CDC_ACM_PARITY_MARK 3u #define SL_USBD_CDC_ACM_PARITY_SPACE 4u #define SL_USBD_CDC_ACM_STOP_BIT_1 0u #define SL_USBD_CDC_ACM_STOP_BIT_1_5 1u #define SL_USBD_CDC_ACM_STOP_BIT_2 2u #define SL_USBD_CDC_ACM_CTRL_BREAK 0 01u
LINE EVENTS FLAGS DEFINES.
#define SL_USBD_CDC_ACM_CTRL_RTS 0 02u #define SL_USBD_CDC_ACM_CTRL_DTR 0 04u #define SL_USBD_CDC_ACM_STATE_DCD 0 01u #define SL_USBD_CDC_ACM_STATE_DSR 0 02u #define SL_USBD_CDC_ACM_STATE_BREAK 0 04u #define SL_USBD_CDC_ACM_STATE_RING 0 08u #define SL_USBD_CDC_ACM_STATE_FRAMING 0 10u #define SL_USBD_CDC_ACM_STATE_PARITY 0 20u #define SL_USBD_CDC_ACM_STATE_OVERUN 0 40u #define SL_USBD_CDC_ACM_CALL_MGMT_DEV 0 01u
CALL MANAGEMENT CAPABILITIES.
#define SL_USBD_CDC_ACM_CALL_MGMT_DATA_CCI_DCI 0 02u #define SL_USBD_CDC_ACM_CALL_MGMT_DATA_OVER_DCI 0 02u | 0 01u)
Function Documentation
sl_usbd_cdc_acm_init
sl_status_t sl_usbd_cdc_acm_init (void )
GLOBAL VARIABLES. Parameters
Copyright © 2025 Silicon Laboratories. Бардык укуктар корголгон.

64/174

USB Device ACM API

Type
жараксыз

Direction N/A

Argument Name

MACROS GLOBAL CONSTANTS FUNCTION PROTOTYPES CDC ACM FUNCTIONS

Initialize the CDC ACM serial emulation subclass.
Кайра берет

Returns SL_STATUS_OK on success or another SL_STATUS code on failure.

Description

sl_usbd_cdc_acm_create_instance

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

Add a new instance of the CDC ACM serial emulation subclass.
Параметрлер

Type
uint16_t
uint16_t

Direction Argument Name

Description

Жок

line_state_interval Line state notification interval in milliseconds (value must

be a power of 2).

Жок

call_mgmt_capabilities Call Management Capabilities bitmap. OR’ed of the

following flags:

SL_USBD_CDC_ACM_CALL_MGMT_DEV Device handles call management itself. SL_USBD_CDC_ACM_CALL_MGMT_DATA_CCI_DCI Device can send/receive call management information over a Data Class interface.

sl_usbd_cdc_acm_callbacks_t N/A
*

uint8_t *

Жок

p_acm_callbacks p_subclass_nbr

Optional pointers to callback functions to be called on various events.
Param to variable that will receive CDC ACM serial emulation subclass instance number.

Кайра берет

Return SL_STATUS_OK on success or another SL_STATUS code on failure.

sl_usbd_cdc_acm_add_to_configuration

sl_status_t sl_usbd_cdc_acm_add_to_configuration (uint8_t subclass_nbr, uint8_t config_nbr)

Add a CDC ACM subclass class instance into USB device configuration.
Параметрлер

Type
uint8_t uint8_t

Direction N/A N/A

Argument Name
subclass_nbr config_nbr

Description CDC ACM serial emulation subclass instance number. Configuration index to add new test class interface to.

Кайра берет

Copyright © 2025 Silicon Laboratories. Бардык укуктар корголгон.

65/174

USB Device ACM API
Returns SL_STATUS_OK on success or another SL_STATUS code on failure.

sl_usbd_cdc_acm_is_enabled

sl_status_t sl_usbd_cdc_acm_is_enabled (uint8_t subclass_nbr, bool * p_enabled)

Get the CDC ACM serial emulation subclass enable state.
Параметрлер

Type

Багыт

Argument Name

Description

uint8_t N/A

subclass_nbr CDC ACM serial emulation subclass instance number.

bool * N/A

p_enabled

Boolean to a variable that will receive enable status. The variable is set to true, CDC ACM serial emulation is enabled. The va

Документтер / Ресурстар

SILICON LABS USB Device Stack [pdf] Instruction Manual
USB Device Stack, Device Stack, Stack

Шилтемелер

Комментарий калтырыңыз

Сиздин электрондук почта дарегиңиз жарыяланбайт. Талап кылынган талаалар белгиленген *