कितने i2c दास i2c मास्टर का समर्थन कर सकते हैं?


17

क्या i2c दास की अधिकतम संख्या है जो एक i2c मास्टर ड्राइव कर सकता है? भौतिक सीमित कारक क्या हैं?


1
आपके पास 7 बिट का पता है। इसका मतलब है कि आप 127 दासियों को संबोधित कर सकते हैं।
बॉटनिक जूल

धन्यवाद। क्या वर्तमान ड्राइव, समाई या ऐसा कुछ जैसे भौतिक सीमित कारक हैं जो दासों की संख्या को 127 तक पहुंचने से रोकता है?
user768421

1
@Botnic पूरी तरह से i2c स्विच, हब्स, बफ़र्स, रिपीटर्स और किसी भी i2c डिवाइस को अनदेखा करता है जो आपको एक बस का विस्तार करने की अनुमति देता है।
राहगीर

जवाबों:


22

सॉफ्टवेयर सीमित कारक दास के लिए उपयोग किए जाने वाले पते का आकार है: 7-बिट या 10-बिट, जो क्रमशः 127 और 1023 उपकरणों का समर्थन करते हैं। शारीरिक रूप से, दो प्रतिबंध हैं। सबसे पहले, बस का भौतिक आकार क्योंकि बस केवल छोटे रन (अंतर आईसी भाग) के लिए है। यदि बस बहुत बड़ी है तो कैपेसिटिव लोडिंग और प्रसार विलंब प्रभाव हैं जिनसे निपटने की आवश्यकता है। दूसरा, कुछ डिवाइस I2C पतों की पूरी श्रृंखला का समर्थन नहीं कर सकते हैं। उदाहरण के लिए, MPU6050 जाइरोस्कोप केवल दो पतों का समर्थन करता है, और कुछ डिवाइस विशेष उद्देश्यों के लिए विशिष्ट पतों को आरक्षित करते हैं।


2
आपके पास एक बंद-एक त्रुटि है। 7 बिट एड्रेसिंग 128 एड्रेस (0 से 127) को सपोर्ट करता है। 10 बिट एड्रेसिंग 1024 एड्रेस (0 से 1023) सपोर्ट करता है।
कर्टिसहैक्स

3
यह एक त्रुटि से बंद नहीं है। यह एक "6 त्रुटि से दूर" है क्योंकि 7 आरक्षित पते हैं जो केवल एक नहीं हैं।
kruemi

संबोधन योजना बस, मास्टर या दास पर उपकरणों द्वारा निर्धारित की जाती है। कुछ उपकरणों में प्रीसेट एड्रेस रेंज और आरक्षित पते होते हैं। अन्य उपकरण, उदाहरण के लिए कई माइक्रो नियंत्रक, कोई आरक्षित पते नहीं हैं और किसी दिए गए बिट योजना में किसी भी पते का उपयोग कर सकते हैं।
vini_i

ये संख्या कुछ हद तक सही है, हालांकि एक चेतावनी की जरूरत है। कुछ आरक्षित पते हैं जैसे 1111 XXX और 0000 XXX। इसका मतलब है 7-बिट = 2 ^ 7 - 16 = 112 प्रयोग करने योग्य पते, 10-बिट पूर्ण 2 ^ 10 1024 है। 8-बिट (एक बात नहीं होनी चाहिए) यह आम तौर पर आर / डब्ल्यू बिट सहित है 7-बिट पर। nxp.com/docs/en/user-guide/UM10204.pdf
बसफॉल्ट

@busfault मैं स्वीकार करता हूं कि 8bit पते प्रभावी रूप से एक चीज नहीं हैं। मैंने उन्हें अपने जवाब से हटा दिया है। अधिकांश माइक्रोकंट्रोलर कुछ या सभी आरक्षित पतों को अनदेखा कर सकते हैं और पूर्ण पता सीमा का उपयोग कर सकते हैं। मैं अपने जवाब में ध्यान देता हूं कि यह उपकरण विशिष्ट है।
vini_i

10

नोड्स की अधिकतम संख्या पता स्थान द्वारा सीमित है, और 400 पीएफ की कुल बस समाई द्वारा भी है, जो कुछ मीटर तक व्यावहारिक संचार दूरी को प्रतिबंधित करता है।

I²C पर अधिक पढ़ें


9

एड्रेसिंग डिवाइस की संख्या को सीमित करता है- कुछ 10-बिट एड्रेसिंग का उपयोग कर सकते हैं (काफी कम इस्तेमाल किया जाता है), जो एड्रेस की संख्या को 1024 तक सीमित करता है। कुछ मुट्ठी भर 'आरक्षित' एड्रेस होते हैं।

I2C ("दो तार बस" या जो भी अन्य समान बसों को कॉल करना चाहते हैं) के विपरीत , NXP ( ny Philips) मानक, UM10204 I2C- बस विनिर्देश और उपयोगकर्ता पुस्तिका का पालन करना चाहिए । यह आपका प्राथमिक संदर्भ दस्तावेज होना चाहिए, न कि विभिन्न व्याख्याएं और उपसमुच्चय जो कहीं और मौजूद हैं।

उपकरणों की अधिकतम संख्या सबसे कमजोर आउटपुट की ड्राइव क्षमता (जो कि न्यूनतम पुलअप अवरोधक निर्धारित करती है), तारों और इनपुट समाई और ऑपरेटिंग मोड / आवृत्ति से प्रभावित होगी। खंड 7.2 देखें यदि अधिकतम धारिता से अधिक होना चाहिए, तो अधिकतम स्वीकार्य बस समाई के ऊपर परिचालन करना:

यहां छवि विवरण दर्ज करें


7

एक i2c बस मुख्य रूप से बस के समाई (और इस तरह गति), और सुलभ डिवाइस पते तक सीमित है। और भौतिक बोर्ड स्थान।

लेकिन कोई वास्तविक ऊपरी सीमा नहीं है, जब आप बस बफ़र्स, एक्सटेंडर, रिपीटर, हब, मल्टीप्लेक्सर्स, स्विचेस (या किसी डिवाइस के लिए कोई अन्य नाम जो कई बूसों के बीच स्विच कर सकते हैं) में कारक हैं। ये कुछ i2c ओवरहेड जोड़ते हैं, क्योंकि समान i2c बस के माध्यम से पहुँचा जा सकता है। उदाहरण के लिए PCA9548A, 8 बिट बस स्विच है।

यह एकल चिप सैद्धांतिक रूप से i2c दास (127 * 8) की संख्या को चौगुना कर सकती है अन्यथा उपलब्ध है। और PCA9548A को एक एकल बस पर 8 पते तक कॉन्फ़िगर किया जा सकता है, इसलिए 8 * 8 * 127 डिवाइस। (गणित बंद हो सकता है)। और यह सिर्फ इस डिवाइस के साथ है और अधिक नहीं।

सच कहूँ तो, यदि आप समाई के लिए समायोजित करते हैं तो कोई सैद्धांतिक सीमा नहीं है।


5

I2C 2 पता लंबाई, 7 और 10 बिट्स को निर्दिष्ट करता है , जो क्रमशः सैद्धांतिक अधिकतम 128 और 1024 अलग-अलग पते देता है।

हालाँकि, कुछ आरक्षित पते हैं, जैसे 0x00 (सामान्य कॉल)। यह पता स्थान को और सीमित करता है।

यदि आप एक ऐसी प्रणाली का निर्माण कर रहे हैं जहां आपका I2C उपकरणों पर सीधा नियंत्रण है, तो आप अपने खुद के उपयोग के लिए आरक्षित पतों का उपयोग कर सकते हैं, लेकिन सिस्टम अब I2C मानक का अनुपालन नहीं करेगा।

संबोधित करने के अलावा, भौतिक बस सीमाएं हैं। बस में प्रत्येक उपकरण को एक निश्चित समय अवधि (बस की गति के आधार पर) में बस को कम खींचने में सक्षम होने की आवश्यकता होती है। यदि बस में बहुत अधिक समाई है, तो हो सकता है कि डिवाइस SDA को तेज़ी से कम खींचने में सक्षम न हों, और हो सकता है कि पुल अप SDA को तेज़ी से वापस न ला सके।

अब, हार्डवेयर समस्याओं को थोड़ा सा ड्राइवर हार्डवेयर के साथ दूर किया जा सकता है। मैं अभी एक प्रोजेक्ट पर काम कर रहा हूं जिसमें कई 10 मीटर से अधिक उपकरणों के साथ संचार करने के लिए I2C का उपयोग किया जाता है। मुख्य बस 24v का उपयोग करती है, और प्रत्येक बोर्ड में एक ड्राइवर होता है जो इसे 3.3v तक ले जाता है।

अखरोट के खोल में, I2C की शारीरिक सीमा को दूर किया जा सकता है। पते को दूर किया जा सकता है, लेकिन केवल अगर आपके पास डिवाइस पर सीधा नियंत्रण है।


लगभग तीन साल हो गए हैं जब आप बहुत लंबी i2c बसों पर काम कर रहे थे। क्या उन्होंने ठीक काम किया?
वैलीक

1
@wallyk मैंने उस जवाब को पोस्ट करने के तुरंत बाद उस कंपनी को छोड़ दिया। मैं कहूंगा कि सही हार्डवेयर को देखते हुए, आप I2C को लंबी दूरी पर संवाद कर सकते हैं। हालांकि, अन्य संचार प्रोटोकॉल हैं जो लंबी दूरी के लिए डिज़ाइन किए गए हैं और शायद I2C की तुलना में बेहतर विकल्प होंगे।
कर्टिसहैक्स

5

एक मास्टर ड्राइव कर सकने वाले दासों की संख्या पर प्राथमिक सीमा आम तौर पर बस समाई, रिसाव, ड्राइव शक्ति आदि जैसे विद्युत कारकों से आने वाली है, यदि कोई शून्य परजीवी समाई और शून्य रिसाव के साथ दास का निर्माण कर सकता है, और यदि कोई उन्हें कनेक्ट कर सकता है। शून्य-समाई बोर्ड के निशान के साथ, फिर बस समाई एक कारक नहीं होगी, लेकिन व्यवहार में न तो धारणा धारण करने वाली है।

उन उपकरणों को संबोधित करना जो एक दूसरे के बारे में "जानते" हैं, वास्तव में समस्या नहीं है। यह एक परिधीय डिजाइन करने के लिए तुच्छ होगा जो एक रीड और एक लिखने के पते का उपयोग करके अरबों चिप्स को जोड़ने की अनुमति देगा। बस निर्दिष्ट करें कि हर डिवाइस में एक अद्वितीय चार-बाइट आईडी होनी चाहिए, और हर समय लिखने का पता सुनने के लिए आवश्यक है, लेकिन हर लेनदेन से बाहर होना चाहिए जिनके पहले चार प्रेषित डेटा बाइट्स उनकी आईडी से मेल नहीं खाते हैं। इसके अलावा निर्दिष्ट करें कि डिवाइस केवल पढ़े गए पते पर प्रतिक्रिया दे सकते हैं यदि अंतिम लिखित लेनदेन वे सुनते हैं जो उनके पते से मेल खाते हैं।

यदि कोई मास्टर से जुड़े सभी दासों की आईडी निर्धारित करने की क्षमता जोड़ना चाहता था, तो ऐसे उद्देश्यों के लिए कोई विशेष आईडी रेंज आरक्षित कर सकता है। उदाहरण के लिए, कोई यह कह सकता है कि यदि पहली आईडी बाइट एफएफ है, तो अगले चार बाइट्स एक मुखौटा और उसके बाद चार आईडी होंगे; एक डिवाइस से जुड़ा रहना चाहिए (और अंतिम आईडी बाइट को छोड़ना) यदि इसकी आईडी का हिस्सा कमांड में दिए गए मास्क से मेल खाता है। यह एक मास्टर को 64 लेनदेन का उपयोग करके कम से कम एक डिवाइस की पहचान करने की अनुमति देगा, और 62 या कम लेनदेन का उपयोग करके अतिरिक्त डिवाइस। शायद डिवाइस की पहचान का सबसे तेज़ संभव साधन नहीं है, लेकिन खराब नहीं है जो अरबों डिवाइस आईडी का एक खोज स्थान है।


2

संक्षिप्त उत्तर: यह निर्भर करता है

यदि आपके पास 104 डिवाइस (7 पते) (0x00-0x07 और 0xF0-0xFF आरक्षित हैं) तक 7 बिट पते वाले उपकरण (सामान्य पते) आरक्षित हैं (कुछ सीमाएँ लागू होती हैं) यदि आपके पास (कम आम) डिवाइस हैं जो थोड़ा सा समर्थन करते हैं 1024 उपकरणों को संबोधित करना (आप 7bit और 10bit उपकरणों को मिला सकते हैं और 1136 उपकरणों तक पहुंच सकते हैं)

अब सीमाओं के लिए: अधिकांश सरल उपकरणों को केवल दो से 8 अलग-अलग पते पर कॉन्फ़िगर किया जा सकता है। आप अलग-अलग आधार पते वाले कस्टम ऑर्डरिंग डिवाइसेस द्वारा इसे दूर कर सकते हैं (लेकिन इसका सामान्य रूप से मतलब है कि आप उपकरणों की एक न्यूनतम मात्रा का आदेश देते हैं) हार्डवेयर सीमाएं (मुख्य रूप से बस समाई) भी हैं लेकिन यह विशेष i2c ड्राइवरों के साथ हल किया जा सकता है।

यदि आप बड़ी दूरी पर कई उपकरणों को कनेक्ट करना चाहते हैं, तो मैं वैसे भी एक फील्डबस का उपयोग करने का सुझाव दूंगा! I2C एक उपकरण के अंदर संचार के लिए करना है (एक टीवी सेट की तरह)। मैं I2C का उपयोग खुद को 50 सेमी तक की बाहरी केबलों के साथ रास्पबेरीपी के साथ कर रहा हूं (यहां तक ​​कि टी-सेक्शन के साथ आपको बस सिस्टम में कभी नहीं होना चाहिए)। यह आश्चर्यजनक रूप से अच्छा काम करता है।


0

बस से जुड़े उपकरणों की संख्या केवल 400 pF की कुल अनुमत बस समाई द्वारा सीमित है। क्योंकि I²C इंटरफ़ेस वाले अधिकांश IC कम-शक्ति, उच्च प्रतिबाधा वाली CMOS तकनीक का उपयोग करते हैं, कई ICs को I connectedC बस से जोड़ा जा सकता है, इससे पहले कि अधिकतम समाई पहुँच जाए


1
यह पूरी तरह से मनोर में ओपी के सवाल का जवाब नहीं देता है। अनुमानित मानों का उपयोग करते हुए भी, प्रश्न के सभी पहलुओं का उत्तर देने का प्रयास करें। निर्दिष्ट करें और / या अपनी जानकारी के स्रोत के लिए एक लिंक छोड़ दें।
Sparky256

0

जोड़े गए मल्टीप्लेक्स चिप्स (जैसे TCA9544A) या बफ़र्स (जैसे PCA9515B) से आप सभी सीमाएँ पार कर सकते हैं - बस और एड्रेसिंग दोनों।

आप मल्टीप्लेक्स के पीछे समान पते वाले 3 डिवाइस रख सकते हैं और उनमें से केवल एक का चयन कर सकते हैं, इसके साथ संवाद कर सकते हैं और बाद में दूसरे का चयन कर सकते हैं। बेशक सॉफ्टवेयर अधिक जटिल हो जाता है।

यदि आपके पास लंबी वायरिंग है तो आप बीच में एक बफर रख सकते हैं और कैपेसिटेंस सीमा को पार कर सकते हैं।


नहीं, आप अभी भी सीमित रहेंगे: 4 चैनल / मल्टीप्लेक्सर, प्रति चैनल आपके पास 4 सबचैनलाइन हैं, तो आपके पास सबसुबचन, सबसुबचन और बहुत कुछ है। आपके पास प्रति चैनल-पता 3 पता-लाइनें हैं: 4 ^ (2 ^ 3) = 65536 चैनल। प्रति चैनल आपके पास 2 ^ 8 - 7 - 8 + 2 ^ 10 = 1265 डिवाइस / चैनल (जब आप बफ़र्स का उपयोग भी करते हैं) (-7 मल्टीप्लेक्स एड्रेस के लिए आरक्षित पते और -8 के लिए हैं)। 1265 * 65536 = 82903040 अधिकतम उपकरण।
12431234123412341234123

संपादित करें: क्षमा करें में एक त्रुटि थी: यह 2 ^ 7 - 7 - 8 + 2 ^ 10 = 1137 उपकरण / चैनल => 1137 * 65536 = 74514432 उपकरण है। लेकिन कुछ और संभव हो सकता है जब आप कुछ बफ़र्स को चालू करने और बंद करने के लिए IO-Expander का उपयोग करते हैं (क्या एक व्यावहारिक रूप है लेकिन एक सैद्धांतिक संभावना है)।
12431234123412341234123
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.