क्या i2c दास की अधिकतम संख्या है जो एक i2c मास्टर ड्राइव कर सकता है? भौतिक सीमित कारक क्या हैं?
क्या i2c दास की अधिकतम संख्या है जो एक i2c मास्टर ड्राइव कर सकता है? भौतिक सीमित कारक क्या हैं?
जवाबों:
सॉफ्टवेयर सीमित कारक दास के लिए उपयोग किए जाने वाले पते का आकार है: 7-बिट या 10-बिट, जो क्रमशः 127 और 1023 उपकरणों का समर्थन करते हैं। शारीरिक रूप से, दो प्रतिबंध हैं। सबसे पहले, बस का भौतिक आकार क्योंकि बस केवल छोटे रन (अंतर आईसी भाग) के लिए है। यदि बस बहुत बड़ी है तो कैपेसिटिव लोडिंग और प्रसार विलंब प्रभाव हैं जिनसे निपटने की आवश्यकता है। दूसरा, कुछ डिवाइस I2C पतों की पूरी श्रृंखला का समर्थन नहीं कर सकते हैं। उदाहरण के लिए, MPU6050 जाइरोस्कोप केवल दो पतों का समर्थन करता है, और कुछ डिवाइस विशेष उद्देश्यों के लिए विशिष्ट पतों को आरक्षित करते हैं।
एड्रेसिंग डिवाइस की संख्या को सीमित करता है- कुछ 10-बिट एड्रेसिंग का उपयोग कर सकते हैं (काफी कम इस्तेमाल किया जाता है), जो एड्रेस की संख्या को 1024 तक सीमित करता है। कुछ मुट्ठी भर 'आरक्षित' एड्रेस होते हैं।
I2C ("दो तार बस" या जो भी अन्य समान बसों को कॉल करना चाहते हैं) के विपरीत , NXP ( ny Philips) मानक, UM10204 I2C- बस विनिर्देश और उपयोगकर्ता पुस्तिका का पालन करना चाहिए । यह आपका प्राथमिक संदर्भ दस्तावेज होना चाहिए, न कि विभिन्न व्याख्याएं और उपसमुच्चय जो कहीं और मौजूद हैं।
उपकरणों की अधिकतम संख्या सबसे कमजोर आउटपुट की ड्राइव क्षमता (जो कि न्यूनतम पुलअप अवरोधक निर्धारित करती है), तारों और इनपुट समाई और ऑपरेटिंग मोड / आवृत्ति से प्रभावित होगी। खंड 7.2 देखें यदि अधिकतम धारिता से अधिक होना चाहिए, तो अधिकतम स्वीकार्य बस समाई के ऊपर परिचालन करना:
एक i2c बस मुख्य रूप से बस के समाई (और इस तरह गति), और सुलभ डिवाइस पते तक सीमित है। और भौतिक बोर्ड स्थान।
लेकिन कोई वास्तविक ऊपरी सीमा नहीं है, जब आप बस बफ़र्स, एक्सटेंडर, रिपीटर, हब, मल्टीप्लेक्सर्स, स्विचेस (या किसी डिवाइस के लिए कोई अन्य नाम जो कई बूसों के बीच स्विच कर सकते हैं) में कारक हैं। ये कुछ i2c ओवरहेड जोड़ते हैं, क्योंकि समान i2c बस के माध्यम से पहुँचा जा सकता है। उदाहरण के लिए PCA9548A, 8 बिट बस स्विच है।
यह एकल चिप सैद्धांतिक रूप से i2c दास (127 * 8) की संख्या को चौगुना कर सकती है अन्यथा उपलब्ध है। और PCA9548A को एक एकल बस पर 8 पते तक कॉन्फ़िगर किया जा सकता है, इसलिए 8 * 8 * 127 डिवाइस। (गणित बंद हो सकता है)। और यह सिर्फ इस डिवाइस के साथ है और अधिक नहीं।
सच कहूँ तो, यदि आप समाई के लिए समायोजित करते हैं तो कोई सैद्धांतिक सीमा नहीं है।
I2C 2 पता लंबाई, 7 और 10 बिट्स को निर्दिष्ट करता है , जो क्रमशः सैद्धांतिक अधिकतम 128 और 1024 अलग-अलग पते देता है।
हालाँकि, कुछ आरक्षित पते हैं, जैसे 0x00 (सामान्य कॉल)। यह पता स्थान को और सीमित करता है।
यदि आप एक ऐसी प्रणाली का निर्माण कर रहे हैं जहां आपका I2C उपकरणों पर सीधा नियंत्रण है, तो आप अपने खुद के उपयोग के लिए आरक्षित पतों का उपयोग कर सकते हैं, लेकिन सिस्टम अब I2C मानक का अनुपालन नहीं करेगा।
संबोधित करने के अलावा, भौतिक बस सीमाएं हैं। बस में प्रत्येक उपकरण को एक निश्चित समय अवधि (बस की गति के आधार पर) में बस को कम खींचने में सक्षम होने की आवश्यकता होती है। यदि बस में बहुत अधिक समाई है, तो हो सकता है कि डिवाइस SDA को तेज़ी से कम खींचने में सक्षम न हों, और हो सकता है कि पुल अप SDA को तेज़ी से वापस न ला सके।
अब, हार्डवेयर समस्याओं को थोड़ा सा ड्राइवर हार्डवेयर के साथ दूर किया जा सकता है। मैं अभी एक प्रोजेक्ट पर काम कर रहा हूं जिसमें कई 10 मीटर से अधिक उपकरणों के साथ संचार करने के लिए I2C का उपयोग किया जाता है। मुख्य बस 24v का उपयोग करती है, और प्रत्येक बोर्ड में एक ड्राइवर होता है जो इसे 3.3v तक ले जाता है।
अखरोट के खोल में, I2C की शारीरिक सीमा को दूर किया जा सकता है। पते को दूर किया जा सकता है, लेकिन केवल अगर आपके पास डिवाइस पर सीधा नियंत्रण है।
एक मास्टर ड्राइव कर सकने वाले दासों की संख्या पर प्राथमिक सीमा आम तौर पर बस समाई, रिसाव, ड्राइव शक्ति आदि जैसे विद्युत कारकों से आने वाली है, यदि कोई शून्य परजीवी समाई और शून्य रिसाव के साथ दास का निर्माण कर सकता है, और यदि कोई उन्हें कनेक्ट कर सकता है। शून्य-समाई बोर्ड के निशान के साथ, फिर बस समाई एक कारक नहीं होगी, लेकिन व्यवहार में न तो धारणा धारण करने वाली है।
उन उपकरणों को संबोधित करना जो एक दूसरे के बारे में "जानते" हैं, वास्तव में समस्या नहीं है। यह एक परिधीय डिजाइन करने के लिए तुच्छ होगा जो एक रीड और एक लिखने के पते का उपयोग करके अरबों चिप्स को जोड़ने की अनुमति देगा। बस निर्दिष्ट करें कि हर डिवाइस में एक अद्वितीय चार-बाइट आईडी होनी चाहिए, और हर समय लिखने का पता सुनने के लिए आवश्यक है, लेकिन हर लेनदेन से बाहर होना चाहिए जिनके पहले चार प्रेषित डेटा बाइट्स उनकी आईडी से मेल नहीं खाते हैं। इसके अलावा निर्दिष्ट करें कि डिवाइस केवल पढ़े गए पते पर प्रतिक्रिया दे सकते हैं यदि अंतिम लिखित लेनदेन वे सुनते हैं जो उनके पते से मेल खाते हैं।
यदि कोई मास्टर से जुड़े सभी दासों की आईडी निर्धारित करने की क्षमता जोड़ना चाहता था, तो ऐसे उद्देश्यों के लिए कोई विशेष आईडी रेंज आरक्षित कर सकता है। उदाहरण के लिए, कोई यह कह सकता है कि यदि पहली आईडी बाइट एफएफ है, तो अगले चार बाइट्स एक मुखौटा और उसके बाद चार आईडी होंगे; एक डिवाइस से जुड़ा रहना चाहिए (और अंतिम आईडी बाइट को छोड़ना) यदि इसकी आईडी का हिस्सा कमांड में दिए गए मास्क से मेल खाता है। यह एक मास्टर को 64 लेनदेन का उपयोग करके कम से कम एक डिवाइस की पहचान करने की अनुमति देगा, और 62 या कम लेनदेन का उपयोग करके अतिरिक्त डिवाइस। शायद डिवाइस की पहचान का सबसे तेज़ संभव साधन नहीं है, लेकिन खराब नहीं है जो अरबों डिवाइस आईडी का एक खोज स्थान है।
संक्षिप्त उत्तर: यह निर्भर करता है
यदि आपके पास 104 डिवाइस (7 पते) (0x00-0x07 और 0xF0-0xFF आरक्षित हैं) तक 7 बिट पते वाले उपकरण (सामान्य पते) आरक्षित हैं (कुछ सीमाएँ लागू होती हैं) यदि आपके पास (कम आम) डिवाइस हैं जो थोड़ा सा समर्थन करते हैं 1024 उपकरणों को संबोधित करना (आप 7bit और 10bit उपकरणों को मिला सकते हैं और 1136 उपकरणों तक पहुंच सकते हैं)
अब सीमाओं के लिए: अधिकांश सरल उपकरणों को केवल दो से 8 अलग-अलग पते पर कॉन्फ़िगर किया जा सकता है। आप अलग-अलग आधार पते वाले कस्टम ऑर्डरिंग डिवाइसेस द्वारा इसे दूर कर सकते हैं (लेकिन इसका सामान्य रूप से मतलब है कि आप उपकरणों की एक न्यूनतम मात्रा का आदेश देते हैं) हार्डवेयर सीमाएं (मुख्य रूप से बस समाई) भी हैं लेकिन यह विशेष i2c ड्राइवरों के साथ हल किया जा सकता है।
यदि आप बड़ी दूरी पर कई उपकरणों को कनेक्ट करना चाहते हैं, तो मैं वैसे भी एक फील्डबस का उपयोग करने का सुझाव दूंगा! I2C एक उपकरण के अंदर संचार के लिए करना है (एक टीवी सेट की तरह)। मैं I2C का उपयोग खुद को 50 सेमी तक की बाहरी केबलों के साथ रास्पबेरीपी के साथ कर रहा हूं (यहां तक कि टी-सेक्शन के साथ आपको बस सिस्टम में कभी नहीं होना चाहिए)। यह आश्चर्यजनक रूप से अच्छा काम करता है।
बस से जुड़े उपकरणों की संख्या केवल 400 pF की कुल अनुमत बस समाई द्वारा सीमित है। क्योंकि I²C इंटरफ़ेस वाले अधिकांश IC कम-शक्ति, उच्च प्रतिबाधा वाली CMOS तकनीक का उपयोग करते हैं, कई ICs को I connectedC बस से जोड़ा जा सकता है, इससे पहले कि अधिकतम समाई पहुँच जाए
जोड़े गए मल्टीप्लेक्स चिप्स (जैसे TCA9544A) या बफ़र्स (जैसे PCA9515B) से आप सभी सीमाएँ पार कर सकते हैं - बस और एड्रेसिंग दोनों।
आप मल्टीप्लेक्स के पीछे समान पते वाले 3 डिवाइस रख सकते हैं और उनमें से केवल एक का चयन कर सकते हैं, इसके साथ संवाद कर सकते हैं और बाद में दूसरे का चयन कर सकते हैं। बेशक सॉफ्टवेयर अधिक जटिल हो जाता है।
यदि आपके पास लंबी वायरिंग है तो आप बीच में एक बफर रख सकते हैं और कैपेसिटेंस सीमा को पार कर सकते हैं।