यूएसबी डिवाइस स्टैक
विशेष विवरण
- यूएसबी संस्करण: 1.5.1
- रिलीज़ की तारीख: 21 जुलाई, 2025
- सरलता SDK संस्करण: 2025.6.1
उत्पाद खत्मview
सिलिकॉन लैब्स द्वारा निर्मित यूएसबी डिवाइस स्टैक बहुमुखी और
IoT परियोजनाओं के लिए उपयोग में आसान USB कनेक्टिविटी, सुविधा प्रदान करती है
नेटवर्क सह-प्रोसेसरों और होस्टों के बीच संचार।
विशेषताएँ
- कुशल USB डिवाइस स्टैक
- IoT परियोजनाओं के लिए आदर्श
- नेटवर्क सह-प्रोसेसरों और के बीच संचार के लिए समर्थन
मेजबान
उत्पाद उपयोग निर्देश
USB डिवाइस कॉन्फ़िगरेशन
अपनी परियोजना के अनुसार USB डिवाइस सेटिंग्स कॉन्फ़िगर करें
USB डिवाइस कॉन्फ़िगरेशन अनुभाग का संदर्भ लेकर आवश्यकताओं को पूरा करें
दस्तावेज़ में.
USB डिवाइस प्रोग्रामिंग गाइड
यह समझने के लिए कि कैसे USB डिवाइस प्रोग्रामिंग गाइड का पालन करें
विभिन्न कार्यों के लिए USB डिवाइस के साथ प्रोग्राम और इंटरैक्ट करें
अनुप्रयोग.
USB डिवाइस वर्ग
यूएसबी डिवाइस क्लासेस अनुभाग एक ओवर प्रदान करता हैview अलग-अलग
सीडीसी एसीएम, एचआईडी, एमएससी एससीएसआई और विक्रेता वर्ग जैसी कक्षाएं। चुनें
आपके डिवाइस की कार्यक्षमता के आधार पर उपयुक्त वर्ग।
USB डिवाइस समस्या निवारण
यदि आपको USB डिवाइस के साथ कोई समस्या आती है, तो देखें
समाधान और डिबगिंग के लिए USB डिवाइस समस्या निवारण अनुभाग
सुझावों।
माइक्रोसॉफ्ट विंडोज ओएस यूएसबी होस्ट
यदि आप USB डिवाइस का उपयोग Microsoft Windows OS USB के साथ कर रहे हैं
मेज़बान, कृपया दिए गए दिशानिर्देशों का पालन करना सुनिश्चित करें।
documentation for seamless integration.
सामान्य प्रश्न
प्रश्न: कुछ सामान्य उदाहरण क्या हैं?ampमैं कितने उपकरणों का उपयोग करके निर्माण कर सकता हूँ
यह USB स्टैक?
उत्तर: USB स्टैक आपको इस तरह के उपकरण बनाने की अनुमति देता है
यूएसबी-टू-सीरियल एडाप्टर, माउस या कीबोर्ड, हटाने योग्य स्टोरेज
डिवाइस, और कस्टम डिवाइस।
प्रश्न: क्या इसका उपयोग करने के लिए कोई विशिष्ट सॉफ्टवेयर आवश्यकताएं हैं?
यूएसबी डिवाइस स्टैक?
उत्तर: संगत सॉफ्टवेयर में Simplicity SDK, Simplicity शामिल हैं
स्टूडियो, सिम्पलिसिटी कमांडर, जीसीसी (जीएनयू कंपाइलर संग्रह),
ARM के लिए IAR एम्बेडेड वर्कबेंच, और IAR EWARM.
यूनिवर्सल सीरियल बस यूएसबी
यूनिवर्सल सीरियल बस यूएसबी
USB Overview ऊपरview
रिलीज़ नोट्स USB
Specifications and Features Overview
USB डिवाइस कॉन्फ़िगरेशन समाप्तview
USB डिवाइस प्रोग्रामिंग गाइडview
USB Device Classes Overview सीडीसी एसीएम क्लास खत्मview एचआईडी कक्षा समाप्तview एमएससी एससीएसआई कक्षा समाप्त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_device_config_t sl_usbd_setup_req_t
a sl_usbd_cl ss_driver_t USB Device HID API
sl_usbd_hid_callbacks_t USB डिवाइस MSC API
a sl_usbd_msc_subcl ss_driver_t USB Device MSC SCSI API
sl_usbd_msc_scsi_callbacks_t
कॉपीराइट © 2025 सिलिकॉन प्रयोगशालाएँ। सभी अधिकार सुरक्षित।
1/174
यूनिवर्सल सीरियल बस यूएसबी
एक sl_usbd_msc_scsi_lun_ pi
sl_usbd_msc_scsi_lun_info sl_usbd_msc_scsi_lun
USB Device Vendor API sl_usbd_vendor_callbacks_t
API दस्तावेज़ीकरण USB डिवाइस समस्या निवारण
ऊपरview माइक्रोसॉफ्ट विंडोज ओएस यूएसबी होस्ट
ऊपरview
कॉपीराइट © 2025 सिलिकॉन प्रयोगशालाएँ। सभी अधिकार सुरक्षित।
2/174
ऊपरview
ऊपरview
यूएसबी डिवाइस
USB कंप्यूटर सिस्टम के इतिहास में सबसे सफल संचार इंटरफेस में से एक है और कंप्यूटर बाह्य उपकरणों को जोड़ने के लिए वास्तविक मानक है। सिलिकॉन लैब्स USB डिवाइस स्टैक एक USB डिवाइस मॉड्यूल है जिसे विशेष रूप से एम्बेडेड सिस्टम के लिए डिज़ाइन किया गया है। सिलिकॉन लैब्स की गुणवत्ता, मापनीयता और विश्वसनीयता के साथ शुरू से ही निर्मित, यह USB 2.0 विनिर्देशों के अनुरूप होने के लिए एक कठोर सत्यापन प्रक्रिया से गुज़रा है। यह दस्तावेज़ सिलिकॉन लैब्स USB डिवाइस स्टैक को आरंभ करने, शुरू करने और उपयोग करने का तरीका बताता है। यह विभिन्न कॉन्फ़िगरेशन मानों और उनके उपयोगों की व्याख्या करता है। इसमें एक ओवरव्यू भी शामिल है।view of the technology, types of configuration possibilities, implementation procedures, and examples of typical usage for every available class.
यूएसबी अवधारणाओं को जल्दी से समझने में आपकी मदद करने के लिए, दस्तावेज़ में कई उदाहरण दिए गए हैंamples of USB with basic functions. These examples आपको एक ऐसा ढांचा प्रदान करेगा जो आपको तेज़ी से उपकरण बनाने की अनुमति देता है। ये exampइसमें शामिल हैं:
यूएसबी-टू-सीरियल एडाप्टर (संचार डिवाइस वर्ग) माउस या कीबोर्ड (मानव इंटरफ़ेस डिवाइस वर्ग) हटाने योग्य स्टोरेज डिवाइस (मास स्टोरेज वर्ग) कस्टम डिवाइस (विक्रेता वर्ग)
निम्नलिखित ओवर हैview दस्तावेज़ीकरण अनुभागों में से:
विनिर्देश और विशेषताएँ USB डिवाइस कॉन्फ़िगरेशन USB डिवाइस प्रोग्रामिंग गाइड USB डिवाइस क्लासेस
सीडीसी एसीएम क्लास एचआईडी क्लास एमएससी एससीएसआई क्लास विक्रेता क्लास यूएसबी डिवाइस समस्या निवारण माइक्रोसॉफ्ट विंडोज ओएस यूएसबी होस्ट
कॉपीराइट © 2025 सिलिकॉन प्रयोगशालाएँ। सभी अधिकार सुरक्षित।
3/174
USB
USB
USB Version 1.5.1 July 21, 2025 – Release Notes
सरलता SDK संस्करण 2025.6.1
Silicon Labs’ efficient USB device stack offers versatile, easy-to-use USB connectivity ideal for IoT projects, including communication between network co-processors and hosts. Click here for earlier releases.
सारांश जारी करें
Key Features | API Changes | Bug Fixes | Chip Enablement
प्रमुख विशेषताऐं
केवल अंतर्निहित प्लेटफ़ॉर्म में परिवर्तन।
एपीआई परिवर्तन
कोई नहीं।
कंप्यूटर प्रोग्राम या प्रणाली में बग को दूर करना
कोई नहीं।
चिप सक्षमता
कोई नहीं।
प्रमुख विशेषताऐं
नई सुविधाएँ | संवर्द्धन | हटाई गई सुविधाएँ | अप्रचलित सुविधाएँ
नई सुविधाओं
कोई नहीं।
संवर्द्धन
केवल अंतर्निहित प्लेटफ़ॉर्म में परिवर्तन।
हटाई गई सुविधाएँ
कोई नहीं।
अस्वीकृत सुविधाएँ
कोई नहीं।
एपीआई परिवर्तन
नए API | संशोधित API | हटाए गए API | अप्रचलित API
नए एपीआई
कॉपीराइट © 2025 सिलिकॉन प्रयोगशालाएँ। सभी अधिकार सुरक्षित।
4/174
USB
कोई नहीं।
संशोधित API
कोई नहीं।
हटाए गए API
कोई नहीं।
अप्रचलित API
कोई नहीं।
कंप्यूटर प्रोग्राम या प्रणाली में बग को दूर करना
कोई नहीं।
चिप सक्षमता
कोई नहीं।
आवेदन पूर्वampपरिवर्तन
नया पूर्वamples | Modified Examples | Ex हटाया गयाamples | अप्रचलित पूर्वampलेस
नया पूर्वampलेस
कोई नहीं।
संशोधित पूर्वampलेस
कोई नहीं।
पूर्व निकाला गयाampलेस
कोई नहीं।
पदावनत पूर्वampलेस
कोई नहीं।
रिलीज़ परिवर्तनों का प्रभाव
Impact Statements | Migration Guide
प्रभाव कथन
कोई नहीं।
प्रवासन मार्गदर्शिका
कोई नहीं।
ज्ञात मुद्दे और सीमाएँ
कोई नहीं।
इस रिलीज का उपयोग करना
कॉपीराइट © 2025 सिलिकॉन प्रयोगशालाएँ। सभी अधिकार सुरक्षित।
5/174
USB
रिलीज़ में क्या है? | संगत सॉफ़्टवेयर | स्थापना और उपयोग | सहायता और प्रतिक्रिया
विज्ञप्ति में क्या है?
USB Device Stack Application Exampलेस
संगत सॉफ्टवेयर
सॉफ़्टवेयर
Simplicity SDK Simplicity Studio Simplicity Commander GCC The GNU Compiler Collection) IAR Embedded Workbench for ARM IAR EWARM
संगत संस्करण या वैरिएंट
2025.6.0 5.11.0 1.18.2 (सिंपलिसिटी स्टूडियो के साथ प्रदान किया गया) 12.2.1 (सिंपलिसिटी स्टूडियो के साथ प्रदान किया गया) 9.40.1 (सिंपलिसिटी स्टूडियो के साथ प्रदान किया गया)
स्थापना और उपयोग
अपने विकास को शुरू करने के लिए हमारा देखें:
USB डिवाइस प्रोग्रामिंग गाइड. API दस्तावेज़ीकरण.
सुरक्षित वॉल्ट एकीकरण के बारे में जानकारी के लिए, सुरक्षित वॉल्ट देखें.
फाड़ दियाview Security and Software Advisory notifications and manage your notification preferences:
ò https://community.silabs.com/ पर जाएं। ó अपने खाते के क्रेडेंशियल्स के साथ लॉग इन करें। ô अपने प्रो पर क्लिक करेंfile पृष्ठ के ऊपरी-दाएँ कोने में आइकन पर क्लिक करें।
õ Select Notifications from the dropdown menu. ö In the Notifications section, go to the My Product Notifications tab to review ऐतिहासिक सुरक्षा और सॉफ़्टवेयर सलाह
सूचनाएं
÷ To manage your preferences, use the Manage Notifications tab to customize which product updates and advisories you
प्राप्त करें।
अनुशंसित कॉन्फ़िगरेशन सेटिंग्स के लिए, यहां देखें.
इस रिलीज़ में सॉफ़्टवेयर के बारे में अधिक जानने के लिए, हमारे ऑनलाइन दस्तावेज़ देखें।
सहायता और प्रतिक्रिया
सिलिकॉन लैब्स सहायता से संपर्क करें। उत्तर पाने के लिए हमारे Ask AI टूल का उपयोग करने के लिए, इस पृष्ठ के शीर्ष पर स्थित खोज फ़ील्ड देखें।
Note: Ask AI is experimental.
हमारे डेवलपर समुदाय से सहायता प्राप्त करें.
SDK रिलीज़ और रखरखाव नीति
हमारी SDK रिलीज़ और रखरखाव नीति देखें.
कॉपीराइट © 2025 सिलिकॉन प्रयोगशालाएँ। सभी अधिकार सुरक्षित।
6/174
ऊपरview
ऊपरview
विशेष विवरण
"यूनिवर्सल सीरियल बस विनिर्देश संशोधन 2.0" का अनुपालन करता है "इंटरफ़ेस एसोसिएशन डिस्क्रिप्टर इंजीनियरिंग परिवर्तन सूचना (ECN)" स्थानांतरण प्रकारों को लागू करता है
बल्क इंटरप्ट यूएसबी क्लासेस को नियंत्रित करें संचार उपकरण वर्ग (सीडीसी) अमूर्त नियंत्रण मॉडल (एसीएम) मानव इंटरफ़ेस डिवाइस (एचआईडी) मास स्टोरेज क्लास (एमएससी) विक्रेता-विशिष्ट वर्ग ढांचा
विशेषताएँ
मेमोरी फ़ुटप्रिंट को न्यूनतम करने के लिए केवल आवश्यक सुविधाओं को शामिल करने के लिए स्केलेबल पूर्ण-गति (12 Mbit/s) का समर्थन करता है समग्र (बहु-कार्य) उपकरणों का समर्थन करता है बहु-कॉन्फ़िगरेशन उपकरणों का समर्थन करता है USB पावर-सेविंग कार्यात्मकताओं (डिवाइस सस्पेंड और रिज्यूम) का समर्थन करता है Micrium OS में मास स्टोरेज क्लास का पूर्ण एकीकरण File System module Developed with CMSIS-RTOS2 abstraction layer so that it can work with different OSes. Silicon Labs GSDK comes with FreeRTOS and Micrium OS ports.
कॉपीराइट © 2025 सिलिकॉन प्रयोगशालाएँ। सभी अधिकार सुरक्षित।
7/174
ऊपरview
ऊपरview
USB डिवाइस कॉन्फ़िगरेशन
इस खंड में सिलिकॉन लैब्स USB डिवाइस को कॉन्फ़िगर करने के तरीके पर चर्चा की गई है। कॉन्फ़िगरेशन पैरामीटर के तीन समूह हैं, जो इस प्रकार हैं:
USB डिवाइस कोर कॉन्फ़िगरेशन USB डिवाइस जानकारी कॉन्फ़िगरेशन USB डिवाइस हार्डवेयर कॉन्फ़िगरेशन
USB डिवाइस कोर कॉन्फ़िगरेशन
सिलिकॉन लैब्स यूएसबी डिवाइस को sl_usbd_core_config.h में स्थित #defines के एक सेट के माध्यम से संकलन समय पर कॉन्फ़िगर किया जा सकता है fileUSB डिवाइस जहाँ संभव हो, #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 प्राथमिकता है।
osPriorityHigh
SL_USBD_A UTO_START _USB_DEVIC E
यदि सक्षम है, तो कर्नेल प्रारंभ होने पर USB डिवाइस स्वचालित रूप से प्रारंभ हो जाएगा और 1 USBD कोर कार्य पहली बार शेड्यूल किया जाएगा। यदि अक्षम है, तो आपके एप्लिकेशन को USB होस्ट द्वारा पता लगाए जाने के लिए तैयार होने पर sl_usbd_core_start_device() को कॉल करना होगा।
SL_USBD_C कॉन्फ़िगरेशन की कुल संख्या जो sl_usbd_add_configuration() के माध्यम से जोड़ी जाएगी
1
ONFIGURATI function.
ON_QUANTI
TY
कॉपीराइट © 2025 सिलिकॉन प्रयोगशालाएँ। सभी अधिकार सुरक्षित।
8/174
ऊपरview
स्थिर
SL_USBD _INTERF ACE_QU ANTITY
SL_USBD _ALT_INT ERFACE_ QUANTI
TY
SL_USBD _इंटरफ़ेस ACE_GR
ओयूपी_क्यू
एंटिटी
SL_USBD _विवरण
पीटीओआर_क्यू
मात्रा
SL_USBD _स्ट्रिंग _क्वांटी
TY
SL_USBD _OPEN_E NDPOIN TS_QUA NTITY
Description The total number of USB interfaces to be added for all your configurations. This greatly depends on the class(es) used. For more information on how many interfaces a class instance requires, refer to the section “Resource Needs from core” of your class(es).
आपके सभी कॉन्फ़िगरेशन के लिए जोड़े जाने वाले USB वैकल्पिक इंटरफ़ेस की कुल संख्या। यह काफी हद तक इस्तेमाल की गई क्लास(क्लास) पर निर्भर करता है। यह मान हमेशा SL_USBD_INTERFACE_QUANTITY के बराबर या उससे ज़्यादा होना चाहिए। किसी क्लास इंस्टेंस के लिए कितने वैकल्पिक इंटरफ़ेस की आवश्यकता होती है, इस बारे में अधिक जानकारी के लिए, अपनी क्लास(क्लास) के "कोर से संसाधन आवश्यकताएँ" अनुभाग देखें।
आपके सभी कॉन्फ़िगरेशन के लिए जोड़े जाने वाले USB इंटरफ़ेस समूहों की कुल संख्या। यह काफी हद तक इस्तेमाल की गई क्लास(क्लासों) पर निर्भर करता है। एक क्लास इंस्टेंस के लिए कितने इंटरफ़ेस समूहों की आवश्यकता होती है, इस बारे में अधिक जानकारी के लिए, अपनी क्लास(क्लासों) के "कोर से संसाधन आवश्यकताएँ" अनुभाग देखें।
आपके सभी कॉन्फ़िगरेशन के लिए जोड़े जाने वाले एंडपॉइंट डिस्क्रिप्टर की कुल संख्या। यह बहुत हद तक इस्तेमाल की गई क्लास पर निर्भर करता है। एक क्लास इंस्टेंस को कितने एंडपॉइंट डिस्क्रिप्टर की आवश्यकता होती है, इस बारे में अधिक जानकारी के लिए, अपने क्लास के "कोर से संसाधन की आवश्यकता" अनुभाग में "एंडपॉइंट्स की संख्या" देखें। ध्यान दें कि यहां नियंत्रण एंडपॉइंट्स पर विचार करने की आवश्यकता नहीं है। USB स्ट्रिंग्स की कुल संख्या। मात्रा को शून्य पर सेट करने से यह सुविधा अक्षम हो जाएगी। इसे अक्षम करने से डिवाइस एप्लिकेशन से पास किए गए किसी भी USB विवरण स्ट्रिंग को संग्रहीत नहीं करेगा। इसका मतलब है कि होस्ट विवरण स्ट्रिंग (जैसे निर्माता और उत्पाद का नाम) को पुनः प्राप्त करने में असमर्थ होगा। प्रति कॉन्फ़िगरेशन खुले एंडपॉइंट्स की कुल संख्या। एक डिवाइस को नियंत्रण स्थानांतरण के लिए कम से कम दो खुले एंडपॉइंट्स की आवश्यकता होती है
डिफ़ॉल्ट मान
10 २०
2
20 30 20
कक्षा विन्यास
क्लासेस में विशिष्ट संकलन-समय कॉन्फ़िगरेशन होते हैं। अधिक जानकारी के लिए USB डिवाइस क्लासेस देखें।
USB डिवाइस जानकारी कॉन्फ़िगरेशन
Sl_usbd_device_config.h कॉन्फ़िगरेशन file आपके डिवाइस के बारे में मूलभूत जानकारी, जैसे विक्रेता/उत्पाद आईडी, डिवाइस स्ट्रिंग्स, आदि सेट करने के लिए संकलन-समय #define-s को पुनर्समूहित करता है। नीचे दी गई तालिका इस कॉन्फ़िगरेशन में उपलब्ध प्रत्येक सूचना कॉन्फ़िगरेशन परिभाषा का वर्णन करती है। file.
तालिका – USB डिवाइस सूचना कॉन्फ़िगरेशन परिभाषाएँ
स्थिर
SL_USBD_DEVIC E_VENDOR_ID
SL_USBD_DEVIC E_PRODUCT_ID
विवरण: USB इम्प्लीमेंटर्स फ़ोरम द्वारा प्रदान की गई आपकी विक्रेता पहचान संख्या। विक्रेता आईडी कैसे प्राप्त करें, इस बारे में अधिक जानकारी के लिए http://www.usb.org/developers/vendor/ देखें। आपकी उत्पाद पहचान संख्या।
कॉपीराइट © 2025 सिलिकॉन प्रयोगशालाएँ। सभी अधिकार सुरक्षित।
9/174
ऊपरview
स्थिर
विवरण
SL_USBD_DEVICE_RELEASE आपके डिवाइस का रिलीज़ नंबर. _NUMBER
SL_USBD_DEVICE_MANUFA String describing the manufacturer of your device. This configuration is ignored when the
CTURER_STRING
कॉन्फ़िगरेशन SL_USBD_STRING_QUANTITY 0 पर सेट है.
SL_USBD_DEVICE_PRODUC String describing your product. This configuration is ignored when the configuration
टी_स्ट्रिंग
SL_USBD_STRING_QUANTITY को 0 पर सेट किया गया है.
SL_USBD_DEVICE_SERIAL_N String containing the serial number of your device. This configuration is ignored when the
UMBER_STRING
कॉन्फ़िगरेशन SL_USBD_STRING_QUANTITY 0 पर सेट है.
SL_USBD_DEVICE_LANGUA आपके डिवाइस के स्ट्रिंग्स की भाषा की पहचान संख्या। संभावित मान ये हैं:
GE_ID
– SL_USBD_LANG_ID_ARABIC_SAUDI_ARABIA
– SL_USBD_LANG_ID_CHINESE_TAIWAN
– SL_USBD_LANG_ID_ENGLISH_US
– SL_USBD_LANG_ID_ENGLISH_UK
– SL_USBD_LANG_ID_FRENCH
– SL_USBD_LANG_ID_GERMAN
– SL_USBD_LANG_ID_GREEK
– SL_USBD_LANG_ID_इटैलियन
– SL_USBD_LANG_ID_पुर्तगाली
– SL_USBD_LANG_ID_संस्कृत
जब कॉन्फ़िगरेशन SL_USBD_STRING_QUANTITY को 0 पर सेट किया जाता है, तो इस कॉन्फ़िगरेशन को अनदेखा कर दिया जाता है।
USB डिवाइस हार्डवेयर कॉन्फ़िगरेशन
Depending on the Silicon Labs device you are using, you will possibly have the GPIO pin and port to configure for USB VBUS Sense signal. The configuration defines are in the sl_usbd_hardware_config.h header file.
स्थिर
SL_USBD_DRIVER_VBUS_SENSE_पोर्ट SL_USBD_DRIVER_VBUS_SENSE_PIN
विवरण
आपके बोर्ड पर USB VBUS Sense सिग्नल के लिए GPIO पोर्ट. आपके बोर्ड पर USB VBUS Sense सिग्नल के लिए GPIO पिन.
कॉपीराइट © 2025 सिलिकॉन प्रयोगशालाएँ। सभी अधिकार सुरक्षित।
10/174
ऊपरview
ऊपरview
USB डिवाइस प्रोग्रामिंग गाइड
यह अनुभाग बताता है कि USB डिवाइस मॉड्यूल का उपयोग कैसे करें।
USB डिवाइस मॉड्यूल का प्रारंभिक सेटअप
This section describes the basic steps required to initialize the USB Device module and to add, prepare, and start a device. Initializing the USB Device Module Initializing the USB Device Core Initializing the aCl ss(es) Adding Your USB Device Building Your USB Device Adding Configuration(s) Adding USB Function(s) Starting Your USB Device
Event Hook Functions
USB डिवाइस मॉड्यूल को प्रारंभ करना
USB डिवाइस कोर को प्रारंभ करना
a US a sl_usbd_core_init() फ़ंक्शन को कॉल करके B डिवाइस मॉड्यूल कोर को आरंभ करने से शुरू करें। नीचे दिया गया उदाहरण sl_usbd_core_init() फ़ंक्शन को कॉल करना दर्शाता है।
Example – sl_usbd_core_init() को कॉल करना
sl_status_t status; status = sl_usbd_core_init(); if (status ! SL_STATUS_OK) { /* An error occurred. Error handling should be added here. */
}
कक्षा(ओं) को आरंभ करना
After the USB device module core has been initialized, you must initialize each class you intend to use. See section “Programming Guide” of your acl ss(es) for more information.
अपना USB डिवाइस बनाना
Adding Configuration(s)
अपने डिवाइस को सफलतापूर्वक इनिशियलाइज़ करने के बाद, आप एक नए कॉन्फ़िगरेशन के साथ उसमें USB फ़ंक्शन जोड़ना शुरू कर सकते हैं। एक डिवाइस में कम से कम एक कॉन्फ़िगरेशन होना चाहिए। कॉन्फ़िगरेशन जोड़ने के लिए, sl_usbd_core_dd_configur tion() फ़ंक्शन को कॉल करें। यह फ़ंक्शन प्रत्येक कॉन्फ़िगरेशन के लिए कॉल किया जाना चाहिए जिसे आप जोड़ना चाहते हैं।ampनीचे दी गई तालिका दिखाती है कि पूर्ण गति कैसे जोड़ें।
Example – अपने डिवाइस में कॉन्फ़िगरेशन जोड़ना
कॉपीराइट © 2025 सिलिकॉन प्रयोगशालाएँ। सभी अधिकार सुरक्षित।
11/174
ऊपरview
sl_status_t status; uint8_t config_nbr_fs;
/* Adding a full-speed configuration to the device. */
स्थिति = sl_usbd_core_add_configuration(0,
/* कॉन्फ़िगरेशन के लिए कोई विशेष विशेषताएँ नहीं. */
100यू,
/* अधिकतम बिजली खपत: 100mA.
*/
SL_USBD_डिवाइस_स्पीड_पूर्ण,
/* पूर्ण गति कॉन्फ़िगरेशन.
*/
“कॉन्फ़िगरेशन जोड़ें Example Full-Speed config”,
&config_nbr_fs);
if (status ! SL_STATUS_OK) {
/* An error occurred. Error handling should be added here. */
}
USB फ़ंक्शन जोड़ना
अपने डिवाइस में कम से कम एक कॉन्फ़िगरेशन सफलतापूर्वक जोड़ने के बाद, आप अपने डिवाइस में इंटरफ़ेस और एंडपॉइंट जोड़ सकते हैं। इंटरफ़ेस और एंडपॉइंट के प्रकार, मात्रा और अन्य मापदंडों के संदर्भ में प्रत्येक USB क्लास की अपनी ज़रूरतें होती हैं। सिलिकॉन लैब्स USB डिवाइस अपनी क्लास में इंटरफ़ेस और एंडपॉइंट जोड़ता है।
अपने एप्लिकेशन से, आप एक USB क्लास को इंस्टैंसिएट कर सकते हैं और उसे कॉन्फ़िगरेशन में जोड़ सकते हैं। USB डिवाइस क्लास इंस्टैंस की अवधारणा के बारे में अधिक जानकारी के लिए, USB डिवाइस क्लासेस देखें। ध्यान दें कि आप एक बहु-कार्य (संयुक्त) डिवाइस बनाने के लिए कई अलग-अलग क्लास इंस्टैंस को इंस्टैंसिएट कर सकते हैं और कॉन्फ़िगरेशन में जोड़ सकते हैं।
भूतपूर्वampनीचे दिया गया विवरण दिखाता है कि क्लास इंस्टेंस कैसे बनाएं और इसे कॉन्फ़िगरेशन में कैसे जोड़ें।
Example – Adding a Class Instance to Your Device
sl_status_t स्थिति; uint8_t class_nbr;
/* Create an instance of the class you want to use.*/ /* Note that depending on the class this function can have more arguments. */ status = sl_usbd_<class>_create_instance(&class_nbr); if (status ! SL_STATUS_OK) { /* An error occurred. Error handling should be added here. */ }
/* क्लास इंस्टेंस को पूर्ण-गति कॉन्फ़िगरेशन में जोड़ें. */ स्थिति = sl_usbd_ _add_to_configuration(class_nbr, /* sl_usbd_ द्वारा लौटाई गई क्लास संख्या _इंस्टेंस_बनाएँ. */
config_nbr_fs); /* sl_usbd_core_add_configuration() द्वारा लौटाया गया कॉन्फ़िगरेशन नंबर। */ यदि (स्थिति ! SL_STATUS_OK) { /* एक त्रुटि हुई। त्रुटि प्रबंधन यहाँ जोड़ा जाना चाहिए। */ }
अपना USB डिवाइस प्रारंभ करना
डिफ़ॉल्ट रूप से, डिवाइस आरंभीकरण पूरा होने और कर्नेल शुरू होने के बाद, डिवाइस USB डिवाइस कोर टास्क द्वारा स्वचालित रूप से शुरू हो जाएगा। यह नियंत्रित करने के लिए कि डिवाइस कब शुरू होता है और USB होस्ट द्वारा दृश्यमान होता है, स्वचालित-प्रारंभ सुविधा को अक्षम करने के लिए कॉन्फ़िगरेशन परिभाषित SL_USBD_AUTO_START_USB_DEVICE का उपयोग करें। अक्षम होने पर, अपना डिवाइस बनाने/तैयार करने के बाद, आप इसे शुरू कर सकते हैं और sl_usbd_core_start_device() फ़ंक्शन को कॉल करके इसे USB होस्ट के लिए दृश्यमान बना सकते हैं।
भूतपूर्वample below shows how to start your device using the sl_usbd_core_start_device() function.
Example – अपना डिवाइस शुरू करना
कॉपीराइट © 2025 सिलिकॉन प्रयोगशालाएँ। सभी अधिकार सुरक्षित।
12/174
ऊपरview
sl_status_t स्थिति;
स्थिति = sl_usbd_core_start_device(); यदि (स्थिति ! SL_STATUS_OK) { /* एक त्रुटि हुई। त्रुटि प्रबंधन यहाँ जोड़ा जाना चाहिए। */ }
Event Hook Functions
यूएसबी डिवाइस कोर मॉड्यूल दो कमज़ोर हुक फ़ंक्शन प्रदान करता है जिन्हें आप अपने एप्लिकेशन में पुनः परिभाषित कर सकते हैं। इनका उद्देश्य बस और कॉन्फ़िगरेशन इवेंट होने पर सूचित करना है।
तालिका – USB इवेंट हुक फ़ंक्शन
आयोजन
विवरण
बस
Called when USB Bus event occurs
USB कॉन्फ़िगरेशन ईवेंट होने पर कॉन्फ़िगरेशन कॉल किया जाता है
Function Signature
void sl_usbd_on_bus_event(sl_usbd_bus_event_t इवेंट); void sl_usbd_on_config_event(sl_usbd_config_event_t इवेंट, uint8_t config_nbr);
Example – इवेंट हुक फ़ंक्शन
शून्य 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: // जब होस्ट रीसेट कमांड भेजता है तो कॉल किया जाता है break;
केस SL_USBD_EVENT_BUS_SUSPEND: // जब होस्ट सस्पेंड कमांड ब्रेक भेजता है तो कॉल किया जाता है;
केस SL_USBD_EVENT_BUS_RESUME: // जब होस्ट वेक अप कमांड ब्रेक भेजता है तो कॉल किया जाता है;
default: break; } }
शून्य sl_usbd_on_config_event(sl_usbd_config_event_t ईवेंट, uint8_t config_nbr) { स्विच (ईवेंट) { केस SL_USBD_EVENT_CONFIG_SET:
// जब होस्ट कॉन्फ़िगरेशन ब्रेक सेट करता है तो कॉल किया जाता है;
case SL_USBD_EVENT_CONFIG_UNSET: // called when a configuration is unset break;
default: break; } }
कॉपीराइट © 2025 सिलिकॉन प्रयोगशालाएँ। सभी अधिकार सुरक्षित।
13/174
ऊपरview
कॉपीराइट © 2025 सिलिकॉन प्रयोगशालाएँ। सभी अधिकार सुरक्षित।
14/174
ऊपरview
ऊपरview
USB डिवाइस वर्ग
The USB classes available in Silicon Labs USB Device share some common characteristics. This section explains these characteristics and their interactions with the core layer.
किसी विशिष्ट वर्ग के बारे में अधिक जानकारी के लिए, निम्नलिखित देखें:
सीडीसी एसीएम क्लास एचआईडी क्लास एमएससी एससीएसआई क्लास विक्रेता क्लास
क्लास इंस्टेंस के बारे में
The USB classes available in USB Device implement the concept of class instances. A class instance represents one function within a device. The function can be described by one interface or by a group of interfaces and belongs to a specific class.
प्रत्येक 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 _insta nce ()
sl_usbd_XXXX_add_to_conf iguration()
विवरण
Configures the maximum number of class instances.
कॉन्फ़िगरेशन की अधिकतम संख्या कॉन्फ़िगर करता है। क्लास आरंभीकरण के दौरान, एक निर्मित क्लास इंस्टेंस को एक या अधिक कॉन्फ़िगरेशन में जोड़ा जाएगा। एक नया क्लास इंस्टेंस बनाता है।
निर्दिष्ट डिवाइस कॉन्फ़िगरेशन में एक मौजूदा क्लास इंस्टेंस जोड़ता है.
In terms of code implementation, the class will declare a local global variable that contains a class control structure. This class control structure is associated with one class instance and will contain specific information to manage the class instance.
The following figures show several case scenarios. Each figure includes a code example that corresponds to the case scenario.
चित्र - एकाधिक क्लास इंस्टेंस - FS डिवाइस (1 कॉन्फ़िगरेशन और 1 इंटरफ़ेस) एक विशिष्ट USB डिवाइस को दर्शाता है। यह डिवाइस पूर्ण-गति (FS) है और इसमें एक ही कॉन्फ़िगरेशन है। डिवाइस का कार्य डेटा संचार के लिए दो एंडपॉइंट्स से बने एक इंटरफ़ेस द्वारा वर्णित है। एक क्लास इंस्टेंस बनाया जाता है और यह आपको पूरे इंटरफ़ेस को उसके संबंधित एंडपॉइंट के साथ प्रबंधित करने की अनुमति देता है।
चित्र - एकाधिक क्लास इंस्टेंसेस - FS डिवाइस 1 कॉन्फ़िगरेशन 1 इंटरफ़ेस के साथ)
कॉपीराइट © 2025 सिलिकॉन प्रयोगशालाएँ। सभी अधिकार सुरक्षित।
15/174
ऊपरview
चित्र - मल्टीपल क्लास इंस्टेंसेस - FS डिवाइस (1 इंटरफ़ेस के साथ 1 कॉन्फ़िगरेशन) से संबंधित कोड उदाहरण में दिखाया गया हैampले नीचे.
Example – Multiple Class Instances – FS Device 1 Configuration with 1 Interface)
sl_status_t status; uint8_t class_0;
void app_usbd_XXXX_enable(uint8_t class_nbr) { /* क्लास सक्षम ईवेंट को संभालें. */ }
void app_usbd_XXXX_disable(uint8_t class_nbr) { /* क्लास अक्षम ईवेंट को संभालें. */ }
sl_usbd_XXXX_callbacks_t class_callbacks = {
(1)
.सक्षम = app_usbd_XXXX_सक्षम,
.disable = app_usbd_XXXX_disable
};
status = sl_usbd_XXXX_init();
(2)
if (status ! SL_STATUS_OK) {
/* $$$$ त्रुटि को संभालें. */
}
स्थिति = sl_usbd_XXXX_create_instance(&class_callbacks,
(3)
&क्लास_0);
if (status ! SL_STATUS_OK) {
/* $$$$ त्रुटि को संभालें. */
}
स्थिति = sl_usbd_XXXX_add_to_configuration(class_0, config_0);
(4)
if (status ! SL_STATUS_OK) {
/* $$$$ त्रुटि को संभालें. */
}
(1) प्रत्येक क्लास डिवाइस कनेक्ट/डिस्कनेक्ट इवेंट्स और क्लास-विशिष्ट इवेंट्स के लिए कॉलबैक फ़ंक्शन्स का एक सेट प्रदान करता है। sl_usbd_XXXX_create_instance() के साथ क्लास इंस्टेंस बनाते समय कॉलबैक स्ट्रक्चर ऑब्जेक्ट को एक तर्क के रूप में पास किया जाता है।
समारोह।
(1) क्लास को इनिशियलाइज़ करें। सभी आंतरिक वेरिएबल, संरचनाएँ और क्लास पोर्ट इनिशियलाइज़ हो जाएँगे। ध्यान दें कि कुछ क्लासों में Init() फ़ंक्शन अन्य तर्क ले सकता है।
कॉपीराइट © 2025 सिलिकॉन प्रयोगशालाएँ। सभी अधिकार सुरक्षित।
16/174
ऊपरview
(2) क्लास इंस्टेंस बनाएं, जो class_0 है। sl_usbd_XXXX_create_instance() फ़ंक्शन class_0 से संबद्ध एक क्लास नियंत्रण संरचना आवंटित करता है। क्लास के आधार पर, sl_usbd_XXXX_create_instance() में क्लास नंबर के अलावा अतिरिक्त पैरामीटर हो सकते हैं जो क्लास नियंत्रण संरचना में संग्रहीत क्लास-विशिष्ट जानकारी का प्रतिनिधित्व करते हैं। aaa (3) cl ss इंस्टेंस, class_0, को निर्दिष्ट कॉन्फ़िगरेशन संख्या, config_0 में जोड़ें। sl_usbd_XXXX_add_to_configuration() इंटरफ़ेस 0 और इसके संबंधित IN और OUT एंडपॉइंट बनाएगा। परिणामस्वरूप, क्लास इंस्टेंस इंटरफ़ेस 0 और इसके एंडपॉइंट को सम्मिलित करता है। इंटरफ़ेस 0 पर किया गया कोई भी संचार क्लास इंस्टेंस संख्या, class_0 का उपयोग करेगा। चित्र - एकाधिक क्लास इंस्टेंस - FS डिवाइस (2 कॉन्फ़िगरेशन और एकाधिक इंटरफ़ेस) एक अधिक जटिल उदाहरण का प्रतिनिधित्व करता हैampले। एक पूर्ण-गति उपकरण दो विन्यासों से बना होता है। उपकरण में दो फ़ंक्शन होते हैं जो एक ही वर्ग के होते हैं, लेकिन प्रत्येक फ़ंक्शन दो इंटरफ़ेस द्वारा वर्णित होता है और इसमें द्विदिशात्मक अंतबिंदुओं की एक जोड़ी होती है। इस उदाहरण मेंample, दो क्लास इंस्टेंस बनाए जाते हैं। प्रत्येक क्लास इंस्टेंस इंटरफेस के एक समूह से संबद्ध होता है, जबकि चित्र - मल्टीपल क्लास इंस्टेंस - FS डिवाइस (1 कॉन्फ़िगरेशन और 1 इंटरफ़ेस) और चित्र - मल्टीपल क्लास इंस्टेंस - FS डिवाइस (2 कॉन्फ़िगरेशन और मल्टीपल इंटरफ़ेस) में क्लास इंस्टेंस एक ही इंटरफ़ेस से संबद्ध था।
Figure – Multiple Class Instances – FS Device 2 Configurations and Multiple Interfaces)
The code corresponding to Figure – Multiple Class Instances – FS Device (2 Configurations and Multiple Interfaces) is shown in the exampनीचे देखें। स्पष्टता के लिए त्रुटि प्रबंधन को छोड़ दिया गया है।
Example - मल्टीपल क्लास इंस्टेंसेस - FS डिवाइस 2 कॉन्फ़िगरेशन और मल्टीपल इंटरफेस)
कॉपीराइट © 2025 सिलिकॉन प्रयोगशालाएँ। सभी अधिकार सुरक्षित।
17/174
ऊपरview
sl_status_t स्थिति; uint8_t class_0; uint8_t class_1;
status = sl_usbd_XXXX_init();
status = sl_usbd_XXXX_create_instance(&class_0); status = sl_usbd_XXXX_create_instance(&class_1);
स्थिति = sl_usbd_XXXX_add_to_configuration(class_0, cfg_0); स्थिति = sl_usbd_XXXX_add_to_configuration(class_1, cfg_0);
स्थिति = sl_usbd_XXXX_add_to_configuration(class_0, cfg_1); स्थिति = sl_usbd_XXXX_add_to_configuration(class_1, cfg_1);
(1)
(2) (3)
(4) (5)
(6) (6)
(1) क्लास को इनिशियलाइज़ करें। सभी आंतरिक वेरिएबल, संरचनाएँ और क्लास पोर्ट इनिशियलाइज़ हो जाएँगे।
(2) क्लास इंस्टेंस, class_0 बनाएँ। फंक्शन sl_usbd_XXXX_create_instance(), class_0 से संबद्ध एक क्लास नियंत्रण संरचना आवंटित करता है।
(3) क्लास इंस्टेंस, class_1 बनाएँ। फ़ंक्शन sl_usbd_XXXX_create_instance(), class_1 से संबद्ध एक अन्य क्लास नियंत्रण संरचना आवंटित करता है।
(4) Add the class instance, class_0 , to the configuration, cfg_0 . sl_usbd_XXXX_add_to_configuration() will create the interface 0, interface 1, alternate interfaces, and the associated IN and OUT endpoints. The class instance number, class_0 , will be used for any data communication on interface 0 or interface 1.
(5) कॉन्फ़िगरेशन, cfg_0 में क्लास इंस्टेंस, class_1, जोड़ें। sl_usbd_XXXX_add_to_configuration() इंटरफ़ेस 2, इंटरफ़ेस 3 और उनके संबंधित IN और OUT एंडपॉइंट बनाएगा। इंटरफ़ेस 2 या इंटरफ़ेस 3 पर किसी भी डेटा संचार के लिए क्लास इंस्टेंस संख्या, class_1, का उपयोग किया जाएगा।
(6) समान क्लास इंस्टेंस, class_0 और class_1 को अन्य कॉन्फ़िगरेशन, cfg_1 में जोड़ें।
प्रत्येक क्लास sl_usbd_XXXX_callbacks_t प्रकार की संरचना परिभाषित करता है। इसका उद्देश्य प्रत्येक क्लास को कॉलबैक फ़ंक्शन का एक सेट प्रदान करना है जिसे किसी घटना के घटित होने पर कॉल किया जा सके। प्रत्येक क्लास में दो कॉलबैक फ़ंक्शन मौजूद होते हैं। इन्हें नीचे दी गई तालिका में प्रस्तुत किया गया है।
तालिका - सामान्य वर्ग कॉलबैक फ़ंक्शन
फ़ील्ड विवरण .enable जब USB क्लास इंस्टेंस सफलतापूर्वक सक्षम हो जाता है तो कॉल किया जाता है। .disable जब USB क्लास इंस्टेंस अक्षम हो जाता है तो कॉल किया जाता है।
Function Signature void app_usbd_XXXX_enable(uint8_t class_nbr); void app_usbd_XXXX_disable(uint8_t class_nbr);
कॉपीराइट © 2025 सिलिकॉन प्रयोगशालाएँ। सभी अधिकार सुरक्षित।
18/174
ऊपरview
ऊपरview
USB डिवाइस CDC ACM क्लास
USB डिवाइस CDC बेस क्लास ओवरview कोर USB डिवाइस CDC ACM उपवर्ग से USB डिवाइस CDC ACM वर्ग संसाधन की आवश्यकताएँview USB डिवाइस CDC ACM क्लास कॉन्फ़िगरेशन USB डिवाइस CDC ACM क्लास प्रोग्रामिंग गाइड
This section describes the Communications Device Class (CDC) class and the associated CDC subclass supported by Silicon Labs’ USB Device stack. Silicon Labs USB-Device currently supports the Abstract Control Model (ACM) subclass, which is commonly used for serial emulation.
सीडीसी में विभिन्न दूरसंचार और नेटवर्किंग उपकरण शामिल हैं। दूरसंचार उपकरणों में एनालॉग मोडेम, एनालॉग और डिजिटल टेलीफोन, आईएसडीएन टर्मिनल एडेप्टर आदि शामिल हैं। उदाहरण के लिए,ampले, नेटवर्किंग उपकरणों में ADSL और केबल मोडेम, ईथरनेट एडेप्टर और हब होते हैं। CDC ने मौजूदा संचार सेवा मानकों, जैसे V.250 (टेलीफोन नेटवर्क पर मोडेम के लिए) और ईथरनेट (स्थानीय क्षेत्र नेटवर्क उपकरणों के लिए), को USB लिंक का उपयोग करके समाहित करने के लिए एक ढाँचा परिभाषित किया है। एक संचार उपकरण, उपकरण प्रबंधन, आवश्यकता पड़ने पर कॉल प्रबंधन और डेटा संचरण का प्रभारी होता है।
CDC defines seven major groups of devices. Each group belongs to a model of communication, which may include several subclasses. Each group of devices has its own specification document besides the CDC base class. The seven groups are:
Public Switched Telephone Network (PSTN), devices including voiceband modems, telephones, and serial emulation devices. Integrated Services Digital Network (ISDN) devices, including terminal adaptors and telephones. Ethernet Control Model (ECM) devices, including devices supporting the IEEE 802 family (ex.: cable and ADSL modems, WiFi adapters). Asynchronous Transfer Mode (ATM) devices, including ADSL modems and other devices connected to ATM networks (workstations, routers, LAN switches). Wireless Mobile Communications (WMC) devices, including multi-function communications handset devices used to manage voice and data communications. Ethernet Emulation Model (EEM) devices which exchange Ethernet-framed data. Network Control Model (NCM) devices, including high-speed network devices (High Speed Packet Access modems, Line Terminal Equipment)
सीडीसी और संबंधित उपवर्ग कार्यान्वयन निम्नलिखित विनिर्देशों का अनुपालन करता है:
यूनिवर्सल सीरियल बस, संचार उपकरणों के लिए वर्ग परिभाषाएँ, संशोधन 1.2, 3 नवंबर 2010. यूनिवर्सल सीरियल बस, संचार, PSTN उपकरणों के लिए उपवर्ग, संशोधन 1.2, 9 फरवरी 2007.
USB डिवाइस CDC बेस क्लास ओवरview
संचार क्षमता को कार्यान्वित करने के लिए एक सीडीसी डिवाइस निम्नलिखित इंटरफेस से बना होता है:
संचार वर्ग इंटरफ़ेस (CCI) डिवाइस प्रबंधन और वैकल्पिक रूप से कॉल प्रबंधन के लिए ज़िम्मेदार है।
डिवाइस प्रबंधन, डिवाइस के सामान्य कॉन्फ़िगरेशन और नियंत्रण तथा होस्ट को घटनाओं की सूचना देने में सक्षम बनाता है। कॉल प्रबंधन, कॉल स्थापना और समाप्ति को सक्षम बनाता है। कॉल प्रबंधन को DCI के माध्यम से मल्टीप्लेक्स किया जा सकता है। सभी CDC उपकरणों के लिए CCI अनिवार्य है। यह CDC उपकरण द्वारा समर्थित संचार मॉडल को निर्दिष्ट करके CDC फ़ंक्शन की पहचान करता है। CCI के बाद आने वाला इंटरफ़ेस कोई भी परिभाषित USB श्रेणी इंटरफ़ेस हो सकता है, जैसे ऑडियो या विक्रेता-विशिष्ट इंटरफ़ेस। विक्रेता-विशिष्ट इंटरफ़ेस को विशिष्ट रूप से DCI द्वारा दर्शाया जाता है।
Data Class Interface (DCI) is responsible for data transmission. Data transmitted and/or received do not follow a specific
प्रारूप। डेटा संचार लाइन से कच्चा डेटा, मालिकाना प्रारूप का डेटा आदि हो सकता है। CCI का अनुसरण करने वाले सभी DCI को अधीनस्थ इंटरफेस के रूप में देखा जा सकता है।
एक सीडीसी डिवाइस में कम से कम एक सीसीआई और शून्य या अधिक डीसीआई होने चाहिए। एक सीसीआई और कोई भी अधीनस्थ डीसीआई मिलकर होस्ट को एक विशेषता प्रदान करते हैं। इस क्षमता को एक फ़ंक्शन भी कहा जाता है। एक सीडीसी कंपोजिट डिवाइस में, आपके पास कई हो सकते हैं।
कॉपीराइट © 2025 सिलिकॉन प्रयोगशालाएँ। सभी अधिकार सुरक्षित।
19/174
ऊपरview
functions. Therefore, the device would be composed of several sets of CCI and DCI(s) as shown in Figure – CDC Composite Device.
चित्र – सीडीसी कम्पोजिट डिवाइस
एक सीडीसी डिवाइस द्वारा निम्नलिखित समापन बिंदुओं के संयोजन का उपयोग किए जाने की संभावना है:
नियंत्रण IN और OUT एंडपॉइंट्स की एक जोड़ी जिसे डिफ़ॉल्ट एंडपॉइंट कहा जाता है। एक वैकल्पिक बल्क या इंटरप्ट IN एंडपॉइंट। बल्क या समकालिक IN और OUT एंडपॉइंट्स की एक जोड़ी। ध्यान दें कि सिलिकॉन लैब्स USB डिवाइस स्टैक वर्तमान में समकालिक एंडपॉइंट्स का समर्थन नहीं करता है।
नीचे दी गई तालिका विभिन्न समापन बिंदुओं के उपयोग तथा CDC के किस इंटरफेस द्वारा उनका उपयोग किया जाता है, को दर्शाती है।
तालिका – सीडीसी एंडपॉइंट उपयोग
endpoint
नियंत्रण में
नियंत्रण बाहर
Interrupt or bulk IN Bulk or isochronous IN Bulk or isochronous
बाहर
दिशा
Deviceto-host
होस्ट-टूडिवाइस
Deviceto-host
Deviceto-host
होस्ट-टूडिवाइस
इंटरफ़ेस उपयोग
सीसीआई
गणना के लिए मानक अनुरोध, वर्ग-विशिष्ट अनुरोध, डिवाइस
प्रबंधन, और वैकल्पिक रूप से कॉल प्रबंधन।
सीसीआई
गणना के लिए मानक अनुरोध, वर्ग-विशिष्ट अनुरोध, डिवाइस
प्रबंधन, और वैकल्पिक रूप से कॉल प्रबंधन।
सीसीआई
ईवेंट अधिसूचना, जैसे रिंग डिटेक्शन, सीरियल लाइन स्थिति, नेटवर्क स्थिति।
डीसीआई
कच्चा या स्वरूपित डेटा संचार.
डीसीआई
कच्चा या स्वरूपित डेटा संचार.
Most communication devices use an interrupt endpoint to notify the host of events. Isochronous endpoints should not be used for data transmission when a proprietary protocol relies on data retransmission in case of USB protocol errors. Isochronous communication can inherently lose data since it has no retry mechanisms.
संचार के सात प्रमुख मॉडलों में कई उपवर्ग शामिल हैं। एक उपवर्ग उस तरीके का वर्णन करता है जिससे डिवाइस को डिवाइस प्रबंधन और कॉल प्रबंधन को संभालने के लिए CCI का उपयोग करना चाहिए। नीचे दी गई तालिका सभी संभावित उपवर्गों और उनसे संबंधित संचार मॉडल को दर्शाती है।
तालिका – सीडीसी उपवर्ग
उपवर्ग
प्रत्यक्ष रेखा नियंत्रण मॉडल अमूर्त नियंत्रण मॉडल
संचार मॉडल
पीएसटीएन
पीएसटीएन
Exampइस उपवर्ग का उपयोग करने वाले उपकरणों की संख्या
USB होस्ट द्वारा सीधे नियंत्रित मॉडेम डिवाइस
सीरियल इम्यूलेशन डिवाइस, सीरियल कमांड सेट के माध्यम से नियंत्रित मॉडेम डिवाइस
कॉपीराइट © 2025 सिलिकॉन प्रयोगशालाएँ। सभी अधिकार सुरक्षित।
20/174
ऊपरview
उपवर्ग
संचार मॉडल
Exampइस उपवर्ग का उपयोग करने वाले उपकरणों की संख्या
टेलीफोन नियंत्रण मॉडल
पीएसटीएन
Multi-Channel Control ISDN Model
CAPI नियंत्रण मॉडल ISDN
ईथरनेट नेटवर्किंग ईसीएम नियंत्रण मॉडल
एटीएम नेटवर्किंग
एटीएम
नियंत्रण मॉडल
वायरलेस हैंडसेट नियंत्रण मॉडल
डब्ल्यूएमसी
डिवाइस प्रबंधन WMC
मोबाइल डायरेक्ट लाइन मॉडल
डब्ल्यूएमसी
ओबीईएक्स
डब्ल्यूएमसी
ईथरनेट इम्यूलेशन EEM मॉडल
नेटवर्क नियंत्रण मॉडल
एनसीएम
Voice telephony devices
बेसिक रेट टर्मिनल एडाप्टर, प्राइमरी रेट टर्मिनल एडाप्टर, टेलीफोन
बेसिक रेट टर्मिनल एडाप्टर, प्राइमरी रेट टर्मिनल एडाप्टर, टेलीफोन DOC-SIS केबल मोडेम, PPPoE इम्यूलेशन का समर्थन करने वाले ADSL मोडेम, वाई-फाई एडाप्टर (IEEE 802.11-परिवार), IEEE 802.3 एडाप्टर ADSL मोडेम
वायरलेस उपकरणों से जुड़ने वाले मोबाइल टर्मिनल उपकरण
मोबाइल टर्मिनल उपकरण वायरलेस उपकरणों से कनेक्ट हो रहे हैं मोबाइल टर्मिनल उपकरण वायरलेस उपकरणों से कनेक्ट हो रहे हैं
वायरलेस उपकरणों से कनेक्ट होने वाले मोबाइल टर्मिनल उपकरण। परिवहन की अगली परत के रूप में ईथरनेट फ़्रेम का उपयोग करने वाले उपकरण। रूटिंग और इंटरनेट कनेक्टिविटी उपकरणों के लिए उपयुक्त नहीं। नेटवर्क पर उच्च गति डेटा बैंडविड्थ ले जाने वाले IEEE 802.3 एडाप्टर।
कोर से USB डिवाइस CDC ACM क्लास संसाधन की आवश्यकता
प्रत्येक बार जब आप sl_usbd_cdc_acm_add_to_configuration() फ़ंक्शन को कॉल करके USB कॉन्फ़िगरेशन में CDC ACM क्लास इंस्टेंस जोड़ते हैं, तो कोर से निम्नलिखित संसाधन आवंटित किए जाएंगे।
संसाधन
Interfaces Alternate interfaces Endpoints Interface groups
मात्रा
2 2 3 1
Note that those numbers are per configuration. When setting up your SL_USBD_INTERFACE_QUANTITY , SL_USBD_ALT_INTERFACE_QUANTITY , SL_USBD_INTERFACE_GROUP_QUANTITY and SL_USBD_DESCRIPTOR_QUANTITY configuration values, don’t forget to take into account on how many configurations the class will be added. For the SL_USBD_OPEN_ENDPOINTS_QUANTITY configuration value, since endpoints are opened only when a configuration is set by the host, you just need to take into account the number of needed endpoints for a class instance.
USB डिवाइस CDC ACM उपवर्ग ओवरview
सीडीसी बेस क्लास एक कम्युनिकेशन क्लास इंटरफेस (सीसीआई) और डेटा क्लास इंटरफेस (डीसीआई) से बना है, जिसकी विस्तार से चर्चा यूएसबी डिवाइस सीडीसी बेस क्लास ओवर में की गई है।view यह खंड ACM प्रकार के एक CCI पर चर्चा करता है। इसमें प्रबंधन तत्व के लिए एक डिफ़ॉल्ट समापन बिंदु और अधिसूचना तत्व के लिए एक इंटरप्ट समापन बिंदु होता है। DCI पर अनिर्दिष्ट डेटा ले जाने के लिए बल्क समापन बिंदुओं की एक जोड़ी का उपयोग किया जाता है।
ACM उपवर्ग का उपयोग दो प्रकार के संचार उपकरणों द्वारा किया जाता है:
AT कमांड का समर्थन करने वाले उपकरण (उदाहरण के लिए, वॉयसबैंड मोडेम) सीरियल इम्यूलेशन उपकरण जिन्हें वर्चुअल COM पोर्ट उपकरण भी कहा जाता है।
There are several subclass-specific requests for the ACM subclass. They allow you to control and configure the device. The complete list and description of all ACM requests can be found in the specification <Universal Serial Bus, Communications,
कॉपीराइट © 2025 सिलिकॉन प्रयोगशालाएँ। सभी अधिकार सुरक्षित।
21/174
ऊपरview Subclass for PSTN Devices, revision 1.2, February 9, 2007=, section 6.2.2.
इस सूची से, सिलिकॉन लैब्स9 ACM उपवर्ग निम्नलिखित का समर्थन करता है:
तालिका – सिलिकॉन लैब्स द्वारा समर्थित ACM अनुरोध
Subclass Request Description
SetCommFeature GetCommFeature ClearCommFeature
The host sends this request to control the settings for a given communications feature. Not used for serial emulation.
होस्ट किसी दी गई संचार सुविधा के लिए वर्तमान सेटिंग्स प्राप्त करने हेतु यह अनुरोध भेजता है। इसका उपयोग सीरियल इम्यूलेशन के लिए नहीं किया जाता है।
होस्ट किसी दी गई संचार सुविधा की सेटिंग्स साफ़ करने के लिए यह अनुरोध भेजता है। सीरियल इम्यूलेशन के लिए उपयोग नहीं किया जाता है।
सेटलाइनकोडिंग
होस्ट ACM डिवाइस सेटिंग्स कॉन्फ़िगर करने के लिए यह अनुरोध भेजता है: बॉड दर, स्टॉप बिट्स की संख्या, पैरिटी प्रकार और डेटा बिट्स की संख्या। सीरियल इम्यूलेशन के लिए, यह अनुरोध हर बार जब आप किसी खुले वर्चुअल COM पोर्ट के लिए सीरियल सेटिंग्स कॉन्फ़िगर करते हैं, तो सीरियल टर्मिनल द्वारा स्वचालित रूप से भेजा जाता है।
गेटलाइनकोडिंग
होस्ट वर्तमान ACM सेटिंग्स (बॉड दर, स्टॉप बिट्स, पैरिटी, डेटा बिट्स) प्राप्त करने के लिए यह अनुरोध भेजता है। सीरियल इम्यूलेशन के लिए, सीरियल टर्मिनल वर्चुअल COM पोर्ट खुलने के दौरान स्वचालित रूप से यह अनुरोध भेजते हैं।
SetControlLineState होस्ट, हाफ-डुप्लेक्स मोडेम के लिए वाहक को नियंत्रित करने के लिए यह अनुरोध भेजता है और यह बताता है कि डेटा टर्मिनल उपकरण (DTE) तैयार है या नहीं। सीरियल इम्यूलेशन के मामले में, DTE एक सीरियल टर्मिनल होता है। सीरियल इम्यूलेशन के लिए, कुछ सीरियल टर्मिनल आपको नियंत्रण सेट के साथ यह अनुरोध भेजने की अनुमति देते हैं।
सेटब्रेक
होस्ट RS-232 स्टाइल ब्रेक जनरेट करने के लिए यह अनुरोध भेजता है। सीरियल इम्यूलेशन के लिए, कुछ सीरियल टर्मिनल आपको यह अनुरोध भेजने की अनुमति देते हैं।
Silicon Labs9 ACM subclass uses the interrupt IN endpoint to notify the host about the current serial line state. The serial
लाइन स्थिति एक बिटमैप है जो होस्ट को सूचित करता है:
ओवररन के कारण डेटा खारिज किया गया समता त्रुटि फ़्रेमिंग त्रुटि रिंग सिग्नल डिटेक्शन की स्थिति ब्रेक डिटेक्शन तंत्र की स्थिति ट्रांसमिशन वाहक की स्थिति रिसीवर वाहक डिटेक्शन की स्थिति
सिलिकॉन लैब्स9 ACM उपवर्ग कार्यान्वयन निम्नलिखित विनिर्देश का अनुपालन करता है:
यूनिवर्सल सीरियल बस, संचार, पीएसटीएन उपकरणों के लिए उपवर्ग, संशोधन 1.2, 9 फरवरी, 2007।
USB डिवाइस CDC ACM क्लास कॉन्फ़िगरेशन
यह खंड CDC ACM क्लास (संचार उपकरण वर्ग, अमूर्त नियंत्रण मॉडल) को कॉन्फ़िगर करने के तरीके पर चर्चा करता है। कॉन्फ़िगरेशन पैरामीटर के दो समूह हैं:
USB डिवाइस CDC ACM क्लास एप्लिकेशन विशिष्ट कॉन्फ़िगरेशन USB डिवाइस CDC ACM क्लास इंस्टेंस कॉन्फ़िगरेशन
USB डिवाइस CDC ACM क्लास अनुप्रयोग विशिष्ट कॉन्फ़िगरेशन
सीडीसी बेस क्लास एसीएम उपवर्ग
सीडीसी बेस क्लास
सबसे पहले, सिलिकॉन लैब्स USB डिवाइस CDC क्लास मॉड्यूल का उपयोग करने के लिए, आपको अपनी एप्लिकेशन आवश्यकताओं के अनुसार CDC कंपाइल-टाइम कॉन्फ़िगरेशन #define-s को समायोजित करना होगा। इन्हें sl_usbd_core_config.h हेडर के अंदर पुनर्समूहित किया गया है। file सीडीसी सेक्शन के अंतर्गत। इनका उद्देश्य यूएसबी डिवाइस मॉड्यूल को यह बताना है कि कितने यूएसबी सीडीसी ऑब्जेक्ट आवंटित करने हैं।
कॉपीराइट © 2025 सिलिकॉन प्रयोगशालाएँ। सभी अधिकार सुरक्षित।
22/174
ऊपरview
The table below describes each configuration field available in this configuration structure.
तालिका – USB डिवाइस CDC कॉन्फ़िगरेशन परिभाषाएँ
कॉन्फ़िगरेशन नाम
SL_USBD_CDC_CL AS S_INSTANCE_QUANT ITY
SL_USBD_CDC_CONF IGURATION_QUANTI
TY
SL_USBD_CDC_DATA _INTERFACE_QUANTI
TY
विवरण
Number of class instances you will allocate via a call to the function
sl_usbd_cdc_acm_create_instance() .
कॉन्फ़िगरेशन की संख्या. ACM क्लास इंस्टेंसेस को एक या अधिक aaaa कॉन्फ़िगरेशन में जोड़ा जा सकता है, जैसे कि sl_usbd_cdc_acm_add_to_configuration().
सभी CDC फ़ंक्शनों के लिए डेटा इंटरफ़ेस (DCI) की कुल संख्या। प्रत्येक CDC ACM फ़ंक्शन aaaaaaaaa dded vi c ll को फ़ंक्शन sl_usbd_cdc_acm_create_instance() में dd dt इंटरफ़ेस ce होगा।
डिफ़ॉल्ट मान
2
1
2
ACM Subclass
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 सीरियल क्लास इंस्टेंस से संबंधित कॉन्फ़िगरेशन को परिभाषित करता है। क्लास इंस्टेंस निर्माण लाइन स्थिति अंतराल कॉल प्रबंधन क्षमताएँ p_acm_callbacks
क्लास इंस्टेंस निर्माण
CDC ACM सीरियल क्लास इंस्टेंस बनाने के लिए, फ़ंक्शन T को sl_usbd_cdc_acm_create_instance() पर कॉल करें। यह फ़ंक्शन तीन कॉन्फ़िगरेशन तर्कों को कॉल करता है, जैसा कि यहां वर्णित है।
line_state_interval
This is the interval (in milliseconds) that your CDC ACM serial class instance will report the line state notifications to the T a a host. his v lue must be power of two (1, 2, 4, 8, 16, etc).
call_mgmt_capabilities
Call Management Capabilities bitmap. Possible values of the bitmap are as follows:
Value (bit)
SL_USBD_ACM_SERIAL_CALL_MGMT_DEV
SL_USBD_ACM_SERIAL_CALL_MGMT_DATA_CCI _DCI
विवरण
Device handles call management itself. Device can send/receive call management information over a Data Class interface.
p_acm_कॉलबैक
कॉपीराइट © 2025 सिलिकॉन प्रयोगशालाएँ। सभी अधिकार सुरक्षित।
23/174
ऊपरview
a a M a a p_acm_callbacks is pointer to structure of type sl_usbd_cdc_acm_callbacks_t . Its purpose is to give the CDC AC Cl ss set of callback functions to be called when a CDC ACM event occurs. Not all callbacks are mandatory and a null pointer ( NULL ) can be passed in the callbacks structure variable when the callback is not needed. The table below describes each configuration field available in this configuration structure.
तालिका – sl_usbd_cdc_acm _callbacks_t कॉन्फ़िगरेशन संरचना
फ़ील्ड
विवरण
।सक्षम
USB क्लास इंस्टेंस सक्षम होने पर कॉल किया जाता है
सफलतापूर्वक.
।अक्षम करना
जब USB क्लास इंस्टैंस अक्षम हो तो कॉल किया जाता है.
.line_control_changed जब लाइन नियंत्रण परिवर्तन प्राप्त होता है तो कॉल किया जाता है।
line_coding_changed जब लाइन कोडिंग परिवर्तन प्राप्त होता है तो कॉल किया जाता है।
Function Signature
void app_usbd_cdc_acm_enable(uint8_t subclass_nbr);
शून्य app_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
*p_लाइन_कोडिंग
कॉलबैक फ़ंक्शन के लिए इवेंट अधिसूचना कॉलबैक पंजीकृत करना अनुभाग देखेंampले.
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() फ़ंक्शन भरकर CDC आधार वर्ग और ACM उपवर्ग को प्रारंभ करना होगा। नीचे दिया गया उदाहरण दिखाता है कि डिफ़ॉल्ट मानों का उपयोग करके sl_usbd_cdc_init() और sl_usbd_cdc_acm_init() को कैसे भरें।
Example – सीडीसी एसीएम क्लास का आरंभीकरण
sl_status_t स्थिति;
स्थिति = sl_usbd_cdc_init(); यदि (स्थिति ! SL_STATUS_OK) { /* एक त्रुटि हुई। त्रुटि प्रबंधन यहाँ जोड़ा जाना चाहिए। */
}
स्थिति = sl_usbd_cdc_acm_init(); यदि (स्थिति ! SL_STATUS_OK) { /* एक त्रुटि हुई। त्रुटि प्रबंधन यहाँ जोड़ा जाना चाहिए। */
}
अपने डिवाइस में USB डिवाइस CDC ACM क्लास इंस्टेंस जोड़ना
अपने डिवाइस में CDC ACM क्लास कार्यक्षमता जोड़ने के लिए, आपको एक इंस्टेंस बनाना होगा, फिर उसे अपने डिवाइस के कॉन्फ़िगरेशन में जोड़ना होगा।
CDC ACM क्लास इंस्टेंस बनाना
कॉपीराइट © 2025 सिलिकॉन प्रयोगशालाएँ। सभी अधिकार सुरक्षित।
24/174
ऊपरview
अपने डिवाइस के कॉन्फ़िगरेशन में CDC ACM क्लास इंस्टेंस जोड़ना इवेंट नोटिफिकेशन कॉलबैक पंजीकृत करना
CDC ACM क्लास इंस्टेंस बनाना
a a M a a a Cre te CDC AC cl ss inst nce by c lling the function sl_usbd_cdc_acm_create_instance() . T a a a M a a a he ex mple below shows how to cre te CDC AC cl ss inst nce vi sl_usbd_cdc_acm_create_instance() .
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);
if (status ! SL_STATUS_OK) { /* An error occurred. Error handling should be added here. */
}
अपने डिवाइस के कॉन्फ़िगरेशन में CDC ACM क्लास इंस्टेंस जोड़ना
CDC ACM क्लास इंस्टेंस बनाने के बाद, आप फ़ंक्शन को कॉल करके इसे कॉन्फ़िगरेशन में जोड़ सकते हैं
sl_usbd_cdc_acm_add_to_configuration() .
नीचे दिया गया उदाहरण दिखाता है कि sl_usbd_cdc_acm_add_to_configuration() कैसे भरें।
Example – Call to USBD ACM sl_usbd_cdc_acm_add_to_configuration()
sl_status_t स्थिति;
status = sl_usbd_cdc_acm_add_to_configuration(subclass_nbr,
(1)
config_nbr_fs);
(2)
if (status ! SL_STATUS_OK) {
/* An error occurred. Error handling should be added here. */
}
a a a (1) Cl ss number to dd to the configur tion returned by sl_usbd_cdc_acm_create_instance() . (2) Configuration number (here adding it to a Full-Speed configuration).
ईवेंट अधिसूचना कॉलबैक पंजीकृत करना
CDC ACM सीरियल क्लास आपके एप्लिकेशन को लाइन नियंत्रण या कोडिंग में किसी भी बदलाव की सूचना नोटिफिकेशन कॉलबैक फ़ंक्शन के ज़रिए दे सकता है। ACM इंस्टेंस निर्माण के दौरान कॉलबैक फ़ंक्शन संरचना को तर्क के रूप में पास किया जा सकता है। ध्यान दें कि ये कॉलबैक वैकल्पिक हैं। उदाहरणample – CDC ACM कॉलबैक पंजीकरण कॉलबैक पंजीकरण फ़ंक्शन के उपयोग को दर्शाता है। उदाहरणample – CDC ACM कॉलबैक कार्यान्वयन एक उदाहरण दिखाता हैample of implementation of the callback functions.
Example – CDC ACM Callbacks Registration
कॉपीराइट © 2025 सिलिकॉन प्रयोगशालाएँ। सभी अधिकार सुरक्षित।
25/174
ऊपरview
uint8_t उपवर्ग_nbr; sl_status_t स्थिति;
sl_usbd_cdc_acm_callbacks_t sli_usbd_cdc_acm_callbacks = { app_usbd_cdc_acm_connect, app_usbd_cdc_acm_disconnect, app_usbd_cdc_acm_line_control_changed, app_usbd_cdc_acm_line_coding_changed, };
स्थिति = sl_usbd_cdc_acm_create_instance(64u, SL_USBD_ACM_SERIAL_CALL_MGMT_DATA_CCI_DCI | SL_USBD_ACM_SERIAL_CALL_MGMT_DEV, &sli_usbd_cdc_acm_callbacks, &subclass_nbr);
if (status ! SL_STATUS_OK) { /* An error occurred. Error handling should be added here. */ }
Example – CDC ACM Callbacks Implementation
bool app_usbd_cdc_acm_line_coding_changed (uint8_t
उपवर्ग_nbr,
sl_usbd_cdc_acm_line_coding_t *p_line_coding)
{
uint32_t बॉडरेट_न्यू;
uint8_t समता_नया;
uint8_t stop_bits_new;
uint8_t डेटा_बिट्स_न्यू;
/* TODO Apply new line coding.*/ baudrate_new = p_line_coding->BaudRate; parity_new = p_line_coding->Parity; stop_bits_new = p_line_coding->StopBits; data_bits_new = p_line_coding->DataBits;
वापसी (सत्य);
(1)
}
शून्य app_usbd_cdc_acm_line_control_changed (uint8_t उपवर्ग_nbr, uint8_t ईवेंट, uint8_t ईवेंट_बदला हुआ)
{ bool rts_state; bool rts_state_changed; bool dtr_state; bool dtr_state_changed; bool brk_state; bool brk_state_changed;
/* TODO Apply new line control. */ rts_state = ((event & SL_USBD_CDC_ACM_CTRL_RTS) ! 0) ? true : false; rts_state_changed = ((event_changed & SL_USBD_CDC_ACM_CTRL_RTS) ! 0) ? true : false; dtr_state = ((event & SL_USBD_CDC_ACM_CTRL_DTR) ! 0) ? true : false; dtr_state_changed = ((event_changed & SL_USBD_CDC_ACM_CTRL_DTR) ! 0) ? true : false; brk_state = ((event & SL_USBD_CDC_ACM_CTRL_BREAK) ! 0) ? true : false; brk_state_changed = ((event_changed & SL_USBD_CDC_ACM_CTRL_BREAK) ! 0) ? true : false;
}
(1) यदि लाइन कोडिंग लागू करने में विफलता हुई, तो इस फ़ंक्शन को false लौटाना ज़रूरी है। अन्यथा, true लौटाएँ।
Communicating Using the CDC ACM Class
सीरियल स्थिति
लाइन कोडिंग लाइन नियंत्रण
कॉपीराइट © 2025 सिलिकॉन प्रयोगशालाएँ। सभी अधिकार सुरक्षित।
26/174
ऊपरview
लाइन स्टेट सबक्लास इंस्टेंस कम्युनिकेशन
सीरियल स्थिति
Line Coding
USB होस्ट CDC ACM डिवाइस की लाइन कोडिंग (बॉड रेट, पैरिटी, आदि) को नियंत्रित करता है। आवश्यकता पड़ने पर, एप्लिकेशन लाइन कोडिंग सेट करने के लिए ज़िम्मेदार होता है। वर्तमान लाइन कोडिंग को पुनः प्राप्त करने और सेट करने के लिए दो फ़ंक्शन दिए गए हैं, जैसा कि नीचे दी गई तालिका में बताया गया है।
तालिका – सीडीसी एसीएम लाइन कोडिंग फ़ंक्शन
समारोह
sl_usbd_cdc_acm_g e t_line _co d ing ()
sl_usbd_cdc_acm_s e t_line _co d ing ()
विवरण
आपका अनुप्रयोग वर्तमान लाइन कोडिंग सेटिंग्स को होस्ट से SetLineCoding अनुरोधों के साथ या sl_usbd_cdc_acm_set_line_coding() फ़ंक्शन के साथ प्राप्त कर सकता है।
आपका एप्लिकेशन लाइन कोडिंग सेट कर सकता है। होस्ट GetLineCoding अनुरोध के ज़रिए सेटिंग्स प्राप्त कर सकता है।
रेखा नियंत्रण
USB होस्ट CDC ACM डिवाइस के लाइन नियंत्रण (RTS और DTR पिन, ब्रेक सिग्नल, आदि) को नियंत्रित करता है। आवश्यकता पड़ने पर, आपका एप्लिकेशन लाइन नियंत्रण लागू करने के लिए ज़िम्मेदार होता है। वर्तमान लाइन नियंत्रणों को पुनः प्राप्त करने और सेट करने के लिए एक फ़ंक्शन प्रदान किया गया है, जैसा कि नीचे दी गई तालिका में वर्णित है।
तालिका – सीडीसी एसीएम लाइन नियंत्रण कार्य
समारोह
sl_usb d _cd c_acm_g e t_line _co ntr o l_state ()
आपका अनुप्रयोग SetControlLineState अनुरोध के साथ होस्ट द्वारा निर्धारित वर्तमान नियंत्रण रेखा स्थिति प्राप्त कर सकता है।
रेखा राज्य
USB होस्ट नियमित अंतराल पर लाइन स्थिति प्राप्त करता है। आपके एप्लिकेशन को हर बार लाइन स्थिति में बदलाव होने पर उसे अपडेट करना होगा। आवश्यकता पड़ने पर, आपका एप्लिकेशन लाइन स्थिति सेट करने के लिए ज़िम्मेदार होता है। वर्तमान लाइन नियंत्रणों को प्राप्त करने और सेट करने के लिए दो फ़ंक्शन दिए गए हैं, जैसा कि नीचे दी गई तालिका में बताया गया है।
तालिका – सीडीसी एसीएम लाइन एस राज्य कार्य
समारोह
sl_usb d _cd c_acm_se t _line _state _e ve nt()
sl_usbd_cdc_acm_cle ar_line _state _e ve nt()
आपका एप्लिकेशन कोई भी लाइन स्टेट ईवेंट सेट कर सकता है। लाइन स्टेट सेट करते समय, होस्ट को सीरियल लाइन स्टेट में बदलाव की सूचना देने के लिए एक इंटरप्ट IN ट्रांसफर भेजा जाता है।
एप्लिकेशन लाइन स्टेट की दो घटनाओं को साफ़ कर सकता है: ट्रांसमिशन कैरियर और रिसीवर कैरियर डिटेक्शन। बाकी सभी घटनाएँ ACM सीरियल इम्यूलेशन सबक्लास द्वारा स्वतः साफ़ हो जाती हैं।
Subclass Instance Communication
सिलिकॉन लैब्स का ACM उपवर्ग होस्ट के साथ संचार करने के लिए निम्नलिखित फ़ंक्शन प्रदान करता है। फ़ंक्शन9 पैरामीटर्स के बारे में अधिक जानकारी के लिए, CDC ACM उपवर्ग फ़ंक्शन संदर्भ देखें।
फ़ंक्शन का नाम
sl_usb d _cd c_acm_ re ad () sl_usb d _cd c_acm_write ()
संचालन
बल्क OUT एंडपॉइंट के ज़रिए होस्ट से डेटा प्राप्त करता है। यह फ़ंक्शन ब्लॉक कर रहा है। बल्क IN एंडपॉइंट के ज़रिए होस्ट को डेटा भेजता है। यह फ़ंक्शन ब्लॉक कर रहा है।
कॉपीराइट © 2025 सिलिकॉन प्रयोगशालाएँ। सभी अधिकार सुरक्षित।
27/174
ऊपरview
तालिका – सीडीसी एसीएम संचार एपीआई सारांश aaaaa sl_usbd_cdc_acm_read() और sl_usbd_cdc_acm_write() समकालिक संचार प्रदान करते हैं, जिसका अर्थ है कि स्थानांतरण अवरुद्ध हो रहा है। दूसरे शब्दों में, फ़ंक्शन को कॉल करने पर, एप्लिकेशन तब तक अवरुद्ध रहता है जब तक कि स्थानांतरण त्रुटि के साथ या उसके बिना पूरा न हो जाए। हमेशा प्रतीक्षा से बचने के लिए एक टाइमआउट निर्दिष्ट किया जा सकता है।ampनीचे दिया गया चित्र पढ़ने और लिखने का उदाहरण दिखाता हैampवह फ़ाइल जो बल्क OUT एंडपॉइंट का उपयोग करके होस्ट से डेटा प्राप्त करती है और बल्क IN एंडपॉइंट का उपयोग करके होस्ट को डेटा भेजती है।
Listing – Serial Read and Write Example
__संरेखित(4) uint8_t rx_buf[2];
__संरेखित(4) uint8_t tx_buf[2];
uint32_t
xfer_लेन;
sl_स्थिति_t
स्थिति;
स्थिति = sl_usbd_cdc_acm_read(subclass_nbr,
(1)
आरएक्स_बफ,
(2)
2यू,
0यू,
(3)
&xfer_len);
if (status ! SL_STATUS_OK) {
/* An error occurred. Error handling should be added here. */
}
स्थिति = sl_usbd_cdc_acm_write(subclass_nbr,
(1)
tx_buf,
(4)
2यू,
0यू,
(3)
&xfer_len);
if (status ! SL_STATUS_OK) {
/* An error occurred. Error handling should be added here. */
}
T aaaaa M (1) sl_usbd_cdc_acm_create_instance() द्वारा निर्मित क्लास इंस्टेंस नंबर, AC उपवर्ग को एक आंतरिक संदर्भ प्रदान करता है ताकि स्थानांतरण को उचित बल्क OUT या IN एंडपॉइंट पर रूट किया जा सके। (2) आपके एप्लिकेशन को यह सुनिश्चित करना होगा कि फ़ंक्शन को प्रदान किया गया बफ़र सभी डेटा को समायोजित करने के लिए पर्याप्त बड़ा हो। अन्यथा, सिंक्रनाइज़ेशन समस्याएँ हो सकती हैं। (3) अनंत अवरोधन की स्थिति से बचने के लिए, मिलीसेकंड में व्यक्त एक टाइमआउट निर्दिष्ट करें। 809 का मान एप्लिकेशन कार्य को हमेशा के लिए प्रतीक्षा करने पर मजबूर कर देता है। (4) एप्लिकेशन आरंभीकृत ट्रांसमिट बफ़र प्रदान करता है।
कॉपीराइट © 2025 सिलिकॉन प्रयोगशालाएँ। सभी अधिकार सुरक्षित।
28/174
ऊपरview
ऊपरview
USB डिवाइस HID क्लास
USB Device HID Class Overview USB Device HID Class Resource Needs from Core USB Device HID Class Configuration USB Device HID Class Programming Guide HID Periodic Input Reports Task
यह अनुभाग सिलिकॉन लैब्स यूएसबी डिवाइस द्वारा समर्थित मानव इंटरफ़ेस डिवाइस (एचआईडी) वर्ग का वर्णन करता है।
एचआईडी वर्ग में वे उपकरण शामिल हैं जिनका उपयोग मनुष्य कंप्यूटर संचालन को नियंत्रित करने के लिए करते हैं, जैसे कीबोर्ड, माउस, पॉइंटिंग डिवाइस और गेम डिवाइस।
HID वर्ग का उपयोग ऐसे संयुक्त उपकरण में भी किया जा सकता है जिसमें नॉब, स्विच, बटन और स्लाइडर जैसे नियंत्रण शामिल हों। उदाहरण के लिएampऑडियो हेडसेट में ध्वनि, म्यूट और वॉल्यूम नियंत्रण हेडसेट के HID फ़ंक्शन द्वारा नियंत्रित होते हैं। HID क्लास केवल नियंत्रण और इंटरप्ट ट्रांसफ़र का उपयोग करके किसी भी उद्देश्य के लिए डेटा का आदान-प्रदान कर सकता है।
The HID class is one of the oldest and most widely-used USB classes. All the major host operating systems provide a native driver to manage HID devices, which is why a variety of vendor-specific devices work with the HID class. This class also includes various types of output items such as LEDs, audio, tactile feedback, etc.
HID कार्यान्वयन निम्नलिखित विनिर्देशों का अनुपालन करता है:
मानव इंटरफ़ेस डिवाइस (HID) के लिए डिवाइस क्लास परिभाषा, 27/6/01, संस्करण 1.11. यूनिवर्सल सीरियल बस HID उपयोग तालिकाएँ, 28/10/2004, संस्करण 1.12.
USB Device HID Class Overview
ऊपरview
एक HID डिवाइस निम्नलिखित अंतबिंदुओं से बना होता है:
नियंत्रण IN और OUT समापन बिंदुओं की एक जोड़ी जिसे डिफ़ॉल्ट समापन बिंदु कहा जाता है एक इंटरप्ट IN समापन बिंदु एक वैकल्पिक इंटरप्ट OUT समापन बिंदु
नीचे दी गई तालिका विभिन्न समापन बिंदुओं के उपयोग का वर्णन करती है:
तालिका – HID क्लास एंडपॉइंट उपयोग
समापन बिंदु दिशा उपयोग
नियंत्रण में
नियंत्रण
बाहर
इंटरप्ट इन
रुकावट डालना
बाहर
Deviceto-host
होस्ट-टूडिवाइस
Deviceto-host
होस्ट-टूडिवाइस
गणना, वर्ग-विशिष्ट अनुरोध और डेटा संचार के लिए मानक अनुरोध (इनपुट, फ़ीचर रिपोर्ट, होस्ट से GET_REPORT अनुरोध के साथ भेजी जाती हैं)। गणना, वर्ग-विशिष्ट अनुरोध और डेटा संचार के लिए मानक अनुरोध (आउटपुट, फ़ीचर रिपोर्ट, होस्ट से SET_REPORT अनुरोध के साथ प्राप्त होती हैं)। डेटा संचार (इनपुट और फ़ीचर रिपोर्ट)।
डेटा संचार (आउटपुट और फ़ीचर रिपोर्ट)।
प्रतिवेदन
कॉपीराइट © 2025 सिलिकॉन प्रयोगशालाएँ। सभी अधिकार सुरक्षित।
29/174
ऊपरview
एक होस्ट और एक HID डिवाइस रिपोर्ट का उपयोग करके डेटा का आदान-प्रदान करते हैं। एक रिपोर्ट में स्वरूपित डेटा होता है जो HID डिवाइस के नियंत्रणों और अन्य भौतिक संस्थाओं के बारे में जानकारी देता है। एक नियंत्रण उपयोगकर्ता द्वारा नियंत्रित किया जा सकता है और डिवाइस के एक पहलू को संचालित करता है। उदाहरण के लिए,ampउदाहरण के लिए, एक नियंत्रण माउस या कीबोर्ड पर एक बटन, एक स्विच आदि हो सकता है। अन्य इकाइयाँ उपयोगकर्ता को डिवाइस की कुछ विशेषताओं की स्थिति के बारे में सूचित करती हैं। उदाहरण के लिएample, LEDs on a keyboard notify the user about the caps lock on, the numeric keypad active, etc.
रिपोर्ट डिस्क्रिप्टर की सामग्री का विश्लेषण करके होस्ट रिपोर्ट डेटा के प्रारूप और उपयोग को समझता है। सामग्री का विश्लेषण एक पार्सर द्वारा किया जाता है। रिपोर्ट डिस्क्रिप्टर डिवाइस में प्रत्येक नियंत्रण द्वारा प्रदान किए गए डेटा का वर्णन करता है। यह उन आइटम्स से बना होता है जो डिवाइस के बारे में जानकारी के टुकड़े होते हैं और 1-बाइट प्रीफ़िक्स और वेरिएबल-लेंथ से मिलकर बने होते हैं।
डेटा। आइटम प्रारूप के बारे में अधिक जानकारी के लिए, देखें
1.11=, खंड 5.6 और 6.2.2.
वस्तुओं के तीन मुख्य प्रकार हैं:
Main item defines or groups certain types of data fields.
वैश्विक आइटम नियंत्रण की डेटा विशेषताओं का वर्णन करता है.
स्थानीय आइटम नियंत्रण की डेटा विशेषताओं का वर्णन करता है.
प्रत्येक आइटम प्रकार को अलग-अलग फ़ंक्शन द्वारा परिभाषित किया जाता है। आइटम फ़ंक्शन को भी कहा जा सकता है tagएक आइटम फ़ंक्शन को एक उप-आइटम के रूप में देखा जा सकता है जो तीन मुख्य आइटम प्रकारों में से एक से संबंधित होता है। नीचे दी गई तालिका एक संक्षिप्त विवरण प्रदान करती है।view प्रत्येक आइटम प्रकार में आइटम के कार्यों का विवरण। प्रत्येक श्रेणी में आइटम के संपूर्ण विवरण के लिए, देखें
तालिका - प्रत्येक आइटम प्रकार के लिए आइटम का कार्य विवरण
आइटम आइटम प्रकार फ़ंक्शन
विवरण
मुख्य इनपुट
एक या अधिक भौतिक नियंत्रणों द्वारा प्रदान किए गए डेटा के बारे में जानकारी का वर्णन करता है।
मुख्य आउटपुट डिवाइस को भेजे गए डेटा का वर्णन करता है।
मुख्य विशेषता
डिवाइस को भेजी गई या उससे प्राप्त डिवाइस कॉन्फ़िगरेशन जानकारी का वर्णन करता है जो डिवाइस या उसके किसी घटक के समग्र व्यवहार को प्रभावित करती है।
मुख्य संग्रह समूह से संबंधित आइटम (इनपुट, आउटपुट या फ़ीचर).
संग्रह का मुख्य अंत संग्रह को बंद करता है। संग्रह
कॉपीराइट © 2025 सिलिकॉन प्रयोगशालाएँ। सभी अधिकार सुरक्षित।
30/174
ऊपरview
आइटम आइटम प्रकार फ़ंक्शन
विवरण
वैश्विक उपयोग पृष्ठ
डिवाइस के भीतर उपलब्ध फ़ंक्शन की पहचान करता है.
ग्लोबल लॉजिकल रिपोर्ट किए गए मानों की निचली सीमा को तार्किक इकाइयों में परिभाषित करता है। न्यूनतम
ग्लोबल लॉजिकल रिपोर्ट किए गए मानों की ऊपरी सीमा को तार्किक इकाइयों में परिभाषित करता है। अधिकतम
Global Physical Defines the lower limit of the reported values in physical units, that is the Logical Minimum Minimum expressed in physical units.
वैश्विक भौतिक भौतिक इकाइयों में रिपोर्ट किए गए मानों की ऊपरी सीमा को परिभाषित करता है, जो कि तार्किक अधिकतम है, भौतिक इकाइयों में व्यक्त अधिकतम।
वैश्विक इकाई
Indicates the unit exponent in base 10. The exponent ranges from -8 to +7.
प्रतिपादक
वैश्विक इकाई
रिपोर्ट किए गए मानों की इकाई दर्शाता है। उदाहरण के लिए, लंबाई, द्रव्यमान, तापमान इकाइयाँ, आदि।
वैश्विक रिपोर्ट का आकार
रिपोर्ट फ़ील्ड का आकार बिट्स में इंगित करता है.
वैश्विक रिपोर्ट आईडी किसी विशेष रिपोर्ट में जोड़े गए उपसर्ग को इंगित करती है।
Global Report Count
Indicates the number of data fields for an item.
वैश्विक धक्का
CPU स्टैक पर वैश्विक आइटम स्थिति तालिका की एक प्रतिलिपि रखता है।
ग्लोबल पॉप
आइटम स्थिति तालिका को स्टैक से अंतिम संरचना से प्रतिस्थापित करता है।
स्थानीय उपयोग
उपयोग पृष्ठ के भीतर किसी विशिष्ट उपयोग को निर्दिष्ट करने के लिए एक सूचकांक का प्रतिनिधित्व करता है। यह किसी विशिष्ट नियंत्रण या नियंत्रणों के समूह के लिए विक्रेता द्वारा सुझाए गए उपयोग को दर्शाता है। उपयोग, एप्लिकेशन डेवलपर को यह जानकारी प्रदान करता है कि कोई नियंत्रण वास्तव में क्या माप रहा है।
स्थानीय उपयोग
किसी सारणी या बिटमैप से संबद्ध प्रारंभिक उपयोग को परिभाषित करता है।
न्यूनतम
स्थानीय उपयोग
किसी सारणी या बिटमैप से संबद्ध अंतिम उपयोग को परिभाषित करता है।
अधिकतम
स्थानीय डिज़ाइनेटर नियंत्रण के लिए प्रयुक्त बॉडी पार्ट निर्धारित करता है। इंडेक्स भौतिक में एक डिज़ाइनेटर की ओर इंगित करता है।
अनुक्रमणिका
वर्णनकर्ता.
स्थानीय डिज़ाइनेटर किसी सरणी या बिटमैप से संबद्ध प्रारंभिक डिज़ाइनेटर की अनुक्रमणिका को परिभाषित करता है। न्यूनतम
स्थानीय डिज़ाइनर किसी सरणी या बिटमैप से संबद्ध अंतिम डिज़ाइनर की अनुक्रमणिका को परिभाषित करता है। अधिकतम
Local String Index
स्ट्रिंग डिस्क्रिप्टर के लिए स्ट्रिंग इंडेक्स। यह स्ट्रिंग को किसी विशेष आइटम या नियंत्रण से संबद्ध करने की अनुमति देता है।
स्थानीय स्ट्रिंग
किसी सरणी में नियंत्रणों को अनुक्रमिक स्ट्रिंग्स के समूह को निर्दिष्ट करते समय प्रथम स्ट्रिंग इंडेक्स निर्दिष्ट करता है
न्यूनतम या बिटमैप.
स्थानीय स्थानीय
स्ट्रिंग अधिकतम
सीमान्तक
किसी सारणी या बिटमैप में नियंत्रणों को अनुक्रमिक स्ट्रिंग्स के समूह को निर्दिष्ट करते समय अंतिम स्ट्रिंग इंडेक्स निर्दिष्ट करता है।
स्थानीय आइटमों के समूह की शुरुआत या अंत को परिभाषित करता है।
नियंत्रण डेटा में कम से कम निम्नलिखित आइटम परिभाषित होने चाहिए:
Input, Output or Feature Main items Usage Local item Usage Page Global item Logical Minimum Global item Logical Maximum Global item Report Size Global item
कॉपीराइट © 2025 सिलिकॉन प्रयोगशालाएँ। सभी अधिकार सुरक्षित।
31/174
ऊपरview
रिपोर्ट गणना वैश्विक आइटम नीचे दी गई तालिका होस्ट HID पार्सर के दृष्टिकोण से माउस रिपोर्ट डिस्क्रिप्टर सामग्री का प्रतिनिधित्व दर्शाती है। माउस में तीन बटन होते हैं (बाएँ, दाएँ और पहिया)। उदाहरण में प्रस्तुत कोडampनीचे इस माउस रिपोर्ट डिस्क्रिप्टर प्रतिनिधित्व के अनुरूप कोड कार्यान्वयन है।
चित्र – होस्ट HID पार्सर से रिपोर्ट डिस्क्रिप्टर सामग्री View
(1) उपयोग पृष्ठ आइटम फ़ंक्शन डिवाइस के सामान्य फ़ंक्शन को निर्दिष्ट करता है। इस उदाहरण मेंample, HID डिवाइस एक से संबंधित है
सामान्य डेस्कटॉप नियंत्रण.
(2) संग्रह अनुप्रयोग उन मुख्य वस्तुओं को समूहित करता है जिनका एक समान उद्देश्य होता है और जो अनुप्रयोगों के लिए परिचित हो सकते हैं। आरेख में, समूह तीन इनपुट मुख्य वस्तुओं से बना है। इस संग्रह के लिए, नियंत्रणों के लिए सुझाया गया उपयोग माउस है, जैसा कि उपयोग वस्तु द्वारा दर्शाया गया है। (3) नेस्टेड संग्रहों का उपयोग अनुप्रयोगों को एकल नियंत्रण या नियंत्रणों के समूह के उपयोग के बारे में अधिक जानकारी देने के लिए किया जा सकता है। इस उदाहरण मेंampसंग्रह अनुप्रयोग में नेस्टेड संग्रह भौतिक, संग्रह अनुप्रयोग बनाने वाले उन्हीं तीन इनपुट आइटम्स से बना है। संग्रह भौतिक का उपयोग डेटा आइटम्स के एक समूह के लिए किया जाता है जो एक ज्यामितीय बिंदु पर एकत्रित डेटा बिंदुओं का प्रतिनिधित्व करते हैं। उदाहरण मेंample में, सुझाया गया उपयोग एक पॉइंटर है जैसा कि उपयोग आइटम द्वारा इंगित किया गया है। यहां पॉइंटर उपयोग माउस स्थिति निर्देशांक को संदर्भित करता है और सिस्टम सॉफ़्टवेयर स्क्रीन कर्सर की गति में माउस निर्देशांक का अनुवाद करेगा। (4) नेस्टेड उपयोग पृष्ठ भी संभव हैं और डिवाइस के सामान्य कार्य के भीतर एक निश्चित पहलू के बारे में अधिक जानकारी देते हैं। इस स्थिति में, दो इनपुट आइटम समूहीकृत होते हैं और माउस के बटन के अनुरूप होते हैं। एक इनपुट आइटम आइटम के लिए डेटा फ़ील्ड की संख्या (रिपोर्ट गणना आइटम), डेटा फ़ील्ड का आकार (रिपोर्ट आकार आइटम) और प्रत्येक डेटा फ़ील्ड के लिए संभावित मान (उपयोग न्यूनतम और अधिकतम, तार्किक न्यूनतम और अधिकतम आइटम) के संदर्भ में माउस के तीन बटन (दाएं, बाएं और पहिया) को परिभाषित करता है। अन्य इनपुट आइटम एक 13-बिट स्थिरांक है इस उपयोग पृष्ठ के लिए, इनपुट आइटम दो उपयोगों द्वारा निर्दिष्ट x- और y-अक्ष के अनुरूप डेटा फ़ील्ड का वर्णन करता है
सामान।
पिछले माउस रिपोर्ट डिस्क्रिप्टर की सामग्री का विश्लेषण करने के बाद, होस्ट का HID पार्सर, डिवाइस द्वारा किसी इंटरप्ट IN ट्रांसफ़र के साथ या GET_REPORT अनुरोध के प्रत्युत्तर में भेजे गए इनपुट रिपोर्ट डेटा की व्याख्या करने में सक्षम होता है। माउस रिपोर्ट डिस्क्रिप्टर से संबंधित इनपुट रिपोर्ट डेटा, चित्र में दिखाया गया है - होस्ट HID पार्सर से रिपोर्ट डिस्क्रिप्टर सामग्री View is
कॉपीराइट © 2025 सिलिकॉन प्रयोगशालाएँ। सभी अधिकार सुरक्षित।
32/174
ऊपरview
नीचे दी गई तालिका में दिखाया गया है। रिपोर्ट डेटा का कुल आकार 4 बाइट्स है। एक ही एंडपॉइंट पर विभिन्न प्रकार की रिपोर्ट भेजी जा सकती हैं। विभिन्न प्रकार की रिपोर्टों में अंतर करने के उद्देश्य से, डेटा रिपोर्ट में 1-बाइट रिपोर्ट आईडी उपसर्ग जोड़ा जाता है। यदि पूर्व में रिपोर्ट आईडी का उपयोग किया गया था, तोample of the mouse report, the total size of the report data would be 5 bytes.
Table – Input Report Sent to Host and Corresponding to the State of a 3 Buttons Mouse
बिट ऑफ़सेट
0 1 2 3 16 24
बिट गणना 1 1 1 13 8 8
Description Button 1 (left button). Button 2 (right button). Button 3 (wheel button). Not used. Position on axis X. Position on axis Y.
A Physical descriptor indicates the part or parts of the body intended to activate a control or controls. An application may use this information to assign a functionality to the control of a device. A Physical descriptor is an optional class-specific descriptor and most devices have little gain for using it. Refer to <Device Class Definition for Human Interface Devices (HID) Version 1.11= section 6.2.3 for more details about this descriptor.
कोर से USB डिवाइस HID क्लास संसाधन की आवश्यकता
Each time you add a HID class instance to a USB configuration via a call to the function sl_usbd_hid_add_to_configuration() , the following resources will be allocated from the core.
संसाधन
Interfaces Alternate interfaces Endpoints Interface groups
मात्रा
1 1 1 (2 यदि इंटरप्ट आउट एंडपॉइंट सक्षम है) 0
Note that those numbers are per configuration. When setting up your SL_USBD_INTERFACE_QUANTITY , SL_USBD_ALT_INTERFACE_QUANTITY , SL_USBD_INTERFACE_GROUP_QUANTITY and SL_USBD_DESCRIPTOR_QUANTITY configuration values, don’t forget to take into account on how many configurations the class will be added. For the SL_USBD_OPEN_ENDPOINTS_QUANTITY configuration value, since endpoints are opened only when a configuration is set by the host, you just need to take into account the number of needed endpoints for a class instance.
USB डिवाइस HID क्लास कॉन्फ़िगरेशन
Two groups of configuration parameters are used to configure the HID class:
USB डिवाइस HID क्लास अनुप्रयोग-विशिष्ट कॉन्फ़िगरेशन USB डिवाइस HID क्लास इंस्टेंस कॉन्फ़िगरेशन
USB डिवाइस HID क्लास अनुप्रयोग-विशिष्ट कॉन्फ़िगरेशन
सबसे पहले, सिलिकॉन लैब्स USB डिवाइस HID क्लास मॉड्यूल का उपयोग करने के लिए, HID कंपाइल-टाइम कॉन्फ़िगरेशन परिभाषाओं को अपनी एप्लिकेशन आवश्यकताओं के अनुसार समायोजित करें। इन्हें sl_usbd_core_config.h हेडर के अंदर पुनर्समूहित किया गया है। file HID अनुभाग के अंतर्गत। इन्हें दो भागों में विभाजित किया जा सकता है: मात्रा कॉन्फ़िगरेशन और HID कार्य कॉन्फ़िगरेशन। मात्रा कॉन्फ़िगरेशन का उद्देश्य USB डिवाइस मॉड्यूल को यह सूचित करना है कि कितने USB HID ऑब्जेक्ट आवंटित करने हैं।
नीचे दी गई तालिका प्रत्येक कॉन्फ़िगरेशन परिभाषा का वर्णन करती है।
Table – USB Device HID Configuration Defines
कॉपीराइट © 2025 सिलिकॉन प्रयोगशालाएँ। सभी अधिकार सुरक्षित।
33/174
ऊपरview
कॉन्फ़िगरेशन नाम
SL_USBD_HID_CL ASS_I NSTANCE_QUANTITY
SL_USBD_HID_CONFIG URATION_QUANTITY
SL_USBD_HID_रिपोर्ट_ ID_QUANTITY
SL_USBD_HID_PUSH_P OP_ITEM_QUANTITY
SL_USBD_HID_TIMER_T ASK_STACK_SIZE
SL_USBD_HID_TIMER_T ASK_PRIORITY
विवरण
Number of class instances you will allocate via a call to the function
sl_usbd_hid_create_instance() .
कॉन्फ़िगरेशन की संख्या। HID क्लास इंस्टेंस को एक या अधिक aaaa कॉन्फ़िगरेशन में जोड़ा जा सकता है, जो sl_usbd_hid_add_to_configuration() फ़ंक्शन का उपयोग करके किया जाता है। आवंटित करने के लिए रिपोर्ट आईडी की कुल संख्या कॉन्फ़िगर करता है।
आवंटित करने के लिए पुश/पॉप आइटमों की कुल संख्या कॉन्फ़िगर करता है।
टाइमर कार्य सभी टाइमर-आधारित HID संचालनों को संभालता है। यह कॉन्फ़िगरेशन आपको स्टैक आकार (बाइट्स की संख्या में) निर्धारित करने की अनुमति देता है। HID कार्य की प्राथमिकता। यह CMSIS-RTOS2 प्राथमिकता है।
डिफ़ॉल्ट मान
2 1 2 0 2048
osPriorityHigh
USB डिवाइस HID क्लास इंस्टेंस कॉन्फ़िगरेशन क्लास इंस्टेंस निर्माण उपवर्ग
protocol country_code
interval_in और interval_out p_hid_callback HID क्लास रिपोर्ट डिस्क्रिप्टर Exampयह अनुभाग HID वर्ग इंस्टैंस से संबंधित कॉन्फ़िगरेशन को परिभाषित करता है।
क्लास इंस्टेंस निर्माण
HID क्लास इंस्टेंस बनाना aaa sl_usbd_hid_create_instance() फ़ंक्शन को कॉल करके किया जाता है, जो कई कॉन्फ़िगरेशन तर्कों को कॉल करता है, जिनका वर्णन नीचे किया गया है।
उपवर्ग
HID उपवर्ग का कोड। संभावित मान हैं:
SL_USBD_HID_SUBCL ASS_NONE SL_USBD_HID_SUBCL ASS_BOOT
बूट उपवर्ग का उपयोग करने वाले HID उपकरण को मानक रिपोर्ट प्रारूपों का उपयोग करना होगा। उपवर्ग कोडों के बारे में अधिक जानकारी के लिए, HID विनिर्देशन संशोधन 1.11 का खंड 4.2 देखें।
शिष्टाचार
Protocol used by the HID device. Possible values are:
SL_USBD_HID_PROTOCOL_NONE SL_USBD_HID_PROTOCOL_KBD SL_USBD_HID_PROTOCOL_MOUSE
यदि आपका HID फ़ंक्शन माउस है, तो प्रोटोकॉल SL_USBD_HID_PROTOCOL_MOUSE पर सेट होना चाहिए। यदि यह कीबोर्ड है, तो इसे SL_USBD_HID_PROTOCOL_KBD पर सेट किया जाना चाहिए। अन्यथा, प्रोटोकॉल SL_USBD_HID_PROTOCOL_NONE पर सेट होना चाहिए। उपवर्ग कोड के बारे में अधिक जानकारी के लिए, HID विनिर्देश संशोधन 1.11 का खंड 4.3 देखें।
कंट्री कोड
ID of the country code. Possible values are:
SL_USBD_HID_COUNTRY_CODE_NOT_SUPPORTED
कॉपीराइट © 2025 सिलिकॉन प्रयोगशालाएँ। सभी अधिकार सुरक्षित।
34/174
ऊपरview
SL_USBD_HID_COUNTRY_CODE_ARABIC SL_USBD_HID_COUNTRY_CODE_BELGIAN SL_USBD_HID_COUNTRY_CODE_CANADIAN_BILINGUAL SL_USBD_HID_COUNTRY_CODE_CANADIAN_FRENCH SL_USBD_HID_COUNTRY_CODE_CZECH_REPUBLIC SL_USBD_HID_COUNTRY_CODE_DANISH SL_USBD_HID_COUNTRY_CODE_FINNISH SL_USBD_HID_COUNTRY_CODE_FRENCH SL_USBD_HID_COUNTRY_CODE_GERMAN SL_USBD_HID_COUNTRY_CODE_GREEK SL_USBD_HID_COUNTRY_CODE_HEBREW SL_USBD_HID_COUNTRY_CODE_HUNGARY SL_USBD_HID_COUNTRY_CODE_INTERNATIONAL SL_USBD_HID_COUNTRY_CODE_ITALIAN SL_USBD_HID_COUNTRY_CODE_JAPAN_KATAKANA SL_USBD_HID_COUNTRY_CODE_KOREAN SL_USBD_HID_COUNTRY_CODE_L ATIN_AMERICAN SL_USBD_HID_COUNTRY_CODE_NETHERL ANDS_DUTCH SL_USBD_HID_COUNTRY_CODE_NORWEGIAN SL_USBD_HID_COUNTRY_CODE_PERSIAN_FARSI SL_USBD_HID_COUNTRY_CODE_POL AND 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_स्वीडिश 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_ताइवान SL_USBD_HID_COUNTRY_CODE_तुर्की_Q SL_USBD_HID_COUNTRY_CODE_UK SL_USBD_HID_COUNTRY_CODE_US SL_USBD_HID_COUNTRY_CODE_YUG OSL AVIA SL_USBD_HID_COUNTRY_CODE_TURKISH_F
देश कोड यह बताता है कि हार्डवेयर किस देश के लिए स्थानीयकृत है। अधिकांश हार्डवेयर स्थानीयकृत नहीं होते हैं और इसलिए यह वैकल्पिक मान SL_USBD_HID_COUNTRY_CODE_NOT_SUPPORTED (0) होगा। हालाँकि, कीबोर्ड इस फ़ील्ड का उपयोग की-कैप्स की भाषा को इंगित करने के लिए कर सकते हैं।
देश कोड के बारे में अधिक जानकारी के लिए, HID विनिर्देश संशोधन 1.11 का खंड 6.2.1 देखें।
अंतराल_इन और अंतराल_आउट
interval_in and interval_out represent the polling interval of the IN interrupt endpoint and the OUT interrupt endpoint.
यह एंडपॉइंट के पोलिंग अंतराल को मिलीसेकंड में दर्शाता है। यह मान इस बात पर निर्भर करता है कि आपका डिवाइस कितनी बार होस्ट के लिए नई रिपोर्ट जनरेट कर सकता है। उदाहरण के लिए, यदि हर 16 मिलीसेकंड में एक रिपोर्ट जनरेट होती है, तो अंतराल 16 या उससे कम होना चाहिए।
मान 2 की घात (1, 2, 4, 8, 16, आदि) होना चाहिए।
यदि ctrl_rd_en को true पर सेट किया जाता है तो interval_out v lue को अनदेखा कर दिया जाता है।
p_hid_कॉलबैक
aaaa p_hid_callback, sl_usbd_hid_callbacks_t प्रकार की संरचना का सूचक है। इसका उद्देश्य HID Clss को कॉलबैक फ़ंक्शनों का एक सेट प्रदान करना है जिसे HID ईवेंट होने पर कॉल किया जा सके।
कॉपीराइट © 2025 सिलिकॉन प्रयोगशालाएँ। सभी अधिकार सुरक्षित।
35/174
ऊपरview
सभी कॉलबैक अनिवार्य नहीं हैं और जब कॉलबैक की आवश्यकता न हो, तो कॉलबैक संरचना चर में एक शून्य पॉइंटर (NULL) पास किया जा सकता है। नीचे दी गई तालिका इस कॉन्फ़िगरेशन संरचना में उपलब्ध प्रत्येक कॉन्फ़िगरेशन फ़ील्ड का वर्णन करती है।
तालिका – sl_usbd_hid_callbacks_t कॉन्फ़िगरेशन संरचना
फ़ील्ड
विवरण
Function Signature
.सक्षम .अक्षम .get_report_desc
.get_phy_desc
.set_output_report .get_feature_report .set_feature_report
USB क्लास इंस्टेंस के सफलतापूर्वक सक्षम होने पर कॉल किया जाता है. USB क्लास इंस्टेंस के अक्षम होने पर कॉल किया जाता है.
आपके रिपोर्ट डिस्क्रिप्टर को पास करने के लिए HID इंस्टेंस निर्माण के दौरान कॉल किया जाता है। आपके प्रत्येक HID फ़ंक्शन के लिए, आपको एक रिपोर्ट डिस्क्रिप्टर प्रदान करना होगा। रिपोर्ट डिस्क्रिप्टर होस्ट को इंगित करता है कि डिवाइस द्वारा भेजी जाने वाली आवधिक रिपोर्ट को कैसे पार्स किया जाना चाहिए। अपना स्वयं का रिपोर्ट डिस्क्रिप्टर लिखना चुनौतीपूर्ण हो सकता है, और इसीलिए मदद के लिए कुछ संसाधन उपलब्ध हैं। यह एकमात्र अनिवार्य कॉलबैक फ़ंक्शन है। आपके भौतिक डिस्क्रिप्टर को पास करने के लिए HID इंस्टेंस निर्माण के दौरान कॉल किया जाता है। भौतिक डिस्क्रिप्टर एक डिस्क्रिप्टर है जो मानव शरीर के विशिष्ट भाग या भागों के बारे में जानकारी प्रदान करता है जो एक या अधिक नियंत्रणों को सक्रिय कर रहे हैं। भौतिक डिस्क्रिप्टर के बारे में अधिक जानकारी के लिए, HID विनिर्देश संशोधन 1.11 का खंड 6.2.3 देखें। भौतिक डिस्क्रिप्टर वैकल्पिक है और अधिकांश समय इसे अनदेखा कर दिया जाता है।
जब होस्ट आपके रिपोर्ट विवरणक में वर्णित सुविधा रिपोर्ट का अनुरोध करता है तो इसे कॉल किया जाता है।
जब होस्ट आपके रिपोर्ट विवरणक में वर्णित अनुसार कोई सुविधा रिपोर्ट सेट करता है तो इसे कॉल किया जाता है।
शून्य app_usbd_hid_enable(uint8_t class_nbr); शून्य app_usbd_hid_disable(uint8_t class_nbr); शून्य app_usbd_hid_get_report_desc(uint8_t class_nbr, const uint8_t *p_report_ptr, uint16_tp_report_len);
शून्य app_usbd_hid_get_phy_desc(uint8_t class_nbr, const uint8_t *p_report_ptr, uint16_tp_report_len);
void app_usbd_hid_set_output_report(uint8_t class_nbr, uint8_t report_id, uint8_t *p_report_buf, uint16_t report_len); void app_usbd_hid_get_feature_report(uint8_t class_nbr, uint8_t report_id, uint8_t *p_report_buf, uint16_t report_len); void app_usbd_hid_set_feature_report(uint8_t class_nbr, uint8_t report_id, uint8_t *p_report_buf, uint16_t report_len);
.get_protocol
वर्तमान सक्रिय प्रोटोकॉल को पुनः प्राप्त करता है.
void app_usbd_hid_get_protocol(uint8_t class_nbr, uint8_t *p_protocol);
.set_protocol
Sets current active protocol.
void app_usbd_hid_set_protocol(uint8_t class_nbr, uint8_t protocol);
HID Class Report Descriptor Example
सिलिकॉन लैब्स की एचआईडी क्लासample एप्लिकेशन एक पूर्व प्रदान करता हैampएक साधारण माउस के लिए रिपोर्ट डिस्क्रिप्टर का उदाहरण।ample below shows a mouse report descriptor.
Example – माउस रिपोर्ट डिस्क्रिप्टर
स्थिर uint8_t app_usbd_hid_report_desc[] = {
(1) (2)
SL_USBD_HID_GLOBAL_USAGE_PAGE + 1, SL_USBD_HID_USAGE_PAGE_GENERIC_DESKTOP_CONTROLS,
SL_USBD_HID_LOCAL_USAGE + 1, SL_USBD_HID_CA_MOUSE,
(3)
कॉपीराइट © 2025 सिलिकॉन प्रयोगशालाएँ। सभी अधिकार सुरक्षित।
36/174
ऊपरview
SL_USBD_HID_MAIN_COLLECTION +1, SL_USBD_HID_COLLECTION_APPLICATION,(4)
SL_USBD_HID_LOCAL_USAGE +1, SL_USBD_HID_CP_POINTER,(5)
SL_USBD_HID_MAIN_COLLECTION +1, SL_USBD_HID_COLLECTION_PHYSICAL,(6)
SL_USBD_HID_GLOBAL_USAGE_PAGE +1, SL_USBD_HID_USAGE_PAGE_BUTTON,(7)
SL_USBD_HID_LOCAL_USAGE_MIN +1,0 01,
SL_USBD_HID_LOCAL_USAGE_MAX +1,0 03,
SL_USBD_HID_GLOBAL_LOG_MIN +1,0 00,
SL_USBD_HID_GLOBAL_LOG_MAX +1,0 01,
SL_USBD_HID_GLOBAL_REPORT_COUNT +1,0 03,
SL_USBD_HID_GLOBAL_REPORT_SIZE +1,0 01,
SL_USBD_HID_MAIN_INPUT +1, SL_USBD_HID_MAIN_DATA |
SL_USBD_HID_MAIN_VARIABLE |
SL_USBD_HID_MAIN_ABSOLUTE,
SL_USBD_HID_GLOBAL_REPORT_COUNT +1,0 01,(8)
SL_USBD_HID_GLOBAL_REPORT_SIZE +1,0 0D,
SL_USBD_HID_MAIN_INPUT +1, SL_USBD_HID_MAIN_CONSTANT,(9)
SL_USBD_HID_GLOBAL_USAGE_PAGE +1, SL_USBD_HID_USAGE_PAGE_GENERIC_DESKTOP_CONTROLS,
SL_USBD_HID_LOCAL_USAGE +1, SL_USBD_HID_DV_X,
SL_USBD_HID_LOCAL_USAGE +1, SL_USBD_HID_DV_Y,
SL_USBD_HID_GLOBAL_LOG_MIN +1,0 81,
SL_USBD_HID_GLOBAL_LOG_MAX +1,0 7F,
SL_USBD_HID_GLOBAL_REPORT_SIZE +1,0 08,
SL_USBD_HID_GLOBAL_REPORT_COUNT +1,0 02,
SL_USBD_HID_MAIN_INPUT +1, SL_USBD_HID_MAIN_DATA |
SL_USBD_HID_MAIN_VARIABLE |
SL_USBD_HID_MAIN_रिलेटिव,
SL_USBD_HID_MAIN_ENDसंग्रह,(10)
SL_USBD_HID_MAIN_ENDसंग्रह
(11)};
(1) The table representing a mouse report descriptor is initialized in such way that each line corresponds to a short item. The latter is formed from a 1-byte prefix and a 1-byte data. Refer to <Device Class Definition for Human Interface Devices (HID) Version 1.11=, sections 5.3 and 6.2.2.2 for more details about short items format. This table content corresponds to the mouse report descriptor content viewचित्र में होस्ट HID पार्सर द्वारा संपादित - होस्ट HID पार्सर से रिपोर्ट डिस्क्रिप्टर सामग्री View.
(2) जेनेरिक डेस्कटॉप उपयोग पृष्ठ का उपयोग किया जाता है।
(3) जेनेरिक डेस्कटॉप उपयोग पृष्ठ के भीतर, उपयोग tag यह दर्शाता है कि नियंत्रणों का यह समूह माउस को नियंत्रित करने के लिए है। एक माउस संग्रह में आमतौर पर दो अक्ष (X और Y) और एक, दो या तीन बटन होते हैं।
(4) माउस संग्रह शुरू हो गया है.
(5) माउस संग्रह के भीतर, एक उपयोग tag अधिक विशिष्ट रूप से यह सुझाव देता है कि माउस नियंत्रण पॉइंटर संग्रह से संबंधित हैं। पॉइंटर संग्रह अक्षों का एक संग्रह होता है जो किसी एप्लिकेशन के लिए उपयोगकर्ता के इरादों को निर्देशित, इंगित या इंगित करने के लिए एक मान उत्पन्न करता है।
(6) पॉइंटर संग्रह शुरू हो गया है.
(7) बटन उपयोग पृष्ठ तीन 1-बिट फ़ील्ड से बना एक इनपुट आइटम परिभाषित करता है। प्रत्येक 1-बिट फ़ील्ड क्रमशः माउस के बटन 1, 2 और 3 का प्रतिनिधित्व करता है और 0 या 1 का मान लौटा सकता है।
(8) बटन उपयोग पृष्ठ के लिए इनपुट आइटम 13 अन्य बिट्स के साथ पैड किया गया है।
(9) Another Generic Desktop Usage Page is indicated for describing the mouse position with the axes X and Y. The Input item is composed of two 8-bit fields whose value can be between -127 and 127.
(10) पॉइंटर संग्रह बंद है.
(11) माउस संग्रह बंद है.
USB.org HID पृष्ठ
कॉपीराइट © 2025 सिलिकॉन प्रयोगशालाएँ। सभी अधिकार सुरक्षित।
37/174
ऊपर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 डिवाइस HID क्लास एप्लिकेशन विशिष्ट कॉन्फ़िगरेशन देखें।
Example – sl_usbd_hid_init() को कॉल करना
sl_status_t स्थिति;
स्थिति = sl_usbd_hid_init(); यदि (स्थिति ! SL_STATUS_OK) { /* एक त्रुटि हुई। त्रुटि प्रबंधन यहाँ जोड़ा जाना चाहिए। */
}
अपने डिवाइस में USB डिवाइस HID क्लास इंस्टेंस जोड़ना
To add HID class functionality to your device, you must create an instance, then add it to your device’s configuration(s).
HID क्लास इंस्टेंस बनाना
Create a HID class instance by calling the function sl_usbd_hid_create_instance() . The exampनीचे दिया गया विवरण दिखाता है कि डिफ़ॉल्ट तर्कों का उपयोग करके sl_usbd_hid_create_instance() के माध्यम से एक सरल माउस फ़ंक्शन कैसे बनाया जाता है। sl_usbd_hid_create_instance() को पास करने के लिए कॉन्फ़िगरेशन तर्कों के बारे में अधिक जानकारी के लिए, USB डिवाइस HID क्लास इंस्टेंस कॉन्फ़िगरेशन देखें।
Example – sl_usbd_hid_create_instance() के माध्यम से माउस फ़ंक्शन जोड़ना
कॉपीराइट © 2025 सिलिकॉन प्रयोगशालाएँ। सभी अधिकार सुरक्षित।
38/174
ऊपरview
/* वैश्विक स्थिरांक. */ स्थिर const uint8_t app_usbd_hid_mouse_report_desc[] = {
SL_USBD_HID_GLOBAL_USAGE_PAGE + 1, SL_USBD_HID_USAGE_PAGE_GENERIC_DESKTOP_CONTROLS, SL_USBD_HID_LOCAL_USAGE + 1, SL_USBD_HID_CA_MOUSE, SL_USBD_HID_MAIN_COLLECTION + 1, SL_USBD_HID_COLLECTION_APPLICATION, SL_USBD_HID_LOCAL_USAGE + 1, SL_USBD_HID_CP_POINTER, SL_USBD_HID_MAIN_COLLECTION + 1, SL_USBD_HID_COLLECTION_PHYSICAL, SL_USBD_HID_GLOBAL_USAGE_PAGE + 1, SL_USBD_HID_USAGE_PAGE_BUTTON, SL_USBD_HID_LOCAL_USAGE_MIN + 1, 0 01, SL_USBD_HID_LOCAL_USAGE_MAX + 1, 0 03, SL_USBD_HID_GLOBAL_LOG_MIN + 1, 0 00, SL_USBD_HID_GLOBAL_LOG_MAX + 1, 0 01, SL_USBD_HID_GLOBAL_REPORT_COUNT + 1, 0 03, SL_USBD_HID_GLOBAL_REPORT_SIZE + 1, 0 01, SL_USBD_HID_MAIN_INPUT + 1, SL_USBD_HID_MAIN_DATA | SL_USBD_HID_MAIN_VARIABLE | SL_USBD_HID_MAIN_ABSOLUTE, SL_USBD_HID_GLOBAL_REPORT_COUNT + 1, 0 01, SL_USBD_HID_GLOBAL_REPORT_SIZE + 1, 0 0D, SL_USBD_HID_MAIN_INPUT + 1, SL_USBD_HID_MAIN_CONSTANT, SL_USBD_HID_GLOBAL_USAGE_PAGE + 1, SL_USBD_HID_USAGE_PAGE_GENERIC_DESKTOP_CONTROLS, SL_USBD_HID_LOCAL_USAGE + 1, SL_USBD_HID_DV_X, SL_USBD_HID_LOCAL_USAGE + 1, SL_USBD_HID_DV_Y, SL_USBD_HID_GLOBAL_LOG_MIN + 1, 0 81, SL_USBD_HID_GLOBAL_LOG_MAX + 1, 0 7F, SL_USBD_HID_GLOBAL_REPORT_SIZE + 1, 0 08, SL_USBD_HID_GLOBAL_REPORT_COUNT + 1, 0 02, SL_USBD_HID_MAIN_INPUT + 1, SL_USBD_HID_MAIN_DATA | SL_USBD_HID_MAIN_VARIABLE | SL_USBD_HID_MAIN_RELATIVE, SL_USBD_HID_MAIN_ENDCOLLECTION, SL_USBD_HID_MAIN_ENDCOLLECTION };
/* स्थानीय चर.*/ uint8_t class_nbr; sl_status_t स्थिति;
sl_usbd_hid_callbacks_t app_usbd_hid_callbacks = { शून्य, शून्य, app_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)
{ (शून्य) class_nbr;
*p_report_ptr = app_usbd_hid_mouse_report_desc; *p_report_len = sizeof(app_usbd_hid_mouse_report_desc); }
status = 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 सिलिकॉन प्रयोगशालाएँ। सभी अधिकार सुरक्षित।
39/174
ऊपरview
/* एक त्रुटि हुई। त्रुटि प्रबंधन यहाँ जोड़ा जाना चाहिए। */}
अपने डिवाइस के कॉन्फ़िगरेशन में HID क्लास इंस्टेंस जोड़ना HID क्लास इंस्टेंस बनाने के बाद, आप फ़ंक्शन को कॉल करके इसे कॉन्फ़िगरेशन में जोड़ सकते हैं
sl_usbd_hid_add_to_configuration() .
भूतपूर्वampनीचे दिया गया चित्र दिखाता है कि sl_usbd_hid_add_to_configuration() को कैसे कॉल करें।
Example – sl_usbd_hid_add_to_configuration() को कॉल करना
sl_status_t स्थिति;
sl_usbd_hid_add_to_configuration(class_nbr,
(1)
(2)
if (status ! SL_STATUS_OK) {
/* An error occurred. Error handling should be added here. */
}
(1) sl_usbd_hid_create_instance() द्वारा लौटाए गए कॉन्फ़िगरेशन में जोड़ने के लिए क्लास संख्या। (2) कॉन्फ़िगरेशन संख्या (यहां इसे पूर्ण-गति कॉन्फ़िगरेशन में जोड़ना)।
Communicating Using the USB Device HID Class
क्लास इंस्टेंस कम्युनिकेशन सिंक्रोनस कम्युनिकेशन क्लास इंस्टेंस कम्युनिकेशन 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 पढ़ें और लिखें
__संरेखित(4) uint8_t rx_buf[2];
__संरेखित(4) uint8_t tx_buf[2];
uint32_t
xfer_लेन;
sl_स्थिति_t
स्थिति;
स्थिति = sl_usbd_hid_read_sync(class_nbr,
(1)
(शून्य *)rx_buf,
(2)
2यू,
0यू,
(3)
&xfer_len);
if (status ! SL_STATUS_OK) {
/* An error occurred. Error handling should be added here. */
}
कॉपीराइट © 2025 सिलिकॉन प्रयोगशालाएँ। सभी अधिकार सुरक्षित।
40/174
ऊपरview
स्थिति =sl_usbd_hid_read_sync(class_nbr,(1)(void *)rx_buf,(2)2u,0u,(3)&xfer_len);if(स्थिति ! SL_STATUS_OK){/* एक त्रुटि हुई। त्रुटि प्रबंधन यहाँ जोड़ा जाना चाहिए। */}
स्थिति =sl_usbd_hid_write_sync(class_nbr,(1)(void *)tx_buf,(4)2u,0u,(3)&xfer_len);if(स्थिति ! SL_STATUS_OK){/* एक त्रुटि हुई। त्रुटि प्रबंधन यहाँ जोड़ा जाना चाहिए। */}
(1) sl_usbd_hid_create_instance() से निर्मित क्लास इंस्टेंस संख्या, HID क्लास के लिए स्थानांतरण को उचित इंटरप्ट OUT या IN एंडपॉइंट पर रूट करने के लिए एक आंतरिक संदर्भ प्रदान करती है।
(2) एप्लिकेशन को यह सुनिश्चित करना होगा कि फ़ंक्शन को प्रदान किया गया बफ़र सभी डेटा को समायोजित करने के लिए पर्याप्त बड़ा हो। अन्यथा, सिंक्रोनाइज़ेशन समस्याएँ हो सकती हैं। आंतरिक रूप से, रीड ऑपरेशन या तो कंट्रोल एंडपॉइंट या इंटरप्ट एंडपॉइंट के साथ किया जाता है, जो sl_usbd_hid_create_instance() को कॉल करते समय सेट किए गए कंट्रोल रीड फ़्लैग पर निर्भर करता है।
(3) अनंत अवरोधन की स्थिति से बचने के लिए, मिलीसेकंड में व्यक्त एक टाइमआउट निर्दिष्ट किया जा सकता है। 809 का मान एप्लिकेशन कार्य को हमेशा के लिए प्रतीक्षारत कर देता है।
(4) अनुप्रयोग आरंभीकृत संचारित बफर प्रदान करता है।
HID आवधिक इनपुट रिपोर्ट कार्य
To save bandwidth, the host has the ability to silence reports from an interrupt IN endpoint by limiting the reporting frequency. To do so, the host must send the SET_IDLE request. The HID class implemented by Silicon Labs contains an internal task that respects the reporting frequency limitation that you can apply to one or several input reports. Figure Periodic Input Reports Task shows the functioning of the periodic input reports tasks.
Figure – Periodic Input Reports Task
(1) डिवाइस को एक SET_IDLE अनुरोध प्राप्त होता है। यह अनुरोध किसी दी गई रिपोर्ट आईडी के लिए निष्क्रिय अवधि निर्दिष्ट करता है। SET_IDLE अनुरोध के बारे में अधिक जानकारी के लिए, देखें
(2) A report ID structure (allocated during the HID class initialization phase) is updated with the idle duration. An idle duration counter is initialized with the idle duration value. The report ID structure is inserted at the end of a linked list containing input reports ID structures. The idle duration value is expressed in 4-ms unit which gives a range of 4 to 1020 ms.
कॉपीराइट © 2025 सिलिकॉन प्रयोगशालाएँ। सभी अधिकार सुरक्षित।
41/174
ऊपरview
यदि निष्क्रिय अवधि इंटरप्ट IN समापन बिंदु के मतदान अंतराल से कम है, तो रिपोर्ट मतदान अंतराल पर तैयार की जाती हैं।
(3) हर 4 मिलीसेकंड पर, आवधिक इनपुट रिपोर्ट कार्य इनपुट रिपोर्ट आईडी सूची ब्राउज़ करता है। प्रत्येक इनपुट रिपोर्ट आईडी के लिए, कार्य दो संभावित कार्यों में से एक करता है। कार्य अवधि की अवधि निष्क्रिय अवधि के लिए प्रयुक्त 4 मिलीसेकंड इकाई से मेल खाती है। यदि होस्ट द्वारा कोई SET_IDLE अनुरोध नहीं भेजा गया है, तो इनपुट रिपोर्ट आईडी सूची रिक्त है और कार्य के पास संसाधित करने के लिए कुछ नहीं है। कार्य केवल उन रिपोर्ट आईडी को संसाधित करता है जो 0 से भिन्न हैं और जिनकी निष्क्रिय अवधि 0 से अधिक है।
(4) किसी दिए गए इनपुट रिपोर्ट आईडी के लिए, कार्य यह सत्यापित करता है कि निष्क्रिय अवधि समाप्त हो गई है या नहीं। यदि निष्क्रिय अवधि समाप्त नहीं हुई है, तो काउंटर कम हो जाता है और होस्ट को कोई इनपुट रिपोर्ट नहीं भेजी जाती है।
(5) यदि निष्क्रिय अवधि समाप्त हो गई है (अर्थात, निष्क्रिय अवधि काउंटर शून्य पर पहुंच गया है), तो इंटरप्ट IN एंडपॉइंट के माध्यम से sl_usbd_hid_write_sync() फ़ंक्शन को कॉल करके होस्ट को एक इनपुट रिपोर्ट भेजी जाती है।
(6) टास्क द्वारा भेजा गया इनपुट रिपोर्ट डेटा, रिपोर्ट विवरणक में वर्णित प्रत्येक इनपुट रिपोर्ट के लिए आवंटित आंतरिक डेटा बफ़र से आता है। एक एप्लिकेशन टास्क इनपुट रिपोर्ट भेजने के लिए sl_usbd_hid_write_sync() फ़ंक्शन को कॉल कर सकता है। इनपुट रिपोर्ट डेटा भेजने के बाद, sl_usbd_hid_write_sync(), इनपुट रिपोर्ट आईडी से संबद्ध आंतरिक बफ़र को अभी-अभी भेजे गए डेटा से अपडेट करता है। फिर, आवधिक इनपुट रिपोर्ट टास्क प्रत्येक निष्क्रिय अवधि बीत जाने के बाद और एप्लिकेशन टास्क द्वारा आंतरिक बफ़र में डेटा अपडेट होने तक हमेशा वही इनपुट रिपोर्ट डेटा भेजता रहता है। आवधिक इनपुट रिपोर्ट टास्क द्वारा किए गए ट्रांसमिशन के ठीक समय पर कोई संशोधन होने की स्थिति में इनपुट रिपोर्ट आईडी डेटा के दूषित होने से बचने के लिए कुछ लॉकिंग मैकेनिज़्म मौजूद है।
कॉपीराइट © 2025 सिलिकॉन प्रयोगशालाएँ। सभी अधिकार सुरक्षित।
42/174
ऊपरview
ऊपरview
USB डिवाइस MSC क्लास
USB डिवाइस MSC क्लास ओवरview कोर से USB डिवाइस MSC क्लास संसाधन की आवश्यकताएं USB डिवाइस MSC क्लास कॉन्फ़िगरेशन USB डिवाइस MSC क्लास प्रोग्रामिंग गाइड USB डिवाइस MSC क्लास स्टोरेज ड्राइवर
यह खंड सिलिकॉन लैब्स यूएसबी डिवाइस द्वारा समर्थित मास स्टोरेज डिवाइस क्लास (MSC) का वर्णन करता है। MSC एक प्रोटोकॉल है जो USB डिवाइस और होस्ट के बीच सूचना के हस्तांतरण को सक्षम बनाता है। हस्तांतरित की जा रही सूचना वह सब कुछ है जिसे इलेक्ट्रॉनिक रूप से संग्रहीत किया जा सकता है, जैसे निष्पादन योग्य प्रोग्राम, स्रोत कोड, दस्तावेज़, चित्र, कॉन्फ़िगरेशन डेटा, या अन्य टेक्स्ट या संख्यात्मक डेटा। USB डिवाइस होस्ट के लिए एक बाहरी संग्रहण माध्यम के रूप में कार्य करता है, जिससे स्थानांतरण संभव होता है। fileड्रैग और ड्रॉप के माध्यम से।
A file प्रणाली परिभाषित करती है कि कैसे fileस्टोरेज मीडिया में व्यवस्थित होते हैं। USB मास स्टोरेज क्लास विनिर्देश के लिए किसी विशेष आवश्यकता की आवश्यकता नहीं होती है। file सिस्टम को अनुरूप उपकरणों पर उपयोग किया जाना है। इसके बजाय, यह स्मॉल कंप्यूटर सिस्टम इंटरफ़ेस (SCSI) पारदर्शी कमांड सेट का उपयोग करके डेटा के सेक्टरों को पढ़ने और लिखने के लिए एक सरल इंटरफ़ेस प्रदान करता है। इस प्रकार, ऑपरेटिंग सिस्टम USB ड्राइव को हार्ड ड्राइव की तरह मान सकते हैं, और इसे किसी भी प्रकार से फ़ॉर्मेट कर सकते हैं। file वे जिस प्रणाली को पसंद करते हैं।
The USB mass storage device class supports two transport protocols, as follows:
बल्क-ओनली ट्रांसपोर्ट (बीओटी) कंट्रोल/बल्क/इंटरप्ट (सीबीआई) ट्रांसपोर्ट (केवल फ्लॉपी डिस्क ड्राइव के लिए उपयोग किया जाता है)
The mass storage device class implements the SCSI transparent command set using the BOT protocol only, which signifies that only bulk endpoints will be used to transmit data and status information. The MSC implementation supports multiple logical units.
The MSC implementation is in compliance with the following specifications:
Universal Serial Bus Mass Storage Class Specification Overview, संशोधन 1.3 सितम्बर 5, 2008. यूनिवर्सल सीरियल बस मास स्टोरेज क्लास बल्क-ओनली ट्रांसपोर्ट, संशोधन 1.0 सितम्बर 31, 1999.
USB Device MSC aCl ss Overview
प्रोटोकॉल एंडपॉइंट्स क्लास रिक्वेस्ट्स स्मॉल कंप्यूटर सिस्टम इंटरफ़ेस (SCSI)
शिष्टाचार
इस खंड में, हम मास स्टोरेज क्लास के बल्क-ओनली ट्रांसपोर्ट (BOT) प्रोटोकॉल पर चर्चा करेंगे। बल्क-ओनली ट्रांसपोर्ट प्रोटोकॉल के तीन मुख्य भाग हैं:tagतों:
कमांड ट्रांसपोर्ट डेटा ट्रांसपोर्ट स्टेटस ट्रांसपोर्ट
Mass storage commands are sent by the host through a structure called the Command Block Wrapper (CBW). For commands requiring a data transport stagई, होस्ट सीबीडब्ल्यू की लंबाई और फ्लैग फ़ील्ड द्वारा निर्दिष्ट डिवाइस से बाइट्स की सटीक संख्या भेजने या प्राप्त करने का प्रयास करेगा। डेटा ट्रांसपोर्ट के बादtagई, होस्ट डिवाइस से कमांड स्टेटस रैपर (सीएसडब्ल्यू) प्राप्त करने का प्रयास करता है जो कमांड की स्थिति के साथ-साथ किसी भी डेटा अवशेष (यदि
कॉपीराइट © 2025 सिलिकॉन प्रयोगशालाएँ। सभी अधिकार सुरक्षित।
43/174
ऊपरview
any). For commands that do not include a data transport stage, the host attempts to receive the CSW directly after CBW is sent. The protocol is detailed in Figure – MSC Protocol.
चित्र – एमएससी प्रोटोकॉल
endpoints
डिवाइस की ओर, BOT विनिर्देश के अनुपालन में, MSC निम्नलिखित समापन बिंदुओं से बना होता है: नियंत्रण IN और OUT समापन बिंदुओं की एक जोड़ी जिसे डिफ़ॉल्ट समापन बिंदु कहा जाता है। बल्क IN और OUT समापन बिंदुओं की एक जोड़ी।
नीचे दी गई तालिका अंतिम बिंदुओं के विभिन्न उपयोगों को दर्शाती है।
Table – MSC Endpoint Usage
endpoint
नियंत्रण अंदर नियंत्रण बाहर थोक में थोक बाहर
दिशा
डिवाइस से होस्ट होस्ट से डिवाइस डिवाइस से होस्ट होस्ट से डिवाइस
प्रयोग
गणना और MSC वर्ग-विशिष्ट अनुरोध गणना और MSC वर्ग-विशिष्ट अनुरोध CSW और डेटा भेजें CBW और डेटा प्राप्त करें
कक्षा अनुरोध
There are two defined control requests for the MSC BOT protocol. These requests and their descriptions are detailed in the table below.
तालिका – मास स्टोरेज क्लास अनुरोध
कक्षा अनुरोध
केवल-बल्क मास स्टोरेज रीसेट
विवरण
इस अनुरोध का उपयोग मास स्टोरेज डिवाइस और उससे जुड़े इंटरफ़ेस को रीसेट करने के लिए किया जाता है। यह अनुरोध डिवाइस को अगला कमांड ब्लॉक प्राप्त करने के लिए तैयार करता है।
कॉपीराइट © 2025 सिलिकॉन प्रयोगशालाएँ। सभी अधिकार सुरक्षित।
44/174
ऊपरview
कक्षा अनुरोध
विवरण
Get Max This request is used to return the highest logical unit number (LUN) supported by the device. For exampले, ए
लुन
LUN 0 और LUN 1 वाला उपकरण 1 का मान लौटाएगा। एकल तार्किक इकाई वाला उपकरण 0 लौटाएगा या रुक जाएगा
request. The maximum value that can be returned is 15.
लघु कंप्यूटर सिस्टम इंटरफ़ेस SCSI
प्रोग्रामिंग इंटरफ़ेस स्तर पर, MSC डिवाइस मानक स्टोरेज-मीडिया संचार प्रोटोकॉल, जैसे SCSI और SFF-8020i (ATAPI) में से एक को लागू करता है। "प्रोग्रामिंग इंटरफ़ेस" निर्दिष्ट करता है कि कौन सा प्रोटोकॉल लागू किया गया है, और होस्ट ऑपरेटिंग सिस्टम को USB स्टोरेज डिवाइस के साथ संचार करने के लिए उपयुक्त डिवाइस ड्राइवर लोड करने में मदद करता है। SCSI, USB MSC स्टोरेज डिवाइस के साथ उपयोग किया जाने वाला सबसे आम प्रोटोकॉल है। हम MSC SCSI उपवर्ग के लिए एक कार्यान्वयन प्रदान करते हैं जिसका उपयोग हमारे GSDK उपयोगकर्ता बिना किसी समस्या के कर सकते हैं।
एससीएसआई कंप्यूटर और परिधीय उपकरणों के बीच संचार को संभालने के लिए मानकों का एक समूह है। इन मानकों में कमांड, प्रोटोकॉल, विद्युत इंटरफ़ेस और ऑप्टिकल इंटरफ़ेस शामिल हैं। स्टोरेज डिवाइस जो अन्य हार्डवेयर इंटरफेस, जैसे यूएसबी, का उपयोग करते हैं, डिवाइस/होस्ट जानकारी प्राप्त करने, डिवाइस के संचालन को नियंत्रित करने और स्टोरेज मीडिया में डेटा ब्लॉक स्थानांतरित करने के लिए एससीएसआई कमांड का उपयोग करते हैं।
SCSI कमांड कई प्रकार के उपकरणों और कार्यों को कवर करते हैं और इसलिए, उपकरणों को इन कमांडों के एक उपसमूह की आवश्यकता होती है। सामान्यतः, बुनियादी संचार के लिए निम्नलिखित कमांड आवश्यक हैं:
पूछताछ पढ़ने की क्षमता(10) पढ़ने की क्षमता(10) अनुरोध सेंस परीक्षण इकाई तैयार लिखने की क्षमता(10)
कोर से USB डिवाइस MSC क्लास संसाधन की आवश्यकता
Each time you add an MSC class instance to a USB configuration via the function sl_usbd_msc_add_to_configuration() , the following resources will be allocated from the core.
संसाधन
Interfaces Alternate interfaces Endpoints Interface groups
मात्रा
1 1 2 0
Note that those numbers are per configuration. When setting up your SL_USBD_INTERFACE_QUANTITY , SL_USBD_ALT_INTERFACE_QUANTITY , SL_USBD_INTERFACE_GROUP_QUANTITY and SL_USBD_DESCRIPTOR_QUANTITY configuration values, don’t forget to take into account on how many configurations the class will be added. For the SL_USBD_OPEN_ENDPOINTS_QUANTITY configuration value, since endpoints are opened only when a configuration is set by the host, you just need to take into account the number of needed endpoints for a class instance.
USB डिवाइस MSC क्लास कॉन्फ़िगरेशन
Two groups of configuration parameters are used to configure the MSC class:
USB Device MSC Class Application-Specific Configurations USB Device MSC Class Logical Unit Configuration
USB डिवाइस MSC क्लास अनुप्रयोग-विशिष्ट कॉन्फ़िगरेशन
क्लास संकलन-समय कॉन्फ़िगरेशन क्लास इंस्टेंस निर्माण
कॉपीराइट © 2025 सिलिकॉन प्रयोगशालाएँ। सभी अधिकार सुरक्षित।
45/174
ऊपरview
क्लास संकलन-समय कॉन्फ़िगरेशन
सिलिकॉन लैब्स USB डिवाइस MSC वर्ग और SCSI उपवर्ग sl_usbd_core_config.h में स्थित #defines के माध्यम से संकलन समय पर कॉन्फ़िगर करने योग्य हैं file.
तालिका – सामान्य कॉन्फ़िगरेशन स्थिरांक
कॉन्फ़िगरेशन नाम
विवरण
SL_USBD_MSC_CLASS_INST फ़ंक्शन को कॉल करके आपके द्वारा आवंटित किए जाने वाले क्लास इंस्टेंस की संख्या
ANCE_मात्रा
sl_usbd_msc_scsi_create_instance() .
SL_USBD_MSC_CONFIGURA Number of configuration to which a class instance can be added via a call to the
TION_मात्रा
फ़ंक्शन sl_usbd_msc_scsi_add_to_configuration() .
SL_USBD_MSC_LUN_QUANT प्रति वर्ग उदाहरण तार्किक इकाइयों की संख्या जिसे आप कॉल के माध्यम से जोड़ेंगे
अल्पसंख्यक
फ़ंक्शन sl_usbd_msc_scsi_lun_add() .
SL_USBD_MSC_SCSI_64_BIT 64 बिट्स के लॉजिकल ब्लॉक एड्रेस (LBA) के लिए समर्थन को सक्षम या अक्षम करता है।
_एलबीए_EN
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) पास किया जा सकता है।
The table below describes each configuration field available in this configuration structure.
तालिका – sl_usbd_msc_scsi_callbacks_t कॉन्फ़िगरेशन संरचना
फ़ील्ड
विवरण
।सक्षम
जब USB क्लास इंस्टैंस सफलतापूर्वक सक्षम हो जाता है तो कॉल किया जाता है।
.disable Called when the USB class instance is disabled.
.host_eject फ़ंक्शन तब कॉल किया जाता है जब एक तार्किक इकाई को होस्ट से बाहर निकाला जाता है।
Function Signature
शून्य app_usbd_msc_scsi_enable(uint8_t class_nbr);
शून्य app_usbd_msc_scsi_disable(uint8_t class_nbr); शून्य app_usbd_msc_scsi_host_eject(uint8_t class_nbr, uint8_t lu_nbr);
USB डिवाइस MSC क्लास लॉजिकल यूनिट कॉन्फ़िगरेशन
Adding a logical unit to an MSC class instance is done by calling the function sl_usbd_msc_lun_add() . This function takes one configuration argument that is described below.
p_lu_info
p_lu_info, sl_usbd_msc_scsi_lun_info_t प्रकार की संरचना की ओर एक सूचक है। इसका उद्देश्य MSC वर्ग को तार्किक इकाई की जानकारी प्रदान करना है।
The table below describes each configuration field available in this configuration structure.
Table – sl_usbd_msc_scsi_lun_info_t Configuration Structure
कॉपीराइट © 2025 सिलिकॉन प्रयोगशालाएँ। सभी अधिकार सुरक्षित।
46/174
ऊपरview
मैदान
विवरण
मैदान
.scsi_lun_api_p tr
विवरण
मीडिया ड्राइवर API का पॉइंटर जो इस लॉजिकल यूनिट को संभालेगा। स्टोरेज ड्राइवरों के बारे में अधिक जानकारी के लिए USB डिवाइस MSC क्लास स्टोरेज ड्राइवर देखें।
.ve nd o r_id _ p tr
.product_id_ptr
.p ro d uct_ re v isi on_level .is_ re ad _o nly
तार्किक इकाई की विक्रेता पहचान वाली स्ट्रिंग का पॉइंटर। स्ट्रिंग की अधिकतम लंबाई 8 वर्ण है। तार्किक इकाई की उत्पाद पहचान वाली स्ट्रिंग का पॉइंटर। स्ट्रिंग की अधिकतम लंबाई 16 वर्ण है। उत्पाद संशोधन स्तर।
ध्वज जो यह इंगित करता है कि क्या तार्किक इकाई को केवल पढ़ने योग्य के रूप में देखा जाना चाहिए view मेजबान का (सत्य) या नहीं (झूठ)।
USB डिवाइस MSC क्लास प्रोग्रामिंग गाइड
यह अनुभाग बताता है कि MSC वर्ग का उपयोग कैसे किया जाए।
USB डिवाइस MSC क्लास को प्रारंभ करना अपने डिवाइस में USB डिवाइस MSC SCSI क्लास इंस्टेंस जोड़ना USB डिवाइस MSC क्लास लॉजिकल यूनिट हैंडलिंग
USB डिवाइस MSC क्लास को प्रारंभ करना
अपने डिवाइस में MSC SCSI वर्ग कार्यक्षमता जोड़ने के लिए, पहले sl_usbd_msc_init() और sl_usbd_msc_scsi_init() फ़ंक्शन को कॉल करके MSC बेस क्लास और SCSI उपवर्ग को आरंभ करें।
भूतपूर्वample below shows how to call sl_usbd_msc_init() and sl_usbd_msc_scsi_init() .
Example – sl_usbd_msc_init() और sl_usbd_msc_scsi_init() को कॉल करना
sl_status_t स्थिति;
status = sl_usbd_msc_init(); if (status ! SL_STATUS_OK) { /* An error occurred. Error handling should be added here. */
}
स्थिति = sl_usbd_msc_scsi_init(); यदि (स्थिति ! SL_STATUS_OK) { /* एक त्रुटि हुई। त्रुटि प्रबंधन यहाँ जोड़ा जाना चाहिए। */
}
अपने डिवाइस में USB डिवाइस MSC SCSI क्लास इंस्टेंस जोड़ना
अपने डिवाइस में MSC SCSI क्लास कार्यक्षमता जोड़ने के लिए, पहले एक इंस्टेंस बनाएँ, फिर उसे अपने डिवाइस के कॉन्फ़िगरेशन में जोड़ें। आपको अपने इंस्टेंस में कम से कम एक लॉजिकल यूनिट जोड़नी होगी।
Creating an MSC SCSI Class Instance
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 सिलिकॉन प्रयोगशालाएँ। सभी अधिकार सुरक्षित।
47/174
ऊपरview
uint8_t class_nbr; sl_status_t स्थिति;
sl_usbd_msc_scsi_callbacks_t app_usbd_msc_scsi_callbacks = { .enable = NULL, .disable = NULL, .host_eject = NULL };
स्थिति = sl_usbd_msc_scsi_create_instance(&app_usbd_msc_scsi_callbacks,0 &class_nbr);
if (status ! SL_STATUS_OK) { /* An error occurred. Error handling should be added here. */ }
अपने डिवाइस के कॉन्फ़िगरेशन में MSC क्लास इंस्टेंस जोड़ना
MSC क्लास इंस्टेंस बनाने के बाद, आप फ़ंक्शन को कॉल करके इसे कॉन्फ़िगरेशन में जोड़ सकते हैं
sl_usbd_msc_add_to_configuration() .
भूतपूर्वampनीचे दिए गए लिंक में दिखाया गया है कि डिफ़ॉल्ट तर्कों का उपयोग करके sl_usbd_msc_scsi_add_to_configuration() को कैसे कॉल किया जाए।
Example – Calling sl_usbd_ msc_scsi_add_to_configuration()
sl_status_t स्थिति;
स्थिति = sl_usbd_msc_scsi_add_to_configuration(class_nbr,
(1)
config_nbr_fs);
(2)
if (status ! SL_STATUS_OK) {
/* An error occurred. Error handling should be added here. */
}
(1) Class number to add to the configuration returned by sl_usbd_msc_scsi_create_instance() . (32) Configuration number (here adding it to a Full-Speed configuration).
USB डिवाइस MSC क्लास लॉजिकल यूनिट हैंडलिंग
तार्किक इकाई जोड़ना, भंडारण माध्यम को जोड़ना/अलग करना
तार्किक इकाई जोड़ना
अपने MSC SCSI क्लास इंस्टेंस में लॉजिकल यूनिट जोड़ते समय, उसे किसी स्टोरेज माध्यम (RAMDisk, SD कार्ड, फ़्लैश मेमोरी, आदि) से जुड़ा होना चाहिए। MSC क्लास स्टोरेज मीडिया के साथ संचार करने के लिए एक स्टोरेज ड्राइवर का उपयोग करता है। लॉजिकल यूनिट जोड़ते समय इस ड्राइवर की आपूर्ति आवश्यक होगी।
भूतपूर्वampनीचे दिया गया चित्र दिखाता है कि sl_usbd_msc_scsi_lun_add() के माध्यम से एक तार्किक इकाई कैसे जोड़ें।
Example – sl_usbd_msc_scsi_lun_add() के माध्यम से एक तार्किक इकाई जोड़ना
कॉपीराइट © 2025 सिलिकॉन प्रयोगशालाएँ। सभी अधिकार सुरक्षित।
48/174
ऊपरview
sl_usbd_msc_scsi_lun_t *lu_object_ptr = शून्य;
sl_usbd_msc_scsi_lun_info_t lu_info;
sl_स्थिति_t
स्थिति;
lu_info.sl_usbd_msc_scsi_lun_api_t = &app_usbd_scsi_storage_block_device_api;
lu_info.vendor_id_ptr
= “Silicon Labs”;
lu_info.product_id_ptr
= “ब्लॉक डिवाइस एक्सampले”;
lu_info.product_revision_level = 0x1000u;
lu_info.is_read_only
= झूठ;
स्थिति = sl_usbd_msc_scsi_lun_add(class_nbr, &lu_info, &lu_object_ptr);
if (status ! SL_STATUS_OK) { /* An error occurred. Error handling should be added here. */ }
Attaching/Detaching a Storage Medium
लॉजिकल यूनिट जोड़ने के बाद, होस्ट की ओर से उपलब्ध होने के लिए एक स्टोरेज माध्यम संलग्न किया जाना चाहिए। MSC क्लास लॉजिकल यूनिट से स्टोरेज मीडिया के जुड़ाव को नियंत्रित करने के लिए दो फ़ंक्शन प्रदान करता है: sl_usbd_msc_scsi_lun_attach() और sl_usbd_msc_scsi_lun_detach() । ये फ़ंक्शन आपको स्टोरेज डिवाइस को हटाने का अनुकरण करने की अनुमति देते हैं ताकि यदि आवश्यक हो, तो एम्बेडेड एप्लिकेशन से पुनः एक्सेस प्राप्त किया जा सके।
भूतपूर्वampनीचे दिया गया चित्र दिखाता है कि sl_usbd_msc_scsi_lun_attach() और sl_usbd_msc_scsi_lun_detach() फ़ंक्शन का उपयोग कैसे करें।
Example – मीडिया अटैच/डिटैच
sl_status_t स्थिति;
स्थिति = sl_usbd_msc_scsi_lun_attach(lu_object_ptr); यदि (स्थिति ! SL_STATUS_OK) { /* एक त्रुटि हुई। त्रुटि प्रबंधन यहाँ जोड़ा जाना चाहिए। */
}
…
(1)
स्थिति = sl_usbd_msc_scsi_lun_detach(lu_object_ptr); यदि (स्थिति ! SL_STATUS_OK) {
/* An error occurred. Error handling should be added here. */
}
…
(2)
स्थिति = sl_usbd_msc_scsi_lun_attach(lu_object_ptr) यदि (स्थिति ! SL_STATUS_OK) {
/* An error occurred. Error handling should be added here. */
}
…
(3)
(1) इस क्षण से, यदि MSC डिवाइस किसी होस्ट से जुड़ा है, तो स्टोरेज मीडिया सुलभ है।
(2) यदि MSC डिवाइस किसी होस्ट से जुड़ा है, तो मीडिया अब अनुपलब्ध दिखाई देगा। इस समय, एम्बेडेड एप्लिकेशन से मीडिया पर ऑपरेशन किए जा सकते हैं।
(3) पुनः, यदि MSC डिवाइस होस्ट से कनेक्ट है, तो स्टोरेज मीडिया कनेक्टेड दिखाई देगा।
USB डिवाइस MSC क्लास स्टोरेज ड्राइवर
USB डिवाइस MSC क्लास को स्टोरेज माध्यम से संचार करने के लिए स्टोरेज ड्राइवर की आवश्यकता होती है। फ़िलहाल, सिलिकॉन लैब्स ड्राइवर उपलब्ध नहीं कराता है।
कॉपीराइट © 2025 सिलिकॉन प्रयोगशालाएँ। सभी अधिकार सुरक्षित।
49/174
ऊपरview
TPY ड्राइवर 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() के साथ लॉजिक l यूनिट जोड़ते हैं, तो p ssed s तर्क। संरचनाओं के बारे में अधिक जानकारी के लिए अनुभाग USB डिवाइस MSC SCSI API देखें। स्टोरेज ड्राइवर का कार्यान्वयन RAM में सेक्टरों की एक सरणी जितना सरल हो सकता है। सामान्य सेक्टर आकार (अर्थात, ब्लॉक आकार) मास स्टोरेज डिवाइस के लिए 512 और CD-ROM के लिए 2048 है।
कॉपीराइट © 2025 सिलिकॉन प्रयोगशालाएँ। सभी अधिकार सुरक्षित।
50/174
ऊपरview
ऊपरview
USB डिवाइस विक्रेता वर्ग
USB डिवाइस विक्रेता वर्ग खत्मview कोर USB डिवाइस विक्रेता वर्ग कॉन्फ़िगरेशन से USB डिवाइस विक्रेता वर्ग संसाधन की आवश्यकताएं USB डिवाइस विक्रेता वर्ग प्रोग्रामिंग गाइड विक्रेता वर्ग आपको विक्रेता-विशिष्ट डिवाइस बनाने की अनुमति देता है जो एक मालिकाना प्रोटोकॉल को लागू कर सकते हैं। यह होस्ट और डिवाइस के बीच डेटा स्थानांतरित करने के लिए बल्क एंडपॉइंट्स की एक जोड़ी पर निर्भर करता है। बल्क ट्रांसफर बड़ी मात्रा में असंरचित डेटा को स्थानांतरित करने के लिए सुविधाजनक है और त्रुटि का पता लगाने और पुनः प्रयास तंत्र का उपयोग करके डेटा का एक विश्वसनीय एक्सचेंज प्रदान करता है। बल्क एंडपॉइंट्स के अलावा, विक्रेता वर्ग इंटरप्ट एंडपॉइंट्स की एक वैकल्पिक जोड़ी का भी उपयोग कर सकता है। कोई भी ऑपरेटिंग सिस्टम (OS) विक्रेता वर्ग के साथ काम कर सकता है बशर्ते कि OS में विक्रेता वर्ग को संभालने के लिए ड्राइवर हो।
USB डिवाइस विक्रेता वर्ग खत्मview
चित्र - विंडोज होस्ट और विक्रेता वर्ग के बीच सामान्य आर्किटेक्चर, विक्रेता वर्ग का उपयोग करते हुए होस्ट और डिवाइस के बीच सामान्य आर्किटेक्चर को दर्शाता है। इस उदाहरण मेंampले, होस्ट ऑपरेटिंग सिस्टम एमएस विंडोज है।
चित्र – एमएस विंडोज़ होस्ट और विक्रेता वर्ग के बीच सामान्य आर्किटेक्चर
MS Windows की ओर, एप्लिकेशन USB लाइब्रेरी के साथ इंटरैक्ट करके विक्रेता डिवाइस से संचार करता है। libusb जैसी लाइब्रेरीज़, डिवाइस और उससे जुड़े पाइप्स को प्रबंधित करने और कंट्रोल, बल्क और इंटरप्ट एंडपॉइंट्स के ज़रिए डिवाइस से संचार करने के लिए एक API प्रदान करती हैं।
डिवाइस पक्ष पर, विक्रेता वर्ग निम्नलिखित समापन बिंदुओं से बना होता है:
नियंत्रण IN और OUT समापन बिंदुओं की एक जोड़ी जिसे डिफ़ॉल्ट समापन बिंदु कहा जाता है। बल्क IN और OUT समापन बिंदुओं की एक जोड़ी।
कॉपीराइट © 2025 सिलिकॉन प्रयोगशालाएँ। सभी अधिकार सुरक्षित।
51/174
ऊपरview
इंटरप्ट इन और आउट एंडपॉइंट्स की एक जोड़ी। यह जोड़ी वैकल्पिक है। नीचे दी गई तालिका विभिन्न एंडपॉइंट्स के उपयोग को दर्शाती है:
तालिका – विक्रेता वर्ग समापन बिंदु उपयोग
समापन बिंदु दिशा
नियंत्रण में
नियंत्रण
बाहर
थोक में
डिवाइस-टूहोस्ट
>Host-todevice
डिवाइस-टूहोस्ट
बल्क आउट
इंटरप्ट इन
रुकावट डालना
बाहर
होस्ट-टूडिवाइस
डिवाइस-टूहोस्ट
होस्ट-टूडिवाइस
प्रयोग
गणना के लिए मानक अनुरोध और विक्रेता-विशिष्ट अनुरोध।
गणना के लिए मानक अनुरोध और विक्रेता-विशिष्ट अनुरोध।
कच्चा डेटा संचार। डेटा को स्वामित्व प्रोटोकॉल के अनुसार संरचित किया जा सकता है।
कच्चा डेटा संचार। डेटा को स्वामित्व प्रोटोकॉल के अनुसार संरचित किया जा सकता है।
कच्चा डेटा संचार या सूचना। डेटा को एक मालिकाना प्रोटोकॉल के अनुसार संरचित किया जा सकता है। कच्चा डेटा संचार या सूचना। डेटा को एक मालिकाना प्रोटोकॉल के अनुसार संरचित किया जा सकता है।
डिवाइस एप्लिकेशन होस्ट से या होस्ट को डेटा भेजने या प्राप्त करने के लिए बल्क और इंटरप्ट एंडपॉइंट का उपयोग कर सकता है। यह होस्ट द्वारा भेजे गए विक्रेता-विशिष्ट अनुरोधों को डिकोड करने के लिए केवल डिफ़ॉल्ट एंडपॉइंट का उपयोग कर सकता है। मानक अनुरोधों का प्रबंधन सिलिकॉन लैब्स यूएसबी डिवाइस की कोर परत द्वारा आंतरिक रूप से किया जाता है।
कोर से USB डिवाइस विक्रेता वर्ग संसाधन की आवश्यकताएँ
प्रत्येक बार जब आप sl_usbd_vendor_add_to_configuration() फ़ंक्शन के माध्यम से किसी कॉन्फ़िगरेशन में विक्रेता वर्ग इंस्टेंस जोड़ते हैं, तो कोर से निम्नलिखित संसाधन आवंटित किए जाएंगे।
संसाधन
Interfaces Alternate interfaces Endpoints Interface groups
मात्रा
1 1 2 (4 if you enabled interrupt endpoints) 0
Note that those numbers are per configuration. When setting up your SL_USBD_INTERFACE_QUANTITY , SL_USBD_ALT_INTERFACE_QUANTITY , SL_USBD_INTERFACE_GROUP_QUANTITY and SL_USBD_DESCRIPTOR_QUANTITY configuration values, don’t forget to take into account on how many configurations the class will be added. For the SL_USBD_OPEN_ENDPOINTS_QUANTITY configuration value, since endpoints are opened only when a configuration is set by the host, you just need to take into account the number of needed endpoints for a class instance.
USB डिवाइस विक्रेता वर्ग कॉन्फ़िगरेशन
विक्रेता वर्ग को कॉन्फ़िगर करने के लिए कॉन्फ़िगरेशन पैरामीटर के दो समूहों का उपयोग किया जाता है:
USB Device Vendor Class Application-Specific Configurations USB Device Vendor Class Instance Configurations
USB डिवाइस विक्रेता वर्ग अनुप्रयोग-विशिष्ट कॉन्फ़िगरेशन
सबसे पहले, सिलिकॉन लैब्स USB डिवाइस विक्रेता वर्ग मॉड्यूल का उपयोग करने के लिए, विक्रेता संकलन-समय कॉन्फ़िगरेशन परिभाषाओं को अपनी एप्लिकेशन आवश्यकताओं के अनुसार समायोजित करें। इन्हें sl_usbd_core_config.h हेडर के अंदर पुनर्समूहित किया जाता है। file under the Vendor section. The quantity configurations purpose is to inform the USB device module about how many USB Vendor objects to allocate.
नीचे दी गई तालिका प्रत्येक कॉन्फ़िगरेशन परिभाषा का वर्णन करती है।
कॉपीराइट © 2025 सिलिकॉन प्रयोगशालाएँ। सभी अधिकार सुरक्षित।
52/174
ऊपरview
तालिका – USB डिवाइस विक्रेता कॉन्फ़िगरेशन परिभाषाएँ
कॉन्फ़िगरेशन नाम
विवरण
डिफ़ॉल्ट मान
SL_USBD_VENDOR_CLASS_INSTANCE_QUANTITY क्लास इंस्टेंस की संख्या जिसे आप 2 फ़ंक्शन sl_usbd_vendor_create_instance() पर कॉल के माध्यम से आवंटित करेंगे।
SL_USBD_VENDOR_CONFIGURATION_QUANTITY कॉन्फ़िगरेशन की संख्या. विक्रेता वर्ग के उदाहरणों को sl_usbd_vendor_add_to_configuration() फ़ंक्शन को कॉल करके एक या अधिक कॉन्फ़िगरेशन में जोड़ा जा सकता है.
USB डिवाइस विक्रेता वर्ग इंस्टेंस कॉन्फ़िगरेशन
यह अनुभाग विक्रेता वर्ग इंस्टैंस से संबंधित कॉन्फ़िगरेशन को परिभाषित करता है।
क्लास इंस्टेंस निर्माण intr_en अंतराल p_vendor_callbacks
क्लास इंस्टेंस निर्माण
विक्रेता वर्ग का उदाहरण बनाना sl_usbd_vendor_create_instance() फ़ंक्शन को कॉल करके किया जाता है, जो तीन कॉन्फ़िगरेशन तर्क लेता है जिनका वर्णन नीचे किया गया है।
intr_en
बूलियन जो यह इंगित करता है कि इंटरप्ट अंतबिंदुओं की एक जोड़ी को जोड़ा जाना चाहिए या नहीं।
कीमत
सत्य असत्य
विवरण
IN/OUT एंडपॉइंट्स की एक जोड़ी जोड़ी जाएगी और एम्बेडेड एप्लिकेशन के लिए उपलब्ध कराई जाएगी। कोई इंटरप्ट एंडपॉइंट नहीं जोड़ा जाएगा। केवल बल्क IN/OUT एंडपॉइंट्स की एक जोड़ी उपलब्ध होगी।
अंतराल
यदि आप intr_en को true पर सेट करते हैं, तो आप इंटरप्ट एंडपॉइंट पोलिंग अंतराल (मिलीसेकंड में) निर्दिष्ट कर सकते हैं। यदि आप intr_en को false पर सेट करते हैं, तो आप अंतराल को 0 पर सेट कर सकते हैं क्योंकि इसे क्लास द्वारा अनदेखा कर दिया जाएगा।
p_vendor_callbacks
p_vendor_callbacks is a pointer to a callback functions structure variable. that you can specify to handle the class specific control requests. If you don’t use any class specific requests or needs enable/disable notification, you can set this to NULL .
भूतपूर्वampनीचे दिया गया पृष्ठ आपके वर्ग-विशिष्ट अनुरोध हैंडलर का अपेक्षित हस्ताक्षर प्रदान करता है।
Example – वर्ग-विशिष्ट अनुरोध फ़ंक्शन का हस्ताक्षर
शून्य app_usbd_vendor_req_handle(uint8_t
क्लास_एनबीआर, (1)
const sl_usbd_setup_req_t *p_setup_req); (2)
sl_usbd_vendor_callbacks_t app_usbd_vendor_callback_functions =
{
.enable = शून्य, .disable = शून्य, .setup_req = app_usbd_vendor_req_handle,
};
(1) विक्रेता वर्ग उदाहरण संख्या.
कॉपीराइट © 2025 सिलिकॉन प्रयोगशालाएँ। सभी अधिकार सुरक्षित।
53/174
ऊपरview
(2) Pointer to a received setup request from host.
USB डिवाइस विक्रेता वर्ग प्रोग्रामिंग गाइड
यह अनुभाग विक्रेता वर्ग का उपयोग करने का तरीका बताता है। USB डिवाइस विक्रेता वर्ग को आरंभ करना अपने डिवाइस में USB डिवाइस विक्रेता वर्ग इंस्टेंस जोड़ना USB डिवाइस विक्रेता वर्ग का उपयोग करके संचार करना
USB डिवाइस विक्रेता वर्ग को आरंभ करना
अपने डिवाइस में विक्रेता वर्ग की कार्यक्षमता जोड़ने के लिए, पहले USBD_Vendor_Init() फ़ंक्शन को कॉल करके वर्ग को आरंभीकृत करें।ampनीचे दिया गया चित्र दिखाता है कि sl_usbd_vendor_init() को कैसे कॉल करें।
Example – sl_usbd_vendor_init() को कॉल करना
sl_status_t स्थिति;
स्थिति = sl_usbd_vendor_init(); यदि (स्थिति ! 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 स्थिति;
status = sl_usbd_vendor_create_instance(false,
(1)
0यू,
(2)
ऐप_यूएसबीडी_विक्रेता_कॉलबैक_फ़ंक्शन, (3)
&क्लास_एनबीआर);
if (status ! SL_STATUS_OK) {
/* An error occurred. Error handling should be added here. */
}
(1) इस क्लास इंस्टैंस के साथ कोई इंटरप्ट एंडपॉइंट नहीं है। (2) इंटरवल को अनदेखा किया जाता है क्योंकि इंटरप्ट एंडपॉइंट अक्षम हैं।
कॉपीराइट © 2025 सिलिकॉन प्रयोगशालाएँ। सभी अधिकार सुरक्षित।
54/174
ऊपरview
(3) कॉलबैक फ़ंक्शन जो आपके एप्लिकेशन का एक भाग है और विक्रेता-विशिष्ट क्लास अनुरोधों को संभालता है। अधिक जानकारी के लिए USB डिवाइस विक्रेता वर्ग का उपयोग करके संचार करना देखें। अपने डिवाइस के कॉन्फ़िगरेशन में विक्रेता वर्ग इंस्टेंस जोड़ना। विक्रेता वर्ग इंस्टेंस बनाने के बाद, आप USBD_Vendor_ConfigAdd() फ़ंक्शन को कॉल करके इसे कॉन्फ़िगरेशन में जोड़ सकते हैं।ampनीचे दिया गया चित्र दिखाता है कि डिफ़ॉल्ट तर्कों का उपयोग करके sl_usbd_vendor_add_to_configuration() को कैसे कॉल किया जाए।
Example – sl_usbd_vendor_add_to_configuration() को कॉल करना
sl_status_t स्थिति;
स्थिति = sl_usbd_vendor_add_to_configuration(class_nbr,
(1)
config_nbr_fs);
(2)
if (status ! SL_STATUS_OK) {
/* An error occurred. Error handling should be added here. */
}
(1) sl_usbd_vendor_create_instance() द्वारा लौटाए गए कॉन्फ़िगरेशन में जोड़ने के लिए क्लास नंबर। (2) कॉन्फ़िगरेशन नंबर (यहां इसे फुल-स्पीड कॉन्फ़िगरेशन में जोड़ना)।
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_write _b ulk_asy nc() sl_usb d _v e nd o r_ re ad _inte rrup t_sy nc() sl_usb d _v e nd o r_write _inte rrup t_sy nc() sl_usb d _v e nd o r_ re ad _inte rrup t_asy nc
()
sl_usb d _v e nd o r_write _inte rrup t_asy nc
()
Operation Receives data from host through bulk OUT endpoint. This function is blocking. Sends data to host through bulk IN endpoint. This function is blocking. Receives data from host through bulk OUT endpoint. This function is non-blocking. Sends data to host through bulk IN endpoint. This function is non-blocking. Receives data from host through interrupt OUT endpoint. This function is blocking. Sends data to host through interrupt IN endpoint. This function is blocking. Receives data from host through interrupt OUT endpoint. This function is non-
अवरुद्ध करना।
Sends data to host through interrupt IN endpoint. This function is non-blocking.
The vendor requests are also another way to communicate with the host. When managing vendor requests sent by the host, the application can receive or send data from or to the host using the control endpoint; you will need to provide an application callback passed as a parameter of sl_usbd_vendor_create_instance() . Synchronous Communication
कॉपीराइट © 2025 सिलिकॉन प्रयोगशालाएँ। सभी अधिकार सुरक्षित।
55/174
ऊपरview
Synchronous communication means that the transfer is blocking. When a function is called, the application blocks until the transfer completes with or without an error. A timeout can be specified to avoid waiting forever. The example below shows a read and write that receives data from the host using the bulk OUT endpoint and sends data to the host using the bulk IN endpoint.
Example – Synchronous Bulk Read and Write
__संरेखित(4) uint8_t rx_buf[2];
__संरेखित(4) uint8_t tx_buf[2];
uint32_t
xfer_लेन;
sl_स्थिति_t
स्थिति;
status = sl_usbd_vendor_read_bulk_sync(class_nbr,
(1)
(void *)&rx_buf[0],
(2)
2यू,
0यू,
(3)
&xfer_len);
if (status ! SL_STATUS_OK) {
/* $$$$ त्रुटि को संभालें. */
}
status = sl_usbd_vendor_write_bulk_sync( class_nbr,
(1)
(void *)&tx_buf[0],
(4)
2यू,
0यू,
(3)
false,
(5)
&xfer_len);
if (status ! SL_STATUS_OK) {
/* $$$$ त्रुटि को संभालें. */
}
(1) The class instance number created with sl_usbd_vendor_create_instance() provides an internal reference to the Vendor class to route the transfer to the proper bulk OUT or IN endpoint.
(2) The application must ensure that the buffer provided to the function is large enough to accommodate all the data. Otherwise, synchronization issues might happen.
(3) In order to avoid an infinite blocking situation, a timeout expressed in milliseconds can be specified. A value of 809 makes the application task wait forever.
(4) अनुप्रयोग आरंभीकृत संचारित बफर प्रदान करता है।
(5) If this flag is set to true , and the transfer length is multiple of the endpoint maximum packet size, the device stack will send a zero-length packet to the host to signal the end of the transfer.
The use of interrupt endpoint communication functions, sl_usbd_vendor_read_interrupt_sync() and sl_usbd_vendor_write_interrupt_sync() , is similar to bulk endpoint communication functions presented in Example – Synchronous Bulk Read and Write.
अतुल्यकालिक संचार
Asynchronous communication means that the transfer is non-blocking. When a function is called, the application passes the transfer information to the device stack and does not block. Other application processing can be done while the transfer is in progress over the USB bus. Once the transfer has completed, a callback function is called by the device stack to inform the application about the transfer completion. The example below shows asynchronous read and write.
Example – Asynchronous Bulk Read and Write
कॉपीराइट © 2025 सिलिकॉन प्रयोगशालाएँ। सभी अधिकार सुरक्षित।
56/174
ऊपरview
void app_usbd_vendor_comm (uint8_t class_nbr)
{
__संरेखित(4) uint8_t rx_buf[2];
__संरेखित(4) uint8_t tx_buf[2];
sl_स्थिति_t
स्थिति;
status = sl_usbd_vendor_read_bulk_async(class_nbr,
(void *)&rx_buf[0],
(2)
2यू,
app_usbd_vendor_rx_completed,
NULL);
(4)
if (status ! SL_STATUS_OK) {
/* $$$$ त्रुटि को संभालें. */
}
status = sl_usbd_vendor_write_bulk_async(class_nbr,
(void *)&tx_buf[0],
(5)
2यू,
app_usbd_vendor_tx_completed,
शून्य,
(4)
false);
(6)
if (status ! SL_STATUS_OK) {
/* $$$$ त्रुटि को संभालें. */
}
}
(1) (3)
(1) (3)
static void app_usbd_vendor_rx_completed(uint8_t class_nbr,
(3)
void *p_buf,
uint32_t buf_len,
uint32_t xfer_len,
void *p_callback_arg,
sl_status_t status)
{
if (status ! SL_STATUS_OK) {
/* $$$$ Do some processing. */
} अन्य {
/* $$$$ त्रुटि को संभालें. */
}
}
static void app_usbd_vendor_tx_completed(uint8_t class_nbr,
(3)
void *p_buf,
uint32_t buf_len,
uint32_t xfer_len,
void *p_callback_arg,
sl_status_t status)
{
if (status ! SL_STATUS_OK) {
/* $$$$ Do some processing. */
} अन्य {
/* $$$$ त्रुटि को संभालें. */
}
}
(1) The class instance number provides an internal reference to the Vendor class to route the transfer to the proper bulk OUT or IN endpoint. (2) The application must ensure that the buffer provided is large enough to accommodate all the data. Otherwise, there may be synchronization issues. (3) The application provides a callback function pointer passed as a parameter. Upon completion of the transfer, the device stack calls this callback function so that the application can finalize the transfer by analyzing the transfer result. For instance, on completion of a read operation, the application might perform processing on the received data. Upon write completion, the application can indicate if the write was successful and how many bytes were sent.
कॉपीराइट © 2025 सिलिकॉन प्रयोगशालाएँ। सभी अधिकार सुरक्षित।
57/174
ऊपरview
(4) An argument associated with the callback can be also passed. Then in the callback context, some private information can be retrieved. (5) The application provides the initialized transmit buffer. (6) If this flag is set to true , and the transfer length is a multiple of the endpoint maximum packet size, the device stack will send a zero-length packet to the host to signal the end of transfer. The use of interrupt endpoint communication functions, sl_usbd_vendor_read_interrupt_async() and sl_usbd_vendor_write_interrupt_async() , is similar to the bulk endpoint communication functions presented in Example Asynchronous Bulk Read and Write.
Vendor Request
The USB 2.0 specification defines three types of requests: standard, class, and vendor. All standard requests are handled directly by the core layer, while class requests are managed by the proper associated class. Vendor requests can be processed by the vendor class. To process vendor requests, you must provide an application callback as a parameter of sl_usbd_vendor_create_instance() . After a vendor request is received by the USB device, it must be decoded properly. The example below shows vendor request decoding. Certain requests may be required to receive from or send to the host during the data stage of a control transfer. If no data stage is present, you only have to decode the Setup packet. This example shows the three types of data stage management: no data, data OUT and data IN.
Example – Vendor Request Decoding
कॉपीराइट © 2025 सिलिकॉन प्रयोगशालाएँ। सभी अधिकार सुरक्षित।
58/174
ऊपरview
#define APP_VENDOR_REQ_NO_DATA
0x01u
#define APP_VENDOR_REQ_RECEIVE_DATA_FROM_HOST 0x02u
#define APP_VENDOR_REQ_SEND_DATA_TO_HOST 0x03u
#define APP_VENDOR_REQ_DATA_BUF_SIZE
50यू
static uint8_t app_vendor_req_buf[APP_VENDOR_REQ_DATA_BUF_SIZE];
static bool app_usbd_vendor_req (uint8_t
class_nbr,
const sl_usbd_setup_req_t *p_setup_req)
(1)
{
bool valid;
sl_status_t स्थिति;
uint16_t req_len;
uint32_t xfer_len;
(void)class_nbr;
switch(p_setup_req->bRequest) { case APP_VENDOR_REQ_NO_DATA: valid = true; break;
(2) (3)
case APP_VENDOR_REQ_RECEIVE_DATA_FROM_HOST:
(4)
req_len = p_setup_req->wLength;
if (req_len > APP_VENDOR_REQ_DATA_BUF_SIZE) {
// Not enough room to receive data.
return (false);
}
// Receive data via Control OUT EP. // Wait transfer completion forever. status = sl_usbd_core_read_control_sync((void *)&app_vendor_req_buf[0u],
req_len, 0u, &xfer_len); if (status ! SL_STATUS_OK) { valid = false; } else { valid = true; } break;
case APP_VENDOR_REQ_SEND_DATA_TO_HOST:
(5)
req_len = APP_VENDOR_REQ_DATA_BUF_SIZE;
// Fill buf with a pattern. Mem_Set((void *)&AppVendorReqBuf[0u],
'ए',
req_len);
// Send data via Control IN EP. // Wait transfer completion forever. status = sl_usbd_core_write_control_sync((void *)&app_vendor_req_buf[0u],
req_len, 0u, false, &xfer_len); if (status ! SL_STATUS_OK) { valid = DEF_FAIL; } else { valid = DEF_OK; } break;
गलती करना:
(6)
// Request is not supported.
कॉपीराइट © 2025 सिलिकॉन प्रयोगशालाएँ। सभी अधिकार सुरक्षित।
59/174
ऊपरview
valid =true;break;
case APP_VENDOR_REQ_RECEIVE_DATA_FROM_HOST:(4) req_len = p_setup_req->wLength;if(req_len > APP_VENDOR_REQ_DATA_BUF_SIZE){// Not enough room to receive data.return(false);}// Receive data via Control OUT EP.// Wait transfer completion forever. status =sl_usbd_core_read_control_sync((void *)&app_vendor_req_buf[0u],
req_len,0u,&xfer_len);if(status ! SL_STATUS_OK){ valid =false;}else{ valid =true;}break;
case APP_VENDOR_REQ_SEND_DATA_TO_HOST:(5) req_len = APP_VENDOR_REQ_DATA_BUF_SIZE;// Fill buf with a pattern.Mem_Set((void *)&AppVendorReqBuf[0u],’A’,
req_len);// Send data via Control IN EP.// Wait transfer completion forever. status =sl_usbd_core_write_control_sync((void *)&app_vendor_req_buf[0u],
req_len,0u,false,&xfer_len);if(status ! SL_STATUS_OK){ valid = DEF_FAIL;}else{ valid = DEF_OK;}break;
default:(6)// Request is not supported. valid = DEF_FAIL;break;}return(valid);}
(1) The core will pass the Setup packet content to your application. The structure sl_usbd_setup_req_t contains the same fields as defined by the USB 2.0 specification (refer to section “9.3 USB Device Requests” of the specification for more details):
टाइपडेफ संरचना {
uint8_t bmRequestType; /* Characteristics of request.
*/
uint8_t bRequest; /* Specific request.
*/
uint16_t wValue; /* Varies according to request.
*/
uint16_t wIndex; /* Varies according to request; typically used as index.*/
uint16_t wLength; /* Transfer length if data stagई वर्तमान।
*/
} sl_usbd_setup_req_t;
(2) Determine the request. You may use a switch statement if you are using different requests. In this example, there are three different requests corresponding to the three types of the data stage: APP_VENDOR_REQ_NO_DATA, APP_VENDOR_REQ_RECEIVE_DATA_FROM_HOST, and APP_VENDOR_REQ_SEND_DATA_TO_HOST.
(3) If no data stage is present, you only need to decode the other fields. The presence of a data stage or not is indicated by the field wLength being non-null or null.
(4) If the host sends data to the device, you must call the function sl_usbd_core_read_control_sync() . The buffer provided should be able to contain up to wLength bytes. If any error occurs, return false to the core that will stall the status stage of the control transfer, indicating to the host that the request cannot be processed. true is returned in case of success.
(5) If the host receives data from the device, you must call the function sl_usbd_core_write_control_sync() . If any error occurs, return false to the core that will stall the status stage of the control transfer, indicating to the host that the request cannot be processed. true is returned in case of success.
(6) In this example, all requests not recognized are marked by returning false to the core. This one will stall the data or status stage of the control transfer indicating to the host that the request is not supported.
The host sends vendor requests through a host vendor application. USb libraries, such as libusb, can be used to help you develop your custom host vendor application.
कॉपीराइट © 2025 सिलिकॉन प्रयोगशालाएँ। सभी अधिकार सुरक्षित।
60/174
एपीआई दस्तावेज़ीकरण
एपीआई दस्तावेज़ीकरण
एपीआई दस्तावेज़ीकरण
मॉड्यूल की सूची
USB Device API USB Device ACM API USB Device CDC API USB Device Core API USB Device HID API USB Device MSC API USB Device MSC SCSI API USB Device Vendor API
विवरण
USB Device API USB Device ACM API USB Device CDC API USB Device Core API USB Device HID API USB Device MSC API USB Device MSC SCSI API USB Device Vendor API
कॉपीराइट © 2025 सिलिकॉन प्रयोगशालाएँ। सभी अधिकार सुरक्षित।
61/174
USB Device API
USB Device API
USB Device API
USB Device API.
मॉड्यूल
USB Device ACM API USB Device CDC API USB Device Core API USB Device HID API USB Device MSC API USB Device MSC SCSI API USB Device Vendor API
कॉपीराइट © 2025 सिलिकॉन प्रयोगशालाएँ। सभी अधिकार सुरक्षित।
62/174
USB Device ACM API
USB Device ACM API
USB Device ACM API
USB Device CDC ACM API.
मॉड्यूल
a sl_usbd_cdc_ cm_line_coding_t sl_usbd_cdc_acm_callbacks_t
कार्य
sl_status_t sl_status_t
sl_status_t sl_status_t sl_status_t
sl_स्थिति_t
sl_स्थिति_t
sl_स्थिति_t
sl_status_t sl_status_t sl_status_t sl_status_t sl_status_t
a sl_usbd_cdc_ cm_init(void)
GLOBAL VARIABLES.
ssll__uussbbdd__ccddcc__aaccmm__ccraellabtaec_kins_stta*npc_ea(cumin_tc1a6l_lbtalicnkes_,sutaintte8__int t*eprv_saul,bucinlats1s6__nt bcra)ll_mgmt_capabilities,
Add a new instance of the CDC ACM serial emulation subclass.
a a a a sl_usbd_cdc_ cm_ dd_to_configur tion(uint8_t subcl ss_nbr, uint8_t config_nbr)
Add a CDC ACM subclass class instance into USB device configuration.
a a sl_usbd_cdc_ cm_is_en bled(uint8_t subclass_nbr, bool *p_enabled)
Get the CDC ACM serial emulation subclass enable state.
a a a sl_usbd_cdc_ cm_re d(uint8_t subcl ss_nbr, uint8_t *p_buf, uint32_t buf_len, uint16_t timeout, uint32_t
*p_xfer_len) Receive data on the CDC ACM serial emulation subclass.
a a a a sl_usbd_cdc_ cm_re d_ sync(uint8_t subcl ss_nbr, uint8_t *p_buf, uint32_t buf_len, a a a a sl_usbd_cdc_ sync_function_t sync_fnct, void *p_ sync_ rg)
Receive data on the CDC ACM serial emulation subclass asynchronously.
a a sl_usbd_cdc_ cm_write(uint8_t subcl ss_nbr, uint8_t *p_buf, uint32_t buf_len, uint16_t timeout, uint32_t
*p_xfer_len) Send data on the CDC ACM serial emulation subclass.
a a a sl_usbd_cdc_ cm_write_ sync(uint8_t subcl ss_nbr, uint8_t *p_buf, uint32_t buf_len, a a a a sl_usbd_cdc_ sync_function_t sync_fnct, void *p_ sync_ rg)
Send data on the CDC ACM serial emulation subclass asynchronously.
a a a sl_usbd_cdc_ cm_get_line_control_st te(uint8_t subcl ss_nbr, uint8_t *p_line_ctrl)
Return the state of control lines.
a a a sl_usbd_cdc_ cm_get_line_coding(uint8_t subcl ss_nbr, sl_usbd_cdc_ cm_line_coding_t *p_line_coding)
Get the current state of the line coding.
a a a sl_usbd_cdc_ cm_set_line_coding(uint8_t subcl ss_nbr, sl_usbd_cdc_ cm_line_coding_t *p_line_coding)
Set a new line coding.
a a a sl_usbd_cdc_ cm_set_line_st te_event(uint8_t subcl ss_nbr, uint8_t events)
Set a line state event(s).
a a a a sl_usbd_cdc_ cm_cle r_line_st te_event(uint8_t subcl ss_nbr, uint8_t events)
Clear a line state event(s).
कॉपीराइट © 2025 सिलिकॉन प्रयोगशालाएँ। सभी अधिकार सुरक्षित।
63/174
USB Device ACM API
मैक्रो
#define SL_USBD_CDC_ACM_NBR_NONE 255u
मापांक।
#define SL_USBD_CDC_ACM_PARITY_NONE 0u
PORT SETTINGS DEFINES.
#define SL_USBD_CDC_ACM_PARITY_ODD 1u #define SL_USBD_CDC_ACM_PARITY_EVEN 2u #define SL_USBD_CDC_ACM_PARITY_MARK 3u #define SL_USBD_CDC_ACM_PARITY_SPACE 4u #define SL_USBD_CDC_ACM_STOP_BIT_1 0u #define SL_USBD_CDC_ACM_STOP_BIT_1_5 1u #define SL_USBD_CDC_ACM_STOP_BIT_2 2u #define SL_USBD_CDC_ACM_CTRL_BREAK 0 01u
LINE EVENTS FLAGS DEFINES.
#define SL_USBD_CDC_ACM_CTRL_RTS 0 02u #define SL_USBD_CDC_ACM_CTRL_DTR 0 04u #define SL_USBD_CDC_ACM_STATE_DCD 0 01u #define SL_USBD_CDC_ACM_STATE_DSR 0 02u #define SL_USBD_CDC_ACM_STATE_BREAK 0 04u #define SL_USBD_CDC_ACM_STATE_RING 0 08u #define SL_USBD_CDC_ACM_STATE_FRAMING 0 10u #define SL_USBD_CDC_ACM_STATE_PARITY 0 20u #define SL_USBD_CDC_ACM_STATE_OVERUN 0 40u #define SL_USBD_CDC_ACM_CALL_MGMT_DEV 0 01u
CALL MANAGEMENT CAPABILITIES.
#define SL_USBD_CDC_ACM_CALL_MGMT_DATA_CCI_DCI 0 02u #define SL_USBD_CDC_ACM_CALL_MGMT_DATA_OVER_DCI 0 02u | 0 01u)
Function Documentation
sl_usbd_cdc_acm_init
sl_status_t sl_usbd_cdc_acm_init (void )
GLOBAL VARIABLES. Parameters
कॉपीराइट © 2025 सिलिकॉन प्रयोगशालाएँ। सभी अधिकार सुरक्षित।
64/174
USB Device ACM API
प्रकार
खालीपन
Direction N/A
Argument Name
MACROS GLOBAL CONSTANTS FUNCTION PROTOTYPES CDC ACM FUNCTIONS
Initialize the CDC ACM serial emulation subclass.
रिटर्न
Returns SL_STATUS_OK on success or another SL_STATUS code on failure.
विवरण
sl_usbd_cdc_acm_create_instance
sl_status_t sl_usbd_cdc_acm_create_instance (uint16_t line_state_interval, uint16_t call_mgmt_capabilities, sl_usbd_cdc_acm_callbacks_t * p_acm_callbacks, uint8_t * p_subclass_nbr)
Add a new instance of the CDC ACM serial emulation subclass.
पैरामीटर
प्रकार
uint16_t
uint16_t
Direction Argument Name
विवरण
एन/ए
line_state_interval Line state notification interval in milliseconds (value must
be a power of 2).
एन/ए
call_mgmt_capabilities Call Management Capabilities bitmap. OR’ed of the
following flags:
SL_USBD_CDC_ACM_CALL_MGMT_DEV Device handles call management itself. SL_USBD_CDC_ACM_CALL_MGMT_DATA_CCI_DCI Device can send/receive call management information over a Data Class interface.
sl_usbd_cdc_acm_callbacks_t N/A
*
uint8_t *
एन/ए
p_acm_callbacks p_subclass_nbr
Optional pointers to callback functions to be called on various events.
Param to variable that will receive CDC ACM serial emulation subclass instance number.
रिटर्न
Return SL_STATUS_OK on success or another SL_STATUS code on failure.
sl_usbd_cdc_acm_add_to_configuration
sl_status_t sl_usbd_cdc_acm_add_to_configuration (uint8_t subclass_nbr, uint8_t config_nbr)
Add a CDC ACM subclass class instance into USB device configuration.
पैरामीटर
प्रकार
uint8_t uint8_t
Direction N/A N/A
Argument Name
subclass_nbr config_nbr
Description CDC ACM serial emulation subclass instance number. Configuration index to add new test class interface to.
रिटर्न
कॉपीराइट © 2025 सिलिकॉन प्रयोगशालाएँ। सभी अधिकार सुरक्षित।
65/174
USB Device ACM API
Returns SL_STATUS_OK on success or another SL_STATUS code on failure.
sl_usbd_cdc_acm_is_enabled
sl_status_t sl_usbd_cdc_acm_is_enabled (uint8_t subclass_nbr, bool * p_enabled)
Get the CDC ACM serial emulation subclass enable state.
पैरामीटर
प्रकार
दिशा
Argument Name
विवरण
uint8_t N/A
subclass_nbr CDC ACM serial emulation subclass instance number.
bool * N/A
p_enabled
Boolean to a variable that will receive enable status. The variable is set to true, CDC ACM serial emulation is enabled. The va
दस्तावेज़ / संसाधन
![]() |
SILICON LABS USB Device Stack [पीडीएफ] निर्देश पुस्तिका USB Device Stack, Device Stack, Stack |