सिलिकॉन लॅब्स यूएसबी डिव्हाइस स्टॅक इंस्ट्रक्शन मॅन्युअल

यूएसबी डिव्हाइस स्टॅक

तपशील

  • USB आवृत्ती: 1.5.1
  • प्रकाशन तारीख: 21 जुलै 2025
  • सिम्पलिसिटी एसडीके आवृत्ती: २०२५.६.१

उत्पादन संपलेview

सिलिकॉन लॅब्सचा यूएसबी डिव्हाइस स्टॅक बहुमुखी आणि
आयओटी प्रकल्पांसाठी वापरण्यास सोपी यूएसबी कनेक्टिव्हिटी, सुलभ करते
नेटवर्क को-प्रोसेसर आणि होस्ट यांच्यातील संवाद.

वैशिष्ट्ये

  • कार्यक्षम यूएसबी डिव्हाइस स्टॅक
  • आयओटी प्रकल्पांसाठी आदर्श
  • नेटवर्क सह-प्रोसेसर आणि यांच्यातील संवादासाठी समर्थन
    यजमान

उत्पादन वापर सूचना

USB डिव्हाइस कॉन्फिगरेशन

तुमच्या प्रोजेक्टनुसार USB डिव्हाइस सेटिंग्ज कॉन्फिगर करा.
यूएसबी डिव्हाइस कॉन्फिगरेशन विभागाचा संदर्भ देऊन आवश्यकता
कागदपत्रांमध्ये.

यूएसबी डिव्हाइस प्रोग्रामिंग मार्गदर्शक

कसे करायचे हे समजून घेण्यासाठी USB डिव्हाइस प्रोग्रामिंग मार्गदर्शकाचे अनुसरण करा
विविध गोष्टींसाठी USB डिव्हाइस प्रोग्राम करा आणि त्याच्याशी संवाद साधा
अनुप्रयोग

यूएसबी डिव्हाइस वर्ग

यूएसबी डिव्हाइस क्लासेस विभाग एक ओव्हर प्रदान करतोview भिन्न
CDC ACM, HID, MSC SCSI आणि व्हेंडर क्लास सारखे वर्ग. निवडा
तुमच्या डिव्हाइसच्या कार्यक्षमतेवर आधारित योग्य वर्ग.

USB डिव्हाइस समस्यानिवारण

जर तुम्हाला USB डिव्हाइसमध्ये काही समस्या आल्या तर, पहा
उपाय आणि डीबगिंगसाठी USB डिव्हाइस समस्यानिवारण विभाग
टिपा

मायक्रोसॉफ्ट विंडोज ओएस यूएसबी होस्ट

जर तुम्ही मायक्रोसॉफ्ट विंडोज ओएस यूएसबी असलेले यूएसबी डिव्हाइस वापरत असाल तर
होस्ट, मध्ये दिलेल्या मार्गदर्शक तत्त्वांचे पालन करण्याचे सुनिश्चित करा
अखंड एकात्मतेसाठी दस्तऐवजीकरण.

वारंवार विचारले जाणारे प्रश्न

प्रश्न: काही सामान्य माजी काय आहेतampमी वापरुन बनवू शकणाऱ्या उपकरणांची संख्या
हे USB स्टॅक?

अ: यूएसबी स्टॅक तुम्हाला अशी उपकरणे तयार करण्याची परवानगी देतो जसे की
यूएसबी-टू-सिरीयल अडॅप्टर, माईस किंवा कीबोर्ड, काढता येण्याजोगे स्टोरेज
उपकरणे आणि कस्टम उपकरणे.

प्रश्न: हे वापरण्यासाठी काही विशिष्ट सॉफ्टवेअर आवश्यकता आहेत का?
यूएसबी डिव्हाइस स्टॅक?

अ: सुसंगत सॉफ्टवेअरमध्ये सिम्पलिसिटी एसडीके, सिम्पलिसिटी समाविष्ट आहे
स्टुडिओ, सिम्पलिसिटी कमांडर, जीसीसी (जीएनयू कंपायलर कलेक्शन),
ARM साठी IAR एम्बेडेड वर्कबेंच आणि IAR EWARM.

युनिव्हर्सल सिरीयल बस यूएसबी

युनिव्हर्सल सिरीयल बस यूएसबी

यूएसबी ओव्हरview ओव्हरview
प्रकाशन नोट्स USB
तपशील आणि वैशिष्ट्ये संपलीview
USB डिव्हाइस कॉन्फिगरेशन संपलेview
यूएसबी डिव्हाइस प्रोग्रामिंग मार्गदर्शक संपलाview
यूएसबी डिव्हाइस वर्ग संपलेview सीडीसी एसीएम वर्ग संपलाview HID वर्ग संपला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_डिव्हाइस_कॉन्फिग_टी sl_usbd_सेटअप_आवश्यकता_टी
एक sl_usbd_cl ss_driver_t USB डिव्हाइस HID API
sl_usbd_hid_callbacks_t USB डिव्हाइस MSC API
एक sl_usbd_msc_subcl ss_driver_t USB डिव्हाइस MSC SCSI API
एसएल_यूएसबीडी_एमएससी_एससीएसआय_कॉलबॅक_टी

कॉपीराइट © 2025 सिलिकॉन प्रयोगशाळा. सर्व हक्क राखीव.

1/174

युनिव्हर्सल सिरीयल बस यूएसबी
एक sl_usbd_msc_scsi_lun_ पाय
sl_usbd_msc_scsi_lun_माहिती sl_usbd_msc_scsi_lun
यूएसबी डिव्हाइस विक्रेता API sl_usbd_vendor_callbacks_t
API दस्तऐवजीकरण USB डिव्हाइस समस्यानिवारण
ओव्हरview मायक्रोसॉफ्ट विंडोज ओएस यूएसबी होस्ट
ओव्हरview

कॉपीराइट © 2025 सिलिकॉन प्रयोगशाळा. सर्व हक्क राखीव.

2/174

ओव्हरview
ओव्हरview
यूएसबी डिव्हाइस
संगणक प्रणालींच्या इतिहासातील सर्वात यशस्वी संप्रेषण इंटरफेसपैकी एक म्हणजे यूएसबी आणि संगणक परिधीयांना जोडण्यासाठी डी फॅक्टो मानक. सिलिकॉन लॅब्स यूएसबी डिव्हाइस स्टॅक हे एक यूएसबी डिव्हाइस मॉड्यूल आहे जे विशेषतः एम्बेडेड सिस्टमसाठी डिझाइन केलेले आहे. सिलिकॉन लॅब्सच्या गुणवत्ता, स्केलेबिलिटी आणि विश्वासार्हतेसह ग्राउंड अपपासून तयार केलेले, ते यूएसबी 2.0 स्पेसिफिकेशनचे पालन करण्यासाठी कठोर प्रमाणीकरण प्रक्रियेतून गेले आहे. हे दस्तऐवजीकरण सिलिकॉन लॅब्स यूएसबी डिव्हाइस स्टॅक कसे सुरू करायचे, सुरू करायचे आणि कसे वापरायचे याचे वर्णन करते. ते विविध कॉन्फिगरेशन मूल्ये आणि त्यांचे वापर स्पष्ट करते. त्यात एक ओव्हर देखील समाविष्ट आहेview तंत्रज्ञानाचे, कॉन्फिगरेशन शक्यतांचे प्रकार, अंमलबजावणी प्रक्रिया आणि माजीampप्रत्येक उपलब्ध वर्गासाठी काही सामान्य वापर.
यूएसबी संकल्पना लवकर समजून घेण्यास मदत करण्यासाठी, दस्तऐवजीकरणात अनेक माजी आहेतampमूलभूत कार्यांसह कमी यूएसबी. हे उदा.ampलेस तुम्हाला एक फ्रेमवर्क प्रदान करेल जो तुम्हाला डिव्हाइसेस जलद तयार करण्यास अनुमती देईल. हे उदा.amples समाविष्ट:
यूएसबी-टू-सिरीयल अडॅप्टर (कम्युनिकेशन्स डिव्हाइस क्लास) माउस किंवा कीबोर्ड (ह्यूमन इंटरफेस डिव्हाइस क्लास) रिमूव्हेबल स्टोरेज डिव्हाइस (मास स्टोरेज क्लास) कस्टम डिव्हाइस (व्हेंडर क्लास)
खालील ओव्हर आहेview कागदपत्र विभागांपैकी:
तपशील आणि वैशिष्ट्ये यूएसबी डिव्हाइस कॉन्फिगरेशन यूएसबी डिव्हाइस प्रोग्रामिंग मार्गदर्शक यूएसबी डिव्हाइस वर्ग
सीडीसी एसीएम क्लास एचआयडी क्लास एमएससी एससीएसआय क्लास वेंडर क्लास यूएसबी डिव्हाइस ट्रबलशूटिंग मायक्रोसॉफ्ट विंडोज ओएस यूएसबी होस्ट

कॉपीराइट © 2025 सिलिकॉन प्रयोगशाळा. सर्व हक्क राखीव.

3/174

यूएसबी
यूएसबी

यूएसबी आवृत्ती १.५.१ २१ जुलै २०२५ – रिलीज नोट्स
सिम्पलिसिटी एसडीके आवृत्ती २०२५.६.१
सिलिकॉन लॅब्सचा कार्यक्षम यूएसबी डिव्हाइस स्टॅक आयओटी प्रकल्पांसाठी बहुमुखी, वापरण्यास सोपा यूएसबी कनेक्टिव्हिटी प्रदान करतो, ज्यामध्ये नेटवर्क को-प्रोसेसर आणि होस्टमधील संवादाचा समावेश आहे. पूर्वीच्या प्रकाशनांसाठी येथे क्लिक करा.
रीलिझ सारांश
प्रमुख वैशिष्ट्ये | API बदल | बग फिक्सेस | चिप सक्षमीकरण
प्रमुख वैशिष्ट्ये
फक्त अंतर्निहित प्लॅटफॉर्म बदलतो.
API बदल
काहीही नाही.
दोष निराकरणे
काहीही नाही.
चिप सक्षमीकरण
काहीही नाही.
प्रमुख वैशिष्ट्ये
नवीन वैशिष्ट्ये | सुधारणा | काढून टाकलेली वैशिष्ट्ये | कालबाह्य झालेली वैशिष्ट्ये
नवीन वैशिष्ट्ये
काहीही नाही.
सुधारणा
फक्त अंतर्निहित प्लॅटफॉर्म बदलतो.
काढून टाकलेली वैशिष्ट्ये
काहीही नाही.
नापसंत वैशिष्ट्ये
काहीही नाही.
API बदल
नवीन API | सुधारित API | काढून टाकलेले API | कालबाह्य झालेले API
नवीन API

कॉपीराइट © 2025 सिलिकॉन प्रयोगशाळा. सर्व हक्क राखीव.

4/174

यूएसबी
काहीही नाही.
सुधारित API
काहीही नाही.
काढलेले API
काहीही नाही.
कालबाह्य झालेले API
काहीही नाही.
दोष निराकरणे
काहीही नाही.
चिप सक्षमीकरण
काहीही नाही.
अर्ज उदाampले चेंजेस
नवीन माजीampलेस | सुधारित उदाamples | काढलेले उदा.amples | कालबाह्य झालेले माजीampलेस
नवीन माजीampलेस
काहीही नाही.
सुधारित उदा.ampलेस
काहीही नाही.
काढले माजीampलेस
काहीही नाही.
कालबाह्य झालेले एक्सampलेस
काहीही नाही.
रिलीज बदलांचा परिणाम
परिणाम विधाने | स्थलांतर मार्गदर्शक
प्रभाव विधाने
काहीही नाही.
स्थलांतर मार्गदर्शक
काहीही नाही.
ज्ञात समस्या आणि मर्यादा
काहीही नाही.
हे प्रकाशन वापरणे

कॉपीराइट © 2025 सिलिकॉन प्रयोगशाळा. सर्व हक्क राखीव.

5/174

यूएसबी

प्रकाशनात काय आहे? | सुसंगत सॉफ्टवेअर | स्थापना आणि वापर | मदत आणि अभिप्राय

रिलीजमध्ये काय आहे?

यूएसबी डिव्हाइस स्टॅक अॅप्लिकेशन एक्सampलेस
सुसंगत सॉफ्टवेअर

सॉफ्टवेअर
सिम्पलिसिटी एसडीके सिम्पलिसिटी स्टुडिओ सिम्पलिसिटी कमांडर जीसीसी द जीएनयू कंपायलर कलेक्शन) एआरएमसाठी आयएआर एम्बेडेड वर्कबेंच आयएआर ईवॉर्म

सुसंगत आवृत्ती किंवा प्रकार
२०२५.६.० ५.११.० १.१८.२ (सिम्पलिसिटी स्टुडिओसह प्रदान केलेले) १२.२.१ (सिम्पलिसिटी स्टुडिओसह प्रदान केलेले) ९.४०.१ (सिम्पलिसिटी स्टुडिओसह प्रदान केलेले)

स्थापना आणि वापर

तुमचा विकास सुरू करण्यासाठी आमचे पहा:
यूएसबी डिव्हाइस प्रोग्रामिंग मार्गदर्शक. एपीआय दस्तऐवजीकरण.
सुरक्षित व्हॉल्ट एकत्रीकरणाबद्दल माहितीसाठी, सुरक्षित व्हॉल्ट पहा.
पुन्हाview सुरक्षा आणि सॉफ्टवेअर सल्लागार सूचना आणि तुमच्या सूचना प्राधान्यांचे व्यवस्थापन करा:
ò https://community.silabs.com/ वर जा. ó तुमच्या खात्याच्या क्रेडेंशियल्ससह लॉग इन करा. ô तुमच्या प्रो वर क्लिक कराfile पृष्ठाच्या वरच्या उजव्या कोपऱ्यात असलेले चिन्ह.
õ ड्रॉपडाउन मेनूमधून सूचना निवडा. ö सूचना विभागात, माझे उत्पादन सूचना टॅबवर जा आणि पुन्हाview ऐतिहासिक सुरक्षा आणि सॉफ्टवेअर सल्लागार
सूचना
÷ तुमची प्राधान्ये व्यवस्थापित करण्यासाठी, तुम्ही कोणते उत्पादन अपडेट आणि सल्लागार देता ते कस्टमाइझ करण्यासाठी सूचना व्यवस्थापित करा टॅब वापरा
प्राप्त
शिफारस केलेल्या कॉन्फिगरेशन सेटिंग्जसाठी, येथे पहा.
या प्रकाशनातील सॉफ्टवेअरबद्दल अधिक जाणून घेण्यासाठी, आमच्या ऑनलाइन दस्तऐवजीकरणात जा.
मदत आणि अभिप्राय

सिलिकॉन लॅब्स सपोर्टशी संपर्क साधा. उत्तरे मिळविण्यासाठी आमचे आस्क एआय टूल वापरण्यासाठी, या पृष्ठाच्या वरच्या बाजूला असलेले शोध फील्ड पहा.

टीप: आस्क एआय प्रायोगिक आहे.

आमच्या डेव्हलपर समुदायाकडून मदत मिळवा.
SDK प्रकाशन आणि देखभाल धोरण
आमचे SDK रिलीज आणि देखभाल धोरण पहा.

कॉपीराइट © 2025 सिलिकॉन प्रयोगशाळा. सर्व हक्क राखीव.

6/174

ओव्हरview
ओव्हरview
तपशील
"युनिव्हर्सल सिरीयल बस स्पेसिफिकेशन रिव्हिजन २.०" चे पालन करते "इंटरफेस असोसिएशन डिस्क्रिप्टर इंजिनिअरिंग चेंज नोटिस (ECN)" लागू करते हस्तांतरण प्रकार
बल्क इंटरप्ट यूएसबी क्लासेस कंट्रोल करा कम्युनिकेशन डिव्हाइस क्लास (सीडीसी) अ‍ॅबस्ट्रॅक्ट कंट्रोल मॉडेल (एसीएम) ह्युमन इंटरफेस डिव्हाइस (एचआयडी) मास स्टोरेज क्लास (एमएससी) विक्रेता-विशिष्ट क्लास फ्रेमवर्क
वैशिष्ट्ये
मेमरी फूटप्रिंट कमी करण्यासाठी फक्त आवश्यक वैशिष्ट्ये समाविष्ट करण्यासाठी स्केलेबल फुल-स्पीड (१२ Mbit/s) ला सपोर्ट करते कंपोझिट (मल्टी-फंक्शन) डिव्हाइसेसना सपोर्ट करते मल्टी-कॉन्फिगरेशन डिव्हाइसेसना सपोर्ट करते USB पॉवर-सेव्हिंग फंक्शनॅलिटीजना सपोर्ट करते (डिव्हाइस सस्पेंड आणि रिझ्युम) मास स्टोरेज क्लासचे मायक्रोम ओएसमध्ये पूर्ण इंटिग्रेशन File वेगवेगळ्या ऑपरेटिंग सिस्टमसह काम करण्यासाठी CMSIS-RTOS2 अ‍ॅबस्ट्रॅक्शन लेयरसह विकसित केलेले सिस्टम मॉड्यूल. सिलिकॉन लॅब्स GSDK मध्ये FreeRTOS आणि Micrium OS पोर्ट आहेत.

कॉपीराइट © 2025 सिलिकॉन प्रयोगशाळा. सर्व हक्क राखीव.

7/174

ओव्हरview
ओव्हरview

USB डिव्हाइस कॉन्फिगरेशन

या विभागात सिलिकॉन लॅब्स यूएसबी डिव्हाइस कसे कॉन्फिगर करायचे याबद्दल चर्चा केली आहे. कॉन्फिगरेशन पॅरामीटर्सचे तीन गट आहेत, खालीलप्रमाणे:
USB डिव्हाइस कोर कॉन्फिगरेशन USB डिव्हाइस माहिती कॉन्फिगरेशन USB डिव्हाइस हार्डवेअर कॉन्फिगरेशन
USB डिव्हाइस कोर कॉन्फिगरेशन
सिलिकॉन लॅब्स यूएसबी डिव्हाइस sl_usbd_core_config.h मध्ये असलेल्या #defines च्या संचाद्वारे कंपाइल वेळी कॉन्फिगर केले जाऊ शकते. file. USB डिव्हाइस शक्य असल्यास #defines वापरते कारण ते कोणत्या वैशिष्ट्यांना सक्षम केले आहे यावर आधारित कंपाइल वेळेत कोड आणि डेटा आकार स्केल करण्याची परवानगी देतात. हे सिलिकॉन लॅब्स USB डिव्हाइसचे रीड-ओन्ली मेमरी (ROM) आणि रँडम-अ‍ॅक्सेस मेमरी (RAM) फूटप्रिंट्स तुमच्या अॅप्लिकेशनच्या आवश्यकतांनुसार समायोजित करण्यास अनुमती देते.
शिफारस केलेले: डीफॉल्ट मूल्यांसह कॉन्फिगरेशन प्रक्रिया सुरू करा (ठळक अक्षरात हायलाइट केलेले).
खालील विभाग टेम्पलेट कॉन्फिगरेशनमधील क्रमानुसार आयोजित केले आहेत. file, sl_usbd_core_config.h.
कोर कॉन्फिगरेशन क्लासेस कॉन्फिगरेशन
कोर कॉन्फिगरेशन
टेबल - यूएसबी डिव्हाइस कोर कॉन्फिगरेशन स्थिरांक

स्थिर वर्णन

डीफॉल्ट मूल्य

SL_USBD_TA SK_STACK_ आकार

USBD कोर टास्कच्या बाइट्समध्ये स्टॅक आकार कॉन्फिगर करते.

4096

एसएल_यूएसबीडी_टीए एसके_प्रिओरिट वाई

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 फंक्शन.

चालू_क्वांटि

TY

कॉपीराइट © 2025 सिलिकॉन प्रयोगशाळा. सर्व हक्क राखीव.

8/174

ओव्हरview

स्थिर
SL_USBD _इंटरफ ACE_QU अँटिटी
SL_USBD _ALT_INT ERFACE_QUANTI
TY
SL_USBD _इंटरफ ACE_GR
OUP_QU
ANTITY
एसएल_यूएसबीडी _डेस्करी
पीटीओआर_क्यू
UANTITY
SL_USBD _STRING _QUANTI
TY
SL_USBD _OPEN_E NDPOIN TS_QUA NTITY

वर्णन तुमच्या सर्व कॉन्फिगरेशनसाठी जोडायच्या एकूण यूएसबी इंटरफेसची संख्या. हे वापरलेल्या वर्गावर अवलंबून असते. वर्गाच्या उदाहरणाला किती इंटरफेसची आवश्यकता आहे याबद्दल अधिक माहितीसाठी, तुमच्या वर्गाच्या "कोअरमधून संसाधनांच्या गरजा" हा विभाग पहा.
तुमच्या सर्व कॉन्फिगरेशनसाठी जोडायच्या एकूण USB पर्यायी इंटरफेसची संख्या. हे वापरलेल्या वर्गावर अवलंबून असते. हे मूल्य नेहमी SL_USBD_INTERFACE_QUANTITY पेक्षा समान किंवा जास्त असले पाहिजे. क्लास इंस्टन्सला किती पर्यायी इंटरफेसची आवश्यकता आहे याबद्दल अधिक माहितीसाठी, तुमच्या वर्गाच्या "कोअरमधून संसाधनांच्या गरजा" विभाग पहा.
तुमच्या सर्व कॉन्फिगरेशनसाठी जोडल्या जाणाऱ्या एकूण यूएसबी इंटरफेस ग्रुप्सची संख्या. हे वापरलेल्या क्लास(एस) वर अवलंबून असते. क्लास इंस्टन्ससाठी किती इंटरफेस ग्रुप्सची आवश्यकता आहे याबद्दल अधिक माहितीसाठी, तुमच्या क्लास(एस) च्या "कोअरमधून संसाधनांच्या गरजा" विभाग पहा.
तुमच्या सर्व कॉन्फिगरेशनसाठी जोडल्या जाणाऱ्या एंडपॉइंट डिस्क्रिप्टर्सची एकूण संख्या. हे वापरलेल्या वर्गावर अवलंबून असते. क्लास इंस्टन्सला किती एंडपॉइंट डिस्क्रिप्टर्सची आवश्यकता आहे याबद्दल अधिक माहितीसाठी, तुमच्या वर्गाच्या "कोअरमधून संसाधन गरजा" विभागातील "एंडपॉइंट्सची संख्या" पहा. लक्षात ठेवा की येथे नियंत्रण अंतबिंदूंचा विचार करण्याची आवश्यकता नाही. यूएसबी स्ट्रिंगची एकूण संख्या. प्रमाण शून्यावर सेट केल्याने वैशिष्ट्य अक्षम होईल. हे अक्षम केल्याने डिव्हाइस अॅप्लिकेशनमधून पास झालेल्या कोणत्याही यूएसबी वर्णन स्ट्रिंग्स संग्रहित करणार नाही. याचा अर्थ होस्ट वर्णन स्ट्रिंग्स (जसे की निर्माता आणि उत्पादनाचे नाव) पुनर्प्राप्त करू शकणार नाही. प्रत्येक कॉन्फिगरेशनसाठी उघडलेल्या एंडपॉइंट्सची एकूण संख्या. डिव्हाइसला नियंत्रण हस्तांतरणासाठी किमान दोन उघडलेले एंडपॉइंट्स आवश्यक आहेत, परंतु तुम्ही वापरलेल्या वर्गाचे एंडपॉइंट्स देखील जोडणे आवश्यक आहे. क्लास इंस्टन्सला किती उघडलेले एंडपॉइंट्स आवश्यक आहेत याबद्दल अधिक माहितीसाठी, तुमच्या वर्गाच्या "कोअरमधून संसाधन गरजा" विभागातील "एंडपॉइंट्सची संख्या" पहा.

डीफॉल्ट मूल्य
०६ ४०
2
20 30 20

वर्ग कॉन्फिगरेशन
वर्गांमध्ये विशिष्ट कंपाइल-टाइम कॉन्फिगरेशन असतात. अधिक माहितीसाठी USB डिव्हाइस वर्ग पहा.
USB डिव्हाइस माहिती कॉन्फिगरेशन

sl_usbd_device_config.h कॉन्फिगरेशन file तुमच्या डिव्हाइसशी संबंधित मूलभूत माहिती, जसे की विक्रेता/उत्पादन आयडी, डिव्हाइस स्ट्रिंग इत्यादी सेट करण्यासाठी कंपाइल-टाइम #define-s पुन्हा गटबद्ध करते. खालील तक्ता या कॉन्फिगरेशनमध्ये उपलब्ध असलेल्या प्रत्येक माहिती कॉन्फिगरेशनचे वर्णन करतो. file.

सारणी - USB डिव्हाइस माहिती कॉन्फिगरेशन परिभाषित करते

स्थिर
एसएल_यूएसबीडी_डेव्हिक ई_व्हेंडर_आयडी
SL_USBD_DEVIC ई_प्रोडक्ट_आयडी

वर्णन तुमचा विक्रेता ओळख क्रमांक यूएसबी इम्प्लीमेंटर्स फोरमने दिला आहे. तुम्ही विक्रेता आयडी कसा मिळवू शकता याबद्दल अधिक माहितीसाठी, http://www.usb.org/developers/vendor/ पहा. तुमचा उत्पादन ओळख क्रमांक.

कॉपीराइट © 2025 सिलिकॉन प्रयोगशाळा. सर्व हक्क राखीव.

9/174

ओव्हरview

स्थिर

वर्णन

तुमच्या डिव्हाइसचा रिलीज नंबर SL_USBD_DEVICE_RELEASE. _NUMBER

SL_USBD_DEVICE_MANUFA तुमच्या डिव्हाइसच्या निर्मात्याचे वर्णन करणारी स्ट्रिंग. हे कॉन्फिगरेशन दुर्लक्षित केले जाते जेव्हा

सीटीयूआर_स्ट्रिंग

SL_USBD_STRING_QUANTITY कॉन्फिगरेशन 0 वर सेट केले आहे.

SL_USBD_DEVICE_PRODUC तुमच्या उत्पादनाचे वर्णन करणारी स्ट्रिंग. कॉन्फिगरेशन करताना हे कॉन्फिगरेशन दुर्लक्षित केले जाते

टी_स्ट्रिंग

SL_USBD_STRING_QUANTITY ० वर सेट केले आहे.

SL_USBD_DEVICE_SERIAL_N तुमच्या डिव्हाइसचा सिरीयल नंबर असलेली स्ट्रिंग. हे कॉन्फिगरेशन दुर्लक्षित केले जाते जेव्हा

उंबर_स्ट्रिंग

SL_USBD_STRING_QUANTITY कॉन्फिगरेशन 0 वर सेट केले आहे.

SL_USBD_DEVICE_LANGUA तुमच्या डिव्हाइसच्या स्ट्रिंगच्या भाषेचा ओळख क्रमांक. संभाव्य मूल्ये अशी आहेत:
जीई_आयडी

– एसएल_यूएसबीडी_लँग_आयडी_अरेबिक_सौदी_अरेबिया

– एसएल_यूएसबीडी_लँग_आयडी_चीनी_तैवान

– SL_USBD_LANG_ID_इंग्रजी_US

– एसएल_यूएसबीडी_लँग_आयडी_इंग्रजी_यूके

– SL_USBD_LANG_ID_फ्रेंच

– एसएल_यूएसबीडी_लँग_आयडी_जर्मन

– एसएल_यूएसबीडी_लँग_आयडी_ग्रीक

– एसएल_यूएसबीडी_लँग_आयडी_इटालियन

– एसएल_यूएसबीडी_लँग_आयडी_पोर्तुगीज

– एसएल_यूएसबीडी_लँग_आयडी_संस्कृत

जेव्हा SL_USBD_STRING_QUANTITY कॉन्फिगरेशन 0 वर सेट केले जाते तेव्हा हे कॉन्फिगरेशन दुर्लक्षित केले जाते.

USB डिव्हाइस हार्डवेअर कॉन्फिगरेशन

तुम्ही वापरत असलेल्या सिलिकॉन लॅब्स डिव्हाइसवर अवलंबून, तुमच्याकडे USB VBUS सेन्स सिग्नलसाठी कॉन्फिगर करण्यासाठी GPIO पिन आणि पोर्ट असू शकतो. कॉन्फिगरेशन परिभाषा sl_usbd_hardware_config.h हेडरमध्ये आहेत. file.

स्थिर
SL_USBD_DRIVER_VBUS_SENSE_PORT SL_USBD_DRIVER_VBUS_SENSE_PIN

वर्णन
तुमच्या बोर्डवरील USB VBUS सेन्स सिग्नलसाठी GPIO पोर्ट. तुमच्या बोर्डवरील USB VBUS सेन्स सिग्नलसाठी GPIO पिन.

कॉपीराइट © 2025 सिलिकॉन प्रयोगशाळा. सर्व हक्क राखीव.

10/174

ओव्हरview
ओव्हरview
यूएसबी डिव्हाइस प्रोग्रामिंग मार्गदर्शक
हा विभाग USB डिव्हाइस मॉड्यूल कसे वापरायचे ते स्पष्ट करतो.
यूएसबी डिव्हाइस मॉड्यूलचा प्रारंभिक सेटअप
हा विभाग USB डिव्हाइस मॉड्यूल सुरू करण्यासाठी आणि डिव्हाइस जोडण्यासाठी, तयार करण्यासाठी आणि सुरू करण्यासाठी आवश्यक असलेल्या मूलभूत पायऱ्यांचे वर्णन करतो. USB डिव्हाइस मॉड्यूल सुरू करणे USB डिव्हाइस कोर सुरू करणे aClss(es) सुरू करणे तुमचे USB डिव्हाइस जोडणे तुमचे USB डिव्हाइस तयार करणे कॉन्फिगरेशन(से) जोडणे 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(); जर (status ! SL_STATUS_OK) { /* एक त्रुटी आली. येथे त्रुटी हाताळणी जोडली पाहिजे. */
}
वर्ग सुरू करणे
यूएसबी डिव्हाइस मॉड्यूल कोर सुरू झाल्यानंतर, तुम्ही वापरण्याचा विचार करत असलेला प्रत्येक वर्ग सुरू करणे आवश्यक आहे. अधिक माहितीसाठी तुमच्या अ‍ॅक्लेम ss(es) चा "प्रोग्रामिंग गाइड" विभाग पहा.
तुमचे USB डिव्हाइस तयार करणे
कॉन्फिगरेशन जोडत आहे
तुमचे डिव्हाइस यशस्वीरित्या सुरू केल्यानंतर, तुम्ही त्यात USB फंक्शन्स जोडण्यास सुरुवात करू शकता, नवीन कॉन्फिगरेशनसह. डिव्हाइसमध्ये किमान एक कॉन्फिगरेशन असणे आवश्यक आहे. कॉन्फिगरेशन जोडण्यासाठी, aa sl_usbd_core_ dd_configur tion() फंक्शनला कॉल करा. हे फंक्शन तुम्हाला जोडायच्या असलेल्या प्रत्येक कॉन्फिगरेशनसाठी कॉल केले पाहिजे. उदा.ampखाली फुल-स्पीड कसा जोडायचा ते दाखवले आहे.
Example – तुमच्या डिव्हाइसमध्ये कॉन्फिगरेशन जोडणे

कॉपीराइट © 2025 सिलिकॉन प्रयोगशाळा. सर्व हक्क राखीव.

11/174

ओव्हरview

sl_status_t स्थिती; uint8_t config_nbr_fs;

/* डिव्हाइसमध्ये पूर्ण-गती कॉन्फिगरेशन जोडत आहे. */

स्थिती = sl_usbd_core_add_configuration(0,

/* कॉन्फिगरेशनमध्ये कोणतेही विशेष गुणधर्म नाहीत. */

100u,

/* कमाल वीज वापर: १०० एमए.

*/

SL_USBD_DEVICE_SPEED_FULL,

/* पूर्ण-गती कॉन्फिगरेशन.

*/

"कॉन्फिगर करा जोडा माजीamp"फुल-स्पीड कॉन्फिगरेशन",

&कॉन्फिग_एनबीआर_एफएस);

जर (स्थिती ! SL_STATUS_OK) {

/* एक त्रुटी आली. त्रुटी हाताळणी येथे जोडली पाहिजे. */

}

USB फंक्शन जोडणे
तुमच्या डिव्हाइसमध्ये किमान एक कॉन्फिगरेशन यशस्वीरित्या जोडल्यानंतर, तुम्ही तुमच्या डिव्हाइसमध्ये इंटरफेस आणि एंडपॉइंट्स जोडू शकता. इंटरफेस आणि एंडपॉइंट्स प्रकार, प्रमाण आणि इतर पॅरामीटर्सच्या बाबतीत प्रत्येक यूएसबी क्लासच्या स्वतःच्या गरजा असतात. सिलिकॉन लॅब्स यूएसबी डिव्हाइस ते देत असलेल्या क्लासेसमध्ये इंटरफेस आणि एंडपॉइंट्स जोडते.
तुमच्या अॅप्लिकेशनमधून, तुम्ही USB क्लास इंस्टंटिएट करू शकता आणि तो कॉन्फिगरेशनमध्ये जोडू शकता. USB डिव्हाइस क्लास इंस्टन्सच्या संकल्पनेबद्दल अधिक माहितीसाठी, USB डिव्हाइस क्लासेस पहा. लक्षात ठेवा की तुम्ही मल्टी-फंक्शन (कंपोझिट) डिव्हाइस तयार करण्यासाठी कॉन्फिगरेशनमध्ये अनेक वेगवेगळे क्लास इंस्टंटिएट करू शकता आणि जोडू शकता.
माजीampखाली क्लास इंस्टन्स कसा तयार करायचा आणि तो कॉन्फिगरेशनमध्ये कसा जोडायचा ते दाखवले आहे.
Example – तुमच्या डिव्हाइसमध्ये क्लास इन्स्टन्स जोडणे

sl_status_t स्थिती; uint8_t वर्ग_nbr;
/* तुम्हाला वापरायच्या असलेल्या क्लासचा एक इन्स्टन्स तयार करा.*/ /* लक्षात ठेवा की क्लासनुसार या फंक्शनमध्ये अधिक आर्गुमेंट असू शकतात. */ स्टेटस = sl_usbd_ _create_instance(&class_nbr); if (status ! SL_STATUS_OK) { /* एक त्रुटी आली. त्रुटी हाताळणी येथे जोडली पाहिजे. */ }
/* फुल-स्पीड कॉन्फिगरेशनमध्ये क्लास इंस्टन्स जोडा. */ स्थिती = sl_usbd_ _add_to_configuration(class_nbr, /* sl_usbd_ द्वारे परत केलेला वर्ग क्रमांक _घटना_तयार करा. */
config_nbr_fs); /* sl_usbd_core_add_configuration() द्वारे परत केलेला कॉन्फिगरेशन क्रमांक. */ जर (स्थिती ! SL_STATUS_OK) { /* एक त्रुटी आली. येथे त्रुटी हाताळणी जोडली पाहिजे. */ }
तुमचे USB डिव्हाइस सुरू करत आहे
डिफॉल्टनुसार, डिव्हाइस इनिशिएलायझेशन पूर्ण झाल्यानंतर आणि कर्नल सुरू झाल्यानंतर USB डिव्हाइस कोअर टास्कद्वारे डिव्हाइस स्वयंचलितपणे सुरू होईल. डिव्हाइस कधी सुरू होते आणि USB होस्टद्वारे दृश्यमान होते हे नियंत्रित करण्यासाठी, ऑटो-स्टार्ट वैशिष्ट्य अक्षम करण्यासाठी कॉन्फिगरेशन परिभाषित करा SL_USBD_AUTO_START_USB_DEVICE वापरा. ​​अक्षम केल्यावर, तुम्ही तुमचे डिव्हाइस तयार/तयार केल्यानंतर, तुम्ही ते सुरू करू शकता आणि sl_usbd_core_start_device() फंक्शन कॉल करून USB होस्टला दृश्यमान करू शकता.
माजीampखाली sl_usbd_core_start_device() फंक्शन वापरून तुमचे डिव्हाइस कसे सुरू करायचे ते दाखवले आहे.
Example - तुमचे डिव्हाइस सुरू करणे

कॉपीराइट © 2025 सिलिकॉन प्रयोगशाळा. सर्व हक्क राखीव.

12/174

ओव्हरview

sl_status_t स्थिती;
status = sl_usbd_core_start_device(); जर (status ! SL_STATUS_OK) { /* एक त्रुटी आली. त्रुटी हाताळणी येथे जोडली पाहिजे. */ }

इव्हेंट हुक फंक्शन्स
यूएसबी डिव्हाइस कोर मॉड्यूल दोन कमकुवत हुक फंक्शन्स ऑफर करते जे तुम्ही तुमच्या अॅप्लिकेशनमध्ये पुन्हा परिभाषित करू शकता. त्यांचा उद्देश बस आणि कॉन्फिगरेशन इव्हेंट्स कधी येतात हे सूचित करणे आहे.
टेबल - यूएसबी इव्हेंट हुक फंक्शन्स

कार्यक्रम

वर्णन

बस

USB बस इव्हेंट घडल्यावर कॉल केला जातो.

USB कॉन्फिगरेशन इव्हेंट घडल्यावर कॉन्फिगरेशन कॉल केले जाते

फंक्शन सिग्नेचर
void sl_usbd_on_bus_event(sl_usbd_bus_event_t इव्हेंट); void sl_usbd_on_config_event(sl_usbd_config_event_t इव्हेंट, uint8_t config_nbr);

Example – इव्हेंट हुक फंक्शन्स

void sl_usbd_on_bus_event(sl_usbd_bus_event_t इव्हेंट) { स्विच (इव्हेंट) { केस SL_USBD_EVENT_BUS_CONNECT:
// जेव्हा होस्ट कंट्रोलर ब्रेकमध्ये USB केबल घातली जाते तेव्हा कॉल केला जातो;
केस SL_USBD_EVENT_BUS_DISCONNECT: // जेव्हा होस्ट कंट्रोलर ब्रेकमधून USB केबल काढली जाते तेव्हा कॉल केला जातो;
जेव्हा होस्ट रीसेट कमांड ब्रेक पाठवतो तेव्हा SL_USBD_EVENT_BUS_RESET: // कॉल केला जातो;
केस SL_USBD_EVENT_BUS_SUSPEND: // जेव्हा होस्ट सस्पेंड कमांड ब्रेक पाठवतो तेव्हा कॉल केला जातो;
केस SL_USBD_EVENT_BUS_RESUME: // जेव्हा होस्ट वेक अप कमांड ब्रेक पाठवतो तेव्हा कॉल केला जातो;
डीफॉल्ट: ब्रेक; } }
void sl_usbd_on_config_event(sl_usbd_config_event_t इव्हेंट, uint8_t config_nbr) { स्विच (इव्हेंट) { केस SL_USBD_EVENT_CONFIG_SET:
// जेव्हा होस्ट कॉन्फिगरेशन ब्रेक सेट करतो तेव्हा कॉल केला जातो;
केस SL_USBD_EVENT_CONFIG_UNSET: // कॉन्फिगरेशन अनसेट असताना कॉल केला जातो ब्रेक;
डीफॉल्ट: ब्रेक; } }

कॉपीराइट © 2025 सिलिकॉन प्रयोगशाळा. सर्व हक्क राखीव.

13/174

ओव्हरview

कॉपीराइट © 2025 सिलिकॉन प्रयोगशाळा. सर्व हक्क राखीव.

14/174

ओव्हरview
ओव्हरview

यूएसबी डिव्हाइस वर्ग

सिलिकॉन लॅब्स यूएसबी डिव्हाइसमध्ये उपलब्ध असलेले यूएसबी क्लासेस काही सामान्य वैशिष्ट्ये सामायिक करतात. हा विभाग या वैशिष्ट्यांचे आणि कोर लेयरशी त्यांच्या परस्परसंवादाचे स्पष्टीकरण देतो.
विशिष्ट वर्गाबद्दल अधिक माहितीसाठी, खालील पहा:
सीडीसी एसीएम क्लास एचआयडी क्लास एमएससी एससीएसआय क्लास विक्रेता क्लास
क्लास इंस्टन्स बद्दल
यूएसबी डिव्हाइसमध्ये उपलब्ध असलेले यूएसबी क्लासेस क्लास इंस्टन्सची संकल्पना अंमलात आणतात. क्लास इंस्टन्स डिव्हाइसमधील एका फंक्शनचे प्रतिनिधित्व करतो. हे फंक्शन एका इंटरफेसद्वारे किंवा इंटरफेसच्या गटाद्वारे वर्णन केले जाऊ शकते आणि ते एका विशिष्ट क्लासशी संबंधित असते.
प्रत्येक USB क्लास अंमलबजावणीमध्ये क्लास इन्स्टन्सच्या संकल्पनेवर आधारित काही कॉन्फिगरेशन आणि फंक्शन्स समान असतात. सामान्य कॉन्फिगरेशन आणि फंक्शन्स खालील तक्त्यामध्ये सादर केल्या आहेत. 'स्थिर किंवा कार्य' या स्तंभाच्या शीर्षकामध्ये, प्लेसहोल्डर XXXX वर्गाच्या नावाने बदलला जाऊ शकतो: CDC, HID, MSC, CDC_ACM किंवा VENDOR (फंक्शन नावांसाठी विक्रेता).
सारणी - बहुवर्ग उदाहरणांच्या संकल्पनेशी संबंधित स्थिरांक आणि कार्ये

स्थिरांक किंवा कार्य
SL_USBD_XXXX_CL ASS_INS TANCE_QUANTITY
SL_USBD_XXXX_CONFIGUR एशन_प्रमाण
sl_usb d _XXXX_cre ate _instannce ()
sl_usbd_XXXX_conf मध्ये_जोडा_इन्ग्युरेशन()

वर्णन
क्लास इंस्टन्सची कमाल संख्या कॉन्फिगर करते.
कमाल कॉन्फिगरेशनची संख्या कॉन्फिगर करते. क्लास इनिशिएलायझेशन दरम्यान, तयार केलेला क्लास इंस्टन्स एक किंवा अधिक कॉन्फिगरेशनमध्ये जोडला जाईल. एक नवीन क्लास इंस्टन्स तयार करते.
निर्दिष्ट डिव्हाइस कॉन्फिगरेशनमध्ये विद्यमान क्लास इंस्टन्स जोडते.

कोड अंमलबजावणीच्या बाबतीत, वर्ग एक स्थानिक जागतिक चल घोषित करेल ज्यामध्ये वर्ग नियंत्रण रचना असेल. ही वर्ग नियंत्रण रचना एका वर्ग उदाहरणाशी संबंधित आहे आणि वर्ग उदाहरण व्यवस्थापित करण्यासाठी विशिष्ट माहिती असेल.
खालील आकृत्या अनेक केस परिस्थिती दर्शवितात. प्रत्येक आकृतीमध्ये एक कोड एक्स समाविष्ट आहेample जे केस परिस्थितीशी जुळते.
आकृती - मल्टीपल क्लास इंस्टन्स - एफएस डिव्हाइस (१ इंटरफेससह १ कॉन्फिगरेशन) हे एक सामान्य यूएसबी डिव्हाइस दर्शवते. हे डिव्हाइस फुल-स्पीड (एफएस) आहे आणि त्यात एकच कॉन्फिगरेशन आहे. डिव्हाइसचे कार्य डेटा कम्युनिकेशनसाठी एंडपॉइंट्सच्या जोडीने बनलेल्या एका इंटरफेसद्वारे वर्णन केले आहे. एक क्लास इंस्टन्स तयार केला जातो आणि तुम्हाला त्याच्या संबंधित एंडपॉइंटसह संपूर्ण इंटरफेस व्यवस्थापित करण्यास अनुमती देईल.
आकृती - एकाधिक वर्ग उदाहरणे - 1 इंटरफेससह FS डिव्हाइस 1 कॉन्फिगरेशन)

कॉपीराइट © 2025 सिलिकॉन प्रयोगशाळा. सर्व हक्क राखीव.

15/174

ओव्हरview

आकृती - मल्टीपल क्लास इंस्टन्स - एफएस डिव्हाइस (१ इंटरफेससह १ कॉन्फिगरेशन) शी संबंधित कोड उदाहरणात दाखवला आहे.ample खाली.
Example – एकाधिक वर्ग उदाहरणे – 1 इंटरफेससह FS डिव्हाइस 1 कॉन्फिगरेशन)

sl_status_t स्थिती; uint8_t वर्ग_0;

void app_usbd_XXXX_enable(uint8_t class_nbr) { /* क्लास सक्षम इव्हेंट हाताळा. */ }

void app_usbd_XXXX_disable(uint8_t class_nbr) { /* क्लास डिसेबल इव्हेंट हाताळा. */ }

sl_usbd_XXXX_कॉलबॅक_t वर्ग_कॉलबॅक = {

(१)

.सक्षम करा = अ‍ॅप_यूएसबीडी_एक्सएक्सएक्सएक्स_सक्षम करा,

.अक्षम करा = अ‍ॅप_यूएसबीडी_एक्सएक्सएक्सएक्स_अक्षम करा

};

स्थिती = sl_usbd_XXXX_init();

(१)

जर (स्थिती ! SL_STATUS_OK) {

/* $$$$ त्रुटी हाताळा. */

}

स्थिती = sl_usbd_XXXX_create_instance(&class_callbacks,

(१)

&वर्ग_०);

जर (स्थिती ! SL_STATUS_OK) {

/* $$$$ त्रुटी हाताळा. */

}

स्थिती = sl_usbd_XXXX_configuration मध्ये_जोडा(वर्ग_0, कॉन्फिगर_0);

(१)

जर (स्थिती ! SL_STATUS_OK) {

/* $$$$ त्रुटी हाताळा. */

}

(१) प्रत्येक वर्ग डिव्हाइस कनेक्ट/डिस्कनेक्ट इव्हेंट्ससाठी आणि वर्ग विशिष्ट कार्यक्रमांसाठी कॉलबॅक फंक्शन्सचा संच देतो. sl_usbd_XXXX_create_instance() वापरून क्लास इन्स्टन्स तयार करताना कॉलबॅक स्ट्रक्चर ऑब्जेक्ट आर्गुमेंट म्हणून पास केला जातो.
कार्य
(१) क्लास सुरू करा. सर्व अंतर्गत व्हेरिएबल्स, स्ट्रक्चर्स आणि क्लास पोर्ट सुरू केले जातील. लक्षात ठेवा की काही क्लासेसमधील Init() फंक्शन इतर वितर्क घेऊ शकते.

कॉपीराइट © 2025 सिलिकॉन प्रयोगशाळा. सर्व हक्क राखीव.

16/174

ओव्हरview
(२) क्लास इंस्टन्स तयार करा, जो class_0 आहे. sl_usbd_XXXX_create_instance() फंक्शन class_0 शी संबंधित क्लास कंट्रोल स्ट्रक्चर वाटप करते. क्लासवर अवलंबून, sl_usbd_XXXX_create_instance() मध्ये क्लास नंबर व्यतिरिक्त अतिरिक्त पॅरामीटर्स असू शकतात जे क्लास कंट्रोल स्ट्रक्चरमध्ये साठवलेल्या क्लास-विशिष्ट माहितीचे प्रतिनिधित्व करतात. aaa (३) निर्दिष्ट कॉन्फिगरेशन नंबर, config_0 मध्ये clss inst nce, class_0 जोडा. sl_usbd_XXXX_add_to_configuration() इंटरफेस 0 आणि त्याच्याशी संबंधित IN आणि OUT एंडपॉइंट्स तयार करेल. परिणामी, क्लास इंस्टन्स इंटरफेस 0 आणि त्याचे एंडपॉइंट्स समाविष्ट करते. इंटरफेस 0 वर केलेले कोणतेही संप्रेषण क्लास इंस्टन्स नंबर, class_0 वापरेल. आकृती - मल्टीपल क्लास इंस्टन्स - FS डिव्हाइस (२ कॉन्फिगरेशन आणि मल्टीपल इंटरफेस) अधिक जटिल एक्स दर्शवतेample. एक पूर्ण-गती उपकरण दोन कॉन्फिगरेशनने बनलेले असते. उपकरणात एकाच वर्गातील दोन कार्ये असतात, परंतु प्रत्येक कार्याचे वर्णन दोन इंटरफेसद्वारे केले जाते आणि त्यात द्विदिशात्मक अंत्यबिंदूंची जोडी असते. या उदाहरणातampम्हणजे, दोन क्लास इंस्टन्स तयार केले जातात. प्रत्येक क्लास इंस्टन्स इंटरफेसच्या गटाशी संबंधित असतो, जो फिगर – मल्टिपल क्लास इंस्टन्स – एफएस डिव्हाइस (१ इंटरफेससह १ कॉन्फिगरेशन) आणि फिगर – मल्टिपल क्लास इंस्टन्स – एफएस डिव्हाइस (२ कॉन्फिगरेशन आणि मल्टिपल इंटरफेस) च्या विरूद्ध असतो जिथे क्लास इंस्टन्स एकाच इंटरफेसशी संबंधित होता.
आकृती - एकाधिक वर्ग उदाहरणे - FS डिव्हाइस 2 कॉन्फिगरेशन आणि एकाधिक इंटरफेस)

आकृती - मल्टीपल क्लास इंस्टन्स - एफएस डिव्हाइस (२ कॉन्फिगरेशन आणि मल्टीपल इंटरफेस) शी संबंधित कोड उदाहरणात दाखवला आहे.ampखाली दिले आहे. स्पष्टतेसाठी त्रुटी हाताळणी वगळण्यात आली आहे.
Example – एकाधिक वर्ग उदाहरणे – FS डिव्हाइस 2 कॉन्फिगरेशन आणि एकाधिक इंटरफेस)

कॉपीराइट © 2025 सिलिकॉन प्रयोगशाळा. सर्व हक्क राखीव.

17/174

ओव्हरview

sl_status_t स्थिती; uint8_t वर्ग_0; uint8_t वर्ग_1;
स्थिती = sl_usbd_XXXX_init();
स्थिती = sl_usbd_XXXX_create_instance(&class_0); स्थिती = sl_usbd_XXXX_create_instance(&class_1);
स्थिती = sl_usbd_XXXX_कॉन्फिगरेशनमध्ये_जोडा(वर्ग_0, cfg_0); स्थिती = sl_usbd_XXXX_कॉन्फिगरेशनमध्ये_जोडा(वर्ग_1, cfg_0);
स्थिती = sl_usbd_XXXX_कॉन्फिगरेशनमध्ये_जोडा(वर्ग_0, cfg_1); स्थिती = sl_usbd_XXXX_कॉन्फिगरेशनमध्ये_जोडा(वर्ग_1, cfg_1);

(१)
(१०५) (१५५)
(१०५) (१५५)
(१०५) (१५५)

(१) क्लास सुरू करा. कोणतेही अंतर्गत व्हेरिएबल्स, स्ट्रक्चर्स आणि क्लास पोर्ट सुरू केले जातील.
(२) क्लास इंस्टन्स तयार करा, class_0. फंक्शन sl_usbd_XXXX_create_instance() class_0 शी संबंधित क्लास कंट्रोल स्ट्रक्चर वाटप करते.
(३) क्लास इंस्टन्स तयार करा, class_1. फंक्शन sl_usbd_XXXX_create_instance() class_1 शी संबंधित दुसरी क्लास कंट्रोल स्ट्रक्चर वाटप करते.
(४) cfg_0 या कॉन्फिगरेशनमध्ये class_0 हा क्लास इन्स्टन्स जोडा. sl_usbd_XXXX_add_to_configuration() इंटरफेस 0, इंटरफेस 1, पर्यायी इंटरफेस आणि संबंधित IN आणि OUT एंडपॉइंट्स तयार करेल. इंटरफेस 0 किंवा इंटरफेस 1 वरील कोणत्याही डेटा कम्युनिकेशनसाठी क्लास इन्स्टन्स नंबर, class_0 वापरला जाईल.
(५) cfg_0 या कॉन्फिगरेशनमध्ये class_1 हा क्लास इन्स्टन्स जोडा. sl_usbd_XXXX_add_to_configuration() इंटरफेस २, इंटरफेस ३ आणि त्यांच्याशी संबंधित IN आणि OUT एंडपॉइंट्स तयार करेल. इंटरफेस २ किंवा इंटरफेस ३ वरील कोणत्याही डेटा कम्युनिकेशनसाठी क्लास इन्स्टन्स नंबर, class_1 वापरला जाईल.
(६) दुसऱ्या कॉन्फिगरेशनमध्ये, cfg_1 मध्ये, समान क्लास इंस्टन्स, class_0 आणि class_1 जोडा.
प्रत्येक वर्ग sl_usbd_XXXX_callbacks_t प्रकारची रचना परिभाषित करतो. त्याचा उद्देश प्रत्येक वर्गाला घटना घडल्यावर कॉल करण्यासाठी कॉलबॅक फंक्शन्सचा एक संच देणे आहे. प्रत्येक वर्गात दोन कॉलबॅक फंक्शन्स असतात. ते खालील तक्त्यात सादर केले आहेत.
सारणी - सामान्य वर्ग कॉलबॅक कार्ये

फील्ड वर्णन .enable जेव्हा USB क्लास इंस्टन्स यशस्वीरित्या सक्षम केला जातो तेव्हा कॉल केला जातो. .disable जेव्हा USB क्लास इंस्टन्स अक्षम केला जातो तेव्हा कॉल केला जातो.

फंक्शन सिग्नेचर void app_usbd_XXXX_enable(uint8_t class_nbr); void app_usbd_XXXX_disable(uint8_t class_nbr);

कॉपीराइट © 2025 सिलिकॉन प्रयोगशाळा. सर्व हक्क राखीव.

18/174

ओव्हरview
ओव्हरview
यूएसबी डिव्हाइस सीडीसी एसीएम क्लास
यूएसबी डिव्हाइस सीडीसी बेस क्लास ओव्हरview यूएसबी डिव्हाइस सीडीसी एसीएम क्लास रिसोर्स नीड्स कडून कोर यूएसबी डिव्हाइस सीडीसी एसीएम सबक्लास ओव्हरview यूएसबी डिव्हाइस सीडीसी एसीएम क्लास कॉन्फिगरेशन यूएसबी डिव्हाइस सीडीसी एसीएम क्लास प्रोग्रामिंग मार्गदर्शक
हा विभाग कम्युनिकेशन्स डिव्हाइस क्लास (CDC) क्लास आणि सिलिकॉन लॅब्सच्या USB डिव्हाइस स्टॅकद्वारे समर्थित संबंधित CDC सबक्लासचे वर्णन करतो. सिलिकॉन लॅब्स USB-डिव्हाइस सध्या अ‍ॅबस्ट्रॅक्ट कंट्रोल मॉडेल (ACM) सबक्लासला समर्थन देते, जो सामान्यतः सिरीयल इम्युलेशनसाठी वापरला जातो.
सीडीसीमध्ये विविध दूरसंचार आणि नेटवर्किंग उपकरणे समाविष्ट आहेत. दूरसंचार उपकरणांमध्ये अॅनालॉग मोडेम, अॅनालॉग आणि डिजिटल टेलिफोन, आयएसडीएन टर्मिनल अडॅप्टर इत्यादींचा समावेश आहे. उदाहरणार्थampनेटवर्किंग उपकरणांमध्ये ADSL आणि केबल मोडेम, इथरनेट अडॅप्टर आणि हब असतात. CDC मध्ये USB लिंक वापरून V.250 (टेलिफोन नेटवर्कवरील मोडेमसाठी) आणि इथरनेट (स्थानिक क्षेत्र नेटवर्क उपकरणांसाठी) सारख्या विद्यमान संप्रेषण सेवा मानकांना समाविष्ट करण्यासाठी एक फ्रेमवर्क परिभाषित केले आहे. संप्रेषण उपकरण डिव्हाइस व्यवस्थापन, आवश्यकतेनुसार कॉल व्यवस्थापन आणि डेटा ट्रान्समिशनचे प्रभारी असते.
सीडीसीने उपकरणांचे सात प्रमुख गट परिभाषित केले आहेत. प्रत्येक गट संप्रेषणाच्या एका मॉडेलशी संबंधित आहे, ज्यामध्ये अनेक उपवर्ग असू शकतात. सीडीसी बेस क्लास व्यतिरिक्त, उपकरणांच्या प्रत्येक गटाचे स्वतःचे स्पेसिफिकेशन दस्तऐवज असते. हे सात गट आहेत:
पब्लिक स्विच्ड टेलिफोन नेटवर्क (PSTN), व्हॉइसबँड मोडेम, टेलिफोन आणि सिरीयल इम्युलेशन डिव्हाइसेससह उपकरणे. इंटिग्रेटेड सर्व्हिसेस डिजिटल नेटवर्क (ISDN) डिव्हाइसेस, ज्यामध्ये टर्मिनल अॅडॉप्टर आणि टेलिफोनचा समावेश आहे. इथरनेट कंट्रोल मॉडेल (ECM) डिव्हाइसेस, ज्यामध्ये IEEE 802 फॅमिलीला सपोर्ट करणाऱ्या डिव्हाइसेसचा समावेश आहे (उदा.: केबल आणि ADSL मोडेम, वायफाय अॅडॉप्टर). एसिंक्रोनस ट्रान्सफर मोड (ATM) डिव्हाइसेस, ज्यामध्ये ADSL मोडेम आणि ATM नेटवर्कशी कनेक्ट केलेले इतर डिव्हाइसेस (वर्कस्टेशन, राउटर, LAN स्विच). वायरलेस मोबाइल कम्युनिकेशन्स (WMC) डिव्हाइसेस, ज्यामध्ये व्हॉइस आणि डेटा कम्युनिकेशन्स व्यवस्थापित करण्यासाठी वापरल्या जाणाऱ्या मल्टी-फंक्शन कम्युनिकेशन्स हँडसेट डिव्हाइसेसचा समावेश आहे. इथरनेट-फ्रेम केलेल्या डेटाची देवाणघेवाण करणारे इथरनेट इम्युलेशन मॉडेल (EEM) डिव्हाइसेस. नेटवर्क कंट्रोल मॉडेल (NCM) डिव्हाइसेस, ज्यामध्ये हाय-स्पीड नेटवर्क डिव्हाइसेसचा समावेश आहे (हाय स्पीड पॅकेट अॅक्सेस मोडेम, लाइन टर्मिनल इक्विपमेंट)
सीडीसी आणि संबंधित उपवर्ग अंमलबजावणी खालील वैशिष्ट्यांचे पालन करते:
युनिव्हर्सल सिरीयल बस, कम्युनिकेशन उपकरणांसाठी वर्ग व्याख्या, आवृत्ती १.२, ३ नोव्हेंबर २०१०. युनिव्हर्सल सिरीयल बस, कम्युनिकेशन, PSTN उपकरणांसाठी उपवर्ग, आवृत्ती १.२, ९ फेब्रुवारी २००७.
यूएसबी डिव्हाइस सीडीसी बेस क्लास ओव्हरview
संप्रेषण क्षमता अंमलात आणण्यासाठी सीडीसी उपकरण खालील इंटरफेसपासून बनलेले असते:
कम्युनिकेशन्स क्लास इंटरफेस (CCI) डिव्हाइस व्यवस्थापनासाठी आणि पर्यायी कॉल व्यवस्थापनासाठी जबाबदार आहे.
डिव्हाइस व्यवस्थापन डिव्हाइसचे सामान्य कॉन्फिगरेशन आणि नियंत्रण आणि होस्टला इव्हेंट्सची सूचना देण्यास सक्षम करते. कॉल व्यवस्थापन कॉल स्थापना आणि समाप्ती सक्षम करते. कॉल व्यवस्थापन DCI द्वारे मल्टीप्लेक्स केले जाऊ शकते. सर्व CDC डिव्हाइसेससाठी CCI अनिवार्य आहे. ते CDC डिव्हाइसद्वारे समर्थित कम्युनिकेशन मॉडेल निर्दिष्ट करून CDC फंक्शन ओळखते. CCI नंतर येणारा इंटरफेस(चे) कोणताही परिभाषित USB क्लास इंटरफेस असू शकतो, जसे की ऑडिओ किंवा विक्रेता-विशिष्ट इंटरफेस. विक्रेता-विशिष्ट इंटरफेस विशेषतः DCI द्वारे दर्शविला जातो.
डेटा क्लास इंटरफेस (DCI) डेटा ट्रान्समिशनसाठी जबाबदार आहे. प्रसारित केलेला आणि/किंवा प्राप्त केलेला डेटा विशिष्ट
स्वरूप. डेटा हा कम्युनिकेशन लाइनमधील कच्चा डेटा, मालकीच्या स्वरूपातील डेटा इत्यादी असू शकतो. CCI चे अनुसरण करणारे सर्व DCIs हे गौण इंटरफेस म्हणून पाहिले जाऊ शकतात.
एका CDC उपकरणात कमीत कमी एक CCI आणि शून्य किंवा अधिक DCI असणे आवश्यक आहे. एक CCI आणि कोणताही अधीनस्थ DCI एकत्रितपणे होस्टला एक वैशिष्ट्य प्रदान करतात. या क्षमतेला फंक्शन असेही म्हणतात. CDC संमिश्र उपकरणात, तुमच्याकडे अनेक असू शकतात

कॉपीराइट © 2025 सिलिकॉन प्रयोगशाळा. सर्व हक्क राखीव.

19/174

ओव्हरview
कार्ये. म्हणून, आकृतीमध्ये दाखवल्याप्रमाणे, हे उपकरण CCI आणि DCI(s) च्या अनेक संचांपासून बनलेले असेल - CDC कंपोझिट डिव्हाइस.
आकृती - सीडीसी कंपोझिट डिव्हाइस

सीडीसी उपकरणामध्ये खालील अंतिम बिंदूंचे संयोजन वापरण्याची शक्यता असते:
नियंत्रण IN आणि OUT एंडपॉइंट्सच्या जोडीला डीफॉल्ट एंडपॉइंट म्हणतात. एक पर्यायी बल्क किंवा इंटरप्ट IN एंडपॉइंट. बल्क किंवा आयसोक्रोनस IN आणि OUT एंडपॉइंट्सची जोडी. लक्षात ठेवा की सिलिकॉन लॅब्स USB डिव्हाइस स्टॅक सध्या आयसोक्रोनस एंडपॉइंट्सना समर्थन देत नाही.
खालील तक्त्यामध्ये वेगवेगळ्या एंडपॉइंट्सचा वापर आणि ते सीडीसीच्या कोणत्या इंटरफेसद्वारे वापरले जातात ते दाखवले आहे.
टेबल - सीडीसी एंडपॉइंट वापर

अंत्यबिंदू
IN नियंत्रित करा
नियंत्रण बाहेर
इंटरप्ट किंवा बल्क इन बल्क किंवा आयसोक्रोनस इन बल्क किंवा आयसोक्रोनस
बाहेर

दिशा
डिव्हाइस टू-होस्ट
होस्ट-टूडिव्हाइस
डिव्हाइस टू-होस्ट
डिव्हाइस टू-होस्ट
होस्ट-टूडिव्हाइस

इंटरफेस वापर

CCI

गणनेसाठी मानक विनंत्या, वर्ग-विशिष्ट विनंत्या, डिव्हाइस

व्यवस्थापन, आणि पर्यायीपणे कॉल व्यवस्थापन.

CCI

गणनेसाठी मानक विनंत्या, वर्ग-विशिष्ट विनंत्या, डिव्हाइस

व्यवस्थापन, आणि पर्यायीपणे कॉल व्यवस्थापन.

CCI

रिंग डिटेक्ट, सिरीयल लाइन स्टेटस, नेटवर्क स्टेटस यासारख्या इव्हेंट्सची सूचना.

DCI

कच्चा किंवा स्वरूपित डेटा संप्रेषण.

DCI

कच्चा किंवा स्वरूपित डेटा संप्रेषण.

बहुतेक कम्युनिकेशन डिव्हाइसेस इव्हेंट्सच्या होस्टला सूचित करण्यासाठी इंटरप्ट एंडपॉइंट वापरतात. जेव्हा प्रोप्रायटरी प्रोटोकॉल यूएसबी प्रोटोकॉल एररच्या बाबतीत डेटा रीट्रान्समिशनवर अवलंबून असतो तेव्हा डेटा ट्रान्समिशनसाठी आयसोक्रोनस एंडपॉइंट्स वापरू नयेत. आयसोक्रोनस कम्युनिकेशनमध्ये रीट्राय मेकॅनिझम नसल्यामुळे ते मूळतः डेटा गमावू शकते.
संप्रेषणाच्या सात प्रमुख मॉडेल्समध्ये अनेक उपवर्ग समाविष्ट आहेत. उपवर्ग डिव्हाइस व्यवस्थापन आणि कॉल व्यवस्थापन हाताळण्यासाठी डिव्हाइसने CCI चा वापर कसा करावा याचे वर्णन करतो. खालील तक्ता सर्व संभाव्य उपवर्ग आणि ते कोणत्या संप्रेषण मॉडेलशी संबंधित आहेत ते दर्शवितो.
सारणी - सीडीसी उपवर्ग

उपवर्ग
डायरेक्ट लाईन कंट्रोल मॉडेल अ‍ॅबस्ट्रॅक्ट कंट्रोल मॉडेल

संप्रेषण मॉडेल
PSTN
PSTN

Exampया उपवर्गाचा वापर करणाऱ्या उपकरणांची माहिती
यूएसबी होस्टद्वारे थेट नियंत्रित मोडेम उपकरणे
सिरीयल इम्युलेशन डिव्हाइसेस, सिरीयल कमांड सेटद्वारे नियंत्रित केलेले मोडेम डिव्हाइसेस

कॉपीराइट © 2025 सिलिकॉन प्रयोगशाळा. सर्व हक्क राखीव.

20/174

ओव्हरview

उपवर्ग

संप्रेषण मॉडेल

Exampया उपवर्गाचा वापर करणाऱ्या उपकरणांची माहिती

टेलिफोन नियंत्रण मॉडेल

PSTN

मल्टी-चॅनेल कंट्रोल आयएसडीएन मॉडेल

CAPI नियंत्रण मॉडेल ISDN

इथरनेट नेटवर्किंग ECM नियंत्रण मॉडेल

एटीएम नेटवर्किंग

एटीएम

नियंत्रण मॉडेल

वायरलेस हँडसेट नियंत्रण मॉडेल

डब्ल्यूएमसी

डिव्हाइस व्यवस्थापन WMC

मोबाईल डायरेक्ट लाइन मॉडेल

डब्ल्यूएमसी

ओबेक्स

डब्ल्यूएमसी

इथरनेट इम्युलेशन EEM मॉडेल

नेटवर्क नियंत्रण मॉडेल

NCM

व्हॉइस टेलिफोनी उपकरणे
बेसिक रेट टर्मिनल अ‍ॅडॉप्टर्स, प्रायमरी रेट टर्मिनल अ‍ॅडॉप्टर्स, टेलिफोन्स
बेसिक रेट टर्मिनल अ‍ॅडॉप्टर्स, प्रायमरी रेट टर्मिनल अ‍ॅडॉप्टर्स, टेलिफोन्स डीओसी-एसआयएस केबल मोडेम्स, पीपीपीओई इम्युलेशनला सपोर्ट करणारे एडीएसएल मोडेम्स, वाय-फाय अ‍ॅडॉप्टर्स (आयईईई ८०२.११-फॅमिली), आयईईई ८०२.३ अ‍ॅडॉप्टर्स एडीएसएल मोडेम्स
वायरलेस उपकरणांशी जोडणारे मोबाइल टर्मिनल उपकरणे
वायरलेस उपकरणांशी जोडणारे मोबाइल टर्मिनल उपकरणे वायरलेस उपकरणांशी जोडणारे मोबाइल टर्मिनल उपकरणे
वायरलेस उपकरणांशी जोडणारे मोबाईल टर्मिनल उपकरणे वाहतुकीचा पुढचा थर म्हणून इथरनेट फ्रेम वापरणारी उपकरणे. राउटिंग आणि इंटरनेट कनेक्टिव्हिटी उपकरणांसाठी नाही नेटवर्कवर हाय-स्पीड डेटा बँडविड्थ वाहून नेणारे IEEE 802.3 अडॅप्टर

कोर कडून यूएसबी डिव्हाइस सीडीसी एसीएम क्लास रिसोर्स गरजा

प्रत्येक वेळी जेव्हा तुम्ही sl_usbd_cdc_acm_add_to_configuration() फंक्शनला कॉल करून USB कॉन्फिगरेशनमध्ये CDC ACM क्लास इन्स्टन्स जोडता तेव्हा खालील संसाधने कोरमधून वाटली जातील.

संसाधन
इंटरफेस पर्यायी इंटरफेस एंडपॉइंट्स इंटरफेस गट

प्रमाण
१ ३०० ६९३ ६५७

लक्षात ठेवा की ते आकडे प्रत्येक कॉन्फिगरेशनसाठी आहेत. तुमचे SL_USBD_INTERFACE_QUANTITY, SL_USBD_ALT_INTERFACE_QUANTITY, SL_USBD_INTERFACE_GROUP_QUANTITY आणि SL_USBD_DESCRIPTOR_QUANTITY कॉन्फिगरेशन व्हॅल्यूज सेट करताना, क्लास किती कॉन्फिगरेशन्स जोडल्या जातील हे विचारात घेण्यास विसरू नका. SL_USBD_OPEN_ENDPOINTS_QUANTITY कॉन्फिगरेशन व्हॅल्यूसाठी, होस्टद्वारे कॉन्फिगरेशन सेट केल्यावरच एंडपॉइंट्स उघडले जातात, त्यामुळे तुम्हाला क्लास इंस्टन्ससाठी आवश्यक असलेल्या एंडपॉइंट्सची संख्या विचारात घ्यावी लागेल.
यूएसबी डिव्हाइस सीडीसी एसीएम सबक्लास ओव्हरview

सीडीसी बेस क्लास हा कम्युनिकेशन्स क्लास इंटरफेस (सीसीआय) आणि डेटा क्लास इंटरफेस (डीसीआय) पासून बनलेला असतो, ज्याची तपशीलवार चर्चा यूएसबी डिव्हाइस सीडीसी बेस क्लास ओव्हर मध्ये केली आहे.view . हा विभाग ACM प्रकारच्या CCI ची चर्चा करतो. यात व्यवस्थापन घटकासाठी एक डिफॉल्ट एंडपॉइंट आणि सूचना घटकासाठी एक इंटरप्ट एंडपॉइंट असतो. DCI वर अनिर्दिष्ट डेटा वाहून नेण्यासाठी बल्क एंडपॉइंट्सची जोडी वापरली जाते.
ACM उपवर्ग दोन प्रकारच्या संप्रेषण उपकरणांद्वारे वापरला जातो:
AT कमांडला सपोर्ट करणारी उपकरणे (उदाहरणार्थ, व्हॉइसबँड मोडेम). सिरीयल इम्युलेशन उपकरणे ज्यांना व्हर्च्युअल COM पोर्ट उपकरणे देखील म्हणतात.
ACM सबक्लाससाठी अनेक सबक्लास-विशिष्ट विनंत्या आहेत. त्या तुम्हाला डिव्हाइस नियंत्रित आणि कॉन्फिगर करण्याची परवानगी देतात. सर्व ACM विनंत्यांची संपूर्ण यादी आणि वर्णन स्पेसिफिकेशनमध्ये आढळू शकते.

कॉपीराइट © 2025 सिलिकॉन प्रयोगशाळा. सर्व हक्क राखीव.

21/174

ओव्हरview PSTN उपकरणांसाठी उपवर्ग, आवृत्ती १.२, ९ फेब्रुवारी २००७ =, विभाग ६.२.२.
या यादीतून, सिलिकॉन लॅब्स९ एसीएम उपवर्ग खालील गोष्टींना समर्थन देतो:
सारणी - सिलिकॉन लॅब्सद्वारे समर्थित ACM विनंत्या

उपवर्ग विनंती वर्णन

सेटकॉमफीचर गेटकॉमफीचर क्लियरकॉमफीचर

दिलेल्या संप्रेषण वैशिष्ट्यासाठी सेटिंग्ज नियंत्रित करण्यासाठी होस्ट ही विनंती पाठवतो. सिरीयल इम्युलेशनसाठी वापरली जात नाही.
दिलेल्या कम्युनिकेशन वैशिष्ट्यासाठी सध्याच्या सेटिंग्ज मिळविण्यासाठी होस्ट ही विनंती पाठवतो. सिरीयल इम्युलेशनसाठी वापरली जात नाही.
दिलेल्या कम्युनिकेशन वैशिष्ट्यासाठी सेटिंग्ज साफ करण्यासाठी होस्ट ही विनंती पाठवतो. सिरीयल इम्युलेशनसाठी वापरली जात नाही.

सेटलाइन कोडिंग

होस्ट ACM डिव्हाइस सेटिंग्ज कॉन्फिगर करण्यासाठी ही विनंती पाठवतो: बॉड रेट, स्टॉप बिट्सची संख्या, पॅरिटी प्रकार आणि डेटा बिट्सची संख्या. सिरीयल इम्युलेशनसाठी, प्रत्येक वेळी जेव्हा तुम्ही ओपन व्हर्च्युअल COM पोर्टसाठी सिरीयल सेटिंग्ज कॉन्फिगर करता तेव्हा ही विनंती सिरीयल टर्मिनलद्वारे स्वयंचलितपणे पाठवली जाते.

गेटलाइनकोडिंग

होस्ट ही विनंती वर्तमान ACM सेटिंग्ज (बॉड रेट, स्टॉप बिट्स, पॅरिटी, डेटा बिट्स) मिळविण्यासाठी पाठवतो. सिरीयल इम्युलेशनसाठी, सिरीयल टर्मिनल्स व्हर्च्युअल COM पोर्ट उघडताना ही विनंती स्वयंचलितपणे पाठवतात.

SetControlLineState होस्ट हाफ-डुप्लेक्स मोडेमसाठी कॅरियर नियंत्रित करण्यासाठी आणि डेटा टर्मिनल इक्विपमेंट (DTE) तयार आहे की नाही हे सूचित करण्यासाठी ही विनंती पाठवतो. सिरीयल इम्युलेशन प्रकरणात, DTE हे सिरीयल टर्मिनल आहे. सिरीयल इम्युलेशनसाठी, काही सिरीयल टर्मिनल्स तुम्हाला कंट्रोल्स सेटसह ही विनंती पाठविण्याची परवानगी देतात.

सेटब्रेक

होस्ट ही विनंती RS-232 स्टाईल ब्रेक जनरेट करण्यासाठी पाठवतो. सिरीयल इम्युलेशनसाठी, काही सिरीयल टर्मिनल्स तुम्हाला ही विनंती पाठवण्याची परवानगी देतात.

सिलिकॉन लॅब्स९ एसीएम सबक्लास होस्टला सध्याच्या सिरीयल लाइन स्थितीबद्दल सूचित करण्यासाठी इंटरप्ट IN एंडपॉइंट वापरतो. सिरीयल
लाइन स्टेट हा एक बिटमॅप आहे जो होस्टला याबद्दल माहिती देतो:

पॅरिटी एरर ओव्हररन झाल्यामुळे डेटा टाकून दिला गेला फ्रेमिंग एरर रिंग सिग्नल डिटेक्शनची स्थिती ब्रेक डिटेक्शन मेकॅनिझमची स्थिती ट्रान्समिशन कॅरियरची स्थिती रिसीव्हर कॅरियर डिटेक्शनची स्थिती

सिलिकॉन लॅब्स९ एसीएम सबक्लास अंमलबजावणी खालील तपशीलांचे पालन करते:
युनिव्हर्सल सिरीयल बस, कम्युनिकेशन्स, पीएसटीएन उपकरणांसाठी उपवर्ग, आवृत्ती १.२, ९ फेब्रुवारी २००७.
यूएसबी डिव्हाइस सीडीसी एसीएम क्लास कॉन्फिगरेशन

या विभागात CDC ACM क्लास (कम्युनिकेशन डिव्हाइस क्लास, अ‍ॅबस्ट्रॅक्ट कंट्रोल मॉडेल) कसे कॉन्फिगर करायचे याबद्दल चर्चा केली आहे. कॉन्फिगरेशन पॅरामीटर्सचे दोन गट आहेत:
यूएसबी डिव्हाइस सीडीसी एसीएम क्लास अॅप्लिकेशन स्पेसिफिक कॉन्फिगरेशन यूएसबी डिव्हाइस सीडीसी एसीएम क्लास इन्स्टन्स कॉन्फिगरेशन
यूएसबी डिव्हाइस सीडीसी एसीएम क्लास अॅप्लिकेशन विशिष्ट कॉन्फिगरेशन

सीडीसी बेस क्लास एसीएम सबक्लास
सीडीसी बेस क्लास

प्रथम, सिलिकॉन लॅब्स यूएसबी डिव्हाइस सीडीसी क्लास मॉड्यूल वापरण्यासाठी, तुम्हाला तुमच्या अॅप्लिकेशनच्या गरजेनुसार सीडीसी कंपाइल-टाइम कॉन्फिगरेशन #define-s समायोजित करावे लागेल. ते sl_usbd_core_config.h हेडरमध्ये पुन्हा एकत्रित केले जातात. file सीडीसी विभागांतर्गत. त्यांचा उद्देश यूएसबी डिव्हाइस मॉड्यूलला किती यूएसबी सीडीसी ऑब्जेक्ट्स वाटप करायचे आहेत याची माहिती देणे आहे.

कॉपीराइट © 2025 सिलिकॉन प्रयोगशाळा. सर्व हक्क राखीव.

22/174

ओव्हरview

खालील तक्ता या कॉन्फिगरेशन स्ट्रक्चरमध्ये उपलब्ध असलेल्या प्रत्येक कॉन्फिगरेशन फील्डचे वर्णन करतो.
सारणी - यूएसबी डिव्हाइस सीडीसी कॉन्फिगरेशन परिभाषित करते

कॉन्फिगरेशन नाव
S_INSTANCE_QUANT ITY म्हणून SL_USBD_CDC_CL
SL_USBD_CDC_CONF IGURATION_QUANTI
TY
एसएल_यूएसबीडी_सीडीसी_डेटा _इंटरफेस_क्वांटी
TY

वर्णन
फंक्शनला कॉल करून तुम्ही किती क्लास इंस्टन्स वाटप कराल याची संख्या
sl_usbd_cdc_acm_create_instance() .
कॉन्फिगरेशनची संख्या. ACM क्लास इंस्टन्स sl_usbd_cdc_acm_add_to_configuration() मध्ये एक किंवा अधिक aaaa कॉन्फिगरेशनमध्ये जोडता येतात.
सर्व CDC फंक्शन्ससाठी डेटा इंटरफेस (DCI) ची एकूण संख्या. प्रत्येक CDC ACM फंक्शन sl_usbd_cdc_acm_create_instance() फंक्शनशी जोडलेले आहे जे dd dt इंटरफेस करेल.

डीफॉल्ट मूल्य
2
1
2

एसीएम उपवर्ग
ACM उपवर्गात खालील तक्त्यामध्ये दाखवलेले एक कंपाइल-टाइम कॉन्फिगरेशन आहे.
टेबल - यूएसबी डिव्हाइस सीडीसी एसीएम कॉन्फिगरेशन परिभाषित करा

कॉन्फिगरेशन नाव
SL_USBD_CDC_ACM_SUBCL ASS_I NSTANCE_QUANTITY

वर्णन
वर कॉल करून तुम्ही वाटप कराल त्या सबक्लास उदाहरणांची संख्या कॉन्फिगर करते
फंक्शन sl_usbd_cdc_acm_create_instance() .

डीफॉल्ट मूल्य
2

यूएसबी डिव्हाइस सीडीसी एसीएम क्लास इन्स्टन्स कॉन्फिगरेशन

हा विभाग CDC ACM सिरीयल क्लास इंस्टन्सशी संबंधित कॉन्फिगरेशन परिभाषित करतो. क्लास इन्स्टन्स क्रिएशन लाइन स्टेट इंटरव्हल कॉल mgmt क्षमता p_acm_callbacks
क्लास इन्स्टन्स निर्मिती

CDC ACM सिरीयल क्लास इन्स्टन्स तयार करण्यासाठी, फंक्शन T ला sl_usbd_cdc_acm_create_instance() कॉल करा. येथे वर्णन केल्याप्रमाणे, त्याचे फंक्शन तीन कॉन्फिगरेशन आर्ग्युमेंट्स वापरते.

लाइन_स्टेट_इंटरव्हल
हा मध्यांतर (मिलीसेकंदांमध्ये) आहे ज्यामध्ये तुमचा CDC ACM सिरीयल क्लास इंस्टन्स Taa होस्टला लाइन स्टेट नोटिफिकेशन्सचा अहवाल देईल. त्याचा v lue पॉवर दोन (1, 2, 4, 8, 16, इ.) असणे आवश्यक आहे.

कॉल_एमजीएमटी_कॅपॅबिलिटीज
कॉल मॅनेजमेंट क्षमता बिटमॅप. बिटमॅपची संभाव्य मूल्ये खालीलप्रमाणे आहेत:

मूल्य (बिट)
एसएल_यूएसबीडी_एसीएम_सिरीयल_कॉल_एमजीएमटी_डीईव्ही
एसएल_यूएसबीडी_एसीएम_सीरियल_कॉल_एमजीएमटी_डेटा_सीसीआय _डीसीआय

वर्णन
डिव्हाइस कॉल व्यवस्थापन स्वतः हाताळते. डिव्हाइस डेटा क्लास इंटरफेसवर कॉल व्यवस्थापन माहिती पाठवू/प्राप्त करू शकते.

p_acm_कॉलबॅक

कॉपीराइट © 2025 सिलिकॉन प्रयोगशाळा. सर्व हक्क राखीव.

23/174

ओव्हरview

aa M aa p_acm_callbacks हा sl_usbd_cdc_acm_callbacks_t प्रकारच्या स्ट्रक्चरचा पॉइंटर आहे. त्याचा उद्देश CDC AC Cl ss कॉलबॅक फंक्शन्सचा संच CDC ACM इव्हेंट घडल्यावर कॉल करणे आहे. सर्व कॉलबॅक अनिवार्य नाहीत आणि कॉलबॅकची आवश्यकता नसताना कॉलबॅक स्ट्रक्चर व्हेरिएबलमध्ये नल पॉइंटर (NULL) पास केला जाऊ शकतो. खालील तक्ता या कॉन्फिगरेशन स्ट्रक्चरमध्ये उपलब्ध असलेल्या प्रत्येक कॉन्फिगरेशन फील्डचे वर्णन करतो.
सारणी – sl_usbd_cdc_acm _callbacks_t कॉन्फिगरेशन स्ट्रक्चर

फील्ड

वर्णन

.सक्षम करा

USB क्लास इंस्टन्स सक्षम असताना कॉल केला जातो

यशस्वीरित्या

.अक्षम करा

USB क्लास इंस्टन्स अक्षम केल्यावर कॉल केला जातो.

.line_control_changed लाईन कंट्रोल बदल प्राप्त झाल्यावर कॉल केला जातो.

line_coding_changed लाइन कोडिंग बदल प्राप्त झाल्यावर कॉल केला जातो.

फंक्शन सिग्नेचर
व्हॉइड अ‍ॅप_यूएसबीडी_सीडीसी_एसीएम_एनेबल(यूआयएनटी८_टी सबक्लास_एनबीआर);
व्हॉइड अ‍ॅप_यूएसबीडी_सीडीसी_एसीएम_डिसेबल(यूआयएनटी८_टी सबक्लास_एनबीआर);
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
*पी_लाइन_कोडिंग

कॉलबॅक फंक्शन्ससाठी इव्हेंट सूचना कॉलबॅक नोंदणी विभाग पहा उदा.ampले
यूएसबी डिव्हाइस सीडीसी एसीएम क्लास प्रोग्रामिंग मार्गदर्शक

हा विभाग सीडीसी अ‍ॅबस्ट्रॅक्ट कंट्रोल मॉडेल क्लास कसा वापरायचा ते स्पष्ट करतो. यूएसबी डिव्हाइस सुरू करणे सीडीसी एसीएम क्लास तुमच्या डिव्हाइसमध्ये यूएसबी डिव्हाइस सीडीसी एसीएम क्लास इन्स्टन्स जोडणे सीडीसी एसीएम क्लास वापरून संप्रेषण करणे
यूएसबी डिव्हाइस सीडीसी एसीएम क्लास सुरू करणे

तुमच्या डिव्हाइसमध्ये CDC ACM क्लास फंक्शनॅलिटी जोडण्यासाठी, तुम्हाला प्रथम sl_usbd_cdc_init() आणि sl_usbd_cdc_acm_init() फंक्शन्स accll करून CDC बेस क्लास आणि ACM सबक्लास इनिशियलाइज करावे लागतील. खालील उदाहरणात default rguments वापरून 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 क्लास कार्यक्षमता जोडण्यासाठी, तुम्हाला एक इंस्टन्स तयार करावा लागेल, नंतर तो तुमच्या डिव्हाइसच्या कॉन्फिगरेशनमध्ये जोडावा लागेल.
सीडीसी एसीएम क्लास इन्स्टन्स तयार करणे

कॉपीराइट © 2025 सिलिकॉन प्रयोगशाळा. सर्व हक्क राखीव.

24/174

ओव्हरview
तुमच्या डिव्हाइसच्या कॉन्फिगरेशनमध्ये CDC ACM क्लास इन्स्टन्स जोडणे इव्हेंट सूचना कॉलबॅक नोंदणी करणे
सीडीसी एसीएम क्लास इन्स्टन्स तयार करणे
aa M aaa sl_usbd_cdc_acm_create_instance() हे फंक्शन वापरून CDC AC clss instnce कसे तयार करायचे ते दाखवते. T aaa M aaa हे उदाहरण खाली sl_usbd_cdc_acm_create_instance() मध्ये CDC AC clss instnce कसे तयार करायचे ते दाखवते.
Example – sl_usbd_cdc_acm_create_instance() द्वारे CDC ACM फंक्शन तयार करणे

uint8_t सबक्लास_एनबीआर; sl_status_t स्थिती;
स्थिती = sl_usbd_cdc_acm_create_instance(64u, SL_USBD_ACM_SERIAL_CALL_MGMT_DATA_CCI_DCI | SL_USBD_ACM_SERIAL_CALL_MGMT_DEV, NULL, &subclass_nbr);
जर (स्थिती ! SL_STATUS_OK) { /* एक त्रुटी आली. त्रुटी हाताळणी येथे जोडली पाहिजे. */
}
तुमच्या डिव्हाइसच्या कॉन्फिगरेशनमध्ये CDC ACM क्लास इन्स्टन्स जोडणे
तुम्ही CDC ACM क्लास इन्स्टन्स तयार केल्यानंतर, तुम्ही फंक्शन कॉल करून ते कॉन्फिगरेशनमध्ये जोडू शकता.
sl_usbd_cdc_acm_add_to_configuration() .
खालील उदाहरण sl_usbd_cdc_acm_add_to_configuration() कसे करायचे ते दाखवते.
Example – USBD ACM sl_usbd_cdc_acm_add_to_configuration() वर कॉल करा

sl_status_t स्थिती;

स्थिती = sl_usbd_cdc_acm_add_to_configuration(subclass_nbr,

(१)

कॉन्फिग_एनबीआर_एफएस);

(१)

जर (स्थिती ! SL_STATUS_OK) {

/* एक त्रुटी आली. त्रुटी हाताळणी येथे जोडली पाहिजे. */

}

aaa (1) sl_usbd_cdc_acm_create_instance() द्वारे परत केलेल्या कॉन्फिगरेशनमध्ये dd करण्यासाठी Cl ss क्रमांक. (2) कॉन्फिगरेशन क्रमांक (येथे तो फुल-स्पीड कॉन्फिगरेशनमध्ये जोडत आहे).
कार्यक्रम सूचना कॉलबॅक नोंदणी करणे
सीडीसी एसीएम सिरीयल क्लास तुमच्या अॅप्लिकेशनला लाइन कंट्रोल किंवा कोडिंगमधील कोणत्याही बदलांची सूचना कॉलबॅक फंक्शन्सद्वारे देऊ शकतो. एसीएम इन्स्टन्स तयार करताना कॉलबॅक फंक्शन्स स्ट्रक्चर वितर्क म्हणून पास केले जाऊ शकते. लक्षात ठेवा की ते कॉलबॅक पर्यायी आहेत. उदा.ample – CDC ACM कॉलबॅक नोंदणी कॉलबॅक नोंदणी फंक्शन्सचा वापर दर्शवते. उदा.ample – CDC ACM कॉलबॅक अंमलबजावणी एक माजी दाखवतेampकॉलबॅक फंक्शन्सच्या अंमलबजावणीची तारीख.
Example – CDC ACM कॉलबॅक नोंदणी

कॉपीराइट © 2025 सिलिकॉन प्रयोगशाळा. सर्व हक्क राखीव.

25/174

ओव्हरview

uint8_t सबक्लास_एनबीआर; sl_status_t स्थिती;
sl_usbd_cdc_acm_callbacks_t sli_usbd_cdc_acm_callbacks = { अ‍ॅप_यूएसबीडी_सीडीसी_एसीएम_कनेक्ट, अ‍ॅप_यूएसबीडी_सीडीसी_एसीएम_डिस्कनेक्ट, अ‍ॅप_यूएसबीडी_सीडीसी_एसीएम_लाइन_कंट्रोल_बदलले, अ‍ॅप_यूएसबीडी_सीडीसी_एसीएम_लाइन_कोडिंग_बदलले, };
स्थिती = sl_usbd_cdc_acm_create_instance(64u, SL_USBD_ACM_SERIAL_CALL_MGMT_DATA_CCI_DCI | SL_USBD_ACM_SERIAL_CALL_MGMT_DEV, &sli_usbd_cdc_acm_callbacks, &subclass_nbr);
जर (स्थिती ! SL_STATUS_OK) { /* एक त्रुटी आली. त्रुटी हाताळणी येथे जोडली पाहिजे. */ }
Example – CDC ACM कॉलबॅक अंमलबजावणी

बूल अ‍ॅप_यूएसबीडी_सीडीसी_एसीएम_लाइन_कोडिंग_बदलले (uint8_t

उपवर्ग_एनबीआर,

sl_usbd_cdc_acm_line_coding_t *p_line_coding)

{

uint32_t बॉड्रेट_नवीन;

uint8_t पॅरिटी_नवीन;

नवीन बिट्स थांबवा;

uint8_t डेटा_बिट_नवीन;

/* करावयाचे काम नवीन लाइन कोडिंग लागू करा.*/ baudrate_new = p_line_coding->BaudRate; parity_new = p_line_coding->Parity; stop_bits_new = p_line_coding->StopBits; data_bits_new = p_line_coding->DataBits;

परत (खरे);

(१)

}

void app_usbd_cdc_acm_line_control_changed (uint8_t subclass_nbr, uint8_t event, uint8_t event_changed)
{ बूल आरटीएस_स्टेट; बूल आरटीएस_स्टेट_बदलले; बूल डीटीआर_स्टेट; बूल डीटीआर_स्टेट_बदलले; बूल ब्रक_स्टेट; बूल ब्रक_स्टेट_बदलले;

/* करा नवीन लाइन कंट्रोल लागू करा. */ rts_state = ((event & SL_USBD_CDC_ACM_CTRL_RTS) ! 0) ? true : false; rts_state_changed = ((event_changed & SL_USBD_CDC_ACM_CTRL_RTS) ! 0) ? true : false; dtr_state = ((event & SL_USBD_CDC_ACM_CTRL_DTR) ! 0) ? true : false; dtr_state_changed = ((event_changed & SL_USBD_CDC_ACM_CTRL_DTR) ! 0) ? true : false; brk_state = ((event & SL_USBD_CDC_ACM_CTRL_BREAK) ! 0) ? true : false; brk_state_changed = ((घटना_बदललेली आणि SL_USBD_CDC_ACM_CTRL_BREAK) ! 0) ? खरे : खोटे;
}

(१) जर लाइन कोडिंग लागू करणे अयशस्वी झाले तर या फंक्शनमध्ये false परत करणे महत्वाचे आहे. अन्यथा, true परत करा.
सीडीसी एसीएम क्लास वापरून संवाद साधणे
सिरीयल स्टेटस
लाइन कोडिंग लाइन नियंत्रण

कॉपीराइट © 2025 सिलिकॉन प्रयोगशाळा. सर्व हक्क राखीव.

26/174

ओव्हरview

लाइन स्टेट सबक्लास इन्स्टन्स कम्युनिकेशन
सिरीयल स्टेटस
लाइन कोडिंग
यूएसबी होस्ट सीडीसी एसीएम डिव्हाइसचे लाइन कोडिंग (बॉड रेट, पॅरिटी इ.) नियंत्रित करतो. आवश्यक असल्यास, लाइन कोडिंग सेट करण्यासाठी अॅप्लिकेशन जबाबदार असते. खालील तक्त्यामध्ये वर्णन केल्याप्रमाणे, वर्तमान लाइन कोडिंग पुनर्प्राप्त करण्यासाठी आणि सेट करण्यासाठी दोन कार्ये प्रदान केली आहेत.
टेबल - सीडीसी एसीएम लाइन कोडिंग फंक्शन्स

कार्य
sl_usbd_cdc_acm_g आणि t_line _co d ing ()
sl_usbd_cdc_acm_s आणि t_line _cod ing ()

वर्णन
तुमचा अॅप्लिकेशन सेटलाइनकोडिंग रिक्वेस्ट वापरून होस्टकडून किंवा sl_usbd_cdc_acm_set_line_coding() फंक्शन वापरून सध्याच्या लाइन कोडिंग सेटिंग्ज सेट करू शकतो.
तुमचा अॅप्लिकेशन लाइन कोडिंग सेट करू शकतो. होस्ट गेटलाइनकोडिंग विनंतीसह सेटिंग्ज पुनर्प्राप्त करू शकतो.

रेषा नियंत्रण
यूएसबी होस्ट सीडीसी एसीएम डिव्हाइसचे लाइन कंट्रोल (आरटीएस आणि डीटीआर पिन, ब्रेक सिग्नल आणि असेच) नियंत्रित करतो. आवश्यक असल्यास, तुमचा अॅप्लिकेशन लाइन कंट्रोल्स लागू करण्यासाठी जबाबदार असतो. खालील तक्त्यामध्ये वर्णन केल्याप्रमाणे, वर्तमान लाइन कंट्रोल्स पुनर्प्राप्त करण्यासाठी आणि सेट करण्यासाठी एक फंक्शन प्रदान केले आहे.
टेबल - सीडीसी एसीएम लाइन कंट्रोल फंक्शन्स

कार्य
sl_usb d _cd c_acm_g e t_line _co intr o l_state ()

तुमचा अॅप्लिकेशन SetControlLineState विनंती वापरून होस्टने सेट केलेली सध्याची नियंत्रण रेषेची स्थिती मिळवू शकतो.

रेषा राज्य
USB होस्ट नियमित अंतराने लाईन स्टेट मिळवतो. तुमच्या अॅप्लिकेशनने प्रत्येक वेळी लाईन स्टेट बदलल्यावर अपडेट करणे आवश्यक आहे. आवश्यक असल्यास, तुमचा अॅप्लिकेशन लाईन स्टेट सेट करण्यासाठी जबाबदार आहे. खालील तक्त्यामध्ये वर्णन केल्याप्रमाणे, वर्तमान लाईन कंट्रोल्स मिळवण्यासाठी आणि सेट करण्यासाठी दोन फंक्शन्स प्रदान केले आहेत.
सारणी - सीडीसी एसीएम लाइन स्टेट फंक्शन्स

कार्य
sl_usb d _cd c_acm_se t _लाइन _स्टेट _e vent()
sl_usbd_cdc_acm_cle ar_line _state _e vent()

तुमचा अॅप्लिकेशन कोणताही लाइन स्टेट इव्हेंट सेट करू शकतो. लाइन स्टेट सेट करताना, सिरीयल लाइन स्टेटमध्ये बदल झाल्याची माहिती देण्यासाठी होस्टला एक इंटरप्ट IN ट्रान्सफर पाठवला जातो.
अॅप्लिकेशन लाइन स्टेटच्या दोन इव्हेंट्स क्लिअर करू शकते: ट्रान्समिशन कॅरियर आणि रिसीव्हर कॅरियर डिटेक्शन. इतर सर्व इव्हेंट्स एसीएम सिरीयल इम्युलेशन सबक्लासद्वारे स्वयं-क्लीअर केले जातात.

उपवर्ग इन्स्टन्स कम्युनिकेशन

सिलिकॉन लॅब्सचा एसीएम सबक्लास होस्टशी संवाद साधण्यासाठी खालील फंक्शन्स ऑफर करतो. फंक्शन्स9 पॅरामीटर्सबद्दल अधिक माहितीसाठी, सीडीसी एसीएम सबक्लास फंक्शन्स संदर्भ पहा.

फंक्शनचे नाव
sl_usb d _cd c_acm_ पुन्हा जाहिरात () sl_usb d _cd c_acm_write ()

ऑपरेशन
बल्क आउट एंडपॉइंटद्वारे होस्टकडून डेटा प्राप्त करते. हे फंक्शन ब्लॉक करत आहे. बल्क IN एंडपॉइंटद्वारे होस्टला डेटा पाठवते. हे फंक्शन ब्लॉक करत आहे.

कॉपीराइट © 2025 सिलिकॉन प्रयोगशाळा. सर्व हक्क राखीव.

27/174

ओव्हरview

सारणी - CDC ACM कम्युनिकेशन API सारांश aaaaa sl_usbd_cdc_acm_read() आणि sl_usbd_cdc_acm_write() समकालिक संप्रेषण प्रदान करतात, जे trnsfer ब्लॉक करत आहे असे म्हणतात. दुसऱ्या शब्दांत, फंक्शन कॉल केल्यावर, अॅप्लिकेशन त्रुटीसह किंवा त्याशिवाय हस्तांतरण पूर्ण होईपर्यंत ब्लॉक करते. कायमची वाट पाहणे टाळण्यासाठी टाइमआउट निर्दिष्ट केले जाऊ शकते. माजीampखाली वाचन आणि लेखनाची उदाहरणे दाखवली आहेत.ample जो बल्क आउट एंडपॉइंट वापरून होस्टकडून डेटा प्राप्त करतो आणि बल्क IN एंडपॉइंट वापरून होस्टला डेटा पाठवतो.
सूची - सिरीयल वाचन आणि लेखन उदा.ample

__संरेखित(४) uint8_t rx_buf[2];

__संरेखित(४) uint8_t tx_buf[2];

uint32_t

एक्सफर_लेन;

एसएल_स्टेटस_टी

स्थिती;

स्थिती = sl_usbd_cdc_acm_read(उपवर्ग_nbr,

(१)

आरएक्स_बफ,

(१)

2u,

0u,

(१)

&xfer_len);

जर (स्थिती ! SL_STATUS_OK) {

/* एक त्रुटी आली. त्रुटी हाताळणी येथे जोडली पाहिजे. */

}

स्थिती = sl_usbd_cdc_acm_write(उपवर्ग_nbr,

(१)

tx_buf,

(१)

2u,

0u,

(१)

&xfer_len);

जर (स्थिती ! SL_STATUS_OK) {

/* एक त्रुटी आली. त्रुटी हाताळणी येथे जोडली पाहिजे. */

}

T aaaaa M (1) sl_usbd_cdc_acm_create_instance() सह तयार केलेला he cl ss inst nce क्रमांक योग्य बल्क OUT किंवा IN एंडपॉइंटवर ट्रान्सफर रूट करण्यासाठी AC सबक्लासला n इंटर्नल संदर्भ प्रदान करतो. (2) तुमच्या अॅप्लिकेशनने फंक्शनला प्रदान केलेला बफर सर्व डेटा सामावून घेण्यासाठी पुरेसा मोठा आहे याची खात्री केली पाहिजे. अन्यथा, सिंक्रोनाइझेशन समस्या उद्भवू शकतात. (3) अनंत ब्लॉकिंग परिस्थिती टाळण्यासाठी, मिलिसेकंदांमध्ये व्यक्त केलेला टाइमआउट निर्दिष्ट करा. 809 चे मूल्य अॅप्लिकेशन टास्कला कायमचे वाट पाहण्यास भाग पाडते. (4) अॅप्लिकेशन इनिशिएलाइज्ड ट्रान्समिट बफर प्रदान करते.

कॉपीराइट © 2025 सिलिकॉन प्रयोगशाळा. सर्व हक्क राखीव.

28/174

ओव्हरview
ओव्हरview

यूएसबी डिव्हाइस एचआयडी क्लास

यूएसबी डिव्हाइस एचआयडी क्लास ओव्हरview यूएसबी डिव्हाइस एचआयडी क्लास रिसोर्स नीड्स कडून कोर यूएसबी डिव्हाइस एचआयडी क्लास कॉन्फिगरेशन यूएसबी डिव्हाइस एचआयडी क्लास प्रोग्रामिंग गाइड एचआयडी नियतकालिक इनपुट रिपोर्ट्स टास्क
हा विभाग सिलिकॉन लॅब्स यूएसबी डिव्हाइसद्वारे समर्थित ह्यूमन इंटरफेस डिव्हाइस (HID) वर्गाचे वर्णन करतो.
HID वर्गात कीबोर्ड, उंदीर, पॉइंटिंग डिव्हाइसेस आणि गेम डिव्हाइसेस यासारख्या संगणक ऑपरेशन्स नियंत्रित करण्यासाठी मानवांनी वापरल्या जाणाऱ्या उपकरणांचा समावेश आहे.
HID वर्गाचा वापर नॉब्स, स्विचेस, बटणे आणि स्लायडर सारखी नियंत्रणे असलेल्या संमिश्र उपकरणात देखील केला जाऊ शकतो. उदा.ampऑडिओ हेडसेटमधील ले, म्यूट आणि व्हॉल्यूम नियंत्रणे हे हेडसेटच्या HID फंक्शनद्वारे नियंत्रित केली जातात. HID वर्ग फक्त नियंत्रण आणि व्यत्यय हस्तांतरण वापरून कोणत्याही हेतूसाठी डेटाची देवाणघेवाण करू शकतो.
HID क्लास हा सर्वात जुना आणि सर्वाधिक वापरला जाणारा USB क्लास आहे. सर्व प्रमुख होस्ट ऑपरेटिंग सिस्टीम HID डिव्हाइसेस व्यवस्थापित करण्यासाठी एक नेटिव्ह ड्रायव्हर प्रदान करतात, म्हणूनच विविध विक्रेता-विशिष्ट डिव्हाइसेस HID क्लाससह कार्य करतात. या क्लासमध्ये LEDs, ऑडिओ, टॅक्टाइल फीडबॅक इत्यादी विविध प्रकारचे आउटपुट आयटम देखील समाविष्ट आहेत.
HID अंमलबजावणी खालील वैशिष्ट्यांचे पालन करते:
मानवी इंटरफेस उपकरणांसाठी डिव्हाइस वर्ग व्याख्या (HID), 6/27/01, आवृत्ती 1.11. युनिव्हर्सल सिरीयल बस HID वापर सारण्या, 10/28/2004, आवृत्ती 1.12.
यूएसबी डिव्हाइस एचआयडी क्लास ओव्हरview
ओव्हरview
HID डिव्हाइस खालील एंडपॉइंट्सने बनलेले असते:
डीफॉल्ट एंडपॉइंट नावाच्या कंट्रोल IN आणि OUT एंडपॉइंट्सची जोडी एक इंटरप्ट IN एंडपॉइंट एक पर्यायी इंटरप्ट आउट एंडपॉइंट
खालील तक्त्यामध्ये वेगवेगळ्या एंडपॉइंट्सच्या वापराचे वर्णन केले आहे:
सारणी - HID वर्ग अंतिम बिंदू वापर

एंडपॉइंट दिशा वापर

IN नियंत्रित करा
नियंत्रण
बाहेर
इंटरप्ट IN
व्यत्यय आणणे
बाहेर

डिव्हाइस टू-होस्ट
होस्ट-टूडिव्हाइस
डिव्हाइस टू-होस्ट
होस्ट-टूडिव्हाइस

गणना, वर्ग-विशिष्ट विनंत्या आणि डेटा कम्युनिकेशनसाठी मानक विनंत्या (GET_REPORT विनंतीसह होस्टला पाठवलेले इनपुट, वैशिष्ट्य अहवाल). गणना, वर्ग-विशिष्ट विनंत्या आणि डेटा कम्युनिकेशनसाठी मानक विनंत्या (आउटपुट, SET_REPORT विनंतीसह होस्टकडून प्राप्त झालेले वैशिष्ट्य अहवाल). डेटा कम्युनिकेशन (इनपुट आणि वैशिष्ट्य अहवाल).
डेटा कम्युनिकेशन (आउटपुट आणि फीचर रिपोर्ट).

अहवाल द्या

कॉपीराइट © 2025 सिलिकॉन प्रयोगशाळा. सर्व हक्क राखीव.

29/174

ओव्हरview

एक होस्ट आणि एक HID डिव्हाइस रिपोर्ट्स वापरून डेटाची देवाणघेवाण करतात. रिपोर्टमध्ये HID डिव्हाइसच्या नियंत्रणे आणि इतर भौतिक घटकांबद्दल माहिती देणारा फॉरमॅट केलेला डेटा असतो. वापरकर्त्याद्वारे नियंत्रण हाताळता येते आणि डिव्हाइसच्या एका पैलूचे संचालन करते. उदा.ample, नियंत्रण हे माऊस किंवा कीबोर्डवरील बटण, स्विच इत्यादी असू शकते. इतर घटक वापरकर्त्याला विशिष्ट डिव्हाइसच्या वैशिष्ट्यांच्या स्थितीबद्दल माहिती देतात. उदा.ampले, कीबोर्डवरील एलईडी वापरकर्त्याला कॅप्स लॉक चालू आहे, न्यूमेरिक कीपॅड सक्रिय आहे इत्यादींबद्दल सूचित करतात.
रिपोर्ट डिस्क्रिप्टरच्या कंटेंटचे विश्लेषण करून होस्टला रिपोर्ट डेटाचे स्वरूप आणि वापर समजतो. कंटेंटचे विश्लेषण पार्सरद्वारे केले जाते. रिपोर्ट डिस्क्रिप्टर डिव्हाइसमधील प्रत्येक कंट्रोलद्वारे प्रदान केलेल्या डेटाचे वर्णन करतो. ते अशा आयटमपासून बनलेले असते जे डिव्हाइसबद्दल माहितीचे तुकडे असतात आणि त्यात 1-बाइट प्रीफिक्स आणि व्हेरिएबल-लेंथ असते.
डेटा. आयटम फॉरमॅटबद्दल अधिक तपशीलांसाठी, पहा
१.११=, कलम ५.६ आणि ६.२.२.
वस्तूंचे तीन मुख्य प्रकार आहेत:
मुख्य आयटम विशिष्ट प्रकारच्या डेटा फील्ड परिभाषित करतो किंवा गटबद्ध करतो.
जागतिक आयटम नियंत्रणाच्या डेटा वैशिष्ट्यांचे वर्णन करतो.
स्थानिक आयटम नियंत्रणाच्या डेटा वैशिष्ट्यांचे वर्णन करतो.
प्रत्येक आयटम प्रकार वेगवेगळ्या फंक्शन्सद्वारे परिभाषित केला जातो. आयटम फंक्शनला a असेही म्हटले जाऊ शकते tag. आयटम फंक्शन हे तीन प्रमुख आयटम प्रकारांपैकी एकाशी संबंधित उप-आयटम म्हणून पाहिले जाऊ शकते. खालील तक्त्यामध्ये थोडक्यात माहिती दिली आहेview प्रत्येक आयटम प्रकारातील आयटम9s फंक्शन्सचे. प्रत्येक श्रेणीतील आयटमच्या संपूर्ण वर्णनासाठी, पहा
सारणी - प्रत्येक आयटम प्रकारासाठी आयटमचे कार्य वर्णन

आयटम आयटम प्रकार फंक्शन

वर्णन

मुख्य इनपुट

एक किंवा अधिक भौतिक नियंत्रणांद्वारे प्रदान केलेल्या डेटाबद्दल माहितीचे वर्णन करते.

मुख्य आउटपुट डिव्हाइसला पाठवलेल्या डेटाचे वर्णन करते.

मुख्य वैशिष्ट्य

डिव्हाइसला पाठवलेल्या किंवा प्राप्त झालेल्या डिव्हाइस कॉन्फिगरेशन माहितीचे वर्णन करते जी डिव्हाइसच्या किंवा त्याच्या घटकांपैकी एकाच्या एकूण वर्तनावर प्रभाव पाडते.

मुख्य संग्रह गटाशी संबंधित आयटम (इनपुट, आउटपुट किंवा वैशिष्ट्य).

संग्रहाचा मुख्य शेवट संग्रह बंद करतो. संग्रह

कॉपीराइट © 2025 सिलिकॉन प्रयोगशाळा. सर्व हक्क राखीव.

30/174

ओव्हरview

आयटम आयटम प्रकार फंक्शन

वर्णन

जागतिक वापर पृष्ठ

डिव्हाइसमध्ये उपलब्ध असलेले फंक्शन ओळखते.

ग्लोबल लॉजिकल लॉजिकल युनिट्समध्ये नोंदवलेल्या मूल्यांची कमी मर्यादा परिभाषित करते. किमान

ग्लोबल लॉजिकल लॉजिकल युनिट्समध्ये नोंदवलेल्या मूल्यांची वरची मर्यादा परिभाषित करते. कमाल

ग्लोबल फिजिकल भौतिक एककांमध्ये नोंदवलेल्या मूल्यांची खालची मर्यादा परिभाषित करते, ती भौतिक एककांमध्ये व्यक्त केलेली तार्किक किमान किमान आहे.

ग्लोबल फिजिकल भौतिक एककांमध्ये नोंदवलेल्या मूल्यांची वरची मर्यादा परिभाषित करते, ती भौतिक एककांमध्ये व्यक्त केलेली तार्किक कमाल कमाल आहे.

जागतिक युनिट

बेस १० मधील एकक घातांक दर्शवितो. घातांक -८ ते +७ पर्यंत असतो.

घातांक

जागतिक युनिट

नोंदवलेल्या मूल्यांचे एकक दर्शवते. उदाहरणार्थ, लांबी, वस्तुमान, तापमान एकके इ.

जागतिक अहवाल आकार

बिट्समध्ये रिपोर्ट फील्डचा आकार दर्शवितो.

ग्लोबल रिपोर्ट आयडी विशिष्ट रिपोर्टमध्ये जोडलेला उपसर्ग दर्शवितो.

जागतिक अहवाल संख्या

आयटमसाठी डेटा फील्डची संख्या दर्शवते.

ग्लोबल पुश

CPU स्टॅकवर ग्लोबल आयटम स्टेट टेबलची एक प्रत ठेवते.

ग्लोबल पॉप

आयटम स्टेट टेबलला स्टॅकमधील शेवटच्या रचनेसह बदलते.

स्थानिक वापर

वापर पृष्ठामधील विशिष्ट वापर निर्दिष्ट करण्यासाठी निर्देशांक दर्शवितो. ते विक्रेत्याने विशिष्ट नियंत्रण किंवा नियंत्रणांच्या गटासाठी सुचवलेला वापर दर्शवितो. वापर अनुप्रयोग विकासकाला नियंत्रण प्रत्यक्षात काय मोजत आहे याबद्दल माहिती पुरवतो.

स्थानिक वापर

अ‍ॅरे किंवा बिटमॅपशी संबंधित सुरुवातीचा वापर परिभाषित करते.

किमान

स्थानिक वापर

अ‍ॅरे किंवा बिटमॅपशी संबंधित शेवटचा वापर परिभाषित करते.

कमाल

स्थानिक नियुक्तकर्ता नियंत्रणासाठी वापरला जाणारा शरीराचा भाग निश्चित करतो. निर्देशांक भौतिक मध्ये नियुक्तकर्त्याकडे निर्देश करतो

निर्देशांक

वर्णनकर्ता.

स्थानिक डिझाइनर अ‍ॅरे किंवा बिटमॅपशी संबंधित सुरुवातीच्या डिझाइनरचा निर्देशांक परिभाषित करतो. किमान

स्थानिक डिझाइनर अ‍ॅरे किंवा बिटमॅपशी संबंधित शेवटच्या डिझाइनरचा निर्देशांक परिभाषित करतो. कमाल

स्थानिक स्ट्रिंग अनुक्रमणिका

स्ट्रिंग डिस्क्रिप्टरसाठी स्ट्रिंग इंडेक्स. हे स्ट्रिंगला विशिष्ट आयटम किंवा कंट्रोलशी जोडण्याची परवानगी देते.

स्थानिक स्ट्रिंग

अ‍ॅरेमधील नियंत्रणांना अनुक्रमिक स्ट्रिंगचा गट नियुक्त करताना प्रथम स्ट्रिंग इंडेक्स निर्दिष्ट करते.

किमान किंवा बिटमॅप.

स्थानिक स्थानिक

स्ट्रिंग कमाल
परिसीमक

अ‍ॅरे किंवा बिटमॅपमधील नियंत्रणांना अनुक्रमिक स्ट्रिंगचा गट नियुक्त करताना शेवटच्या स्ट्रिंग इंडेक्स निर्दिष्ट करते.
स्थानिक आयटमच्या संचाची सुरुवात किंवा शेवट परिभाषित करते.

control9s डेटामध्ये किमान खालील बाबी परिभाषित केल्या पाहिजेत:
इनपुट, आउटपुट किंवा वैशिष्ट्य मुख्य आयटम वापर स्थानिक आयटम वापर पृष्ठ जागतिक आयटम लॉजिकल किमान जागतिक आयटम लॉजिकल कमाल जागतिक आयटम अहवाल आकार जागतिक आयटम

कॉपीराइट © 2025 सिलिकॉन प्रयोगशाळा. सर्व हक्क राखीव.

31/174

ओव्हरview
रिपोर्ट काउंट ग्लोबल आयटम खालील तक्ता होस्ट HID पार्सर दृष्टीकोनातून माऊस रिपोर्ट डिस्क्रिप्टर सामग्रीचे प्रतिनिधित्व दर्शवितो. माऊसमध्ये तीन बटणे आहेत (डावीकडे, उजवीकडे आणि चाक). माजी मध्ये सादर केलेला कोडampखाली या माऊस रिपोर्ट डिस्क्रिप्टर प्रतिनिधित्वाशी संबंधित कोड अंमलबजावणी आहे.
आकृती - होस्ट HID पार्सर कडून रिपोर्ट डिस्क्रिप्टर कंटेंट View

(१) वापर पृष्ठ आयटम फंक्शन डिव्हाइसचे सामान्य कार्य निर्दिष्ट करते. यामध्येampले, HID डिव्हाइस a चे आहे
सामान्य डेस्कटॉप नियंत्रण.
(२) संग्रह अनुप्रयोग मुख्य आयटमचे गट करतो ज्यांचा एक सामान्य उद्देश आहे आणि अनुप्रयोगांना परिचित असू शकतो. आकृतीमध्ये, गट तीन इनपुट मुख्य आयटमपासून बनलेला आहे. या संग्रहासाठी, वापर आयटमद्वारे दर्शविल्याप्रमाणे नियंत्रणांसाठी सुचविलेला वापर माऊस आहे. (३) अनुप्रयोगांना एकाच नियंत्रणाच्या किंवा नियंत्रणांच्या गटाच्या वापराबद्दल अधिक तपशील देण्यासाठी नेस्टेड संग्रह वापरले जाऊ शकतात. या उदाहरणातampले, कलेक्शन फिजिकल, कलेक्शन अॅप्लिकेशनमध्ये नेस्टेड, कलेक्शन अॅप्लिकेशन बनवणाऱ्या त्याच तीन इनपुट आयटम्सपासून बनलेला आहे. कलेक्शन फिजिकलचा वापर डेटा आयटम्सच्या संचासाठी केला जातो जो एका भौमितिक बिंदूवर गोळा केलेल्या डेटा पॉइंट्सचे प्रतिनिधित्व करतो. उदाहरणार्थampवापर आयटमद्वारे सूचित केलेला वापर हा पॉइंटर आहे. येथे पॉइंटर वापर हा माऊस पोझिशन कोऑर्डिनेट्सचा संदर्भ देतो आणि सिस्टम सॉफ्टवेअर स्क्रीन कर्सरच्या हालचालीमध्ये माऊस कोऑर्डिनेट्सचे भाषांतर करेल. (४) नेस्टेड वापर पृष्ठे देखील शक्य आहेत आणि डिव्हाइसच्या सामान्य कार्यामधील एका विशिष्ट पैलूबद्दल अधिक तपशील देतात. या प्रकरणात, दोन इनपुट आयटम गटबद्ध केले आहेत आणि माऊसच्या बटणांशी संबंधित आहेत. एक इनपुट आयटम आयटमसाठी डेटा फील्डची संख्या (रिपोर्ट काउंट आयटम), डेटा फील्डचा आकार (रिपोर्ट साइज आयटम) आणि प्रत्येक डेटा फील्डसाठी संभाव्य मूल्ये (वापर किमान आणि कमाल, लॉजिकल किमान आणि कमाल आयटम) या संदर्भात माऊसची तीन बटणे (उजवीकडे, डावीकडे आणि चाक) परिभाषित करतो. दुसरा इनपुट आयटम १३-बिट स्थिरांक आहे जो इनपुट रिपोर्ट डेटाला बाइट सीमेवर संरेखित करण्यास अनुमती देतो. हा इनपुट आयटम फक्त पॅडिंगसाठी वापरला जातो. (५) सामान्य डेस्कटॉप नियंत्रणाचा संदर्भ देणारे दुसरे नेस्टेड वापर पृष्ठ माऊस पोझिशन कोऑर्डिनेट्ससाठी परिभाषित केले आहे. या वापर पृष्ठासाठी, इनपुट आयटम दोन वापराद्वारे निर्दिष्ट केल्याप्रमाणे x- आणि y-अक्षांशी संबंधित डेटा फील्डचे वर्णन करतो.
आयटम
मागील माऊस रिपोर्ट डिस्क्रिप्टर कंटेंटचे विश्लेषण केल्यानंतर, होस्ट9एस एचआयडी पार्सर डिव्हाइसद्वारे इंटरप्ट IN ट्रान्सफरसह किंवा GET_REPORT विनंतीला प्रतिसाद म्हणून पाठवलेल्या इनपुट रिपोर्ट डेटाचा अर्थ लावण्यास सक्षम आहे. आकृतीमध्ये दर्शविलेल्या माऊस रिपोर्ट डिस्क्रिप्टरशी संबंधित इनपुट रिपोर्ट डेटा - होस्ट एचआयडी पार्सरकडून रिपोर्ट डिस्क्रिप्टर कंटेंट View is

कॉपीराइट © 2025 सिलिकॉन प्रयोगशाळा. सर्व हक्क राखीव.

32/174

ओव्हरview

खालील तक्त्यामध्ये दाखवले आहे. अहवाल डेटाचा एकूण आकार ४ बाइट्स आहे. एकाच एंडपॉइंटवर वेगवेगळ्या प्रकारचे अहवाल पाठवले जाऊ शकतात. वेगवेगळ्या प्रकारच्या अहवालांमध्ये फरक ओळखण्यासाठी, डेटा अहवालात १-बाइट अहवाल आयडी उपसर्ग जोडला जातो. जर अहवाल आयडीचा वापर माजी मध्ये केला गेला असेल तरampमाऊस रिपोर्टच्या बाबतीत, रिपोर्ट डेटाचा एकूण आकार ५ बाइट्स असेल.
टेबल - इनपुट रिपोर्ट होस्टला पाठवला आहे आणि ३ बटणांच्या माऊसच्या स्थितीशी संबंधित आहे.

बिट ऑफसेट
0 1 2 3 16 24

बिट गणना १ १ १ १३ ८ ८

वर्णन बटण १ (डावे बटण). बटण २ (उजवे बटण). बटण ३ (चाक बटण). वापरलेले नाही. अक्ष X वर स्थान. अक्ष Y वर स्थान.

भौतिक वर्णनकर्ता शरीराच्या त्या भागाला किंवा भागांना सूचित करतो ज्याचा उद्देश नियंत्रण किंवा नियंत्रणे सक्रिय करणे आहे. एखादा अनुप्रयोग या माहितीचा वापर डिव्हाइसच्या नियंत्रणाला कार्यक्षमता नियुक्त करण्यासाठी करू शकतो. भौतिक वर्णनकर्ता हा एक पर्यायी वर्ग-विशिष्ट वर्णनकर्ता आहे आणि बहुतेक उपकरणांना त्याचा वापर करून फारसा फायदा होत नाही. पहा
कोर कडून USB डिव्हाइस HID क्लास संसाधन गरजा

प्रत्येक वेळी जेव्हा तुम्ही sl_usbd_hid_add_to_configuration() फंक्शनला कॉल करून USB कॉन्फिगरेशनमध्ये HID क्लास इन्स्टन्स जोडता तेव्हा खालील संसाधने कोरमधून वाटप केली जातील.

संसाधन
इंटरफेस पर्यायी इंटरफेस एंडपॉइंट्स इंटरफेस गट

प्रमाण
१ १ १ (जर इंटरप्ट आउट एंडपॉइंट सक्षम असेल तर २) ​​०

लक्षात ठेवा की ते आकडे प्रत्येक कॉन्फिगरेशनसाठी आहेत. तुमचे SL_USBD_INTERFACE_QUANTITY, SL_USBD_ALT_INTERFACE_QUANTITY, SL_USBD_INTERFACE_GROUP_QUANTITY आणि SL_USBD_DESCRIPTOR_QUANTITY कॉन्फिगरेशन व्हॅल्यूज सेट करताना, क्लास किती कॉन्फिगरेशन्स जोडल्या जातील हे विचारात घेण्यास विसरू नका. SL_USBD_OPEN_ENDPOINTS_QUANTITY कॉन्फिगरेशन व्हॅल्यूसाठी, होस्टद्वारे कॉन्फिगरेशन सेट केल्यावरच एंडपॉइंट्स उघडले जातात, त्यामुळे तुम्हाला क्लास इंस्टन्ससाठी आवश्यक असलेल्या एंडपॉइंट्सची संख्या विचारात घ्यावी लागेल.
USB डिव्हाइस HID वर्ग कॉन्फिगरेशन

HID वर्ग कॉन्फिगर करण्यासाठी कॉन्फिगरेशन पॅरामीटर्सचे दोन गट वापरले जातात:
USB डिव्हाइस HID क्लास अॅप्लिकेशन-विशिष्ट कॉन्फिगरेशन्स USB डिव्हाइस HID क्लास इन्स्टन्स कॉन्फिगरेशन्स
USB डिव्हाइस HID वर्ग अनुप्रयोग-विशिष्ट कॉन्फिगरेशन

प्रथम, सिलिकॉन लॅब्स यूएसबी डिव्हाइस एचआयडी क्लास मॉड्यूल वापरण्यासाठी, तुमच्या अॅप्लिकेशनच्या गरजेनुसार परिभाषित केलेले एचआयडी कंपाइल-टाइम कॉन्फिगरेशन समायोजित करा. ते sl_usbd_core_config.h हेडरमध्ये पुन्हा एकत्रित केले जातात. file HID विभागांतर्गत. त्यांना दोन विभागांमध्ये विभागता येते, प्रमाण कॉन्फिगरेशन आणि HID कार्य कॉन्फिगरेशन. प्रमाण कॉन्फिगरेशनचा उद्देश USB डिव्हाइस मॉड्यूलला किती USB HID ऑब्जेक्ट्स वाटप करायचे आहेत याची माहिती देणे आहे.
खालील तक्ता प्रत्येक कॉन्फिगरेशन परिभाषित करते.
सारणी - USB डिव्हाइस HID कॉन्फिगरेशन परिभाषित करते

कॉपीराइट © 2025 सिलिकॉन प्रयोगशाळा. सर्व हक्क राखीव.

33/174

ओव्हरview

कॉन्फिगरेशन नाव
SL_USBD_HID_CL ASS_I NSTANCE_QUANTITY
SL_USBD_HID_CONFIG URATION_QUANTITY
एसएल_यूएसबीडी_लपवलेले_अहवाल_आयडी_प्रमाण
SL_USBD_HID_PUSH_P OP_ITEM_QUANTITY
SL_USBD_HID_TIMER_T ASK_STACK_SIZE
SL_USBD_HID_TIMER_T ASK_PRIORITY

वर्णन
फंक्शनला कॉल करून तुम्ही किती क्लास इंस्टन्स वाटप कराल याची संख्या
sl_usbd_hip_create_instance() .
कॉन्फिगरेशनची संख्या. HID क्लास इंस्टन्स sl_usbd_hid_add_to_configuration() फंक्शनमध्ये एक किंवा अधिक aaaa कॉन्फिगरेशनमध्ये जोडले जाऊ शकतात. वाटप करण्यासाठी एकूण रिपोर्ट आयडींची संख्या कॉन्फिगर करते.
वाटप करण्यासाठी एकूण पुश/पॉप आयटमची संख्या कॉन्फिगर करते.
टाइमर टास्क सर्व टाइमर-आधारित HID ऑपरेशन्स हाताळते. हे कॉन्फिगरेशन तुम्हाला स्टॅक आकार (बाइट्सच्या संख्येत) सेट करण्याची परवानगी देते. HID टास्कची प्राधान्यता. ती CMSIS-RTOS2 प्राधान्य आहे.

डीफॉल्ट मूल्य
१ २ ३ ४ ५
osPriorityHigh कडील अधिक

यूएसबी डिव्हाइस एचआयडी क्लास इन्स्टन्स कॉन्फिगरेशन्स क्लास इन्स्टन्स क्रिएशन सबक्लास
प्रोटोकॉल देश_कोड
इंटरव्हल_इन आणि इंटरव्हल_आउट p_hid_callback HID क्लास रिपोर्ट डिस्क्रिप्टर एक्सample हा विभाग HID क्लास इंस्टन्सशी संबंधित कॉन्फिगरेशन परिभाषित करतो.
क्लास इन्स्टन्स निर्मिती
HID क्लास इन्स्टन्स तयार करणे aaa sl_usbd_hid_create_instance() फंक्शन कॉल करून केले जाते, जे खाली वर्णन केलेल्या कॉन्फिगरेशन आर्ग्युमेंट्सना वेगळे करते.
उपवर्ग
HID उपवर्गाचा कोड. संभाव्य मूल्ये अशी आहेत:
SL_USBD_HID_SUBCL ASS_NONE SL_USBD_HID_SUBCL ASS_BOOT
बूट सबक्लास वापरणाऱ्या HID डिव्हाइसने मानक रिपोर्ट फॉरमॅट वापरणे आवश्यक आहे. सबक्लास कोडबद्दल अधिक माहितीसाठी, HID स्पेसिफिकेशन रिव्हिजन १.११ चा विभाग ४.२ पहा.
प्रोटोकॉल
HID डिव्हाइसद्वारे वापरलेला प्रोटोकॉल. संभाव्य मूल्ये अशी आहेत:
SL_USBD_HID_PROTOCOL_NONE SL_USBD_HID_PROTOCOL_KBD SL_USBD_HID_PROTOCOL_माऊस
जर तुमचे HID फंक्शन माऊस असेल, तर प्रोटोकॉल aa SL_USBD_HID_PROTOCOL_MOUSE वर सेट केला पाहिजे. जर तो कीबोर्ड असेल, तर तो O SL_USBD_HID_PROTOCOL_KBD वर सेट केला पाहिजे. त्याचप्रमाणे, प्रोटोकॉल SL_USBD_HID_PROTOCOL_NONE वर सेट केला पाहिजे. सबक्लास कोडबद्दल अधिक माहितीसाठी, HID स्पेसिफिकेशन रिव्हिजन १.११ चा विभाग ४.३ पहा.
देशाचा कोड
देशाच्या कोडचा आयडी. संभाव्य मूल्ये अशी आहेत:
SL_USBD_HID_COUNTRY_CODE_समर्थित नाही

कॉपीराइट © 2025 सिलिकॉन प्रयोगशाळा. सर्व हक्क राखीव.

34/174

ओव्हरview
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_डॅनिश 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_हंगेरी SL_USBD_HID_COUNTRY_CODE_आंतरराष्ट्रीय SL_USBD_HID_COUNTRY_CODE_ITALIAN SL_USBD_HID_COUNTRY_CODE_JAPAN_KATAKANA SL_USBD_HID_COUNTRY_CODE_CODE_COREAN SL_USBD_HID_COUNTRY_CODE_L ATIN_AMERICAN SL_USBD_HID_COUNTRY_CODE_NETHERL ANDS_DUCH SL_USBD_HID_COUNTRY_CODE_Norwegian SL_USBD_HID_COUNTRY_CODE_PORSIAN_FARSI SL_USBD_HID_COUNTRY_CODE_POL आणि SL_USBD_HID_COUNTRY_CODE_PORTUGUESE SL_USBD_HID_COUNTRY_CODE_RUSIA SL_USBD_HID_COUNTRY_CODE_SLOVAKIA SL_USBD_HID_COUNTRY_CODE_SPANISH SL_USBD_HID_COUNTRY_CODE_स्वीडिश SL_USBD_HID_COUNTRY_CODE_SWISS_FRENCH SL_USBD_HID_COUNTRY_CODE_SWISS_GERMAN SL_USBD_HID_COUNTRY_CODE_SWITZERL आणि SL_USBD_HID_COUNTRY_CODE_TAIWAN SL_USBD_HID_COUNTRY_CODE_TURKISH_Q SL_USBD_HID_COUNTRY_CODE_US SL_USBD_HID_COUNTRY_CODE_YUG OSL AVIA SL_USBD_HID_COUNTRY_CODE_TURKISH_F
देश कोडवरून हार्डवेअर कोणत्या देशासाठी स्थानिकीकृत आहे हे कळते. बहुतेक हार्डवेअर स्थानिकीकृत नसतात आणि म्हणूनच हा कोड SL_USBD_HID_COUNTRY_CODE_NOT_SUPPORTED (0) असेल. तथापि, कीबोर्ड की कॅप्सची भाषा दर्शविण्यासाठी फील्ड वापरतात.
देश कोडबद्दल अधिक माहितीसाठी, HID स्पेसिफिकेशन रिव्हिजन १.११ चा विभाग ६.२.१ पहा.
इंटरव्हल_इन आणि इंटरव्हल_आउट
interval_in आणि interval_out हे IN इंटरप्ट एंडपॉइंट आणि OUT इंटरप्ट एंडपॉइंटचे पोलिंग इंटरव्हल दर्शवतात.
हे एंडपॉइंटच्या मतदान मध्यांतराचे मिलिसेकंदांमध्ये प्रतिनिधित्व करते. हे मूल्य सेट करणे हे तुमचे डिव्हाइस होस्टसाठी नवीन अहवाल किती वेळा तयार करण्यास संवेदनशील आहे यावर अवलंबून असते. उदाहरणार्थ, जर दर १६ मिलिसेकंदांनी अहवाल तयार केला गेला तर मध्यांतर १६ किंवा त्यापेक्षा कमी असावा.
मूल्य २ (१, २, ४, ८, १६, इ.) ची घात असणे आवश्यक आहे.
जर ctrl_rd_en खरे वर सेट केले असेल तर interval_out v lue दुर्लक्षित केले जाते.
p_hid_कॉलबॅक
aaaa p_hid_callback हा sl_usbd_hid_callbacks_t प्रकारच्या रचनेचा निर्देशक आहे. त्याचा उद्देश HID इव्हेंट घडल्यावर कॉल करण्यासाठी HID Cl ss कॉलबॅक फंक्शन्सचा संच देणे आहे.

कॉपीराइट © 2025 सिलिकॉन प्रयोगशाळा. सर्व हक्क राखीव.

35/174

ओव्हरview

सर्व कॉलबॅक अनिवार्य नाहीत आणि कॉलबॅकची आवश्यकता नसताना कॉलबॅक स्ट्रक्चर व्हेरिएबलमध्ये एक नल पॉइंटर (NULL) पास केला जाऊ शकतो. खालील तक्ता या कॉन्फिगरेशन स्ट्रक्चरमध्ये उपलब्ध असलेल्या प्रत्येक कॉन्फिगरेशन फील्डचे वर्णन करतो.
सारणी – sl_usbd_hid_callbacks_t कॉन्फिगरेशन स्ट्रक्चर

फील्ड

वर्णन

फंक्शन सिग्नेचर

.सक्षम करा .अक्षम करा .report_desc मिळवा
.फाय_डेस्क_मिळावा
.सेट_आउटपुट_रिपोर्ट .फीचर_रिपोर्ट_मिळा .फीचर_रिपोर्ट_सेट करा

USB क्लास इंस्टन्स यशस्वीरित्या सक्षम झाल्यावर कॉल केला जातो. USB क्लास इंस्टन्स अक्षम केल्यावर कॉल केला जातो.
HID इन्स्टन्स निर्मिती दरम्यान तुमचा रिपोर्ट डिस्क्रिप्टर पास करण्यासाठी कॉल केला जातो. तुमच्या प्रत्येक HID फंक्शनसाठी, तुम्हाला एक रिपोर्ट डिस्क्रिप्टर प्रदान करणे आवश्यक आहे. रिपोर्ट डिस्क्रिप्टर होस्टला सूचित करतो की डिव्हाइसद्वारे पाठवला जाणारा नियतकालिक अहवाल कसा पार्स करायचा. तुमचा स्वतःचा रिपोर्ट डिस्क्रिप्टर लिहिणे आव्हानात्मक असू शकते आणि म्हणूनच मदत करण्यासाठी काही संसाधने आहेत. हे एकमेव अनिवार्य कॉलबॅक फंक्शन आहे. तुमचा फिजिकल डिस्क्रिप्टर पास करण्यासाठी HID इन्स्टन्स निर्मिती दरम्यान कॉल केला जातो. फिजिकल डिस्क्रिप्टर हा एक डिस्क्रिप्टर आहे जो मानवी शरीराच्या विशिष्ट भागाबद्दल किंवा भागांबद्दल माहिती प्रदान करतो जे नियंत्रण किंवा नियंत्रणे सक्रिय करत आहेत. फिजिकल डिस्क्रिप्टरबद्दल अधिक माहितीसाठी, HID स्पेसिफिकेशन रिव्हिजन 1.11 चा विभाग 6.2.3 पहा. फिजिकल डिस्क्रिप्टर पर्यायी आहे आणि बहुतेक वेळा दुर्लक्षित केला जातो. येथे पास केलेला बफर NULL वर सेट केला जाऊ शकतो आणि लांबी 0 वर सेट केली जाऊ शकते. जेव्हा होस्ट तुमच्या रिपोर्ट डिस्क्रिप्टरमध्ये वर्णन केल्याप्रमाणे रिपोर्ट सेट करतो (जेव्हा तो रिपोर्ट पाठवतो) तेव्हा कॉल केला जातो.
तुमच्या रिपोर्ट डिस्क्रिप्टरमध्ये वर्णन केल्याप्रमाणे होस्ट फीचर रिपोर्टची विनंती करतो तेव्हा कॉल केला जातो.
तुमच्या रिपोर्ट डिस्क्रिप्टरमध्ये वर्णन केल्याप्रमाणे होस्ट फीचर रिपोर्ट सेट करतो तेव्हा कॉल केला जातो.

व्हॉइड अ‍ॅप_यूएसबीडी_हिड_एनेबल(यूआयएनटी८_टी क्लास_एनबीआर); व्हॉइड अ‍ॅप_यूएसबीडी_हिड_डिसेबल(यूआयएनटी८_टी क्लास_एनबीआर); व्हॉइड अ‍ॅप_यूएसबीडी_हिड_गेट_रिपोर्ट_डेस्क(यूआयएनटी८_टी क्लास_एनबीआर, कॉन्स्ट यूआयएनटी८_टी *पी_रिपोर्ट_पीटीआर, यूआयएनटी१६_टीपी_रिपोर्ट_लेन);
व्हॉइड अ‍ॅप_यूएसबीडी_हिड_गेट_फाय_डेस्क(यूआयएनटी८_टी क्लास_एनबीआर, कॉन्स्ट यूआयएनटी८_टी *पी_रिपोर्ट_पीटीआर, यूआयएनटी१६_टीपी_रिपोर्ट_लेन);
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);

.प्रोटोकॉल मिळवा

सध्याचा सक्रिय प्रोटोकॉल मिळवते.

व्हॉइड अ‍ॅप_यूएसबीडी_हिड_गेट_प्रोटोकॉल(uint8_t क्लास_एनबीआर, uint8_t *पी_प्रोटोकॉल);

.सेट_प्रोटोकॉल

सध्याचा सक्रिय प्रोटोकॉल सेट करते.

व्हॉइड अ‍ॅप_यूएसबीडी_हिड_सेट_प्रोटोकॉल(uint8_t क्लास_एनबीआर, uint8_t प्रोटोकॉल);

HID वर्ग अहवाल वर्णनकर्ता उदा.ample

सिलिकॉन लॅब्सचे एचआयडी वर्गampअर्ज एक माजी प्रदान करतोampसाध्या उंदरासाठी रिपोर्ट डिस्क्रिप्टरचा अर्थ. माजीampखाली माऊस रिपोर्ट डिस्क्रिप्टर दाखवले आहे.
Example – माऊस रिपोर्ट डिस्क्रिप्टर

स्थिर uint8_t अ‍ॅप_यूएसबीडी_हिड_रिपोर्ट_डेस्क[] = {

(१०५) (१५५)

SL_USBD_HID_GLOBAL_USAGE_PAGE + १, SL_USBD_HID_USAGE_PAGE_GENERIC_DESKTOP_CONTROLS,

SL_USBD_HID_LOCAL_USAGE + १, SL_USBD_HID_CA_माऊस,

(१)

कॉपीराइट © 2025 सिलिकॉन प्रयोगशाळा. सर्व हक्क राखीव.

36/174

ओव्हरview

SL_USBD_HID_MAIN_COLLECTION +१, SL_USBD_HID_COLLECTION_APPLICATION,(४)

SL_USBD_HID_LOCAL_USAGE +१, SL_USBD_HID_CP_पॉइंटर,(५)

SL_USBD_HID_MAIN_COLLECTION +१, SL_USBD_HID_COLLECTION_भौतिक,(६)

SL_USBD_HID_GLOBAL_USAGE_PAGE +1, SL_USBD_HID_USAGE_PAGE_BUTTON,(7)

SL_USBD_HID_LOCAL_USAGE_MIN +१.० ०१,

SL_USBD_HID_LOCAL_USAGE_MAX +१.० ०३,

SL_USBD_HID_GLOBAL_LOG_MIN +१.०००,

SL_USBD_HID_GLOBAL_LOG_MAX +१.० ०१,

SL_USBD_HID_GLOBAL_REPORT_COUNT +१.० ०३,

SL_USBD_HID_GLOBAL_REPORT_SIZE +१.० ०१,

SL_USBD_HID_MAIN_INPUT +1, SL_USBD_HID_MAIN_DATA |

SL_USBD_HID_MAIN_VARIABLE |

एसएल_यूएसबीडी_लपवलेले_पूर्ण_पूर्ण,

SL_USBD_HID_GLOBAL_REPORT_COUNT +१.० ०१,(८)

SL_USBD_HID_GLOBAL_REPORT_SIZE +१.० ०D,

SL_USBD_HID_MAIN_INPUT +१, SL_USBD_HID_MAIN_CONSTANT,(९)

SL_USBD_HID_GLOBAL_USAGE_PAGE +1, SL_USBD_HID_USAGE_PAGE_GENERIC_DESKTOP_CONTROLS,

SL_USBD_HID_LOCAL_USAGE +१, SL_USBD_HID_DV_X,

SL_USBD_HID_LOCAL_USAGE +१, SL_USBD_HID_DV_Y,

SL_USBD_HID_GLOBAL_LOG_MIN +१.०००,

SL_USBD_HID_GLOBAL_LOG_MAX +१.० ७F,

SL_USBD_HID_GLOBAL_REPORT_SIZE +१.० ०१,

SL_USBD_HID_GLOBAL_REPORT_COUNT +१.० ०३,

SL_USBD_HID_MAIN_INPUT +1, SL_USBD_HID_MAIN_DATA |

SL_USBD_HID_MAIN_VARIABLE |

एसएल_यूएसबीडी_लपवलेले_मुख्य_सापेक्ष,

SL_USBD_HID_MAIN_ENDसंग्रह,(१०)

SL_USBD_HID_MAIN_ENDसंग्रह

(११)};

(१) माऊस रिपोर्ट डिस्क्रिप्टर दर्शविणारी टेबल अशा प्रकारे सुरू केली जाते की प्रत्येक ओळ एका लहान आयटमशी संबंधित असते. नंतरची १-बाइट प्रीफिक्स आणि १-बाइट डेटापासून बनविली जाते. पहा viewआकृतीमध्ये होस्ट HID पार्सरद्वारे संपादित - होस्ट HID पार्सरकडून वर्णनकर्ता सामग्रीचा अहवाल द्या View.
(२) जेनेरिक डेस्कटॉप वापर पृष्ठ वापरले आहे.
(३) जेनेरिक डेस्कटॉप वापर पृष्ठामध्ये, वापर tag नियंत्रणांचा समूह माऊस नियंत्रित करण्यासाठी आहे असे सूचित करते. माऊस संग्रहात सामान्यतः दोन अक्ष (X आणि Y) आणि एक, दोन किंवा तीन बटणे असतात.
(४) उंदीर गोळा करण्याचे काम सुरू झाले आहे.
(५) माऊस कलेक्शनमध्ये, एक वापर tag अधिक स्पष्टपणे असे सूचित करते की माऊस नियंत्रणे पॉइंटर संग्रहाशी संबंधित आहेत. पॉइंटर संग्रह म्हणजे अक्षांचा संग्रह जो वापरकर्त्याच्या हेतूंना अनुप्रयोगाकडे निर्देशित करण्यासाठी, सूचित करण्यासाठी किंवा निर्देशित करण्यासाठी मूल्य निर्माण करतो.
(६) पॉइंटर संग्रह सुरू झाला आहे.
(७) बटणे वापर पृष्ठ तीन १-बिट फील्डपासून बनलेला इनपुट आयटम परिभाषित करते. प्रत्येक १-बिट फील्ड अनुक्रमे माउस९ चे बटण १, २ आणि ३ दर्शवते आणि ० किंवा १ चे मूल्य परत करू शकते.
(८) बटणे वापर पृष्ठासाठी इनपुट आयटम १३ इतर बिट्ससह पॅड केलेला आहे.
(९) X आणि Y अक्षांसह माऊसच्या स्थितीचे वर्णन करण्यासाठी दुसरे जेनेरिक डेस्कटॉप वापर पृष्ठ दर्शविले आहे. इनपुट आयटम दोन ८-बिट फील्डने बनलेला आहे ज्यांचे मूल्य -१२७ आणि १२७ दरम्यान असू शकते.
(१०) पॉइंटर संग्रह बंद आहे.
(११) उंदीर संग्रह बंद आहे.
USB.org HID पेज

कॉपीराइट © 2025 सिलिकॉन प्रयोगशाळा. सर्व हक्क राखीव.

37/174

ओव्हरview
यूएसबी इम्प्लीमेंटर्स फोरम (यूएसबी-आयएफ) "एचआयडी डिस्क्रिप्टर टूल" नावाचे एक टूल प्रदान करते आणि रिपोर्ट डिस्क्रिप्टर फॉरमॅटवरील इतर माहिती देखील प्रदान करते. अधिक माहितीसाठी http://www.usb.org/developers/hidpage/ पहा.
यूएसबी डिव्हाइस एचआयडी क्लास प्रोग्रामिंग मार्गदर्शक
हा विभाग 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 क्लास इन्स्टन्स जोडणे
तुमच्या डिव्हाइसमध्ये HID क्लास कार्यक्षमता जोडण्यासाठी, तुम्हाला एक उदाहरण तयार करावे लागेल, नंतर ते तुमच्या डिव्हाइसच्या कॉन्फिगरेशनमध्ये जोडावे लागेल.
HID क्लास इन्स्टन्स तयार करणे
sl_usbd_hid_create_instance() फंक्शन कॉल करून HID क्लास इन्स्टन्स तयार करा. उदा.ampखाली डिफॉल्ट आर्ग्युमेंट्स वापरून sl_usbd_hid_create_instance() द्वारे एक साधे माऊस फंक्शन कसे तयार करायचे ते दाखवले आहे. sl_usbd_hid_create_instance() कडे पाठवायच्या कॉन्फिगरेशन आर्ग्युमेंट्सबद्दल अधिक माहितीसाठी, USB डिव्हाइस HID क्लास इन्स्टन्स कॉन्फिगरेशन्स पहा.
Example – sl_usbd_hid_create_instance() द्वारे माउस फंक्शन जोडणे

कॉपीराइट © 2025 सिलिकॉन प्रयोगशाळा. सर्व हक्क राखीव.

38/174

ओव्हरview
/* जागतिक स्थिरांक. */ स्थिर स्थिरांक 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_माऊस, 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 ०१, SL_USBD_HID_LOCAL_USAGE_MAX + १, ० ०३, SL_USBD_HID_GLOBAL_LOG_MIN + १, ० ००, SL_USBD_HID_GLOBAL_LOG_MAX + १, ० ०१, SL_USBD_HID_GLOBAL_REPORT_COUNT + १, ० ०३, SL_USBD_HID_GLOBAL_REPORT_SIZE + १, ० ०१, SL_USBD_HID_MAIN_INPUT + १, SL_USBD_HID_MAIN_DATA | SL_USBD_HID_MAIN_VARIABLE | SL_USBD_HID_MAIN_ABSOLUTE, SL_USBD_HID_GLOBAL_REPORT_COUNT + १, ० ०१, SL_USBD_HID_GLOBAL_REPORT_SIZE + १, ० ०D, SL_USBD_HID_MAIN_INPUT + १, SL_USBD_HID_MAIN_CONSTANT, SL_USBD_HID_GLOBAL_USAGE_PAGE + १, SL_USBD_HID_USAGE_PAGE_GENERIC_DESKTOP_CONTROLS, SL_USBD_HID_LOCAL_USAGE + १, SL_USBD_HID_DV_X, SL_USBD_HID_LOCAL_USAGE + १, SL_USBD_HID_DV_Y, SL_USBD_HID_GLOBAL_LOG_MIN + १, ० ८१, SL_USBD_HID_GLOBAL_LOG_MAX + १, ० ७F, SL_USBD_HID_GLOBAL_REPORT_SIZE + १, ० ०८, SL_USBD_HID_GLOBAL_REPORT_COUNT + १, ० ०२, SL_USBD_HID_MAIN_INPUT + १, SL_USBD_HID_MAIN_DATA | SL_USBD_HID_MAIN_VARIABLE | SL_USBD_HID_MAIN_RELATIVE, SL_USBD_HID_MAIN_ENDCOLLECTION, SL_USBD_HID_MAIN_ENDCOLLECTION };
/* स्थानिक चल.*/ uint8_t class_nbr; sl_status_t स्थिती;
sl_usbd_hid_callbacks_t अ‍ॅप_यूएसबीडी_हाइड_कॉलबॅक्स = { शून्य, शून्य, अ‍ॅप_यूएसबीडी_हाइड_गेट_रिपोर्ट_डेस्क, शून्य, शून्य, शून्य, शून्य, शून्य };
व्हॉइड अ‍ॅप_यूएसबीडी_हिड_गेट_रिपोर्ट_डेस्क (यूआयएनटी८_टी क्लास_एनबीआर, कॉन्स्ट यूआयएनटी८_टी **पी_रिपोर्ट_पीटीआर, यूआयएनटी१६_टी *पी_रिपोर्ट_लेन)
{ (रिकामा)वर्ग_एनबीआर;
*पी_रिपोर्ट_पीटीआर = अ‍ॅप_यूएसबीडी_हिड_माऊस_रिपोर्ट_डेस्क; *पी_रिपोर्ट_लेन = (अ‍ॅप_यूएसबीडी_हिड_माऊस_रिपोर्ट_डेस्क); }
स्थिती = 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_लपवा_कॉन्फिगरेशनमध्ये_जोडा().
माजीampखाली sl_usbd_hid_add_to_configuration() कसे कॉल करायचे ते दाखवले आहे.
Example – sl_usbd_hid_add_to_configuration() ला कॉल करत आहे

sl_status_t स्थिती;

sl_usbd_लपवा_कॉन्फिगरेशनमध्ये_जोडा(वर्ग_एनबीआर,

(१)

कॉन्फिग_एनबीआर_एफएस); (२)

जर (स्थिती ! SL_STATUS_OK) {

/* एक त्रुटी आली. त्रुटी हाताळणी येथे जोडली पाहिजे. */

}

(१) sl_usbd_hid_create_instance() द्वारे परत केलेल्या कॉन्फिगरेशनमध्ये जोडायचा वर्ग क्रमांक. (२) कॉन्फिगरेशन क्रमांक (येथे तो फुल-स्पीड कॉन्फिगरेशनमध्ये जोडत आहे).
यूएसबी डिव्हाइस एचआयडी क्लास वापरून संप्रेषण करणे
क्लास इन्स्टन्स कम्युनिकेशन सिंक्रोनस कम्युनिकेशन क्लास इन्स्टन्स कम्युनिकेशन HID क्लास होस्टशी संवाद साधण्यासाठी खालील फंक्शन्स ऑफर करतो.
सारणी - HID कम्युनिकेशन API सारांश

फंक्शनचे नाव
sl_usb d _hid _ re ad _sy nc() sl_usb d _hid _write _sy nc()

ऑपरेशन इंटरप्ट आउट एंडपॉइंटद्वारे होस्टकडून डेटा प्राप्त करते. हे फंक्शन ब्लॉक करत आहे. इंटरप्ट IN एंडपॉइंटद्वारे होस्टला डेटा पाठवते. हे फंक्शन ब्लॉक करत आहे.

सिंक्रोनस कम्युनिकेशन सिंक्रोनस कम्युनिकेशन म्हणजे ट्रान्सफर ब्लॉक होत आहे. फंक्शन कॉल केल्यावर, अॅप्लिकेशन्स एररसह किंवा त्याशिवाय ट्रान्सफर पूर्ण होईपर्यंत ब्लॉक करतात. कायमची वाट पाहणे टाळण्यासाठी टाइमआउट निर्दिष्ट केले जाऊ शकते. उदा.ampखाली एक वाचन आणि लेखन पद्धत दाखवली आहे जी इंटरप्ट आउट एंडपॉइंट वापरून होस्टकडून डेटा प्राप्त करते आणि इंटरप्ट IN एंडपॉइंट वापरून होस्टला डेटा पाठवते.
Example – सिंक्रोनस HID वाचन आणि लेखन

__संरेखित(४) uint8_t rx_buf[2];

__संरेखित(४) uint8_t tx_buf[2];

uint32_t

एक्सफर_लेन;

एसएल_स्टेटस_टी

स्थिती;

स्थिती = sl_usbd_hid_read_sync(class_nbr,

(१)

(रिकामा *)rx_buf,

(१)

2u,

0u,

(१)

&xfer_len);

जर (स्थिती ! SL_STATUS_OK) {

/* एक त्रुटी आली. त्रुटी हाताळणी येथे जोडली पाहिजे. */

}

कॉपीराइट © 2025 सिलिकॉन प्रयोगशाळा. सर्व हक्क राखीव.

40/174

ओव्हरview
status =sl_usbd_hid_read_sync(class_nbr,(1)(void *)rx_buf,(2)2u,0u,(3)&xfer_len);if(status ! SL_STATUS_OK){/* एक एरर आली. एरर हँडलिंग येथे जोडली पाहिजे. */}
status =sl_usbd_hid_write_sync(class_nbr,(1)(void *)tx_buf,(4)2u,0u,(3)&xfer_len);if(status ! SL_STATUS_OK){/* एक एरर आली. एरर हँडलिंग येथे जोडली पाहिजे. */}
(१) sl_usbd_hid_create_instance() मधून तयार केलेला क्लास इंस्टन्स नंबर HID क्लासला ट्रान्सफर योग्य इंटरप्ट OUT किंवा IN एंडपॉइंटवर रूट करण्यासाठी अंतर्गत संदर्भ प्रदान करतो.
(२) अनुप्रयोगाने हे सुनिश्चित केले पाहिजे की फंक्शनला दिलेला बफर सर्व डेटा सामावून घेण्यासाठी पुरेसा मोठा आहे. अन्यथा, सिंक्रोनाइझेशन समस्या उद्भवू शकतात. अंतर्गतरित्या, वाचन ऑपरेशन नियंत्रण एंडपॉइंटसह किंवा इंटरप्ट एंडपॉइंटसह केले जाते, जे sl_usbd_hid_create_instance() कॉल करताना नियंत्रण रीड फ्लॅग सेटवर अवलंबून असते.
(३) अनंत ब्लॉकिंग परिस्थिती टाळण्यासाठी, मिलिसेकंदांमध्ये व्यक्त केलेला टाइमआउट निर्दिष्ट केला जाऊ शकतो. ८०९ चे मूल्य अनुप्रयोग कार्य कायमचे प्रतीक्षा करते.
(४) हे अॅप्लिकेशन इनिशिएलाइज्ड ट्रान्समिट बफर प्रदान करते.
HID नियतकालिक इनपुट अहवाल कार्य
बँडविड्थ वाचवण्यासाठी, होस्टकडे रिपोर्टिंग फ्रिक्वेन्सी मर्यादित करून इंटरप्ट IN एंडपॉइंटवरून रिपोर्ट्स सायलेंट करण्याची क्षमता आहे. असे करण्यासाठी, होस्टने SET_IDLE विनंती पाठवावी. सिलिकॉन लॅब्सद्वारे अंमलात आणलेल्या HID क्लासमध्ये एक अंतर्गत कार्य आहे जे रिपोर्टिंग फ्रिक्वेन्सी मर्यादेचे पालन करते जे तुम्ही एक किंवा अनेक इनपुट रिपोर्ट्सवर लागू करू शकता. आकृती नियतकालिक इनपुट रिपोर्ट्स टास्क नियतकालिक इनपुट रिपोर्ट्स टास्कचे कार्य दर्शवते.
आकृती - नियतकालिक इनपुट रिपोर्ट्स कार्य

(१) डिव्हाइसला SET_IDLE विनंती प्राप्त होते. ही विनंती दिलेल्या अहवाल आयडीसाठी निष्क्रिय कालावधी निर्दिष्ट करते. SET_IDLE विनंतीबद्दल अधिक तपशीलांसाठी, पहा
(२) रिपोर्ट आयडी स्ट्रक्चर (एचआयडी क्लास इनिशिएलायझेशन टप्प्यात वाटप केलेले) आयडल कालावधीसह अपडेट केले जाते. आयडल कालावधी काउंटर आयडल कालावधी मूल्यासह इनिशिएलायझ केले जाते. रिपोर्ट आयडी स्ट्रक्चर इनपुट रिपोर्ट्स आयडी स्ट्रक्चर्स असलेल्या लिंक्ड लिस्टच्या शेवटी घातले जाते. आयडल कालावधी व्हॅल्यू ४-एमएस युनिटमध्ये व्यक्त केली जाते जी ४ ते १०२० एमएसची रेंज देते.

कॉपीराइट © 2025 सिलिकॉन प्रयोगशाळा. सर्व हक्क राखीव.

41/174

ओव्हरview
जर निष्क्रिय कालावधी इंटरप्ट IN एंडपॉइंटच्या मतदान मध्यांतरापेक्षा कमी असेल, तर अहवाल मतदान मध्यांतरावर तयार केले जातात.
(३) दर ४ मिलीसेकंदांनी, नियतकालिक इनपुट रिपोर्ट टास्क इनपुट रिपोर्ट आयडी यादी ब्राउझ करते. प्रत्येक इनपुट रिपोर्ट आयडीसाठी, टास्क दोन संभाव्य ऑपरेशन्सपैकी एक करते. टास्क कालावधीचा कालावधी निष्क्रिय कालावधीसाठी वापरल्या जाणाऱ्या ४-मिसेकंद युनिटशी जुळतो. जर होस्टने SET_IDLE विनंत्या पाठवल्या नसतील, तर इनपुट रिपोर्ट आयडी यादी रिकामी असते आणि टास्कमध्ये प्रक्रिया करण्यासाठी काहीही नसते. टास्क फक्त ० पेक्षा वेगळे आणि ० पेक्षा जास्त निष्क्रिय कालावधी असलेले रिपोर्ट आयडी प्रक्रिया करते.
(४) दिलेल्या इनपुट रिपोर्ट आयडीसाठी, टास्क निष्क्रिय कालावधी संपला आहे की नाही हे सत्यापित करते. जर निष्क्रिय कालावधी संपला नसेल, तर काउंटर कमी केला जातो आणि होस्टला कोणताही इनपुट रिपोर्ट पाठवला जात नाही.
(५) जर निष्क्रिय कालावधी संपला असेल (म्हणजेच, निष्क्रिय कालावधी काउंटर शून्यावर पोहोचला असेल), तर इंटरप्ट IN एंडपॉइंटद्वारे sl_usbd_hid_write_sync() फंक्शनला कॉल करून होस्टला इनपुट रिपोर्ट पाठवला जातो.
(६) टास्कने पाठवलेला इनपुट रिपोर्ट डेटा रिपोर्ट डिस्क्रिप्टरमध्ये वर्णन केलेल्या प्रत्येक इनपुट रिपोर्टसाठी वाटप केलेल्या अंतर्गत डेटा बफरमधून येतो. इनपुट रिपोर्ट पाठवण्यासाठी अॅप्लिकेशन टास्क sl_usbd_hid_write_sync() फंक्शनला कॉल करू शकतो. इनपुट रिपोर्ट डेटा पाठवल्यानंतर, sl_usbd_hid_write_sync() नुकत्याच पाठवलेल्या डेटासह इनपुट रिपोर्ट आयडीशी संबंधित अंतर्गत बफर अपडेट करते. त्यानंतर, नियतकालिक इनपुट रिपोर्ट टास्क प्रत्येक निष्क्रिय कालावधी संपल्यानंतर आणि अॅप्लिकेशन टास्क अंतर्गत बफरमधील डेटा अपडेट करेपर्यंत नेहमीच समान इनपुट रिपोर्ट डेटा पाठवतो. नियतकालिक इनपुट रिपोर्ट टास्कद्वारे केलेल्या ट्रान्समिशनच्या अचूक वेळी बदल झाल्यास इनपुट रिपोर्ट आयडी डेटामध्ये भ्रष्टाचार टाळण्यासाठी काही लॉकिंग यंत्रणा आहे.

कॉपीराइट © 2025 सिलिकॉन प्रयोगशाळा. सर्व हक्क राखीव.

42/174

ओव्हरview
ओव्हरview
यूएसबी डिव्हाइस एमएससी क्लास
यूएसबी डिव्हाइस एमएससी क्लास ओव्हरview यूएसबी डिव्हाइस एमएससी क्लास रिसोर्स नीड्स कडून कोअर यूएसबी डिव्हाइस एमएससी क्लास कॉन्फिगरेशन यूएसबी डिव्हाइस एमएससी क्लास प्रोग्रामिंग गाइड यूएसबी डिव्हाइस एमएससी क्लास स्टोरेज ड्रायव्हर्स
हा विभाग सिलिकॉन लॅब्स यूएसबी डिव्हाइसद्वारे समर्थित मास स्टोरेज डिव्हाइस क्लास (एमएससी) चे वर्णन करतो. एमएससी हा एक प्रोटोकॉल आहे जो यूएसबी डिव्हाइस आणि होस्ट दरम्यान माहितीचे हस्तांतरण सक्षम करतो. हस्तांतरित केली जाणारी माहिती इलेक्ट्रॉनिकरित्या संग्रहित केली जाऊ शकते अशी कोणतीही गोष्ट आहे, जसे की एक्झिक्युटेबल प्रोग्राम, सोर्स कोड, दस्तऐवज, प्रतिमा, कॉन्फिगरेशन डेटा किंवा इतर मजकूर किंवा संख्यात्मक डेटा. यूएसबी डिव्हाइस होस्टला बाह्य स्टोरेज माध्यम म्हणून दिसते, ज्यामुळे fileड्रॅग आणि ड्रॉप द्वारे s.
A file प्रणाली कशी परिभाषित करते fileस्टोरेज मीडियामध्ये व्यवस्थापित केले जातात. यूएसबी मास स्टोरेज क्लास स्पेसिफिकेशनसाठी कोणत्याही विशिष्ट file अनुरूप उपकरणांवर वापरण्यासाठी सिस्टम. त्याऐवजी, ते स्मॉल कॉम्प्युटर सिस्टम इंटरफेस (SCSI) पारदर्शक कमांड सेट वापरून डेटाचे सेक्टर वाचण्यासाठी आणि लिहिण्यासाठी एक सोपा इंटरफेस प्रदान करते. अशा प्रकारे, ऑपरेटिंग सिस्टम USB ड्राइव्हला हार्ड ड्राइव्हसारखे मानू शकतात आणि ते कोणत्याही file त्यांना आवडणारी प्रणाली.
यूएसबी मास स्टोरेज डिव्हाइस क्लास दोन ट्रान्सपोर्ट प्रोटोकॉलना समर्थन देतो, खालीलप्रमाणे:
बल्क-ओन्ली ट्रान्सपोर्ट (बीओटी) कंट्रोल/बल्क/इंटरप्ट (सीबीआय) ट्रान्सपोर्ट (फक्त फ्लॉपी डिस्क ड्राइव्हसाठी वापरले जाते)
मास स्टोरेज डिव्हाइस क्लास फक्त BOT प्रोटोकॉल वापरून SCSI पारदर्शक कमांड सेट लागू करतो, ज्याचा अर्थ डेटा आणि स्थिती माहिती प्रसारित करण्यासाठी फक्त बल्क एंडपॉइंट्स वापरले जातील. MSC अंमलबजावणी अनेक लॉजिकल युनिट्सना समर्थन देते.
एमएससी अंमलबजावणी खालील वैशिष्ट्यांचे पालन करते:
युनिव्हर्सल सिरीयल बस मास स्टोरेज क्लास स्पेसिफिकेशन संपलेview, पुनरावृत्ती १.३ सप्टेंबर ५, २००८. युनिव्हर्सल सिरीयल बस मास स्टोरेज क्लास बल्क-ओन्ली ट्रान्सपोर्ट, पुनरावृत्ती १.० सप्टेंबर ३१, १९९९.
यूएसबी डिव्हाइस एमएससी एसीएल एसएस ओव्हरview
प्रोटोकॉल एंडपॉइंट्स क्लास रिक्वेस्ट्स स्मॉल कॉम्प्युटर सिस्टम इंटरफेस (SCSI)
प्रोटोकॉल
या विभागात, आपण मास स्टोरेज क्लासच्या बल्क-ओन्ली ट्रान्सपोर्ट (BOT) प्रोटोकॉलवर चर्चा करू. बल्क-ओन्ली ट्रान्सपोर्ट प्रोटोकॉलमध्ये तीन एस आहेतtages:
कमांड ट्रान्सपोर्ट डेटा ट्रान्सपोर्ट स्टेटस ट्रान्सपोर्ट
मास स्टोरेज कमांड होस्टद्वारे कमांड ब्लॉक रॅपर (CBW) नावाच्या स्ट्रक्चरद्वारे पाठवले जातात. डेटा ट्रान्सपोर्टची आवश्यकता असलेल्या कमांडसाठी stage, होस्ट CBW च्या लांबी आणि ध्वज फील्डद्वारे निर्दिष्ट केल्यानुसार डिव्हाइसमधून बाइट्सची अचूक संख्या पाठविण्याचा किंवा प्राप्त करण्याचा प्रयत्न करेल. डेटा ट्रान्सपोर्ट s नंतरtage, होस्ट डिव्हाइसवरून कमांड स्टेटस रॅपर (CSW) प्राप्त करण्याचा प्रयत्न करतो जो कमांडची स्थिती तसेच कोणत्याही डेटा अवशेषांची तपशीलवार माहिती देतो (जर

कॉपीराइट © 2025 सिलिकॉन प्रयोगशाळा. सर्व हक्क राखीव.

43/174

ओव्हरview
any). डेटा ट्रान्सपोर्ट समाविष्ट नसलेल्या कमांडसाठीtage, CBW पाठवल्यानंतर होस्ट थेट CSW प्राप्त करण्याचा प्रयत्न करतो. प्रोटोकॉल आकृती - MSC प्रोटोकॉल मध्ये तपशीलवार आहे.
आकृती - एमएससी प्रोटोकॉल

समाप्ती
डिव्हाइसच्या बाजूने, BOT स्पेसिफिकेशनच्या अनुपालनात, MSC खालील एंडपॉइंट्सपासून बनलेला आहे: डीफॉल्ट एंडपॉइंट नावाच्या कंट्रोल IN आणि OUT एंडपॉइंट्सची जोडी. बल्क IN आणि OUT एंडपॉइंट्सची जोडी.
खालील तक्ता एंडपॉइंट्सचे वेगवेगळे उपयोग दर्शवितो.
सारणी - एमएससी एंडपॉइंट वापर

अंत्यबिंदू
नियंत्रण इन नियंत्रण बाहेर मोठ्या प्रमाणात मोठ्या प्रमाणात बाहेर

दिशा
डिव्हाइस ते होस्ट होस्ट ते डिव्हाइस डिव्हाइस ते होस्ट होस्ट ते डिव्हाइस

वापर
गणना आणि MSC वर्ग-विशिष्ट विनंत्या गणना आणि MSC वर्ग-विशिष्ट विनंत्या CSW आणि डेटा पाठवा CBW आणि डेटा प्राप्त करा

वर्ग विनंत्या
MSC BOT प्रोटोकॉलसाठी दोन परिभाषित नियंत्रण विनंत्या आहेत. या विनंत्या आणि त्यांचे वर्णन खालील तक्त्यामध्ये तपशीलवार दिले आहे.

टेबल - मास स्टोरेज क्लास विनंत्या

वर्ग विनंत्या
मोठ्या प्रमाणात साठवणूक रीसेट

वर्णन
ही विनंती मास स्टोरेज डिव्हाइस आणि त्याच्याशी संबंधित इंटरफेस रीसेट करण्यासाठी वापरली जाते. ही विनंती डिव्हाइसला पुढील कमांड ब्लॉक प्राप्त करण्यासाठी तयार करते.

कॉपीराइट © 2025 सिलिकॉन प्रयोगशाळा. सर्व हक्क राखीव.

44/174

ओव्हरview

वर्ग विनंत्या

वर्णन

कमाल मिळवा ही विनंती डिव्हाइसद्वारे समर्थित सर्वोच्च लॉजिकल युनिट नंबर (LUN) परत करण्यासाठी वापरली जाते. उदा.ample, a

LUN

LUN 0 आणि LUN 1 असलेले उपकरण 1 चे मूल्य परत करेल. एकल लॉजिकल युनिट असलेले उपकरण 0 परत करेल किंवा स्टॉल करेल

विनंती. परत करता येणारे कमाल मूल्य १५ आहे.

लहान संगणक प्रणाली इंटरफेस SCSI

प्रोग्रामिंग इंटरफेस स्तरावर, MSC डिव्हाइस SCSI आणि SFF-8020i (ATAPI) सारख्या मानक स्टोरेज-मीडिया कम्युनिकेशन प्रोटोकॉलपैकी एक लागू करते. "प्रोग्रामिंग इंटरफेस" कोणता प्रोटोकॉल लागू केला आहे हे निर्दिष्ट करते आणि USB स्टोरेज डिव्हाइसशी संप्रेषण करण्यासाठी योग्य डिव्हाइस ड्रायव्हर लोड करण्यास होस्ट ऑपरेटिंग सिस्टमला मदत करते. SCSI हा USB MSC स्टोरेज डिव्हाइससह वापरला जाणारा सर्वात सामान्य प्रोटोकॉल आहे. आम्ही MSC SCSI सबक्लाससाठी एक अंमलबजावणी प्रदान करतो जो आमचे GSDK वापरकर्ते बॉक्सच्या बाहेर वापरू शकतात.
SCSI हा संगणक आणि परिधीय उपकरणांमधील संवाद हाताळण्यासाठी मानकांचा एक संच आहे. या मानकांमध्ये कमांड, प्रोटोकॉल, इलेक्ट्रिकल इंटरफेस आणि ऑप्टिकल इंटरफेस यांचा समावेश आहे. USB सारख्या इतर हार्डवेअर इंटरफेस वापरणारे स्टोरेज डिव्हाइसेस, डिव्हाइस/होस्ट माहिती मिळविण्यासाठी आणि डिव्हाइसचे ऑपरेशन नियंत्रित करण्यासाठी आणि स्टोरेज मीडियामध्ये डेटाचे ब्लॉक्स हस्तांतरित करण्यासाठी SCSI कमांड वापरतात.
SCSI कमांडमध्ये विविध प्रकारचे डिव्हाइस आणि फंक्शन्स समाविष्ट असतात आणि म्हणूनच, उपकरणांना या कमांडचा एक उपसंच आवश्यक असतो. सर्वसाधारणपणे, मूलभूत संप्रेषणासाठी खालील कमांड आवश्यक असतात:
चौकशी वाचन क्षमता(१०) वाचन(१०) विनंती सेन्स टेस्ट युनिट रेडी राइट(१०)
कोर कडून यूएसबी डिव्हाइस एमएससी क्लास रिसोर्स गरजा

प्रत्येक वेळी जेव्हा तुम्ही sl_usbd_msc_add_to_configuration() फंक्शनद्वारे USB कॉन्फिगरेशनमध्ये MSC क्लास इन्स्टन्स जोडता तेव्हा, खालील संसाधने कोरमधून वाटप केली जातील.

संसाधन
इंटरफेस पर्यायी इंटरफेस एंडपॉइंट्स इंटरफेस गट

प्रमाण
१ ३०० ६९३ ६५७

लक्षात ठेवा की ते आकडे प्रत्येक कॉन्फिगरेशनसाठी आहेत. तुमचे SL_USBD_INTERFACE_QUANTITY, SL_USBD_ALT_INTERFACE_QUANTITY, SL_USBD_INTERFACE_GROUP_QUANTITY आणि SL_USBD_DESCRIPTOR_QUANTITY कॉन्फिगरेशन व्हॅल्यूज सेट करताना, क्लास किती कॉन्फिगरेशन्स जोडल्या जातील हे विचारात घेण्यास विसरू नका. SL_USBD_OPEN_ENDPOINTS_QUANTITY कॉन्फिगरेशन व्हॅल्यूसाठी, होस्टद्वारे कॉन्फिगरेशन सेट केल्यावरच एंडपॉइंट्स उघडले जातात, त्यामुळे तुम्हाला क्लास इंस्टन्ससाठी आवश्यक असलेल्या एंडपॉइंट्सची संख्या विचारात घ्यावी लागेल.
यूएसबी डिव्हाइस एमएससी क्लास कॉन्फिगरेशन

एमएससी क्लास कॉन्फिगर करण्यासाठी कॉन्फिगरेशन पॅरामीटर्सचे दोन गट वापरले जातात:
यूएसबी डिव्हाइस एमएससी क्लास अॅप्लिकेशन-विशिष्ट कॉन्फिगरेशन यूएसबी डिव्हाइस एमएससी क्लास लॉजिकल युनिट कॉन्फिगरेशन
यूएसबी डिव्हाइस एमएससी क्लास अॅप्लिकेशन-विशिष्ट कॉन्फिगरेशन्स

वर्ग संकलन-वेळ कॉन्फिगरेशन वर्ग उदाहरण निर्मिती

कॉपीराइट © 2025 सिलिकॉन प्रयोगशाळा. सर्व हक्क राखीव.

45/174

ओव्हरview

वर्ग संकलन-वेळ कॉन्फिगरेशन
सिलिकॉन लॅब्स यूएसबी डिव्हाइस एमएससी क्लास आणि एससीएसआय सबक्लास हे कंपाईल वेळी sl_usbd_core_config.h मध्ये असलेल्या #defines द्वारे कॉन्फिगर करण्यायोग्य आहेत. file.
सारणी - सामान्य कॉन्फिगरेशन स्थिरांक

कॉन्फिगरेशन नाव

वर्णन

SL_USBD_MSC_CLASS_INST फंक्शनला कॉल करून तुम्ही वाटप कराल अशा क्लास इंस्टन्सची संख्या

ANCE_QUANTITY

sl_usbd_msc_scsi_create_instance() .

SL_USBD_MSC_CONFIGURA कॉलद्वारे क्लास इंस्टन्स जोडता येणारी कॉन्फिगरेशनची संख्या

TION_QUANTITY

फंक्शन sl_usbd_msc_scsi_add_to_configuration() .

SL_USBD_MSC_LUN_QUANT कॉलद्वारे तुम्ही जोडलेल्या प्रत्येक क्लास इंस्टन्ससाठी लॉजिकल युनिट्सची संख्या

आयटीवाय

फंक्शन sl_usbd_msc_scsi_lun_add() .

SL_USBD_MSC_SCSI_64_BIT ६४ बिट्सच्या लॉजिकल ब्लॉक अॅड्रेस (LBA) साठी समर्थन सक्षम किंवा अक्षम करते.
_एलबीए_एन

SL_USBD_MSC_DATA_BUFF प्रत्येक वर्गाच्या उदाहरणासाठी डेटा बफरचा आकार बाइट्समध्ये ER_SIZE

डीफॉल्ट मूल्य
2
1
2
0
512

क्लास इन्स्टन्स निर्मिती
USB डिव्हाइस MSC SCSI क्लास इंस्टन्स तयार करणे sl_usbd_msc_scsi_create_instance() फंक्शन कॉल करून केले जाते. हे फंक्शन खाली वर्णन केलेले एक कॉन्फिगरेशन आर्ग्युमेंट घेते.
p_scsi_कॉलबॅक
p_scsi_callbacks हे sl_usbd_msc_scsi_callbacks_t प्रकारच्या कॉन्फिगरेशन स्ट्रक्चरचा पॉइंटर आहे. सामान्य यूएसबी डिव्हाइस क्लास कॉलबॅक कनेक्ट/डिस्कनेक्ट व्यतिरिक्त, ते एमएससी क्लासला पर्यायी कॉलबॅक फंक्शन्सचा संच प्रदान करते जे लॉजिकल युनिटवर एखादी घटना घडते तेव्हा कॉल केले जातात. जर कॉलबॅकची आवश्यकता नसेल तर या आर्ग्युमेंटला नल पॉइंटर (NULL) पास केला जाऊ शकतो.
खालील तक्ता या कॉन्फिगरेशन स्ट्रक्चरमध्ये उपलब्ध असलेल्या प्रत्येक कॉन्फिगरेशन फील्डचे वर्णन करतो.
सारणी – sl_usbd_msc_scsi_callbacks_t कॉन्फिगरेशन स्ट्रक्चर

फील्ड

वर्णन

.सक्षम करा

USB क्लास इंस्टन्स यशस्वीरित्या सक्षम झाल्यावर कॉल केला जातो.

.disable USB क्लास इंस्टन्स अक्षम केल्यावर कॉल केला जातो.

जेव्हा होस्टमधून लॉजिकल युनिट बाहेर काढले जाते तेव्हा .host_eject फंक्शन कॉल केले जाते.

फंक्शन सिग्नेचर
रिकामा अ‍ॅप_यूएसबीडी_एमएससी_एससीएसआय_एनेबल(यूआयएनटी८_टी क्लास_एनबीआर);
व्हॉइड अ‍ॅप_यूएसबीडी_एमएससी_एससीएसआय_डिसेबल(यूआयएनटी८_टी क्लास_एनबीआर); व्हॉइड अ‍ॅप_यूएसबीडी_एमएससी_एससीएसआय_होस्ट_इजेक्ट(यूआयएनटी८_टी क्लास_एनबीआर, यूआयएनटी८_टी लू_एनबीआर);

यूएसबी डिव्हाइस एमएससी क्लास लॉजिकल युनिट कॉन्फिगरेशन

MSC क्लास इन्स्टन्समध्ये लॉजिकल युनिट जोडणे हे sl_usbd_msc_lun_add() फंक्शन कॉल करून केले जाते. हे फंक्शन खाली वर्णन केलेले एक कॉन्फिगरेशन आर्ग्युमेंट घेते.

पी_लू_माहिती

p_lu_info हे sl_usbd_msc_scsi_lun_info_t प्रकारच्या रचनेचे पॉइंटर आहे. त्याचा उद्देश MSC वर्गाला लॉजिकल युनिटची माहिती प्रदान करणे आहे.
खालील तक्ता या कॉन्फिगरेशन स्ट्रक्चरमध्ये उपलब्ध असलेल्या प्रत्येक कॉन्फिगरेशन फील्डचे वर्णन करतो.

सारणी – sl_usbd_msc_scsi_lun_info_t कॉन्फिगरेशन स्ट्रक्चर

कॉपीराइट © 2025 सिलिकॉन प्रयोगशाळा. सर्व हक्क राखीव.

46/174

ओव्हरview

फील्ड

वर्णन

फील्ड
.scsi_lun_api_p tr

वर्णन
हे लॉजिकल युनिट हाताळणाऱ्या मीडिया ड्रायव्हर API कडे निर्देशक. स्टोरेज ड्रायव्हर्सबद्दल अधिक माहितीसाठी USB डिव्हाइस MSC क्लास स्टोरेज ड्रायव्हर्स पहा.

.वेंड ओ आर_आयडी _ पी टीआर
.उत्पादन_आयडी_पीटीआर
.p r d uct_ re v isi on_level .is_ re ad _o nly

लॉजिकल युनिटची विक्रेता ओळख असलेल्या स्ट्रिंगचा पॉइंटर. स्ट्रिंगची कमाल लांबी 8 वर्ण आहे. लॉजिकल युनिटची उत्पादन ओळख असलेल्या स्ट्रिंगचा पॉइंटर. स्ट्रिंगची कमाल लांबी 16 वर्ण आहे. उत्पादन पुनरावृत्ती पातळी.
लॉजिकल युनिट हे बिंदूपासून फक्त वाचनीय म्हणून पाहिले पाहिजे की नाही हे दर्शविणारा ध्वज view होस्ट (खरे) किंवा नाही (खोटे).

यूएसबी डिव्हाइस एमएससी क्लास प्रोग्रामिंग मार्गदर्शक

हा विभाग MSC वर्ग कसा वापरायचा हे स्पष्ट करतो.
USB डिव्हाइस MSC क्लास सुरू करणे तुमच्या डिव्हाइसमध्ये USB डिव्हाइस MSC SCSI क्लास इन्स्टन्स जोडणे USB डिव्हाइस MSC क्लास लॉजिकल युनिट हँडलिंग
यूएसबी डिव्हाइस एमएससी क्लास सुरू करणे

तुमच्या डिव्हाइसमध्ये MSC SCSI क्लास फंक्शनॅलिटी जोडण्यासाठी, प्रथम sl_usbd_msc_init() आणि sl_usbd_msc_scsi_init() फंक्शन कॉल करून MSC बेस क्लास आणि SCSI सबक्लास इनिशियलाइज करा.
माजीampखाली sl_usbd_msc_init() आणि sl_usbd_msc_scsi_init() कसे कॉल करायचे ते दाखवले आहे.

Example – sl_usbd_msc_init() आणि sl_usbd_msc_scsi_init() ला कॉल करत आहे

sl_status_t स्थिती;
स्थिती = sl_usbd_msc_init(); जर (स्थिती ! SL_STATUS_OK) { /* एक त्रुटी आली. त्रुटी हाताळणी येथे जोडली पाहिजे. */
}
स्थिती = sl_usbd_msc_scsi_init(); जर (स्थिती ! SL_STATUS_OK) { /* एक त्रुटी आली. त्रुटी हाताळणी येथे जोडली पाहिजे. */
}
तुमच्या डिव्हाइसमध्ये USB डिव्हाइस MSC SCSI क्लास इन्स्टन्स जोडणे
तुमच्या डिव्हाइसमध्ये MSC SCSI क्लास फंक्शनॅलिटी जोडण्यासाठी, प्रथम एक इंस्टन्स तयार करा, नंतर ते तुमच्या डिव्हाइसच्या कॉन्फिगरेशनमध्ये जोडा. तुम्ही तुमच्या इंस्टन्समध्ये कमीत कमी एक लॉजिकल युनिट जोडणे आवश्यक आहे.
MSC SCSI क्लास इन्स्टन्स तयार करणे
sl_usbd_msc_scsi_create_instance() फंक्शन कॉल करून MSC SCSI क्लास इंस्टन्स तयार करा.
माजी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 वर्ग_एनबीआर; sl_स्थिती_टी स्थिती;
sl_usbd_msc_scsi_callbacks_t app_usbd_msc_scsi_callbacks = { .सक्षम = शून्य, .अक्षम = शून्य, .होस्ट_इजेक्ट = शून्य };
स्थिती = sl_usbd_msc_scsi_create_instance(&app_usbd_msc_scsi_callbacks,0 &class_nbr);
जर (स्थिती ! SL_STATUS_OK) { /* एक त्रुटी आली. त्रुटी हाताळणी येथे जोडली पाहिजे. */ }
तुमच्या डिव्हाइसच्या कॉन्फिगरेशनमध्ये MSC क्लास इन्स्टन्स जोडणे
MSC क्लास इन्स्टन्स तयार केल्यानंतर, तुम्ही फंक्शन कॉल करून ते कॉन्फिगरेशनमध्ये जोडू शकता
sl_usbd_msc_कॉन्फिगरेशनमध्ये_जोडा().
माजीampखाली डिफॉल्ट आर्ग्युमेंट्स वापरून sl_usbd_msc_scsi_add_to_configuration() कसे कॉल करायचे ते दाखवा.
Example – sl_usbd_ msc_scsi_add_to_configuration() ला कॉल करत आहे

sl_status_t स्थिती;

स्थिती = sl_usbd_msc_scsi_add_to_configuration(class_nbr,

(१)

कॉन्फिग_एनबीआर_एफएस);

(१)

जर (स्थिती ! SL_STATUS_OK) {

/* एक त्रुटी आली. त्रुटी हाताळणी येथे जोडली पाहिजे. */

}

(१) sl_usbd_msc_scsi_create_instance() द्वारे परत केलेल्या कॉन्फिगरेशनमध्ये जोडायचा वर्ग क्रमांक. (३२) कॉन्फिगरेशन क्रमांक (येथे तो फुल-स्पीड कॉन्फिगरेशनमध्ये जोडत आहे).
यूएसबी डिव्हाइस एमएससी क्लास लॉजिकल युनिट हँडलिंग
लॉजिकल युनिट जोडणे स्टोरेज माध्यम जोडणे/वेगळे करणे
लॉजिकल युनिट जोडणे
तुमच्या 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;

एसएल_स्टेटस_टी

स्थिती;

lu_info.sl_usbd_msc_scsi_lun_api_t = &अ‍ॅप_usbd_scsi_स्टोरेज_ब्लॉक_डिव्हाइस_एपीआय;

लु_इन्फो.विक्रेता_आयडी_पीटीआर

= “सिलिकॉन लॅब्स”;

lu_info.product_id_ptr बद्दल

= “डिव्हाइस ब्लॉक करा माजीampले”;

lu_info.product_revision_level = ०x१०००u;

lu_info.is_ready_only

= खोटे;

स्थिती = sl_usbd_msc_scsi_lun_add(वर्ग_nbr, &lu_माहिती, &lu_object_ptr);
जर (स्थिती ! SL_STATUS_OK) { /* एक त्रुटी आली. त्रुटी हाताळणी येथे जोडली पाहिजे. */ }

स्टोरेज माध्यम जोडणे/वेगळे करणे
लॉजिकल युनिट जोडल्यानंतर, होस्टकडून उपलब्ध होण्यासाठी स्टोरेज माध्यम जोडणे आवश्यक आहे. लॉजिकल युनिटशी स्टोरेज मीडिया असोसिएशन नियंत्रित करण्यासाठी MSC क्लास दोन फंक्शन्स ऑफर करतो: sl_usbd_msc_scsi_lun_attach() आणि sl_usbd_msc_scsi_lun_detach(). आवश्यक असल्यास एम्बेडेड अॅप्लिकेशनमधून पुन्हा प्रवेश मिळविण्यासाठी हे फंक्शन्स तुम्हाला स्टोरेज डिव्हाइस काढून टाकण्याचे अनुकरण करण्याची परवानगी देतात.
माजीampखाली sl_usbd_msc_scsi_lun_attach() आणि sl_usbd_msc_scsi_lun_detach() हे फंक्शन कसे वापरायचे ते दाखवले आहे.
Exampले - मीडिया संलग्न/विलग करा

sl_status_t स्थिती;

स्थिती = sl_usbd_msc_scsi_lun_attach(lu_object_ptr); जर (स्थिती ! SL_STATUS_OK) { /* एक त्रुटी आली. येथे त्रुटी हाताळणी जोडली पाहिजे. */
}

(१)

स्थिती = sl_usbd_msc_scsi_lun_detach(lu_object_ptr); जर (स्थिती ! SL_STATUS_OK) {
/* एक त्रुटी आली. त्रुटी हाताळणी येथे जोडली पाहिजे. */
}

(१)

स्थिती = sl_usbd_msc_scsi_lun_attach(lu_object_ptr) जर (स्थिती ! SL_STATUS_OK) {
/* एक त्रुटी आली. त्रुटी हाताळणी येथे जोडली पाहिजे. */
}

(१)

(१) या क्षणापासून, जर MSC डिव्हाइस होस्टशी जोडलेले असेल, तर स्टोरेज मीडिया अॅक्सेस करण्यायोग्य असेल.
(२) जर MSC डिव्हाइस होस्टशी जोडलेले असेल, तर मीडिया आता अनुपलब्ध दिसेल. या क्षणी, एम्बेडेड अॅप्लिकेशनमधून मीडियावर ऑपरेशन्स करता येतात.
(३) पुन्हा, जर MSC डिव्हाइस होस्टशी जोडलेले असेल, तर स्टोरेज मीडिया कनेक्ट केलेला दिसेल.
यूएसबी डिव्हाइस एमएससी क्लास स्टोरेज ड्रायव्हर्स
यूएसबी डिव्हाइस एमएससी क्लासला स्टोरेज माध्यमाशी संवाद साधण्यासाठी स्टोरेज ड्रायव्हरची आवश्यकता असते. सध्या, सिलिकॉन लॅब्स ड्रायव्हर्स देत नाहीत.

कॉपीराइट © 2025 सिलिकॉन प्रयोगशाळा. सर्व हक्क राखीव.

49/174

ओव्हरview
TPY aa he ड्रायव्हर AI हे typedef sl_usbd_msc_scsi_lun_api_t द्वारे परिभाषित केले आहे. जेव्हा तुम्ही sl_usbd_msc_scsi_lun_add() सह लॉजिक l युनिट dd करता तेव्हा तुमचा sl_usbd_msc_scsi_lun_info_t v rible, pssed srgument aaaaaaaaa करण्यासाठी आमचा sl_usbd_msc_scsi_lun_api_t v rible समाविष्ट करणे आवश्यक आहे. स्ट्रक्चर्सबद्दल अधिक तपशीलांसाठी विभाग USB डिव्हाइस MSC SCSI API पहा. स्टोरेज ड्रायव्हर अंमलबजावणी RAM मधील सेक्टरच्या अॅरेइतकी सोपी असू शकते. सामान्य सेक्टर आकार (म्हणजेच, ब्लॉक आकार) मास स्टोरेज डिव्हाइसेससाठी 512 आणि CD-ROM साठी 2048 आहे.

कॉपीराइट © 2025 सिलिकॉन प्रयोगशाळा. सर्व हक्क राखीव.

50/174

ओव्हरview
ओव्हरview
यूएसबी डिव्हाइस विक्रेता वर्ग
यूएसबी डिव्हाइस विक्रेता वर्ग संपलाview यूएसबी डिव्हाइस विक्रेता वर्ग संसाधन आवश्यकता कोर यूएसबी डिव्हाइस विक्रेता वर्ग कॉन्फिगरेशन यूएसबी डिव्हाइस विक्रेता वर्ग प्रोग्रामिंग मार्गदर्शक विक्रेता वर्ग तुम्हाला विक्रेता-विशिष्ट उपकरणे तयार करण्याची परवानगी देतो जी मालकी प्रोटोकॉल लागू करू शकतात. होस्ट आणि डिव्हाइस दरम्यान डेटा हस्तांतरित करण्यासाठी ते बल्क एंडपॉइंट्सच्या जोडीवर अवलंबून असते. मोठ्या प्रमाणात असंरचित डेटा हस्तांतरित करण्यासाठी बल्क ट्रान्सफर सोयीस्कर आहेत आणि त्रुटी शोध आणि पुन्हा प्रयत्न यंत्रणा वापरून डेटाची विश्वसनीय देवाणघेवाण प्रदान करतात. बल्क एंडपॉइंट्स व्यतिरिक्त, विक्रेता वर्ग इंटरप्ट एंडपॉइंट्सची पर्यायी जोडी देखील वापरू शकतो. कोणतीही ऑपरेटिंग सिस्टम (OS) विक्रेता वर्गासह कार्य करू शकते जर OS मध्ये विक्रेता वर्ग हाताळण्यासाठी ड्रायव्हर असेल. OS वर अवलंबून, ड्रायव्हर मूळ किंवा विक्रेता-विशिष्ट असू शकतो. उदाहरणार्थ, मायक्रोसॉफ्ट विंडोज® अंतर्गत, तुमचा अनुप्रयोग विक्रेता डिव्हाइसशी संवाद साधण्यासाठी मायक्रोसॉफ्टने प्रदान केलेल्या WinUSB ड्रायव्हरशी संवाद साधतो.
यूएसबी डिव्हाइस विक्रेता वर्ग संपलाview
आकृती - विंडोज होस्ट आणि व्हेंडर क्लासमधील सामान्य आर्किटेक्चर व्हेंडर क्लास वापरून होस्ट आणि डिव्हाइसमधील सामान्य आर्किटेक्चर दर्शविते. या उदाहरणातampतर, होस्ट ऑपरेटिंग सिस्टम एमएस विंडोज आहे.
आकृती - एमएस विंडोज होस्ट आणि व्हेंडर क्लासमधील सामान्य आर्किटेक्चर

एमएस विंडोजच्या बाजूला, अॅप्लिकेशन यूएसबी लायब्ररीशी संवाद साधून विक्रेता डिव्हाइसशी संवाद साधते. लायब्ररी, जसे की लिबसब, डिव्हाइस आणि त्याच्याशी संबंधित पाईप्स व्यवस्थापित करण्यासाठी आणि नियंत्रण, बल्क आणि इंटरप्ट एंडपॉइंट्सद्वारे डिव्हाइसशी संवाद साधण्यासाठी एपीआय देतात.
डिव्हाइसच्या बाजूने, विक्रेता वर्ग खालील एंडपॉइंट्सने बनलेला आहे:
नियंत्रण IN आणि OUT एंडपॉइंट्सच्या जोडीला डीफॉल्ट एंडपॉइंट म्हणतात. बल्क IN आणि OUT एंडपॉइंट्सची जोडी.

कॉपीराइट © 2025 सिलिकॉन प्रयोगशाळा. सर्व हक्क राखीव.

51/174

ओव्हरview

इंटरप्ट IN आणि OUT एंडपॉइंट्सची जोडी. ही जोडी पर्यायी आहे. खालील तक्ता वेगवेगळ्या एंडपॉइंट्सचा वापर दर्शवितो:
टेबल - विक्रेता वर्ग अंतिम बिंदू वापर

अंत्यबिंदू दिशा

IN नियंत्रित करा
नियंत्रण
बाहेर
मोठ्या प्रमाणात

डिव्हाइस-टू-होस्ट
>होस्ट-टू-डिव्हाइस
डिव्हाइस-टू-होस्ट

मोठ्या प्रमाणात बाहेर पडा
इंटरप्ट IN
व्यत्यय आणणे
बाहेर

होस्ट-टूडिव्हाइस
डिव्हाइस-टू-होस्ट
होस्ट-टूडिव्हाइस

वापर
गणना आणि विक्रेता-विशिष्ट विनंत्यांसाठी मानक विनंत्या.
गणना आणि विक्रेता-विशिष्ट विनंत्यांसाठी मानक विनंत्या.
कच्चा डेटा कम्युनिकेशन. डेटाची रचना मालकीच्या प्रोटोकॉलनुसार केली जाऊ शकते.
कच्चा डेटा कम्युनिकेशन. डेटाची रचना मालकीच्या प्रोटोकॉलनुसार केली जाऊ शकते.
कच्चा डेटा संप्रेषण किंवा सूचना. डेटाची रचना मालकीच्या प्रोटोकॉलनुसार केली जाऊ शकते. कच्चा डेटा संप्रेषण किंवा सूचना. डेटाची रचना मालकीच्या प्रोटोकॉलनुसार केली जाऊ शकते.

डिव्हाइस अॅप्लिकेशन होस्टला किंवा त्याच्याकडून डेटा पाठवण्यासाठी किंवा प्राप्त करण्यासाठी बल्क आणि इंटरप्ट एंडपॉइंट्स वापरू शकते. होस्टने पाठवलेल्या विक्रेता-विशिष्ट विनंत्या डीकोड करण्यासाठी ते फक्त डीफॉल्ट एंडपॉइंट्स वापरू शकते. मानक विनंत्या सिलिकॉन लॅब्स यूएसबी डिव्हाइसच्या कोर लेयरद्वारे अंतर्गत व्यवस्थापित केल्या जातात.
कोर कडून यूएसबी डिव्हाइस विक्रेता वर्ग संसाधन गरजा

प्रत्येक वेळी जेव्हा तुम्ही sl_usbd_vendor_add_to_configuration() फंक्शनद्वारे कॉन्फिगरेशनमध्ये व्हेंडर क्लास इंस्टन्स जोडता तेव्हा, खालील संसाधने कोरमधून वाटप केली जातील.

संसाधन
इंटरफेस पर्यायी इंटरफेस एंडपॉइंट्स इंटरफेस गट

प्रमाण
१ १ २ (जर तुम्ही इंटरप्ट एंडपॉइंट्स सक्षम केले असतील तर ४) ०

लक्षात ठेवा की ते आकडे प्रत्येक कॉन्फिगरेशनसाठी आहेत. तुमचे SL_USBD_INTERFACE_QUANTITY, SL_USBD_ALT_INTERFACE_QUANTITY, SL_USBD_INTERFACE_GROUP_QUANTITY आणि SL_USBD_DESCRIPTOR_QUANTITY कॉन्फिगरेशन व्हॅल्यूज सेट करताना, क्लास किती कॉन्फिगरेशन्स जोडल्या जातील हे विचारात घेण्यास विसरू नका. SL_USBD_OPEN_ENDPOINTS_QUANTITY कॉन्फिगरेशन व्हॅल्यूसाठी, होस्टद्वारे कॉन्फिगरेशन सेट केल्यावरच एंडपॉइंट्स उघडले जातात, त्यामुळे तुम्हाला क्लास इंस्टन्ससाठी आवश्यक असलेल्या एंडपॉइंट्सची संख्या विचारात घ्यावी लागेल.
USB डिव्हाइस विक्रेता वर्ग कॉन्फिगरेशन

विक्रेता वर्ग कॉन्फिगर करण्यासाठी कॉन्फिगरेशन पॅरामीटर्सचे दोन गट वापरले जातात:
यूएसबी डिव्हाइस विक्रेता वर्ग अनुप्रयोग-विशिष्ट कॉन्फिगरेशन यूएसबी डिव्हाइस विक्रेता वर्ग उदाहरण कॉन्फिगरेशन
यूएसबी डिव्हाइस विक्रेता वर्ग अनुप्रयोग-विशिष्ट कॉन्फिगरेशन
प्रथम, सिलिकॉन लॅब्स यूएसबी डिव्हाइस व्हेंडर क्लास मॉड्यूल वापरण्यासाठी, तुमच्या अॅप्लिकेशनच्या गरजेनुसार व्हेंडर कंपाइल-टाइम कॉन्फिगरेशन परिभाषित करा. ते sl_usbd_core_config.h हेडरमध्ये पुन्हा एकत्रित केले जातात. file विक्रेता विभागाअंतर्गत. प्रमाण कॉन्फिगरेशनचा उद्देश यूएसबी डिव्हाइस मॉड्यूलला किती यूएसबी विक्रेता ऑब्जेक्ट्स वाटप करायचे आहेत याची माहिती देणे आहे.
खालील तक्ता प्रत्येक कॉन्फिगरेशन परिभाषित करते.

कॉपीराइट © 2025 सिलिकॉन प्रयोगशाळा. सर्व हक्क राखीव.

52/174

ओव्हरview

सारणी - यूएसबी डिव्हाइस विक्रेता कॉन्फिगरेशन परिभाषित करते

कॉन्फिगरेशन नाव

वर्णन

डीफॉल्ट मूल्य

SL_USBD_VENDOR_CLASS_INSTANCE_QUANTITY sl_usbd_vendor_create_instance() या २ फंक्शनला कॉल करून तुम्ही किती क्लास इंस्टन्स वाटप कराल.

SL_USBD_VENDOR_CONFIGURATION_QUANTITY कॉन्फिगरेशनची संख्या. sl_usbd_vendor_add_to_configuration() फंक्शनला कॉल करून विक्रेता वर्गाचे उदाहरण एका किंवा अधिक कॉन्फिगरेशनमध्ये 1 जोडले जाऊ शकते.

यूएसबी डिव्हाइस विक्रेता वर्ग उदाहरण कॉन्फिगरेशन

हा विभाग विक्रेता वर्गाच्या उदाहरणांशी संबंधित कॉन्फिगरेशन परिभाषित करतो.
क्लास इन्स्टन्स निर्मिती intr_en मध्यांतर p_vendor_callbacks
क्लास इन्स्टन्स निर्मिती

व्हेंडर क्लास इन्स्टन्स तयार करणे हे sl_usbd_vendor_create_instance() फंक्शन कॉल करून केले जाते, जे खाली वर्णन केलेल्या तीन कॉन्फिगरेशन आर्ग्युमेंट्स घेते.

इंट्रा_एन
इंटरप्ट एंडपॉइंट्सची जोडी जोडावी की नाही हे दर्शविणारा बुलियन.

मूल्य
खरे खोटे

वर्णन
एम्बेडेड अॅप्लिकेशनमध्ये इन/आउट एंडपॉइंट्सची एक जोडी जोडली जाईल आणि उपलब्ध करून दिली जाईल. कोणताही इंटरप्ट एंडपॉइंट्स जोडला जाणार नाही. फक्त बल्क इन/आउट एंडपॉइंट्सची एक जोडी उपलब्ध असेल.

मध्यांतर
जर तुम्ही intr_en ला true वर सेट केले तर तुम्ही इंटरप्ट एंडपॉइंट्स पोलिंग इंटरव्हल (मिलीसेकंदात) निर्दिष्ट करू शकता. जर तुम्ही intr_en ला false वर सेट केले तर तुम्ही इंटरव्हल 0 वर सेट करू शकता कारण ते क्लासद्वारे दुर्लक्षित केले जाईल.
पी_विक्रेता_कॉलबॅक
p_vendor_callbacks हे कॉलबॅक फंक्शन्स स्ट्रक्चर व्हेरिअबलचे पॉइंटर आहे. जे तुम्ही क्लास स्पेसिफिक कंट्रोल रिक्वेस्ट हाताळण्यासाठी निर्दिष्ट करू शकता. जर तुम्ही कोणत्याही क्लास स्पेसिफिक रिक्वेस्ट वापरत नसाल किंवा सूचना सक्षम/अक्षम करण्याची आवश्यकता असेल, तर तुम्ही हे NULL वर सेट करू शकता.
माजीampखाली तुमच्या वर्ग विशिष्ट विनंत्या हँडलरची अपेक्षित स्वाक्षरी दिली आहे.
Example – वर्ग-विशिष्ट विनंती कार्याची स्वाक्षरी

व्हॉइड अ‍ॅप_यूएसबीडी_व्हेंडर_रेक्यू_हँडल(यूआयएनटी8_टी

वर्ग_एनबीआर, (१)

कॉन्स्ट sl_usbd_setup_req_t *p_setup_req); (2)

sl_usbd_vendor_callbacks_t अ‍ॅप_usbd_vendor_callback_functions =
{
.सक्षम = शून्य, .अक्षम = शून्य, .सेटअप_रेक = अ‍ॅप_यूएसबीडी_व्हेंडर_रेक_हँडल,
};

(१) विक्रेता वर्ग उदाहरण क्रमांक.

कॉपीराइट © 2025 सिलिकॉन प्रयोगशाळा. सर्व हक्क राखीव.

53/174

ओव्हरview

(२) होस्टकडून मिळालेल्या सेटअप विनंतीकडे निर्देशक.
यूएसबी डिव्हाइस विक्रेता वर्ग प्रोग्रामिंग मार्गदर्शक
हा विभाग विक्रेता वर्ग कसा वापरायचा ते स्पष्ट करतो. 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 वर्ग_एनबीआर; sl_स्थिती_टी स्थिती;

स्थिती = sl_usbd_vendor_create_instance(खोटे,

(१)

0u,

(१)

अ‍ॅप_यूएसबीडी_व्हेंडर_कॉलबॅक_फंक्शन्स, (३)

&वर्ग_एनबीआर);

जर (स्थिती ! SL_STATUS_OK) {

/* एक त्रुटी आली. त्रुटी हाताळणी येथे जोडली पाहिजे. */

}

(१) या क्लास इंस्टन्समध्ये कोणतेही इंटरप्ट एंडपॉइंट्स नाहीत. (२) इंटरप्ट एंडपॉइंट्स अक्षम असल्याने इंटरव्हल दुर्लक्षित केले जाते.

कॉपीराइट © 2025 सिलिकॉन प्रयोगशाळा. सर्व हक्क राखीव.

54/174

ओव्हरview

(३) कॉलबॅक फंक्शन जे तुमच्या अॅप्लिकेशनचा भाग आहे जे विक्रेता-विशिष्ट वर्ग विनंत्या हाताळते. अधिक माहितीसाठी USB डिव्हाइस विक्रेता वर्ग वापरून संप्रेषण पहा. तुमच्या डिव्हाइसच्या कॉन्फिगरेशन(स) मध्ये विक्रेता वर्ग उदाहरण जोडणे तुम्ही विक्रेता वर्ग उदाहरण तयार केल्यानंतर, तुम्ही USBD_Vendor_ConfigAdd() फंक्शन कॉल करून ते कॉन्फिगरेशनमध्ये जोडू शकता. उदा.ampखाली डिफॉल्ट आर्ग्युमेंट्स वापरून sl_usbd_vendor_add_to_configuration() कसे कॉल करायचे ते दाखवले आहे.
Example – sl_usbd_vendor_add_to_configuration() ला कॉल करत आहे

sl_status_t स्थिती;

स्थिती = sl_usbd_vendor_add_to_configuration(class_nbr,

(१)

कॉन्फिग_एनबीआर_एफएस);

(१)

जर (स्थिती ! SL_STATUS_OK) {

/* एक त्रुटी आली. त्रुटी हाताळणी येथे जोडली पाहिजे. */

}

(१) sl_usbd_vendor_create_instance() द्वारे परत केलेल्या कॉन्फिगरेशनमध्ये जोडायचा वर्ग क्रमांक. (२) कॉन्फिगरेशन क्रमांक (येथे तो फुल-स्पीड कॉन्फिगरेशनमध्ये जोडत आहे).
यूएसबी डिव्हाइस विक्रेता वर्ग वापरून संवाद साधणे
सामान्य समकालिक संप्रेषण असिंक्रोनस संप्रेषण विक्रेता विनंती सामान्य विक्रेता वर्ग होस्टशी संवाद साधण्यासाठी खालील कार्ये प्रदान करतो. फंक्शनच्या पॅरामीटर्सबद्दल अधिक तपशीलांसाठी, USB डिव्हाइस विक्रेता API पहा.
सारणी - विक्रेता संप्रेषण API सारांश

फंक्शनचे नाव
sl_usb d _v e nd o r_ re ad _b ulk_sy nc() sl_usb d _v e nd o r_write _b ulk_sy nc() sl_usb d _v e nd o r_ re ad _b ulk_asy nc() sl_usb d _v e nd o r_ re ad _b ulk_asy nc() sl_usb d _v e nd o r_ re ad _inte rrup t_sy nc() sl_usb d _v e nd o r_write _inte rrup t_sy nc() sl_usb d _v e nd o r_re ad _inte rrup t_asy nc
()
sl_usb d _v e o r_write _inte rrup t_asy nc
()

ऑपरेशन होस्टकडून बल्क आउट एंडपॉइंटद्वारे डेटा प्राप्त करते. हे फंक्शन ब्लॉक करत आहे. बल्क IN एंडपॉइंटद्वारे होस्टला डेटा पाठवते. हे फंक्शन ब्लॉक करत आहे. बल्क आउट एंडपॉइंटद्वारे होस्टकडून डेटा प्राप्त करते. हे फंक्शन नॉन-ब्लॉकिंग आहे. बल्क IN एंडपॉइंटद्वारे होस्टला डेटा पाठवते. हे फंक्शन नॉन-ब्लॉकिंग आहे. इंटरप्ट आउट एंडपॉइंटद्वारे होस्टकडून डेटा प्राप्त करते. हे फंक्शन ब्लॉक करत आहे. इंटरप्ट IN एंडपॉइंटद्वारे होस्टला डेटा पाठवते. हे फंक्शन ब्लॉक करत आहे. इंटरप्ट आउट एंडपॉइंटद्वारे होस्टला डेटा प्राप्त करते. हे फंक्शन नॉन-
अवरोधित करणे
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

__संरेखित(४) uint8_t rx_buf[2];

__संरेखित(४) uint8_t tx_buf[2];

uint32_t

एक्सफर_लेन;

एसएल_स्टेटस_टी

स्थिती;

status = sl_usbd_vendor_read_bulk_sync(class_nbr,

(१)

(void *)&rx_buf[0],

(१)

2u,

0u,

(१)

&xfer_len);

जर (स्थिती ! SL_STATUS_OK) {

/* $$$$ त्रुटी हाताळा. */

}

status = sl_usbd_vendor_write_bulk_sync( class_nbr,

(१)

(void *)&tx_buf[0],

(१)

2u,

0u,

(१)

false,

(१)

&xfer_len);

जर (स्थिती ! SL_STATUS_OK) {

/* $$$$ त्रुटी हाताळा. */

}

(1) The class instance number created with sl_usbd_vendor_create_instance() provides an internal reference to the Vendor class to route the transfer to the proper bulk OUT or IN endpoint.
(2) The application must ensure that the buffer provided to the function is large enough to accommodate all the data. Otherwise, synchronization issues might happen.
(3) In order to avoid an infinite blocking situation, a timeout expressed in milliseconds can be specified. A value of 809 makes the application task wait forever.
(४) हे अॅप्लिकेशन इनिशिएलाइज्ड ट्रान्समिट बफर प्रदान करते.
(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)

{

__संरेखित(४) uint8_t rx_buf[2];

__संरेखित(४) uint8_t tx_buf[2];

एसएल_स्टेटस_टी

स्थिती;

status = sl_usbd_vendor_read_bulk_async(class_nbr,

(void *)&rx_buf[0],

(१)

2u,

app_usbd_vendor_rx_completed,

NULL);

(१)

जर (स्थिती ! SL_STATUS_OK) {

/* $$$$ त्रुटी हाताळा. */

}

status = sl_usbd_vendor_write_bulk_async(class_nbr,

(void *)&tx_buf[0],

(१)

2u,

app_usbd_vendor_tx_completed,

निरर्थक,

(१)

false);

(१)

जर (स्थिती ! SL_STATUS_OK) {

/* $$$$ त्रुटी हाताळा. */

}

}

(१०५) (१५५)
(१०५) (१५५)

static void app_usbd_vendor_rx_completed(uint8_t class_nbr,

(१)

void *p_buf,

uint32_t buf_len,

uint32_t xfer_len,

void *p_callback_arg,

sl_status_t status)

{

जर (स्थिती ! SL_STATUS_OK) {

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

} इतर {

/* $$$$ त्रुटी हाताळा. */

}

}

static void app_usbd_vendor_tx_completed(uint8_t class_nbr,

(१)

void *p_buf,

uint32_t buf_len,

uint32_t xfer_len,

void *p_callback_arg,

sl_status_t status)

{

जर (स्थिती ! SL_STATUS_OK) {

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

} इतर {

/* $$$$ त्रुटी हाताळा. */

}

}

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

कॉपीराइट © 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

०x४१यू

#define APP_VENDOR_REQ_RECEIVE_DATA_FROM_HOST 0x02u

#define APP_VENDOR_REQ_SEND_DATA_TO_HOST 0x03u

#define APP_VENDOR_REQ_DATA_BUF_SIZE

50u

static uint8_t app_vendor_req_buf[APP_VENDOR_REQ_DATA_BUF_SIZE];

static bool app_usbd_vendor_req (uint8_t

class_nbr,

const sl_usbd_setup_req_t *p_setup_req)

(१)

{

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;

(१०५) (१५५)

case APP_VENDOR_REQ_RECEIVE_DATA_FROM_HOST:

(१)

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:

(१)

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;

डीफॉल्ट:

(१)

// 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 stage उपस्थित.

*/

} sl_usbd_setup_req_t;

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

कॉपीराइट © 2025 सिलिकॉन प्रयोगशाळा. सर्व हक्क राखीव.

60/174

API दस्तऐवजीकरण
API दस्तऐवजीकरण
API दस्तऐवजीकरण
मॉड्यूलची यादी
USB Device API USB Device ACM API USB Device CDC API USB Device Core API USB Device HID API USB Device MSC API USB Device MSC SCSI API USB Device Vendor API

वर्णन
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_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

वर्णन

N/A

line_state_interval Line state notification interval in milliseconds (value must

be a power of 2).

N/A

call_mgmt_capabilities Call Management Capabilities bitmap. OR’ed of the

following flags:

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

sl_usbd_cdc_acm_callbacks_t N/A
*

uint8_t *

N/A

p_acm_callbacks p_subclass_nbr

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

परतावा

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 [pdf] सूचना पुस्तिका
USB Device Stack, Device Stack, Stack

संदर्भ

एक टिप्पणी द्या

तुमचा ईमेल पत्ता प्रकाशित केला जाणार नाही. आवश्यक फील्ड चिन्हांकित आहेत *