सिलिकन ल्याब्स USB उपकरण स्ट्याक
निर्दिष्टीकरणहरू
- USB संस्करण: 1.5.1
- रिलीज मिति: जुलाई 21, 2025
- सिम्पलिसिटी SDK संस्करण: २०२५.६.१
उत्पादन समाप्त भयोview
सिलिकन ल्याब्सको USB उपकरण स्ट्याकले IoT परियोजनाहरूको लागि बहुमुखी र प्रयोग गर्न सजिलो USB कनेक्टिभिटी प्रदान गर्दछ, जसले नेटवर्क सह-प्रोसेसरहरू र होस्टहरू बीच सञ्चारलाई सहज बनाउँछ।
सुविधाहरू
- कुशल USB उपकरण स्ट्याक
- IoT परियोजनाहरूको लागि आदर्श
- नेटवर्क सह-प्रोसेसरहरू र होस्टहरू बीच सञ्चारको लागि समर्थन
USB उपकरण कन्फिगरेसन
कागजातमा रहेको USB उपकरण कन्फिगरेसन खण्डलाई सन्दर्भ गरेर आफ्नो परियोजना आवश्यकताहरू अनुसार USB उपकरण सेटिङहरू कन्फिगर गर्नुहोस्।
USB उपकरण प्रोग्रामिङ गाइड
विभिन्न अनुप्रयोगहरूको लागि USB उपकरण कसरी प्रोग्राम गर्ने र अन्तर्क्रिया गर्ने भनेर बुझ्न USB उपकरण प्रोग्रामिङ गाइड पालना गर्नुहोस्।
USB उपकरण कक्षाहरू
USB उपकरण कक्षा खण्डले एक ओभर प्रदान गर्दछview CDC ACM, HID, MSC SCSI, र Vendor Class जस्ता विभिन्न वर्गहरूको। तपाईंको उपकरणको कार्यक्षमताको आधारमा उपयुक्त वर्ग छनौट गर्नुहोस्।
USB उपकरण समस्या निवारण
यदि तपाईंले USB उपकरणमा कुनै समस्या सामना गर्नुभयो भने, समाधान र डिबगिङ सुझावहरूको लागि USB उपकरण समस्या निवारण खण्ड हेर्नुहोस्।
विशिष्टता र सुविधाहरूview
USB उपकरण कन्फिगरेसन सकियोview
USB उपकरण प्रोग्रामिङ गाइड समाप्तview
USB उपकरण कक्षाहरू समाप्तview CDC ACM कक्षा सकियोview HID कक्षा सकियोview MSC SCSI कक्षा सकियोview विक्रेता वर्ग समाप्तview
USB API API कागजात USB उपकरण API USB उपकरण ACM API a sl_usbd_cdc_ cm_line_coding_t sl_usbd_cdc_acm_callbacks_t USB उपकरण CDC API a sl_usbd_cdc_subcl ss_driver_t USB उपकरण कोर API
sl_usbd_उपकरण_कन्फिग_t sl_usbd_सेटअप_आवश्यकता_t
एक sl_usbd_cl ss_driver_t USB उपकरण HID API
sl_usbd_hid_callbacks_t USB उपकरण MSC API
एक sl_usbd_msc_subcl ss_driver_t USB उपकरण MSC SCSI API
sl_usbd_msc_scsi_कलब्याक_t
प्रतिलिपि अधिकार © 2025 सिलिकन प्रयोगशालाहरू। सबै अधिकार सुरक्षित।
१/४
युनिभर्सल सिरियल बस USB
एक sl_usbd_msc_scsi_lun_ पाई
sl_usbd_msc_scsi_lun_info sl_usbd_msc_scsi_lun
USB उपकरण विक्रेता API sl_usbd_vendor_callbacks_t
API कागजात USB उपकरण समस्या निवारण
माथिview माइक्रोसफ्ट विन्डोज ओएस यूएसबी होस्ट
माथिview
प्रतिलिपि अधिकार © 2025 सिलिकन प्रयोगशालाहरू। सबै अधिकार सुरक्षित।
१/४
माथिview
माथिview
USB यन्त्र
USB कम्प्युटर प्रणालीको इतिहासमा सबैभन्दा सफल सञ्चार इन्टरफेसहरू मध्ये एक हो र कम्प्युटर बाह्य उपकरणहरू जडान गर्ने वास्तविक मानक हो। सिलिकन ल्याब्स USB उपकरण स्ट्याक एक USB उपकरण मोड्युल हो जुन विशेष रूपमा एम्बेडेड प्रणालीहरूको लागि डिजाइन गरिएको हो। सिलिकन ल्याब्सको गुणस्तर, स्केलेबिलिटी र विश्वसनीयताको साथ ग्राउन्ड अपबाट निर्मित, यो USB 2.0 विशिष्टताको पालना गर्न कठोर प्रमाणीकरण प्रक्रियाबाट गुज्रिएको छ। यो कागजातले सिलिकन ल्याब्स USB उपकरण स्ट्याक कसरी सुरु गर्ने, सुरु गर्ने र प्रयोग गर्ने भनेर वर्णन गर्दछ। यसले विभिन्न कन्फिगरेसन मानहरू र तिनीहरूको प्रयोगहरू व्याख्या गर्दछ। यसमा एक ओभर पनि समावेश छview प्रविधिको, कन्फिगरेसन सम्भावनाका प्रकारहरू, कार्यान्वयन प्रक्रियाहरू, र पूर्वampप्रत्येक उपलब्ध कक्षाको लागि सामान्य प्रयोगका केही अंशहरू।
USB अवधारणाहरू छिटो बुझ्न मद्दतको लागि, कागजातमा धेरै पूर्वहरू छन्ampआधारभूत कार्यहरू सहितको USB को कम। यी उदाहरणहरूampले तपाईंलाई एउटा फ्रेमवर्क प्रदान गर्नेछ जसले तपाईंलाई छिटो उपकरणहरू निर्माण गर्न अनुमति दिन्छ। यी उदाहरणहरूampलेस समावेश:
USB-देखि-सिरियल एडाप्टर (सञ्चार उपकरण वर्ग) माउस वा किबोर्ड (मानव इन्टरफेस उपकरण वर्ग) हटाउन सकिने भण्डारण उपकरण (मास स्टोरेज वर्ग) अनुकूलन उपकरण (विक्रेता वर्ग)
निम्न ओभर होview कागजात खण्डहरूको:
विशिष्टता र सुविधाहरू USB उपकरण कन्फिगरेसन USB उपकरण प्रोग्रामिङ गाइड USB उपकरण कक्षाहरू
CDC ACM कक्षा HID कक्षा MSC SCSI कक्षा विक्रेता कक्षा USB उपकरण समस्या निवारण माइक्रोसफ्ट विन्डोज ओएस USB होस्ट
प्रतिलिपि अधिकार © 2025 सिलिकन प्रयोगशालाहरू। सबै अधिकार सुरक्षित।
१/४
USB
USB
USB संस्करण १.५.१ जुलाई २१, २०२५ – रिलीज नोटहरू
सिम्पलिसिटी SDK संस्करण २०२५.६.१
सिलिकन ल्याब्सको कुशल USB उपकरण स्ट्याकले IoT परियोजनाहरूको लागि बहुमुखी, प्रयोग गर्न सजिलो USB कनेक्टिभिटी प्रदान गर्दछ, जसमा नेटवर्क सह-प्रोसेसरहरू र होस्टहरू बीचको सञ्चार समावेश छ। पहिलेका रिलीजहरूको लागि यहाँ क्लिक गर्नुहोस्।
रिलिज सारांश
मुख्य विशेषताहरू | API परिवर्तनहरू | बग समाधानहरू | चिप सक्षमीकरण
मुख्य विशेषताहरु
अन्तर्निहित प्लेटफर्म मात्र परिवर्तन हुन्छ।
API परिवर्तनहरू
कुनै पनि छैन।
बग समाधानहरू
कुनै पनि छैन।
चिप सक्षमता
कुनै पनि छैन।
मुख्य विशेषताहरु
नयाँ सुविधाहरू | संवर्द्धनहरू | हटाइएका सुविधाहरू | चल्तीबाट हटाइएका सुविधाहरू
नयाँ सुविधाहरू
कुनै पनि छैन।
संवर्द्धनहरू
अन्तर्निहित प्लेटफर्म मात्र परिवर्तन हुन्छ।
हटाइएका सुविधाहरू
कुनै पनि छैन।
निषेधित सुविधाहरू
कुनै पनि छैन।
API परिवर्तनहरू
नयाँ API हरू | परिमार्जित API हरू | हटाइएका API हरू | हटाइएका API हरू
नयाँ APIs
प्रतिलिपि अधिकार © 2025 सिलिकन प्रयोगशालाहरू। सबै अधिकार सुरक्षित।
१/४
USB
कुनै पनि छैन।
परिमार्जित API हरू
कुनै पनि छैन।
हटाइएका API हरू
कुनै पनि छैन।
चल्तीबाट हटाइएका API हरू
कुनै पनि छैन।
बग समाधानहरू
कुनै पनि छैन।
चिप सक्षमता
कुनै पनि छैन।
आवेदन पूर्वampले परिवर्तनहरू
नयाँ पूर्वampपरिमार्जित Exampहटाइएको Examples | हटाइएको Exampलेस
नयाँ पूर्वampलेस
कुनै पनि छैन।
परिमार्जित पूर्वampलेस
कुनै पनि छैन।
हटाइयो पूर्वampलेस
कुनै पनि छैन।
चल्तीबाट हटाइएको पूर्वampलेस
कुनै पनि छैन।
रिलिज परिवर्तनहरूको प्रभाव
प्रभाव कथनहरू | बसाइँसराइ गाइड
प्रभाव कथनहरू
कुनै पनि छैन।
माइग्रेसन गाइड
कुनै पनि छैन।
ज्ञात मुद्दाहरू र सीमाहरू
कुनै पनि छैन।
यो रिलीज प्रयोग गर्दै
प्रतिलिपि अधिकार © 2025 सिलिकन प्रयोगशालाहरू। सबै अधिकार सुरक्षित।
१/४
USB
रिलिजमा के छ? | मिल्दो सफ्टवेयर | स्थापना र प्रयोग | मद्दत र प्रतिक्रिया
रिलिजमा के छ?
USB उपकरण स्ट्याक अनुप्रयोग पूर्वampलेस
मिल्दो सफ्टवेयर
सफ्टवेयर
सिम्पलिसिटी एसडीके सिम्पलिसिटी स्टुडियो सिम्पलिसिटी कमाण्डर जीसीसी द जीएनयू कम्पाइलर कलेक्शन) एआरएमको लागि आईएआर एम्बेडेड वर्कबेन्च IAR EWARM
मिल्दो संस्करण वा भेरियन्ट
२०२५.६.० ५.११.० १.१८.२ (सिम्पलिसिटी स्टुडियोसँग प्रदान गरिएको) १२.२.१ (सिम्पलिसिटी स्टुडियोसँग प्रदान गरिएको) ९.४०.१ (सिम्पलिसिटी स्टुडियोसँग प्रदान गरिएको)
स्थापना र प्रयोग
आफ्नो विकास सुरु गर्न हाम्रो हेर्नुहोस्:
USB उपकरण प्रोग्रामिङ गाइड। API कागजात।
सुरक्षित भल्ट एकीकरणको बारेमा जानकारीको लागि, सुरक्षित भल्ट हेर्नुहोस्।
फेरीview सुरक्षा र सफ्टवेयर सल्लाहकार सूचनाहरू र तपाईंको सूचना प्राथमिकताहरू व्यवस्थापन गर्नुहोस्:
ò https://community.silabs.com/ मा जानुहोस्। ó आफ्नो खाता प्रमाणहरू प्रयोग गरेर लग इन गर्नुहोस्। ô आफ्नो प्रो मा क्लिक गर्नुहोस्file पृष्ठको माथिल्लो दायाँ कुनामा रहेको आइकन।
õ ड्रपडाउन मेनुबाट सूचनाहरू चयन गर्नुहोस्। ö सूचनाहरू खण्डमा, मेरो उत्पादन सूचनाहरू ट्याबमा जानुहोस् र पुन: प्राप्ति गर्नुहोस्।view ऐतिहासिक सुरक्षा र सफ्टवेयर सल्लाहकार
सूचनाहरू
÷ आफ्नो प्राथमिकताहरू व्यवस्थापन गर्न, कुन उत्पादन अद्यावधिकहरू र सल्लाहहरू तपाईंले अनुकूलित गर्न सूचनाहरू व्यवस्थापन गर्नुहोस् ट्याब प्रयोग गर्नुहोस्
प्राप्त गर्नुहोस्।
सिफारिस गरिएका कन्फिगरेसन सेटिङहरूको लागि, यहाँ हेर्नुहोस्।
यस रिलीजमा रहेको सफ्टवेयरको बारेमा थप जान्नको लागि, हाम्रो अनलाइन कागजातमा जानुहोस्।
मद्दत र प्रतिक्रिया
सिलिकन ल्याब्स सपोर्टलाई सम्पर्क गर्नुहोस्। उत्तरहरू प्राप्त गर्न हाम्रो Ask AI उपकरण प्रयोग गर्न, यस पृष्ठको शीर्षमा रहेको खोज क्षेत्र हेर्नुहोस्।
नोट: Ask AI प्रयोगात्मक हो।
हाम्रो विकासकर्ता समुदायबाट मद्दत प्राप्त गर्नुहोस्।
SDK रिलीज र मर्मत नीति
हाम्रो SDK रिलिज र मर्मत नीति हेर्नुहोस्।
प्रतिलिपि अधिकार © 2025 सिलिकन प्रयोगशालाहरू। सबै अधिकार सुरक्षित।
१/४
माथिview
माथिview
निर्दिष्टीकरणहरू
"युनिभर्सल सिरियल बस स्पेसिफिकेशन रिभिजन २.०" को पालना गर्दछ "इन्टरफेस एसोसिएसन डिस्क्रिप्टर इन्जिनियरिङ परिवर्तन सूचना (ECN)" लागू गर्दछ स्थानान्तरण प्रकारहरू
नियन्त्रण बल्क अवरोध USB वर्गहरू सञ्चार उपकरण वर्ग (CDC) सार नियन्त्रण मोडेल (ACM) मानव इन्टरफेस उपकरण (HID) मास भण्डारण वर्ग (MSC) विक्रेता-विशिष्ट वर्ग रूपरेखा
सुविधाहरू
मेमोरी फुटप्रिन्ट कम गर्न आवश्यक सुविधाहरू मात्र समावेश गर्न स्केलेबल पूर्ण-गति (१२ Mbit/s) समर्थन गर्दछ कम्पोजिट (बहु-कार्य) उपकरणहरू समर्थन गर्दछ बहु-कन्फिगरेसन उपकरणहरू समर्थन गर्दछ USB पावर-बचत कार्यक्षमताहरूलाई समर्थन गर्दछ (उपकरण निलम्बन र पुन: सुरु गर्नुहोस्) माइक्रोम ओएसमा मास स्टोरेज क्लासको पूर्ण एकीकरण File विभिन्न OS हरूसँग काम गर्न सकोस् भनेर CMSIS-RTOS2 एब्स्ट्र्याक्सन लेयरको साथ विकसित गरिएको प्रणाली मोड्युल। Silicon Labs GSDK FreeRTOS र Micrium OS पोर्टहरूसँग आउँछ।
प्रतिलिपि अधिकार © 2025 सिलिकन प्रयोगशालाहरू। सबै अधिकार सुरक्षित।
१/४
माथिview
माथिview
USB उपकरण कन्फिगरेसन
यस खण्डले सिलिकन ल्याब्स USB उपकरण कसरी कन्फिगर गर्ने भनेर छलफल गर्दछ। कन्फिगरेसन प्यारामिटरहरूको तीन समूहहरू छन्, निम्नानुसार:
USB उपकरण कोर कन्फिगरेसन USB उपकरण जानकारी कन्फिगरेसन USB उपकरण हार्डवेयर कन्फिगरेसन
USB उपकरण कोर कन्फिगरेसन
सिलिकन ल्याब्स USB उपकरणलाई sl_usbd_core_config.h मा अवस्थित #defines को सेट मार्फत कम्पाइल समयमा कन्फिगर गर्न सकिन्छ। file। USB उपकरणले सम्भव भएसम्म #defines प्रयोग गर्दछ किनभने तिनीहरूले कम्पाइल समयमा कोड र डेटा आकारहरू सक्षम पारिएका सुविधाहरूको आधारमा मापन गर्न अनुमति दिन्छन्। यसले सिलिकन ल्याब्स USB उपकरणको पढ्ने-मात्र मेमोरी (ROM) र अनियमित-पहुँच मेमोरी (RAM) फुटप्रिन्टहरूलाई तपाईंको अनुप्रयोगको आवश्यकताहरूको आधारमा समायोजन गर्न अनुमति दिन्छ।
सिफारिस गरिएको: पूर्वनिर्धारित मानहरू (बोल्डमा हाइलाइट गरिएको) सँग कन्फिगरेसन प्रक्रिया सुरु गर्नुहोस्।
तलका खण्डहरू टेम्प्लेट कन्फिगरेसनको क्रममा आधारित छन्। file, sl_usbd_core_config.h.
कोर कन्फिगरेसन कक्षाहरू कन्फिगरेसन
कोर कन्फिगरेसन
तालिका - USB उपकरण कोर कन्फिगरेसन स्थिरांकहरू
स्थिर विवरण
पूर्वनिर्धारित मान
SL_USBD_TA SK_STACK_ साइज
USBD कोर कार्यको बाइटमा स्ट्याक साइज कन्फिगर गर्छ
4096
SL_USBD_TA SK_PRIORIT Y
USBD कोर कार्यको प्राथमिकता कन्फिगर गर्दछ। यो CMSIS-RTOS2 प्राथमिकता हो।
ओएसप्रायरिटीहाई
SL_USBD_A UTO_START _USB_DEVIC E
यदि सक्षम पारिएको छ भने, कर्नेल सुरु भएपछि USB उपकरण स्वतः सुरु हुनेछ र त्यो १ USBD कोर कार्य पहिलो पटक तालिकाबद्ध गरिएको छ। यदि असक्षम पारिएको छ भने, USB होस्टद्वारा पत्ता लगाउन तयार हुँदा तपाईंको अनुप्रयोगले sl_usbd_core_start_device() लाई कल गर्नुपर्नेछ।
SL_USBD_C sl_usbd_add_configuration() मार्फत थपिने कन्फिगरेसनहरूको कुल संख्या
1
ONFIGURATI प्रकार्य।
ON_QUANTI मा
TY
प्रतिलिपि अधिकार © 2025 सिलिकन प्रयोगशालाहरू। सबै अधिकार सुरक्षित।
१/४
माथिview
स्थिर
SL_USBD _INTERF ACE_QU ANTITY
SL_USBD _ALT_INT ERFACE_ क्वान्टी
TY
SL_USBD _INTERF ACE_GR को परिचय
OUP_QU
एन्टिटी
SL_USBD _DESCRI को परिचय
PTOR_Q ले
UANTITY
SL_USBD _STRING _QUANTI
TY
SL_USBD _OPEN_E NDPOIN TS_QUA NTITY
विवरण तपाईंको सबै कन्फिगरेसनहरूको लागि थपिने USB इन्टरफेसहरूको कुल संख्या। यो धेरै हदसम्म प्रयोग गरिएको वर्ग(हरू) मा निर्भर गर्दछ। वर्ग उदाहरणलाई कति इन्टरफेसहरू चाहिन्छ भन्ने बारे थप जानकारीको लागि, तपाईंको वर्ग(हरू) को "कोरबाट स्रोत आवश्यकताहरू" खण्ड हेर्नुहोस्।
तपाईंको सबै कन्फिगरेसनहरूको लागि थपिने USB वैकल्पिक इन्टरफेसहरूको कुल संख्या। यो धेरै हदसम्म प्रयोग गरिएको वर्ग(हरू) मा निर्भर गर्दछ। यो मान सधैं SL_USBD_INTERFACE_QUANTITY भन्दा बराबर वा बढी हुनुपर्छ। वर्ग उदाहरणलाई कति वैकल्पिक इन्टरफेसहरू आवश्यक पर्दछ भन्ने बारे थप जानकारीको लागि, तपाईंको वर्ग(हरू) को "कोरबाट स्रोत आवश्यकताहरू" खण्ड हेर्नुहोस्।
तपाईंको सबै कन्फिगरेसनहरूको लागि थपिने USB इन्टरफेस समूहहरूको कुल संख्या। यो धेरै हदसम्म प्रयोग गरिएको वर्ग(हरू) मा निर्भर गर्दछ। कति इन्टरफेस समूहहरूलाई कक्षा उदाहरण चाहिन्छ भन्ने बारे थप जानकारीको लागि, तपाईंको वर्ग(हरू) को "कोरबाट स्रोत आवश्यकताहरू" खण्ड हेर्नुहोस्।
तपाईंको सबै कन्फिगरेसनहरूको लागि थपिने कुल एन्डपोइन्ट वर्णनकर्ताहरूको संख्या। यो धेरै हदसम्म प्रयोग गरिएको वर्ग(हरू) मा निर्भर गर्दछ। क्लास इन्स्ट्यान्सलाई कतिवटा एन्डपोइन्ट वर्णनकर्ताहरू चाहिन्छ भन्ने बारे थप जानकारीको लागि, तपाईंको वर्ग(हरू) को "कोरबाट स्रोत आवश्यकताहरू" खण्डमा "एन्डपोइन्टहरूको संख्या" हेर्नुहोस्। ध्यान दिनुहोस् कि नियन्त्रण अन्त्य बिन्दुहरू यहाँ विचार गर्न आवश्यक छैन। USB स्ट्रिङहरूको कुल संख्या। मात्रा शून्यमा सेट गर्नाले सुविधा असक्षम हुनेछ। यसलाई असक्षम गर्नाले उपकरणले अनुप्रयोगबाट पास गरिएका कुनै पनि USB विवरण स्ट्रिङहरू भण्डारण गर्ने छैन। यसको अर्थ होस्टले विवरण स्ट्रिङहरू (जस्तै निर्माता र उत्पादन नाम) पुन: प्राप्त गर्न असमर्थ हुनेछ। प्रति कन्फिगरेसन खोलिएका अन्त्य बिन्दुहरूको कुल संख्या। नियन्त्रण स्थानान्तरणको लागि उपकरणलाई कम्तिमा दुई खोलिएका अन्त्य बिन्दुहरू आवश्यक पर्दछ, तर तपाईंले प्रयोग गरिएको वर्ग(हरू) को अन्त्य बिन्दुहरू पनि थप्नु पर्छ। क्लास इन्स्ट्यान्सलाई कतिवटा खोलिएका अन्त्य बिन्दुहरू आवश्यक पर्दछ भन्ने बारे थप जानकारीको लागि, तपाईंको वर्ग(हरू) को "कोरबाट स्रोत आवश्यकताहरू" खण्डमा "एन्डपोइन्टहरूको संख्या" हेर्नुहोस्।
पूर्वनिर्धारित मान
10 10
2
१३०० ५५६ ८१६
कक्षा कन्फिगरेसन
कक्षाहरूमा विशिष्ट कम्पाइल-टाइम कन्फिगरेसनहरू हुन्छन्। थप जानकारीको लागि USB उपकरण कक्षाहरू हेर्नुहोस्।
USB उपकरण जानकारी कन्फिगरेसन
sl_usbd_device_config.h कन्फिगरेसन file तपाईंको उपकरण सम्बन्धी आधारभूत जानकारी सेट गर्न कम्पाइल-टाइम #define-s लाई पुन: समूहबद्ध गर्दछ, जस्तै विक्रेता/उत्पादन ID, उपकरण स्ट्रिङहरू, आदि। तलको तालिकाले यस कन्फिगरेसनमा उपलब्ध प्रत्येक जानकारी कन्फिगरेसन परिभाषित गर्दछ। file.
तालिका - USB उपकरण जानकारी कन्फिगरेसन परिभाषित गर्दछ
स्थिर
SL_USBD_DEVIC E_VENDOR_ID को परिचय
SL_USBD_DEVIC E_PRODUCT_ID
विवरण USB इम्प्लीमेन्टर्स फोरम द्वारा प्रदान गरिएको तपाईंको विक्रेता पहिचान नम्बर। तपाईंले विक्रेता ID कसरी प्राप्त गर्न सक्नुहुन्छ भन्ने बारे थप जानकारीको लागि, http://www.usb.org/developers/vendor/ हेर्नुहोस्। तपाईंको उत्पादन पहिचान नम्बर।
प्रतिलिपि अधिकार © 2025 सिलिकन प्रयोगशालाहरू। सबै अधिकार सुरक्षित।
१/४
माथिview
स्थिर
विवरण
SL_USBD_DEVICE_RELEASE तपाईंको उपकरणको रिलीज नम्बर। _NUMBER
SL_USBD_DEVICE_MANUFA तपाईंको उपकरणको निर्माता वर्णन गर्ने स्ट्रिङ। यो कन्फिगरेसनलाई बेवास्ता गरिन्छ जब
CTURER_STRING का थप वस्तुहरू
कन्फिगरेसन SL_USBD_STRING_QUANTITY ० मा सेट गरिएको छ।
SL_USBD_DEVICE_PRODUC तपाईंको उत्पादन वर्णन गर्ने स्ट्रिङ। यो कन्फिगरेसनलाई बेवास्ता गरिन्छ जब कन्फिगरेसन
ट_स्ट्रिङ
SL_USBD_STRING_QUANTITY ० मा सेट गरिएको छ।
SL_USBD_DEVICE_SERIAL_N तपाईंको उपकरणको सिरियल नम्बर भएको स्ट्रिङ। यो कन्फिगरेसनलाई बेवास्ता गरिन्छ जब
उम्बर_स्ट्रिङ
कन्फिगरेसन SL_USBD_STRING_QUANTITY ० मा सेट गरिएको छ।
SL_USBD_DEVICE_LANGUA तपाईंको उपकरणको स्ट्रिङको भाषाको पहिचान संख्या। सम्भावित मानहरू यस प्रकार छन्:
GE_ID नामक यन्त्र
– SL_USBD_LANG_ID_ARABIC_SAUDI_ARABIA
– SL_USBD_LANG_ID_CHINESE_TAIWAN
– SL_USBD_LANG_ID_ENGLISH_US
– SL_USBD_LANG_ID_ENGLISH_UK
- SL_USBD_LANG_ID_फ्रेन्च
- SL_USBD_LANG_ID_जर्मन
– SL_USBD_LANG_ID_ग्रीक
– SL_USBD_LANG_ID_ITALIAN
– SL_USBD_LANG_ID_PORTUGUESE
– SL_USBD_LANG_ID_संस्कृत
SL_USBD_STRING_QUANTITY कन्फिगरेसन ० मा सेट गर्दा यो कन्फिगरेसनलाई बेवास्ता गरिन्छ।
USB उपकरण हार्डवेयर कन्फिगरेसन
तपाईंले प्रयोग गरिरहनुभएको सिलिकन ल्याब्स उपकरणको आधारमा, तपाईंसँग USB VBUS सेन्स सिग्नलको लागि कन्फिगर गर्न GPIO पिन र पोर्ट हुन सक्छ। कन्फिगरेसन परिभाषाहरू sl_usbd_hardware_config.h हेडरमा छन्। file.
स्थिर
SL_USBD_DRIVER_VBUS_SENSE_PORT SL_USBD_DRIVER_VBUS_SENSE_PIN
विवरण
तपाईंको बोर्डमा USB VBUS सेन्स सिग्नलको लागि GPIO पोर्ट। तपाईंको बोर्डमा USB VBUS सेन्स सिग्नलको लागि GPIO पिन।
प्रतिलिपि अधिकार © 2025 सिलिकन प्रयोगशालाहरू। सबै अधिकार सुरक्षित।
१/४
माथिview
माथिview
USB उपकरण प्रोग्रामिङ गाइड
यस खण्डले USB उपकरण मोड्युल कसरी प्रयोग गर्ने भनेर व्याख्या गर्दछ।
USB उपकरण मोड्युलको प्रारम्भिक सेटअप
यस खण्डले USB उपकरण मोड्युल सुरु गर्न र उपकरण थप्न, तयार गर्न र सुरु गर्न आवश्यक पर्ने आधारभूत चरणहरू वर्णन गर्दछ। USB उपकरण मोड्युल सुरु गर्दै USB उपकरण कोर सुरु गर्दै aClss(es) सुरु गर्दै तपाईंको USB उपकरण थप्दै तपाईंको USB उपकरण निर्माण गर्दै कन्फिगरेसन(हरू) थप्दै USB प्रकार्य(हरू) थप्दै तपाईंको USB उपकरण सुरु गर्दै
घटना हुक प्रकार्यहरू
USB उपकरण मोड्युल सुरु गर्दै
USB उपकरण कोर सुरु गर्दै
a US a सुरु गर्नुहोस्, sl_usbd_core_init() प्रकार्य क्लिङ् गरेर B उपकरण मोड्युल कोर सुरु गरेर। तलको उदाहरणले sl_usbd_core_init() क्लिङ् देखाउँछ।
Example – sl_usbd_core_init() लाई कल गर्दै
sl_status_t स्थिति; स्थिति = sl_usbd_core_init(); यदि (स्थिति ! SL_STATUS_OK) { /* एउटा त्रुटि भयो। त्रुटि ह्यान्डलिङ यहाँ थपिनुपर्छ। */
}
कक्षा(हरू) सुरु गर्दै
USB उपकरण मोड्युल कोर प्रारम्भ गरिसकेपछि, तपाईंले प्रयोग गर्न चाहनुभएको प्रत्येक कक्षा प्रारम्भ गर्नुपर्छ। थप जानकारीको लागि तपाईंको acl ss(es) को खण्ड "प्रोग्रामिङ गाइड" हेर्नुहोस्।
तपाईंको USB उपकरण निर्माण गर्दै
कन्फिगरेसन(हरू) थप्दै
आफ्नो उपकरण सफलतापूर्वक सुरु गरेपछि, तपाईं नयाँ कन्फिगरेसनबाट सुरु गर्दै, यसमा USB प्रकार्यहरू थप्न सुरु गर्न सक्नुहुन्छ। उपकरणमा कम्तिमा एउटा कन्फिगरेसन हुनुपर्छ। कन्फिगरेसन(हरू) थप्नको लागि, प्रकार्यलाई aa sl_usbd_core_ dd_configur tion() प्रकार्यमा कल गर्नुहोस्। यो प्रकार्य तपाईंले थप्न चाहनुभएको प्रत्येक कन्फिगरेसनको लागि कल गरिनुपर्छ। उदाहरणका लागिampतल पूर्ण-गति कसरी थप्ने भनेर देखाइएको छ।
Example - तपाईंको उपकरणमा कन्फिगरेसन(हरू) थप्दै
प्रतिलिपि अधिकार © 2025 सिलिकन प्रयोगशालाहरू। सबै अधिकार सुरक्षित।
१/४
माथिview
sl_status_t स्थिति; uint8_t config_nbr_fs;
/* उपकरणमा पूर्ण-गतिको कन्फिगरेसन थप्दै। */
स्थिति = sl_usbd_core_add_configuration(0,
/* कन्फिगरेसनमा कुनै विशेष विशेषताहरू छैनन्। */
100u,
/* अधिकतम बिजुली खपत: १००mA।
*/
SL_USBD_DEVICE_SPEED_FULL,
/* पूर्ण-गति कन्फिगरेसन।
*/
"कन्फिगर गर्नुहोस् पूर्व थप्नुहोस्"amp"फुल-स्पीड कन्फिगरेसन",
&config_nbr_fs);
यदि (स्थिति ! SL_STATUS_OK) {
/* एउटा त्रुटि भयो। त्रुटि ह्यान्डलिङ यहाँ थप्नु पर्छ। */
}
USB प्रकार्य(हरू) थप्दै
आफ्नो उपकरणमा कम्तिमा एउटा कन्फिगरेसन सफलतापूर्वक थपेपछि, तपाईंले आफ्नो उपकरणमा इन्टरफेस र अन्त्यबिन्दुहरू थप्न सक्नुहुन्छ। प्रत्येक USB कक्षाको इन्टरफेस र अन्त्यबिन्दुहरूको प्रकार, मात्रा र अन्य प्यारामिटरहरूको सन्दर्भमा आफ्नै आवश्यकताहरू हुन्छन्। सिलिकन ल्याब्स USB उपकरणले यसले प्रदान गर्ने कक्षाहरूमा इन्टरफेस र अन्त्यबिन्दुहरू थप्छ।
तपाईंको एप्लिकेसनबाट, तपाईंले USB क्लास इन्स्ट्यान्टिएट गर्न सक्नुहुन्छ र यसलाई कन्फिगरेसनमा थप्न सक्नुहुन्छ। USB उपकरण क्लास इन्स्ट्यान्सको अवधारणाको बारेमा थप जानकारीको लागि, USB उपकरण क्लासहरू हेर्नुहोस्। ध्यान दिनुहोस् कि तपाईंले बहु-कार्यात्मक (कम्पोजिट) उपकरण सिर्जना गर्न कन्फिगरेसनमा धेरै फरक वर्ग इन्स्ट्यान्सहरू इन्स्ट्यान्टिएट गर्न र थप्न सक्नुहुन्छ।
पूर्वampतल दिइएको जानकारीले क्लास इन्स्ट्यान्स कसरी सिर्जना गर्ने र कन्फिगरेसनमा थप्ने भनेर देखाउँछ।
Example - तपाईंको उपकरणमा कक्षा उदाहरण थप्दै
sl_status_t स्थिति; uint8_t class_nbr;
/* तपाईंले प्रयोग गर्न चाहनुभएको कक्षाको एउटा उदाहरण सिर्जना गर्नुहोस्।*/ /* ध्यान दिनुहोस् कि कक्षाको आधारमा यो प्रकार्यमा धेरै आर्गुमेन्टहरू हुन सक्छन्। */ स्थिति = sl_usbd_ _create_instance(&class_nbr); यदि (स्थिति ! SL_STATUS_OK) { /* एउटा त्रुटि भयो। त्रुटि ह्यान्डलिङ यहाँ थपिनुपर्छ। */ }
/* पूर्ण-गति कन्फिगरेसनमा कक्षाको उदाहरण थप्नुहोस्। */ स्थिति = sl_usbd_ _add_to_configuration(class_nbr, /* sl_usbd_ द्वारा फर्काइएको कक्षा नम्बर _सिर्जना_उदाहरण। */
config_nbr_fs); /* sl_usbd_core_add_configuration() द्वारा फिर्ता गरिएको कन्फिगरेसन नम्बर। */ यदि (स्थिति ! SL_STATUS_OK) { /* एउटा त्रुटि भयो। त्रुटि ह्यान्डलिङ यहाँ थपिनुपर्छ। */ }
तपाईंको USB उपकरण सुरु गर्दै
पूर्वनिर्धारित रूपमा, उपकरण प्रारम्भिक कार्य पूरा भएपछि र कर्नेल सुरु भएपछि USB उपकरण कोर कार्यद्वारा उपकरण स्वचालित रूपमा सुरु हुनेछ। उपकरण कहिले सुरु हुन्छ र USB होस्टद्वारा दृश्यात्मक हुन्छ भनेर नियन्त्रण गर्न, स्वत: सुरु सुविधा असक्षम गर्न कन्फिगरेसन परिभाषित SL_USBD_AUTO_START_USB_DEVICE प्रयोग गर्नुहोस्। असक्षम पारिएपछि, तपाईंले आफ्नो उपकरण निर्माण/तयार गरिसकेपछि, तपाईं यसलाई सुरु गर्न सक्नुहुन्छ र sl_usbd_core_start_device() प्रकार्य कल गरेर USB होस्टलाई दृश्यात्मक बनाउन सक्नुहुन्छ।
पूर्वampतल sl_usbd_core_start_device() प्रकार्य प्रयोग गरेर आफ्नो उपकरण कसरी सुरु गर्ने भनेर देखाइएको छ।
Example - तपाईंको उपकरण सुरु गर्दै
प्रतिलिपि अधिकार © 2025 सिलिकन प्रयोगशालाहरू। सबै अधिकार सुरक्षित।
१/४
माथिview
sl_status_t स्थिति;
status = sl_usbd_core_start_device(); यदि (status ! SL_STATUS_OK) { /* एउटा त्रुटि भयो। त्रुटि ह्यान्डलिङ यहाँ थपिनुपर्छ। */ }
घटना हुक प्रकार्यहरू
USB उपकरण कोर मोड्युलले दुई कमजोर हुक प्रकार्यहरू प्रदान गर्दछ जुन तपाईंले आफ्नो अनुप्रयोगमा पुन: परिभाषित गर्न सक्नुहुन्छ। तिनीहरूको उद्देश्य बस र कन्फिगरेसन घटनाहरू हुँदा सूचित गर्नु हो।
तालिका - USB घटना हुक प्रकार्यहरू
घटना
विवरण
बस
USB बस घटना हुँदा कल गरिन्छ
USB कन्फिगरेसन घटना हुँदा कन्फिगरेसन कल गरिन्छ
प्रकार्य हस्ताक्षर
शून्य sl_usbd_on_bus_event(sl_usbd_bus_event_t घटना); शून्य sl_usbd_on_config_event(sl_usbd_config_event_t घटना, uint8_t config_nbr);
Example – घटना हुक प्रकार्यहरू
शून्य sl_usbd_on_bus_event(sl_usbd_bus_event_t घटना) { स्विच (घटना) { केस SL_USBD_EVENT_BUS_CONNECT:
// होस्ट कन्ट्रोलर ब्रेकमा USB केबल घुसाउँदा कल गरिन्छ;
केस SL_USBD_EVENT_BUS_DISCONNECT: // होस्ट कन्ट्रोलर ब्रेकबाट USB केबल हटाउँदा कल गरिन्छ;
केस SL_USBD_EVENT_BUS_RESET: // होस्टले रिसेट कमाण्ड ब्रेक पठाउँदा कल गरिन्छ;
केस SL_USBD_EVENT_BUS_SUSPEND: // होस्टले सस्पेन्ड कमाण्ड ब्रेक पठाउँदा कल गरिन्छ;
केस SL_USBD_EVENT_BUS_RESUME: // होस्टले वेक अप कमाण्ड ब्रेक पठाउँदा कल गरिन्छ;
पूर्वनिर्धारित: ब्रेक; } }
शून्य sl_usbd_on_config_event(sl_usbd_config_event_t घटना, uint8_t config_nbr) { स्विच (घटना) { केस SL_USBD_EVENT_CONFIG_SET:
// होस्टले कन्फिगरेसन ब्रेक सेट गर्दा कल गरिन्छ;
केस SL_USBD_EVENT_CONFIG_UNSET: // कन्फिगरेसन अनसेट हुँदा कल गरिन्छ ब्रेक;
पूर्वनिर्धारित: ब्रेक; } }
प्रतिलिपि अधिकार © 2025 सिलिकन प्रयोगशालाहरू। सबै अधिकार सुरक्षित।
१/४
माथिview
प्रतिलिपि अधिकार © 2025 सिलिकन प्रयोगशालाहरू। सबै अधिकार सुरक्षित।
१/४
माथिview
माथिview
USB उपकरण कक्षाहरू
सिलिकन ल्याब्स USB उपकरणमा उपलब्ध USB कक्षाहरूले केही सामान्य विशेषताहरू साझा गर्छन्। यो खण्डले यी विशेषताहरू र कोर तहसँगको तिनीहरूको अन्तरक्रियाको बारेमा व्याख्या गर्दछ।
कुनै विशेष कक्षाको बारेमा थप जानकारीको लागि, निम्न हेर्नुहोस्:
CDC ACM कक्षा HID कक्षा MSC SCSI कक्षा विक्रेता वर्ग
कक्षा उदाहरणहरूको बारेमा
USB उपकरणमा उपलब्ध USB कक्षाहरूले वर्ग उदाहरणहरूको अवधारणालाई कार्यान्वयन गर्दछ। वर्ग उदाहरणले उपकरण भित्र एउटा प्रकार्यलाई प्रतिनिधित्व गर्दछ। प्रकार्यलाई एउटा इन्टरफेस वा इन्टरफेसहरूको समूहद्वारा वर्णन गर्न सकिन्छ र यो एक विशिष्ट वर्गसँग सम्बन्धित छ।
प्रत्येक USB वर्ग कार्यान्वयनमा वर्ग उदाहरणको अवधारणामा आधारित केही सामान्य कन्फिगरेसन र प्रकार्यहरू हुन्छन्। सामान्य कन्फिगरेसन र प्रकार्यहरू तलको तालिकामा प्रस्तुत गरिएका छन्। 'स्थिर वा प्रकार्य' स्तम्भ शीर्षकमा, प्लेसहोल्डर XXXX लाई वर्गको नामले प्रतिस्थापन गर्न सकिन्छ: CDC, HID, MSC, CDC_ACM वा VENDOR (प्रकार्य नामहरूको लागि विक्रेता)।
तालिका - बहुवर्ग उदाहरणहरूको अवधारणासँग सम्बन्धित स्थिरांक र कार्यहरू
स्थिरांक वा प्रकार्य
SL_USBD_XXXX_CL ASS_INS TANCE_QUANTITY
SL_USBD_XXXX_CONFIGUR ATION_QUANTITY
sl_usb d _XXXX_cre ate _instance ()
sl_usbd_XXXX_conf मा_थप्नुहोस् ()
विवरण
कक्षा उदाहरणहरूको अधिकतम संख्या कन्फिगर गर्दछ।
कन्फिगरेसनको अधिकतम संख्या कन्फिगर गर्दछ। कक्षा प्रारम्भिकरणको क्रममा, सिर्जना गरिएको कक्षा उदाहरण एक वा बढी कन्फिगरेसनहरूमा थपिनेछ। नयाँ कक्षा उदाहरण सिर्जना गर्दछ।
निर्दिष्ट उपकरण कन्फिगरेसनमा अवस्थित वर्ग उदाहरण थप्छ।
कोड कार्यान्वयनको सन्दर्भमा, वर्गले एक स्थानीय विश्वव्यापी चर घोषणा गर्नेछ जसमा वर्ग नियन्त्रण संरचना समावेश छ। यो वर्ग नियन्त्रण संरचना एक वर्ग उदाहरणसँग सम्बन्धित छ र वर्ग उदाहरण व्यवस्थापन गर्न विशिष्ट जानकारी समावेश गर्नेछ।
निम्न चित्रहरूले धेरै केस परिदृश्यहरू देखाउँछन्। प्रत्येक चित्रमा कोड पूर्व समावेश छample जुन केस परिदृश्यसँग मेल खान्छ।
चित्र - बहु-वर्ग उदाहरणहरू - FS उपकरण (१ इन्टरफेसको साथ १ कन्फिगरेसन) ले एक विशिष्ट USB उपकरणलाई प्रतिनिधित्व गर्दछ। उपकरण पूर्ण-गति (FS) हो र यसमा एकल कन्फिगरेसन समावेश छ। उपकरणको प्रकार्य डेटा संचारको लागि अन्त्य बिन्दुहरूको जोडीबाट बनेको एउटा इन्टरफेसद्वारा वर्णन गरिएको छ। एउटा वर्ग उदाहरण सिर्जना गरिएको छ र तपाईंलाई यसको सम्बन्धित अन्त्य बिन्दुको साथ सम्पूर्ण इन्टरफेस व्यवस्थापन गर्न अनुमति दिनेछ।
चित्र - बहु-वर्ग उदाहरणहरू - १ इन्टरफेसको साथ FS उपकरण १ कन्फिगरेसन)
प्रतिलिपि अधिकार © 2025 सिलिकन प्रयोगशालाहरू। सबै अधिकार सुरक्षित।
१/४
माथिview
चित्र - बहु कक्षा उदाहरणहरू - FS उपकरण (१ इन्टरफेसको साथ १ कन्फिगरेसन) सँग सम्बन्धित कोड उदाहरणमा देखाइएको छ।ample तल।
Example – बहु कक्षा उदाहरणहरू – १ इन्टरफेसको साथ FS उपकरण १ कन्फिगरेसन)
sl_status_t स्थिति; uint8_t वर्ग_0;
void app_usbd_XXXX_enable(uint8_t class_nbr) { /* वर्ग सक्षम घटना ह्यान्डल गर्नुहोस्। */ }
void app_usbd_XXXX_disable(uint8_t class_nbr) { /* क्लास असक्षम घटना ह्यान्डल गर्नुहोस्। */ }
sl_usbd_XXXX_कलब्याक_t वर्ग_कलब्याक = {
(०३०३२५)
.सक्षम गर्नुहोस् = एप_यूएसबीडी_एक्सएक्सएक्स_सक्षम गर्नुहोस्,
.असक्षम गर्नुहोस् = app_usbd_XXXX_असक्षम गर्नुहोस्
};
स्थिति = sl_usbd_XXXX_init();
(०३०३२५)
यदि (स्थिति ! SL_STATUS_OK) {
/* $$$$ त्रुटि सम्हाल्नुहोस्। */
}
स्थिति = sl_usbd_XXXX_create_instance(&class_callbacks,
(०३०३२५)
&class_0);
यदि (स्थिति ! SL_STATUS_OK) {
/* $$$$ त्रुटि सम्हाल्नुहोस्। */
}
स्थिति = sl_usbd_XXXX_configuration मा_थप्नुहोस्(class_0, config_0);
(०३०३२५)
यदि (स्थिति ! SL_STATUS_OK) {
/* $$$$ त्रुटि सम्हाल्नुहोस्। */
}
(१) प्रत्येक कक्षाले उपकरण जडान/विच्छेदन घटनाहरू र वर्ग विशिष्ट घटनाहरूको लागि कलब्याक प्रकार्यहरूको सेट प्रदान गर्दछ। sl_usbd_XXXX_create_instance() सँग वर्ग उदाहरण सिर्जना गर्दा कलब्याक संरचना वस्तु तर्कको रूपमा पास गरिन्छ।
प्रकार्य।
(१) कक्षा सुरु गर्नुहोस्। सबै आन्तरिक चरहरू, संरचनाहरू, र कक्षा पोर्टहरू सुरु गरिनेछन्। ध्यान दिनुहोस् कि केही कक्षाहरूमा Init() प्रकार्यले अन्य आर्गुमेन्टहरू लिन सक्छ।
प्रतिलिपि अधिकार © 2025 सिलिकन प्रयोगशालाहरू। सबै अधिकार सुरक्षित।
१/४
माथिview
(२) क्लास इन्स्ट्यान्स सिर्जना गर्नुहोस्, जुन class_0 हो। प्रकार्य sl_usbd_XXXX_create_instance() ले class_0 सँग सम्बन्धित क्लास नियन्त्रण संरचना आवंटित गर्दछ। क्लासमा निर्भर गर्दै, sl_usbd_XXXX_create_instance() मा क्लास नियन्त्रण संरचनामा भण्डारण गरिएको क्लास-विशिष्ट जानकारी प्रतिनिधित्व गर्ने क्लास नम्बर बाहेक अतिरिक्त प्यारामिटरहरू हुन सक्छन्। aaa (३) निर्दिष्ट कन्फिगरेसन नम्बर, config_0 मा cl ss inst nce, class_0, थप्नुहोस्। sl_usbd_XXXX_add_to_configuration() ले इन्टरफेस ० र यसको सम्बन्धित IN र OUT अन्त्य बिन्दुहरू सिर्जना गर्नेछ। फलस्वरूप, क्लास इन्स्ट्यान्सले इन्टरफेस ० र यसको अन्त्य बिन्दुहरू समेट्छ। इन्टरफेस ० मा गरिएको कुनै पनि सञ्चारले क्लास इन्स्ट्यान्स नम्बर, class_0 प्रयोग गर्नेछ। चित्र - बहु वर्ग उदाहरणहरू - FS उपकरण (२ कन्फिगरेसनहरू र बहु इन्टरफेसहरू) ले थप जटिल पूर्व प्रतिनिधित्व गर्दछ।ample. एउटा पूर्ण-गति उपकरण दुई कन्फिगरेसनहरू मिलेर बनेको हुन्छ। उपकरणमा दुई प्रकार्यहरू छन् जुन एउटै वर्गसँग सम्बन्धित छन्, तर प्रत्येक प्रकार्य दुई इन्टरफेसहरूद्वारा वर्णन गरिएको छ र द्विदिशात्मक अन्त्य बिन्दुहरूको जोडी छ। यस उदाहरणमाampले, दुई वर्ग उदाहरणहरू सिर्जना गरिन्छन्। प्रत्येक वर्ग उदाहरण इन्टरफेसहरूको समूहसँग सम्बन्धित छ जुन चित्र - बहु वर्ग उदाहरणहरू - FS उपकरण (१ इन्टरफेसको साथ १ कन्फिगरेसन) र चित्र - बहु वर्ग उदाहरणहरू - FS उपकरण (२ कन्फिगरेसन र बहु इन्टरफेसहरू) को विपरीत हो जहाँ वर्ग उदाहरण एकल इन्टरफेससँग सम्बन्धित थियो।
चित्र - बहु-वर्ग उदाहरणहरू - FS उपकरण २ कन्फिगरेसनहरू र बहु-इन्टरफेसहरू)
चित्र - बहु कक्षा उदाहरणहरू - FS उपकरण (२ कन्फिगरेसन र बहु इन्टरफेसहरू) सँग सम्बन्धित कोड उदाहरणमा देखाइएको छ।ampतल। स्पष्टताको लागि त्रुटि ह्यान्डलिङ हटाइएको छ।
Example – बहु-वर्ग उदाहरणहरू – FS उपकरण २ कन्फिगरेसनहरू र बहु-इन्टरफेसहरू)
प्रतिलिपि अधिकार © 2025 सिलिकन प्रयोगशालाहरू। सबै अधिकार सुरक्षित।
१/४
माथिview
sl_status_t स्थिति; uint8_t class_0; uint8_t class_1;
स्थिति = sl_usbd_XXXX_init();
स्थिति = sl_usbd_XXXX_create_instance(&class_0); स्थिति = sl_usbd_XXXX_create_instance(&class_1);
स्थिति = sl_usbd_XXXX_configuration मा थप्नुहोस् (वर्ग_०, cfg_०); स्थिति = sl_usbd_XXXX_configuration मा थप्नुहोस् (वर्ग_१, cfg_०);
स्थिति = sl_usbd_XXXX_configuration मा थप्नुहोस् (वर्ग_०, cfg_०); स्थिति = sl_usbd_XXXX_configuration मा थप्नुहोस् (वर्ग_१, cfg_०);
(०३०३२५)
(२) (१)
(२) (१)
(२) (१)
(१) कक्षा सुरु गर्नुहोस्। कुनै पनि आन्तरिक चर, संरचना, र कक्षा पोर्टहरू सुरु गरिनेछ।
(२) क्लास इन्स्ट्यान्स, class_0 सिर्जना गर्नुहोस्। sl_usbd_XXXX_create_instance() प्रकार्यले class_0 सँग सम्बन्धित क्लास नियन्त्रण संरचना आवंटित गर्दछ।
(३) क्लास इन्स्ट्यान्स, class_1 सिर्जना गर्नुहोस्। sl_usbd_XXXX_create_instance() प्रकार्यले class_1 सँग सम्बन्धित अर्को क्लास नियन्त्रण संरचना आवंटित गर्दछ।
(४) cfg_0 कन्फिगरेसनमा क्लास इन्स्ट्यान्स, class_0, थप्नुहोस्। sl_usbd_XXXX_add_to_configuration() ले इन्टरफेस ०, इन्टरफेस १, वैकल्पिक इन्टरफेसहरू, र सम्बन्धित IN र OUT अन्त्य बिन्दुहरू सिर्जना गर्नेछ। क्लास इन्स्ट्यान्स नम्बर, class_0, इन्टरफेस ० वा इन्टरफेस १ मा कुनै पनि डेटा सञ्चारको लागि प्रयोग गरिनेछ।
(५) cfg_0 कन्फिगरेसनमा क्लास इन्स्ट्यान्स, class_1, थप्नुहोस्। sl_usbd_XXXX_add_to_configuration() ले इन्टरफेस २, इन्टरफेस ३ र तिनीहरूसँग सम्बन्धित IN र OUT अन्त्य बिन्दुहरू सिर्जना गर्नेछ। क्लास इन्स्ट्यान्स नम्बर, class_1, इन्टरफेस २ वा इन्टरफेस ३ मा कुनै पनि डेटा सञ्चारको लागि प्रयोग गरिनेछ।
(६) अर्को कन्फिगरेसन, cfg_1 मा उही क्लास इन्स्ट्यान्स, class_0 र class_1 थप्नुहोस्।
प्रत्येक वर्गले sl_usbd_XXXX_callbacks_t प्रकारको संरचना परिभाषित गर्दछ। यसको उद्देश्य प्रत्येक वर्गलाई घटना हुँदा कल गर्न कलब्याक प्रकार्यहरूको सेट दिनु हो। प्रत्येक वर्गमा दुई कलब्याक प्रकार्यहरू उपस्थित छन्। तिनीहरूलाई तलको तालिकामा प्रस्तुत गरिएको छ।
तालिका - सामान्य कक्षा कलब्याक प्रकार्यहरू
क्षेत्रहरूको विवरण .enable USB क्लास इन्स्ट्यान्स सफलतापूर्वक सक्षम हुँदा कल गरिन्छ। .disable USB क्लास इन्स्ट्यान्स असक्षम हुँदा कल गरिन्छ।
प्रकार्य हस्ताक्षर void app_usbd_XXXX_enable(uint8_t class_nbr); void app_usbd_XXXX_disable(uint8_t class_nbr);
प्रतिलिपि अधिकार © 2025 सिलिकन प्रयोगशालाहरू। सबै अधिकार सुरक्षित।
१/४
माथिview
माथिview
USB उपकरण CDC ACM वर्ग
USB उपकरण CDC आधार कक्षा समाप्तview USB उपकरण CDC ACM कक्षा स्रोत आवश्यकताहरू कोर USB उपकरण CDC ACM उपवर्ग ओभरबाटview USB उपकरण CDC ACM कक्षा कन्फिगरेसन USB उपकरण CDC ACM कक्षा प्रोग्रामिङ गाइड
यस खण्डले सञ्चार उपकरण वर्ग (CDC) वर्ग र सिलिकन ल्याब्सको USB उपकरण स्ट्याकद्वारा समर्थित सम्बन्धित CDC उपवर्गको वर्णन गर्दछ। सिलिकन ल्याब्स USB-उपकरणले हाल एब्स्ट्र्याक्ट नियन्त्रण मोडेल (ACM) उपवर्गलाई समर्थन गर्दछ, जुन सामान्यतया सिरियल इमुलेशनको लागि प्रयोग गरिन्छ।
CDC मा विभिन्न दूरसञ्चार र नेटवर्किङ उपकरणहरू समावेश छन्। दूरसञ्चार उपकरणहरूमा एनालग मोडेम, एनालग र डिजिटल टेलिफोन, ISDN टर्मिनल एडेप्टरहरू, आदि समावेश छन्। उदाहरणका लागिampले, नेटवर्किङ उपकरणहरूमा ADSL र केबल मोडेमहरू, इथरनेट एडेप्टरहरू, र हबहरू हुन्छन्। CDC ले USB लिङ्क प्रयोग गरेर V.250 (टेलिफोन नेटवर्कमा मोडेमहरूको लागि) र इथरनेट (स्थानीय क्षेत्र नेटवर्क उपकरणहरूको लागि) जस्ता अवस्थित सञ्चार सेवा मानकहरूलाई समेट्ने रूपरेखा परिभाषित गर्दछ। सञ्चार उपकरणले उपकरण व्यवस्थापन, आवश्यक पर्दा कल व्यवस्थापन, र डेटा प्रसारणको जिम्मेवारीमा हुन्छ।
CDC ले उपकरणहरूको सात प्रमुख समूहहरू परिभाषित गर्दछ। प्रत्येक समूह सञ्चारको मोडेलसँग सम्बन्धित छ, जसमा धेरै उपवर्गहरू समावेश हुन सक्छन्। CDC आधार वर्ग बाहेक उपकरणहरूको प्रत्येक समूहको आफ्नै विशिष्टता कागजात हुन्छ। सात समूहहरू यस प्रकार छन्:
सार्वजनिक स्विच गरिएको टेलिफोन नेटवर्क (PSTN), भ्वाइसब्यान्ड मोडेम, टेलिफोन, र सिरियल इमुलेशन उपकरणहरू सहितका उपकरणहरू। टर्मिनल एडेप्टर र टेलिफोनहरू सहितका एकीकृत सेवाहरू डिजिटल नेटवर्क (ISDN) उपकरणहरू। IEEE 802 परिवारलाई समर्थन गर्ने उपकरणहरू सहितका इथरनेट नियन्त्रण मोडेल (ECM) उपकरणहरू (उदाहरण: केबल र ADSL मोडेम, WiFi एडेप्टरहरू)। ADSL मोडेम र ATM नेटवर्कहरूमा जडान भएका अन्य उपकरणहरू (कार्यस्थान, राउटर, LAN स्विचहरू) सहितका एसिन्क्रोनस ट्रान्सफर मोड (ATM) उपकरणहरू। आवाज र डेटा सञ्चार व्यवस्थापन गर्न प्रयोग गरिने बहु-कार्यात्मक सञ्चार ह्यान्डसेट उपकरणहरू सहितका वायरलेस मोबाइल सञ्चार (WMC) उपकरणहरू। इथरनेट-फ्रेम गरिएको डेटा आदानप्रदान गर्ने इथरनेट इमुलेशन मोडेल (EEM) उपकरणहरू। उच्च-गति नेटवर्क उपकरणहरू सहितका नेटवर्क नियन्त्रण मोडेल (NCM) उपकरणहरू (उच्च गति प्याकेट पहुँच मोडेम, लाइन टर्मिनल उपकरण)
CDC र सम्बन्धित उपवर्ग कार्यान्वयनले निम्न विशिष्टताहरूको पालना गर्दछ:
युनिभर्सल सिरियल बस, सञ्चार उपकरणहरूको लागि वर्ग परिभाषा, संशोधन १.२, नोभेम्बर ३ २०१०। युनिभर्सल सिरियल बस, सञ्चार, PSTN उपकरणहरूको लागि उपवर्ग, संशोधन १.२, फेब्रुअरी ९ २००७।
USB उपकरण CDC आधार कक्षा समाप्तview
सञ्चार क्षमता कार्यान्वयन गर्न CDC उपकरण निम्न इन्टरफेसहरू मिलेर बनेको हुन्छ:
सञ्चार कक्षा इन्टरफेस (CCI) उपकरण व्यवस्थापन र वैकल्पिक रूपमा कल व्यवस्थापनको लागि जिम्मेवार छ।
उपकरण व्यवस्थापनले उपकरणको सामान्य कन्फिगरेसन र नियन्त्रण र होस्टलाई घटनाहरूको सूचना सक्षम बनाउँछ। कल व्यवस्थापनले कल स्थापना र समाप्ति सक्षम बनाउँछ। कल व्यवस्थापन DCI मार्फत मल्टिप्लेक्स हुन सक्छ। सबै CDC उपकरणहरूको लागि CCI अनिवार्य छ। यसले CDC उपकरणद्वारा समर्थित सञ्चार मोडेल निर्दिष्ट गरेर CDC प्रकार्य पहिचान गर्दछ। CCI पछिको इन्टरफेस(हरू) कुनै पनि परिभाषित USB वर्ग इन्टरफेस हुन सक्छ, जस्तै अडियो वा विक्रेता-विशिष्ट इन्टरफेस। विक्रेता-विशिष्ट इन्टरफेस विशेष रूपमा DCI द्वारा प्रतिनिधित्व गरिन्छ।
डाटा क्लास इन्टरफेस (DCI) डाटा प्रसारणको लागि जिम्मेवार छ। प्रसारित र/वा प्राप्त डाटाले कुनै विशिष्ट
ढाँचा। डेटा सञ्चार लाइनबाट कच्चा डेटा, स्वामित्व ढाँचा पछ्याउने डेटा, आदि हुन सक्छ। CCI पछ्याउने सबै DCI हरूलाई अधीनस्थ इन्टरफेसको रूपमा हेर्न सकिन्छ।
एउटा CDC उपकरणमा कम्तिमा एउटा CCI र शून्य वा बढी DCI हुनुपर्छ। एउटा CCI र कुनै पनि अधीनस्थ DCI ले मिलेर होस्टलाई सुविधा प्रदान गर्दछ। यो क्षमतालाई प्रकार्य पनि भनिन्छ। CDC कम्पोजिट उपकरणमा, तपाईंसँग धेरै हुन सक्छन्
प्रतिलिपि अधिकार © 2025 सिलिकन प्रयोगशालाहरू। सबै अधिकार सुरक्षित।
१/४
माथिview
कार्यहरू। त्यसकारण, उपकरण चित्रमा देखाइए अनुसार CCI र DCI(हरू) को धेरै सेटहरू मिलेर बनेको हुनेछ - CDC कम्पोजिट उपकरण।
चित्र - CDC कम्पोजिट उपकरण
CDC उपकरणले निम्न अन्तिम बिन्दुहरूको संयोजन प्रयोग गर्ने सम्भावना हुन्छ:
नियन्त्रण IN र OUT अन्त्यबिन्दुहरूको जोडीलाई पूर्वनिर्धारित अन्त्यबिन्दु भनिन्छ। वैकल्पिक बल्क वा अवरोध IN अन्त्यबिन्दु। बल्क वा आइसोक्रोनस IN र OUT अन्त्यबिन्दुहरूको जोडी। ध्यान दिनुहोस् कि सिलिकन ल्याब्स USB उपकरण स्ट्याकले हाल आइसोक्रोनस अन्त्यबिन्दुहरूलाई समर्थन गर्दैन।
तलको तालिकाले विभिन्न अन्त्य बिन्दुहरूको प्रयोग र CDC को कुन इन्टरफेसद्वारा तिनीहरू प्रयोग गरिन्छ भनेर देखाउँछ।
तालिका - CDC अन्त्यबिन्दु प्रयोग
अन्तिम बिन्दु
IN नियन्त्रण गर्नुहोस्
नियन्त्रण बाहिर
थोक वा आइसोक्रोनसमा अवरोध वा थोक
बाहिर
दिशा
उपकरण-होस्ट
होस्ट-टुडिभाइस
उपकरण-होस्ट
उपकरण-होस्ट
होस्ट-टुडिभाइस
इन्टरफेस प्रयोग
CCI
गणनाको लागि मानक अनुरोधहरू, वर्ग-विशिष्ट अनुरोधहरू, उपकरण
व्यवस्थापन, र वैकल्पिक रूपमा व्यवस्थापनलाई कल गर्नुहोस्।
CCI
गणनाको लागि मानक अनुरोधहरू, वर्ग-विशिष्ट अनुरोधहरू, उपकरण
व्यवस्थापन, र वैकल्पिक रूपमा व्यवस्थापनलाई कल गर्नुहोस्।
CCI
घटना सूचना, जस्तै घण्टी पत्ता लगाउने, सिरियल लाइन स्थिति, नेटवर्क स्थिति।
DCI
कच्चा वा ढाँचाबद्ध डेटा सञ्चार।
DCI
कच्चा वा ढाँचाबद्ध डेटा सञ्चार।
धेरैजसो सञ्चार उपकरणहरूले घटनाहरूको होस्टलाई सूचित गर्न अवरोध अन्त्यबिन्दु प्रयोग गर्छन्। USB प्रोटोकल त्रुटिहरूको अवस्थामा स्वामित्व प्रोटोकलले डेटा पुन: प्रसारणमा निर्भर गर्दा डेटा प्रसारणको लागि आइसोक्रोनस अन्त्यबिन्दुहरू प्रयोग गर्नु हुँदैन। आइसोक्रोनस सञ्चारले स्वाभाविक रूपमा डेटा गुमाउन सक्छ किनभने यसमा पुन: प्रयास गर्ने संयन्त्र छैन।
सञ्चारका सात प्रमुख मोडेलहरूले धेरै उपवर्गहरू समेट्छन्। एउटा उपवर्गले उपकरण व्यवस्थापन र कल व्यवस्थापन ह्यान्डल गर्न उपकरणले CCI प्रयोग गर्ने तरिका वर्णन गर्दछ। तलको तालिकाले सबै सम्भावित उपवर्गहरू र तिनीहरूसँग सम्बन्धित सञ्चार मोडेल देखाउँछ।
तालिका - CDC उपवर्गहरू
उपवर्ग
प्रत्यक्ष रेखा नियन्त्रण मोडेल सार नियन्त्रण मोडेल
सञ्चार मोडेल
PSTN
PSTN
Exampयो उपवर्ग प्रयोग गर्ने उपकरणहरूको विवरण
USB होस्टद्वारा सिधै नियन्त्रित मोडेम उपकरणहरू
सिरियल इमुलेशन उपकरणहरू, सिरियल कमाण्ड सेट मार्फत नियन्त्रित मोडेम उपकरणहरू
प्रतिलिपि अधिकार © 2025 सिलिकन प्रयोगशालाहरू। सबै अधिकार सुरक्षित।
१/४
माथिview
उपवर्ग
सञ्चार मोडेल
Exampयो उपवर्ग प्रयोग गर्ने उपकरणहरूको विवरण
टेलिफोन नियन्त्रण मोडेल
PSTN
बहु-च्यानल नियन्त्रण ISDN मोडेल
CAPI नियन्त्रण मोडेल ISDN
इथरनेट नेटवर्किङ ECM नियन्त्रण मोडेल
एटीएम नेटवर्किङ
ATM
नियन्त्रण मोडेल
वायरलेस ह्यान्डसेट नियन्त्रण मोडेल
डब्लुएमसी
उपकरण व्यवस्थापन WMC
मोबाइल डाइरेक्ट लाइन मोडेल
डब्लुएमसी
ओबेक्स
डब्लुएमसी
इथरनेट इमुलेशन EEM मोडेल
नेटवर्क नियन्त्रण मोडेल
NCM
भ्वाइस टेलिफोनी उपकरणहरू
आधारभूत दर टर्मिनल एडेप्टरहरू, प्राथमिक दर टर्मिनल एडेप्टरहरू, टेलिफोनहरू
आधारभूत दर टर्मिनल एडेप्टरहरू, प्राथमिक दर टर्मिनल एडेप्टरहरू, टेलिफोनहरू DOC-SIS केबल मोडेमहरू, PPPoE इमुलेशनलाई समर्थन गर्ने ADSL मोडेमहरू, Wi-Fi एडेप्टरहरू (IEEE 802.11-परिवार), IEEE 802.3 एडेप्टरहरू ADSL मोडेमहरू
वायरलेस उपकरणहरूमा जडान हुने मोबाइल टर्मिनल उपकरणहरू
वायरलेस उपकरणहरूमा जडान हुने मोबाइल टर्मिनल उपकरणहरू वायरलेस उपकरणहरूमा जडान हुने मोबाइल टर्मिनल उपकरणहरू
वायरलेस उपकरणहरूमा जडान गर्ने मोबाइल टर्मिनल उपकरणहरू यातायातको अर्को तहको रूपमा इथरनेट फ्रेमहरू प्रयोग गर्ने उपकरणहरू। राउटिङ र इन्टरनेट जडान उपकरणहरूको लागि अभिप्रेरित छैन IEEE 802.3 एडेप्टरहरू नेटवर्कमा उच्च-गति डेटा ब्यान्डविथ बोक्ने
कोरबाट USB उपकरण CDC ACM कक्षा स्रोत आवश्यकताहरू
प्रत्येक पटक तपाईंले sl_usbd_cdc_acm_add_to_configuration() प्रकार्यमा कल मार्फत USB कन्फिगरेसनमा CDC ACM क्लास इन्स्ट्यान्स थप्दा, निम्न स्रोतहरू कोरबाट आवंटित गरिनेछ।
स्रोत
इन्टरफेसहरू वैकल्पिक इन्टरफेसहरू अन्त्यबिन्दुहरू इन्टरफेस समूहहरू
मात्रा
३५ ६७ ३५ ६७
ध्यान दिनुहोस् कि ती संख्याहरू प्रति कन्फिगरेसन हुन्। तपाईंको SL_USBD_INTERFACE_QUANTITY , SL_USBD_ALT_INTERFACE_QUANTITY , SL_USBD_INTERFACE_GROUP_QUANTITY र SL_USBD_DESCRIPTOR_QUANTITY कन्फिगरेसन मानहरू सेट अप गर्दा, कक्षा कति कन्फिगरेसनहरू थपिनेछन् भन्ने कुरालाई ध्यानमा राख्न नबिर्सनुहोस्। SL_USBD_OPEN_ENDPOINTS_QUANTITY कन्फिगरेसन मानको लागि, होस्टद्वारा कन्फिगरेसन सेट गर्दा मात्र अन्त्यबिन्दुहरू खोलिने भएकोले, तपाईंले कक्षाको उदाहरणको लागि आवश्यक अन्त्यबिन्दुहरूको संख्यालाई मात्र ध्यानमा राख्नु पर्छ।
USB उपकरण CDC ACM उपवर्ग ओभरview
CDC आधार वर्ग सञ्चार वर्ग इन्टरफेस (CCI) र डेटा वर्ग इन्टरफेस (DCI) मिलेर बनेको हुन्छ, जसको बारेमा USB उपकरण CDC आधार वर्ग ओभरमा विस्तृत रूपमा छलफल गरिएको छ।view । यो खण्डले ACM प्रकारको CCI को बारेमा छलफल गर्दछ। यसमा व्यवस्थापन तत्वको लागि पूर्वनिर्धारित अन्त्यबिन्दु र सूचना तत्वको लागि अवरोध अन्त्यबिन्दु हुन्छ। DCI मा अनिर्दिष्ट डेटा बोक्न बल्क अन्त्यबिन्दुहरूको एक जोडी प्रयोग गरिन्छ।
ACM उपवर्ग दुई प्रकारका सञ्चार उपकरणहरूद्वारा प्रयोग गरिन्छ:
AT आदेशहरूलाई समर्थन गर्ने उपकरणहरू (उदाहरणका लागि, भ्वाइसब्यान्ड मोडेमहरू)। सिरियल इमुलेशन उपकरणहरू जसलाई भर्चुअल COM पोर्ट उपकरणहरू पनि भनिन्छ।
ACM उपवर्गको लागि धेरै उपवर्ग-विशिष्ट अनुरोधहरू छन्। तिनीहरूले तपाईंलाई उपकरण नियन्त्रण र कन्फिगर गर्न अनुमति दिन्छन्। सबै ACM अनुरोधहरूको पूर्ण सूची र विवरण विशिष्टतामा पाउन सकिन्छ।
प्रतिलिपि अधिकार © 2025 सिलिकन प्रयोगशालाहरू। सबै अधिकार सुरक्षित।
१/४
माथिview PSTN उपकरणहरूको लागि उपवर्ग, संशोधन १.२, फेब्रुअरी ९, २००७ =, खण्ड ६.२.२।
यस सूचीबाट, सिलिकन ल्याब्स९ एसीएम उपवर्गले निम्नलाई समर्थन गर्दछ:
तालिका - सिलिकन ल्याब्स द्वारा समर्थित ACM अनुरोधहरू
उपवर्ग अनुरोध विवरण
सेटकमफिचर गेटकमफिचर क्लियरकमफिचर
दिइएको सञ्चार सुविधाको सेटिङहरू नियन्त्रण गर्न होस्टले यो अनुरोध पठाउँछ। सिरियल इमुलेशनको लागि प्रयोग गरिँदैन।
दिइएको सञ्चार सुविधाको लागि हालको सेटिङहरू प्राप्त गर्न होस्टले यो अनुरोध पठाउँछ। सिरियल इमुलेशनको लागि प्रयोग गरिँदैन।
दिइएको सञ्चार सुविधाको लागि सेटिङहरू खाली गर्न होस्टले यो अनुरोध पठाउँछ। सिरियल इमुलेशनको लागि प्रयोग गरिँदैन।
सेटलाइन कोडिङ
होस्टले ACM उपकरण सेटिङहरू कन्फिगर गर्न यो अनुरोध पठाउँछ: बाउड दर, स्टप बिटहरूको संख्या, समानता प्रकार र डेटा बिटहरूको संख्या। सिरियल इमुलेशनको लागि, यो अनुरोध प्रत्येक पटक खुला भर्चुअल COM पोर्टको लागि सिरियल सेटिङहरू कन्फिगर गर्दा सिरियल टर्मिनलद्वारा स्वचालित रूपमा पठाइन्छ।
गेटलाइनकोडिङ
होस्टले हालको ACM सेटिङहरू (बड रेट, स्टप बिट्स, प्यारिटी, डेटा बिट्स) प्राप्त गर्न यो अनुरोध पठाउँछ। सिरियल इमुलेशनको लागि, सिरियल टर्मिनलहरूले भर्चुअल COM पोर्ट खोल्ने क्रममा स्वचालित रूपमा यो अनुरोध पठाउँछन्।
SetControlLineState होस्टले हाफ-डुप्लेक्स मोडेमहरूको लागि क्यारियर नियन्त्रण गर्न यो अनुरोध पठाउँछ र डाटा टर्मिनल उपकरण (DTE) तयार छ वा छैन भनेर संकेत गर्दछ। सिरियल इमुलेशन केसमा, DTE एक सिरियल टर्मिनल हो। सिरियल इमुलेशनको लागि, निश्चित सिरियल टर्मिनलहरूले तपाईंलाई नियन्त्रण सेटको साथ यो अनुरोध पठाउन अनुमति दिन्छ।
सेटब्रेक
होस्टले RS-232 शैली ब्रेक उत्पन्न गर्न यो अनुरोध पठाउँछ। सिरियल इमुलेशनको लागि, निश्चित सिरियल टर्मिनलहरूले तपाईंलाई यो अनुरोध पठाउन अनुमति दिन्छ।
सिलिकन ल्याब्स९ एसीएम उपवर्गले हालको सिरियल लाइन अवस्थाको बारेमा होस्टलाई सूचित गर्न इन्टरप्ट IN एन्डपोइन्ट प्रयोग गर्दछ। सिरियल
लाइन स्टेट भनेको होस्टलाई निम्न बारे जानकारी दिने बिटम्याप हो:
ओभररन प्यारिटी त्रुटिका कारण डेटा खारेज गरियो फ्रेमिङ त्रुटि रिङ सिग्नल पत्ता लगाउने अवस्था ब्रेक पत्ता लगाउने संयन्त्रको अवस्था ट्रान्समिसन क्यारियरको अवस्था रिसीभर क्यारियर पत्ता लगाउने अवस्था
सिलिकन ल्याब्स९ एसीएम उपवर्ग कार्यान्वयनले निम्न विशिष्टताहरूको पालना गर्दछ:
युनिभर्सल सिरियल बस, सञ्चार, PSTN उपकरणहरूको लागि उपवर्ग, संशोधन १.२, फेब्रुअरी ९, २००७।
USB उपकरण CDC ACM वर्ग कन्फिगरेसन
यस खण्डले CDC ACM कक्षा (सञ्चार उपकरण वर्ग, सार नियन्त्रण मोडेल) कसरी कन्फिगर गर्ने भनेर छलफल गर्दछ। कन्फिगरेसन प्यारामिटरहरूको दुई समूहहरू छन्:
USB उपकरण CDC ACM वर्ग अनुप्रयोग विशिष्ट कन्फिगरेसनहरू USB उपकरण CDC ACM वर्ग उदाहरण कन्फिगरेसनहरू
USB उपकरण CDC ACM कक्षा अनुप्रयोग विशिष्ट कन्फिगरेसनहरू
CDC आधार वर्ग ACM उपवर्ग
CDC आधार वर्ग
पहिले, सिलिकन ल्याब्स USB उपकरण CDC वर्ग मोड्युल प्रयोग गर्न, तपाईंले आफ्नो अनुप्रयोग आवश्यकता अनुसार CDC कम्पाइल-टाइम कन्फिगरेसन #define-s समायोजन गर्नुपर्नेछ। तिनीहरू sl_usbd_core_config.h हेडर भित्र पुन: समूहबद्ध छन्। file CDC खण्ड अन्तर्गत। तिनीहरूको उद्देश्य USB उपकरण मोड्युललाई कति USB CDC वस्तुहरू आवंटित गर्ने भन्ने बारे जानकारी गराउनु हो।
प्रतिलिपि अधिकार © 2025 सिलिकन प्रयोगशालाहरू। सबै अधिकार सुरक्षित।
१/४
माथिview
तलको तालिकाले यस कन्फिगरेसन संरचनामा उपलब्ध प्रत्येक कन्फिगरेसन फिल्डको वर्णन गर्दछ।
तालिका - USB उपकरण CDC कन्फिगरेसन परिभाषित गर्दछ
कन्फिगरेसन नाम
S_INSTANCE_QUANT ITY को रूपमा SL_USBD_CDC_CL
SL_USBD_CDC_CONF IGURATION_QUANTI को परिचय
TY
SL_USBD_CDC_DATA _INTERFACE_QUANTI
TY
विवरण
प्रकार्यमा कल मार्फत तपाईंले आवंटित गर्नुहुने कक्षा उदाहरणहरूको संख्या
sl_usbd_cdc_acm_create_instance()।
कन्फिगरेसनहरूको संख्या। ACM क्लास उदाहरणहरू sl_usbd_cdc_acm_add_to_configuration() मा एक वा बढी aaaa कन्फिगरेसनहरूमा थप्न सकिन्छ।
सबै CDC प्रकार्यहरूको लागि डेटा इन्टरफेस (DCI) को कुल संख्या। प्रत्येक CDC ACM प्रकार्यले sl_usbd_cdc_acm_create_instance() प्रकार्यमा dd dt interf ce गर्नेछ।
पूर्वनिर्धारित मान
2
1
2
ACM उपवर्ग
ACM उपवर्गमा तलको तालिकामा देखाइएको एउटा कम्पाइल-टाइम कन्फिगरेसन छ।
तालिका - USB उपकरण CDC ACM कन्फिगरेसन परिभाषित गर्नुहोस्
कन्फिगरेसन नाम
SL_USBD_CDC_ACM_SUBCL ASS_I NSTANCE_QUANTITY
विवरण
तपाईंले कल मार्फत आवंटित गर्नुहुने उपवर्ग उदाहरणहरूको संख्या कन्फिगर गर्दछ
प्रकार्य sl_usbd_cdc_acm_create_instance() ।
पूर्वनिर्धारित मान
2
USB उपकरण CDC ACM कक्षा उदाहरण कन्फिगरेसनहरू
यो खण्डले CDC ACM सिरियल क्लास इन्स्ट्यान्ससँग सम्बन्धित कन्फिगरेसनहरू परिभाषित गर्दछ। क्लास इन्स्ट्यान्स सिर्जना लाइन स्टेट इन्टरभल कल mgmt क्षमताहरू p_acm_callbacks
कक्षा उदाहरण सिर्जना
CDC ACM सिरियल क्लास इन्स्ट्यान्स सिर्जना गर्न, फंक्शन T a sl_usbd_cdc_acm_create_instance() लाई कल गर्नुहोस्। यहाँ वर्णन गरिए अनुसार, उसको फंक्शनले तीन कन्फिगरेसन आर्गुमेन्टहरू समावेश गर्दछ।
लाइन_स्टेट_इन्टरभल
यो अन्तराल (मिलिसेकेन्डमा) हो जुन तपाईंको CDC ACM सिरियल क्लास इन्स्ट्यान्सले T aa होस्टलाई लाइन स्टेट सूचनाहरू रिपोर्ट गर्नेछ। उसको v lue दुईको पावर (१, २, ४, ८, १६, आदि) हुनुपर्छ।
कल_एमजीएमटी_क्षमताहरू
कल व्यवस्थापन क्षमताहरू बिटम्याप। बिटम्यापका सम्भावित मानहरू निम्नानुसार छन्:
मान (बिट)
SL_USBD_ACM_SERIAL_CALL_MGMT_DEV को लागि सोधपुछ गर्नुहोस्।
SL_USBD_ACM_SERIAL_CALL_MGMT_DATA_CCI _DCI
विवरण
उपकरणले कल व्यवस्थापन आफैं ह्यान्डल गर्छ। उपकरणले डेटा क्लास इन्टरफेस मार्फत कल व्यवस्थापन जानकारी पठाउन/प्राप्त गर्न सक्छ।
p_acm_कलब्याकहरू
प्रतिलिपि अधिकार © 2025 सिलिकन प्रयोगशालाहरू। सबै अधिकार सुरक्षित।
१/४
माथिview
aa M aa p_acm_callbacks sl_usbd_cdc_acm_callbacks_t प्रकारको संरचनाको लागि सूचक हो। यसको उद्देश्य CDC AC Cl ss सेटलाई CDC ACM घटना हुँदा कल गर्न कलब्याक प्रकार्यहरू दिनु हो। सबै कलब्याकहरू अनिवार्य हुँदैनन् र कलब्याक आवश्यक नभएको बेला कलब्याक संरचना चरमा शून्य सूचक (NULL) पास गर्न सकिन्छ। तलको तालिकाले यस कन्फिगरेसन संरचनामा उपलब्ध प्रत्येक कन्फिगरेसन फिल्डको वर्णन गर्दछ।
तालिका – sl_usbd_cdc_acm _callbacks_t कन्फिगरेसन संरचना
क्षेत्रहरू
विवरण
सक्षम पार्नुहोस्
USB क्लास इन्स्ट्यान्स सक्षम हुँदा कल गरिन्छ
सफलतापूर्वक।
.असक्षम पार्नुहोस्
USB क्लास इन्स्ट्यान्स असक्षम पारिएको बेला कल गरिन्छ।
.line_control_changed लाइन नियन्त्रण परिवर्तन प्राप्त हुँदा कल गरिन्छ।
line_coding_changed लाइन कोडिङ परिवर्तन प्राप्त हुँदा कल गरिन्छ।
प्रकार्य हस्ताक्षर
शून्य एप_usbd_cdc_acm_enable(uint8_t सबक्लास_nbr);
शून्य एप_usbd_cdc_acm_disable(uint8_t सबक्लास_nbr);
void app_usbd_cdc_acm_line_control_changed(uint8_t subclass_nbr, uint8_t event, uint8_t event_chngd); bool app_usbd_cdc_acm_line_coding_changed(uint8_t subclass_nbr, subclass_nbr, sl_usbd_cdc_acm_line_coding_t
*पी_लाइन_कोडिङ
कलब्याक प्रकार्यहरूको लागि घटना सूचना कलब्याक दर्ता गर्ने खण्ड हेर्नुहोस् उदाहरणample।
USB उपकरण CDC ACM कक्षा प्रोग्रामिङ गाइड
यस खण्डले CDC एब्स्ट्र्याक्ट कन्ट्रोल मोडेल क्लास कसरी प्रयोग गर्ने भनेर व्याख्या गर्दछ। USB उपकरण सुरु गर्दै CDC ACM क्लास तपाईंको उपकरणमा USB उपकरण CDC ACM क्लास इन्स्ट्यान्स थप्दै CDC ACM क्लास प्रयोग गरेर सञ्चार गर्दै
USB उपकरण CDC ACM कक्षा सुरु गर्दै
तपाईंको उपकरणमा CDC ACM वर्ग कार्यक्षमता थप्नको लागि, तपाईंले पहिले sl_usbd_cdc_init() र sl_usbd_cdc_acm_init() प्रकार्यहरू aacll गरेर CDC आधार वर्ग र ACM उपवर्ग सुरु गर्नुपर्छ। तलको उदाहरणले पूर्वनिर्धारित तर्कहरू प्रयोग गरेर sl_usbd_cdc_init() र sl_usbd_cdc_acm_init() कसरी cll गर्ने भनेर देखाउँछ।
Example – CDC ACM कक्षाको सुरुवात
sl_status_t स्थिति;
status = sl_usbd_cdc_init(); यदि (status ! SL_STATUS_OK) { /* एउटा त्रुटि भयो। त्रुटि ह्यान्डलिङ यहाँ थपिनुपर्छ। */
}
स्थिति = sl_usbd_cdc_acm_init(); यदि (स्थिति ! SL_STATUS_OK) { /* एउटा त्रुटि भयो। त्रुटि ह्यान्डलिङ यहाँ थपिनुपर्छ। */
}
तपाईंको उपकरणमा USB उपकरण CDC ACM कक्षा उदाहरण थप्दै
तपाईंको उपकरणमा CDC ACM वर्ग कार्यक्षमता थप्नको लागि, तपाईंले एउटा उदाहरण सिर्जना गर्नुपर्छ, त्यसपछि यसलाई आफ्नो उपकरणको कन्फिगरेसन(हरू) मा थप्नुपर्छ।
CDC ACM कक्षाको उदाहरण सिर्जना गर्दै
प्रतिलिपि अधिकार © 2025 सिलिकन प्रयोगशालाहरू। सबै अधिकार सुरक्षित।
१/४
माथिview
तपाईंको उपकरणको कन्फिगरेसन(हरू) मा CDC ACM कक्षाको उदाहरण थप्दै घटना सूचना कलब्याकहरू दर्ता गर्दै
CDC ACM कक्षाको उदाहरण सिर्जना गर्दै
aa M aaa sl_usbd_cdc_acm_create_instance() प्रकार्य प्रयोग गरेर CDC AC clss instnce सिर्जना गर्नुहोस्। तलको उदाहरणले sl_usbd_cdc_acm_create_instance() मा CDC AC clss instnce कसरी सिर्जना गर्ने भनेर देखाउँछ।
Example – sl_usbd_cdc_acm_create_instance() मार्फत CDC ACM प्रकार्य सिर्जना गर्दै
uint8_t उपवर्ग_nbr; sl_status_t स्थिति;
स्थिति = sl_usbd_cdc_acm_create_instance(64u, SL_USBD_ACM_SERIAL_CALL_MGMT_DATA_CCI_DCI | SL_USBD_ACM_SERIAL_CALL_MGMT_DEV, NULL, &subclass_nbr);
यदि (स्थिति ! SL_STATUS_OK) { /* एउटा त्रुटि भयो। त्रुटि ह्यान्डलिङ यहाँ थपिनुपर्छ। */
}
तपाईंको उपकरणको कन्फिगरेसन(हरू) मा CDC ACM कक्षाको उदाहरण थप्दै
तपाईंले CDC ACM क्लास इन्स्ट्यान्स सिर्जना गरेपछि, तपाईंले प्रकार्यलाई कल गरेर कन्फिगरेसनमा थप्न सक्नुहुन्छ
sl_usbd_cdc_acm_कन्फिगरेसनमा_थप्नुहोस्()।
तलको उदाहरणले sl_usbd_cdc_acm_add_to_configuration() कसरी गर्ने भनेर देखाउँछ।
Example – USBD ACM sl_usbd_cdc_acm_add_to_configuration() मा कल गर्नुहोस्
sl_status_t स्थिति;
स्थिति = sl_usbd_cdc_acm_add_to_configuration(subclass_nbr,
(०३०३२५)
कन्फिग_एनबीआर_एफएस);
(०३०३२५)
यदि (स्थिति ! SL_STATUS_OK) {
/* एउटा त्रुटि भयो। त्रुटि ह्यान्डलिङ यहाँ थप्नु पर्छ। */
}
aaa (१) sl_usbd_cdc_acm_create_instance() द्वारा फिर्ता गरिएको कन्फिगरेसनमा dd गर्न Cl ss नम्बर। (२) कन्फिगरेसन नम्बर (यहाँ यसलाई पूर्ण-गति कन्फिगरेसनमा थप्दै)।
घटना सूचना कलब्याकहरू दर्ता गर्दै
CDC ACM सिरियल क्लासले तपाईंको आवेदनलाई सूचना कलब्याक प्रकार्यहरू मार्फत लाइन नियन्त्रण वा कोडिङमा कुनै पनि परिवर्तनहरूको बारेमा सूचित गर्न सक्छ। ACM उदाहरण सिर्जना गर्दा कलब्याक प्रकार्य संरचनालाई तर्कको रूपमा पास गर्न सकिन्छ। ध्यान दिनुहोस् कि ती कलब्याकहरू वैकल्पिक छन्। उदाहरणample – CDC ACM कलब्याक दर्ताले कलब्याक दर्ता प्रकार्यहरूको प्रयोगलाई चित्रण गर्दछ। उदाहरणample – CDC ACM कलब्याक कार्यान्वयनले एक पूर्व देखाउँछampकलब्याक प्रकार्यहरूको कार्यान्वयनको le।
Example – CDC ACM कलब्याक दर्ता
प्रतिलिपि अधिकार © 2025 सिलिकन प्रयोगशालाहरू। सबै अधिकार सुरक्षित।
१/४
माथिview
uint8_t उपवर्ग_nbr; sl_status_t स्थिति;
sl_usbd_cdc_acm_callbacks_t sli_usbd_cdc_acm_callbacks = { एप_usbd_cdc_acm_कनेक्ट, एप_usbd_cdc_acm_डिस्कनेक्ट, एप_usbd_cdc_acm_लाइन_नियन्त्रण_परिवर्तन गरिएको, एप_usbd_cdc_acm_लाइन_कोडिङ_परिवर्तन गरिएको, };
स्थिति = sl_usbd_cdc_acm_create_instance(64u, SL_USBD_ACM_SERIAL_CALL_MGMT_DATA_CCI_DCI | SL_USBD_ACM_SERIAL_CALL_MGMT_DEV, &sli_usbd_cdc_acm_callbacks, &subclass_nbr);
यदि (स्थिति ! SL_STATUS_OK) { /* एउटा त्रुटि भयो। त्रुटि ह्यान्डलिङ यहाँ थपिनुपर्छ। */ }
Example – CDC ACM कलब्याक कार्यान्वयन
बुल एप_यूएसबीडी_सीडीसी_एसीएम_लाइन_कोडिङ_परिवर्तन गरियो (uint8_t
उपवर्ग_एनबीआर,
sl_usbd_cdc_acm_लाइन_कोडिङ_t *p_लाइन_कोडिङ)
{
uint32_t बाउड्रेट_नयाँ;
uint8_t समानता_नयाँ;
uint8_t स्टप_बिट_नयाँ;
uint8_t डाटा_बिट_नयाँ;
/* गर्नुपर्ने काम नयाँ लाइन कोडिङ लागू गर्नुहोस्।*/ baudrate_new = p_line_coding->BaudRate; parity_new = p_line_coding->Parity; stop_bits_new = p_line_coding->StopBits; data_bits_new = p_line_coding->DataBits;
फिर्ता (सत्य);
(०३०३२५)
}
void app_usbd_cdc_acm_line_control_changed (uint8_t subclass_nbr, uint8_t घटना, uint8_t घटना_परिवर्तन गरिएको)
{ बुल आरटीएस_स्टेट; बुल आरटीएस_स्टेट_परिवर्तन गरिएको; बुल डीटीआर_स्टेट; बुल डीटीआर_स्टेट_परिवर्तन गरिएको; बुल ब्रक_स्टेट; बुल ब्रक_स्टेट_परिवर्तन गरिएको;
/* गर्नुपर्ने काम नयाँ लाइन नियन्त्रण लागू गर्नुहोस्। */ 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 = ((घटना_परिवर्तन गरिएको र SL_USBD_CDC_ACM_CTRL_BREAK) ! ०) ? सत्य : गलत;
}
(१) यदि लाइन कोडिङ लागू गर्न असफल भएमा यो प्रकार्यमा गलत फर्काउनु महत्त्वपूर्ण छ। अन्यथा, सत्य फर्काउनुहोस्।
CDC ACM कक्षा प्रयोग गरेर सञ्चार गर्ने
सिरियल स्थिति
लाइन कोडिङ लाइन नियन्त्रण
प्रतिलिपि अधिकार © 2025 सिलिकन प्रयोगशालाहरू। सबै अधिकार सुरक्षित।
१/४
माथिview
लाइन स्टेट सबक्लास इन्स्ट्यान्स कम्युनिकेसन
सिरियल स्थिति
लाइन कोडिङ
USB होस्टले CDC ACM उपकरणको लाइन कोडिङ (बड रेट, समानता, आदि) नियन्त्रण गर्दछ। आवश्यक पर्दा, अनुप्रयोग लाइन कोडिङ सेट गर्न जिम्मेवार हुन्छ। तलको तालिकामा वर्णन गरिए अनुसार, हालको लाइन कोडिङ पुन: प्राप्त गर्न र सेट गर्न दुई प्रकार्यहरू प्रदान गरिएका छन्।
तालिका - CDC ACM लाइन कोडिङ कार्यहरू
कार्य
sl_usbd_cdc_acm_g र t_line _co d ing ()
sl_usbd_cdc_acm_s र t_line _cod ing ()
विवरण
तपाईंको एप्लिकेसनले हालको लाइन कोडिङ सेटिङहरू सेट गर्न सक्छ जुन होस्टबाट SetLineCoding अनुरोधहरू वा प्रकार्य sl_usbd_cdc_acm_set_line_coding() मार्फत सेट गरिएको छ।
तपाईंको एप्लिकेसनले लाइन कोडिङ सेट गर्न सक्छ। होस्टले GetLineCoding अनुरोधको साथ सेटिङहरू पुन: प्राप्त गर्न सक्छ।
लाइन नियन्त्रण
USB होस्टले CDC ACM उपकरणको लाइन नियन्त्रण (RTS र DTR पिन, ब्रेक सिग्नल, र यस्तै अन्य) नियन्त्रण गर्दछ। आवश्यक पर्दा, तपाईंको अनुप्रयोग लाइन नियन्त्रणहरू लागू गर्न जिम्मेवार हुन्छ। तलको तालिकामा वर्णन गरिए अनुसार हालको लाइन नियन्त्रणहरू पुन: प्राप्त गर्न र सेट गर्न एउटा प्रकार्य प्रदान गरिएको छ।
तालिका - CDC ACM लाइन नियन्त्रण कार्यहरू
कार्य
sl_usb d _cd c_acm_g e t_line _co ntr o l_state ()
तपाईंको एप्लिकेसनले SetControlLineState अनुरोधको साथ होस्टद्वारा सेट गरिएको हालको नियन्त्रण रेखा स्थिति प्राप्त गर्न सक्छ।
रेखा राज्य
USB होस्टले नियमित अन्तरालमा लाइन स्थिति पुन: प्राप्त गर्दछ। तपाईंको अनुप्रयोगले प्रत्येक पटक परिवर्तन हुँदा लाइन स्थिति अद्यावधिक गर्नुपर्छ। आवश्यक पर्दा, तपाईंको अनुप्रयोग लाइन स्थिति सेट गर्न जिम्मेवार हुन्छ। तलको तालिकामा वर्णन गरिए अनुसार, हालको लाइन नियन्त्रणहरू पुन: प्राप्त गर्न र सेट गर्न दुई प्रकार्यहरू प्रदान गरिएको छ।
तालिका - CDC ACM लाइन स्टेट कार्यहरू
कार्य
sl_usb d _cd c_acm_se t _लाइन _अवस्था _e vent()
sl_usbd_cdc_acm_cle ar_line _state _e vent()
तपाईंको एप्लिकेसनले कुनै पनि लाइन स्टेट घटना(हरू) सेट गर्न सक्छ। लाइन स्टेट सेट गर्दा, सिरियल लाइन स्टेटमा भएको परिवर्तनको बारेमा जानकारी दिन होस्टलाई एक अवरोध IN स्थानान्तरण पठाइन्छ।
एप्लिकेसनले लाइन अवस्थाका दुई घटनाहरू खाली गर्न सक्छ: ट्रान्समिशन क्यारियर र रिसीभर क्यारियर पत्ता लगाउने। अन्य सबै घटनाहरू ACM सिरियल इमुलेशन उपवर्गद्वारा स्व-खाली हुन्छन्।
उपवर्ग उदाहरण सञ्चार
सिलिकन ल्याब्सको ACM उपवर्गले होस्टसँग सञ्चार गर्न निम्न प्रकार्यहरू प्रदान गर्दछ। functions9 प्यारामिटरहरूको बारेमा थप विवरणहरूको लागि, CDC ACM उपवर्ग प्रकार्यहरू सन्दर्भ हेर्नुहोस्।
प्रकार्य नाम
sl_usb d _cd c_acm_ पुनः विज्ञापन () sl_usb d _cd c_acm_लेख्नुहोस् ()
सञ्चालन
बल्क आउट एन्डपोइन्ट मार्फत होस्टबाट डेटा प्राप्त गर्दछ। यो प्रकार्यले ब्लक गर्दैछ। बल्क IN एन्डपोइन्ट मार्फत होस्टमा डेटा पठाउँछ। यो प्रकार्यले ब्लक गर्दैछ।
प्रतिलिपि अधिकार © 2025 सिलिकन प्रयोगशालाहरू। सबै अधिकार सुरक्षित।
१/४
माथिview
तालिका – CDC ACM सञ्चार API सारांश aaaaa sl_usbd_cdc_acm_read() nd sl_usbd_cdc_acm_write() ले सिंक्रोनस सञ्चार प्रदान गर्दछ, जुन trnsfer ले ब्लक गरिरहेको छ भन्ने बुझिन्छ। अर्को शब्दमा, प्रकार्य कल गर्दा, त्रुटि सहित वा बिना स्थानान्तरण पूरा नभएसम्म अनुप्रयोग ब्लक हुन्छ। सधैंभरि पर्खनबाट बच्नको लागि समयसीमा निर्दिष्ट गर्न सकिन्छ। पूर्वampतलको ले पढ्ने र लेख्ने उदाहरण देखाउँछample जसले बल्क OUT अन्त्यबिन्दु प्रयोग गरेर होस्टबाट डेटा प्राप्त गर्दछ र बल्क IN अन्त्यबिन्दु प्रयोग गरेर होस्टमा डेटा पठाउँछ।
सूचीकरण - सिरियल पढ्नुहोस् र लेख्नुहोस् पूर्वample
__ पङ्क्तिबद्ध (४) uint8_t rx_buf[2];
__ पङ्क्तिबद्ध(४) uint8_t tx_buf[2];
uint32_t
एक्सफर_लेन;
sl_status_t का थप वस्तुहरू
स्थिति;
स्थिति = sl_usbd_cdc_acm_read(उपवर्ग_nbr,
(०३०३२५)
rx_buf,
(०३०३२५)
2u,
0u,
(०३०३२५)
&xfer_len);
यदि (स्थिति ! SL_STATUS_OK) {
/* एउटा त्रुटि भयो। त्रुटि ह्यान्डलिङ यहाँ थप्नु पर्छ। */
}
स्थिति = sl_usbd_cdc_acm_write(subclass_nbr,
(०३०३२५)
tx_buf,
(०३०३२५)
2u,
0u,
(०३०३२५)
&xfer_len);
यदि (स्थिति ! SL_STATUS_OK) {
/* एउटा त्रुटि भयो। त्रुटि ह्यान्डलिङ यहाँ थप्नु पर्छ। */
}
T aaaaa M (1) sl_usbd_cdc_acm_create_instance() सँग सिर्जना गरिएको he cl ss inst nce नम्बरले स्थानान्तरणलाई उचित बल्क OUT वा IN अन्त्य बिन्दुमा रुट गर्न AC उपवर्गमा n आन्तरिक सन्दर्भ प्रदान गर्दछ। (2) तपाईंको अनुप्रयोगले प्रकार्यमा प्रदान गरिएको बफर सबै डेटा समायोजन गर्न पर्याप्त ठूलो छ भनी सुनिश्चित गर्नुपर्छ। अन्यथा, सिंक्रोनाइजेसन समस्याहरू हुन सक्छन्। (3) अनन्त अवरुद्ध अवस्थाबाट बच्न, मिलिसेकेन्डमा व्यक्त गरिएको टाइमआउट निर्दिष्ट गर्नुहोस्। 809 को मानले अनुप्रयोग कार्यलाई सधैंभरि पर्खन्छ। (4) अनुप्रयोगले प्रारम्भिक ट्रान्समिट बफर प्रदान गर्दछ।
प्रतिलिपि अधिकार © 2025 सिलिकन प्रयोगशालाहरू। सबै अधिकार सुरक्षित।
१/४
माथिview
माथिview
USB उपकरण HID वर्ग
USB उपकरण HID कक्षा ओभरview USB उपकरण HID वर्ग स्रोत आवश्यकताहरू कोर USB उपकरण HID वर्ग कन्फिगरेसन USB उपकरण HID वर्ग प्रोग्रामिङ गाइड HID आवधिक इनपुट रिपोर्ट कार्य
यो खण्डले सिलिकन ल्याब्स USB उपकरणद्वारा समर्थित मानव इन्टरफेस उपकरण (HID) वर्गको वर्णन गर्दछ।
HID वर्गले किबोर्ड, मुसा, पोइन्टिङ उपकरणहरू, र खेल उपकरणहरू जस्ता कम्प्युटर सञ्चालनहरू नियन्त्रण गर्न मानिसहरूले प्रयोग गर्ने उपकरणहरू समावेश गर्दछ।
HID वर्गलाई नब, स्विच, बटन र स्लाइडर जस्ता नियन्त्रणहरू भएको कम्पोजिट उपकरणमा पनि प्रयोग गर्न सकिन्छ। उदाहरणका लागिampअडियो हेडसेटमा le, म्यूट र भोल्युम नियन्त्रणहरू हेडसेटको HID प्रकार्यद्वारा नियन्त्रित हुन्छन्। HID वर्गले नियन्त्रण र अवरोध स्थानान्तरण मात्र प्रयोग गरेर कुनै पनि उद्देश्यको लागि डेटा आदानप्रदान गर्न सक्छ।
HID वर्ग सबैभन्दा पुरानो र सबैभन्दा व्यापक रूपमा प्रयोग हुने USB वर्गहरू मध्ये एक हो। सबै प्रमुख होस्ट अपरेटिङ सिस्टमहरूले HID उपकरणहरू व्यवस्थापन गर्न नेटिभ ड्राइभर प्रदान गर्छन्, त्यसैले विभिन्न विक्रेता-विशिष्ट उपकरणहरू HID वर्गसँग काम गर्छन्। यस वर्गमा LEDs, अडियो, ट्याक्टाइल प्रतिक्रिया, आदि जस्ता विभिन्न प्रकारका आउटपुट वस्तुहरू पनि समावेश छन्।
HID कार्यान्वयनले निम्न विशिष्टताहरूको पालना गर्दछ:
मानव इन्टरफेस उपकरणहरूको लागि उपकरण वर्ग परिभाषा (HID), ६/२७/०१, संस्करण १.११। युनिभर्सल सिरियल बस HID प्रयोग तालिकाहरू, १०/२८/२००४, संस्करण १.१२।
USB उपकरण HID कक्षा ओभरview
माथिview
HID उपकरण निम्न अन्त्य बिन्दुहरू मिलेर बनेको हुन्छ:
पूर्वनिर्धारित अन्त्यबिन्दु भनिने नियन्त्रण IN र OUT अन्त्यबिन्दुहरूको जोडी एक अवरोध IN अन्त्यबिन्दु एक वैकल्पिक अवरोध आउट अन्त्यबिन्दु
तलको तालिकाले विभिन्न अन्त्य बिन्दुहरूको प्रयोगको वर्णन गर्दछ:
तालिका - HID कक्षाको अन्त्यबिन्दु प्रयोग
अन्तिम बिन्दु दिशा प्रयोग
IN नियन्त्रण गर्नुहोस्
नियन्त्रण
बाहिर
IN मा अवरोध गर्नुहोस्
अवरोध गर्नुहोस्
बाहिर
उपकरण-होस्ट
होस्ट-टुडिभाइस
उपकरण-होस्ट
होस्ट-टुडिभाइस
गणना, वर्ग-विशिष्ट अनुरोधहरू, र डेटा सञ्चारको लागि मानक अनुरोधहरू (GET_REPORT अनुरोधको साथ होस्टलाई पठाइएका इनपुट, सुविधा रिपोर्टहरू)। गणना, वर्ग-विशिष्ट अनुरोधहरू र डेटा सञ्चारको लागि मानक अनुरोधहरू (आउटपुट, SET_REPORT अनुरोधको साथ होस्टबाट प्राप्त गरिएका सुविधा रिपोर्टहरू)। डेटा सञ्चार (इनपुट र सुविधा रिपोर्टहरू)।
डेटा सञ्चार (आउटपुट र सुविधा रिपोर्टहरू)।
रिपोर्ट
प्रतिलिपि अधिकार © 2025 सिलिकन प्रयोगशालाहरू। सबै अधिकार सुरक्षित।
१/४
माथिview
एउटा होस्ट र एउटा HID उपकरणले रिपोर्टहरू प्रयोग गरेर डेटा आदानप्रदान गर्छ। एउटा रिपोर्टमा HID उपकरणको नियन्त्रण र अन्य भौतिक संस्थाहरूको बारेमा जानकारी दिने ढाँचाबद्ध डेटा हुन्छ। नियन्त्रण प्रयोगकर्ताद्वारा हेरफेर गर्न सकिन्छ र उपकरणको एक पक्ष सञ्चालन गर्दछ। उदाहरणका लागिample, नियन्त्रण माउस वा किबोर्डमा रहेको बटन, स्विच, आदि हुन सक्छ। अन्य निकायहरूले प्रयोगकर्तालाई केही उपकरणका सुविधाहरूको अवस्थाको बारेमा जानकारी दिन्छन्। उदाहरणका लागिampले, किबोर्डमा रहेका LED हरूले प्रयोगकर्तालाई क्याप्स लक अन भएको, संख्यात्मक किप्याड सक्रिय भएको, आदि बारे सूचित गर्छन्।
रिपोर्ट डेटाको ढाँचा र प्रयोग रिपोर्ट वर्णनकर्ताको सामग्रीको विश्लेषण गरेर होस्टले बुझ्दछ। सामग्रीको विश्लेषण पार्सरद्वारा गरिन्छ। रिपोर्ट वर्णनकर्ताले उपकरणमा प्रत्येक नियन्त्रणद्वारा प्रदान गरिएको डेटा वर्णन गर्दछ। यो वस्तुहरू मिलेर बनेको हुन्छ जुन उपकरणको बारेमा जानकारीका टुक्राहरू हुन् र १-बाइट उपसर्ग र चर-लम्बाइ समावेश गर्दछ।
डेटा। वस्तु ढाँचाको बारेमा थप विवरणहरूको लागि, हेर्नुहोस्
१.११=, खण्ड ५.६ र ६.२.२।
त्यहाँ तीन मुख्य प्रकारका वस्तुहरू छन्:
मुख्य वस्तुले निश्चित प्रकारका डेटा फिल्डहरूलाई परिभाषित वा समूहबद्ध गर्दछ।
विश्वव्यापी वस्तुले नियन्त्रणको डेटा विशेषताहरू वर्णन गर्दछ।
स्थानीय वस्तुले नियन्त्रणको डेटा विशेषताहरू वर्णन गर्दछ।
प्रत्येक वस्तु प्रकार फरक प्रकार्यहरू द्वारा परिभाषित गरिएको छ। वस्तु प्रकार्यलाई a पनि भन्न सकिन्छ tag। एउटा वस्तु प्रकार्यलाई तीन प्रमुख वस्तु प्रकारहरू मध्ये एकसँग सम्बन्धित उप-वस्तुको रूपमा हेर्न सकिन्छ। तलको तालिकाले संक्षिप्त जानकारी प्रदान गर्दछview प्रत्येक वस्तु प्रकारमा item9s प्रकार्यहरूको। प्रत्येक श्रेणीमा रहेका वस्तुहरूको पूर्ण विवरणको लागि, हेर्नुहोस्
तालिका - प्रत्येक वस्तु प्रकारको लागि वस्तुको प्रकार्य विवरण
वस्तु वस्तु प्रकार प्रकार्य
विवरण
मुख्य इनपुट
एक वा बढी भौतिक नियन्त्रणहरू द्वारा प्रदान गरिएको डेटाको बारेमा जानकारी वर्णन गर्दछ।
मुख्य आउटपुटले उपकरणमा पठाइएको डेटा वर्णन गर्दछ।
मुख्य विशेषता
उपकरणमा पठाइएको वा प्राप्त गरिएको उपकरण कन्फिगरेसन जानकारी वर्णन गर्दछ जसले उपकरण वा यसको कुनै एक घटकको समग्र व्यवहारलाई प्रभाव पार्छ।
मुख्य सङ्कलन समूह सम्बन्धित वस्तुहरू (इनपुट, आउटपुट वा सुविधा)।
संग्रहको मुख्य अन्त्यले संग्रह बन्द गर्छ। संग्रह
प्रतिलिपि अधिकार © 2025 सिलिकन प्रयोगशालाहरू। सबै अधिकार सुरक्षित।
१/४
माथिview
वस्तु वस्तु प्रकार प्रकार्य
विवरण
विश्वव्यापी उपयोग पृष्ठ
उपकरण भित्र उपलब्ध प्रकार्य पहिचान गर्दछ।
ग्लोबल लजिकलले तार्किक एकाइहरूमा रिपोर्ट गरिएका मानहरूको तल्लो सीमा परिभाषित गर्दछ। न्यूनतम
ग्लोबल लजिकलले तार्किक एकाइहरूमा रिपोर्ट गरिएका मानहरूको माथिल्लो सीमा परिभाषित गर्दछ। अधिकतम
विश्वव्यापी भौतिकले भौतिक एकाइहरूमा रिपोर्ट गरिएका मानहरूको तल्लो सीमा परिभाषित गर्दछ, जुन भौतिक एकाइहरूमा व्यक्त गरिएको तार्किक न्यूनतम न्यूनतम हो।
विश्वव्यापी भौतिकले भौतिक एकाइहरूमा रिपोर्ट गरिएका मानहरूको माथिल्लो सीमा परिभाषित गर्दछ, त्यो भौतिक एकाइहरूमा व्यक्त गरिएको तार्किक अधिकतम अधिकतम हो।
विश्वव्यापी एकाइ
आधार १० मा एकाइ घातांकलाई जनाउँछ। घातांक -८ देखि +७ सम्म हुन्छ।
घातांक
विश्वव्यापी एकाइ
रिपोर्ट गरिएका मानहरूको एकाइलाई जनाउँछ। उदाहरणका लागि, लम्बाइ, द्रव्यमान, तापक्रम एकाइहरू, आदि।
विश्वव्यापी रिपोर्ट आकार
रिपोर्ट फिल्डहरूको आकार बिटमा जनाउँछ।
विश्वव्यापी रिपोर्ट आईडीले विशेष रिपोर्टमा थपिएको उपसर्गलाई जनाउँछ।
विश्वव्यापी रिपोर्ट गणना
वस्तुको लागि डेटा फाँटहरूको संख्या जनाउँछ।
विश्वव्यापी पुश
CPU स्ट्याकमा विश्वव्यापी वस्तु स्थिति तालिकाको प्रतिलिपि राख्छ।
ग्लोबल पप
स्ट्याकबाट अन्तिम संरचनाले वस्तु स्थिति तालिकालाई प्रतिस्थापन गर्दछ।
स्थानीय प्रयोग
उपयोग पृष्ठ भित्र एक विशिष्ट उपयोग निर्दिष्ट गर्न अनुक्रमणिका प्रतिनिधित्व गर्दछ। यसले विक्रेताले एक विशिष्ट नियन्त्रण वा नियन्त्रणहरूको समूहको लागि सुझाव दिएको प्रयोगलाई संकेत गर्दछ। उपयोगले अनुप्रयोग विकासकर्तालाई नियन्त्रणले वास्तवमा के मापन गरिरहेको छ भन्ने बारे जानकारी प्रदान गर्दछ।
स्थानीय प्रयोग
एरे वा बिटम्यापसँग सम्बन्धित सुरुवाती प्रयोग परिभाषित गर्दछ।
न्यूनतम
स्थानीय प्रयोग
एरे वा बिटम्यापसँग सम्बन्धित अन्त्य प्रयोग परिभाषित गर्दछ।
अधिकतम
स्थानीय डिजाईनेटरले नियन्त्रणको लागि प्रयोग गरिएको शरीरको भाग निर्धारण गर्दछ। भौतिकमा इन्डेक्सले डिजाईनेटरलाई औंल्याउँछ
अनुक्रमणिका
वर्णनकर्ता।
स्थानीय डिजाइनकर्ताले एरे वा बिटम्यापसँग सम्बन्धित सुरुवात डिजाइनकर्ताको अनुक्रमणिका परिभाषित गर्दछ। न्यूनतम
स्थानीय डिजाइनकर्ताले एरे वा बिटम्यापसँग सम्बन्धित अन्त्य डिजाइनकर्ताको अनुक्रमणिका परिभाषित गर्दछ। अधिकतम
स्थानीय स्ट्रिङ अनुक्रमणिका
स्ट्रिङ वर्णनकर्ताको लागि स्ट्रिङ अनुक्रमणिका। यसले स्ट्रिङलाई कुनै विशेष वस्तु वा नियन्त्रणसँग सम्बन्धित गर्न अनुमति दिन्छ।
स्थानीय स्ट्रिङ
एरेमा नियन्त्रणहरूमा क्रमिक स्ट्रिङहरूको समूह तोक्दा पहिलो स्ट्रिङ अनुक्रमणिका निर्दिष्ट गर्दछ।
न्यूनतम वा बिटम्याप।
स्थानीय स्थानीय
स्ट्रिङ अधिकतम
डिलिमिटर
एरे वा बिटम्यापमा नियन्त्रणहरूमा क्रमिक स्ट्रिङहरूको समूह तोक्दा अन्तिम स्ट्रिङ अनुक्रमणिका निर्दिष्ट गर्दछ।
स्थानीय वस्तुहरूको सेटको सुरुवात वा अन्त्य परिभाषित गर्दछ।
control9s डेटाले कम्तिमा निम्न वस्तुहरू परिभाषित गर्नुपर्छ:
इनपुट, आउटपुट वा सुविधा मुख्य वस्तुहरू प्रयोग स्थानीय वस्तु प्रयोग पृष्ठ विश्वव्यापी वस्तु तार्किक न्यूनतम विश्वव्यापी वस्तु तार्किक अधिकतम विश्वव्यापी वस्तु रिपोर्ट आकार विश्वव्यापी वस्तु
प्रतिलिपि अधिकार © 2025 सिलिकन प्रयोगशालाहरू। सबै अधिकार सुरक्षित।
१/४
माथिview
रिपोर्ट काउन्ट ग्लोबल वस्तु तलको तालिकाले होस्ट HID पार्सर दृष्टिकोणबाट माउस रिपोर्ट वर्णनकर्ता सामग्रीको प्रतिनिधित्व देखाउँछ। माउसमा तीन बटनहरू छन् (बायाँ, दायाँ, र पाङ्ग्रा)। पूर्वमा प्रस्तुत कोडampतल यो माउस रिपोर्ट वर्णनकर्ता प्रतिनिधित्वसँग सम्बन्धित कोड कार्यान्वयन छ।
चित्र - होस्ट HID पार्सरबाट रिपोर्ट वर्णनकर्ता सामग्री View
(१) प्रयोग पृष्ठ वस्तु प्रकार्यले उपकरणको सामान्य प्रकार्य निर्दिष्ट गर्दछ। यस उदाहरणमाampले, HID उपकरण a को हो
सामान्य डेस्कटप नियन्त्रण।
(२) सङ्कलन अनुप्रयोगले मुख्य वस्तुहरूलाई समूहबद्ध गर्दछ जसको साझा उद्देश्य हुन्छ र अनुप्रयोगहरूसँग परिचित हुन सक्छ। रेखाचित्रमा, समूह तीन इनपुट मुख्य वस्तुहरू मिलेर बनेको छ। यस सङ्कलनको लागि, नियन्त्रणहरूको लागि सुझाव गरिएको प्रयोग प्रयोग वस्तुद्वारा संकेत गरिएको माउस हो। (३) नेस्टेड संग्रहहरू अनुप्रयोगहरूलाई एकल नियन्त्रण वा नियन्त्रणहरूको समूहको प्रयोगको बारेमा थप विवरण दिन प्रयोग गर्न सकिन्छ। यस उदाहरणमाampले, सङ्कलन भौतिक, सङ्कलन अनुप्रयोगमा नेस्ट गरिएको, सङ्कलन अनुप्रयोग बनाउने उही तीन इनपुट वस्तुहरू मिलेर बनेको छ। सङ्कलन भौतिक डेटा वस्तुहरूको सेटको लागि प्रयोग गरिन्छ जसले एक ज्यामितीय बिन्दुमा सङ्कलन गरिएका डेटा बिन्दुहरूलाई प्रतिनिधित्व गर्दछ। उदाहरणमाampले, सुझाव गरिएको प्रयोग प्रयोग वस्तुद्वारा संकेत गरिएको सूचक हो। यहाँ सूचक प्रयोगले माउस स्थिति निर्देशांकहरूलाई जनाउँछ र प्रणाली सफ्टवेयरले स्क्रिन कर्सरको चालमा माउस निर्देशांकहरूलाई अनुवाद गर्नेछ। (४) नेस्टेड प्रयोग पृष्ठहरू पनि सम्भव छन् र उपकरणको सामान्य प्रकार्य भित्र एक निश्चित पक्षको बारेमा थप विवरण दिन्छन्। यस अवस्थामा, दुई इनपुट वस्तुहरू समूहबद्ध छन् र माउसको बटनहरूसँग मेल खान्छ। एउटा इनपुट वस्तुले वस्तुको लागि डेटा क्षेत्रहरूको संख्या (रिपोर्ट गणना वस्तु), डेटा क्षेत्रको आकार (रिपोर्ट आकार वस्तु) र प्रत्येक डेटा क्षेत्रको लागि सम्भावित मानहरू (प्रयोग न्यूनतम र अधिकतम, तार्किक न्यूनतम र अधिकतम वस्तुहरू) को सन्दर्भमा माउसको तीन बटनहरू (दायाँ, बायाँ र पाङ्ग्रा) परिभाषित गर्दछ। अर्को इनपुट वस्तु १३-बिट स्थिरांक हो जसले इनपुट रिपोर्ट डेटालाई बाइट सीमामा पङ्क्तिबद्ध गर्न अनुमति दिन्छ। यो इनपुट वस्तु प्याडिङ उद्देश्यको लागि मात्र प्रयोग गरिन्छ। (५) सामान्य डेस्कटप नियन्त्रणलाई जनाउने अर्को नेस्टेड प्रयोग पृष्ठ माउस स्थिति निर्देशांकहरूको लागि परिभाषित गरिएको छ। यस प्रयोग पृष्ठको लागि, इनपुट वस्तुले दुई प्रयोग द्वारा निर्दिष्ट गरिएको x- र y-अक्षसँग सम्बन्धित डेटा क्षेत्रहरू वर्णन गर्दछ।
वस्तुहरू।
अघिल्लो माउस रिपोर्ट वर्णनकर्ता सामग्रीको विश्लेषण गरेपछि, होस्ट९एस HID पार्सरले उपकरणद्वारा पठाइएको इनपुट रिपोर्ट डेटालाई अवरोध IN स्थानान्तरणको साथ वा GET_REPORT अनुरोधको प्रतिक्रियामा व्याख्या गर्न सक्षम हुन्छ। माउस रिपोर्ट वर्णनकर्तासँग सम्बन्धित इनपुट रिपोर्ट डेटा चित्रमा देखाइएको छ - होस्ट HID पार्सरबाट रिपोर्ट वर्णनकर्ता सामग्री। View is
प्रतिलिपि अधिकार © 2025 सिलिकन प्रयोगशालाहरू। सबै अधिकार सुरक्षित।
१/४
माथिview
तलको तालिकामा देखाइएको छ। रिपोर्ट डेटाको कुल आकार ४ बाइट छ। एउटै अन्त्य बिन्दुमा विभिन्न प्रकारका रिपोर्टहरू पठाउन सकिन्छ। विभिन्न प्रकारका रिपोर्टहरू छुट्याउने उद्देश्यका लागि, डेटा रिपोर्टमा १-बाइट रिपोर्ट ID उपसर्ग थपिएको छ। यदि पूर्वमा रिपोर्ट ID प्रयोग गरिएको थियो भनेampमाउस रिपोर्टको कुल आकार ५ बाइट हुनेछ।
तालिका - इनपुट रिपोर्ट होस्टमा पठाइयो र ३ बटन भएको माउसको अवस्था अनुरूप
बिट अफसेट
0 1 2 3 16 24
बिटगणना१११११३८८
विवरण बटन १ (बायाँ बटन)। बटन २ (दायाँ बटन)। बटन ३ (पाङ्ग्रा बटन)। प्रयोग गरिएको छैन। अक्ष X मा स्थिति। अक्ष Y मा स्थिति।
भौतिक वर्णनकर्ताले नियन्त्रण वा नियन्त्रणहरू सक्रिय गर्ने उद्देश्यले शरीरको भाग वा भागहरूलाई संकेत गर्दछ। अनुप्रयोगले यो जानकारी उपकरणको नियन्त्रणमा कार्यक्षमता तोक्न प्रयोग गर्न सक्छ। भौतिक वर्णनकर्ता एक वैकल्पिक वर्ग-विशिष्ट वर्णनकर्ता हो र धेरैजसो उपकरणहरूले यसलाई प्रयोग गर्दा थोरै लाभ पाउँछन्। सन्दर्भ गर्नुहोस्
कोरबाट USB उपकरण HID कक्षा स्रोत आवश्यकताहरू
प्रत्येक पटक तपाईंले sl_usbd_hid_add_to_configuration() प्रकार्यमा कल मार्फत USB कन्फिगरेसनमा HID क्लास इन्स्ट्यान्स थप्दा, निम्न स्रोतहरू कोरबाट आवंटित गरिनेछ।
स्रोत
इन्टरफेसहरू वैकल्पिक इन्टरफेसहरू अन्त्यबिन्दुहरू इन्टरफेस समूहहरू
मात्रा
१ १ १ (यदि अवरोध आउट एन्डपोइन्ट सक्षम पारिएको छ भने २) ०
ध्यान दिनुहोस् कि ती संख्याहरू प्रति कन्फिगरेसन हुन्। तपाईंको SL_USBD_INTERFACE_QUANTITY , SL_USBD_ALT_INTERFACE_QUANTITY , SL_USBD_INTERFACE_GROUP_QUANTITY र SL_USBD_DESCRIPTOR_QUANTITY कन्फिगरेसन मानहरू सेट अप गर्दा, कक्षा कति कन्फिगरेसनहरू थपिनेछन् भन्ने कुरालाई ध्यानमा राख्न नबिर्सनुहोस्। SL_USBD_OPEN_ENDPOINTS_QUANTITY कन्फिगरेसन मानको लागि, होस्टद्वारा कन्फिगरेसन सेट गर्दा मात्र अन्त्यबिन्दुहरू खोलिने भएकोले, तपाईंले कक्षाको उदाहरणको लागि आवश्यक अन्त्यबिन्दुहरूको संख्यालाई मात्र ध्यानमा राख्नु पर्छ।
USB उपकरण HID वर्ग कन्फिगरेसन
HID वर्ग कन्फिगर गर्न कन्फिगरेसन प्यारामिटरहरूको दुई समूहहरू प्रयोग गरिन्छ:
USB उपकरण HID वर्ग अनुप्रयोग-विशिष्ट कन्फिगरेसनहरू USB उपकरण HID वर्ग उदाहरण कन्फिगरेसनहरू
USB उपकरण HID वर्ग अनुप्रयोग-विशिष्ट कन्फिगरेसनहरू
पहिले, सिलिकन ल्याब्स USB उपकरण HID वर्ग मोड्युल प्रयोग गर्न, तपाईंको अनुप्रयोग आवश्यकता अनुसार परिभाषित HID कम्पाइल-समय कन्फिगरेसन समायोजन गर्नुहोस्। तिनीहरू sl_usbd_core_config.h हेडर भित्र पुन: समूहबद्ध छन्। file HID खण्ड अन्तर्गत। तिनीहरूलाई दुई खण्डहरूमा विभाजन गर्न सकिन्छ, मात्रा कन्फिगरेसनहरू र HID कार्य कन्फिगरेसनहरू। मात्रा कन्फिगरेसनको उद्देश्य USB उपकरण मोड्युललाई कति USB HID वस्तुहरू आवंटित गर्ने भन्ने बारे जानकारी दिनु हो।
तलको तालिकाले प्रत्येक कन्फिगरेसन परिभाषित गर्दछ।
तालिका - USB उपकरण HID कन्फिगरेसन परिभाषित गर्दछ
प्रतिलिपि अधिकार © 2025 सिलिकन प्रयोगशालाहरू। सबै अधिकार सुरक्षित।
१/४
माथिview
कन्फिगरेसन नाम
SL_USBD_HID_CL ASS_I NSTANCE_QUANTITY
SL_USBD_HID_CONFIG URATION_QUANTITY
SL_USBD_HID_REPORT_ ID_QUANTITY
SL_USBD_HID_PUSH_P OP_ITEM_QUANTITY
SL_USBD_HID_TIMER_T सोध्नुहोस्_स्ट्याक_साइज
SL_USBD_HID_TIMER_T सोध्नुहोस्_प्राथमिकता
विवरण
प्रकार्यमा कल मार्फत तपाईंले आवंटित गर्नुहुने कक्षा उदाहरणहरूको संख्या
sl_usbd_लुकाउनुहोस्_सिर्जना_इन्स्ट्यान्स()।
कन्फिगरेसनहरूको संख्या। HID वर्ग उदाहरणहरू एक वा बढी aaaa कन्फिगरेसनहरूमा थप्न सकिन्छ जस्तै sl_usbd_hid_add_to_configuration() प्रकार्यमा। आवंटित गर्न रिपोर्ट ID हरूको कुल संख्या कन्फिगर गर्दछ।
आवंटित गर्नुपर्ने पुश/पप वस्तुहरूको कुल संख्या कन्फिगर गर्दछ।
टाइमर कार्यले सबै टाइमर-आधारित HID अपरेशनहरू ह्यान्डल गर्दछ। यो कन्फिगरेसनले तपाईंलाई स्ट्याक साइज (बाइट्सको संख्यामा) सेट गर्न अनुमति दिन्छ। HID कार्यको प्राथमिकता। यो CMSIS-RTOS2 प्राथमिकता हो।
पूर्वनिर्धारित मान
५४ ५६.२५ ६७.५ ११२.५ १३५
ओएसप्रायरिटीहाई
USB उपकरण HID वर्ग उदाहरण कन्फिगरेसन वर्ग उदाहरण सिर्जना उपवर्ग
प्रोटोकल देश_कोड
interval_in र interval_out p_hid_callback HID कक्षा रिपोर्ट वर्णनकर्ता Example यो खण्डले HID वर्ग उदाहरणहरूसँग सम्बन्धित कन्फिगरेसनहरू परिभाषित गर्दछ।
कक्षा उदाहरण सिर्जना
HID क्लास इन्स्ट्यान्स सिर्जना गर्ने काम aaa sl_usbd_hid_create_instance() प्रकार्यलाई कल गरेर गरिन्छ, जसले तल वर्णन गरिएका कन्फिगरेसन आर्गुमेन्टहरूलाई अलग गर्छ।
उपवर्ग
HID उपवर्गको कोड। सम्भावित मानहरू यस प्रकार छन्:
SL_USBD_HID_SUBCL ASS_NONE SL_USBD_HID_SUBCL ASS_BOOT
बुट सबक्लास प्रयोग गर्ने HID उपकरणले मानक रिपोर्ट ढाँचाहरू प्रयोग गर्नुपर्छ। सबक्लास कोडहरूको बारेमा थप जानकारीको लागि, HID स्पेसिफिकेशन संशोधन १.११ को खण्ड ४.२ हेर्नुहोस्।
प्रोटोकल
HID उपकरणद्वारा प्रयोग गरिएको प्रोटोकल। सम्भावित मानहरू यस प्रकार छन्:
SL_USBD_HID_PROTOCOL_NONE SL_USBD_HID_PROTOCOL_KBD SL_USBD_HID_PROTOCOL_माउस
यदि तपाईंको HID प्रकार्य माउस हो भने, प्रोटोकल aa SL_USBD_HID_PROTOCOL_MOUSE मा सेट हुनुपर्छ। यदि यो किबोर्ड हो भने, यसलाई O SL_USBD_HID_PROTOCOL_KBD मा सेट गर्नुपर्छ। त्यसैगरी, प्रोटोकल SL_USBD_HID_PROTOCOL_NONE मा सेट गर्नुपर्छ। उपवर्ग कोडहरूको बारेमा थप जानकारीको लागि, HID विशिष्टता संशोधन १.११ को खण्ड ४.३ हेर्नुहोस्।
देशको कोड
देशको कोडको ID। सम्भावित मानहरू यस प्रकार छन्:
SL_USBD_HID_COUNTRY_CODE_समर्थित छैन
प्रतिलिपि अधिकार © 2025 सिलिकन प्रयोगशालाहरू। सबै अधिकार सुरक्षित।
१/४
माथिview
SL_USBD_HID_COUNTRY_CODE_ARABIC SL_USBD_HID_COUNTRY_CODE_बेल्जियम SL_USBD_HID_COUNTRY_CODE_CANADIAN_BILINGUAL SL_USBD_HID_COUNTRY_CODE_CANADIAN_FRENCH SL_USBD_HID_COUNTRY_CODE_CZECH_Republic SL_USBD_HID_COUNTRY_CODE_DANISH SL_USBD_HID_COUNTRY_CODE_FINNISH SL_USBD_HID_COUNTRY_CODE_FRENCH SL_USBD_HID_COUNTRY_CODE_GREEK SL_USBD_HID_COUNTRY_CODE_हिब्रू SL_USBD_HID_COUNTRY_CODE_हंगेरी SL_USBD_HID_COUNTRY_CODE_अन्तर्राष्ट्रिय SL_USBD_HID_COUNTRY_CODE_इटालीयन SL_USBD_HID_COUNTRY_CODE_JAPAN_KATAKANA SL_USBD_HID_COUNTRY_CODE_CODE_L ATIN_AMERICAN SL_USBD_HID_COUNTRY_CODE_NETHERL ANDS_DUCH SL_USBD_HID_COUNTRY_CODE_Norwegian SL_USBD_HID_COUNTRY_CODE_PORSIAN_FARSI SL_USBD_HID_COUNTRY_CODE_POL र SL_USBD_HID_COUNTRY_CODE_PORTUGUESE SL_USBD_HID_COUNTRY_CODE_RUSIA SL_USBD_HID_COUNTRY_CODE_SLOVAKIA SL_USBD_HID_COUNTRY_CODE_SPANISH SL_USBD_HID_COUNTRY_CODE_SWIDISH SL_USBD_HID_COUNTRY_CODE_SWISS_FRENCH SL_USBD_HID_COUNTRY_CODE_SWISS_GERMAN SL_USBD_HID_COUNTRY_CODE_SWITZERL र SL_USBD_HID_COUNTRY_CODE_TAIWAN SL_USBD_HID_COUNTRY_CODE_TURKISH_Q SL_USBD_HID_COUNTRY_CODE_US SL_USBD_HID_COUNTRY_CODE_YUG OSL AVIA SL_USBD_HID_COUNTRY_CODE_TURKISH_F
देश कोडले हार्डवेयर कुन देशको लागि स्थानीयकृत गरिएको छ भनेर पहिचान गर्दछ। धेरैजसो हार्डवेयर स्थानीयकृत हुँदैनन् र त्यसैले यो aaaav lue SL_USBD_HID_COUNTRY_CODE_NOT_SUPPORTED (0) हुनेछ। यद्यपि, किबोर्डहरूले कुञ्जी क्याप्सको भाषा संकेत गर्न फिल्ड प्रयोग गर्छन्।
देश कोडहरूको बारेमा थप जानकारीको लागि, HID विशिष्टता संशोधन १.११ को खण्ड ६.२.१ हेर्नुहोस्।
अन्तराल_भित्र र अन्तराल_बाहिर
interval_in र interval_out ले IN अवरोध अन्त्यबिन्दु र OUT अवरोध अन्त्यबिन्दुको मतदान अन्तराल प्रतिनिधित्व गर्दछ।
यसले मिलिसेकेन्डमा अन्तिम बिन्दुको मतदान अन्तराललाई प्रतिनिधित्व गर्दछ। यो मान सेट गर्नु तपाईंको उपकरण होस्टको लागि नयाँ रिपोर्ट उत्पन्न गर्न कति पटक संवेदनशील छ भन्ने कुरामा निर्भर गर्दछ। उदाहरणका लागि, यदि प्रत्येक १६ मिलिसेकेन्डमा रिपोर्ट उत्पन्न हुन्छ भने, अन्तराल १६ वा कम हुनुपर्छ।
मान २ (१, २, ४, ८, १६, आदि) को घात हुनुपर्छ।
यदि ctrl_rd_en लाई true मा सेट गरिएको छ भने interval_out v lue लाई बेवास्ता गरिन्छ।
कलब्याक_छोड्नुहोस्
aaaa p_hid_callback sl_usbd_hid_callbacks_t प्रकारको संरचनाको लागि सूचक हो। यसको उद्देश्य HID घटना हुँदा कल गर्न कलब्याक प्रकार्यहरूको HID Cl ss सेट दिनु हो।
प्रतिलिपि अधिकार © 2025 सिलिकन प्रयोगशालाहरू। सबै अधिकार सुरक्षित।
१/४
माथिview
सबै कलब्याकहरू अनिवार्य हुँदैनन् र कलब्याक आवश्यक नभएको बेला कलब्याक संरचना चरमा शून्य सूचक (NULL) पास गर्न सकिन्छ। तलको तालिकाले यस कन्फिगरेसन संरचनामा उपलब्ध प्रत्येक कन्फिगरेसन फिल्डको वर्णन गर्दछ।
तालिका – sl_usbd_hid_callbacks_t कन्फिगरेसन संरचना
क्षेत्रहरू
विवरण
प्रकार्य हस्ताक्षर
.सक्षम गर्नुहोस् .असक्षम गर्नुहोस् .रिपोर्ट_डेस्क_प्राप्त गर्नुहोस्
.फाइ_डेस्क_प्राप्त गर्नुहोस्
.सेट_आउटपुट_रिपोर्ट .फिचर_रिपोर्ट_प्राप्त गर्नुहोस् .फिचर_रिपोर्ट_सेट गर्नुहोस्
USB क्लास इन्स्ट्यान्स सफलतापूर्वक सक्षम हुँदा कल गरिन्छ। USB क्लास इन्स्ट्यान्स असक्षम हुँदा कल गरिन्छ।
HID उदाहरण सिर्जनाको समयमा तपाईंको रिपोर्ट वर्णनकर्ता पास गर्न बोलाइएको। तपाईंको प्रत्येक HID प्रकार्यहरूको लागि, तपाईंले रिपोर्ट वर्णनकर्ता प्रदान गर्नुपर्छ। रिपोर्ट वर्णनकर्ताले होस्टलाई उपकरणद्वारा पठाइने आवधिक रिपोर्ट कसरी पार्स गर्नुपर्छ भनेर संकेत गर्दछ। तपाईंको आफ्नै रिपोर्ट वर्णनकर्ता लेख्नु चुनौतीपूर्ण हुन सक्छ, र त्यसैले मद्दत गर्न केही स्रोतहरू छन्। यो एक मात्र अनिवार्य कलब्याक प्रकार्य हो। तपाईंको भौतिक वर्णनकर्ता पास गर्न HID उदाहरण सिर्जनाको समयमा बोलाइएको। भौतिक वर्णनकर्ता एक वर्णनकर्ता हो जसले मानव शरीरको विशिष्ट भाग वा भागहरूको बारेमा जानकारी प्रदान गर्दछ जुन नियन्त्रण वा नियन्त्रणहरू सक्रिय गर्दैछ। भौतिक वर्णनकर्ताहरूको बारेमा थप जानकारीको लागि, HID विशिष्टता संशोधन १.११ को खण्ड ६.२.३ हेर्नुहोस्। भौतिक वर्णनकर्ता वैकल्पिक छ र धेरैजसो समय बेवास्ता गरिन्छ। यहाँ पास गरिएको बफरलाई NULL मा सेट गर्न सकिन्छ र लम्बाइ ० मा सेट गर्न सकिन्छ। होस्टले तपाईंको रिपोर्ट वर्णनकर्तामा वर्णन गरिए अनुसार रिपोर्ट सेट गर्दा बोलाइन्छ (जब यसले रिपोर्ट पठाउँछ)।
तपाईंको रिपोर्ट वर्णनकर्तामा वर्णन गरिए अनुसार होस्टले सुविधा रिपोर्ट अनुरोध गर्दा कल गरिन्छ।
तपाईंको रिपोर्ट वर्णनकर्तामा वर्णन गरिए अनुसार होस्टले सुविधा रिपोर्ट सेट गर्दा कल गरिन्छ।
शून्य एप_यूएसबीडी_हिड_इनेबल(uint8_t क्लास_एनबीआर); शून्य एप_यूएसबीडी_हिड_डिसेबल(uint8_t क्लास_एनबीआर); शून्य एप_यूएसबीडी_हिड_गेट_रिपोर्ट_डेस्क(uint8_t क्लास_एनबीआर, कन्स्ट युआईएनटी८_टी *पी_रिपोर्ट_पीटीआर, युआईएनटी१६_टीपी_रिपोर्ट_लेन);
शून्य एप_usbd_hid_get_phy_desc(uint8_t class_nbr, const uint8_t *p_report_ptr, uint16_tp_report_len);
शून्य एप_यूएसबीडी_हिड_सेट_आउटपुट_रिपोर्ट(यूआईएनटी८_टी क्लास_एनबीआर, यूआईएनटी८_टी रिपोर्ट_आईडी, यूआईएनटी८_टी *पी_रिपोर्ट_बफ, यूआईएनटी१६_टी रिपोर्ट_लेन); शून्य एप_यूएसबीडी_हिड_गेट_फीचर_रिपोर्ट(यूआईएनटी८_टी क्लास_एनबीआर, यूआईएनटी८_टी रिपोर्ट_आईडी, यूआईएनटी८_टी *पी_रिपोर्ट_बफ, यूआईएनटी१६_टी रिपोर्ट_लेन); शून्य एप_यूएसबीडी_हिड_सेट_फीचर_रिपोर्ट(यूआईएनटी८_टी क्लास_एनबीआर, यूआईएनटी८_टी रिपोर्ट_आईडी, यूआईएनटी८_टी *पी_रिपोर्ट_बफ, यूआईएनटी१६_टी रिपोर्ट_लेन);
.प्रोटोकल_प्राप्त गर्नुहोस्
हालको सक्रिय प्रोटोकल पुन: प्राप्त गर्दछ।
शून्य एप_यूएसबीडी_हिड_गेट_प्रोटोकल(uint8_t क्लास_एनबीआर, uint8_t *पी_प्रोटोकल);
.सेट_प्रोटोकल
हालको सक्रिय प्रोटोकल सेट गर्दछ।
शून्य app_usbd_hid_set_protocol(uint8_t class_nbr, uint8_t प्रोटोकल);
HID कक्षा रिपोर्ट वर्णनकर्ता पूर्वample
सिलिकन ल्याब्सको HID वर्गहरूampआवेदनले पूर्व प्रदान गर्दछampसाधारण मुसाको लागि रिपोर्ट वर्णनकर्ताको उदाहरण। उदाहरणampतल माउस रिपोर्ट वर्णनकर्ता देखाइएको छ।
Example – माउस रिपोर्ट वर्णनकर्ता
स्थिर uint8_t app_usbd_hid_report_desc[] = {
(२) (१)
SL_USBD_HID_GLOBAL_USAGE_PAGE + १, SL_USBD_HID_USAGE_PAGE_सामान्य_डेस्कटप_नियन्त्रणहरू,
SL_USBD_HID_LOCAL_USEGE + १, SL_USBD_HID_CA_माउस,
(०३०३२५)
प्रतिलिपि अधिकार © 2025 सिलिकन प्रयोगशालाहरू। सबै अधिकार सुरक्षित।
१/४
माथिview
SL_USBD_HID_MAIN_COLLECTION +१, SL_USBD_HID_COLLECTION_APPLICATION,(४)
SL_USBD_HID_LOCAL_USAGE +१, SL_USBD_HID_CP_POINTER,(५)
SL_USBD_HID_MAIN_COLLECTION +१, SL_USBD_HID_COLLECTION_भौतिक,(६)
SL_USBD_HID_GLOBAL_USAGE_PAGE +१, SL_USBD_HID_USAGE_PAGE_BUTTON,(७)
SL_USBD_HID_LOCAL_USAGE_MIN +१.० ०१,
SL_USBD_HID_LOCAL_USAGE_MAX +१.० ०३,
SL_USBD_HID_GLOBAL_LOG_MIN +१.० ००,
SL_USBD_HID_GLOBAL_LOG_MAX +१.० ०१,
SL_USBD_HID_GLOBAL_REPORT_COUNT +१.० ०३,
SL_USBD_HID_GLOBAL_REPORT_SIZE +१.० ०१,
SL_USBD_HID_MAIN_INPUT +१, SL_USBD_HID_MAIN_DATA |
SL_USBD_HID_MAIN_VARIABLE |
SL_USBD_लुकेको_पूर्ण_पूर्ण,
SL_USBD_HID_GLOBAL_REPORT_COUNT +१.० ०१,(८)
SL_USBD_HID_GLOBAL_REPORT_SIZE +१.० ०D,
SL_USBD_HID_MAIN_INPUT +१, SL_USBD_HID_MAIN_CONSTANT,(९)
SL_USBD_HID_GLOBAL_USAGE_PAGE +१, SL_USBD_HID_USAGE_PAGE_GENERIC_DESKTOP_CONTROLS,
SL_USBD_HID_LOCAL_USEGE +१, SL_USBD_HID_DV_X,
SL_USBD_HID_LOCAL_USEGE +१, SL_USBD_HID_DV_Y,
SL_USBD_HID_GLOBAL_LOG_MIN +१.० ००,
SL_USBD_HID_GLOBAL_LOG_MAX +१.० ७F,
SL_USBD_HID_GLOBAL_REPORT_SIZE +१.० ०१,
SL_USBD_HID_GLOBAL_REPORT_COUNT +१.० ०३,
SL_USBD_HID_MAIN_INPUT +१, SL_USBD_HID_MAIN_DATA |
SL_USBD_HID_MAIN_VARIABLE |
SL_USBD_HID_MAIN_RELATIVE,
SL_USBD_HID_MAIN_ENDसंग्रह,(१०)
SL_USBD_HID_MAIN_ENDसंग्रह
(११)};
(१) माउस रिपोर्ट डिस्क्रिप्टरको प्रतिनिधित्व गर्ने तालिका यसरी सुरु गरिएको छ कि प्रत्येक रेखा छोटो वस्तुसँग मेल खान्छ। पछिल्लो १-बाइट उपसर्ग र १-बाइट डेटाबाट बनेको छ। सन्दर्भ गर्नुहोस् viewचित्रमा होस्ट HID पार्सरद्वारा समर्थित - होस्ट HID पार्सरबाट रिपोर्ट वर्णनकर्ता सामग्री View.
(२) जेनेरिक डेस्कटप प्रयोग पृष्ठ प्रयोग गरिएको छ।
(३) जेनेरिक डेस्कटप प्रयोग पृष्ठ भित्र, प्रयोग tag नियन्त्रणहरूको समूह माउस नियन्त्रण गर्नको लागि हो भन्ने सुझाव दिन्छ। माउस सङ्ग्रहमा सामान्यतया दुई अक्षहरू (X र Y) र एक, दुई, वा तीन बटनहरू हुन्छन्।
(४) मुसा सङ्कलन सुरु भयो।
(५) मुसा सङ्ग्रह भित्र, एउटा प्रयोग tag अझ स्पष्ट रूपमा सुझाव दिन्छ कि माउस नियन्त्रणहरू पोइन्टर सङ्ग्रहसँग सम्बन्धित छन्। पोइन्टर सङ्ग्रह भनेको अक्षहरूको सङ्ग्रह हो जसले प्रयोगकर्ताको मनसायलाई अनुप्रयोगमा निर्देशित गर्न, संकेत गर्न वा पोइन्ट गर्न मान उत्पन्न गर्दछ।
(६) सूचक सङ्कलन सुरु भयो।
(७) बटन प्रयोग पृष्ठले तीन १-बिट फिल्डहरू मिलेर बनेको इनपुट वस्तु परिभाषित गर्दछ। प्रत्येक १-बिट फिल्डले क्रमशः माउस९ को बटन १, २ र ३ लाई प्रतिनिधित्व गर्दछ र ० वा १ को मान फर्काउन सक्छ।
(८) बटन प्रयोग पृष्ठको लागि इनपुट वस्तु १३ अन्य बिटहरूसँग प्याड गरिएको छ।
(९) अर्को जेनेरिक डेस्कटप उपयोग पृष्ठ X र Y अक्षहरूसँग माउसको स्थिति वर्णन गर्न संकेत गरिएको छ। इनपुट वस्तु दुई ८-बिट क्षेत्रहरू मिलेर बनेको छ जसको मान -१२७ र १२७ बीच हुन सक्छ।
(१०) सूचक सङ्ग्रह बन्द छ।
(११) मुसा सङ्कलन बन्द छ।
USB.org HID पृष्ठ
प्रतिलिपि अधिकार © 2025 सिलिकन प्रयोगशालाहरू। सबै अधिकार सुरक्षित।
१/४
माथिview
USB इम्प्लीमेन्टर्स फोरम (USB-IF) ले रिपोर्ट डिस्क्रिप्टर ढाँचामा अन्य जानकारीको साथसाथै "HID डिस्क्रिप्टर टूल" भनिने उपकरण प्रदान गर्दछ। थप जानकारीको लागि http://www.usb.org/developers/hidpage/ हेर्नुहोस्।
USB उपकरण HID कक्षा प्रोग्रामिङ गाइड
यस खण्डले HID कक्षा कसरी प्रयोग गर्ने भनेर वर्णन गर्दछ। USB उपकरण HID कक्षा सुरु गर्दै तपाईंको उपकरणमा USB उपकरण HID कक्षा उदाहरण थप्दै USB उपकरण HID कक्षा प्रयोग गरेर सञ्चार गर्दै
USB उपकरण HID कक्षा सुरु गर्दै
तपाईंको उपकरणमा HID कक्षा कार्यक्षमता थप्नको लागि, तपाईंले पहिले sl_usbd_hid_init() प्रकार्यलाई कल गरेर कक्षा सुरु गर्नुपर्छ। उदाहरणको लागिampतल पूर्वनिर्धारित आर्गुमेन्टहरू प्रयोग गरेर sl_usbd_hid_init() लाई कसरी कल गर्ने भनेर देखाइएको छ। sl_usbd_hid_init() मा पास गर्नुपर्ने कन्फिगरेसन आर्गुमेन्टहरूको बारेमा थप जानकारीको लागि, USB Device HID Class Application Specific Configurations हेर्नुहोस्।
Example – sl_usbd_hid_init() लाई कल गर्दै
sl_status_t स्थिति;
status = sl_usbd_hid_init(); यदि (status ! SL_STATUS_OK) { /* एउटा त्रुटि भयो। त्रुटि ह्यान्डलिङ यहाँ थपिनुपर्छ। */
}
तपाईंको उपकरणमा USB उपकरण HID कक्षा उदाहरण थप्दै
तपाईंको उपकरणमा HID वर्ग कार्यक्षमता थप्नको लागि, तपाईंले एउटा उदाहरण सिर्जना गर्नुपर्छ, त्यसपछि यसलाई तपाईंको उपकरणको कन्फिगरेसन(हरू) मा थप्नुपर्छ।
HID कक्षाको उदाहरण सिर्जना गर्दै
sl_usbd_hid_create_instance() प्रकार्यलाई कल गरेर HID वर्ग उदाहरण सिर्जना गर्नुहोस्। उदाहरणampतल दिइएको निर्देशनले पूर्वनिर्धारित आर्गुमेन्टहरू प्रयोग गरेर sl_usbd_hid_create_instance() मार्फत साधारण माउस प्रकार्य कसरी सिर्जना गर्ने भनेर देखाउँछ। sl_usbd_hid_create_instance() मा पास गर्ने कन्फिगरेसन आर्गुमेन्टहरूको बारेमा थप जानकारीको लागि, USB Device HID Class Instance Configurations हेर्नुहोस्।
Example – sl_usbd_hid_create_instance() मार्फत माउस प्रकार्य थप्दै
प्रतिलिपि अधिकार © 2025 सिलिकन प्रयोगशालाहरू। सबै अधिकार सुरक्षित।
१/४
माथिview
/* विश्वव्यापी स्थिरांकहरू। */ स्थिर स्थिरांक uint8_t app_usbd_hid_mouse_report_desc[] = {
SL_USBD_HID_GLOBAL_USAGE_PAGE + १, SL_USBD_HID_USAGE_PAGE_GENERIC_DESKTOP_CONTROLS, SL_USBD_HID_LOCAL_USAGE + १, SL_USBD_HID_CA_माउस, SL_USBD_HID_MAIN_COLLECTION + १, SL_USBD_HID_COLLECTION_APPLICATION, SL_USBD_HID_LOCAL_USAGE + १, SL_USBD_HID_CP_POINTER, SL_USBD_HID_MAIN_COLLECTION + १, SL_USBD_HID_COLLECTION_PHYSICAL, SL_USBD_HID_GLOBAL_USAGE_PAGE + १, SL_USBD_HID_USAGE_PAGE_BUTTON, SL_USBD_HID_LOCAL_USAGE_MIN + १, ० ०१, SL_USBD_HID_LOCAL_USAGE_MAX + १, ० ०३, SL_USBD_HID_GLOBAL_LOG_MIN + १, ० ००, SL_USBD_HID_GLOBAL_LOG_MAX + १, ० ०१, SL_USBD_HID_GLOBAL_REPORT_COUNT + १, ० ०३, SL_USBD_HID_GLOBAL_REPORT_SIZE + १, ० ०१, SL_USBD_HID_MAIN_INPUT + १, SL_USBD_HID_MAIN_DATA | SL_USBD_HID_MAIN_VARIABLE | SL_USBD_HID_MAIN_ABSOLUTE, SL_USBD_HID_GLOBAL_REPORT_COUNT + १, ० ०१, SL_USBD_HID_GLOBAL_REPORT_SIZE + १, ० ०D, SL_USBD_HID_MAIN_INPUT + १, SL_USBD_HID_MAIN_CONSTANT, SL_USBD_HID_GLOBAL_USAGE_PAGE + १, SL_USBD_HID_USAGE_PAGE_GENERIC_DESKTOP_CONTROLS, SL_USBD_HID_LOCAL_USAGE + १, SL_USBD_HID_DV_X, SL_USBD_HID_LOCAL_USAGE + १, SL_USBD_HID_DV_Y, SL_USBD_HID_GLOBAL_LOG_MIN + १, ० ८१, SL_USBD_HID_GLOBAL_LOG_MAX + १, ० ७F, SL_USBD_HID_GLOBAL_REPORT_SIZE + १, ० ०८, SL_USBD_HID_GLOBAL_REPORT_COUNT + १, ० ०२, SL_USBD_HID_MAIN_INPUT + १, SL_USBD_HID_MAIN_DATA | SL_USBD_HID_MAIN_VARIABLE | SL_USBD_HID_MAIN_RELATIVE, SL_USBD_HID_MAIN_ENDCOLLECTION, SL_USBD_HID_MAIN_ENDCOLLECTION };
/* स्थानीय चरहरू।*/ uint8_t class_nbr; sl_status_t स्थिति;
sl_usbd_hid_callbacks_t app_usbd_hid_callbacks = { शून्य, शून्य, एप_usbd_hid_get_report_desc, शून्य, शून्य, शून्य, शून्य, शून्य };
शून्य app_usbd_hid_get_report_desc(uint8_t class_nbr, const uint8_t **p_report_ptr, uint16_t *p_report_len)
{ (शून्य) वर्ग_एनबीआर;
*p_report_ptr = एप_usbd_हिड_माउस_रिपोर्ट_डेस्क; *p_report_len = साइज अफ(एप_usbd_हिड_माउस_रिपोर्ट_डेस्क); }
स्थिति = sl_usbd_hid_create_instance(SL_USBD_HID_SUBCLASS_BOOT, SL_USBD_HID_PROTOCOL_MOUSE, SL_USBD_HID_COUNTRY_CODE_NOT_SUPPORTED, Ex_USBD_HID_Mouse_ReportDesc, sizeof(Ex_USBD_HID_Mouse_ReportDesc), 2u, 2u, true, &app_usbd_hid_callbacks, &class_nbr);
प्रतिलिपि अधिकार © 2025 सिलिकन प्रयोगशालाहरू। सबै अधिकार सुरक्षित।
१/४
माथिview
/* एउटा त्रुटि भयो। त्रुटि ह्यान्डलिङ यहाँ थप्नु पर्छ। */}
तपाईंको उपकरणको कन्फिगरेसन(हरू) मा HID क्लास इन्स्ट्यान्स थप्दै तपाईंले HID क्लास इन्स्ट्यान्स सिर्जना गरेपछि, तपाईं प्रकार्यलाई कल गरेर कन्फिगरेसनमा थप्न सक्नुहुन्छ।
sl_usbd_कन्फिगरेसनमा_थप्नुहोस्() लुकाउनुहोस्।
पूर्वampतल sl_usbd_hid_add_to_configuration() लाई कसरी कल गर्ने भनेर देखाइएको छ।
Example – sl_usbd_hid_add_to_configuration() लाई कल गर्दै
sl_status_t स्थिति;
sl_usbd_कन्फिगरेसनमा_थप्नुहोस्_लुकाउनुहोस् (class_nbr,
(०३०३२५)
कन्फिग_एनबीआर_एफएस); (२)
यदि (स्थिति ! SL_STATUS_OK) {
/* एउटा त्रुटि भयो। त्रुटि ह्यान्डलिङ यहाँ थप्नु पर्छ। */
}
(१) sl_usbd_hid_create_instance() द्वारा फिर्ता गरिएको कन्फिगरेसनमा थप्नको लागि कक्षा नम्बर। (२) कन्फिगरेसन नम्बर (यहाँ यसलाई पूर्ण-गति कन्फिगरेसनमा थप्दै)।
USB उपकरण HID वर्ग प्रयोग गरेर सञ्चार गर्ने
कक्षा उदाहरण सञ्चार सिंक्रोनस सञ्चार कक्षा उदाहरण सञ्चार HID वर्गले होस्टसँग सञ्चार गर्न निम्न कार्यहरू प्रदान गर्दछ।
तालिका - HID सञ्चार API सारांश
प्रकार्य नाम
sl_usb d _hid _ re ad _sy nc() sl_usb d _hid _write _sy nc()
सञ्चालनले होस्टबाट अवरोध OUT अन्त्यबिन्दु मार्फत डेटा प्राप्त गर्दछ। यो प्रकार्यले अवरोध गर्दैछ। अवरोध IN अन्त्यबिन्दु मार्फत होस्टलाई डेटा पठाउँछ। यो प्रकार्यले अवरोध गर्दैछ।
सिंक्रोनस कम्युनिकेसन सिंक्रोनस कम्युनिकेसनको अर्थ स्थानान्तरण अवरुद्ध भइरहेको छ। प्रकार्य कलमा, एप्लिकेसनहरूले स्थानान्तरण त्रुटि सहित वा बिना पूरा नभएसम्म ब्लक गर्दछ। सधैंभरि पर्खनबाट बच्नको लागि टाइमआउट निर्दिष्ट गर्न सकिन्छ। पूर्वampतलको ले एउटा पढ्ने र लेख्ने तरिका देखाउँछ जसले अवरोध OUT अन्त्यबिन्दु प्रयोग गरेर होस्टबाट डेटा प्राप्त गर्छ र अवरोध IN अन्त्यबिन्दु प्रयोग गरेर होस्टमा डेटा पठाउँछ।
Example – सिंक्रोनस HID पढ्ने र लेख्ने
__ पङ्क्तिबद्ध (४) uint8_t rx_buf[2];
__ पङ्क्तिबद्ध(४) uint8_t tx_buf[2];
uint32_t
एक्सफर_लेन;
sl_status_t का थप वस्तुहरू
स्थिति;
स्थिति = sl_usbd_hid_read_sync(class_nbr,
(०३०३२५)
(शून्य *)rx_buf,
(०३०३२५)
2u,
0u,
(०३०३२५)
&xfer_len);
यदि (स्थिति ! SL_STATUS_OK) {
/* एउटा त्रुटि भयो। त्रुटि ह्यान्डलिङ यहाँ थप्नु पर्छ। */
}
प्रतिलिपि अधिकार © 2025 सिलिकन प्रयोगशालाहरू। सबै अधिकार सुरक्षित।
१/४
माथिview
status =sl_usbd_hid_read_sync(class_nbr,(1)(void *)rx_buf,(2)2u,0u,(3)&xfer_len);if(status ! SL_STATUS_OK){/* एउटा त्रुटि भयो। त्रुटि ह्यान्डलिङ यहाँ थप्नु पर्छ। */}
status =sl_usbd_hid_write_sync(class_nbr,(1)(void *)tx_buf,(4)2u,0u,(3)&xfer_len);if(status ! SL_STATUS_OK){/* एउटा त्रुटि भयो। त्रुटि ह्यान्डलिङ यहाँ थप्नु पर्छ। */}
(१) sl_usbd_hid_create_instance() बाट सिर्जना गरिएको क्लास इन्स्ट्यान्स नम्बरले HID क्लासलाई उचित अवरोध OUT वा IN अन्त्य बिन्दुमा स्थानान्तरण गर्न आन्तरिक सन्दर्भ प्रदान गर्दछ।
(२) अनुप्रयोगले यो सुनिश्चित गर्नुपर्छ कि प्रकार्यमा प्रदान गरिएको बफर सबै डेटा समायोजन गर्न पर्याप्त ठूलो छ। अन्यथा, सिंक्रोनाइजेसन समस्याहरू हुन सक्छन्। आन्तरिक रूपमा, sl_usbd_hid_create_instance() कल गर्दा नियन्त्रण पढ्ने झण्डा सेटमा निर्भर गर्दै, पढ्ने अपरेशन नियन्त्रण अन्त्य बिन्दु वा अवरोध अन्त्य बिन्दुसँग गरिन्छ।
(३) अनन्त अवरुद्ध अवस्थाबाट बच्नको लागि, मिलिसेकेन्डमा व्यक्त गरिएको टाइमआउट निर्दिष्ट गर्न सकिन्छ। ८०९ को मानले अनुप्रयोग कार्यलाई सधैंभरि पर्खन्छ।
(४) अनुप्रयोगले प्रारम्भिक ट्रान्समिट बफर प्रदान गर्दछ।
HID आवधिक इनपुट रिपोर्ट कार्य
ब्यान्डविथ बचत गर्न, होस्टसँग रिपोर्टिङ फ्रिक्वेन्सी सीमित गरेर अवरोध IN अन्त्य बिन्दुबाट रिपोर्टहरू मौन गर्ने क्षमता हुन्छ। त्यसो गर्न, होस्टले SET_IDLE अनुरोध पठाउनु पर्छ। सिलिकन ल्याब्सद्वारा लागू गरिएको HID वर्गमा एक आन्तरिक कार्य हुन्छ जसले रिपोर्टिङ फ्रिक्वेन्सी सीमालाई सम्मान गर्दछ जुन तपाईंले एक वा धेरै इनपुट रिपोर्टहरूमा लागू गर्न सक्नुहुन्छ। चित्र आवधिक इनपुट रिपोर्ट कार्यले आवधिक इनपुट रिपोर्ट कार्यहरूको कार्यप्रणाली देखाउँछ।
चित्र - आवधिक इनपुट रिपोर्ट कार्य
(१) उपकरणले SET_IDLE अनुरोध प्राप्त गर्दछ। यो अनुरोधले दिइएको रिपोर्ट ID को लागि निष्क्रिय अवधि निर्दिष्ट गर्दछ। SET_IDLE अनुरोधको बारेमा थप विवरणहरूको लागि, हेर्नुहोस्
(२) रिपोर्ट आईडी संरचना (HID वर्ग प्रारम्भिक चरणको समयमा आवंटित) निष्क्रिय अवधिको साथ अद्यावधिक गरिन्छ। निष्क्रिय अवधि काउन्टर निष्क्रिय अवधि मानको साथ प्रारम्भ गरिन्छ। रिपोर्ट आईडी संरचना इनपुट रिपोर्ट आईडी संरचनाहरू भएको लिङ्क गरिएको सूचीको अन्त्यमा सम्मिलित गरिन्छ। निष्क्रिय अवधि मान ४-ms एकाइमा व्यक्त गरिन्छ जसले ४ देखि १०२० ms को दायरा दिन्छ।
प्रतिलिपि अधिकार © 2025 सिलिकन प्रयोगशालाहरू। सबै अधिकार सुरक्षित।
१/४
माथिview
यदि निष्क्रिय अवधि अवरोध IN अन्त्य बिन्दुको मतदान अन्तराल भन्दा कम छ भने, रिपोर्टहरू मतदान अन्तरालमा उत्पन्न हुन्छन्।
(३) प्रत्येक ४ मिलिसेकेन्डमा, आवधिक इनपुट रिपोर्ट कार्यले इनपुट रिपोर्ट ID सूची ब्राउज गर्दछ। प्रत्येक इनपुट रिपोर्ट ID को लागि, कार्यले दुई सम्भावित कार्यहरू मध्ये एक गर्दछ। कार्य अवधिको अवधि निष्क्रिय अवधिको लागि प्रयोग गरिएको ४-मिसेकेन्ड एकाइसँग मेल खान्छ। यदि होस्टद्वारा कुनै SET_IDLE अनुरोधहरू पठाइएको छैन भने, इनपुट रिपोर्ट ID सूची खाली हुन्छ र कार्यसँग प्रशोधन गर्न केही छैन। कार्यले केवल रिपोर्ट ID हरूलाई प्रशोधन गर्दछ जुन ० भन्दा फरक छन् र ० भन्दा बढी निष्क्रिय अवधि भएका छन्।
(४) दिइएको इनपुट रिपोर्ट ID को लागि, कार्यले निष्क्रिय अवधि बितिसकेको छ कि छैन भनेर प्रमाणित गर्छ। यदि निष्क्रिय अवधि बितिसकेको छैन भने, काउन्टर घटाइन्छ र होस्टमा कुनै इनपुट रिपोर्ट पठाइँदैन।
(५) यदि निष्क्रिय अवधि बितिसकेको छ (अर्थात्, निष्क्रिय अवधि काउन्टर शून्यमा पुगेको छ), इन्टरप्ट IN एन्डपोइन्ट मार्फत sl_usbd_hid_write_sync() प्रकार्यलाई कल गरेर होस्टलाई इनपुट रिपोर्ट पठाइन्छ।
(६) कार्यद्वारा पठाइएको इनपुट रिपोर्ट डेटा रिपोर्ट वर्णनकर्तामा वर्णन गरिएको प्रत्येक इनपुट रिपोर्टको लागि आवंटित आन्तरिक डेटा बफरबाट आउँछ। एउटा अनुप्रयोग कार्यले इनपुट रिपोर्ट पठाउन sl_usbd_hid_write_sync() प्रकार्यलाई कल गर्न सक्छ। इनपुट रिपोर्ट डेटा पठाएपछि, sl_usbd_hid_write_sync() ले भर्खरै पठाइएको डेटासँग इनपुट रिपोर्ट ID सँग सम्बन्धित आन्तरिक बफरलाई अद्यावधिक गर्दछ। त्यसपछि, आवधिक इनपुट रिपोर्ट कार्यले प्रत्येक निष्क्रिय अवधि बितेपछि र अनुप्रयोग कार्यले आन्तरिक बफरमा डेटा अद्यावधिक नगरेसम्म सधैं उही इनपुट रिपोर्ट डेटा पठाउँछ। आवधिक इनपुट रिपोर्ट कार्यद्वारा गरिएको प्रसारणको सही समयमा परिमार्जन हुने घटनामा इनपुट रिपोर्ट ID डेटाको भ्रष्टाचारबाट बच्न केही लक गर्ने संयन्त्र छ।
प्रतिलिपि अधिकार © 2025 सिलिकन प्रयोगशालाहरू। सबै अधिकार सुरक्षित।
१/४
माथिview
माथिview
USB उपकरण MSC कक्षा
USB उपकरण MSC कक्षा समाप्तview USB उपकरण MSC कक्षा स्रोत आवश्यकताहरू कोर USB उपकरण MSC कक्षा कन्फिगरेसन USB उपकरण MSC कक्षा प्रोग्रामिङ गाइड USB उपकरण MSC कक्षा भण्डारण ड्राइभरहरू
यस खण्डले सिलिकन ल्याब्स USB उपकरणद्वारा समर्थित मास स्टोरेज उपकरण वर्ग (MSC) को वर्णन गर्दछ। MSC एक प्रोटोकल हो जसले USB उपकरण र होस्ट बीच जानकारीको स्थानान्तरण सक्षम गर्दछ। स्थानान्तरण भइरहेको जानकारी इलेक्ट्रोनिक रूपमा भण्डारण गर्न सकिने कुनै पनि चीज हो, जस्तै कार्यान्वयनयोग्य कार्यक्रमहरू, स्रोत कोड, कागजातहरू, छविहरू, कन्फिगरेसन डेटा, वा अन्य पाठ वा संख्यात्मक डेटा। USB उपकरण होस्टमा बाह्य भण्डारण माध्यमको रूपमा देखा पर्दछ, जसले स्थानान्तरण सक्षम गर्दछ। fileड्र्याग एण्ड ड्रप मार्फत।
A file प्रणालीले कसरी परिभाषित गर्छ fileहरू भण्डारण मिडियामा व्यवस्थित छन्। USB मास स्टोरेज वर्ग विशिष्टीकरणलाई कुनै विशेष आवश्यकता पर्दैन file अनुरूप उपकरणहरूमा प्रयोग गरिने प्रणाली। यसको सट्टा, यसले सानो कम्प्युटर प्रणाली इन्टरफेस (SCSI) पारदर्शी आदेश सेट प्रयोग गरेर डेटाका क्षेत्रहरू पढ्न र लेख्नको लागि एक सरल इन्टरफेस प्रदान गर्दछ। यसरी, अपरेटिङ सिस्टमहरूले USB ड्राइभलाई हार्ड ड्राइभ जस्तै व्यवहार गर्न सक्छन्, र यसलाई कुनै पनिसँग ढाँचा गर्न सक्छन्। file उनीहरूलाई मन पर्ने प्रणाली।
USB मास स्टोरेज उपकरण वर्गले निम्नानुसार दुई यातायात प्रोटोकलहरूलाई समर्थन गर्दछ:
थोक-मात्र यातायात (BOT) नियन्त्रण/थोक/अवरोध (CBI) यातायात (फ्लपी डिस्क ड्राइभहरूको लागि मात्र प्रयोग गरिन्छ)
मास स्टोरेज डिभाइस क्लासले BOT प्रोटोकल मात्र प्रयोग गरेर SCSI पारदर्शी कमाण्ड सेट लागू गर्दछ, जसले डेटा र स्थिति जानकारी प्रसारण गर्न बल्क एन्डपोइन्टहरू मात्र प्रयोग गरिनेछ भन्ने संकेत गर्दछ। MSC कार्यान्वयनले धेरै तार्किक एकाइहरूलाई समर्थन गर्दछ।
MSC कार्यान्वयन निम्न विशिष्टताहरूको अनुपालनमा छ:
युनिभर्सल सिरियल बस मास स्टोरेज क्लास स्पेसिफिकेशन समाप्तview, संशोधन १.३ सेप्टेम्बर ५, २००८। युनिभर्सल सिरियल बस मास स्टोरेज क्लास बल्क-ओन्ली ट्रान्सपोर्ट, संशोधन १.० सेप्टेम्बर ३१, १९९९।
USB उपकरण MSC aCl ss ओभरview
प्रोटोकल एन्डपोइन्ट्स क्लास अनुरोधहरू सानो कम्प्युटर प्रणाली इन्टरफेस (SCSI)
प्रोटोकल
यस खण्डमा, हामी मास स्टोरेज क्लासको बल्क-ओन्ली ट्रान्सपोर्ट (BOT) प्रोटोकलको बारेमा छलफल गर्नेछौं। बल्क-ओन्ली ट्रान्सपोर्ट प्रोटोकलमा तीनवटा छन्tages:
कमाण्ड ट्रान्सपोर्ट डाटा ट्रान्सपोर्ट स्टेटस ट्रान्सपोर्ट
मास स्टोरेज कमाण्डहरू होस्टद्वारा कमाण्ड ब्लक र्यापर (CBW) भनिने संरचना मार्फत पठाइन्छ। डेटा ट्रान्सपोर्ट आवश्यक पर्ने कमाण्डहरूको लागि stage, होस्टले CBW को लम्बाइ र झण्डा क्षेत्रहरू द्वारा निर्दिष्ट गरिएको उपकरणबाट बाइटहरूको सही संख्या पठाउन वा प्राप्त गर्ने प्रयास गर्नेछ। डेटा ट्रान्सपोर्ट s पछिtage, होस्टले उपकरणबाट कमाण्ड स्टेटस र्यापर (CSW) प्राप्त गर्ने प्रयास गर्दछ जसले कमाण्डको स्थिति साथै कुनै पनि डेटा अवशेषको विवरण दिन्छ (यदि
प्रतिलिपि अधिकार © 2025 सिलिकन प्रयोगशालाहरू। सबै अधिकार सुरक्षित।
१/४
माथिview
कुनै पनि)। डेटा ट्रान्सपोर्ट समावेश नगर्ने आदेशहरूको लागिtage, CBW पठाइएपछि होस्टले सिधै CSW प्राप्त गर्ने प्रयास गर्छ। प्रोटोकलको विस्तृत विवरण चित्र - MSC प्रोटोकलमा दिइएको छ।
चित्र - MSC प्रोटोकल
अन्त्य बिन्दु
उपकरण पक्षमा, BOT विशिष्टताको अनुपालनमा, MSC निम्न अन्त्यबिन्दुहरू मिलेर बनेको छ: पूर्वनिर्धारित अन्त्यबिन्दु भनिने नियन्त्रण IN र OUT अन्त्यबिन्दुहरूको जोडी। बल्क IN र OUT अन्त्यबिन्दुहरूको जोडी।
तलको तालिकाले अन्तिम बिन्दुहरूको विभिन्न प्रयोगहरू संकेत गर्दछ।
तालिका - MSC अन्त्यबिन्दु प्रयोग
अन्तिम बिन्दु
नियन्त्रण भित्र नियन्त्रण बाहिर थोक भित्र थोक बाहिर
दिशा
उपकरणबाट होस्ट होस्ट देखि उपकरण उपकरणबाट होस्ट होस्ट देखि उपकरण
प्रयोग
गणना र MSC वर्ग-विशिष्ट अनुरोधहरू गणना र MSC वर्ग-विशिष्ट अनुरोधहरू CSW र डेटा पठाउनुहोस् CBW र डेटा प्राप्त गर्नुहोस्
कक्षा अनुरोधहरू
MSC BOT प्रोटोकलको लागि दुई परिभाषित नियन्त्रण अनुरोधहरू छन्। यी अनुरोधहरू र तिनीहरूको विवरण तलको तालिकामा विस्तृत रूपमा दिइएको छ।
तालिका - सामूहिक भण्डारण कक्षा अनुरोधहरू
कक्षा अनुरोधहरू
थोक-मात्र ठूलो भण्डारण रिसेट
विवरण
यो अनुरोध मास स्टोरेज उपकरण र यसको सम्बन्धित इन्टरफेस रिसेट गर्न प्रयोग गरिन्छ। यो अनुरोधले अर्को कमाण्ड ब्लक प्राप्त गर्न उपकरणलाई तयार पार्छ।
प्रतिलिपि अधिकार © 2025 सिलिकन प्रयोगशालाहरू। सबै अधिकार सुरक्षित।
१/४
माथिview
कक्षा अनुरोधहरू
विवरण
अधिकतम प्राप्त गर्नुहोस् यो अनुरोध उपकरणद्वारा समर्थित उच्चतम तार्किक एकाइ नम्बर (LUN) फिर्ता गर्न प्रयोग गरिन्छ। उदाहरणका लागिampले, ए
LUN
LUN ० र LUN १ भएको उपकरणले १ को मान फर्काउनेछ। एकल तार्किक एकाइ भएको उपकरणले ० फर्काउनेछ वा
अनुरोध। फिर्ता गर्न सकिने अधिकतम मान १५ हो।
सानो कम्प्युटर प्रणाली इन्टरफेस SCSI
प्रोग्रामिङ इन्टरफेस स्तरमा, MSC उपकरणले SCSI र SFF-8020i (ATAPI) जस्ता मानक भण्डारण-मिडिया सञ्चार प्रोटोकलहरू मध्ये एक लागू गर्दछ। "प्रोग्रामिङ इन्टरफेस" ले कुन प्रोटोकल लागू गरिएको छ भनेर निर्दिष्ट गर्दछ, र USB भण्डारण उपकरणसँग सञ्चार गर्नको लागि उपयुक्त उपकरण ड्राइभर लोड गर्न होस्ट अपरेटिङ सिस्टमलाई मद्दत गर्दछ। SCSI USB MSC भण्डारण उपकरणहरूसँग प्रयोग हुने सबैभन्दा सामान्य प्रोटोकल हो। हामी MSC SCSI उपवर्गको लागि कार्यान्वयन प्रदान गर्दछौं जुन हाम्रा GSDK प्रयोगकर्ताहरूले बक्स बाहिर प्रयोग गर्न सक्छन्।
SCSI कम्प्युटर र परिधीय उपकरणहरू बीचको सञ्चार ह्यान्डल गर्ने मापदण्डहरूको सेट हो। यी मापदण्डहरूमा आदेशहरू, प्रोटोकलहरू, विद्युतीय इन्टरफेसहरू र अप्टिकल इन्टरफेसहरू समावेश छन्। USB जस्ता अन्य हार्डवेयर इन्टरफेसहरू प्रयोग गर्ने भण्डारण उपकरणहरूले उपकरण/होस्ट जानकारी प्राप्त गर्न र उपकरणको सञ्चालन नियन्त्रण गर्न र भण्डारण मिडियामा डेटाका ब्लकहरू स्थानान्तरण गर्न SCSI आदेशहरू प्रयोग गर्छन्।
SCSI आदेशहरूले उपकरण प्रकार र प्रकार्यहरूको विशाल दायरालाई समेट्छ र त्यसैले, उपकरणहरूलाई यी आदेशहरूको उपसमूह चाहिन्छ। सामान्यतया, आधारभूत सञ्चारको लागि निम्न आदेशहरू आवश्यक हुन्छन्:
सोधपुछ पढ्ने क्षमता (१०) पढ्नुहोस् (१०) अनुरोध सेन्स टेस्ट युनिट रेडी लेख्नुहोस् (१०)
कोरबाट USB उपकरण MSC कक्षा स्रोत आवश्यकताहरू
प्रत्येक पटक तपाईंले sl_usbd_msc_add_to_configuration() प्रकार्य मार्फत USB कन्फिगरेसनमा MSC क्लास इन्स्ट्यान्स थप्दा, निम्न स्रोतहरू कोरबाट आवंटित गरिनेछ।
स्रोत
इन्टरफेसहरू वैकल्पिक इन्टरफेसहरू अन्त्यबिन्दुहरू इन्टरफेस समूहहरू
मात्रा
३५ ६७ ३५ ६७
ध्यान दिनुहोस् कि ती संख्याहरू प्रति कन्फिगरेसन हुन्। तपाईंको SL_USBD_INTERFACE_QUANTITY , SL_USBD_ALT_INTERFACE_QUANTITY , SL_USBD_INTERFACE_GROUP_QUANTITY र SL_USBD_DESCRIPTOR_QUANTITY कन्फिगरेसन मानहरू सेट अप गर्दा, कक्षा कति कन्फिगरेसनहरू थपिनेछन् भन्ने कुरालाई ध्यानमा राख्न नबिर्सनुहोस्। SL_USBD_OPEN_ENDPOINTS_QUANTITY कन्फिगरेसन मानको लागि, होस्टद्वारा कन्फिगरेसन सेट गर्दा मात्र अन्त्यबिन्दुहरू खोलिने भएकोले, तपाईंले कक्षाको उदाहरणको लागि आवश्यक अन्त्यबिन्दुहरूको संख्यालाई मात्र ध्यानमा राख्नु पर्छ।
USB उपकरण MSC कक्षा कन्फिगरेसन
MSC कक्षा कन्फिगर गर्न कन्फिगरेसन प्यारामिटरहरूको दुई समूहहरू प्रयोग गरिन्छ:
USB उपकरण MSC वर्ग अनुप्रयोग-विशिष्ट कन्फिगरेसनहरू USB उपकरण MSC वर्ग तार्किक एकाइ कन्फिगरेसन
USB उपकरण MSC कक्षा अनुप्रयोग-विशिष्ट कन्फिगरेसनहरू
कक्षा संकलन-समय कन्फिगरेसनहरू कक्षा उदाहरण सिर्जना
प्रतिलिपि अधिकार © 2025 सिलिकन प्रयोगशालाहरू। सबै अधिकार सुरक्षित।
१/४
माथिview
कक्षा संकलन-समय कन्फिगरेसनहरू
सिलिकन ल्याब्स USB उपकरण MSC वर्ग र SCSI उपवर्ग sl_usbd_core_config.h मा अवस्थित #defines मार्फत कम्पाइल समयमा कन्फिगर गर्न सकिन्छ। file.
तालिका - सामान्य कन्फिगरेसन स्थिरांकहरू
कन्फिगरेसन नाम
विवरण
SL_USBD_MSC_CLASS_INST प्रकार्यमा कल मार्फत तपाईंले आवंटित गर्ने कक्षा उदाहरणहरूको संख्या
ANCE_QUANTITY
sl_usbd_msc_scsi_create_instance()।
SL_USBD_MSC_CONFIGURA कन्फिगरेसनको संख्या जसमा क्लास इन्स्ट्यान्सलाई कल मार्फत थप्न सकिन्छ
TION_QUANTITY
प्रकार्य sl_usbd_msc_scsi_add_to_configuration()।
SL_USBD_MSC_LUN_QUANT तपाईंले कल मार्फत थप्नुहुनेछ प्रति वर्ग उदाहरण तार्किक एकाइहरूको संख्या
ITY (इटाली)
प्रकार्य sl_usbd_msc_scsi_lun_add() ।
SL_USBD_MSC_SCSI_64_BIT ले ६४ बिटको लजिकल ब्लक ठेगाना (LBA) को लागि समर्थन सक्षम वा असक्षम पार्छ।
_एलबीए_एन
SL_USBD_MSC_DATA_BUFF बाइट्समा प्रति क्लास उदाहरण डेटा बफरको आकार ER_SIZE
पूर्वनिर्धारित मान
2
1
2
0
512
कक्षा उदाहरण सिर्जना
USB उपकरण MSC SCSI क्लास इन्स्ट्यान्स सिर्जना गर्न sl_usbd_msc_scsi_create_instance() प्रकार्यलाई कल गरेर गरिन्छ। यो प्रकार्यले तल वर्णन गरिएको एउटा कन्फिगरेसन आर्गुमेन्ट लिन्छ।
p_scsi_कलब्याकहरू
p_scsi_callbacks sl_usbd_msc_scsi_callbacks_t प्रकारको कन्फिगरेसन संरचनाको लागि एक सूचक हो। सामान्य usb उपकरण वर्ग कलब्याकहरू जडान/विच्छेदनका अतिरिक्त, यसले MSC वर्गलाई वैकल्पिक कलब्याक प्रकार्यहरूको सेट प्रदान गर्दछ जुन तार्किक एकाइमा घटना हुँदा कल गरिन्छ। यदि कुनै कलब्याक आवश्यक छैन भने यो तर्कमा शून्य सूचक (NULL) पास गर्न सकिन्छ।
तलको तालिकाले यस कन्फिगरेसन संरचनामा उपलब्ध प्रत्येक कन्फिगरेसन फिल्डको वर्णन गर्दछ।
तालिका – sl_usbd_msc_scsi_callbacks_t कन्फिगरेसन संरचना
क्षेत्रहरू
विवरण
सक्षम पार्नुहोस्
USB क्लास इन्स्ट्यान्स सफलतापूर्वक सक्षम भएपछि कल गरिन्छ।
.disable USB क्लास इन्स्ट्यान्स असक्षम पारिएको बेला कल गरिन्छ।
होस्टबाट तार्किक एकाइ निकाल्दा .host_eject प्रकार्य बोलाइन्छ।
प्रकार्य हस्ताक्षर
शून्य एप_usbd_msc_scsi_enable(uint8_t class_nbr);
शून्य एप_यूएसबीडी_एमएससी_एससीएसआई_डिसेबल(uint8_t वर्ग_एनबीआर); शून्य एप_यूएसबीडी_एमएससी_एससीएसआई_होस्ट_इजेक्ट(uint8_t वर्ग_एनबीआर, uint8_t lu_nbr);
USB उपकरण MSC कक्षा तार्किक एकाइ कन्फिगरेसन
MSC क्लास इन्स्ट्यान्समा तार्किक एकाइ थप्ने काम sl_usbd_msc_lun_add() प्रकार्यलाई कल गरेर गरिन्छ। यो प्रकार्यले तल वर्णन गरिएको एउटा कन्फिगरेसन आर्गुमेन्ट लिन्छ।
p_lu_info का थप वस्तुहरू
p_lu_info sl_usbd_msc_scsi_lun_info_t प्रकारको संरचनाको लागि सूचक हो। यसको उद्देश्य MSC कक्षालाई तार्किक एकाइको बारेमा जानकारी प्रदान गर्नु हो।
तलको तालिकाले यस कन्फिगरेसन संरचनामा उपलब्ध प्रत्येक कन्फिगरेसन फिल्डको वर्णन गर्दछ।
तालिका – sl_usbd_msc_scsi_lun_info_t कन्फिगरेसन संरचना
प्रतिलिपि अधिकार © 2025 सिलिकन प्रयोगशालाहरू। सबै अधिकार सुरक्षित।
१/४
माथिview
क्षेत्र
विवरण
क्षेत्र
.scsi_lun_api_p tr मा
विवरण
यो तार्किक एकाइ ह्यान्डल गर्ने मिडिया ड्राइभर API तर्फ सूचक। भण्डारण ड्राइभरहरूको बारेमा थप जानकारीको लागि USB उपकरण MSC कक्षा भण्डारण ड्राइभरहरू हेर्नुहोस्।
.पहिलेको_छ
.उत्पादन_आईडी_पीटीआर
.p ro d uct_ re v isi on_level .is_ re ad _o nly
तार्किक एकाइको विक्रेता पहिचान समावेश गर्ने स्ट्रिङमा सूचक। स्ट्रिङको अधिकतम लम्बाइ ८ वर्ण हो। तार्किक एकाइको उत्पादन पहिचान समावेश गर्ने स्ट्रिङमा सूचक। स्ट्रिङको अधिकतम लम्बाइ १६ वर्ण हो। उत्पादन संशोधन स्तर।
बिन्दुबाट तार्किक एकाइ पढ्ने मात्रको रूपमा देखिनु पर्छ कि पर्दैन भन्ने संकेत गर्ने झण्डा view होस्टको (सत्य) वा होइन (गलत)।
USB उपकरण MSC कक्षा प्रोग्रामिङ गाइड
यो खण्डले MSC कक्षा कसरी प्रयोग गर्ने भनेर व्याख्या गर्दछ।
USB उपकरण MSC कक्षा सुरु गर्ने तपाईंको उपकरणमा USB उपकरण MSC SCSI कक्षा उदाहरण थप्ने USB उपकरण MSC कक्षा तार्किक एकाइ ह्यान्डलिंग
USB उपकरण MSC कक्षा सुरु गर्दै
आफ्नो उपकरणमा MSC SCSI वर्ग कार्यक्षमता थप्नको लागि, पहिले प्रकार्य sl_usbd_msc_init() र sl_usbd_msc_scsi_init() लाई कल गरेर MSC आधार वर्ग र SCSI उपवर्ग सुरु गर्नुहोस्।
पूर्वampतल sl_usbd_msc_init() र sl_usbd_msc_scsi_init() लाई कसरी कल गर्ने भनेर देखाइएको छ।
Example – sl_usbd_msc_init() र sl_usbd_msc_scsi_init() लाई कल गर्दै
sl_status_t स्थिति;
status = sl_usbd_msc_init(); यदि (status ! SL_STATUS_OK) { /* एउटा त्रुटि भयो। त्रुटि ह्यान्डलिङ यहाँ थपिनुपर्छ। */
}
status = sl_usbd_msc_scsi_init(); यदि (status ! SL_STATUS_OK) { /* एउटा त्रुटि भयो। त्रुटि ह्यान्डलिङ यहाँ थपिनुपर्छ। */
}
तपाईंको उपकरणमा USB उपकरण MSC SCSI कक्षा उदाहरण थप्दै
तपाईंको उपकरणमा MSC SCSI वर्ग कार्यक्षमता थप्नको लागि, पहिले एउटा उदाहरण सिर्जना गर्नुहोस्, त्यसपछि यसलाई तपाईंको उपकरणको कन्फिगरेसन(हरू) मा थप्नुहोस्। तपाईंले आफ्नो उदाहरणमा कम्तिमा एउटा तार्किक एकाइ थप्नुपर्छ।
MSC SCSI कक्षाको उदाहरण सिर्जना गर्दै
sl_usbd_msc_scsi_create_instance() प्रकार्यलाई कल गरेर MSC SCSI कक्षाको उदाहरण सिर्जना गर्नुहोस्।
पूर्वampतल दिइएको ले पूर्वनिर्धारित आर्गुमेन्टहरू प्रयोग गरेर sl_usbd_msc_scsi_create_instance() लाई कसरी कल गर्ने भनेर देखाउँछ। sl_usbd_msc_scsi_create_instance() मा पास गर्नुपर्ने कन्फिगरेसन आर्गुमेन्टहरूको बारेमा थप जानकारीको लागि, USB उपकरण MSC कक्षा अनुप्रयोग विशिष्ट कन्फिगरेसनहरू हेर्नुहोस्।
Example – sl_usbd_ msc_scsi_create_instance() लाई कल गर्दै
प्रतिलिपि अधिकार © 2025 सिलिकन प्रयोगशालाहरू। सबै अधिकार सुरक्षित।
१/४
माथिview
uint8_t class_nbr; sl_status_t स्थिति;
sl_usbd_msc_scsi_callbacks_t app_usbd_msc_scsi_callbacks = { .सक्षम गर्नुहोस् = शून्य, .असक्षम गर्नुहोस् = शून्य, .होस्ट_इजेक्ट = शून्य };
स्थिति = sl_usbd_msc_scsi_create_instance(&app_usbd_msc_scsi_callbacks,0 &class_nbr);
यदि (स्थिति ! SL_STATUS_OK) { /* एउटा त्रुटि भयो। त्रुटि ह्यान्डलिङ यहाँ थपिनुपर्छ। */ }
तपाईंको उपकरणको कन्फिगरेसन(हरू) मा MSC कक्षाको उदाहरण थप्दै
तपाईंले MSC क्लास इन्स्ट्यान्स सिर्जना गरेपछि, तपाईंले फंक्शन कल गरेर यसलाई कन्फिगरेसनमा थप्न सक्नुहुन्छ
sl_usbd_msc_कन्फिगरेसनमा_थप्नुहोस्()।
पूर्वampतल पूर्वनिर्धारित आर्गुमेन्टहरू प्रयोग गरेर sl_usbd_msc_scsi_add_to_configuration() लाई कसरी कल गर्ने भनेर देखाउनुहोस्।
Example – sl_usbd_ msc_scsi_add_to_configuration() लाई कल गर्दै
sl_status_t स्थिति;
स्थिति = sl_usbd_msc_scsi_add_to_configuration(class_nbr,
(०३०३२५)
कन्फिग_एनबीआर_एफएस);
(०३०३२५)
यदि (स्थिति ! SL_STATUS_OK) {
/* एउटा त्रुटि भयो। त्रुटि ह्यान्डलिङ यहाँ थप्नु पर्छ। */
}
(१) sl_usbd_msc_scsi_create_instance() द्वारा फिर्ता गरिएको कन्फिगरेसनमा थप्नको लागि कक्षा नम्बर। (३२) कन्फिगरेसन नम्बर (यहाँ यसलाई पूर्ण-गति कन्फिगरेसनमा थप्दै)।
USB उपकरण MSC कक्षा तार्किक एकाइ ह्यान्डलिङ
तार्किक एकाइ थप्दै भण्डारण माध्यम जोड्ने/छुट्ट्याउने
तार्किक एकाइ थप्दै
तपाईंको MSC SCSI क्लास इन्स्ट्यान्समा तार्किक एकाइ थप्दा, यो भण्डारण माध्यम (RAMDisk, SD कार्ड, फ्ल्यास मेमोरी, आदि) मा बाँधिएको हुनुपर्छ। MSC क्लासले भण्डारण मिडियासँग सञ्चार गर्न भण्डारण ड्राइभर प्रयोग गर्दछ। तार्किक एकाइ थप्दा यो ड्राइभर आपूर्ति हुन आवश्यक पर्दछ।
पूर्वampतल sl_usbd_msc_scsi_lun_add() मार्फत तार्किक एकाइ कसरी थप्ने भनेर देखाइएको छ।
Example – sl_usbd_msc_scsi_lun_add() मार्फत तार्किक एकाइ थप्दै
प्रतिलिपि अधिकार © 2025 सिलिकन प्रयोगशालाहरू। सबै अधिकार सुरक्षित।
१/४
माथिview
sl_usbd_msc_scsi_lun_t *lu_object_ptr = शून्य;
sl_usbd_msc_scsi_lun_info_t लु_जानकारी;
sl_status_t का थप वस्तुहरू
स्थिति;
lu_info.sl_usbd_msc_scsi_lun_api_t = &एप_usbd_scsi_स्टोरेज_ब्लक_उपकरण_api;
लु_जानकारी.विक्रेता_आईडी_पीटीआर
= “सिलिकन ल्याब्स”;
lu_info.product_id_ptr मा जानुहोस्
= “ब्लक उपकरण पूर्वampले”;
lu_info.product_revision_level = ०x१०००u;
lu_info.is_पढ्न_मात्र
= गलत;
स्थिति = sl_usbd_msc_scsi_lun_add(class_nbr, &lu_info, &lu_object_ptr);
यदि (स्थिति ! SL_STATUS_OK) { /* एउटा त्रुटि भयो। त्रुटि ह्यान्डलिङ यहाँ थपिनुपर्छ। */ }
भण्डारण माध्यम जोड्ने/छुट्ट्याउने
तार्किक एकाइ थपिएपछि, होस्ट साइडबाट उपलब्ध हुनको लागि भण्डारण माध्यम जोड्नु पर्छ। MSC वर्गले तार्किक एकाइमा भण्डारण मिडिया सम्बन्ध नियन्त्रण गर्न दुई प्रकार्यहरू प्रदान गर्दछ: sl_usbd_msc_scsi_lun_attach() र sl_usbd_msc_scsi_lun_detach()। यी प्रकार्यहरूले तपाईंलाई आवश्यक भएमा एम्बेडेड अनुप्रयोगबाट पहुँच पुन: प्राप्त गर्न भण्डारण उपकरण हटाउने अनुकरण गर्न अनुमति दिन्छ।
पूर्वampतल sl_usbd_msc_scsi_lun_attach() र sl_usbd_msc_scsi_lun_detach() प्रकार्यहरू कसरी प्रयोग गर्ने भनेर देखाइएको छ।
Exampले - मिडिया संलग्न/अलग गर्नुहोस्
sl_status_t स्थिति;
स्थिति = sl_usbd_msc_scsi_lun_attach(lu_object_ptr); यदि (स्थिति ! SL_STATUS_OK) { /* एउटा त्रुटि भयो। त्रुटि ह्यान्डलिङ यहाँ थपिनुपर्छ। */
}
…
(०३०३२५)
स्थिति = sl_usbd_msc_scsi_lun_detach(lu_object_ptr); यदि (स्थिति ! SL_STATUS_OK) {
/* एउटा त्रुटि भयो। त्रुटि ह्यान्डलिङ यहाँ थप्नु पर्छ। */
}
…
(०३०३२५)
स्थिति = sl_usbd_msc_scsi_lun_attach(lu_object_ptr) यदि (स्थिति ! SL_STATUS_OK) {
/* एउटा त्रुटि भयो। त्रुटि ह्यान्डलिङ यहाँ थप्नु पर्छ। */
}
…
(०३०३२५)
(१) यस क्षणबाट, यदि MSC उपकरण होस्टमा जडान गरिएको छ भने, भण्डारण मिडिया पहुँचयोग्य हुनेछ।
(२) यदि MSC उपकरण होस्टमा जडान गरिएको छ भने, मिडिया अब अनुपलब्ध देखिनेछ। यस समयमा, इम्बेडेड अनुप्रयोगबाट मिडियामा सञ्चालनहरू गर्न सकिन्छ।
(३) फेरि, यदि MSC उपकरण होस्टमा जडान गरिएको छ भने, भण्डारण मिडिया जडान भएको रूपमा देखा पर्नेछ।
USB उपकरण MSC कक्षा भण्डारण ड्राइभरहरू
USB उपकरण MSC कक्षालाई भण्डारण माध्यमसँग सञ्चार गर्न भण्डारण ड्राइभर चाहिन्छ। हालको लागि, सिलिकन ल्याब्सले ड्राइभरहरू प्रदान गर्दैन।
प्रतिलिपि अधिकार © 2025 सिलिकन प्रयोगशालाहरू। सबै अधिकार सुरक्षित।
१/४
माथिview
TPY aa he ड्राइभर AI लाई typedef sl_usbd_msc_scsi_lun_api_t द्वारा परिभाषित गरिएको छ। हाम्रो sl_usbd_msc_scsi_lun_api_t v ri ble लाई तपाईंको sl_usbd_msc_scsi_lun_info_t v ri ble मा समावेश गर्नुपर्छ, जब तपाईं sl_usbd_msc_scsi_lun_add() सँग dd logic l एकाइ इकाई गर्नुहुन्छ। संरचनाहरूको बारेमा थप विवरणहरूको लागि खण्ड USB उपकरण MSC SCSI API हेर्नुहोस्। भण्डारण ड्राइभर कार्यान्वयन RAM मा क्षेत्रहरूको एरे जत्तिकै सरल हुन सक्छ। सामान्य क्षेत्र आकार (अर्थात्, ब्लक आकार) मास भण्डारण उपकरणहरूको लागि 512 हो, र CD-ROM हरूको लागि 2048 हो।
प्रतिलिपि अधिकार © 2025 सिलिकन प्रयोगशालाहरू। सबै अधिकार सुरक्षित।
१/४
माथिview
माथिview
USB उपकरण विक्रेता वर्ग
USB उपकरण विक्रेता वर्ग समाप्तview USB उपकरण विक्रेता वर्ग स्रोत आवश्यकताहरू कोर USB उपकरण विक्रेता वर्ग कन्फिगरेसन USB उपकरण विक्रेता वर्ग प्रोग्रामिङ गाइड विक्रेता वर्गले तपाईंलाई विक्रेता-विशिष्ट उपकरणहरू निर्माण गर्न अनुमति दिन्छ जसले स्वामित्व प्रोटोकल लागू गर्न सक्छ। यो होस्ट र उपकरण बीच डेटा स्थानान्तरण गर्न बल्क अन्त्य बिन्दुहरूको जोडीमा निर्भर गर्दछ। बल्क स्थानान्तरणहरू ठूलो मात्रामा असंरचित डेटा स्थानान्तरण गर्न सुविधाजनक छन् र त्रुटि पत्ता लगाउने र पुन: प्रयास संयन्त्र प्रयोग गरेर डेटाको भरपर्दो आदानप्रदान प्रदान गर्दछ। बल्क अन्त्य बिन्दुहरूको अतिरिक्त, विक्रेता वर्गले अवरोध अन्त्य बिन्दुहरूको वैकल्पिक जोडी पनि प्रयोग गर्न सक्छ। कुनै पनि अपरेटिङ सिस्टम (OS) विक्रेता वर्गसँग काम गर्न सक्छ यदि OS मा विक्रेता वर्ग ह्यान्डल गर्न ड्राइभर छ। OS मा निर्भर गर्दै, ड्राइभर नेटिभ वा विक्रेता-विशिष्ट हुन सक्छ। उदाहरणका लागि, Microsoft Windows® अन्तर्गत, तपाईंको अनुप्रयोगले विक्रेता उपकरणसँग सञ्चार गर्न Microsoft द्वारा प्रदान गरिएको WinUSB ड्राइभरसँग अन्तर्क्रिया गर्दछ।
USB उपकरण विक्रेता वर्ग समाप्तview
चित्र - विन्डोज होस्ट र विक्रेता वर्ग बीचको सामान्य वास्तुकलाले विक्रेता वर्ग प्रयोग गरेर होस्ट र उपकरण बीचको सामान्य वास्तुकला देखाउँछ। यस उदाहरणमाampहो, होस्ट अपरेटिङ सिस्टम एमएस विन्डोज हो।
चित्र - एमएस विन्डोज होस्ट र विक्रेता वर्ग बीचको सामान्य वास्तुकला
एमएस विन्डोज पक्षमा, एप्लिकेसनले USB लाइब्रेरीसँग अन्तर्क्रिया गरेर विक्रेता उपकरणसँग सञ्चार गर्दछ। libusb जस्ता पुस्तकालयहरूले उपकरण र यससँग सम्बन्धित पाइपहरू व्यवस्थापन गर्न र नियन्त्रण, बल्क र अवरोध अन्त्य बिन्दुहरू मार्फत उपकरणसँग सञ्चार गर्न API प्रदान गर्दछ।
उपकरण पक्षमा, विक्रेता वर्ग निम्न अन्त्य बिन्दुहरू मिलेर बनेको छ:
नियन्त्रण IN र OUT अन्त्यबिन्दुहरूको जोडीलाई पूर्वनिर्धारित अन्त्यबिन्दु भनिन्छ। बल्क IN र OUT अन्त्यबिन्दुहरूको जोडी।
प्रतिलिपि अधिकार © 2025 सिलिकन प्रयोगशालाहरू। सबै अधिकार सुरक्षित।
१/४
माथिview
अवरोध IN र OUT अन्त्यबिन्दुहरूको जोडी। यो जोडी वैकल्पिक हो। तलको तालिकाले विभिन्न अन्त्यबिन्दुहरूको प्रयोगलाई संकेत गर्दछ:
तालिका - विक्रेता वर्ग अन्त्यबिन्दु प्रयोग
अन्तिम बिन्दु दिशा
IN नियन्त्रण गर्नुहोस्
नियन्त्रण
बाहिर
थोक भित्र
उपकरण-होस्ट
> होस्ट-टु-डिभाइस
उपकरण-होस्ट
थोक आउट
IN मा अवरोध गर्नुहोस्
अवरोध गर्नुहोस्
बाहिर
होस्ट-टुडिभाइस
उपकरण-होस्ट
होस्ट-टुडिभाइस
प्रयोग
गणना र विक्रेता-विशिष्ट अनुरोधहरूको लागि मानक अनुरोधहरू।
गणना र विक्रेता-विशिष्ट अनुरोधहरूको लागि मानक अनुरोधहरू।
कच्चा डाटा सञ्चार। डाटालाई स्वामित्व प्रोटोकल अनुसार संरचित गर्न सकिन्छ।
कच्चा डाटा सञ्चार। डाटालाई स्वामित्व प्रोटोकल अनुसार संरचित गर्न सकिन्छ।
कच्चा डेटा सञ्चार वा सूचना। डाटालाई स्वामित्व प्रोटोकल अनुसार संरचित गर्न सकिन्छ। कच्चा डेटा सञ्चार वा सूचना। डाटालाई स्वामित्व प्रोटोकल अनुसार संरचित गर्न सकिन्छ।
उपकरण अनुप्रयोगले होस्टमा वा होस्टबाट डेटा पठाउन वा प्राप्त गर्न बल्क र अवरोध अन्त्यबिन्दुहरू प्रयोग गर्न सक्छ। यसले होस्टद्वारा पठाइएका विक्रेता-विशिष्ट अनुरोधहरू डिकोड गर्न पूर्वनिर्धारित अन्त्यबिन्दु मात्र प्रयोग गर्न सक्छ। मानक अनुरोधहरू सिलिकन ल्याब्स USB उपकरणको कोर तहद्वारा आन्तरिक रूपमा व्यवस्थित गरिन्छ।
कोरबाट USB उपकरण विक्रेता वर्ग स्रोत आवश्यकताहरू
प्रत्येक पटक तपाईंले sl_usbd_vendor_add_to_configuration() प्रकार्य मार्फत कन्फिगरेसनमा विक्रेता वर्ग उदाहरण थप्दा, निम्न स्रोतहरू कोरबाट आवंटित गरिनेछ।
स्रोत
इन्टरफेसहरू वैकल्पिक इन्टरफेसहरू अन्त्यबिन्दुहरू इन्टरफेस समूहहरू
मात्रा
१ १ २ (यदि तपाईंले अवरोध अन्त्यबिन्दुहरू सक्षम गर्नुभयो भने ४) ०
ध्यान दिनुहोस् कि ती संख्याहरू प्रति कन्फिगरेसन हुन्। तपाईंको SL_USBD_INTERFACE_QUANTITY , SL_USBD_ALT_INTERFACE_QUANTITY , SL_USBD_INTERFACE_GROUP_QUANTITY र SL_USBD_DESCRIPTOR_QUANTITY कन्फिगरेसन मानहरू सेट अप गर्दा, कक्षा कति कन्फिगरेसनहरू थपिनेछन् भन्ने कुरालाई ध्यानमा राख्न नबिर्सनुहोस्। SL_USBD_OPEN_ENDPOINTS_QUANTITY कन्फिगरेसन मानको लागि, होस्टद्वारा कन्फिगरेसन सेट गर्दा मात्र अन्त्यबिन्दुहरू खोलिने भएकोले, तपाईंले कक्षाको उदाहरणको लागि आवश्यक अन्त्यबिन्दुहरूको संख्यालाई मात्र ध्यानमा राख्नु पर्छ।
USB उपकरण विक्रेता वर्ग कन्फिगरेसन
विक्रेता वर्ग कन्फिगर गर्न कन्फिगरेसन प्यारामिटरहरूको दुई समूहहरू प्रयोग गरिन्छ:
USB उपकरण विक्रेता वर्ग अनुप्रयोग-विशिष्ट कन्फिगरेसनहरू USB उपकरण विक्रेता वर्ग उदाहरण कन्फिगरेसनहरू
USB उपकरण विक्रेता वर्ग अनुप्रयोग-विशिष्ट कन्फिगरेसनहरू
पहिले, सिलिकन ल्याब्स USB उपकरण विक्रेता वर्ग मोड्युल प्रयोग गर्न, तपाईंको अनुप्रयोग आवश्यकता अनुसार विक्रेता कम्पाइल-समय कन्फिगरेसन परिभाषित गर्नुहोस्। तिनीहरू sl_usbd_core_config.h हेडर भित्र पुन: समूहबद्ध छन्। file विक्रेता खण्ड अन्तर्गत। मात्रा कन्फिगरेसनको उद्देश्य USB उपकरण मोड्युललाई कति USB विक्रेता वस्तुहरू आवंटित गर्ने भन्ने बारे जानकारी गराउनु हो।
तलको तालिकाले प्रत्येक कन्फिगरेसन परिभाषित गर्दछ।
प्रतिलिपि अधिकार © 2025 सिलिकन प्रयोगशालाहरू। सबै अधिकार सुरक्षित।
१/४
माथिview
तालिका - USB उपकरण विक्रेता कन्फिगरेसन परिभाषित गर्दछ
कन्फिगरेसन नाम
विवरण
पूर्वनिर्धारित मान
SL_USBD_VENDOR_CLASS_INSTANCE_QUANTITY तपाईंले २ प्रकार्य sl_usbd_vendor_create_instance() मा कल मार्फत आवंटित गर्ने कक्षा उदाहरणहरूको संख्या।
SL_USBD_VENDOR_CONFIGURATION_QUANTITY कन्फिगरेसनहरूको संख्या। विक्रेता वर्ग उदाहरणहरू sl_usbd_vendor_add_to_configuration() प्रकार्यमा कल मार्फत एक वा बढी कन्फिगरेसनमा १ थप्न सकिन्छ।
USB उपकरण विक्रेता वर्ग उदाहरण कन्फिगरेसनहरू
यो खण्डले विक्रेता वर्ग उदाहरणहरूसँग सम्बन्धित कन्फिगरेसनहरू परिभाषित गर्दछ।
कक्षा उदाहरण सिर्जना intr_en अन्तराल p_vendor_callbacks
कक्षा उदाहरण सिर्जना
Vendor class instance सिर्जना गर्न sl_usbd_vendor_create_instance() प्रकार्यलाई कल गरिन्छ, जसले तल वर्णन गरिएका तीन कन्फिगरेसन आर्गुमेन्टहरू लिन्छ।
भित्र_र्नुहोस्
बुलियन जसले अवरोध अन्त्य बिन्दुहरूको जोडी थप्नुपर्छ वा पर्दैन भनेर संकेत गर्दछ।
मूल्य
सत्य झूटो
विवरण
एम्बेडेड एप्लिकेसनमा एक जोडी इन/आउट एन्डपोइन्टहरू थपिनेछन् र उपलब्ध गराइनेछन्। कुनै पनि अवरोध एन्डपोइन्ट थपिने छैन। केवल एक जोडी बल्क इन/आउट एन्डपोइन्टहरू उपलब्ध हुनेछन्।
अन्तराल
यदि तपाईंले intr_en लाई true मा सेट गर्नुभयो भने, तपाईंले अवरोध अन्त्य बिन्दु मतदान अन्तराल (मिलिसेकेन्डमा) निर्दिष्ट गर्न सक्नुहुन्छ। यदि तपाईंले intr_en लाई false मा सेट गर्नुभयो भने, तपाईंले अन्तराल ० मा सेट गर्न सक्नुहुन्छ किनकि यसलाई कक्षाले बेवास्ता गर्नेछ।
p_विक्रेता_कलब्याकहरू
p_vendor_callbacks भनेको कलब्याक फंक्शन स्ट्रक्चर भेरिएबलको लागि एउटा पोइन्टर हो। जुन तपाईंले क्लास स्पेसिफिक कन्ट्रोल रिक्वेस्टहरू ह्यान्डल गर्न निर्दिष्ट गर्न सक्नुहुन्छ। यदि तपाईंले कुनै क्लास स्पेसिफिक अनुरोधहरू प्रयोग गर्नुहुन्न वा सूचना सक्षम/असक्षम गर्न आवश्यक छ भने, तपाईंले यसलाई NULL मा सेट गर्न सक्नुहुन्छ।
पूर्वampतल दिइएको ले तपाईंको वर्ग विशिष्ट अनुरोध ह्यान्डलरको अपेक्षित हस्ताक्षर प्रदान गर्दछ।
Example – वर्ग-विशिष्ट अनुरोध प्रकार्यको हस्ताक्षर
शून्य एप_यूएसबीडी_विक्रेता_रेक_ह्यान्डल(uint8_t
कक्षा_एनबीआर, (१)
स्थिर sl_usbd_setup_req_t *p_setup_req); (२)
sl_usbd_vendor_callbacks_t एप_usbd_vendor_callback_functions =
{
.सक्षम = शून्य, .असक्षम = शून्य, .सेटअप_रेक = एप_यूएसबीडी_विक्रेता_रेक_ह्यान्डल,
};
(१) विक्रेता वर्ग उदाहरण नम्बर।
प्रतिलिपि अधिकार © 2025 सिलिकन प्रयोगशालाहरू। सबै अधिकार सुरक्षित।
१/४
माथिview
(२) होस्टबाट प्राप्त सेटअप अनुरोधको लागि सूचक।
USB उपकरण विक्रेता कक्षा प्रोग्रामिङ गाइड
यस खण्डले विक्रेता वर्ग कसरी प्रयोग गर्ने भनेर व्याख्या गर्दछ। USB उपकरण विक्रेता वर्ग सुरु गर्दै तपाईंको उपकरणमा USB उपकरण विक्रेता वर्ग उदाहरण थप्दै USB उपकरण विक्रेता वर्ग प्रयोग गरेर सञ्चार गर्दै
USB उपकरण विक्रेता वर्ग सुरु गर्दै
तपाईंको उपकरणमा विक्रेता वर्ग कार्यक्षमता थप्नको लागि, पहिले USBD_Vendor_Init() प्रकार्यलाई कल गरेर कक्षा सुरु गर्नुहोस्। उदाहरणका लागिampतल sl_usbd_vendor_init() लाई कसरी कल गर्ने भनेर देखाइएको छ।
Example – sl_usbd_vendor_init() लाई कल गर्दै
sl_status_t स्थिति;
status = sl_usbd_vendor_init(); यदि (status ! SL_STATUS_OK) { /* एउटा त्रुटि भयो। त्रुटि ह्यान्डलिङ यहाँ थपिनुपर्छ। */ }
तपाईंको उपकरणमा USB उपकरण विक्रेता वर्ग उदाहरण थप्दै
तपाईंको उपकरणमा विक्रेता वर्ग कार्यक्षमता थप्नको लागि, तपाईंले पहिले एउटा उदाहरण सिर्जना गर्नुपर्छ, त्यसपछि यसलाई आफ्नो उपकरणको कन्फिगरेसन(हरू) मा थप्नुपर्छ।
विक्रेता वर्ग उदाहरण सिर्जना गर्दै तपाईंको उपकरणको कन्फिगरेसन(हरू) मा विक्रेता वर्ग उदाहरण थप्दै
विक्रेता वर्ग उदाहरण सिर्जना गर्दै
sl_usbd_vendor_create_instance() प्रकार्यलाई कल गरेर विक्रेता वर्ग उदाहरण सिर्जना गर्नुहोस्। उदाहरणampतल पूर्वनिर्धारित आर्गुमेन्टहरू प्रयोग गरेर sl_usbd_vendor_create_instance() लाई कसरी कल गर्ने भनेर देखाइएको छ। sl_usbd_vendor_create_instance() मा पास गर्नुपर्ने कन्फिगरेसन आर्गुमेन्टहरूको बारेमा थप जानकारीको लागि, USB उपकरण विक्रेता वर्ग उदाहरण कन्फिगरेसनहरू हेर्नुहोस्।
Example – sl_usbd_vendor_create_instance() लाई कल गर्दै
uint8_t class_nbr; sl_status_t स्थिति;
स्थिति = sl_usbd_vendor_create_instance(गलत,
(०३०३२५)
0u,
(०३०३२५)
app_usbd_vendor_callback_functions, (3)
&class_nbr);
यदि (स्थिति ! SL_STATUS_OK) {
/* एउटा त्रुटि भयो। त्रुटि ह्यान्डलिङ यहाँ थप्नु पर्छ। */
}
(१) यस वर्ग उदाहरणमा कुनै अवरोध अन्त्यबिन्दुहरू छैनन्। (२) अवरोध अन्त्यबिन्दुहरू असक्षम पारिएको हुनाले अन्तराललाई बेवास्ता गरिन्छ।
प्रतिलिपि अधिकार © 2025 सिलिकन प्रयोगशालाहरू। सबै अधिकार सुरक्षित।
१/४
माथिview
(३) कलब्याक प्रकार्य जुन तपाईंको अनुप्रयोगको अंश हो जसले विक्रेता-विशिष्ट वर्ग अनुरोधहरू ह्यान्डल गर्दछ। थप जानकारीको लागि USB उपकरण विक्रेता वर्ग प्रयोग गरेर सञ्चार हेर्नुहोस्। तपाईंको उपकरणको कन्फिगरेसन(हरू) मा विक्रेता वर्ग उदाहरण थप्दै तपाईंले विक्रेता वर्ग उदाहरण सिर्जना गरेपछि, तपाईं USBD_Vendor_ConfigAdd() प्रकार्यलाई कल गरेर यसलाई कन्फिगरेसनमा थप्न सक्नुहुन्छ। पूर्वampतल पूर्वनिर्धारित आर्गुमेन्टहरू प्रयोग गरेर sl_usbd_vendor_add_to_configuration() लाई कसरी कल गर्ने भनेर देखाइएको छ।
Example – sl_usbd_vendor_add_to_configuration() लाई कल गर्दै
sl_status_t स्थिति;
स्थिति = sl_usbd_vendor_add_to_configuration(class_nbr,
(०३०३२५)
कन्फिग_एनबीआर_एफएस);
(०३०३२५)
यदि (स्थिति ! SL_STATUS_OK) {
/* एउटा त्रुटि भयो। त्रुटि ह्यान्डलिङ यहाँ थप्नु पर्छ। */
}
(१) sl_usbd_vendor_create_instance() द्वारा फिर्ता गरिएको कन्फिगरेसनमा थप्नको लागि कक्षा नम्बर। (२) कन्फिगरेसन नम्बर (यहाँ यसलाई पूर्ण-गति कन्फिगरेसनमा थप्दै)।
USB उपकरण विक्रेता वर्ग प्रयोग गरेर सञ्चार गर्ने
सामान्य सिंक्रोनस सञ्चार एसिन्क्रोनस सञ्चार विक्रेता अनुरोध सामान्य विक्रेता वर्गले होस्टसँग सञ्चार गर्न निम्न प्रकार्यहरू प्रदान गर्दछ। प्रकार्यको प्यारामिटरहरूको बारेमा थप विवरणहरूको लागि, USB उपकरण विक्रेता API हेर्नुहोस्।
तालिका - विक्रेता सञ्चार API सारांश
प्रकार्य नाम
sl_usb d _v e nd o r_ re ad _b ulk_sy nc() sl_usb d _v e nd o r_write _b ulk_sy nc() sl_usb d _v e nd o r_ re ad _b ulk_asy nc() sl_usb d _v e nd o r_ re ad _b ulk_asy nc() sl_usb d _v e nd o r_ re ad _inte rrup t_sy nc() sl_usb d _v e nd o r_ re ad _inte rrup t_sy nc() sl_usb d _v e nd o r_ write _inte rrup t_sy nc() sl_usb d _v e nd o r_ re ad _inte rrup t_asy nc
()
sl_usb d _v e o r_write _inte rrup t_asy nc
()
सञ्चालनले होस्टबाट बल्क OUT अन्त्यबिन्दु मार्फत डेटा प्राप्त गर्दछ। यो प्रकार्य ब्लक गर्दैछ। बल्क IN अन्त्यबिन्दु मार्फत होस्टमा डेटा पठाउँछ। यो प्रकार्य ब्लक गर्दैछ। बल्क OUT अन्त्यबिन्दु मार्फत होस्टबाट डेटा प्राप्त गर्दछ। यो प्रकार्य ब्लक गर्दैछ। बल्क IN अन्त्यबिन्दु मार्फत होस्टमा डेटा पठाउँछ। यो प्रकार्य ब्लक गर्दैछ। अवरोध OUT अन्त्यबिन्दु मार्फत होस्टबाट डेटा प्राप्त गर्दछ। यो प्रकार्य ब्लक गर्दैछ। अवरोध IN अन्त्यबिन्दु मार्फत होस्टमा डेटा पठाउँछ। यो प्रकार्य ब्लक गर्दैछ। अवरोध OUT अन्त्यबिन्दु मार्फत होस्टबाट डेटा प्राप्त गर्दछ। यो प्रकार्य गैर-
अवरुद्ध।
इन्टरप्ट IN एन्डपोइन्ट मार्फत होस्टमा डेटा पठाउँछ। यो प्रकार्य गैर-ब्लकिङ हो।
विक्रेता अनुरोधहरू पनि होस्टसँग कुराकानी गर्ने अर्को तरिका हो। होस्टद्वारा पठाइएका विक्रेता अनुरोधहरू व्यवस्थापन गर्दा, अनुप्रयोगले नियन्त्रण अन्त्य बिन्दु प्रयोग गरेर होस्टबाट वा होस्टमा डेटा प्राप्त गर्न वा पठाउन सक्छ; तपाईंले sl_usbd_vendor_create_instance() को प्यारामिटरको रूपमा पास गरिएको अनुप्रयोग कलब्याक प्रदान गर्न आवश्यक हुनेछ। सिंक्रोनस सञ्चार।
प्रतिलिपि अधिकार © 2025 सिलिकन प्रयोगशालाहरू। सबै अधिकार सुरक्षित।
१/४
माथिview
सिंक्रोनस कम्युनिकेसनको अर्थ स्थानान्तरण अवरुद्ध भइरहेको छ। जब कुनै प्रकार्य कल गरिन्छ, एप्लिकेसनले स्थानान्तरण त्रुटि सहित वा बिना पूरा नभएसम्म रोक्छ। सधैंभरि पर्खनबाट बच्नको लागि टाइमआउट निर्दिष्ट गर्न सकिन्छ। पूर्वampतलको ले एउटा पढ्ने र लेख्ने सुविधा देखाउँछ जसले बल्क आउट एन्डपोइन्ट प्रयोग गरेर होस्टबाट डेटा प्राप्त गर्छ र बल्क IN एन्डपोइन्ट प्रयोग गरेर होस्टमा डेटा पठाउँछ।
Example – सिंक्रोनस बल्क पढ्ने र लेख्ने
__ पङ्क्तिबद्ध (४) uint8_t rx_buf[2];
__ पङ्क्तिबद्ध(४) uint8_t tx_buf[2];
uint32_t
एक्सफर_लेन;
sl_status_t का थप वस्तुहरू
स्थिति;
स्थिति = sl_usbd_vendor_read_bulk_sync(class_nbr,
(०३०३२५)
(शून्य *)&rx_buf[0],
(०३०३२५)
2u,
0u,
(०३०३२५)
&xfer_len);
यदि (स्थिति ! SL_STATUS_OK) {
/* $$$$ त्रुटि सम्हाल्नुहोस्। */
}
स्थिति = sl_usbd_vendor_write_bulk_sync( class_nbr,
(०३०३२५)
(शून्य *)&tx_buf[0],
(०३०३२५)
2u,
0u,
(०३०३२५)
झूटो,
(०३०३२५)
&xfer_len);
यदि (स्थिति ! SL_STATUS_OK) {
/* $$$$ त्रुटि सम्हाल्नुहोस्। */
}
(१) sl_usbd_vendor_create_instance() को साथ सिर्जना गरिएको क्लास इन्स्टन्स नम्बरले उचित बल्क OUT वा IN अन्त्य बिन्दुमा स्थानान्तरण रुट गर्न विक्रेता वर्गको आन्तरिक सन्दर्भ प्रदान गर्दछ।
(२) अनुप्रयोगले प्रकार्यलाई प्रदान गरिएको बफर सबै डेटा समायोजन गर्न पर्याप्त ठूलो छ भनी सुनिश्चित गर्नुपर्छ। अन्यथा, सिङ्क्रोनाइजेसन समस्याहरू हुन सक्छन्।
(३) अनन्त अवरुद्ध अवस्थाबाट बच्नको लागि, मिलिसेकेन्डमा व्यक्त गरिएको टाइमआउट निर्दिष्ट गर्न सकिन्छ। ८०९ को मानले अनुप्रयोग कार्यलाई सधैंभरि पर्खन बाध्य बनाउँछ।
(४) अनुप्रयोगले प्रारम्भिक ट्रान्समिट बफर प्रदान गर्दछ।
(५) यदि यो फ्ल्याग true मा सेट गरिएको छ, र स्थानान्तरण लम्बाइ अन्त्य बिन्दु अधिकतम प्याकेट आकारको गुणन हो भने, उपकरण स्ट्याकले स्थानान्तरणको अन्त्य संकेत गर्न होस्टमा शून्य-लम्बाइ प्याकेट पठाउनेछ।
अवरोध अन्त्यबिन्दु संचार प्रकार्यहरू, sl_usbd_vendor_read_interrupt_sync() र sl_usbd_vendor_write_interrupt_sync() को प्रयोग, Ex मा प्रस्तुत गरिएको बल्क अन्त्यबिन्दु संचार प्रकार्यहरू जस्तै छ।ample – सिंक्रोनस बल्क पढ्ने र लेख्ने।
एसिन्क्रोनस सञ्चार
एसिन्क्रोनस कम्युनिकेसनको अर्थ स्थानान्तरण गैर-ब्लकिङ हो। जब कुनै प्रकार्य कल गरिन्छ, अनुप्रयोगले स्थानान्तरण जानकारी उपकरण स्ट्याकमा पठाउँछ र ब्लक गर्दैन। USB बस मार्फत स्थानान्तरण प्रगतिमा हुँदा अन्य अनुप्रयोग प्रशोधन गर्न सकिन्छ। स्थानान्तरण पूरा भएपछि, स्थानान्तरण पूरा भएको बारे अनुप्रयोगलाई जानकारी दिन उपकरण स्ट्याकद्वारा कलब्याक प्रकार्य बोलाइन्छ। पूर्वampतलको ले एसिन्क्रोनस पढ्ने र लेख्ने तरिका देखाउँछ।
Example – एसिन्क्रोनस बल्क पढ्ने र लेख्ने
प्रतिलिपि अधिकार © 2025 सिलिकन प्रयोगशालाहरू। सबै अधिकार सुरक्षित।
१/४
माथिview
शून्य एप_यूएसबीडी_विक्रेता_कम (uint8_t वर्ग_एनबीआर)
{
__ पङ्क्तिबद्ध (४) uint8_t rx_buf[2];
__ पङ्क्तिबद्ध(४) uint8_t tx_buf[2];
sl_status_t का थप वस्तुहरू
स्थिति;
स्थिति = sl_usbd_vendor_read_bulk_async(class_nbr,
(शून्य *)&rx_buf[0],
(०३०३२५)
2u,
एप_युएसबीडी_विक्रेता_आरएक्स_पूरा भयो,
शून्य);
(०३०३२५)
यदि (स्थिति ! SL_STATUS_OK) {
/* $$$$ त्रुटि सम्हाल्नुहोस्। */
}
स्थिति = sl_usbd_vendor_write_bulk_async(class_nbr,
(शून्य *)&tx_buf[0],
(०३०३२५)
2u,
एप_युएसबीडी_विक्रेता_टीएक्स_पूरा भयो,
खाली,
(०३०३२५)
गलत);
(०३०३२५)
यदि (स्थिति ! SL_STATUS_OK) {
/* $$$$ त्रुटि सम्हाल्नुहोस्। */
}
}
(२) (१)
(२) (१)
स्थिर शून्य app_usbd_vendor_rx_completed(uint8_t class_nbr,
(०३०३२५)
शून्य *p_buf,
uint32_t buf_len,
uint32_t xfer_len,
शून्य *p_callback_arg,
(sl_status_t स्थिति)
{
यदि (स्थिति ! SL_STATUS_OK) {
/* $$$$ केही प्रशोधन गर्नुहोस्। */
} अरु {
/* $$$$ त्रुटि सम्हाल्नुहोस्। */
}
}
स्थिर शून्य app_usbd_vendor_tx_completed(uint8_t class_nbr,
(०३०३२५)
शून्य *p_buf,
uint32_t buf_len,
uint32_t xfer_len,
शून्य *p_callback_arg,
(sl_status_t स्थिति)
{
यदि (स्थिति ! SL_STATUS_OK) {
/* $$$$ केही प्रशोधन गर्नुहोस्। */
} अरु {
/* $$$$ त्रुटि सम्हाल्नुहोस्। */
}
}
(१) क्लास इन्स्ट्यान्स नम्बरले ट्रान्सफरलाई उचित बल्क OUT वा IN एन्डपोइन्टमा रुट गर्न विक्रेता क्लासको आन्तरिक सन्दर्भ प्रदान गर्दछ। (२) एप्लिकेसनले प्रदान गरिएको बफर सबै डेटा समायोजन गर्न पर्याप्त ठूलो छ भनी सुनिश्चित गर्नुपर्छ। अन्यथा, सिङ्क्रोनाइजेसन समस्याहरू हुन सक्छन्। (३) एप्लिकेसनले प्यारामिटरको रूपमा पास गरिएको कलब्याक प्रकार्य पोइन्टर प्रदान गर्दछ। ट्रान्सफर पूरा भएपछि, उपकरण स्ट्याकले यो कलब्याक प्रकार्यलाई कल गर्दछ ताकि एप्लिकेसनले ट्रान्सफर परिणामको विश्लेषण गरेर ट्रान्सफरलाई अन्तिम रूप दिन सकोस्। उदाहरणका लागि, पढ्ने अपरेशन पूरा भएपछि, एप्लिकेसनले प्राप्त डेटामा प्रशोधन गर्न सक्छ। लेखन पूरा भएपछि, एप्लिकेसनले लेखन सफल भयो कि भएन र कति बाइटहरू पठाइयो भनेर संकेत गर्न सक्छ।
प्रतिलिपि अधिकार © 2025 सिलिकन प्रयोगशालाहरू। सबै अधिकार सुरक्षित।
१/४
माथिview
(४) कलब्याकसँग सम्बन्धित एउटा तर्क पनि पास गर्न सकिन्छ। त्यसपछि कलब्याक सन्दर्भमा, केही निजी जानकारी प्राप्त गर्न सकिन्छ। (५) अनुप्रयोगले प्रारम्भिक ट्रान्समिट बफर प्रदान गर्दछ। (६) यदि यो फ्ल्याग true मा सेट गरिएको छ, र स्थानान्तरण लम्बाइ अन्त्यबिन्दु अधिकतम प्याकेट आकारको गुणन हो भने, उपकरण स्ट्याकले स्थानान्तरणको अन्त्य संकेत गर्न होस्टमा शून्य-लम्बाइ प्याकेट पठाउनेछ। अवरोध अन्त्यबिन्दु संचार प्रकार्यहरू, sl_usbd_vendor_read_interrupt_async() र sl_usbd_vendor_write_interrupt_async() को प्रयोग, Ex मा प्रस्तुत गरिएको बल्क अन्त्यबिन्दु संचार प्रकार्यहरू जस्तै छ।ampएसिन्क्रोनस बल्क पढ्ने र लेख्ने।
विक्रेता अनुरोध
USB २.० स्पेसिफिकेशनले तीन प्रकारका अनुरोधहरू परिभाषित गर्दछ: मानक, वर्ग, र विक्रेता। सबै मानक अनुरोधहरू कोर तहद्वारा सिधै ह्यान्डल गरिन्छन्, जबकि वर्ग अनुरोधहरू उचित सम्बन्धित वर्गद्वारा व्यवस्थित गरिन्छन्। विक्रेता अनुरोधहरू विक्रेता वर्गद्वारा प्रशोधन गर्न सकिन्छ। विक्रेता अनुरोधहरू प्रशोधन गर्न, तपाईंले sl_usbd_vendor_create_instance() को प्यारामिटरको रूपमा अनुप्रयोग कलब्याक प्रदान गर्नुपर्छ। USB उपकरणद्वारा विक्रेता अनुरोध प्राप्त भएपछि, यसलाई राम्ररी डिकोड गर्नुपर्छ। पूर्वampतल विक्रेता अनुरोध डिकोडिङ देखाउँछ। डेटाको समयमा होस्टबाट केही अनुरोधहरू प्राप्त गर्न वा पठाउन आवश्यक पर्न सक्छ।tagनियन्त्रण स्थानान्तरणको e। यदि कुनै डेटा छैन भनेtage उपस्थित छ, तपाईंले केवल सेटअप प्याकेट डिकोड गर्नुपर्छ। यो उदाहरणample ले तीन प्रकारका डेटाहरू देखाउँछtage व्यवस्थापन: कुनै डाटा छैन, डाटा बाहिर र डाटा भित्र।
Example – विक्रेता अनुरोध डिकोडिङ
प्रतिलिपि अधिकार © 2025 सिलिकन प्रयोगशालाहरू। सबै अधिकार सुरक्षित।
१/४
माथिview
#APP_VENDOR_REQ_NO_DATA परिभाषित गर्नुहोस्
०x४१u
#परिभाषित गर्नुहोस् APP_VENDOR_REQ_RECEIVE_DATA_FROM_HOST ०x०२u बाट
#परिभाषित गर्नुहोस् APP_VENDOR_REQ_SEND_DATA_TO_HOST ०x०३u
#APP_VENDOR_REQ_DATA_BUF_SIZE परिभाषित गर्नुहोस्
50u
स्थिर uint8_t एप_विक्रेता_req_buf[APP_VENDOR_REQ_DATA_BUF_SIZE];
स्थिर बुल एप_यूएसबीडी_विक्रेता_रेक्यु (uint8_t
कक्षा_एनबीआर,
स्थिर sl_usbd_setup_req_t *p_setup_req)
(०३०३२५)
{
बुल मान्य;
sl_status_t स्थिति;
uint16_t आवश्यकता_लेन;
uint32_t xfer_len;
(शून्य) वर्ग_एनबीआर;
switch(p_setup_req->bRequest) { केस APP_VENDOR_REQ_NO_DATA: मान्य = सत्य; ब्रेक;
(२) (१)
केस APP_VENDOR_REQ_RECEIVE_DATA_FROM_HOST:
(०३०३२५)
req_len = p_setup_req->w लम्बाइ;
यदि (req_len > APP_VENDOR_REQ_DATA_BUF_SIZE) {
// डेटा प्राप्त गर्न पर्याप्त ठाउँ छैन।
फिर्ता (झूटा);
}
// कन्ट्रोल आउट EP मार्फत डेटा प्राप्त गर्नुहोस्। // स्थानान्तरण पूरा हुनको लागि सधैं पर्खनुहोस्। स्थिति = sl_usbd_core_read_control_sync((void *)&app_vendor_req_buf[0u],
req_len, 0u, &xfer_len); यदि (स्थिति ! SL_STATUS_OK) { मान्य = गलत; } अन्यथा { मान्य = सत्य; } ब्रेक;
केस APP_VENDOR_REQ_SEND_DATA_TO_HOST:
(०३०३२५)
आवश्यकता_लेन = APP_VENDOR_REQ_DATA_BUF_SIZE;
// ढाँचाले बफ भर्नुहोस्। Mem_Set((void *)&AppVendorReqBuf[0u],
'ए',
आवश्यकता_लेन);
// नियन्त्रण IN EP मार्फत डेटा पठाउनुहोस्। // स्थानान्तरण पूरा हुनको लागि सधैं पर्खनुहोस्। स्थिति = sl_usbd_core_write_control_sync((void *)&app_vendor_req_buf[0u],
req_len, 0u, गलत, &xfer_len); यदि (स्थिति ! SL_STATUS_OK) { मान्य = DEF_FAIL; } अन्यथा { मान्य = DEF_OK; } ब्रेक;
पूर्वनिर्धारित:
(०३०३२५)
// अनुरोध समर्थित छैन।
प्रतिलिपि अधिकार © 2025 सिलिकन प्रयोगशालाहरू। सबै अधिकार सुरक्षित।
१/४
माथिview
मान्य =सत्य;ब्रेक;
केस APP_VENDOR_REQ_RECEIVE_DATA_FROM_HOST:(4) req_len = p_setup_req->wLength;if(req_len > APP_VENDOR_REQ_DATA_BUF_SIZE){// डेटा प्राप्त गर्न पर्याप्त ठाउँ छैन।return(false);}// नियन्त्रण आउट मार्फत डेटा प्राप्त गर्नुहोस् EP.// स्थानान्तरण पूरा हुनको लागि सधैं पर्खनुहोस्। स्थिति =sl_usbd_core_read_control_sync((void *)&app_vendor_req_buf[0u],
req_len,0u,&xfer_len);यदि(स्थिति ! SL_STATUS_OK){ मान्य =गलत;}अन्य{ मान्य =सत्य;}ब्रेक;
केस APP_VENDOR_REQ_SEND_DATA_TO_HOST:(5) req_len = APP_VENDOR_REQ_DATA_BUF_SIZE;// ढाँचाले buf भर्नुहोस्।Mem_Set((void *)&AppVendorReqBuf[0u],'A',
req_len);// Control IN EP मार्फत डेटा पठाउनुहोस्।// स्थानान्तरण पूरा हुनको लागि सधैं पर्खनुहोस्। status =sl_usbd_core_write_control_sync((void *)&app_vendor_req_buf[0u],
req_len,0u,false,&xfer_len);यदि(स्थिति ! SL_STATUS_OK){ मान्य = DEF_FAIL;}अन्य{ मान्य = DEF_OK;}ब्रेक;
पूर्वनिर्धारित:(6)// अनुरोध समर्थित छैन। मान्य = DEF_FAIL;break;}return(valid);}
(१) कोरले तपाईंको एप्लिकेसनमा सेटअप प्याकेट सामग्री पास गर्नेछ। संरचना sl_usbd_setup_req_t मा USB 2.0 स्पेसिफिकेशन द्वारा परिभाषित गरिएका समान क्षेत्रहरू छन् (थप विवरणहरूको लागि स्पेसिफिकेशनको खण्ड "9.3 USB उपकरण अनुरोधहरू" हेर्नुहोस्):
टाइपडेफ संरचना {
uint8_t bmRequestType; /* अनुरोधका विशेषताहरू।
*/
uint8_t bRequest; /* विशिष्ट अनुरोध।
*/
uint16_t wValue; /* अनुरोध अनुसार फरक हुन्छ।
*/
uint16_t wIndex; /* अनुरोध अनुसार फरक हुन्छ; सामान्यतया अनुक्रमणिकाको रूपमा प्रयोग गरिन्छ।*/
uint16_t wLength; /* यदि डेटा s छ भने लम्बाइ स्थानान्तरण गर्नुहोस्tage उपस्थित।
*/
} sl_usbd_सेटअप_आवश्यकता_t;
(२) अनुरोध निर्धारण गर्नुहोस्। यदि तपाईं फरक अनुरोधहरू प्रयोग गर्दै हुनुहुन्छ भने तपाईं स्विच स्टेटमेन्ट प्रयोग गर्न सक्नुहुन्छ। यस उदाहरणमाampले, तीन प्रकारका डेटासँग सम्बन्धित तीन फरक अनुरोधहरू छन्tage: APP_VENDOR_REQ_NO_DATA, APP_VENDOR_REQ_RECEIVE_DATA_FROM_HOST, र APP_VENDOR_REQ_SEND_DATA_TO_HOST।
(३) यदि कुनै डाटा छैन भनेtage उपस्थित छ, तपाईंले अन्य क्षेत्रहरू मात्र डिकोड गर्न आवश्यक छ। डेटा s को उपस्थितिtage वा not लाई wLength फिल्ड non-null वा null भएर संकेत गरिन्छ।
(४) यदि होस्टले उपकरणमा डेटा पठाउँछ भने, तपाईंले sl_usbd_core_read_control_sync() प्रकार्यलाई कल गर्नुपर्छ। प्रदान गरिएको बफरमा wLength बाइटहरू सम्म समावेश गर्न सक्षम हुनुपर्छ। यदि कुनै त्रुटि भयो भने, स्थिति s लाई रोक्ने कोरमा false फर्काउनुहोस्।tagनियन्त्रण स्थानान्तरणको e, होस्टलाई अनुरोध प्रशोधन गर्न सकिँदैन भनेर संकेत गर्दै। सफल भएमा true फिर्ता गरिन्छ।
(५) यदि होस्टले उपकरणबाट डेटा प्राप्त गर्छ भने, तपाईंले sl_usbd_core_write_control_sync() प्रकार्यलाई कल गर्नुपर्छ। यदि कुनै त्रुटि भयो भने, स्थितिलाई रोक्ने कोरमा false फर्काउनुहोस्।tagनियन्त्रण स्थानान्तरणको e, होस्टलाई अनुरोध प्रशोधन गर्न सकिँदैन भनेर संकेत गर्दै। सफल भएमा true फिर्ता गरिन्छ।
(६) यस उदाहरणमाampले, पहिचान नभएका सबै अनुरोधहरूलाई कोरमा गलत फर्काएर चिन्ह लगाइन्छ। यसले डेटा वा स्थितिलाई रोक्नेछ।tagअनुरोध समर्थित छैन भनेर होस्टलाई संकेत गर्ने नियन्त्रण स्थानान्तरणको e।
होस्टले होस्ट विक्रेता अनुप्रयोग मार्फत विक्रेता अनुरोधहरू पठाउँछ। USB पुस्तकालयहरू, जस्तै libusb, तपाईंको अनुकूलन होस्ट विक्रेता अनुप्रयोग विकास गर्न मद्दत गर्न प्रयोग गर्न सकिन्छ।
प्रतिलिपि अधिकार © 2025 सिलिकन प्रयोगशालाहरू। सबै अधिकार सुरक्षित।
१/४
API कागजात
API कागजात
API कागजात
मोड्युलहरूको सूची
USB उपकरण API USB उपकरण ACM API USB उपकरण CDC API USB उपकरण कोर API USB उपकरण HID API USB उपकरण MSC API USB उपकरण MSC SCSI API USB उपकरण विक्रेता API
विवरण
USB उपकरण API USB उपकरण ACM API USB उपकरण CDC API USB उपकरण कोर API USB उपकरण HID API USB उपकरण MSC API USB उपकरण MSC SCSI API USB उपकरण विक्रेता API
प्रतिलिपि अधिकार © 2025 सिलिकन प्रयोगशालाहरू। सबै अधिकार सुरक्षित।
१/४
USB उपकरण API
USB उपकरण API
USB उपकरण API
USB उपकरण API।
मोड्युलहरू
USB उपकरण ACM API USB उपकरण CDC API USB उपकरण कोर API USB उपकरण HID API USB उपकरण MSC API USB उपकरण MSC SCSI API USB उपकरण विक्रेता API
प्रतिलिपि अधिकार © 2025 सिलिकन प्रयोगशालाहरू। सबै अधिकार सुरक्षित।
१/४
USB उपकरण ACM API
USB उपकरण ACM API
USB उपकरण ACM API
USB उपकरण CDC ACM API।
मोड्युलहरू
एक sl_usbd_cdc_cm_line_coding_t sl_usbd_cdc_acm_callbacks_t
कार्यहरू
sl_status_t sl_status_t
sl_status_t sl_status_t sl_status_t
sl_status_t का थप वस्तुहरू
sl_status_t का थप वस्तुहरू
sl_status_t का थप वस्तुहरू
sl_status_t sl_status_t sl_status_t sl_status_t sl_status_t
a sl_usbd_cdc_ cm_init(शून्य)
विश्वव्यापी भेरिएबलहरू।
ssll__uussbbdd__ccddcc__aaccmm__ccraellabtaec_kins_stta*npc_ea(cumin_tc1a6l_lbtalicnkes_,sutaintte8__int t*eprv_saul,bucinlats1s6__nt bcra)ll_mgmt_capabilities,
CDC ACM सिरियल इमुलेशन उपवर्गको नयाँ उदाहरण थप्नुहोस्।
aaaa sl_usbd_cdc_ cm_ dd_to_configur tion (uint8_t subcl ss_nbr, uint8_t config_nbr)
USB उपकरण कन्फिगरेसनमा CDC ACM उपवर्ग वर्ग उदाहरण थप्नुहोस्।
aa sl_usbd_cdc_ cm_is_en ब्लेड (uint8_t सबक्लास_एनबीआर, बुल *p_सक्षम)
CDC ACM सिरियल इमुलेशन सबक्लास सक्षम स्थिति प्राप्त गर्नुहोस्।
aaa sl_usbd_cdc_ cm_re d(uint8_t subcl ss_nbr, uint8_t *p_buf, uint32_t buf_len, uint16_t टाइमआउट, uint32_t
*p_xfer_len) CDC ACM सिरियल इमुलेशन उपवर्गमा डेटा प्राप्त गर्नुहोस्।
aaaa sl_usbd_cdc_ cm_re d_ सिङ्क (uint8_t सबक्ल ss_nbr, uint8_t *p_buf, uint32_t buf_len, aaaa sl_usbd_cdc_ सिङ्क_फंक्शन_t सिङ्क_fnct, शून्य *p_ सिङ्क_ rg)
CDC ACM सिरियल इमुलेशन सबक्लासमा एसिन्क्रोनस रूपमा डेटा प्राप्त गर्नुहोस्।
aa sl_usbd_cdc_ cm_write(uint8_t subcl ss_nbr, uint8_t *p_buf, uint32_t buf_len, uint16_t टाइमआउट, uint32_t
*p_xfer_len) CDC ACM सिरियल इमुलेशन उपवर्गमा डेटा पठाउनुहोस्।
aaa sl_usbd_cdc_ cm_write_ सिङ्क (uint8_t सबक्ल ss_nbr, uint8_t *p_buf, uint32_t buf_len, aaaa sl_usbd_cdc_ सिङ्क_फंक्शन_t सिङ्क_fnct, शून्य *p_ सिङ्क_ rg)
CDC ACM सिरियल इमुलेशन सबक्लासमा एसिन्क्रोनस रूपमा डेटा पठाउनुहोस्।
aaa sl_usbd_cdc_ cm_get_line_control_st te(uint8_t subcl ss_nbr, uint8_t *p_line_ctrl)
नियन्त्रण रेखाहरूको अवस्था फर्काउनुहोस्।
aaa sl_usbd_cdc_ cm_get_line_coding(uint8_t subcl ss_nbr, sl_usbd_cdc_ cm_line_coding_t *p_line_coding)
लाइन कोडिङको हालको अवस्था प्राप्त गर्नुहोस्।
aaa sl_usbd_cdc_ cm_set_line_coding(uint8_t subcl ss_nbr, sl_usbd_cdc_ cm_line_coding_t *p_line_coding)
नयाँ लाइन कोडिङ सेट गर्नुहोस्।
aaa sl_usbd_cdc_ cm_set_line_st te_event(uint8_t subcl ss_nbr, uint8_t घटनाहरू)
लाइन स्टेट घटना(हरू) सेट गर्नुहोस्।
aaaa sl_usbd_cdc_ cm_cle r_line_st te_event(uint8_t subcl ss_nbr, uint8_t घटनाहरू)
लाइन स्टेट घटना(हरू) खाली गर्नुहोस्।
प्रतिलिपि अधिकार © 2025 सिलिकन प्रयोगशालाहरू। सबै अधिकार सुरक्षित।
१/४
USB उपकरण ACM API
म्याक्रो
#SL_USBD_CDC_ACM_NBR_NONE २५५u परिभाषित गर्नुहोस्
मोड्युल।
#SL_USBD_CDC_ACM_PARITY_NONE ०u परिभाषित गर्नुहोस्
पोर्ट सेटिङहरूले परिभाषित गर्दछ।
#परिभाषित गर्नुहोस् SL_USBD_CDC_ACM_PARITY_ODD 1u #परिभाषित गर्नुहोस् SL_USBD_CDC_ACM_PARITY_EVEN 2u #परिभाषित गर्नुहोस् SL_USBD_CDC_ACM_PARITY_MARK 3u #परिभाषित गर्नुहोस् SL_USBD_CDC_ACM_PARITY_SPACE 4u #परिभाषित गर्नुहोस् SL_USBD_CDC_ACM_STOP_BIT_1 0u #परिभाषित गर्नुहोस् SL_USBD_CDC_ACM_STOP_BIT_1_5 1u #परिभाषित गर्नुहोस् SL_USBD_CDC_ACM_STOP_BIT_2 2u #परिभाषित गर्नुहोस् SL_USBD_CDC_ACM_CTRL_BREAK 0 01u
लाइन घटना झण्डाहरूले परिभाषित गर्दछ।
#परिभाषित गर्नुहोस् SL_USBD_CDC_ACM_CTRL_RTS ० ०२u #परिभाषित गर्नुहोस् SL_USBD_CDC_ACM_CTRL_DTR ० ०४u #परिभाषित गर्नुहोस् SL_USBD_CDC_ACM_STATE_DCD ० ०१u #परिभाषित गर्नुहोस् SL_USBD_CDC_ACM_STATE_DSR ० ०२u #परिभाषित गर्नुहोस् SL_USBD_CDC_ACM_STATE_BREAK ० ०४u #परिभाषित गर्नुहोस् SL_USBD_CDC_ACM_STATE_RING ० ०८u #परिभाषित गर्नुहोस् SL_USBD_CDC_ACM_STATE_FRAMING ० १०u #परिभाषित गर्नुहोस् SL_USBD_CDC_ACM_STATE_PARITY ० २०u #परिभाषित गर्नुहोस् SL_USBD_CDC_ACM_STATE_OVERUN ० ४०u #परिभाषित गर्नुहोस् SL_USBD_CDC_ACM_CALL_MGMT_DEV ० ०१उ
कल व्यवस्थापन क्षमताहरू।
#परिभाषित गर्नुहोस् SL_USBD_CDC_ACM_CALL_MGMT_DATA_CCI_DCI ० ०२u #परिभाषित गर्नुहोस् SL_USBD_CDC_ACM_CALL_MGMT_DATA_OVER_DCI ० ०२u | ० ०१u)
प्रकार्य कागजात
sl_usbd_cdc_acm_init मा
sl_status_t sl_usbd_cdc_acm_init (शून्य)
विश्वव्यापी भेरिएबलहरू। प्यारामिटरहरू
प्रतिलिपि अधिकार © 2025 सिलिकन प्रयोगशालाहरू। सबै अधिकार सुरक्षित।
१/४
USB उपकरण ACM API
टाइप गर्नुहोस्
शून्य
निर्देशन लागू हुँदैन
तर्कको नाम
म्याक्रोस ग्लोबल कन्स्टेन्ट्स फंक्शन प्रोटोटाइपहरू सीडीसी एसीएम फंक्शनहरू
CDC ACM सिरियल इमुलेशन उपवर्ग सुरु गर्नुहोस्।
फर्काउँछ
सफलतामा SL_STATUS_OK वा असफलतामा अर्को SL_STATUS कोड फर्काउँछ।
विवरण
sl_usbd_cdc_acm_सिर्जना_उदाहरण
sl_status_t sl_usbd_cdc_acm_create_instance (uint16_t लाइन_स्टेट_अन्तराल, uint16_t कल_mgmt_क्षमताहरू, sl_usbd_cdc_acm_callbacks_t * p_acm_callbacks, uint8_t * p_subclass_nbr)
CDC ACM सिरियल इमुलेशन उपवर्गको नयाँ उदाहरण थप्नुहोस्।
प्यारामिटरहरू
टाइप गर्नुहोस्
uint16_t
uint16_t
दिशा तर्कको नाम
विवरण
N/A
line_state_interval मिलिसेकेन्डमा लाइन स्थिति सूचना अन्तराल (मान अनिवार्य छ)
२ को शक्ति हो)।
N/A
call_mgmt_capabilities कल व्यवस्थापन क्षमताहरू बिटम्याप। को OR'ed
निम्न झण्डाहरू:
SL_USBD_CDC_ACM_CALL_MGMT_DEV उपकरणले कल व्यवस्थापन आफैं गर्छ। SL_USBD_CDC_ACM_CALL_MGMT_DATA_CCI उपकरणले डेटा क्लास इन्टरफेस मार्फत कल व्यवस्थापन जानकारी पठाउन/प्राप्त गर्न सक्छ।
sl_usbd_cdc_acm_callbacks_t लागू हुँदैन
*
uint8_t *
N/A
p_acm_कलब्याकहरू p_subclass_nbr
विभिन्न कार्यक्रमहरूमा कल गर्नका लागि कलब्याक प्रकार्यहरूको लागि वैकल्पिक सूचकहरू।
CDC ACM सिरियल इमुलेशन सबक्लास इन्स्ट्यान्स नम्बर प्राप्त गर्ने चरमा Param।
फर्काउँछ
सफलतामा SL_STATUS_OK वा असफलतामा अर्को SL_STATUS कोड फर्काउनुहोस्।
sl_usbd_cdc_acm_कन्फिगरेसनमा_थप्नुहोस्
sl_status_t sl_usbd_cdc_acm_add_to_configuration (uint8_t उपवर्ग_nbr, uint8_t config_nbr)
USB उपकरण कन्फिगरेसनमा CDC ACM उपवर्ग वर्ग उदाहरण थप्नुहोस्।
प्यारामिटरहरू
टाइप गर्नुहोस्
uint8_t uint8_t
निर्देशन N/AN/A
तर्कको नाम
उपवर्ग_एनबीआर कन्फिग_एनबीआर
विवरण CDC ACM सिरियल इमुलेशन सबक्लास इन्स्ट्यान्स नम्बर। नयाँ परीक्षण वर्ग इन्टरफेस थप्नको लागि कन्फिगरेसन अनुक्रमणिका।
फर्काउँछ
प्रतिलिपि अधिकार © 2025 सिलिकन प्रयोगशालाहरू। सबै अधिकार सुरक्षित।
१/४
USB उपकरण ACM API
सफलतामा SL_STATUS_OK वा असफलतामा अर्को SL_STATUS कोड फर्काउँछ।
sl_usbd_cdc_acm_सक्षम पारिएको छ
sl_status_t sl_usbd_cdc_acm_is_enabled (uint8_t सबक्लास_nbr, बुल * p_enabled)
CDC ACM सिरियल इमुलेशन सबक्लास सक्षम स्थिति प्राप्त गर्नुहोस्।
प्यारामिटरहरू
टाइप गर्नुहोस्
दिशा
तर्कको नाम
विवरण
uint8_t लागू हुँदैन
subclass_nbr CDC ACM सिरियल इमुलेशन subclass उदाहरण नम्बर।
बुल * लागू हुँदैन
सक्षम पारिएको
सक्षम स्थिति प्राप्त गर्ने चरमा बुलियन। चरलाई सत्यमा सेट गरिएको छ, CDC ACM सिरियल इमुलेशन सक्षम गरिएको छ। va
कागजातहरू / स्रोतहरू
![]() |
सिलिकन ल्याब्स USB उपकरण स्ट्याक [pdf] निर्देशन पुस्तिका USB उपकरण स्ट्याक, उपकरण स्ट्याक, स्ट्याक |