जवाबों:
सेंसर हब की व्यवस्था
इस परिदृश्य में, दो I²C बसें हैं। चलो उन्हें स्थानीय बस और मुख्य बस कहते हैं । स्थानीय बस का उद्देश्य सेंसर के एक गुच्छा को एक माइक्रोकंट्रोलर (μC) से जोड़ना है। ΜC का उद्देश्य सेंसर को प्रदूषित करना, उनसे जानकारी एकत्र करना और कुछ घटनाओं का पता लगाना है। ऐसी भूमिका में μC को सेंसर हब कहा जाता है । सेंसर हब उच्च आदेश कार्यों के लिए जिम्मेदार नहीं है; उसके लिए एक शक्तिशाली मुख्य प्रोसेसर है। मुख्य बस सेंसर हब को मुख्य प्रोसेसर से जोड़ती है। तो, सेंसर हब μC स्थानीय I busC बस में एक मास्टर है और I²C मुख्य बस पर एक गुलाम है।
SPI और I²C
मूल पोस्ट में लिंक की गई तस्वीर SPI और I .C के बीच पिन को साझा नहीं करती है। हालांकि, ऐसे अन्य PIC हैं जो हार्डवेयर SPI और I ,C के लिए एक ही पिन का उपयोग करते हैं, क्योंकि दोनों को एक ही MSSP के साथ कार्यान्वित किया जाता है। यदि एक PIC में दो अलग-अलग MSSP परिधीय होते हैं, तो एक का उपयोग हार्डवेयर SPI के लिए किया जा सकता है, जबकि दूसरे का उपयोग हार्डवेयर I separateC के लिए किया जाता है।
एक से अधिक बसों की आवश्यकता का एक बहुत ही सामान्य कारण उपकरणों का होना है जो विभिन्न गति से चलते हैं। मूल रूप से, IHzC अधिकतम 100 kHz पर चला। बाद में, गति को अधिकतम 400 kHz तक बढ़ा दिया गया था, और अभी भी बाद में, 1 MHz और उससे अधिक तक।
गोटचा है, चूंकि प्रत्येक डिवाइस का पता I ,C प्रोटोकॉल में अंतर्निहित है, तो यदि आपके पास एक ही बस में अलग-अलग स्पीड रेटिंग वाले डिवाइस हैं, तो 100 kHz और 400 kHz कहें, आपको हमेशा सबसे कम गति से बस को चलाना होगा सभी उपकरणों को एक ही बस में (इस मामले में 100 kHz)।
यदि आप उच्च गति (400 kHz) पर बस चलाते हैं, तो जाहिर है कि लो-स्पीड डिवाइस ठीक से काम नहीं करेगा, और यह हाई-स्पीड डिवाइस के पते की व्याख्या भी कर सकता है, जिससे 400 kHz डिवाइस विफल हो सकता है कुंआ। लेकिन यहां तक कि अगर आप शुरू में बस को 100 किलोहर्ट्ज़ पर चलाते थे, और फिर उच्च गति वाली चिप को संबोधित करने के बाद 400 किलोहर्ट्ज़ तक बस को गति देने की कोशिश की, तो निम्न-गति चिप में से किसी एक की व्याख्या करने के लिए यह संभव है (हालांकि शायद संभावना नहीं है) हाई-स्पीड डेटा पैकेट गलत तरीके से अपने पते के रूप में, और इस तरह बस पर संचार को गड़बड़ कर देता है। या तो मामले में, 400 kHz डिवाइस के साथ इंटरचेंज के अंत में, 100 kHz डिवाइस संभवतः एक अज्ञात स्थिति में होगा।
तो यह सबसे अधिक कुशल है, यदि आपके पास विभिन्न गति से चलने वाले उपकरण हैं और आपके पास कई I portsC पोर्ट हैं और आपके पास ऐसे लक्जरी के लिए अनुमति देने के लिए अतिरिक्त पिन हैं, तो 100 kHz उपकरणों के लिए एक I²C कहने के लिए, 400 kHz डिवाइसों के लिए दूसरा, और दूसरा 1 मेगाहर्ट्ज उपकरणों के लिए, जैसा कि आपकी ज़रूरतें तय कर सकती हैं।
यह SPI के साथ कोई समस्या नहीं है क्योंकि प्रत्येक डिवाइस एक अलग चिप चयन लाइन द्वारा हार्डवेयर में सक्षम (संबोधित) है। इसलिए घड़ी की गति को एक ही बस पर अन्य चिप्स पर कोई प्रभाव डाले बिना, चयनित चिप की गति (10 मेगाहर्ट्ज, 20 मेगाहर्ट्ज, जो भी हो) से मिलान किया जा सकता है क्योंकि वे सक्षम नहीं हैं।
इसके अलावा यह आपको एक ही पते के साथ दो उपकरणों का समर्थन कर सकता है। हाँ अधिकांश उपकरण आपको पट्टियों के साथ उनके पते के नीचे दो बिट्स का चयन करने देते हैं। हाल ही में मुझे 4 उपकरणों का समर्थन करना पड़ा, जिनमें से प्रत्येक ने आपको एक अवरोधक के साथ उनके पते के एलएसबी को सेट करने की अनुमति दी। दो पोर्ट होने का मतलब है मेरे लिए कोई अतिरिक्त लागत नहीं।
हो सकता है कि मैं उपकरणों के एक समूह के लिए एक मास्टर बनना चाहता हूं और दूसरे को दास बंदरगाह के रूप में प्रस्तुत करना चाहता हूं, इसलिए मेरे मालिक को मुझे एक कमांड देने के लिए बस को पकड़ने के लिए इंतजार करने की ज़रूरत नहीं है, जबकि मैं 10,000 वें तापमान सेंसर का चुनाव करता हूं समय।
इस धागे में अन्य अच्छी प्रतिक्रियाओं का एक गुच्छा लगता है, बस मेरे 2 सेंट जोड़ना।
स्पीड।
यदि आपको एक ही समय में दो I2C उपकरणों का उपयोग करने की आवश्यकता है, तो आपके पास एक महत्वपूर्ण संघर्ष हो सकता है। या, दूसरे के लिए इंतजार करना होगा।
दूसरा, I (C का उपयोग अधिक बैंडविड्थ प्राप्त करने के लिए किया जा सकता है (आप एक ही समय में दो बाइट प्राप्त या भेज सकते हैं)।
यदि आपके पास कुछ ADC है जो लगातार काम करता है, तो एक I isC पूरे समय व्यस्त रहता है।
स्विचिंग एड्रेस में कुछ समय लगता है, इसलिए कुछ मामलों में - आप दो डिवाइस के लिए दो पोर्ट का उपयोग कर सकते हैं और समय बचाने के लिए एड्रेस में बदलाव से बच सकते हैं।
दूसरों ने ऐसा करने के लिए कई कारणों का उल्लेख किया है, मैं एक जोड़ूंगा:
आपको 5V I2C उपकरणों का एक गुच्छा, और 3V3 I2C उपकरणों का एक गुच्छा मिला है।
उदाहरण के लिए मेरे पास एक 3.3V माइक्रो है जिसमें दो I2C पोर्ट हैं, एक 5V सहिष्णु, दूसरा 3V3 केवल।