USB tækjastafla
Tæknilýsing
- USB útgáfa: 1.5.1
- Útgáfudagur: 21. júlí 2025
- Útgáfa af Simplicity SDK: 2025.6.1
Vara lokiðview
USB tækjapakkinn frá Silicon Labs býður upp á fjölhæfa og
Auðveld í notkun USB-tenging fyrir IoT verkefni, sem auðveldar
samskipti milli netvinnsluaðila og hýsingaraðila.
Eiginleikar
- Skilvirk USB tækjastafla
- Tilvalið fyrir IoT verkefni
- Stuðningur við samskipti milli netvinnsluaðila og
gestgjafar
Notkunarleiðbeiningar fyrir vöru
Stillingar USB-tækis
Stilltu USB-tækisstillingarnar í samræmi við verkefnið þitt
kröfur með því að vísa til kaflans um stillingar USB-tækja
í skjölunum.
Leiðbeiningar um forritun USB-tækja
Fylgdu leiðbeiningum um forritun USB-tækja til að skilja hvernig á að
forrita og hafa samskipti við USB tækið fyrir ýmsar
umsóknir.
Flokkar USB-tækja
Hlutinn USB tækjaflokkar býður upp á yfirlitview af mismunandi
flokkar eins og CDC ACM, HID, MSC SCSI og Vendor Class. Veldu
viðeigandi flokki miðað við virkni tækisins.
Úrræðaleit á USB-tækjum
Ef þú lendir í vandræðum með USB-tækið skaltu skoða leiðbeiningarnar
Úrræðaleit á USB-tækjum í kaflanum „Laggreining og villuleit“
ábendingar.
USB-gestgjafi fyrir Microsoft Windows stýrikerfið
Ef þú notar USB-tækið með Microsoft Windows stýrikerfi USB
Gestgjafi, vertu viss um að fylgja leiðbeiningunum sem gefnar eru upp í
skjölun fyrir óaðfinnanlega samþættingu.
Algengar spurningar
Sp.: Hvað eru algeng tdampfá tæki sem ég get smíðað með
þessi USB-stafla?
A: USB-stakkinn gerir þér kleift að smíða tæki eins og
USB-í-raðtengi millistykki, mýs eða lyklaborð, færanlegt geymslurými
tæki og sérsniðin tæki.
Sp.: Eru einhverjar sérstakar hugbúnaðarkröfur fyrir notkun þessa
USB tækjastakki?
A: Samhæfður hugbúnaður inniheldur Simplicity SDK, Simplicity
Studio, Simplicity Commander, GCC (GNU þýðendasafnið),
IAR innbyggð vinnuborð fyrir ARM og IAR EWARM.
Universal Serial Bus USB
Universal Serial Bus USB
USB yfirview Yfirview
Útgáfuupplýsingar USB
Upplýsingar og eiginleikar yfirview
Stillingar USB-tækis lokiðview
Leiðbeiningar um forritun USB-tækja yfirview
USB tækjaflokkar yfirview CDC ACM flokki lokiðview HID-flokkur yfirview MSC SCSI flokkur yfirview Flokkur söluaðila lokiðview
USB API API skjölun USB tækis API USB tækis ACM API a sl_usbd_cdc_ cm_line_coding_t sl_usbd_cdc_acm_callbacks_t USB tækis CDC API a sl_usbd_cdc_subcl ss_driver_t USB tækis kjarna API
sl_usbd_tæki_stilling_t sl_usbd_uppsetningar_kröfu_t
sl_usbd_cl ss_driver_t HID API fyrir USB tæki
sl_usbd_hid_callbacks_t MSC API fyrir USB tæki
a sl_usbd_msc_subcl ss_driver_t USB tæki MSC SCSI API
sl_usbd_msc_scsi_callbacks_t
Höfundarréttur © 2025 Silicon Laboratories. Allur réttur áskilinn.
1/174
Universal Serial Bus USB
sl_usbd_msc_scsi_lun_ pi
sl_usbd_msc_scsi_lun_info sl_usbd_msc_scsi_lun
USB tæki söluaðila forritaskil sl_usbd_vendor_callbacks_t
API skjölun Úrræðaleit á USB tæki
Yfirview USB-gestgjafi fyrir Microsoft Windows stýrikerfið
Yfirview
Höfundarréttur © 2025 Silicon Laboratories. Allur réttur áskilinn.
2/174
Yfirview
Yfirview
USB tæki
USB er eitt farsælasta samskiptaviðmót í sögu tölvukerfa og er í raun staðallinn fyrir tengingu jaðartækja við tölvur. USB tækjastafla Silicon Labs er USB tækjaeining sem er sérstaklega hönnuð fyrir innbyggð kerfi. Hún er smíðuð frá grunni með gæðum, stigstærð og áreiðanleika Silicon Labs og hefur farið í gegnum strangt staðfestingarferli til að uppfylla USB 2.0 forskriftina. Þessi skjöl lýsa því hvernig á að frumstilla, ræsa og nota USB tækjastafla Silicon Labs. Þar eru útskýrð hin ýmsu stillingargildi og notkun þeirra. Hún inniheldur einnig yfirlit yfir...view tækninnar, gerðir stillingarmöguleika, framkvæmdarferli og dæmiampdæmigerð notkun fyrir alla tiltæka flokka.
Til að hjálpa þér að skilja USB hugtökin fljótt, þá inniheldur skjölunin mörg dæmi.ampUSB-tengingar með grunnvirkni. Þessi dæmiamples mun veita þér ramma sem gerir þér kleift að smíða tæki fljótt. Þessi dæmiampLesin innihalda:
USB-í-raðtengi millistykki (flokkur samskiptatækja) Mús eða lyklaborð (flokkur mannviðmótstækja) Færanleg geymslutæki (flokkur fjöldageymslu) Sérsniðið tæki (flokkur söluaðila)
Eftirfarandi er lokiðview af skjölunum:
Upplýsingar og eiginleikar Stillingar USB-tækja Forritunarleiðbeiningar USB-tækja Flokkanir USB-tækja
CDC ACM flokkur HID flokkur MSC SCSI flokkur Framleiðandaflokkur Úrræðaleit USB tækis Microsoft Windows stýrikerfi USB hýsill
Höfundarréttur © 2025 Silicon Laboratories. Allur réttur áskilinn.
3/174
USB
USB
USB útgáfa 1.5.1 21. júlí 2025 – Útgáfuupplýsingar
Einfaldleika SDK útgáfa 2025.6.1
Skilvirkur USB-tækjapakki frá Silicon Labs býður upp á fjölhæfa og auðvelda USB-tengingu sem er tilvalin fyrir IoT verkefni, þar á meðal samskipti milli netvinnsluaðila og vélar. Smelltu hér til að sjá eldri útgáfur.
Útgáfuyfirlit
Helstu eiginleikar | Breytingar á forritaskilum | Villuleiðréttingar | Virkjun örgjörva
Helstu eiginleikar
Aðeins undirliggjandi breytingar á kerfinu.
API breytingar
Engin.
Villuleiðréttingar
Engin.
Flísavirkjun
Engin.
Helstu eiginleikar
Nýir eiginleikar | Úrbætur | Fjarlægðir eiginleikar | Úreltir eiginleikar
Nýir eiginleikar
Engin.
Aukabætur
Aðeins undirliggjandi breytingar á kerfinu.
Fjarlægðir eiginleikar
Engin.
Úreltir eiginleikar
Engin.
API breytingar
Ný forritaskil | Breytt forritaskil | Fjarlægð forritaskil | Úrelt forritaskil
Ný forritaskil
Höfundarréttur © 2025 Silicon Laboratories. Allur réttur áskilinn.
4/174
USB
Engin.
Breytt API
Engin.
Fjarlægðar forritaskil
Engin.
Úrelt forritaskil
Engin.
Villuleiðréttingar
Engin.
Flísavirkjun
Engin.
Umsókn Exampbreytingarnar
Nýtt Examples | Breytt dæmiamples | Fjarlægði dæmiamples | Úrelt dæmiamples
Nýtt Examples
Engin.
Breytt Examples
Engin.
Fjarlægt Examples
Engin.
Úrelt dæmiamples
Engin.
Áhrif útgáfubreytinga
Áhrifaryfirlýsingar | Leiðbeiningar um flutning
Áhrifaryfirlýsingar
Engin.
Flutningaleiðbeiningar
Engin.
Þekkt vandamál og takmarkanir
Engin.
Að nota þessa útgáfu
Höfundarréttur © 2025 Silicon Laboratories. Allur réttur áskilinn.
5/174
USB
Hvað er í útgáfunni? | Samhæfur hugbúnaður | Uppsetning og notkun | Hjálp og ábendingar
Hvað er í útgáfunni?
USB tækjastaflaforrit, t.d.amples
Samhæfur hugbúnaður
Hugbúnaður
Simplicity SDK Simplicity Studio Simplicity Commander GCC (GNU þýðendasafnið) IAR innbyggð vinnuborð fyrir ARM IAR EWARM
Samhæf útgáfa eða afbrigði
2025.6.0 5.11.0 1.18.2 (fylgir með Simplicity Studio) 12.2.1 (fylgir með Simplicity Studio) 9.40.1 (fylgir með Simplicity Studio)
Uppsetning og notkun
Til að koma þróun þinni af stað, sjáðu:
Leiðbeiningar um forritun USB-tækja. Skjöl um forritunarviðmót.
Nánari upplýsingar um samþættingu við örugga geymslu er að finna í Öruggt geymslurými.
Að endurtakaview Tilkynningar um öryggi og hugbúnað og stjórnaðu tilkynningastillingum þínum:
Farðu á https://community.silabs.com/. Skráðu þig inn með aðgangsupplýsingum þínum. Smelltu á prófílinn þinn.file táknið efst í hægra horninu á síðunni.
õ Veldu Tilkynningar úr fellivalmyndinni. ö Í hlutanum Tilkynningar skaltu fara í flipann Vörutilkynningar mínar til aðview Ráðgjöf um öryggi og hugbúnað í sögulegum tilgangi
tilkynningar
÷ Til að stjórna stillingum þínum skaltu nota flipann Stjórna tilkynningum til að sérsníða hvaða vöruuppfærslur og ráðleggingar þú vilt fá
fá.
Sjá hér ráðlagðar stillingar.
Til að læra meira um hugbúnaðinn í þessari útgáfu, skoðið skjölun okkar á netinu.
Hjálp og endurgjöf
Hafðu samband við þjónustudeild Silicon Labs. Til að nota „Spyrðu AI“ tólið okkar til að fá svör, sjá leitarreitinn efst á þessari síðu.
Athugið: Ask AI er tilraunakennt.
Fáðu hjálp frá forritarasamfélagi okkar.
SDK útgáfu- og viðhaldsstefna
Sjá útgáfu- og viðhaldsstefnu okkar fyrir SDK.
Höfundarréttur © 2025 Silicon Laboratories. Allur réttur áskilinn.
6/174
Yfirview
Yfirview
Tæknilýsing
Samræmist „Universal Serial Bus specification revision 2.0“ Innleiðir „Interface Association Descriptor Engineering Change Notice (ECN)“ Flutningsgerðir
Stýring á fjöldatruflunum USB-flokkum Samskiptatækjaflokkur (CDC) Ágripsstýringarlíkan (ACM) Mannleg tengiliðatæki (HID) Massgeymsluflokkur (MSC) Framleiðanda-sértækur flokkaramma
Eiginleikar
Stærðhæft til að innihalda aðeins nauðsynlega eiginleika til að lágmarka minnisnotkun Styður fulla hraða (12 Mbit/s) Styður samsett (fjölvirk) tæki Styður fjölstillingartæki Styður USB orkusparandi virkni (tæki bið og endurræsa) Algjör samþætting Mass Storage Class við Micrium stýrikerfið File Kerfiseining þróuð með CMSIS-RTOS2 abstraktlagi svo hún geti virkað með mismunandi stýrikerfum. Silicon Labs GSDK er með FreeRTOS og Micrium stýrikerfistengjum.
Höfundarréttur © 2025 Silicon Laboratories. Allur réttur áskilinn.
7/174
Yfirview
Yfirview
Stillingar USB-tækis
Í þessum kafla er fjallað um hvernig á að stilla USB-tæki Silicon Labs. Það eru þrír hópar stillingarbreytna, sem hér segir:
Kjarnastillingar USB-tækis Stillingarupplýsingar USB-tækis Stillingar fyrir vélbúnað USB-tækis
Kjarnastillingar USB-tækis
Hægt er að stilla USB tæki frá Silicon Labs við þýtingu með því að nota safn af #defines sem er staðsett í sl_usbd_core_config.h. fileUSB-tæki notar #defines þegar það er mögulegt því þau leyfa að stærðarkvarða kóða og gagna við þýtingu út frá því hvaða eiginleikar eru virkir. Þetta gerir kleift að aðlaga skrifminni (ROM) og handahófsaðgangsminni (RAM) USB-tækisins frá Silicon Labs út frá kröfum forritsins.
Mælt með: Byrjaðu stillingarferlið með sjálfgefnum gildum (feitletrað).
Kaflarnir hér að neðan eru skipulagðir eftir röðun í sniðmátsstillingunum file, sl_usbd_core_config.h.
Kjarnastillingarflokkar Stillingar
Kjarnastilling
Tafla – Kjarnastillingarstuðlar USB-tækja
Fasta lýsing
Sjálfgefið gildi
STÆRÐ SL_USBD_TA SK_STACK_
Stillir staflastærðina í bætum af USBD kjarnaverkefninu
4096
SL_USBD_TA SK_PORIT Y
Stillir forgang USBD kjarnaverkefnisins. Þetta er forgangur CMSIS-RTOS2.
osForgangshár
SL_USBD_A UTO_START _USB_TÆKI E
Ef þetta er virkt, þá ræsist USB-tækið sjálfkrafa um leið og kjarninn er ræstur og það USBD kjarnaverkefni er áætlað í fyrsta skipti. Ef þetta er óvirkt þarf forritið að kalla á sl_usbd_core_start_device() þegar það er tilbúið til að vera greint af USB-vélinni.
SL_USBD_C Heildarfjöldi stillinga sem verða bættar við í gegnum sl_usbd_add_configuration()
1
ONFIGURATI fallið.
ON_QUANTI
TY
Höfundarréttur © 2025 Silicon Laboratories. Allur réttur áskilinn.
8/174
Yfirview
Stöðugt
SL_USBD _INTERF ACE_QU ANTITY
SL_USBD _ALT_INT ERFACE_ QUANTI
TY
SL_USBD _INTERF ACE_GR
OUP_QU
ANTITY
SL_USBD _LÝSING
PTOR_Q
NÝTTU
SL_USBD _STRING _QUANTI
TY
SL_USBD _OPEN_E NDPOIN TS_QUALITY
Lýsing Heildarfjöldi USB-tengja sem bæta á við fyrir allar stillingar þínar. Þetta fer mjög eftir því hvaða flokki/flokkum er/eru notaðir. Nánari upplýsingar um hversu mörg tengi flokkstilvik þarfnast er að finna í kaflanum „Auðlindaþörf frá kjarna“ flokksins/flokkanna þinna.
Heildarfjöldi USB varaviðmóta sem bæta á við fyrir allar stillingar þínar. Þetta fer mjög eftir því hvaða flokki/flokkum er/eru notaðir. Þetta gildi verður alltaf að vera jafnt eða stærra en SL_USBD_INTERFACE_QUANTITY. Nánari upplýsingar um hversu mörg varaviðmót flokkstilvik þarfnast er að finna í hlutanum „Auðlindaþarfir frá kjarna“ fyrir flokkinn/flokkana þína.
Heildarfjöldi USB-tengihópa sem verða bætt við fyrir allar stillingar þínar. Þetta fer mjög eftir því hvaða flokki/flokkum er/eru notaðir. Nánari upplýsingar um hversu margir tengihópar krefjast klasatilviks er að finna í hlutanum „Auðlindaþarfir frá kjarna“ fyrir klasann/flokkana þína.
Heildarfjöldi endapunktalýsinga sem verða bætt við fyrir allar stillingar þínar. Þetta fer mjög eftir því hvaða flokka er notaður/notuð. Nánari upplýsingar um hversu marga endapunktalýsinga flokkstilvik þarfnast er að finna í „Fjöldi endapunkta“ í hlutanum „Auðlindaþarfir frá kjarna“ fyrir flokkinn/flokkana þína. Athugið að ekki þarf að taka tillit til stjórnendapunkta hér. Heildarfjöldi USB-strengja. Ef magnið er stillt á núll verður aðgerðin óvirk. Ef þessu er óvirkt verður tækið ekki geymt neina USB-lýsingarstrengi sem sendar eru frá forritinu. Þetta þýðir að gestgjafinn getur ekki sótt lýsingarstrengina (eins og framleiðanda og vöruheiti). Heildarfjöldi opinna endapunkta í hverri stillingu. Tæki þarfnast að minnsta kosti tveggja opinna endapunkta fyrir stjórnunarflutninga, en þú verður einnig að bæta við endapunktum flokksins/flokkanna sem notaðir eru. Nánari upplýsingar um hversu marga opna endapunkta flokkstilvik þarfnast er að finna í „Fjöldi endapunkta“ í hlutanum „Auðlindaþarfir frá kjarna“ fyrir flokkinn/flokkana þína.
Sjálfgefið gildi
10 10
2
20 30 20
Stillingar bekkjar
Klasar hafa sérstakar stillingar við þýtingu. Sjá nánari upplýsingar í USB tækjaklasa.
Stillingar fyrir upplýsingar um USB-tæki
Stillingar sl_usbd_device_config.h file endurflokkar #define-s við samantekt til að setja grunnupplýsingar um tækið þitt, svo sem framleiðanda-/vöruauðkenni, strengi tækja o.s.frv. Taflan hér að neðan lýsir hverri upplýsingastillingu sem er tiltæk í þessari stillingu file.
Tafla – Uppsetningarupplýsingar USB-tækis skilgreina
Stöðugt
SL_USBD_TÆKI RAFBÚNAÐARAÐKENNI
SL_USBD_TÆKI E_VÖRUAuðkenni
Lýsing Auðkennisnúmer söluaðila eins og það er afhent af USB Implementers Forum. Nánari upplýsingar um hvernig þú getur fengið auðkenni söluaðila er að finna á http://www.usb.org/developers/vendor/. Auðkennisnúmer vörunnar.
Höfundarréttur © 2025 Silicon Laboratories. Allur réttur áskilinn.
9/174
Yfirview
Stöðugt
Lýsing
SL_USBD_DEVICE_RELEASE Útgáfunúmer tækisins. _NUMBER
SL_USBD_DEVICE_MANUFA Strengur sem lýsir framleiðanda tækisins. Þessari stillingu er hunsað þegar
CTURER_STRING
Stillingin SL_USBD_STRING_QUANTITY er stillt á 0.
SL_USBD_DEVICE_PRODUC Strengur sem lýsir vörunni þinni. Þessari stillingu er hunsað þegar stillingin er
T_STRING
SL_USBD_STRING_QUANTITY er stillt á 0.
SL_USBD_DEVICE_SERIAL_N Strengur sem inniheldur raðnúmer tækisins. Þessari stillingu er hunsað þegar
NÚMER_STRING
Stillingin SL_USBD_STRING_QUANTITY er stillt á 0.
SL_USBD_DEVICE_LANGUA Auðkennisnúmer tungumálsins sem strengir tækisins þíns nota. Möguleg gildi eru:
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_FRANSKT
– SL_USBD_LANG_ID_ÞÝSKA
– SL_USBD_LANG_ID_GRÍSKA
– SL_USBD_LANG_ID_ÍTALSKA
– SL_USBD_LANG_ID_PORTÚGÚLA
– SL_USBD_LANG_ID_SANSKRÍT
Þessi stilling er hunsuð þegar stillingin SL_USBD_STRING_QUANTITY er stillt á 0.
Stillingar á USB-tæki fyrir vélbúnað
Eftir því hvaða Silicon Labs tæki þú notar, þá hefur þú hugsanlega GPIO pinna og tengi til að stilla fyrir USB VBUS Sense merki. Stillingarskilgreiningarnar eru í sl_usbd_hardware_config.h hausnum. file.
Stöðugt
SL_USBD_DRIVER_VBUS_SENSE_PORT SL_USBD_DRIVER_VBUS_SENSE_PIN-númer
Lýsing
GPIO tengi fyrir USB VBUS Sense merkið á borðinu þínu. GPIO pinni fyrir USB VBUS Sense merkið á borðinu þínu.
Höfundarréttur © 2025 Silicon Laboratories. Allur réttur áskilinn.
10/174
Yfirview
Yfirview
Leiðbeiningar um forritun USB-tækja
Í þessum kafla er útskýrt hvernig á að nota USB-tækiseininguna.
Upphafleg uppsetning USB-tækjaeiningar
Þessi hluti lýsir grunnskrefunum sem þarf til að frumstilla USB-tækiseininguna og til að bæta við, undirbúa og ræsa tæki. Frumstilling USB-tækiseiningarinnar Frumstilling USB-tækiskjarnans Frumstilling aCl ss(es) Bæta við USB-tækinu Smíði USB-tækisins Bæta við stillingum Bæta við USB-virkni(um) Ræsa USB-tækið
Atburðarkrókar
Að frumstilla USB-tækiseininguna
Frumstilling USB tækisins
Byrjið á að frumstilla kjarna B tækjaeiningarinnar með því að klára fallið sl_usbd_core_init(). Dæmið hér að neðan sýnir hvernig á að klára sl_usbd_core_init().
Example – Kallar sl_usbd_core_init()
sl_status_t status; status = sl_usbd_core_init(); if (status ! SL_STATUS_OK) { /* Villa kom upp. Villumeðhöndlun ætti að vera bætt við hér. */
}
Upphafsstilling á bekknum/bekkjunum
Eftir að kjarni USB-tækiseiningarinnar hefur verið frumstilltur verður þú að frumstilla hvern klasa sem þú ætlar að nota. Sjá kaflann „Forritunarhandbók“ í aðgangsstýringarskránni þinni (acl ss) fyrir frekari upplýsingar.
Að smíða USB tækið þitt
Bæta við stillingum
Eftir að þú hefur frumstillt tækið þitt geturðu byrjað að bæta við USB-virkni við það, byrjað með nýrri stillingu. Tæki verður að hafa að minnsta kosti eina stillingu. Til að bæta við stillingu(m) skaltu kalla á fallið aa sl_usbd_core_dd_configuration(). Þetta fall verður að vera kallað fyrir hverja stillingu sem þú vilt bæta við. Til dæmisampHér að neðan sýnir hvernig á að bæta við Full-speed.
Example – Bæti stillingum við tækið þitt
Höfundarréttur © 2025 Silicon Laboratories. Allur réttur áskilinn.
11/174
Yfirview
sl_status_t staða; uint8_t stillingarnúmer_fs;
/* Bætir við stillingu fyrir fullan hraða við tækið. */
staða = sl_usbd_core_add_configuration(0,
/* Engir sérstakir eiginleikar við stillingarnar. */
100u,
/* Hámarksorkunotkun: 100mA.
*/
SL_USBD_TÆKI_HRAÐI_FULLT,
/* Stillingar fyrir fullan hraða.
*/
„Stilling Bæta við týpuamp„Full-Speed stilling“
&stillingarnúmer_fs);
ef (staða ! SL_STATUS_OK) {
/* Villa kom upp. Villumeðhöndlun ætti að bæta við hér. */
}
Bæta við USB-virkni(um)
Eftir að þú hefur bætt að minnsta kosti einni stillingu við tækið þitt geturðu bætt viðmótum og endapunktum við tækið. Hver USB-flokkur hefur sínar eigin þarfir hvað varðar gerð viðmóts og endapunkta, magn og aðrar breytur. Silicon Labs USB tæki bætir viðmótum og endapunktum í þeim flokkum sem það býður upp á.
Í forritinu þínu geturðu búið til upphafsstað fyrir USB-klasa og bætt honum við stillingu. Nánari upplýsingar um hugtakið USB-tækjaklasa er að finna í USB-tækjaklasar. Athugið að þú getur búið til upphafsstað og bætt mörgum mismunandi klasatilvikum við stillingu til að búa til fjölnota (samsett) tæki.
FyrrverandiampLeiðin hér að neðan sýnir hvernig á að búa til klasatilvik og bæta því við stillingu.
Example – Að bæta við klasatilviki við tækið þitt
sl_status_t staða; uint8_t flokksnúmer;
/* Búið til tilvik af klasanum sem þið viljið nota.*/ /* Athugið að þetta fall getur haft fleiri viðfangsefni eftir klasanum. */ status = sl_usbd_ _create_instance(&class_nbr); if (status ! SL_STATUS_OK) { /* Villa kom upp. Villumeðhöndlun ætti að vera bætt við hér. */ }
/* Bætið klasatilvikinu við Full-Speed stillinguna. */ status = sl_usbd_ _add_to_configuration(class_nbr, /* Flokkanúmer skilað af sl_usbd_ _búa til_tilvik. */
config_nbr_fs); /* Stillingarnúmer skilað af sl_usbd_core_add_configuration(). */ if (status ! SL_STATUS_OK) { /* Villa kom upp. Villumeðhöndlun ætti að vera bætt við hér. */ }
Að ræsa USB tækið þitt
Sjálfgefið er að kjarnaverkefni USB-tækisins ræsi tækið sjálfkrafa eftir að upphafsstilling tækisins er lokið og kjarninn ræstur. Til að stjórna hvenær tækið er ræst og verður sýnilegt USB-vélinni skaltu nota stillinguna SL_USBD_AUTO_START_USB_DEVICE til að slökkva á sjálfvirkri ræsingaraðgerð. Þegar sjálfvirka ræsingaraðgerðin er óvirk, eftir að þú hefur smíðað/undirbúið tækið, geturðu ræst það og gert það sýnilegt USB-vélinni með því að kalla á fallið sl_usbd_core_start_device().
FyrrverandiampHér að neðan sýnir hvernig á að ræsa tækið með því að nota sl_usbd_core_start_device() fallið.
Example – Að ræsa tækið
Höfundarréttur © 2025 Silicon Laboratories. Allur réttur áskilinn.
12/174
Yfirview
sl_status_t staða;
status = sl_usbd_core_start_device(); if (status !SL_STATUS_OK) { /* Villa kom upp. Villumeðhöndlun ætti að vera bætt við hér. */ }
Atburðarkrókar
Kjarnaeining USB-tækisins býður upp á tvær veikar krókföll sem þú getur endurskilgreint í forritinu þínu. Tilgangur þeirra er að láta vita þegar strætó- og stillingaratburðir eiga sér stað.
Tafla – Aðgerðir USB viðburðartengingar
Viðburður
Lýsing
Strætó
Kallað er á þegar USB-bussatburður á sér stað
Stillingar kallaðar fram þegar USB-stillingaratburður á sér stað
Undirskrift virkni
`void sl_usbd_on_bus_event(sl_usbd_bus_event_t atburður);` void sl_usbd_on_config_event(sl_usbd_config_event_t atburður, uint8_t config_nbr);
Example – Event Hook Föll
ógilt sl_usbd_on_bus_event(sl_usbd_bus_event_t atburður) { rofi (atburður) { tilfelli SL_USBD_EVENT_BUS_CONNECT:}, en ekki sl_usbd_on_bus_event(atburður));
// kallað þegar USB snúra er stungið í hýsingarstýringu rofnar;
case SL_USBD_EVENT_BUS_DISCONNECT: // kallað þegar USB snúra er fjarlægð úr hýsilstýringu bilun;
case SL_USBD_EVENT_BUS_RESET: // kallað þegar vélin sendir endurstillingarskipunina break;
case SL_USBD_EVENT_BUS_SUSPEND: // kallað þegar gestgjafinn sendir suspend skipunina break;
case SL_USBD_EVENT_BUS_RESUME: // kallað þegar vélin sendir vekjaraskipunina break;
sjálfgefið: brot; } }
void sl_usbd_on_config_event(sl_usbd_config_event_t atburður, uint8_t stillingarnúmer) { switch (atburður) { case SL_USBD_EVENT_CONFIG_SET:}; Skilgreining: Tilfelli: Upplýsingar: Skilgreining: Upplýsingar: Upplýsingar: Upplýsingar: Upplýsingar: Skilgreining: Upplýsingar: Upplýsingar: Skilgreining: Upplýsingar: Upplýsingar: Skilgreining: **Skilgreining:** *Skilgreining:** *Þar sem þú velur „ ...
// kallað þegar vélin setur stillingarhlé;
case SL_USBD_EVENT_CONFIG_UNSET: // kallað þegar stilling er óstillt break;
sjálfgefið: brot; } }
Höfundarréttur © 2025 Silicon Laboratories. Allur réttur áskilinn.
13/174
Yfirview
Höfundarréttur © 2025 Silicon Laboratories. Allur réttur áskilinn.
14/174
Yfirview
Yfirview
Flokkar USB-tækja
USB-flokkarnir sem eru í boði í Silicon Labs USB Device eiga nokkra sameiginlega eiginleika. Í þessum kafla er útskýrt hverjir eiginleikarnir eru og samspil þeirra við kjarnalagið.
Nánari upplýsingar um tiltekinn bekk er að finna í eftirfarandi:
CDC ACM flokkur HID flokkur MSC SCSI flokkur Söluaðilaflokkur
Um klasatilvik
USB-klasarnir sem eru í boði í USB Device nota hugtakið klasatilvik. Klasatilvik táknar eitt fall innan tækis. Fallið getur verið lýst með einu viðmóti eða með hópi viðmóta og tilheyrir ákveðnum klasa.
Hver USB-klasaútfærsla hefur nokkrar sameiginlegar stillingar og aðgerðir, byggðar á hugmyndinni um klasatilvik. Algengar stillingar og aðgerðir eru kynntar í töflunni hér að neðan. Í dálkheitinu „Stöðvar eða aðgerðir“ er hægt að skipta út staðgenglinum XXXX fyrir nafn klasans: CDC, HID, MSC, CDC_ACM eða VENDOR (Vendor fyrir aðgerðir).
Tafla – Fastar og föll sem tengjast hugtakinu margvísleg tilvik klasa
Fasti eða fall
SL_USBD_XXXX_CL ASS_INS TANCE_QUANTITY
SL_USBD_XXXX_CONFIGUR ATION_QUANTITY
sl_usb d _XXXX_create _insta nce ()
sl_usbd_XXXX_add_to_conf Iguration()
Lýsing
Stillir hámarksfjölda klasatilvika.
Stillir hámarksfjölda stillinga. Við upphafsstillingu klasa verður búið til klasatilvik bætt við eina eða fleiri stillingar. Býr til nýtt klasatilvik.
Bætir núverandi klasatilviki við tilgreinda tækjastillingu.
Hvað varðar kóðaútfærslu, þá mun klasinn lýsa yfir staðbundinni alþjóðlegri breytu sem inniheldur stjórnunarbyggingu klasa. Þessi stjórnunarbygging er tengd einu klasatilviki og mun innihalda sérstakar upplýsingar til að stjórna klasatilvikinu.
Eftirfarandi myndir sýna nokkur dæmi. Hver mynd inniheldur dæmi um kóða.ampsem samsvarar atburðarásinni.
Mynd – Margar klasatilvik – FS-tæki (1 stilling með 1 viðmóti) táknar dæmigert USB-tæki. Tækið er fullhraðatæki (FS) og inniheldur eina stillingu. Virkni tækisins er lýst með einu viðmóti sem samanstendur af tveimur endapunktum fyrir gagnasamskipti. Eitt klasatilvik er búið til og gerir þér kleift að stjórna öllu viðmótinu með tengdum endapunkti.
Mynd – Margar klasatilvik – FS tæki 1 stilling með 1 viðmóti)
Höfundarréttur © 2025 Silicon Laboratories. Allur réttur áskilinn.
15/174
Yfirview
Kóðinn sem samsvarar myndinni – Margfeldi flokkstilvik – FS tæki (1 stilling með 1 viðmóti) er sýndur í dæminu.ample fyrir neðan.
Example – Margar klasaeinkenni – FS tæki 1 stilling með 1 viðmóti)
sl_status_t staða; uint8_t flokkur_0;
void app_usbd_XXXX_enable(uint8_t class_nbr) { /* Meðhöndla atburð sem virkjar flokk. */ }
void app_usbd_XXXX_disable(uint8_t class_nbr) { /* Meðhöndla atburð sem gerir flokk óvirkan. */ }
sl_usbd_XXXX_callbacks_t class_callbacks = { }
(1)
.virkja = app_usbd_XXXX_virkja,
.disable = app_usbd_XXXX_disable
};
staða = sl_usbd_XXXX_init();
(2)
ef (staða ! SL_STATUS_OK) {
/* $$$$ Taktu á villunni. */
}
staða = sl_usbd_XXXX_create_instance(&class_callbacks,
(3)
&flokkur_0);
ef (staða ! SL_STATUS_OK) {
/* $$$$ Taktu á villunni. */
}
staða = sl_usbd_XXXX_add_to_configuration(class_0, config_0);
(4)
ef (staða ! SL_STATUS_OK) {
/* $$$$ Taktu á villunni. */
}
(1) Hver klasi býður upp á safn af svarvirkjum fyrir tengingar-/aftengingartilvik fyrir tæki og fyrir tilvik sem eru sértæk fyrir klasa. Svarvirknin er send sem færibreyta þegar klasatilvikið er búið til með sl_usbd_XXXX_create_instance()
virka.
(1) Frumstilla klasann. Allar innri breytur, uppbyggingar og klasaport verða frumstilltar. Athugið að fallið Init() í sumum klasa gæti tekið við öðrum færibreytum.
Höfundarréttur © 2025 Silicon Laboratories. Allur réttur áskilinn.
16/174
Yfirview
(2) Búið til klasatilvikið, sem er class_0. Fallið sl_usbd_XXXX_create_instance() úthlutar klasastýringarkerfi sem tengist class_0. Eftir því hvaða klasa er um að ræða getur sl_usbd_XXXX_create_instance() haft viðbótarbreytur auk klasanúmersins sem tákna klasasértækar upplýsingar sem eru geymdar í klasastýringarkerfinu. aaa (3) Bætið klasatilvikinu, class_0, við tilgreint stillingarnúmer, config_0. sl_usbd_XXXX_add_to_configuration() mun búa til viðmót 0 og tengda IN og OUT endapunkta. Þar af leiðandi nær klasatilvikið yfir viðmót 0 og endapunkta þess. Öll samskipti sem fara fram á viðmóti 0 munu nota klasatilviksnúmerið, class_0. Mynd – Margfeldi klasatilvik – FS tæki (2 stillingar og mörg viðmót) táknar flóknara dæmi.ampt.d. Tæki sem virkar á fullum hraða er samsett úr tveimur stillingum. Tækið hefur tvær aðgerðir sem tilheyra sama flokki, en hvor aðgerð er lýst með tveimur viðmótum og hefur par af tvíátta endapunktum. Í þessu dæmiampt.d. eru tvö klasatilvik búin til. Hvert klasatilvik er tengt hópi af viðmótum, ólíkt mynd – Margfeldi klasatilvik – FS tæki (1 stilling með 1 viðmóti) og mynd – Margfeldi klasatilvik – FS tæki (2 stillingar og mörg viðmót) þar sem klasatilvikið var tengt einu viðmóti.
Mynd – Margar klasatilvik – Stillingar FS tækis 2 og mörg viðmót)
Kóðinn sem samsvarar myndinni – Margfeldi klasatilvik – FS tæki (2 stillingar og mörg tengi) er sýndur í dæminu.amphér að neðan. Villumeðhöndlun er sleppt til glöggvunar.
Example – Margar klasatilvik – Stillingar FS tækis 2 og mörg viðmót)
Höfundarréttur © 2025 Silicon Laboratories. Allur réttur áskilinn.
17/174
Yfirview
sl_status_t staða; uint8_t flokkur_0; uint8_t flokkur_1;
staða = sl_usbd_XXXX_init();
staða = sl_usbd_XXXX_create_instance(&class_0); staða = sl_usbd_XXXX_create_instance(&class_1);
staða = sl_usbd_XXXX_add_to_configuration(class_0, cfg_0); staða = sl_usbd_XXXX_add_to_configuration(class_1, cfg_0);
staða = sl_usbd_XXXX_add_to_configuration(class_0, cfg_1); staða = sl_usbd_XXXX_add_to_configuration(class_1, cfg_1);
(1)
(2) (3)
(4) (5)
(6) (6)
(1) Frumstilla klasann. Allar innri breytur, uppbyggingar og klasatengingar verða frumstilltar.
(2) Búið til klasatilvikið, class_0. Fallið sl_usbd_XXXX_create_instance() úthlutar klasastýringarkerfi sem tengist class_0.
(3) Búið til klasatilvikið, class_1. Fallið sl_usbd_XXXX_create_instance() úthlutar annarri klasastýringarbyggingu sem tengist class_1.
(4) Bætið klasatilvikinu, class_0, við stillinguna, cfg_0. sl_usbd_XXXX_add_to_configuration() mun búa til viðmót 0, viðmót 1, önnur viðmót og tengda IN og OUT endapunkta. Klasatilviksnúmerið, class_0, verður notað fyrir öll gagnasamskipti á viðmóti 0 eða viðmóti 1.
(5) Bætið klasatilvikinu, class_1, við stillinguna, cfg_0. sl_usbd_XXXX_add_to_configuration() mun búa til viðmót 2, viðmót 3 og tengda IN og OUT endapunkta. Klasatilviksnúmerið, class_1, verður notað fyrir öll gagnasamskipti á viðmóti 2 eða viðmóti 3.
(6) Bætið sömu klasatilvikum, class_0 og class_1, við hina stillinguna, cfg_1.
Hver klasi skilgreinir uppbyggingu af gerðinni sl_usbd_XXXX_callbacks_t. Tilgangur hennar er að gefa hverjum klasa safn af endurkallsföllum sem á að kalla á þegar atburður á sér stað. Tvö endurkallsföll eru til staðar í hverjum klasa. Þau eru sýnd í töflunni hér að neðan.
Tafla – Algengar afturkallsföll í flokki
Reitir Lýsing .enable Kallað þegar USB-klasatilvikið hefur verið virkjað. .disable Kallað þegar USB-klasatilvikið er óvirkt.
Undirskrift fallsins void app_usbd_XXXX_enable(uint8_t class_nbr); void app_usbd_XXXX_disable(uint8_t class_nbr);
Höfundarréttur © 2025 Silicon Laboratories. Allur réttur áskilinn.
18/174
Yfirview
Yfirview
USB tæki CDC ACM flokkur
USB tæki CDC grunnflokkur yfirview USB tæki CDC ACM flokkur Auðlindaþarfir frá kjarna USB tæki CDC ACM undirflokki Yfirview Stillingar fyrir USB tæki CDC ACM flokks Forritunarleiðbeiningar fyrir USB tæki CDC ACM flokks
Þessi hluti lýsir flokknum Communications Device Class (CDC) og tengdum undirflokki CDC sem USB Device stafla Silicon Labs styður. USB-tæki Silicon Labs styður nú undirflokkinn Abstract Control Model (ACM), sem er almennt notaður fyrir raðhermun.
CDC nær yfir ýmis fjarskipta- og netbúnað. Fjarskiptabúnaður nær yfir hliðræna mótald, hliðræna og stafræna síma, ISDN tengistykki o.s.frv. Til dæmisampNettæki innihalda ADSL og kapalmótald, Ethernet-millistykki og miðstöðvar. CDC skilgreinir ramma til að fella inn núverandi staðla fyrir samskiptaþjónustu, svo sem V.250 (fyrir mótald yfir símanet) og Ethernet (fyrir tæki í staðarneti), með því að nota USB-tengingu. Samskiptatæki sér um tækjastjórnun, símtalsstjórnun þegar þörf krefur og gagnaflutning.
CDC skilgreinir sjö meginflokka tækja. Hver hópur tilheyrir samskiptalíkani, sem getur innihaldið nokkra undirflokka. Hver hópur tækja hefur sína eigin forskriftarskjal auk grunnflokksins í CDC. Þessir sjö hópar eru:
Almenningssímanet (PSTN), tæki þar á meðal talbandsmótald, símar og raðhermir. ISDN-tæki (Integrated Services Digital Network), þar á meðal tengistykki og símar. Ethernet Control Model (ECM) tæki, þar á meðal tæki sem styðja IEEE 802 fjölskylduna (t.d. kapal- og ADSL-mótald, WiFi-millistykki). Asynchronous Transfer Mode (ATM) tæki, þar á meðal ADSL-mótald og önnur tæki tengd ATM-netum (vinnustöðvar, beinar, LAN-rofar). Þráðlaus farsímafjarskiptatæki (WMC), þar á meðal fjölnota fjarskiptatæki sem notuð eru til að stjórna radd- og gagnasamskiptum. Ethernet Emulation Model (EEM) tæki sem skiptast á Ethernet-rammaðri gögnum. Network Control Model (NCM) tæki, þar á meðal háhraða nettæki (High Speed Packet Access mótald, Line Terminal Equipment).
CDC og tengd undirflokksútfærsla uppfylla eftirfarandi forskriftir:
Universal Serial Bus, flokksskilgreiningar fyrir samskiptatæki, útgáfa 1.2, 3. nóvember 2010. Universal Serial Bus, samskipti, undirflokkur fyrir PSTN tæki, útgáfa 1.2, 9. febrúar 2007.
USB tæki CDC grunnflokkur yfirview
CDC tæki samanstendur af eftirfarandi tengjum til að útfæra samskiptamöguleika:
Samskiptaflokksviðmót (e. Communications Class Interface, CCI) ber ábyrgð á stjórnun tækja og, ef vill, símtalsstjórnun.
Tækjastjórnun gerir kleift að stilla og stjórna tækinu almennt og tilkynna um atburði til hýsilsins. Símtalsstjórnunin gerir kleift að koma á og ljúka símtölum. Símtalsstjórnun gæti verið margfölduð í gegnum DCI. CCI er skylda fyrir öll CDC tæki. Það auðkennir CDC virknina með því að tilgreina samskiptalíkanið sem CDC tækið styður. Viðmótið/viðmótin sem fylgja CCI geta verið hvaða skilgreint USB tengi sem er, svo sem hljóð eða viðmót sem er sértækt fyrir framleiðanda. Viðmótið sem er sértækt fyrir framleiðanda er táknað sérstaklega með DCI.
Gagnaflokksviðmót (DCI) ber ábyrgð á gagnaflutningi. Gögn sem send eru og/eða móttekin fylgja ekki ákveðinni reglu.
snið. Gögn geta verið hrágögn úr samskiptalínu, gögn sem fylgja sérsniði o.s.frv. Öll DCI-tengipunktarnir sem fylgja CCI-inu má líta á sem undirliggjandi viðmót.
CDC-tæki verður að hafa að minnsta kosti eitt CCI og núll eða fleiri DCI. Einn CCI og hvaða undirliggjandi DCI sem er veita saman eiginleika fyrir hýsilinn. Þessi eiginleiki er einnig kallaður fall. Í samsettum CDC-tæki gætirðu haft nokkra
Höfundarréttur © 2025 Silicon Laboratories. Allur réttur áskilinn.
19/174
Yfirview
virkni. Þess vegna væri tækið samsett úr nokkrum settum af CCI og DCI(s) eins og sýnt er á mynd – CDC samsett tæki.
Mynd – Samsett tæki CDC
CDC tæki mun líklega nota eftirfarandi samsetningu endapunkta:
Par af stjórnendapunktum IN og OUT sem kallast sjálfgefinn endapunktur. Valfrjáls endapunktur fyrir fjölda- eða truflun á IN. Par af endapunktum fyrir fjölda- eða ísókróna IN og OUT. Athugið að USB tækjastakkur Silicon Labs styður ekki ísókróna endapunkta eins og er.
Taflan hér að neðan sýnir notkun mismunandi endapunkta og með hvaða viðmóti CDC þeir eru notaðir.
Tafla – Notkun endapunkts CDC
Endapunktur
Stjórna IN
Stjórna OUT
Truflun eða magn Í magni eða ísókrón Í magni eða ísókrón
ÚT
Stefna
Tæki til hýsingar
Vél-til-tækis
Tæki til hýsingar
Tæki til hýsingar
Vél-til-tækis
Viðmótsnotkun
CCI
Staðlaðar beiðnir um upptalningu, beiðnir um sérstakar flokka, tæki
stjórnun og valfrjálst símtalsstjórnun.
CCI
Staðlaðar beiðnir um upptalningu, beiðnir um sérstakar flokka, tæki
stjórnun og valfrjálst símtalsstjórnun.
CCI
Tilkynningar um atburði, svo sem hringiskynjun, stöðu raðlínu, stöðu nets.
DCI
Óunnin eða sniðin gagnasamskipti.
DCI
Óunnin eða sniðin gagnasamskipti.
Flest samskiptatæki nota truflunarendapunkt til að tilkynna gestgjafanum um atburði. Ísókrón endapunktar ættu ekki að nota fyrir gagnaflutning þegar sérstakt samskiptareglur treysta á endursendingu gagna ef upp koma villur í USB-samskiptareglum. Ísókrón samskipti geta í eðli sínu tapað gögnum þar sem þau hafa engar endurtekningaraðferðir.
Sjö helstu samskiptalíkönin ná yfir nokkra undirflokka. Undirflokkur lýsir því hvernig tækið ætti að nota CCI til að sjá um tækjastjórnun og símtalsstjórnun. Taflan hér að neðan sýnir alla mögulega undirflokka og samskiptalíkanið sem þeir tilheyra.
Tafla – Undirflokkar CDC
Undirflokkur
Beinlínustýringarlíkan Óhlutbundið stýringarlíkan
Samskiptalíkan
PSTN
PSTN
Exampfjöldi tækja sem nota þennan undirflokk
Mótaldtæki sem eru stjórnað beint af USB-hýsilnum
Raðtengd hermunartæki, módemtæki sem stjórnað er með raðtengdum skipanasetti
Höfundarréttur © 2025 Silicon Laboratories. Allur réttur áskilinn.
20/174
Yfirview
Undirflokkur
Samskiptalíkan
Exampfjöldi tækja sem nota þennan undirflokk
Símastýringarlíkan
PSTN
Fjölrásastýring ISDN líkan
CAPI stjórnunarlíkan ISDN
Ethernet net ECM stjórnlíkan
Hraðbankakerfi
Hraðbanki
Stýrilíkan
Þráðlaus handtækjastýringarlíkan
WMC
Tækjastjórnun WMC
Beinlínulíkan fyrir farsíma
WMC
OBEX
WMC
Ethernet hermun EEM líkan
Netstýringarlíkan
NMR
Talsímatæki
Grunntengipunkta millistykki, aðaltengipunkta millistykki, símar
Grunntengipunkta millistykki, aðaltengipunkta millistykki, símar DOC-SIS kapalmótald, ADSL mótald sem styðja PPPoE hermun, Wi-Fi millistykki (IEEE 802.11-fjölskyldan), IEEE 802.3 millistykki ADSL mótald
Færanlegur endabúnaður sem tengist þráðlausum tækjum
Færanlegur endabúnaður sem tengist þráðlausum tækjum Færanlegur endabúnaður sem tengist þráðlausum tækjum
Færanlegur endabúnaður sem tengist þráðlausum tækjum Tæki sem nota Ethernet-ramma sem næsta flutningslag. Ekki ætlað fyrir leiðar- og internettengingartæki IEEE 802.3 millistykki sem flytja háhraða gagnabandvídd á neti
USB tæki CDC ACM flokksauðlindaþarfir frá Core
Í hvert skipti sem þú bætir við CDC ACM klasatilviki við USB stillingu með kalli á fallið sl_usbd_cdc_acm_add_to_configuration() , verða eftirfarandi auðlindir úthlutaðar úr kjarnanum.
Auðlind
Tengiviðmót Önnur tengiviðmót Endapunktar Tengiviðmótshópar
Magn
2 2 3 1
Athugið að þessar tölur eru fyrir hverja stillingu. Þegar þið setjið upp stillingargildin SL_USBD_INTERFACE_QUANTITY, SL_USBD_ALT_INTERFACE_QUANTITY, SL_USBD_INTERFACE_GROUP_QUANTITY og SL_USBD_DESCRIPTOR_QUANTITY, munið þið að taka tillit til þess hversu margar stillingar klasanum verða bættar við. Fyrir stillingargildið SL_USBD_OPEN_ENDPOINTS_QUANTITY, þar sem endapunktar eru aðeins opnaðir þegar stilling er stillt af hýsilnum, þarf aðeins að taka tillit til fjölda endapunkta sem þarf fyrir klasatilvik.
USB tæki CDC ACM undirflokkur Yfirview
Grunnflokkurinn fyrir CDC samanstendur af samskiptaflokksviðmóti (Communications Class Interface, CCI) og gagnaflokksviðmóti (Data Class Interface, DCI), sem fjallað er um ítarlega í grunnflokki USB Device CDC yfir.view Í þessum kafla er fjallað um CCI af gerðinni ACM. Það samanstendur af sjálfgefnum endapunkti fyrir stjórnunarþáttinn og truflunarendapunkti fyrir tilkynningarþáttinn. Tvær fjöldaendapunkta eru notaðar til að flytja ótilgreind gögn yfir DCI.
ACM undirflokkurinn er notaður af tveimur gerðum samskiptatækja:
Tæki sem styðja AT-skipanir (til dæmis talbandsmótald). Raðtengd hermunartæki sem einnig eru kölluð sýndar-COM-tengitæki.
Það eru nokkrar undirflokkssértækar beiðnir fyrir ACM undirflokkinn. Þær gera þér kleift að stjórna og stilla tækið. Heildarlistann og lýsingu á öllum ACM beiðnum er að finna í forskriftinni.
Höfundarréttur © 2025 Silicon Laboratories. Allur réttur áskilinn.
21/174
Yfirview Undirflokkur fyrir PSTN tæki, útgáfa 1.2, 9. febrúar 2007=, kafli 6.2.2.
Af þessum lista styður undirflokkur Silicon Labs9 ACM eftirfarandi:
Tafla – ACM beiðnir studdar af Silicon Labs
Lýsing á beiðni um undirflokk
SetjaSamskiptaeiginleikaSækjaSamskiptaeiginleikaHreinsaSamskiptaeiginleika
Vélbúnaðurinn sendir þessa beiðni til að stjórna stillingum fyrir tiltekinn samskiptaeiginleika. Ekki notað fyrir raðhermun.
Vélbúnaðurinn sendir þessa beiðni til að fá núverandi stillingar fyrir tiltekinn samskiptaeiginleika. Ekki notað fyrir raðhermun.
Vélbúnaðurinn sendir þessa beiðni til að hreinsa stillingar fyrir tiltekinn samskiptaeiginleika. Ekki notað fyrir raðhermun.
SetLineCoding
Vélbúnaðurinn sendir þessa beiðni til að stilla stillingar ACM tækisins: baud rate, fjölda stöðvunarbita, jöfnuðartegund og fjölda gagnabita. Fyrir raðhermun er þessi beiðni send sjálfkrafa af raðtengingu í hvert skipti sem þú stillir raðstillingar fyrir opið sýndar COM tengi.
GetLineCoding
Vélbúnaðurinn sendir þessa beiðni til að fá núverandi ACM stillingar (baud rate, stop bits, parity, data bits). Fyrir raðhermun senda raðtengi þessa beiðni sjálfkrafa þegar sýndar COM tengi er opnað.
SetControlLineState Vélin sendir þessa beiðni til að stjórna burðartækinu fyrir hálf-tvíhliða mótald og gefa til kynna hvort gagnatengingarbúnaður (DTE) sé tilbúinn eða ekki. Í tilviki raðtengingarhermunar er DTE raðtenging. Fyrir raðtengingarhermun leyfa ákveðnar raðtengingar þér að senda þessa beiðni með stýringum stilltum.
SetBreak
Vélbúnaðurinn sendir þessa beiðni til að búa til RS-232 stílbrot. Fyrir raðtengingu leyfa ákveðnar raðtengingar þér að senda þessa beiðni.
Undirflokkur Silicon Labs9 ACM notar IN-endapunktinn fyrir truflun til að láta vélina vita um núverandi stöðu raðlínunnar.
Línustaða er bitmap sem upplýsir gestgjafann um:
Gögnum fargað vegna umframmagns. Jöfnuðarvilla. Rammavilla. Staða hringmerkisgreiningar. Staða rofgreiningarkerfis. Staða sendisburðarbylgju. Staða móttökuburðarbylgju.
Útfærsla á undirflokki Silicon Labs9 ACM er í samræmi við eftirfarandi forskrift:
Universal Serial Bus, fjarskipti, undirflokkur fyrir PSTN tæki, útgáfa 1.2, 9. febrúar 2007.
Stillingar fyrir USB tæki CDC ACM flokk
Í þessum kafla er fjallað um hvernig á að stilla CDC ACM Class (Communication Device Class, Abstract Control Model). Það eru tveir hópar stillingarbreyta:
USB tæki CDC ACM flokkur Sértækar stillingar USB tæki CDC ACM flokkstilviksstillingar
USB tæki CDC ACM flokkur Sértækar stillingar fyrir forrit
Grunnflokkur CDC ACM undirflokkur
Grunnflokkur CDC
Í fyrsta lagi, til að nota CDC klasaeininguna fyrir USB tækið frá Silicon Labs, þarftu að aðlaga CDC stillinguna á þýtingartíma #define-s í samræmi við þarfir forritsins. Þær eru flokkaðar saman í sl_usbd_core_config.h hausnum. file undir CDC hlutanum. Tilgangur þeirra er að upplýsa USB tækjaeininguna um hversu marga USB CDC hluti á að úthluta.
Höfundarréttur © 2025 Silicon Laboratories. Allur réttur áskilinn.
22/174
Yfirview
Taflan hér að neðan lýsir hverjum stillingarreit sem er tiltækur í þessari stillingarbyggingu.
Tafla – Skilgreining á CDC stillingum fyrir USB tæki
Nafn stillingar
SL_USBD_CDC_CL SEM S_INSTANCE_QUANT ITY
SL_USBD_CDC_CONF IGURATION_QUANTI
TY
SL_USBD_CDC_GÖGN _VIÐMÖGULEIKI
TY
Lýsing
Fjöldi klasatilvika sem þú munt úthluta með kalli á fallið
sl_usbd_cdc_acm_create_instance().
Fjöldi stillinga. Hægt er að bæta ACM klasatilvikum við eina eða fleiri aaaa stillingar með því að smella á sl_usbd_cdc_acm_add_to_configuration().
Heildarfjöldi gagnaviðmóta (DCI) fyrir öll CDC-föllin. Hver CDC ACM-fall sem bætt er við fallið sl_usbd_cdc_acm_create_instance() mun bæta við gagnaviðmótinu.
Sjálfgefið gildi
2
1
2
ACM undirflokkur
Undirklasinn ACM hefur eina stillingu við þýtingu sem sýnd er í töflunni hér að neðan.
Tafla – Skilgreining á stillingum USB-tækja CDC ACM
Nafn stillingar
SL_USBD_CDC_ACM_SUBCL ASS_I NSTANCE_QUANTITY
Lýsing
Stillir fjölda undirklasatilvika sem þú munt úthluta með kalli á
fallið sl_usbd_cdc_acm_create_instance().
Sjálfgefið gildi
2
Stillingar á USB tæki CDC ACM flokkstilvikum
Þessi hluti skilgreinir stillingar sem tengjast raðbundnum klasatilvikum CDC ACM. Stofnun klasatilvika, lína, stöðubil, köll, stjórnunargetu p_acm_callbacks
Stofnun klasatilvika
Til að búa til raðflokkstilvik af CDC ACM skal kalla á fallið T a sl_usbd_cdc_acm_create_instance(). Þetta fall kallar á þrjár stillingarbreytur, eins og lýst er hér.
línu_stöðu_bil
Þetta er tímabilið (í millisekúndum) sem CDC ACM raðflokkstilvikið þitt mun tilkynna tilkynningar um línustöðu til T aa hýsilsins. Þetta gildi verður að vera í veldi tveggja (1, 2, 4, 8, 16, o.s.frv.).
símtalastjórnunarhæfni
Bitmap fyrir símtalsstjórnunareiginleika. Möguleg gildi fyrir bitmapinn eru eftirfarandi:
Gildi (biti)
SL_USBD_ACM_SERIAL_CALL_MGMT_DEV
SL_USBD_ACM_SERIAL_CALL_MGMT_DATA_CCI _DCI
Lýsing
Tækið sér sjálft um símtalsstjórnun. Tækið getur sent/móttekið upplýsingar um símtalsstjórnun í gegnum gagnaklassviðmót.
p_acm_tilbakakall
Höfundarréttur © 2025 Silicon Laboratories. Allur réttur áskilinn.
23/174
Yfirview
aa M aa p_acm_callbacks er bendill á uppbyggingu af gerðinni sl_usbd_cdc_acm_callbacks_t. Tilgangur hennar er að gefa CDC AC Cl ss safn af bakkallsföllum sem á að kalla á þegar CDC ACM atburður á sér stað. Ekki eru öll bakköll skyldubundin og núllbendill (NULL) er hægt að senda í bakkallsuppbyggingarbreytunni þegar bakkallsins er ekki þörf. Taflan hér að neðan lýsir hverjum stillingarreit sem er tiltækur í þessari stillingaruppbyggingu.
Tafla – sl_usbd_cdc_acm _callbacks_t Stillingarbygging
Fields
Lýsing
.virkja
Kallað þegar USB-klasatilvikið er virkjað
með góðum árangri.
.gera óvirkt
Kallað þegar USB klasatilvikið er óvirkt.
.line_control_changed Kallað er eftir þegar breyting á línustýringu berst.
line_coding_changed Kallað er eftir þegar breyting á línukóðun berst.
Undirskrift virkni
ógilt app_usbd_cdc_acm_enable(uint8_t undirflokkur_nbr);
ógilt app_usbd_cdc_acm_disable(uint8_t undirflokkur_nbr);
`void app_usbd_cdc_acm_line_control_changed(uint8_t undirflokksnúmer, uint8_t atburður, uint8_t atburður_chngd);` bool `app_usbd_cdc_acm_line_coding_changed(uint8_t undirflokksnúmer, undirflokksnúmer, sl_usbd_cdc_acm_line_coding_t`
*p_línukóðun
Sjá kaflann Skráning á bakköllum fyrir tilkynningar um atburði fyrir bakköllunarföll, t.d.ample.
Forritunarleiðbeiningar fyrir USB tæki CDC ACM flokk
Í þessum kafla er útskýrt hvernig á að nota CDC Abstract Control Model klasann. Upphafsstilling USB tækisins CDC ACM klasans Bæta við USB tækisins CDC ACM klasatilviki við tækið þitt Samskipti með CDC ACM klasanum
Frumstilling USB tækisins CDC ACM flokksins
Til að bæta virkni CDC ACM klasa við tækið þitt verður þú fyrst að frumstilla CDC grunnklasann og ACM undirklasann með því að fylla út föllin sl_usbd_cdc_init() og sl_usbd_cdc_acm_init(). Dæmið hér að neðan sýnir hvernig á að bæta við sl_usbd_cdc_init() og sl_usbd_cdc_acm_init() með því að nota sjálfgefin skjöl.
Example – Upphafsstilling CDC ACM flokks
sl_status_t staða;
status = sl_usbd_cdc_init(); if (status ! SL_STATUS_OK) { /* Villa kom upp. Bæta ætti við villumeðhöndlun hér. */
}
status = sl_usbd_cdc_acm_init(); if (status !SL_STATUS_OK) { /* Villa kom upp. Villumeðhöndlun ætti að vera bætt við hér. */
}
Bæta við USB tækis CDC ACM flokkstilviki við tækið þitt
Til að bæta við CDC ACM klasavirkni við tækið þitt verður þú að búa til tilvik og bæta því síðan við stillingar tækisins.
Að búa til CDC ACM klasatilvik
Höfundarréttur © 2025 Silicon Laboratories. Allur réttur áskilinn.
24/174
Yfirview
Að bæta CDC ACM klasatilvikinu við stillingar tækisins þíns Skráning á bakköllum vegna atburðatilkynninga
Að búa til CDC ACM klasatilvik
Búðu til CDC AC flokkunarkerfi með því að hringja í fallið sl_usbd_cdc_acm_create_instance(). Dæmið hér að neðan sýnir hvernig á að búa til CDC AC flokkunarkerfi með því að nota sl_usbd_cdc_acm_create_instance().
Example – Að búa til CDC ACM fall í gegnum sl_usbd_cdc_acm_create_instance()
uint8_t undirflokksnúmer; sl_status_t staða;
staða = sl_usbd_cdc_acm_create_instance(64u, SL_USBD_ACM_SERIAL_CALL_MGMT_DATA_CCI_DCI | SL_USBD_ACM_SERIAL_CALL_MGMT_DEV, NULL, &undirflokksnúmer);
ef (staða ! SL_STATUS_OK) { /* Villa kom upp. Villumeðhöndlun ætti að bæta við hér. */
}
Að bæta CDC ACM klasatilvikinu við stillingar tækisins
Eftir að þú hefur búið til CDC ACM klasatilvik geturðu bætt því við stillingu með því að kalla á fallið
sl_usbd_cdc_acm_add_to_configuration().
Dæmið hér að neðan sýnir hvernig á að keyra sl_usbd_cdc_acm_add_to_configuration().
Example – Kall á USBD ACM sl_usbd_cdc_acm_add_to_configuration()
sl_status_t staða;
staða = sl_usbd_cdc_acm_add_to_configuration(undirflokksnúmer,
(1)
config_nbr_fs);
(2)
ef (staða ! SL_STATUS_OK) {
/* Villa kom upp. Villumeðhöndlun ætti að bæta við hér. */
}
aaa (1) Skrá ss númer sem á að bæta við stillingarnar sem skilað er af sl_usbd_cdc_acm_create_instance(). (2) Stillingarnúmer (hér bætir því við Full-Speed stillingu).
Skráning á símtölum vegna tilkynninga um atburði
CDC ACM Serial klasinn getur tilkynnt forritinu þínu um allar breytingar á línustýringu eða kóðun í gegnum tilkynningar um bakköllunarföll. Hægt er að senda uppbyggingu bakköllunarfalls sem færibreytu við stofnun ACM tilviksins. Athugið að þessi bakköll eru valfrjáls. Dæmi:ample – Skráning á bakköllum CDC ACM sýnir notkun á skráningaraðgerðum bakköllunar. Dæmiample – Útfærsla á CDC ACM bakköllum sýnir t.d.ampLeiðbeiningar um útfærslu á endurkallsföllunum.
Example – Skráning á CDC ACM endurhringingum
Höfundarréttur © 2025 Silicon Laboratories. Allur réttur áskilinn.
25/174
Yfirview
uint8_t undirflokksnúmer; sl_status_t staða;
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, }; Tilvísun: Líkamsupplýsingar sem: Notandi: Tilvísun:
staða = sl_usbd_cdc_acm_create_instance(64u, SL_USBD_ACM_SERIAL_CALL_MGMT_DATA_CCI_DCI | SL_USBD_ACM_SERIAL_CALL_MGMT_DEV, &sli_usbd_cdc_acm_callbacks, &subclass_nbr);
ef (staða ! SL_STATUS_OK) { /* Villa kom upp. Villumeðhöndlun ætti að vera bætt við hér. */ }
Example – Innleiðing á CDC ACM bakköllum
bool app_usbd_cdc_acm_line_coding_changed (uint8_t)
undirflokksnúmer,
sl_usbd_cdc_acm_line_coding_t *p_line_coding)
{
uint32_t baudhraði_nýtt;
uint8_t jöfnuður_nýtt;
uint8_t stöðvun_bita_nýtt;
uint8_t gagnabitar_nýtt;
/* TODO Beita nýrri línukóðun.*/ baudrate_new = p_line_coding->BaudRate; parity_new = p_line_coding->Jöfnuður; stop_bits_new = p_line_coding->StopBits; data_bits_new = p_line_coding->DataBits;
skila (satt);
(1)
}
`void app_usbd_cdc_acm_line_control_changed` (uint8_t subclass_nbr, uint8_t event, uint8_t event_changed)
{ bool rts_state; bool rts_state_changed; bool dtr_state; bool dtr_state_changed; bool brk_state; bool brk_state_changed;
/* TODO Nota nýja línustýringu. */ rts_state = ((event & SL_USBD_CDC_ACM_CTRL_RTS) ! 0) ? true : false; rts_state_changed = ((event_changed & SL_USBD_CDC_ACM_CTRL_RTS) ! 0) ? true : false; dtr_state = ((event & SL_USBD_CDC_ACM_CTRL_DTR) ! 0) ? true : false; dtr_state_changed = ((event_changed & SL_USBD_CDC_ACM_CTRL_DTR) ! 0) ? true : false; brk_state = ((event & SL_USBD_CDC_ACM_CTRL_BREAK) ! 0) ? true : false; brk_state_changed = ((event_changed & SL_USBD_CDC_ACM_CTRL_BREAK) ! 0) ? satt : ósatt;
}
(1) Mikilvægt er að skila „ósatt“ í þetta fall ef línukóðun mistókst. Annars skal skila „true“.
Samskipti með CDC ACM flokknum
Raðnúmerastaða
Línukóðun Línustýring
Höfundarréttur © 2025 Silicon Laboratories. Allur réttur áskilinn.
26/174
Yfirview
Samskipti milli línuástands og undirflokks
Raðnúmerastaða
Línukóðun
USB-hýsillinn stýrir línukóðun (baudhraða, jöfnuður o.s.frv.) CDC ACM tækisins. Þegar þörf krefur sér forritið um að stilla línukóðunina. Tvær aðgerðir eru í boði til að sækja og stilla núverandi línukóðun, eins og lýst er í töflunni hér að neðan.
Tafla – Línukóðunarföll CDC ACM
Virka
sl_usbd_cdc_acm_g e t_line _kóðun ()
sl_usbd_cdc_acm_s e t_line _kóðun ()
Lýsing
Forritið þitt getur fengið núverandi línukóðunarstillingar annaðhvort frá vélinni með SetLineCoding beiðnum eða með fallinu sl_usbd_cdc_acm_set_line_coding().
Forritið þitt getur stillt línukóðunina. Vélstjórinn getur sótt stillingarnar með GetLineCoding beiðninni.
Línustýring
USB-hýsillinn stýrir línustýringunni (RTS og DTR pinna, rofmerki og svo framvegis) á CDC ACM tækinu. Þegar þörf krefur ber forritið þitt ábyrgð á að beita línustýringunum. Aðgerð er til staðar til að sækja og stilla núverandi línustýringar, eins og lýst er í töflunni hér að neðan.
Tafla – Stjórnunarvirkni CDC ACM línunnar
Virka
sl_usb d _cd c_acm_ge t_line _contr o l_state ()
Forritið þitt getur fengið núverandi stöðu stjórnlínunnar sem hýsillinn stillir með SetControlLineState beiðninni.
Línuríki
USB-hýsillinn sækir línustöðuna reglulega. Forritið þitt verður að uppfæra línustöðuna í hvert skipti sem hún breytist. Þegar nauðsyn krefur ber forritið þitt ábyrgð á að stilla línustöðuna. Tvær aðgerðir eru í boði til að sækja og stilla núverandi línustýringar, eins og lýst er í töflunni hér að neðan.
Tafla – CDC ACM línustöðuföll
Virka
sl_usb d _cd c_acm_se t _line _state _e ve nt()
sl_usbd_cdc_acm_cle ar_line _state _e ve nt()
Forritið þitt getur stillt hvaða línuástandsviðburð sem er. Þegar línuástandið er stillt er truflun IN send til hýsilsins til að láta vita af breytingu á raðlínuástandinu.
Forrit getur hreinsað tvö tilvik línuástandsins: flutningsburðargreiningu og móttökuburðargreiningu. Öll hin tilvikin hreinsast sjálfkrafa af undirflokki ACM raðhermunarinnar.
Samskipti við undirflokkstilvik
ACM undirflokkur Silicon Labs býður upp á eftirfarandi aðgerðir til að eiga samskipti við hýsilinn. Nánari upplýsingar um functions9 breyturnar er að finna í tilvísuninni um CDC ACM undirflokkinn Functions.
Heiti aðgerða
sl_usb d _cd c_acm_ lesa () sl_usb d _cd c_acm_skrifa ()
Rekstur
Tekur við gögnum frá hýsingaraðila í gegnum fjöldaútgangspunkt (OUT). Þessi aðgerð er að loka. Sendir gögn til hýsingaraðila í gegnum fjöldaútgangspunkt (IN). Þessi aðgerð er að loka.
Höfundarréttur © 2025 Silicon Laboratories. Allur réttur áskilinn.
27/174
Yfirview
Tafla – Yfirlit yfir samskiptaforritaskil CDC ACM aaaaa sl_usbd_cdc_acm_read() og sl_usbd_cdc_acm_write() bjóða upp á samstillta samskipti, sem þýðir að flutningurinn er að loka. Með öðrum orðum, þegar kallað er á fallið lokar forritið þar til flutningnum er lokið með eða án villu. Hægt er að tilgreina tímamörk til að forðast að bíða að eilífu. Til dæmisampMyndin hér að neðan sýnir les- og skriftilvikampsem tekur við gögnum frá hýsilnum með því að nota bulk OUT endapunktinn og sendir gögn til hýsilsins með því að nota bulk IN endapunktinn.
Skráning – Raðlesning og skrif fyrir t.d.ample
__ALIGNED(4) uint8_t rx_buf[2];
__ALIGNED(4) uint8_t tx_buf[2];
uint32_t
xfer_len;
sl_status_t
staða;
staða = sl_usbd_cdc_acm_read(undirflokksnúmer,
(1)
rx_buf,
(2)
2u,
0u,
(3)
&xfer_len);
ef (staða ! SL_STATUS_OK) {
/* Villa kom upp. Villumeðhöndlun ætti að bæta við hér. */
}
staða = sl_usbd_cdc_acm_write(undirflokksnúmer,
(1)
tx_buf,
(4)
2u,
0u,
(3)
&xfer_len);
ef (staða ! SL_STATUS_OK) {
/* Villa kom upp. Villumeðhöndlun ætti að bæta við hér. */
}
(1) Númer klasans sem búin var til með sl_usbd_cdc_acm_create_instance() veitir innri tilvísun í AC undirklasann til að beina flutningnum að réttum OUT eða IN endapunkti. (2) Forritið þitt verður að tryggja að biðminni sem gefið er fallinu sé nógu stórt til að rúma öll gögnin. Annars gætu samstillingarvandamál komið upp. (3) Til að forðast endalausa blokkun skaltu tilgreina tímamörk sem eru tjáð í millisekúndum. Gildið 809 lætur forritsverkefnið bíða að eilífu. (4) Forritið veitir frumstillta sendingarbiðminni.
Höfundarréttur © 2025 Silicon Laboratories. Allur réttur áskilinn.
28/174
Yfirview
Yfirview
USB tæki HID flokkur
USB tæki HID Class Overview USB tæki HID flokkur Auðlindaþarfir frá kjarna USB tækis HID flokksstilling USB tækis HID flokks Forritunarleiðbeiningar HID Reglubundnar inntaksskýrslur Verkefni
Þessi kafli lýsir HID-flokknum (Human Interface Device) sem USB-tæki Silicon Labs styður.
HID-flokkurinn nær yfir tæki sem menn nota til að stjórna tölvuaðgerðum, svo sem lyklaborð, mýs, benditæki og leikjatölvur.
HID-klasann er einnig hægt að nota í samsettum tækjum sem innihalda stýringar eins og hnappa, rofa, hnappa og rennistikur. Til dæmisampHljóð-, hljóðnema- og hljóðstyrksstýringar í hljóðheyrnartólum eru stjórnaðar af HID-virkni heyrnartólanna. HID-flokkurinn getur skipst á gögnum í hvaða tilgangi sem er með því aðeins að nota stjórn- og truflunarflutninga.
HID-flokkurinn er einn elsti og mest notaði USB-flokkurinn. Öll helstu stýrikerfin bjóða upp á innbyggðan rekla til að stjórna HID-tækjum, og þess vegna virka fjölbreytt tæki frá mismunandi framleiðendum með HID-flokknum. Þessi flokkur inniheldur einnig ýmsar gerðir af úttakseinkennum eins og LED-ljósum, hljóði, snertiviðbrögðum o.s.frv.
HID útfærslan uppfyllir eftirfarandi forskriftir:
Skilgreining á tækjaflokki fyrir notendaviðmót (HID), 27. júní 2001, útgáfa 1.11. Tafla yfir notkun HID fyrir Universal Serial Bus, 28. október 2004, útgáfa 1.12.
USB tæki HID Class Overview
Yfirview
HID tæki samanstendur af eftirfarandi endapunktum:
Par af stjórnunarendapunktum IN og OUT sem kallast sjálfgefinn endapunktur Truflun IN endapunktur Valfrjáls truflun OUT endapunktur
Taflan hér að neðan lýsir notkun mismunandi endapunkta:
Tafla – Notkun endapunkta HID-flokks
Notkun endapunktsstefnu
Stjórna IN
Stjórna
ÚT
Truflun INN
Trufla
ÚT
Tæki til hýsingar
Vél-til-tækis
Tæki til hýsingar
Vél-til-tækis
Staðlaðar beiðnir um upptalningu, flokkssértækar beiðnir og gagnasamskipti (inntak, eiginleikaskýrslur sendar til hýsilsins með GET_REPORT beiðni). Staðlaðar beiðnir um upptalningu, flokkssértækar beiðnir og gagnasamskipti (úttak, eiginleikaskýrslur mótteknar frá hýsilnum með SET_REPORT beiðni). Gagnasamskipti (inntak og eiginleikaskýrslur).
Gagnasamskipti (skýrslur um úttak og eiginleika).
Skýrsla
Höfundarréttur © 2025 Silicon Laboratories. Allur réttur áskilinn.
29/174
Yfirview
Vélbúnaður og HID-tæki skiptast á gögnum með skýrslum. Skýrsla inniheldur sniðin gögn sem veita upplýsingar um stýringar og aðra efnislega þætti HID-tækisins. Notandinn getur stjórnað stýringu og stýrir þætti tækisins. Til dæmisampStýring getur verið hnappur á mús eða lyklaborði, rofi o.s.frv. Aðrar einingar upplýsa notandann um stöðu ákveðinna eiginleika tækisins. Til dæmisampLED-ljós á lyklaborði láta notandann vita ef hástafalás er virkur, talnalyklaborðið er virkt o.s.frv.
Vélstjórinn skilur snið og notkun skýrslugagna með því að greina innihald skýrslulýsingar. Greining á innihaldinu er framkvæmd með þáttara. Skýrslulýsingin lýsir gögnum sem hver stýring í tæki veitir. Hún er samsett úr upplýsingum um tækið og samanstanda af 1 bæti forskeyti og breytilegri lengd.
gögn. Nánari upplýsingar um snið hlutarins er að finna í
1.11=, kafli 5.6 og 6.2.2.
Það eru þrjár megingerðir af hlutum:
Aðalatriðið skilgreinir eða flokkar ákveðnar gerðir af gagnareitum.
Altækt atriði lýsir gagnaeinkennum stýringar.
Staðbundið atriði lýsir gagnaeinkennum stýringar.
Hver tegund hlutar er skilgreind með mismunandi föllum. Hlutarfall má einnig kalla tagHlutfall má líta á sem undirhlut sem tilheyrir einni af þremur helstu gerðum hluta. Taflan hér að neðan gefur stutta yfirsýn yfirview af aðgerðum item9s í hverri vörutegund. Fyrir ítarlega lýsingu á hlutunum í hverjum flokki, sjá
Tafla – Lýsing á virkni hlutar fyrir hverja gerð hlutar
Atriði Atriðartegund Virkni
Lýsing
Aðalinntak
Lýsir upplýsingum um gögn sem ein eða fleiri efnisleg stýringar veita.
Aðalúttak Lýsir gögnum sem send eru til tækisins.
Aðaleiginleiki
Lýsir upplýsingum um stillingar tækis sem sendar eru til eða mótteknar frá tækinu og hafa áhrif á heildarhegðun tækisins eða eins af íhlutum þess.
Atriði sem tengjast aðalsafnsflokki (inntak, úttak eða eiginleiki).
Aðalenda lokar safni. Safn
Höfundarréttur © 2025 Silicon Laboratories. Allur réttur áskilinn.
30/174
Yfirview
Atriði Atriðartegund Virkni
Lýsing
Alþjóðleg notkunarsíða
Gefur til kynna aðgerð sem er tiltæk innan tækisins.
Alþjóðleg rökfræði Skilgreinir neðri mörk tilkynntra gilda í rökfræðilegum einingum. Lágmark
Alþjóðleg rökfræði Skilgreinir efri mörk tilkynntra gilda í rökfræðilegum einingum. Hámark
Alþjóðlegt efnislegt gildi Skilgreinir neðri mörk tilkynntra gilda í efnislegum einingum, þ.e. rökrétt lágmark, gefið upp í efnislegum einingum.
Alþjóðlegt efnislegt gildi Skilgreinir efri mörk tilkynntra gilda í efnislegum einingum, þ.e. rökrétt hámarksgildi tjáð í efnislegum einingum.
Alþjóðleg eining
Gefur til kynna veldisvísinn með grunntölu 10. Veldisvísirinn er á bilinu -8 til +7.
Exponent
Alþjóðleg eining
Gefur til kynna einingu skráðra gilda. Til dæmis lengd, massa, hitastigseiningar o.s.frv.
Stærð alþjóðlegrar skýrslu
Gefur til kynna stærð skýrslureitanna í bitum.
Alþjóðlegt skýrsluauðkenni Gefur til kynna forskeytið sem bætt var við tiltekna skýrslu.
Fjöldi alþjóðlegra skýrslna
Gefur til kynna fjölda gagnareita fyrir hlut.
Alþjóðlegt átak
Setur afrit af alþjóðlegu töflunni yfir stöðu hlutar á örgjörvastaflan.
Alþjóðlegt popp
Skiptir út töflunni yfir stöðu hlutarins fyrir síðustu uppbyggingu staflsins.
Staðbundin notkun
Táknar vísitölu sem tilgreinir tiltekna notkun innan notkunarsíðu. Hún gefur til kynna ráðlagða notkun söluaðila fyrir tiltekna stýringu eða hóp stýringa. Notkun veitir forritara upplýsingar um hvað stýring mælir í raun.
Staðbundin notkun
Skilgreinir upphafsnotkun sem tengist fylki eða bitmap.
Lágmark
Staðbundin notkun
Skilgreinir notkun lokatölu sem tengist fylki eða bitmap.
Hámark
Staðbundinn tilnefningaraðili Ákvarðar líkamshlutann sem notaður er fyrir stýringu. Vísirinn vísar á tilnefningu í efnislegu
Vísitala
lýsingarorð.
Staðbundinn tilnefningarorð Skilgreinir vísitölu upphafstilnefningarorðsins sem tengist fylki eða bitmap. Lágmark
Staðbundinn tilnefningarorð Skilgreinir vísitölu lokatilnefningarorðsins sem tengist fylki eða bitmap. Hámark
Staðbundinn strengjavísitala
Strengjavísitala fyrir strengjalýsingu. Hún gerir kleift að tengja streng við tiltekið atriði eða stýringu.
Staðbundinn strengur
Tilgreinir fyrstu strengvísitöluna þegar hópur raðbundinna strengja er úthlutað til stýringa í fylki.
Lágmarks- eða bitmap-mynd.
Staðbundið Staðbundið
Hámark strengs
Afmörkun
Tilgreinir síðustu strengvísitöluna þegar hópur raðstrengja er úthlutaður til stýringa í fylki eða bitmap.
Skilgreinir upphaf eða endi safns af staðbundnum hlutum.
Gögn í control9s verða að skilgreina að minnsta kosti eftirfarandi atriði:
Inntak, úttak eða eiginleiki Aðalatriði Notkun Staðbundin vara Notkun Síða Altæk vara Lágmarksrök Altæk vara Hámarksrök Altæk vara Skýrslustærð Altæk vara
Höfundarréttur © 2025 Silicon Laboratories. Allur réttur áskilinn.
31/174
Yfirview
Fjöldi skýrslu Alþjóðlegt atriði Taflan hér að neðan sýnir framsetningu á innihaldi lýsingar í Músarskýrslu frá sjónarhóli HID-þáttara hýsilsins. Músin hefur þrjá hnappa (vinstri, hægri og hjól). Kóðinn sem kynntur er í dæminuampHér að neðan er kóðaútfærsla sem samsvarar þessari framsetningu á lýsingu músarskýrslunnar.
Mynd – Lýsingarefni skýrslunnar úr HID-þáttara hýsingaraðila View
(1) Hlutfallið Notkunarsíða tilgreinir almenna virkni tækisins. Í þessu dæmiampHID tækið tilheyrir
almenn skrifborðsstýring.
(2) Safnforritið flokkar aðalatriði sem hafa sameiginlegt hlutverk og kunna að vera kunnugleg forritum. Á myndinni er hópurinn samsettur úr þremur aðalatriðum inntaks. Fyrir þetta safn er ráðlögð notkun stýringa mús eins og gefið er til kynna með notkunaratriðinu. (3) Hægt er að nota innfelld söfn til að gefa frekari upplýsingar um notkun einstakra stýringa eða hóps stýringa fyrir forrit. Í þessu dæmiampSafnið, efnislegt gagnamagn, sem er innfellt í söfnunarforritið, er samsett úr sömu þremur inntaksatriðum og mynda söfnunarforritið. Safnið efnislegt gagnamagn er notað fyrir safn gagnaþátta sem tákna gagnapunkta sem safnað er á einum rúmfræðilegum punkti. Í dæminuampÞ.e., ráðlagða notkunin er bendill eins og gefið er til kynna með notkunarliðnum. Hér vísar bendillinn til staðsetningarhnita músarinnar og kerfishugbúnaðurinn mun þýða músarhnitana þegar skjábendillinn hreyfist. (4) Innfelldar notkunarsíður eru einnig mögulegar og gefa frekari upplýsingar um ákveðinn þátt innan almennrar virkni tækisins. Í þessu tilfelli eru tveir inntaksliðir flokkaðir saman og samsvara hnöppum músarinnar. Einn inntaksliðurinn skilgreinir þrjá hnappa músarinnar (hægri, vinstri og hjól) hvað varðar fjölda gagnareita fyrir liðinn (skýrslutalningarliður), stærð gagnareitsins (skýrslustærðarliður) og möguleg gildi fyrir hvert gagnareit (lágmark og hámark notkunar, rökrétt lágmark og hámarksliðir). Hinn inntaksliðurinn er 13-bita fasti sem gerir kleift að samstilla inntaksskýrslugögnin á bætimörkum. Þessi inntaksliður er eingöngu notaður til fyllingar. (5) Önnur innfelld notkunarsíða sem vísar til almennrar skjáborðsstýringar er skilgreind fyrir staðsetningarhnita músarinnar. Fyrir þessa notkunarsíðu lýsir inntaksliðurinn gagnareitunum sem samsvara x- og y-ásnum eins og tilgreint er af tveimur notkunarliðum.
atriði.
Eftir að hafa greint efni fyrri skýrslulýsingar músarinnar getur HID-þáttari host9 túlkað inntaksskýrslugögnin sem tækið sendi með truflun á IN-flutningi eða sem svar við GET_REPORT beiðni. Inntaksskýrslugögnin sem samsvara skýrslulýsingu músarinnar sem sýnd er á myndinni – Efni skýrslulýsingar frá HID-þáttara hýsilsins. View is
Höfundarréttur © 2025 Silicon Laboratories. Allur réttur áskilinn.
32/174
Yfirview
eins og sýnt er í töflunni hér að neðan. Heildarstærð skýrslugagnanna er 4 bæti. Mismunandi gerðir skýrslna má senda yfir sama endapunkt. Til að greina á milli mismunandi gerða skýrslna er 1 bæti skýrsluauðkennisforskeyti bætt við gagnaskýrsluna. Ef skýrsluauðkenni var notað í fyrri...ampEf músarskýrslunni er lýst sem 5 bæti, þá væri heildarstærð skýrslugagnanna 5 bæti.
Tafla – Inntaksskýrsla send til hýsingaraðila og samsvarar stöðu þriggja hnappa músar
Bita Offset
0 1 2 3 16 24
Bitafjöldi 1 1 1 13 8 8
Lýsing Hnappur 1 (vinstri hnappur). Hnappur 2 (hægri hnappur). Hnappur 3 (hjólhnappur). Ekki notaður. Staðsetning á ás X. Staðsetning á ás Y.
Lýsing á efnislegum búnaði gefur til kynna þann hluta eða hluta líkamans sem ætlað er að virkja stýringu eða stýringar. Forrit getur notað þessar upplýsingar til að úthluta virkni til stýringar tækis. Lýsing á efnislegum búnaði er valfrjáls lýsing sem er sértæk fyrir hvern ákveðinn flokk og flest tæki hafa lítinn ávinning af því að nota hana. Sjá nánar í
USB tæki HID flokks auðlindaþarfir frá kjarna
Í hvert skipti sem þú bætir HID klasatilviki við USB stillingu með kalli á fallið sl_usbd_hid_add_to_configuration() , verða eftirfarandi auðlindir úthlutaðar úr kjarnanum.
Auðlind
Tengiviðmót Önnur tengiviðmót Endapunktar Tengiviðmótshópar
Magn
1 1 1 (2 ef truflun OUT endapunktur er virkur) 0
Athugið að þessar tölur eru fyrir hverja stillingu. Þegar þið setjið upp stillingargildin SL_USBD_INTERFACE_QUANTITY, SL_USBD_ALT_INTERFACE_QUANTITY, SL_USBD_INTERFACE_GROUP_QUANTITY og SL_USBD_DESCRIPTOR_QUANTITY, munið þið að taka tillit til þess hversu margar stillingar klasanum verða bættar við. Fyrir stillingargildið SL_USBD_OPEN_ENDPOINTS_QUANTITY, þar sem endapunktar eru aðeins opnaðir þegar stilling er stillt af hýsilnum, þarf aðeins að taka tillit til fjölda endapunkta sem þarf fyrir klasatilvik.
Stillingar fyrir HID-flokk USB-tækis
Tveir hópar stillingarbreyta eru notaðir til að stilla HID-klasann:
USB tæki HID flokkur Forritssértækar stillingar USB tæki HID flokkur Tilviksstillingar
USB tæki HID flokkur Forritssértækar stillingar
Til að nota HID-klasaeininguna fyrir USB-tæki Silicon Labs skaltu fyrst aðlaga stillingar HID-samsetningartímans í samræmi við þarfir forritsins. Þær eru flokkaðar saman í sl_usbd_core_config.h hausnum. file undir HID hlutanum. Þeim má skipta í tvo hluta, magnstillingar og HID verkstillingar. Tilgangur magnstillinganna er að upplýsa USB tækjaeininguna um hversu marga USB HID hluti á að úthluta.
Taflan hér að neðan lýsir hverri stillingu.
Tafla – Skilgreining á HID stillingum fyrir USB tæki
Höfundarréttur © 2025 Silicon Laboratories. Allur réttur áskilinn.
33/174
Yfirview
Nafn stillingar
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
Lýsing
Fjöldi klasatilvika sem þú munt úthluta með kalli á fallið
sl_usbd_hid_create_instance().
Fjöldi stillinga. Hægt er að bæta HID klasa tilvikum við eina eða fleiri aaaa stillingar með því að smella á fallið sl_usbd_hid_add_to_configuration(). Stillir heildarfjölda skýrsluauðkenna sem á að úthluta.
Stillir heildarfjölda Ýta/Poppa-hluta sem á að úthluta.
Teljaraverkefnið sér um allar HID-aðgerðir sem byggjast á teljara. Þessi stilling gerir þér kleift að stilla stærð stafla (í fjölda bæta). Forgangur HID-verkefnisins. Þetta er forgangur í CMSIS-RTOS2.
Sjálfgefið gildi
2 1 2 0 2048
osForgangshár
USB tæki HID flokkur Tilviksstillingar Flokkur Undirflokkur sköpunar tilvika
landskóði samskiptareglna
interval_in og interval_out p_hid_callback HID klasaskýrslulýsing DæmiampÞessi hluti skilgreinir stillingar sem tengjast HID klasatilvikum.
Stofnun klasatilvika
Til að búa til HID klasatilvik er gert með því að kalla á fallið aaa sl_usbd_hid_create_instance(), sem kallar á nokkur stillingarviðfangsefni sem lýst er hér að neðan.
undirflokkur
Kóði HID undirflokksins. Möguleg gildi eru:
SL_USBD_HID_SUBCL ASS_NONE SL_USBD_HID_SUBCL ASS_BOOT
HID-tæki sem notar undirflokkinn „boot“ verður að nota stöðluð skýrslusnið. Nánari upplýsingar um undirflokkakóða er að finna í kafla 4.2 í útgáfu 1.11 af HID-forskriftinni.
siðareglur
Samskiptareglur sem HID tækið notar. Möguleg gildi eru:
SL_USBD_HID_PROTOCOL_NONE SL_USBD_HID_PROTOCOL_KBD SL_USBD_HID_PROTOCOL_MOUSE
Ef HID-fallið þitt er mús, ætti að stilla samskiptareglurnar á SL_USBD_HID_PROTOCOL_MOUSE. Ef það er lyklaborð, ætti það að vera stillt á SL_USBD_HID_PROTOCOL_KBD. Annars ætti að stilla samskiptareglurnar á SL_USBD_HID_PROTOCOL_NONE. Nánari upplýsingar um undirflokkakóða er að finna í kafla 4.3 í HID-forskriftarútgáfu 1.11.
landskóði
Auðkenni landskóðans. Möguleg gildi eru:
SL_USBD_HID_LANDSKÓÐI_EKKI_STUDDAÐUR
Höfundarréttur © 2025 Silicon Laboratories. Allur réttur áskilinn.
34/174
Yfirview
SL_USBD_HID_LANDS_KÓÐI_ARABÍSK SL_USBD_HID_LANDS_KÓÐI_BELGISK SL_USBD_HID_LANDS_KÓÐI_KANADASK_TÍTÝMING SL_USBD_HID_LANDS_KÓÐI_KANADASK_FRANSK SL_USBD_HID_LANDS_KÓÐI_TÉKKLAND SL_USBD_HID_LANDS_KÓÐI_DANSK SL_USBD_HID_LANDS_KÓÐI_FINNSK SL_USBD_HID_LANDS_KÓÐI_FRANSK SL_USBD_HID_LANDS_KÓÐI_ÞÝSK SL_USBD_HID_LANDS_KÓÐI_GRÍSK SL_USBD_HID_LANDS_KÓÐI_HEBRESK SL_USBD_HID_LANDS_KÓÐI_UNGVERSKA SL_USBD_HID_LANDS_KÓÐI_ALÞJÓÐLEG SL_USBD_HID_LANDS_KÓÐI_ÍTALSK SL_USBD_HID_COUNTRY_CODE_JAPAN_KATAKANA SL_USBD_HID_COUNTRY_CODE_KOREAN SL_USBD_HID_COUNTRY_CODE_L ATIN_AMERICAN SL_USBD_HID_COUNTRY_CODE_NETHERL ANDS_DUTCH SL_USBD_HID_COUNTRY_CODE_NORSKE SL_USBD_HID_COUNTRY_CODE_PERSIAN_FARSI SL_USBD_HID_COUNTRY_CODE_PÓLK OG SL_USBD_HID_COUNTRY_CODE_PORTUGUESE SL_USBD_HID_COUNTRY_CODE_RUSSIA SL_USBD_HID_COUNTRY_CODE_SLOVAKIA SL_USBD_HID_COUNTRY_CODE_SPANISH SL_USBD_HID_COUNTRY_CODE_SWEDISH SL_USBD_HID_COUNTRY_CODE_SWISS_FRENCH SL_USBD_HID_COUNTRY_CODE_SWISS_GERMAN SL_USBD_HID_COUNTRY_CODE_SWITZERL OG SL_USBD_HID_COUNTRY_CODE_TAIWAN SL_USBD_HID_COUNTRY_CODE_TURKISH_Q SL_USBD_HID_COUNTRY_CODE_UK SL_USBD_HID_COUNTRY_CODE_US SL_USBD_HID_COUNTRY_CODE_YUG OSL AVIA SL_USBD_HID_COUNTRY_CODE_TURKISH_F
Landskóðinn gefur til kynna hvaða land vélbúnaðurinn er staðfærður fyrir. Flestir vélbúnaðurar eru ekki staðfærðir og því væri þessi gildi SL_USBD_HID_COUNTRY_CODE_NOT_SUPPORTED (0). Hins vegar geta lyklaborð notað þennan reit til að tilgreina tungumál lyklaborðanna.
Nánari upplýsingar um landskóðana er að finna í kafla 6.2.1 í HID forskriftarútgáfu 1.11.
innbilun og útbilun
interval_in og interval_out tákna könnunarbil IN truflunarendapunktsins og OUT truflunarendapunktsins.
Þetta táknar könnunartímabil endapunktsins, í millisekúndum. Stilling þessa gildis fer eftir því hversu oft tækið þitt er næmt fyrir því að búa til nýja skýrslu fyrir hýsilinn. Til dæmis, ef skýrsla er búin til á 16 millisekúndna fresti, ætti tímabilið að vera 16 eða minna.
Gildið verður að vera veldi af 2 (1, 2, 4, 8, 16, o.s.frv.).
`interval_out` gildi er hunsað ef `ctrl_rd_en` er stillt á `true`.
p_hid_callback
`aaaa p_hid_callback` er bendill á uppbyggingu af gerðinni sl_usbd_hid_callbacks_t. Tilgangur þess er að gefa HID Cl ss safn af endurkallsföllum sem á að kalla á þegar HID atburður á sér stað.
Höfundarréttur © 2025 Silicon Laboratories. Allur réttur áskilinn.
35/174
Yfirview
Ekki eru allar bakköll nauðsynlegar og núllpunktur (NULL) er hægt að senda inn í bakköllunaruppbyggingarbreytuna þegar bakköllunin er ekki nauðsynleg. Taflan hér að neðan lýsir hverjum stillingarreit sem er tiltækur í þessari stillingaruppbyggingu.
Tafla – sl_usbd_hid_callbacks_t Stillingarbygging
Fields
Lýsing
Undirskrift virkni
.virkja .óvirkja .get_report_desc
.get_phy_desc
.set_output_report .get_feature_report .set_feature_report
Kallað þegar USB-klasatilvikið er virkjað. Kallað þegar USB-klasatilvikið er óvirkt.
Kallað er á meðan HID-tilvikið er búið til til að senda skýrslulýsinguna þína. Fyrir hvert HID-fall verður þú að gefa upp skýrslulýsingu. Skýrslulýsingin gefur til kynna fyrir gestgjafanum hvernig reglubundna skýrslan sem tækið sendir skuli greind. Það getur verið krefjandi að skrifa þinn eigin skýrslulýsingu og þess vegna eru til nokkrar auðlindir sem geta hjálpað. Þetta er eina skyldubundna bakkallsfallið. Kallað er á meðan HID-tilvikið er búið til til að senda efnislýsinguna þína. Efnislýsingin er lýsing sem veitir upplýsingar um tiltekna hluta eða hluta mannslíkamans sem virkja stjórn eða stjórntæki. Nánari upplýsingar um efnislýsingar er að finna í kafla 6.2.3 í HID-forskriftarútgáfu 1.11. Efnislýsingin er valfrjáls og oftast hunsuð. Hægt er að stilla biðminni sem hér er sent á NULL og lengdina á 0. Kallað er á þegar gestgjafinn setur skýrslu eins og lýst er í skýrslulýsingunni þinni (þegar hann sendir skýrslu).
Kallað er eftir þegar hýsingaraðilinn óskar eftir eiginleikaskýrslu eins og lýst er í skýrslulýsingu þinni.
Kallað er þegar hýsingaraðilinn setur upp eiginleikaskýrslu eins og lýst er í skýrslulýsingu þinni.
`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
Sækir núverandi virka samskiptareglu.
`void app_usbd_hid_get_protocol(uint8_t class_nbr, uint8_t *p_protocol);`
.set_protocol
Stillir núverandi virka samskiptareglu.
`void app_usbd_hid_set_protocol(uint8_t class_nbr, uint8_t protocol`);
Lýsing á HID-flokksskýrslu, dæmiample
HID flokkur Silicon LabsampForritið býður upp á t.d.amplýsing á skýrslu fyrir einfalda mús. Til dæmisampHér að neðan sýnir lýsingu á músarskýrslu.
Example – Lýsing á músarskýrslu
truflanir 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)
Höfundarréttur © 2025 Silicon Laboratories. Allur réttur áskilinn.
36/174
Yfirview
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) Taflan sem táknar lýsingu músarskýrslu er frumstillt þannig að hver lína samsvarar stuttum lið. Sá síðarnefndi er myndaður úr 1 bæti forskeyti og 1 bæti gögnum. Sjá nánar í viewbreytt af HID-þáttara hýsilsins á mynd – Lýsingarefni skýrslunnar frá HID-þáttara hýsilsins View.
(2) Notkunarsíða fyrir almenna skjáborðsnotkun er notuð.
(3) Innan almennrar notkunarsíðu fyrir skjáborð, notkunin tag gefur til kynna að stjórntækin séu til að stjórna mús. Músasafn samanstendur venjulega af tveimur ásum (X og Y) og einum, tveimur eða þremur hnöppum.
(4) Músasöfnunin er hafin.
(5) Innan músasafnsins, notkun tag gefur til kynna nánar að músarstýringarnar tilheyri bendilsafninu. Bendilsafn er safn ása sem býr til gildi til að beina, gefa til kynna eða benda notanda á forrit.
(6) Safn bendla er hafið.
(7) Notkunarsíðan fyrir hnappa skilgreinir inntaksatriði sem samanstendur af þremur 1-bita reitum. Hver 1-bita reitur táknar músarhnappinn 1, 2 og 3 og getur skilað gildinu 0 eða 1.
(8) Inntaksatriðið fyrir notkunarsíðu hnappa er fyllt með 13 öðrum bitum.
(9) Önnur almenn notkunarsíða fyrir skjáborð er gefin upp til að lýsa stöðu músarinnar með ásunum X og Y. Inntaksatriðið samanstendur af tveimur 8-bita reitum þar sem gildið getur verið á bilinu -127 og 127.
(10) Vísbendingasafninu er lokað.
(11) Músasafnið er lokað.
USB.org HID síða
Höfundarréttur © 2025 Silicon Laboratories. Allur réttur áskilinn.
37/174
Yfirview
USB Implementers Forum (USB-IF) býður upp á tól sem kallast „HID Descriptor Tool“ ásamt öðrum upplýsingum um snið skýrslulýsinga. Sjá http://www.usb.org/developers/hidpage/ fyrir frekari upplýsingar.
Forritunarleiðbeiningar fyrir USB tæki HID Class
Í þessum kafla er útskýrt hvernig á að nota HID-klasann. Upphafsstilling HID-klasa USB-tækisins. Að bæta við tilviki af HID-klasa USB-tækisins við tækið þitt. Að eiga samskipti með HID-klasanum USB-tækisins.
Frumstilling HID-flokks USB-tækisins
Til að bæta HID Class virkni við tækið þitt verður þú fyrst að frumstilla klasann með því að kalla á fallið sl_usbd_hid_init(). Til dæmisampHér að neðan sýnir hvernig á að kalla á sl_usbd_hid_init() með sjálfgefnum færibreytum. Fyrir frekari upplýsingar um stillingarfæribreytur sem senda á til sl_usbd_hid_init(), sjá Sértækar stillingar fyrir USB tæki HID flokka.
Example – Kallar sl_usbd_hid_init()
sl_status_t staða;
status = sl_usbd_hid_init(); if (status ! SL_STATUS_OK) { /* Villa kom upp. Bæta ætti við villumeðhöndlun hér. */
}
Að bæta við USB tækis HID flokkstilviki við tækið þitt
Til að bæta HID-klasavirkni við tækið þitt verður þú að búa til tilvik og bæta því síðan við stillingar tækisins.
Að búa til HID klasatilvik
Búið til HID klasatilvik með því að kalla á fallið sl_usbd_hid_create_instance(). TilvikiðampHér að neðan er sýnt hvernig á að búa til einfalda músaraðgerð með sl_usbd_hid_create_instance() með því að nota sjálfgefin færibreytur. Fyrir frekari upplýsingar um stillingarfæribreytur sem senda á til sl_usbd_hid_create_instance(), sjá Stillingar USB Device HID Class Instance.
Example – Bæta við músarvirkni í gegnum sl_usbd_hid_create_instance()
Höfundarréttur © 2025 Silicon Laboratories. Allur réttur áskilinn.
38/174
Yfirview
/* Alþjóðlegir fastar. */ static const uint8_t app_usbd_hid_mouse_report_desc[] = {
SL_USBD_HID_GLOBAL_USAGE_PAGE + 1, SL_USBD_HID_USAGE_PAGE_GENERIC_DESKTOP_CONTROLS, SL_USBD_HID_LOCAL_USAGE + 1, SL_USBD_HID_CA_MOUSE, SL_USBD_HID_MAIN_COLLECTION + 1, SL_USBD_HID_COLLECTION_APPLICATION, SL_USBD_HID_LOCAL_USAGE + 1, SL_USBD_HID_CP_POINTER, SL_USBD_HID_MAIN_COLLECTION + 1, SL_USBD_HID_COLLECTION_PHYSICAL, SL_USBD_HID_GLOBAL_USAGE_PAGE + 1, SL_USBD_HID_USAGE_PAGE_BUTTON, SL_USBD_HID_LOCAL_USAGE_MIN + 1, 0 01, SL_USBD_HID_LOCAL_USAGE_MAX + 1, 0 03, SL_USBD_HID_GLOBAL_LOG_MIN + 1, 0 00, SL_USBD_HID_GLOBAL_LOG_MAX + 1, 0 01, SL_USBD_HID_GLOBAL_REPORT_COUNT + 1, 0 03, SL_USBD_HID_GLOBAL_REPORT_SIZE + 1, 0 01, SL_USBD_HID_MAIN_INPUT + 1, SL_USBD_HID_MAIN_DATA | SL_USBD_HID_MAIN_VARIABLE | SL_USBD_HID_MAIN_ABSOLUTE, SL_USBD_HID_GLOBAL_REPORT_COUNT + 1, 0 01, SL_USBD_HID_GLOBAL_REPORT_SIZE + 1, 0 0D, SL_USBD_HID_MAIN_INPUT + 1, SL_USBD_HID_MAIN_CONSTANT, SL_USBD_HID_GLOBAL_USAGE_PAGE + 1, SL_USBD_HID_USAGE_PAGE_GENERIC_DESKTOP_CONTROLS, SL_USBD_HID_LOCAL_USAGE + 1, SL_USBD_HID_DV_X, SL_USBD_HID_LOCAL_USAGE + 1, SL_USBD_HID_DV_Y, SL_USBD_HID_GLOBAL_LOG_MIN + 1, 0 81, SL_USBD_HID_GLOBAL_LOG_MAX + 1, 0 7F, SL_USBD_HID_GLOBAL_REPORT_SIZE + 1, 0 08, SL_USBD_HID_GLOBAL_REPORT_COUNT + 1, 0 02, SL_USBD_HID_MAIN_INPUT + 1, SL_USBD_HID_MAIN_DATA | SL_USBD_HID_MAIN_VARIABLE | SL_USBD_HID_MAIN_RELATIVE, SL_USBD_HID_MAIN_ENDCOLLECTION, SL_USBD_HID_MAIN_ENDCOLLECTION };
/* Staðbundnar breytur.*/ uint8_t class_nbr; sl_status_t status;
sl_usbd_hid_callbacks_t app_usbd_hid_callbacks = { NÚLL, NÚLL, app_usbd_hid_get_report_desc, NÚLL, NÚLL, NÚLL, NÚLL, NÚLL };
`void app_usbd_hid_get_report_desc(uint8_t class_nbr, const uint8_t **p_report_ptr, uint16_t *p_report_len`)
{ (ógilt)flokksnúmer;
*p_report_ptr = app_usbd_hid_mouse_report_desc; *p_report_len = sizeof(app_usbd_hid_mouse_report_desc); } } `*p_report_ptr = app_usbd_hid_mouse_report_desc;**
staða = sl_usbd_hid_create_instance(SL_USBD_HID_SUBCLASS_BOOT, SL_USBD_HID_PROTOCOL_MOUSE, SL_USBD_HID_COUNTRY_CODE_NOT_SUPPORTED, Ex_USBD_HID_Mouse_ReportDesc, sizeof(Ex_USBD_HID_Mouse_ReportDesc), 2u, 2u, satt, &app_usbd_hid_callbacks, &class_nbr);
Höfundarréttur © 2025 Silicon Laboratories. Allur réttur áskilinn.
39/174
Yfirview
/* Villa kom upp. Villumeðhöndlun ætti að bæta við hér. */}
Að bæta HID-klasatilviki við stillingar tækisins Eftir að þú hefur búið til HID-klasatilvik geturðu bætt því við stillingu með því að kalla á fallið
sl_usbd_hid_add_to_configuration().
FyrrverandiampHér að neðan sýnir hvernig á að kalla á sl_usbd_hid_add_to_configuration().
Example – Kallar sl_usbd_hid_add_to_configuration()
sl_status_t staða;
sl_usbd_hid_add_to_configuration(class_nbr,
(1)
stillingarnúmer_fs); (2)
ef (staða ! SL_STATUS_OK) {
/* Villa kom upp. Villumeðhöndlun ætti að bæta við hér. */
}
(1) Klasanúmer sem á að bæta við stillingarnar sem skilað er af sl_usbd_hid_create_instance(). (2) Stillingarnúmer (hér er því bætt við Full-Speed stillingu).
Samskipti með því að nota HID-flokkinn fyrir USB-tæki
Samskipti milli klasatilvika Samstillt samskipti Samskipti milli klasatilvika HID-klasinn býður upp á eftirfarandi aðgerðir til að eiga samskipti við hýsilinn.
Tafla – Yfirlit yfir HID Communication API
Heiti aðgerða
sl_usb d _hid _read ad _sy nc() sl_usb d _hid _write _sy nc()
Aðgerð Tekur við gögnum frá hýsilnum í gegnum truflunar-OUT endapunktinn. Þessi aðgerð blokkar. Sendir gögn til hýsilsins í gegnum truflunar-IN endapunktinn. Þessi aðgerð blokkar.
Samstillt samskipti Samstillt samskipti þýða að flutningurinn er í læsingu. Við aðgerðarkallið læsast forritin þar til flutningnum er lokið með eða án villu. Hægt er að tilgreina tímamörk til að forðast að bíða að eilífu. Til dæmisampMyndin hér að neðan sýnir les- og skrifakerfi sem tekur við gögnum frá hýsilnum með því að nota truflunar-OUT endapunktinn og sendir gögn til hýsilsins með því að nota truflunar-IN endapunktinn.
Example – Samstillt HID lestur og skrif
__ALIGNED(4) uint8_t rx_buf[2];
__ALIGNED(4) uint8_t tx_buf[2];
uint32_t
xfer_len;
sl_status_t
staða;
staða = sl_usbd_hid_read_sync(class_nbr,
(1)
(ógilt *)rx_buf,
(2)
2u,
0u,
(3)
&xfer_len);
ef (staða ! SL_STATUS_OK) {
/* Villa kom upp. Villumeðhöndlun ætti að bæta við hér. */
}
Höfundarréttur © 2025 Silicon Laboratories. Allur réttur áskilinn.
40/174
Yfirview
status =sl_usbd_hid_read_sync(class_nbr,(1)(void *)rx_buf,(2)2u,0u,(3)&xfer_len);if(status !SL_STATUS_OK){/* Villa kom upp. Villumeðhöndlun ætti að vera bætt við hér. */}
status =sl_usbd_hid_write_sync(class_nbr,(1)(void *)tx_buf,(4)2u,0u,(3)&xfer_len);if(status !SL_STATUS_OK){/* Villa kom upp. Villumeðhöndlun ætti að vera bætt við hér. */}
(1) Klasatilviksnúmerið sem búið var til úr sl_usbd_hid_create_instance() veitir innri tilvísun fyrir HID-klasann til að beina flutningnum að réttum truflunar-OUT eða IN endapunkti.
(2) Forritið verður að tryggja að biðminni sem fallið fær sé nógu stórt til að rúma öll gögnin. Annars gætu samstillingarvandamál komið upp. Innvortis er lesaðgerðin framkvæmd annað hvort með stjórnendapunktinum eða með truflunarendapunktinum, allt eftir því hvaða stjórnlestrarfáni er stilltur þegar sl_usbd_hid_create_instance() er kallað á.
(3) Til að forðast endalausa blokkun er hægt að tilgreina tímamörk, tjáð í millisekúndum. Gildið 809 lætur forritsverkefnið bíða að eilífu.
(4) Forritið býður upp á frumstillta sendingarbiðminnið.
HID reglubundin inntaksskýrsluverkefni
Til að spara bandvídd getur hýsillinn þaggað skýrslur frá truflunar-IN endapunkti með því að takmarka skýrslutíðni. Til að gera það verður hýsillinn að senda SET_IDLE beiðnina. HID klasinn sem Silicon Labs útfærir inniheldur innra verkefni sem virðir tíðnitakmörkun skýrslugerðar sem hægt er að beita á eina eða fleiri inntaksskýrslur. Myndin sýnir virkni verkefna með reglubundnum inntaksskýrslum.
Mynd – Reglubundnar skýrslur um inntak
(1) Tækið tekur við SET_IDLE beiðni. Þessi beiðni tilgreinir biðtíma fyrir tiltekið skýrsluauðkenni. Nánari upplýsingar um SET_IDLE beiðnina er að finna í
(2) Skýrsluauðkennisbygging (sem úthlutað er á upphafsstigi HID-flokksins) er uppfærð með biðtímalengdinni. Teljari biðtímalengdar er upphafsstilltur með gildi biðtímalengdar. Skýrsluauðkennisbyggingin er sett inn í lok tengds lista sem inniheldur inntaksskýrsluauðkennisbyggingar. Gildi biðtímalengdar er gefið upp í 4 ms einingum sem gefa bil frá 4 til 1020 ms.
Höfundarréttur © 2025 Silicon Laboratories. Allur réttur áskilinn.
41/174
Yfirview
Ef aðgerðaleysistíminn er styttri en könnunartímabil truflunar-IN-endapunktsins eru skýrslurnar búnar til á könnunartímabilinu.
(3) Á 4 ms fresti skoðar verkefnið fyrir reglubundið inntaksskýrsluauðkenni listann yfir inntaksskýrslur. Fyrir hvert inntaksskýrsluauðkenni framkvæmir verkefnið eina af tveimur mögulegum aðgerðum. Lengd verkefnistímabilsins passar við 4 ms eininguna sem notuð er fyrir biðtíma. Ef engar SET_IDLE beiðnir hafa verið sendar af hýsilnum er listinn yfir inntaksskýrslurauðkenni tómur og verkefnið hefur ekkert til að vinna úr. Verkefnið vinnur aðeins úr skýrsluauðkennum sem eru frábrugðin 0 og með biðtíma sem er meiri en 0.
(4) Fyrir tiltekið auðkenni inntaksskýrslu staðfestir verkefnið hvort biðtímanum sé lokið. Ef biðtímanum er ekki lokið er teljarinn lækkaður og engin inntaksskýrsla er send til vélarinnar.
(5) Ef biðtímanum er lokið (þ.e. biðtímateljarinn hefur náð núlli) er inntaksskýrsla send til vélarinnar með því að kalla á sl_usbd_hid_write_sync() fallið í gegnum IN-endapunktinn fyrir truflun.
(6) Gögnin í inntaksskýrslunni sem verkefnið sendir koma úr innri gagnabiðminni sem er úthlutað fyrir hverja inntaksskýrslu sem lýst er í skýrslulýsingunni. Forritsverkefni getur kallað á sl_usbd_hid_write_sync() fallið til að senda inntaksskýrslu. Eftir að inntaksskýrslugögnin hafa verið send uppfærir sl_usbd_hid_write_sync() innri biðminni sem tengist inntaksskýrsluauðkenni með gögnunum sem nýlega voru send. Síðan sendir verkefnið með reglubundnu inntaksskýrslunni alltaf sömu inntaksskýrslugögnin eftir hverja aðgerðaleysistíma og þar til forritsverkefnið uppfærir gögnin í innra biðminni. Það er einhver læsingarkerfi til að koma í veg fyrir spillingu á inntaksskýrsluauðkennisgögnunum ef breyting á sér stað á nákvæmlega þeim tíma sem reglubundið inntaksskýrsluverkefni sendir.
Höfundarréttur © 2025 Silicon Laboratories. Allur réttur áskilinn.
42/174
Yfirview
Yfirview
USB tæki MSC flokkur
USB tæki MSC flokkur yfirview USB tæki MSC flokks auðlindaþarfir frá kjarna USB tækis MSC flokksstillingar USB tækis MSC flokks forritunarleiðbeiningar USB tækis MSC flokks geymslubílstjórar
Þessi hluti lýsir þeim flokki geymslutækja (MSC) sem USB-tæki frá Silicon Labs styðja. MSC er samskiptaregla sem gerir kleift að flytja upplýsingar milli USB-tækis og hýsiltækis. Upplýsingarnar sem eru fluttar eru hvaðeina sem hægt er að geyma rafrænt, svo sem keyrsluforrit, frumkóði, skjöl, myndir, stillingargögn eða önnur texta- eða töluleg gögn. USB-tækið birtist sem ytri geymslumiðill fyrir hýsiltækið, sem gerir kleift að flytja... files með því að draga og sleppa.
A file kerfið skilgreinir hvernig fileeru skipulagðar á geymslumiðlinum. USB-geymsluflokkurinn krefst ekki neinna sérstakra gagna. file kerfi sem á að nota á samhæfðum tækjum. Í staðinn býður það upp á einfalt viðmót til að lesa og skrifa gagnageira með því að nota gagnsæja skipanasettið SCSI (Small Computer System Interface). Þannig geta stýrikerfi meðhöndlað USB-drifið eins og harðan disk og geta forsniðið það með hvaða sem er. file kerfi sem þeim líkar.
USB-geymslutæki styður tvær flutningsreglur, sem hér segir:
BOT-stýring/CBI-flutningur (Main-Only Transport) (eingöngu notaður fyrir disklingadrif)
Geymslurýmisflokkurinn (e. Mass storage device class) útfærir gegnsæja skipanasettið SCSI með því að nota eingöngu BOT samskiptareglurnar, sem þýðir að aðeins fjöldaendapunktar verða notaðir til að senda gögn og stöðuupplýsingar. MSC útfærslan styður margar rökfræðilegar einingar.
MSC innleiðingin er í samræmi við eftirfarandi forskriftir:
Universal Serial Bus Mass Storage Class Specification Yfirview, Útgáfa 1.3 5. september 2008. Universal Serial Bus Mass Storage Class Bulk-Only Transport, Útgáfa 1.0 31. september 1999.
USB tæki MSC aCl ss yfirview
Beiðnir um flokka fyrir endapunkta samskiptareglna, lítil tölvukerfisviðmót (SCSI)
Bókun
Í þessum kafla munum við ræða samskiptareglur um eingöngu flutning (e. Bulk-Only Transport, BOT) í geymsluflokknum. Samskiptareglurnar um eingöngu flutning hafa þrjár...tages:
Skipunarflutningurinn Gagnaflutningurinn Stöðuflutningurinn
Skipanir um fjöldageymslu eru sendar af hýsilnum í gegnum uppbyggingu sem kallast skipanablokkarumbúðir (e. Command Block Wrapper, CBW). Fyrir skipanir sem krefjast gagnaflutnings...tage.d. mun gestgjafinn reyna að senda eða taka á móti nákvæmum fjölda bæta frá tækinu eins og tilgreint er í lengdar- og fánareitunum í CBW. Eftir að gagnaflutningurinn er lokiðtage.d. reynir gestgjafinn að fá stöðuumbúðir skipunar (e. Command Status Wrapper, CSW) frá tækinu sem lýsir stöðu skipunarinnar sem og öllum gagnaleifum (ef...)
Höfundarréttur © 2025 Silicon Laboratories. Allur réttur áskilinn.
43/174
Yfirview
Fyrir skipanir sem innihalda ekki gagnaflutningtage.d. reynir gestgjafinn að taka á móti CSW beint eftir að CBW hefur verið sent. Samskiptareglurnar eru útskýrðar nánar á mynd – MSC-samskiptareglur.
Mynd – MSC-samskiptareglur
Endapunktar
Á tækjahliðinni, í samræmi við BOT forskriftina, samanstendur MSC af eftirfarandi endapunktum: Par af stjórnendapunktum IN og OUT sem kallast sjálfgefin endapunktur. Par af fjöldaendapunktum IN og OUT.
Taflan hér að neðan sýnir mismunandi notkun endapunktanna.
Tafla – Notkun MSC endapunkts
Endapunktur
Stýring IN Stýring ÚT Magn IN Magn ÚT
Stefna
Tæki til hýsingar Hýsingartæki til tækis Tæki til hýsingar Hýsingartæki til tækis
Notkun
Upptalning og beiðnir um sértæka MSC-flokka Upptalning og beiðnir um sértæka MSC-flokka Senda CSW og gögn Móttaka CBW og gögn
Beiðnir um námskeið
Tvær skilgreindar stjórnunarbeiðnir eru fyrir MSC BOT samskiptareglurnar. Þessar beiðnir og lýsingar á þeim eru nánar útskýrðar í töflunni hér að neðan.
Tafla – Beiðnir um geymsluflokk
Beiðnir um námskeið
Endurstilling á geymslu eingöngu í lausu
Lýsing
Þessi beiðni er notuð til að endurstilla geymslutækið og tengd viðmót. Þessi beiðni undirbýr tækið til að taka á móti næsta skipanablokk.
Höfundarréttur © 2025 Silicon Laboratories. Allur réttur áskilinn.
44/174
Yfirview
Beiðnir um námskeið
Lýsing
Fá hámark Þessi beiðni er notuð til að skila hæstu rökfræðilegu einingarnúmerinu (LUN) sem tækið styður. Til dæmisample, a
LUN
Tæki með LUN 0 og LUN 1 skilar gildinu 1. Tæki með eina rökfræðilega einingu skilar gildinu 0 eða stöðvar
beiðni. Hámarksgildið sem hægt er að skila er 15.
Lítil tölvukerfisviðmót SCSI
Á forritunarviðmótsstigi útfærir MSC tækið eina af stöðluðum samskiptareglum geymslumiðla, eins og SCSI og SFF-8020i (ATAPI). „Forritunarviðmótið“ tilgreinir hvaða samskiptaregla er útfærð og hjálpar stýrikerfinu að hlaða inn viðeigandi tækjarekli til að eiga samskipti við USB geymslutækið. SCSI er algengasta samskiptareglan sem notuð er með USB MSC geymslutækjum. Við bjóðum upp á útfærslu fyrir MSC SCSI undirflokk sem GSDK notendur okkar geta notað strax.
SCSI er safn staðla fyrir samskipti milli tölva og jaðartækja. Þessir staðlar innihalda skipanir, samskiptareglur, rafmagnsviðmót og ljósleiðarviðmót. Geymslutæki sem nota önnur vélbúnaðarviðmót, eins og USB, nota SCSI skipanir til að fá upplýsingar um tæki/hýsil og stjórna virkni tækisins og flytja gagnablokkir á geymslumiðlinum.
SCSI skipanir ná yfir fjölbreytt úrval tækjagerða og virkni og því þurfa tækin hluta af þessum skipunum. Almennt eru eftirfarandi skipanir nauðsynlegar fyrir grunn samskipti:
FYRIRSPURN LESARFÆRI (10) LESA (10) BEIÐNI UM SKYNJUN PRÓFUN EINING TILBÚIN SKRIFA (10)
USB tæki MSC flokks auðlindaþarfir frá kjarna
Í hvert skipti sem þú bætir MSC klasatilviki við USB stillingu með fallinu sl_usbd_msc_add_to_configuration() , verða eftirfarandi auðlindir úthlutaðar úr kjarnanum.
Auðlind
Tengiviðmót Önnur tengiviðmót Endapunktar Tengiviðmótshópar
Magn
1 1 2 0
Athugið að þessar tölur eru fyrir hverja stillingu. Þegar þið setjið upp stillingargildin SL_USBD_INTERFACE_QUANTITY, SL_USBD_ALT_INTERFACE_QUANTITY, SL_USBD_INTERFACE_GROUP_QUANTITY og SL_USBD_DESCRIPTOR_QUANTITY, munið þið að taka tillit til þess hversu margar stillingar klasanum verða bættar við. Fyrir stillingargildið SL_USBD_OPEN_ENDPOINTS_QUANTITY, þar sem endapunktar eru aðeins opnaðir þegar stilling er stillt af hýsilnum, þarf aðeins að taka tillit til fjölda endapunkta sem þarf fyrir klasatilvik.
Stillingar fyrir USB tæki MSC flokk
Tveir hópar stillingarbreyta eru notaðir til að stilla MSC klasann:
USB tæki MSC flokkur Forritssértækar stillingar USB tæki MSC flokkur Rökfræðileg einingarstilling
USB tæki MSC flokkur forritssértækar stillingar
Stillingar á klasaþýtingartíma Stofnun klasatilvika
Höfundarréttur © 2025 Silicon Laboratories. Allur réttur áskilinn.
45/174
Yfirview
Stillingar fyrir flokkaþýtingartíma
Hægt er að stilla MSC-flokka og SCSI-undirflokka USB-tækja í Silicon Labs við þýtingu með #defines sem er staðsett í sl_usbd_core_config.h. file.
Tafla – Almennir stillingarfastar
Nafn stillingar
Lýsing
SL_USBD_MSC_CLASS_INST Fjöldi klasatilvika sem þú munt úthluta með kalli á fallið
ANCE_QUANTITY
sl_usbd_msc_scsi_create_instance().
SL_USBD_MSC_CONFIGURA Fjöldi stillinga sem hægt er að bæta við klasatilviki með kalli á
TION_QUANTITY
fallið sl_usbd_msc_scsi_add_to_configuration().
SL_USBD_MSC_LUN_QUANT Fjöldi rökfræðilegra eininga á hvert klasatilvik sem þú munt bæta við með kalli á
ITY
fallið sl_usbd_msc_scsi_lun_add().
SL_USBD_MSC_SCSI_64_BIT Virkjar eða slekkur á stuðningi við rökfræðilegt blokkarvistfang (LBA) með 64 bita stillingum.
_LBA_EN
SL_USBD_MSC_DATA_BUFF Stærð gagnabiðminnis á hverja klasatilvik í bætum ER_SIZE
Sjálfgefið gildi
2
1
2
0
512
Stofnun klasatilvika
Til að búa til USB tæki af MSC SCSI flokki er gert með því að kalla á fallið sl_usbd_msc_scsi_create_instance(). Þetta fall tekur við einni stillingarbreytu sem er lýst hér að neðan.
p_scsi_tilbakakall
p_scsi_callbacks er bendill á stillingarbyggingu af gerðinni sl_usbd_msc_scsi_callbacks_t. Auk algengu usb tækjaflokksins „callbacks connect/disconnect“, veitir það MSC flokknum safn af valfrjálsum „callback functions“ sem eru kallaðar þegar atburður á sér stað á rökfræðilegu einingunni. Hægt er að senda núllbendil (NULL) í þessa færibreytu ef engin „callbacks“ eru nauðsynleg.
Taflan hér að neðan lýsir hverjum stillingarreit sem er tiltækur í þessari stillingarbyggingu.
Tafla – sl_usbd_msc_scsi_callbacks_t Stillingarbygging
Fields
Lýsing
.virkja
Kallað þegar USB-klasatilvikið er virkjað.
.disable Kallað þegar USB klasatilvikið er óvirkt.
.host_eject Fall sem kallast þegar rökfræðileg eining er kastað út úr hýsilnum.
Undirskrift virkni
ógilt app_usbd_msc_scsi_enable(uint8_t class_nbr);
`void app_usbd_msc_scsi_disable(uint8_t class_nbr);`
Stillingar á rökfræðilegri einingu USB-tækis MSC-flokks
Að bæta rökfræðilegri einingu við MSC klasatilvik er gert með því að kalla á fallið sl_usbd_msc_lun_add(). Þetta fall tekur við einni stillingarbreytu sem er lýst hér að neðan.
p_lu_upplýsingar
p_lu_info er bendill á uppbyggingu af gerðinni sl_usbd_msc_scsi_lun_info_t. Tilgangur hennar er að veita upplýsingar um rökfræðilega eininguna til MSC klasans.
Taflan hér að neðan lýsir hverjum stillingarreit sem er tiltækur í þessari stillingarbyggingu.
Tafla – sl_usbd_msc_scsi_lun_info_t Stillingarbygging
Höfundarréttur © 2025 Silicon Laboratories. Allur réttur áskilinn.
46/174
Yfirview
Field
Lýsing
Field
.scsi_lun_api_p tr
Lýsing
Bendir á API-ið fyrir margmiðlunarrekla sem mun meðhöndla þessa rökfræðilegu einingu. Sjá USB Device MSC Class Storage Drivers fyrir frekari upplýsingar um geymslurekla.
.ve og eða r_id _ p tr
.vöru_auðkenni_ptr
.v r _endurskoðunarstig .er_ aðeins lesið
Bendill á streng sem inniheldur auðkenni söluaðila rökfræðieiningarinnar. Hámarkslengd strengsins er 8 stafir. Bendill á streng sem inniheldur auðkenni vörunnar rökfræðieiningarinnar. Hámarkslengd strengsins er 16 stafir. Útgáfustig vöru.
Flagg sem gefur til kynna hvort rökfræðilega einingin eigi að vera lesin eingöngu frá sjónarhóli view hýsilsins (satt) eða ekki (ósatt).
Forritunarleiðbeiningar fyrir USB tæki, MSC Class
Í þessum kafla er útskýrt hvernig á að nota MSC klasann.
Að frumstilla USB tækis MSC flokkinn Bæta við USB tækis MSC SCSI flokkstilviki við tækið þitt Meðhöndlun röklegra eininga USB tækis MSC flokksins
Frumstilling USB tækisins MSC flokksins
Til að bæta við virkni MSC SCSI klasa við tækið þitt skaltu fyrst frumstilla MSC grunnklasann og SCSI undirklasann með því að kalla á fallið sl_usbd_msc_init() og sl_usbd_msc_scsi_init().
FyrrverandiampHér að neðan sýnir hvernig á að kalla á sl_usbd_msc_init() og sl_usbd_msc_scsi_init().
Example – Kallar sl_usbd_msc_init() og sl_usbd_msc_scsi_init()
sl_status_t staða;
status = sl_usbd_msc_init(); if (status !SL_STATUS_OK) { /* Villa kom upp. Villumeðhöndlun ætti að vera bætt við hér. */
}
status = sl_usbd_msc_scsi_init(); if (status ! SL_STATUS_OK) { /* Villa kom upp. Villumeðhöndlun ætti að vera bætt við hér. */
}
Að bæta USB tækis MSC SCSI flokkstilviki við tækið þitt
Til að bæta við MSC SCSI flokksvirkni við tækið þitt skaltu fyrst búa til tilvik og síðan bæta því við stillingar tækisins. Þú verður að bæta að minnsta kosti einni rökfræðilegri einingu við tilvikið þitt.
Að búa til MSC SCSI klasatilvik
Búðu til MSC SCSI klasatilvik með því að kalla á fallið sl_usbd_msc_scsi_create_instance().
FyrrverandiampHér að neðan er sýnt hvernig á að kalla á sl_usbd_msc_scsi_create_instance() með sjálfgefnum færibreytum. Fyrir frekari upplýsingar um stillingarfæribreytur sem senda á til sl_usbd_msc_scsi_create_instance(), sjá Sértækar stillingar fyrir USB tæki MSC flokka.
Example – Kallar sl_usbd_ msc_scsi_create_instance()
Höfundarréttur © 2025 Silicon Laboratories. Allur réttur áskilinn.
47/174
Yfirview
uint8_t class_nbr; sl_status_t staða;
sl_usbd_msc_scsi_callbacks_t app_usbd_msc_scsi_callbacks = { .enable = NÚLL, .disable = NÚLL, .host_eject = NÚLL }; Hlutakóði: }
staða = sl_usbd_msc_scsi_create_instance(&app_usbd_msc_scsi_callbacks,0 &class_nbr);
ef (staða ! SL_STATUS_OK) { /* Villa kom upp. Villumeðhöndlun ætti að vera bætt við hér. */ }
Að bæta MSC klasatilvikinu við stillingar tækisins
Eftir að þú hefur búið til MSC klasatilvik geturðu bætt því við stillingu með því að kalla á fallið
sl_usbd_msc_add_to_configuration().
FyrrverandiampHér að neðan sést hvernig á að kalla á sl_usbd_msc_scsi_add_to_configuration() með sjálfgefnum færibreytum.
Example – Kallar sl_usbd_ msc_scsi_add_to_configuration()
sl_status_t staða;
staða = sl_usbd_msc_scsi_add_to_configuration(class_nbr,
(1)
config_nbr_fs);
(2)
ef (staða ! SL_STATUS_OK) {
/* Villa kom upp. Villumeðhöndlun ætti að bæta við hér. */
}
(1) Klasanúmer sem á að bæta við stillingarnar sem skilað er af sl_usbd_msc_scsi_create_instance(). (32) Stillingarnúmer (hér er því bætt við Full-Speed stillingu).
Meðhöndlun rökfræðilegrar einingar fyrir USB-tæki MSC-flokk
Að bæta við rökfræðilegri einingu Tengja/aftengja geymslumiðil
Að bæta við rökfræðilegri einingu
Þegar rökeining er bætt við MSC SCSI klasatilvikið þitt verður hún að vera bundin við geymslumiðil (RAMDisk, SD kort, glampaminni o.s.frv.). MSC klasinn notar geymslurekla til að eiga samskipti við geymslumiðla. Þessi rekla þarf að vera til staðar þegar rökeiningin er bætt við.
FyrrverandiampHér að neðan er sýnt hvernig á að bæta við rökfræðilegri einingu í gegnum sl_usbd_msc_scsi_lun_add().
Example – Að bæta við rökfræðilegri einingu í gegnum sl_usbd_msc_scsi_lun_add()
Höfundarréttur © 2025 Silicon Laboratories. Allur réttur áskilinn.
48/174
Yfirview
sl_usbd_msc_scsi_lun_t *lu_object_ptr = NÚLL;
sl_usbd_msc_scsi_lun_info_t lu_info;
sl_status_t
staða;
lu_info.sl_usbd_msc_scsi_lun_api_t = &app_usbd_scsi_storage_block_device_api;
lu_info.vendor_id_ptr
= „Silicon Labs“;
lu_info.product_id_ptr
= „blokka tæki t.d.“ample“;
lu_info.product_revision_level = 0x1000u;
lu_info.is_read_only
= ósatt;
staða = sl_usbd_msc_scsi_lun_add(class_nbr, &lu_info, &lu_object_ptr);
ef (staða ! SL_STATUS_OK) { /* Villa kom upp. Villumeðhöndlun ætti að vera bætt við hér. */ }
Að festa/aftengja geymslumiðil
Eftir að rökfræðilegri einingunni hefur verið bætt við verður að tengja geymslumiðil við hann til að hann sé aðgengilegur frá hýsilhliðinni. MSC klasinn býður upp á tvær aðgerðir til að stjórna tengingu geymslumiðilsins við rökfræðilegu eininguna: sl_usbd_msc_scsi_lun_attach() og sl_usbd_msc_scsi_lun_detach(). Þessir aðgerðir gera þér kleift að herma eftir því að geymslutæki hefur verið fjarlægt til að fá aðgang aftur frá innbyggða forritinu ef þörf krefur.
FyrrverandiampHér að neðan sýnir hvernig á að nota föllin sl_usbd_msc_scsi_lun_attach() og sl_usbd_msc_scsi_lun_detach().
Example – Tengja/rofa fjölmiðlum
sl_status_t staða;
status = sl_usbd_msc_scsi_lun_attach(lu_object_ptr); if (status !SL_STATUS_OK) { /* Villa kom upp. Villumeðhöndlun ætti að vera bætt við hér. */
}
…
(1)
staða = sl_usbd_msc_scsi_lun_detach(lu_object_ptr); ef (staða !SL_STATUS_OK) {
/* Villa kom upp. Villumeðhöndlun ætti að bæta við hér. */
}
…
(2)
staða = sl_usbd_msc_scsi_lun_attach(lu_object_ptr) ef (staða !SL_STATUS_OK) {
/* Villa kom upp. Villumeðhöndlun ætti að bæta við hér. */
}
…
(3)
(1) Frá þessari stundu, ef MSC tækið er tengt við hýsil, er geymslumiðillinn aðgengilegur.
(2) Ef MSC tækið er tengt við hýsil, mun miðillinn nú birtast sem ófáanlegur. Á þessari stundu er hægt að framkvæma aðgerðir á miðlinum úr innbyggða forritinu.
(3) Aftur, ef MSC tækið er tengt við hýsilinn, mun geymslumiðillinn birtast sem tengdur.
USB tæki MSC flokks geymslubílstjórar
USB tækið MSC Class þarfnast geymslurekils til að eiga samskipti við geymslumiðil. Silicon Labs býður ekki upp á rekla eins og er.
Höfundarréttur © 2025 Silicon Laboratories. Allur réttur áskilinn.
49/174
Yfirview
TPY aa Gervigreind reklarins er skilgreind með typedef sl_usbd_msc_scsi_lun_api_t. sl_usbd_msc_scsi_lun_api_t skráin okkar verður að vera innifalin til að aaaaaaaa sl_usbd_msc_scsi_lun_info_t skráin þín, settu inn rökfærslu þegar þú bætir við rökfræðieiningu með sl_usbd_msc_scsi_lun_add(). Sjá kaflann USB tæki MSC SCSI API fyrir frekari upplýsingar um uppbygginguna. Útfærsla geymslurekla getur verið eins einföld og fylki af geirum í vinnsluminni. Dæmigerð geirastærð (þ.e. blokkastærð) er 512 fyrir geymslutæki og 2048 fyrir geisladiska.
Höfundarréttur © 2025 Silicon Laboratories. Allur réttur áskilinn.
50/174
Yfirview
Yfirview
Flokkur USB-tækjaframleiðanda
USB tækisframleiðandi flokkur yfirview Þarfir USB-tækjaframleiðandaflokks frá kjarna Stillingar USB-tækjaframleiðandaflokks Forritunarleiðbeiningar fyrir USB-tækjaframleiðandaflokk Vendor-flokkurinn gerir þér kleift að smíða framleiðandasértæk tæki sem geta innleitt sérsniðna samskiptareglur. Hann treystir á tvöfalda endapunkta til að flytja gögn milli hýsilsins og tækisins. Magnflutningar eru þægilegir til að flytja mikið magn af ómótuðum gögnum og veita áreiðanlega gagnaskipti með því að nota villugreiningar- og endurtekningarkerfi. Auk fjöldaendapunkta getur Vendor-flokkurinn einnig notað valfrjálst par af truflunarendapunktum. Hvaða stýrikerfi (OS) sem er getur unnið með Vendor-flokknum að því tilskildu að stýrikerfið hafi rekla til að meðhöndla Vendor-flokkinn. Rekillinn getur verið innfæddur eða sértækur fyrir framleiðandann, allt eftir stýrikerfinu. Til dæmis, í Microsoft Windows®, hefur forritið þitt samskipti við WinUSB-reklana frá Microsoft til að eiga samskipti við tæki framleiðandans.
USB tækisframleiðandi flokkur yfirview
Mynd – Almenn arkitektúr milli Windows-hýsingar og söluaðilaklasa sýnir almenna arkitektúr milli hýsilsins og tækisins með því að nota söluaðilaklasann. Í þessu dæmiampe.h., stýrikerfið sem hýsir það er MS Windows.
Mynd – Almenn arkitektúr milli MS Windows hýsingar og söluaðilaflokks
Í MS Windows stýrikerfinu á forritið samskipti við tæki framleiðandans með því að hafa samskipti við USB bókasafn. Bókasöfn, eins og libusb, bjóða upp á forritaskil (API) til að stjórna tæki og tengdum tengingum þess, og til að eiga samskipti við tækið í gegnum stjórn-, fjölda- og truflunarendapunkta.
Á tækjahliðinni samanstendur Vendor-klasinn af eftirfarandi endapunktum:
Par af stjórnendapunktum IN og OUT sem kallast sjálfgefinn endapunktur. Par af fjöldaendapunktum IN og OUT.
Höfundarréttur © 2025 Silicon Laboratories. Allur réttur áskilinn.
51/174
Yfirview
Par af truflunum IN og OUT endapunktum. Þetta par er valfrjálst. Taflan hér að neðan sýnir notkun mismunandi endapunkta:
Tafla – Notkun endapunkta söluaðilaflokks
Stefna endapunkts
Stjórna IN
Stjórna
ÚT
Magn inn
Tæki-til-hýsingar
>Vél-til-tækis
Tæki-til-hýsingar
Magn ÚT
Truflun INN
Trufla
ÚT
Vél-til-tækis
Tæki-til-hýsingar
Vél-til-tækis
Notkun
Staðlaðar beiðnir um upptalningu og beiðnir frá söluaðilum.
Staðlaðar beiðnir um upptalningu og beiðnir frá söluaðilum.
Óunnin gagnasamskipti. Hægt er að skipuleggja gögn samkvæmt sérhannaðri samskiptareglu.
Óunnin gagnasamskipti. Hægt er að skipuleggja gögn samkvæmt sérhannaðri samskiptareglu.
Hrágagnasamskipti eða tilkynningar. Gögnum er hægt að skipuleggja samkvæmt séreignarsamskiptareglum. Hrágagnasamskipti eða tilkynningar. Gögnum er hægt að skipuleggja samkvæmt séreignarsamskiptareglum.
Forrit tækisins getur notað fjölda- og truflunarendapunkta til að senda eða taka á móti gögnum til eða frá hýsilnum. Það getur aðeins notað sjálfgefna endapunktinn til að afkóða beiðnir frá söluaðilum sem hýsilinn sendir. Staðlaðar beiðnir eru stjórnaðar innbyrðis af kjarnalagi Silicon Labs USB tækisins.
Þarfir USB-tækjaframleiðanda frá Core
Í hvert skipti sem þú bætir við tilviki af söluaðilaklasa við stillingu með fallinu sl_usbd_vendor_add_to_configuration() , verða eftirfarandi auðlindir úthlutaðar úr kjarnanum.
Auðlind
Tengiviðmót Önnur tengiviðmót Endapunktar Tengiviðmótshópar
Magn
1 1 2 (4 ef þú virkjaðir truflunarendapunkta) 0
Athugið að þessar tölur eru fyrir hverja stillingu. Þegar þið setjið upp stillingargildin SL_USBD_INTERFACE_QUANTITY, SL_USBD_ALT_INTERFACE_QUANTITY, SL_USBD_INTERFACE_GROUP_QUANTITY og SL_USBD_DESCRIPTOR_QUANTITY, munið þið að taka tillit til þess hversu margar stillingar klasanum verða bættar við. Fyrir stillingargildið SL_USBD_OPEN_ENDPOINTS_QUANTITY, þar sem endapunktar eru aðeins opnaðir þegar stilling er stillt af hýsilnum, þarf aðeins að taka tillit til fjölda endapunkta sem þarf fyrir klasatilvik.
Stillingar á USB-tæki fyrir framleiðanda
Tveir hópar stillingarbreyta eru notaðir til að stilla Vendor-klasann:
USB tækjaframleiðandaflokkur Forritssértækar stillingar Stillingar USB tækjaframleiðandaflokkstilvika
USB tæki framleiðanda flokks forritssértækar stillingar
Fyrst, til að nota Silicon Labs USB tækisframleiðanda klasaeininguna, skaltu aðlaga skilgreiningar á þýðingartíma framleiðanda í samræmi við þarfir forritsins. Þær eru flokkaðar saman í sl_usbd_core_config.h hausnum. file undir Birgjarhlutanum. Tilgangur magnstillinganna er að upplýsa USB-tækjaeininguna um hversu mörg USB-birgjahluti á að úthluta.
Taflan hér að neðan lýsir hverri stillingu.
Höfundarréttur © 2025 Silicon Laboratories. Allur réttur áskilinn.
52/174
Yfirview
Tafla – Skilgreiningar á stillingum framleiðanda USB-tækja
Nafn stillingar
Lýsing
Sjálfgefið gildi
SL_USBD_VENDOR_CLASS_INSTANCE_QUANTITY Fjöldi klasatilvika sem þú munt úthluta með kalli á fallið 2 sl_usbd_vendor_create_instance().
SL_USBD_VENDOR_CONFIGURATION_QUANTITY Fjöldi stillinga. Hægt er að bæta tilvikum af söluaðilaflokki við eina eða fleiri stillingar með kalli á fallið sl_usbd_vendor_add_to_configuration().
Stillingar á USB tækisframleiðandaflokki
Þessi hluti skilgreinir stillingar sem tengjast tilvikum af Vendor-klasanum.
Sköpun klasatilviks intr_en interval p_vendor_callbacks
Stofnun klasatilvika
Til að búa til Vendor klasatilvik er gert með því að kalla á fallið sl_usbd_vendor_create_instance() , sem tekur við þremur stillingarbreytum sem lýst er hér að neðan.
innri_en
Boolean gildi sem gefur til kynna hvort bæta eigi við pari af truflunarendapunktum eða ekki.
Gildi
satt ósatt
Lýsing
Par af IN/OUT endapunktum verður bætt við og gert aðgengilegt fyrir innbyggða forritið. Enginn truflunarendapunktur verður bætt við. Aðeins par af Bulk IN/OUT endapunktum verður tiltækt.
millibili
Ef þú stillir intr_en á true geturðu tilgreint könnunarbil truflunarendapunktanna (í millisekúndum). Ef þú stillir intr_en á false geturðu stillt interval á 0 þar sem klasinn mun hunsa það.
p_vendor_callbacks
p_vendor_callbacks er bendill á uppbyggingarbreytu fyrir svaraðgerðir sem þú getur tilgreint til að meðhöndla klasasértækar stýringarbeiðnir. Ef þú notar engar klasasértækar beiðnir eða þarft að virkja/slökkva á tilkynningum, geturðu stillt þetta á NULL.
FyrrverandiampLeiðin hér að neðan sýnir væntanlega undirskrift beiðnameðhöndlara fyrir tiltekna bekk.
Example – Undirskrift beiðnafalls sem er sértækt fyrir flokka
ógilt app_usbd_vendor_req_handle(uint8_t)
flokksnúmer, (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) Tilviksnúmer söluaðilaflokks.
Höfundarréttur © 2025 Silicon Laboratories. Allur réttur áskilinn.
53/174
Yfirview
(2) Vísir að móttekinni uppsetningarbeiðni frá hýsingaraðila.
Forritunarhandbók fyrir USB-tæki frá framleiðanda
Í þessum kafla er útskýrt hvernig á að nota Vendor-klasann. Upphafsstilling á USB Device Vendor-klasanum. Að bæta við USB Device Vendor-klasatilviki við tækið þitt. Að eiga samskipti með USB Device Vendor-klasanum.
Frumstilling USB tækjaframleiðandaflokks
Til að bæta við virkni söluaðilaklasa við tækið þitt skaltu fyrst frumstilla klasann með því að kalla á fallið USBD_Vendor_Init(). Til dæmisampHér að neðan sýnir hvernig á að kalla á sl_usbd_vendor_init().
Example – Kallar sl_usbd_vendor_init()
sl_status_t staða;
status = sl_usbd_vendor_init(); if (status !SL_STATUS_OK) { /* Villa kom upp. Villumeðhöndlun ætti að vera bætt við hér. */ }
Bæti við USB Device Vendor Class tilviki við tækið þitt
Til að bæta við virkni söluaðilaflokks við tækið þitt verður þú fyrst að búa til tilvik og síðan bæta því við stillingar tækisins.
Að búa til tilvik af söluaðilaklasa Bæta tilviki söluaðilaklasans við stillingar tækisins
Að búa til tilvik af söluaðilaklasa
Búið til Vendor klasatilvik með því að kalla á fallið sl_usbd_vendor_create_instance(). TilvikiðampHér að neðan er sýnt hvernig á að kalla á sl_usbd_vendor_create_instance() með því að nota sjálfgefin færibreytur. Fyrir frekari upplýsingar um stillingarfæribreytur sem senda á til sl_usbd_vendor_create_instance(), sjá Stillingar á USB Device Vendor Class Instance.
Example – Kallar sl_usbd_vendor_create_instance()
uint8_t class_nbr; sl_status_t staða;
staða = sl_usbd_vendor_create_instance(ósatt,
(1)
0u,
(2)
app_usbd_vendor_callback_functions, (3)
&flokksnúmer);
ef (staða ! SL_STATUS_OK) {
/* Villa kom upp. Villumeðhöndlun ætti að bæta við hér. */
}
(1) Engir truflunarendapunktar með þessu klasatilviki. (2) Interval er hunsað þar sem truflunarendapunktar eru óvirkir.
Höfundarréttur © 2025 Silicon Laboratories. Allur réttur áskilinn.
54/174
Yfirview
(3) Tilbakakallsfall sem er hluti af forritinu þínu sem meðhöndlar beiðnir um sérstakar beiðnir um klasa frá söluaðilum. Sjá nánari upplýsingar í Samskiptum með USB Device Vendor Class. Bæta við tilviki söluaðilaklasa við stillingar tækisins Eftir að þú hefur búið til tilvik söluaðilaklasa geturðu bætt því við stillingu með því að kalla á fallið USBD_Vendor_ConfigAdd(). TilvikiðampHér að neðan sýnir hvernig á að kalla á sl_usbd_vendor_add_to_configuration() með sjálfgefnum færibreytum.
Example – Kallar sl_usbd_vendor_add_to_configuration()
sl_status_t staða;
staða = sl_usbd_vendor_add_to_configuration(class_nbr,
(1)
config_nbr_fs);
(2)
ef (staða ! SL_STATUS_OK) {
/* Villa kom upp. Villumeðhöndlun ætti að bæta við hér. */
}
(1) Klasanúmer sem á að bæta við stillingarnar sem skilað er af sl_usbd_vendor_create_instance(). (2) Stillingarnúmer (hér er því bætt við Full-Speed stillingu).
Samskipti með USB Device Vendor Class
Almenn samstillt samskipti Ósamstillt samskipti Beiðni um söluaðila Almennt Vendor-klasinn býður upp á eftirfarandi föll til að eiga samskipti við hýsilinn. Nánari upplýsingar um færibreytur fallsins er að finna í USB Device Vendor API.
Tafla – Yfirlit yfir API-skil fyrir samskipti við birgja
Heiti aðgerða
sl_usb d _v e nd eða r_ lesa auglýsingu _b ulk_sy nc() sl_usb d _v e nd eða r_ skrifa _b ulk_sy nc() sl_usb d _v e nd eða r_ lesa auglýsingu _b ulk_asy nc() sl_usb d _v e nd eða r_ skrifa _b ulk_asy nc() sl_usb d _v e nd eða r_ lesa auglýsingu _inter rrup t_sy nc() sl_usb d _v e nd eða r_ skrifa _inter rrup t_sy nc() sl_usb d _v e nd eða r_ lesa auglýsingu _inter rrup t_asy nc
()
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-
lokun.
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
Höfundarréttur © 2025 Silicon Laboratories. Allur réttur áskilinn.
55/174
Yfirview
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
staða;
status = sl_usbd_vendor_read_bulk_sync(class_nbr,
(1)
(void *)&rx_buf[0],
(2)
2u,
0u,
(3)
&xfer_len);
ef (staða ! SL_STATUS_OK) {
/* $$$$ Taktu á villunni. */
}
status = sl_usbd_vendor_write_bulk_sync( class_nbr,
(1)
(void *)&tx_buf[0],
(4)
2u,
0u,
(3)
false,
(5)
&xfer_len);
ef (staða ! SL_STATUS_OK) {
/* $$$$ Taktu á villunni. */
}
(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) Forritið býður upp á frumstillta sendingarbiðminnið.
(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.
Ósamstillt samskipti
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
Höfundarréttur © 2025 Silicon Laboratories. Allur réttur áskilinn.
56/174
Yfirview
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
staða;
status = sl_usbd_vendor_read_bulk_async(class_nbr,
(void *)&rx_buf[0],
(2)
2u,
app_usbd_vendor_rx_completed,
NULL);
(4)
ef (staða ! SL_STATUS_OK) {
/* $$$$ Taktu á villunni. */
}
status = sl_usbd_vendor_write_bulk_async(class_nbr,
(void *)&tx_buf[0],
(5)
2u,
app_usbd_vendor_tx_completed,
NÚLL,
(4)
false);
(6)
ef (staða ! SL_STATUS_OK) {
/* $$$$ Taktu á villunni. */
}
}
(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)
{
ef (staða ! SL_STATUS_OK) {
/* $$$$ Do some processing. */
} annað {
/* $$$$ Taktu á villunni. */
}
}
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)
{
ef (staða ! SL_STATUS_OK) {
/* $$$$ Do some processing. */
} annað {
/* $$$$ Taktu á villunni. */
}
}
(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.
Höfundarréttur © 2025 Silicon Laboratories. Allur réttur áskilinn.
57/174
Yfirview
(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
Höfundarréttur © 2025 Silicon Laboratories. Allur réttur áskilinn.
58/174
Yfirview
#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 staða;
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;
sjálfgefið:
(6)
// Request is not supported.
Höfundarréttur © 2025 Silicon Laboratories. Allur réttur áskilinn.
59/174
Yfirview
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 struct {
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 til staðar.
*/
} 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.
Höfundarréttur © 2025 Silicon Laboratories. Allur réttur áskilinn.
60/174
API skjöl
API skjöl
API skjöl
Listi yfir einingar
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
Lýsing
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
Höfundarréttur © 2025 Silicon Laboratories. Allur réttur áskilinn.
61/174
USB Device API
USB Device API
USB Device API
USB Device API.
Einingar
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
Höfundarréttur © 2025 Silicon Laboratories. Allur réttur áskilinn.
62/174
USB Device ACM API
USB Device ACM API
USB Device ACM API
USB Device CDC ACM API.
Einingar
a sl_usbd_cdc_ cm_line_coding_t sl_usbd_cdc_acm_callbacks_t
Aðgerðir
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).
Höfundarréttur © 2025 Silicon Laboratories. Allur réttur áskilinn.
63/174
USB Device ACM API
Fjölvi
#define SL_USBD_CDC_ACM_NBR_NONE 255u
AÐIN.
#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
Höfundarréttur © 2025 Silicon Laboratories. Allur réttur áskilinn.
64/174
USB Device ACM API
Tegund
ógilt
Direction N/A
Argument Name
MACROS GLOBAL CONSTANTS FUNCTION PROTOTYPES CDC ACM FUNCTIONS
Initialize the CDC ACM serial emulation subclass.
Skilar
Returns SL_STATUS_OK on success or another SL_STATUS code on failure.
Lýsing
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.
Færibreytur
Tegund
uint16_t
uint16_t
Direction Argument Name
Lýsing
N/A
line_state_interval Line state notification interval in milliseconds (value must
be a power of 2).
N/A
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 *
N/A
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.
Skilar
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.
Færibreytur
Tegund
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.
Skilar
Höfundarréttur © 2025 Silicon Laboratories. Allur réttur áskilinn.
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.
Færibreytur
Tegund
Stefna
Argument Name
Lýsing
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
Skjöl / auðlindir
![]() |
SILICON LABS USB Device Stack [pdfLeiðbeiningarhandbók USB Device Stack, Device Stack, Stack |