I2C बस - असाइनमेंट, डिवाइस, डेटा ट्रांसफर, एड्रेसिंग
एक इलेक्ट्रॉनिक सर्किट बनाते समय, कई डेवलपर्स को अपने व्यक्तिगत ब्लॉकों के मिलान, नमूनाकरण और पता लगाने के लिए बड़ी संख्या में मध्यवर्ती चिप्स का उपयोग करने की आवश्यकता का सामना करना पड़ता है। सहायक चिप्स की संख्या को कम करने के लिए, फिलिप्स ने 1980 के दशक में दो-तार द्विदिश I2C सीरियल नेटवर्क इंटरफ़ेस का प्रस्ताव दिया, जिसे विशेष रूप से एक डिवाइस के भीतर कई चिप्स का प्रबंधन करने के लिए डिज़ाइन किया गया था।
आज, अकेले फिलिप्स विभिन्न प्रकार के प्रयोजनों के लिए इलेक्ट्रॉनिक उपकरणों के लिए सौ से अधिक I2C-संगत उपकरणों का उत्पादन करता है: मेमोरी, वीडियो प्रोसेसर सिस्टम, एनालॉग-टू-डिजिटल और डिजिटल-टू-एनालॉग कन्वर्टर्स, डिस्प्ले ड्राइवर, आदि।
I2C बस सीरियल डेटा एक्सचेंज प्रोटोकॉल का एक संशोधन है जो 100 से 400 kbps की दर से सामान्य "तेज़" मोड में सीरियल 8-बिट डेटा प्रसारित करने में सक्षम है। डेटा विनिमय की प्रक्रिया यहाँ केवल दो तारों (सामान्य तार की गिनती नहीं) पर कार्यान्वित की जाती है: डेटा के लिए SDA लाइन और तुल्यकालन के लिए SCL लाइन।
इस तथ्य के कारण बस द्वि-दिशात्मक हो जाती है कि बस से जुड़े उपकरणों के आउटपुट के कैस्केड में खुले संग्राहक या चैनल होते हैं, इस प्रकार AND वायरिंग की नकल करते हैं। नतीजतन, बस बोर्ड पर कम आवश्यक पिन और निशान छोड़कर चिप्स के बीच कनेक्शन की संख्या को कम करता है। नतीजतन, बोर्ड ही उत्पादन में सरल, अधिक कॉम्पैक्ट और तकनीकी रूप से अधिक उन्नत हो जाता है।
यह प्रोटोकॉल आपको एड्रेस डिकोडर्स और अन्य बाहरी बातचीत तर्क को अक्षम करने की अनुमति देता है। I2C बस पर एक साथ काम करने वाले चिप्स की संख्या इसकी क्षमता से सीमित है - अधिकतम 400 pF।
I2C- संगत IC में मजबूत हस्तक्षेप की उपस्थिति में भी डेटा अखंडता सुनिश्चित करने के लिए एक हार्डवेयर शोर दमन एल्गोरिथ्म है। इस तरह के उपकरणों में एक इंटरफ़ेस होता है जो माइक्रोक्रिस्किट को एक दूसरे के साथ संचार करने की अनुमति देता है, भले ही उनकी आपूर्ति वोल्टेज भिन्न हो। नीचे दिए गए आंकड़े में, आप एक आम बस के माध्यम से कई माइक्रोक्रिस्केट्स को जोड़ने के सिद्धांत से खुद को परिचित कर सकते हैं।
बस से जुड़े प्रत्येक उपकरण का अपना विशिष्ट पता होता है, यह इसके द्वारा निर्धारित किया जाता है और, डिवाइस के उद्देश्य के अनुसार, यह रिसीवर या ट्रांसमीटर के रूप में काम कर सकता है। डेटा संचारित करते समय, ये डिवाइस मास्टर (मास्टर) या गुलाम (गुलाम) हो सकते हैं। मास्टर वह उपकरण है जो डेटा ट्रांसफर की शुरुआत करता है और SCL लाइन पर क्लॉक सिग्नल उत्पन्न करता है। गुरु के संबंध में दास, गंतव्य उपकरण है।
I2C बस के संचालन के किसी भी क्षण में, केवल एक उपकरण मास्टर के रूप में कार्य कर सकता है; यह SCL लाइन पर एक संकेत उत्पन्न करता है।मास्टर या तो मास्टर रिसीवर या मास्टर ट्रांसमीटर हो सकता है।
सिद्धांत रूप में, बस कई अलग-अलग मास्टर्स की अनुमति देती है, लेकिन नियंत्रण सिग्नल बनाने और बस की स्थिति की निगरानी करने की विशेषताओं पर प्रतिबंध लगाती है; इसका मतलब यह है कि एक ही समय में कई स्वामी संचारण शुरू कर सकते हैं, लेकिन मध्यस्थता के कारण इस तरह के संघर्ष समाप्त हो जाते हैं, अर्थात, जिस तरह से मास्टर व्यवहार करता है जब यह पता चलता है कि बस में किसी अन्य मास्टर का कब्जा है।
उपकरणों की एक जोड़ी का सिंक्रनाइज़ेशन इस तथ्य से सुनिश्चित होता है कि सभी डिवाइस बस से जुड़े हुए हैं, "और" वायरिंग बनाते हैं। प्रारंभ में, SDA और SCL सिग्नल अधिक होते हैं।
स्टार्ट और स्टॉप
एक्सचेंज «START» राज्य उत्पन्न करने वाले मास्टर के साथ शुरू होता है: एसडीए लाइन पर, सिग्नल उच्च से निम्न स्थिति में जाता है, जबकि एससीएल लाइन में स्थिर उच्च स्तर होता है। बस से जुड़े सभी डिवाइस इस स्थिति को एक्सचेंज शुरू करने के आदेश के रूप में समझते हैं।
बस में डेटा संचारित करते समय प्रत्येक मास्टर एससीएल लाइन पर एक व्यक्तिगत घड़ी संकेत उत्पन्न करता है।
एक्सचेंज मास्टर द्वारा STOP स्थिति के गठन के साथ समाप्त होता है: SDA लाइन पर सिग्नल निम्न से उच्च में बदलता है, जबकि SCL लाइन में स्थिर उच्च स्तर होता है।
ड्राइवर हमेशा START और STOP सिग्नल के स्रोत के रूप में कार्य करता है। जैसे ही «START» सिग्नल फिक्स होता है, इसका मतलब है कि लाइन व्यस्त है। STOP सिग्नल का पता चलने पर लाइन फ्री होती है।
START स्थिति घोषित करने के तुरंत बाद, मास्टर SCL लाइन को नीचे स्विच करता है और SDA लाइन को पहले संदेश बाइट का सबसे महत्वपूर्ण बिट भेजता है। संदेश में बाइट की संख्या सीमित नहीं है।एसडीए लाइन में परिवर्तन तभी सक्षम होते हैं जब एससीएल लाइन पर सिग्नल का स्तर कम होता है। डेटा वैध है और केवल सिंक पल्स अधिक होने पर बदला नहीं जाना चाहिए।
आठवीं डेटा बिट प्राप्त होने के बाद एसडीए लाइन पर एक विशेष पावती बिट सेट करके गुलाम रिसीवर द्वारा मास्टर ट्रांसमीटर से बाइट प्राप्त करने की पुष्टि की जाती है।
पुष्टीकरण
इसलिए, ट्रांसमीटर से रिसीवर को 8 बिट डेटा भेजना SCL लाइन पर एक अतिरिक्त पल्स के साथ समाप्त होता है जब प्राप्तकर्ता डिवाइस SDA लाइन पर कम हो जाता है, यह दर्शाता है कि उसे पूरी बाइट प्राप्त हो गई है।
पुष्टि डेटा स्थानांतरण प्रक्रिया का एक अभिन्न अंग है। मास्टर एक सिंक पल्स उत्पन्न करता है। ट्रांसमीटर एसडीए को एक निम्न स्थिति भेजता है जबकि पावती घड़ी सक्रिय है। जबकि सिंक पल्स अधिक है, रिसीवर को एसडीए कम रखना चाहिए।
यदि गंतव्य दास अपने पते को स्वीकार नहीं करता है, उदाहरण के लिए क्योंकि वह वर्तमान में व्यस्त है, तो डेटा लाइन को ऊपर रखा जाना चाहिए। मास्टर तब प्रेषण को रद्द करने के लिए STOP संकेत दे सकता है।
यदि रिसेप्शन मास्टर रिसीवर द्वारा किया जाता है, तो यह ट्रांसमिशन पूरा होने के बाद दास ट्रांसमीटर को सूचित करने के लिए बाध्य है - अंतिम बाइट की पुष्टि करके नहीं। दास ट्रांसमीटर डेटा लाइन जारी करता है ताकि मास्टर STOP सिग्नल या दोहराए जाने वाले START सिग्नल जारी कर सके।
उपकरणों का तुल्यकालन इस तथ्य से सुनिश्चित होता है कि SCL लाइन से कनेक्शन "AND" सिद्धांत के अनुसार बनाए गए हैं।
एससीएल लाइन के निम्न से उच्च तक के संक्रमण को नियंत्रित करने का एकमात्र अधिकार मास्टर के पास नहीं है।यदि दास को प्राप्त बिट को संसाधित करने के लिए अधिक समय की आवश्यकता होती है, तो वह स्वतंत्र रूप से SCL को तब तक कम रख सकता है जब तक कि वह डेटा के अगले बिट को प्राप्त करने के लिए तैयार न हो जाए। ऐसी स्थिति में SCL लाइन सबसे लंबी निम्न-स्तरीय सिंक पल्स की अवधि के लिए कम होगी।
सबसे कम निरंतर निम्न वाले उपकरण लंबी अवधि समाप्त होने तक निष्क्रिय रहेंगे। जब सभी डिवाइस कम सिंक अवधि समाप्त कर लेंगे, तो एससीएल उच्च हो जाएगा।
सभी डिवाइस हाई क्लॉक करना शुरू कर देंगे और अपनी अवधि पूरी करने वाला पहला डिवाइस एससीएल लाइन को कम सेट करने वाला पहला होगा। नतीजतन, एससीएल की निम्न स्थिति की अवधि उपकरणों में से किसी एक के सिंक्रनाइज़ेशन पल्स की सबसे लंबी कम स्थिति द्वारा निर्धारित की जाएगी, और उच्च स्थिति की अवधि किसी एक के सिंक्रनाइज़ेशन की सबसे छोटी अवधि द्वारा निर्धारित की जाएगी। उपकरण।
बिट और बाइट स्तर पर डेटा ट्रांसमिशन को नियंत्रित करने के साधन के रूप में रिसीवर द्वारा सिंक्रोनाइज़ेशन सिग्नल का उपयोग किया जा सकता है।
यदि डिवाइस उच्च दर पर बाइट प्राप्त करने में सक्षम है, लेकिन प्राप्त बाइट को स्टोर करने या अगली बाइट प्राप्त करने के लिए तैयार होने में कुछ समय लगता है, तो यह बाइट प्राप्त करने और स्वीकार करने के बाद SCL को कम रखना जारी रख सकता है, मजबूर कर सकता है एक स्टैंडबाय स्थिति में ट्रांसमीटर।
अंतर्निहित हार्डवेयर सर्किट के बिना एक माइक्रोकंट्रोलर, उदाहरण के लिए बिट स्तर पर, अपनी निम्न स्थिति की अवधि को बढ़ाकर घड़ी की गति को धीमा कर सकता है। नतीजतन, मास्टर डिवाइस की बॉड दर की गति से निर्धारित की जाएगी धीमा उपकरण।
को संबोधित
I2C बस से जुड़े प्रत्येक डिवाइस का एक अनूठा प्रोग्राम एड्रेस होता है, जिस पर मास्टर एक विशिष्ट कमांड भेजकर इसे संबोधित करता है। एक ही प्रकार के माइक्रोक्रिस्किट्स को एक पता चयनकर्ता द्वारा वर्णित किया जाता है, जिसे या तो चयनकर्ता के डिजिटल इनपुट के रूप में या एनालॉग रूप में कार्यान्वित किया जाता है। पते बस से जुड़े उपकरणों के पता स्थान में विभाजित होते हैं।
सामान्य मोड सात-बिट एड्रेसिंग मानता है। एड्रेसिंग निम्नानुसार कार्य करता है: «START» कमांड के बाद, मास्टर पहला बाइट भेजता है, जो यह निर्धारित करता है कि मास्टर के साथ संचार करने के लिए किस स्लेव डिवाइस की आवश्यकता है। एक सामान्य कॉल पता भी है जो बस में सभी उपकरणों को परिभाषित करता है, सभी उपकरण (सैद्धांतिक रूप से) एक पावती के साथ इसका जवाब देते हैं, लेकिन व्यवहार में यह दुर्लभ है।
तो पहली बाइट के पहले सात बिट गुलाम का पता हैं। कम से कम महत्वपूर्ण बिट, आठवां, डेटा भेजने की दिशा को इंगित करता है। यदि कोई «0» है, तो जानकारी मास्टर से इस दास को लिखी जाएगी। यदि «1», इस दास से मास्टर द्वारा जानकारी पढ़ी जाएगी।
मास्टर द्वारा एड्रेस बाइट भेजने के बाद, प्रत्येक दास अपने पते की तुलना उससे करता है। पता बाइट के कम से कम महत्वपूर्ण बिट के मूल्य के आधार पर, एक ही पते वाला कोई भी व्यक्ति दास है और दास ट्रांसमीटर या दास रिसीवर के रूप में परिभाषित किया गया है।
एक दास पते में निश्चित और प्रोग्राम करने योग्य भाग शामिल हो सकते हैं। एक प्रणाली में अक्सर एक ही प्रकार के उपकरणों की एक बड़ी संख्या काम करती है, फिर पते का प्रोग्राम करने योग्य हिस्सा बस में अधिकतम एक ही प्रकार के उपकरणों के उपयोग की अनुमति देता है। एड्रेस बाइट में कितने बिट प्रोग्राम करने योग्य हैं, यह चिप पर फ्री पिन की संख्या पर निर्भर करता है।
कभी-कभी प्रोग्रामेबल एड्रेस रेंज की एनालॉग सेटिंग वाला एक पिन पर्याप्त होता है, उदाहरण के लिए SAA1064 - एक एलईडी इंडिकेटर ड्राइवर जिसमें बिल्कुल ऐसा कार्यान्वयन होता है। किसी विशेष पिन की क्षमता चिप के एड्रेस स्पेस की ऑफसेट को निर्धारित करती है ताकि एक ही प्रकार के चिप्स एक ही बस में परिचालन में संघर्ष न करें। I2C बस का समर्थन करने वाले सभी चिप्स में पतों का एक सेट होता है जो निर्माता प्रलेखन में निर्दिष्ट करता है।
संयोजन «11110XX» 10-बिट एड्रेसिंग के लिए आरक्षित है। यदि हम «START» कमांड से «STOP» कमांड तक डेटा के आदान-प्रदान की कल्पना करते हैं, तो यह इस तरह दिखेगा:
यहां सरल और संयुक्त डेटा विनिमय स्वरूपों की अनुमति है। संयुक्त प्रारूप का अर्थ है कि «START» और «STOP» के बीच मास्टर और दास रिसीवर और ट्रांसमीटर के रूप में कार्य कर सकते हैं, यह सीरियल मेमोरी प्रबंधन में उदाहरण के लिए उपयोगी है।
डेटा के पहले बाइट को मेमोरी एड्रेस ट्रांसफर करने दें। फिर, «START» कमांड को दोहराते हुए और स्लेव एड्रेस को पढ़कर, मेमोरी डेटा काम करेगा। पहले एक्सेस किए गए पते को स्वचालित रूप से बढ़ाने या घटाने का निर्णय डिवाइस डेवलपर द्वारा पहले चिप प्रलेखन का अध्ययन करने के बाद किया जाता है। एक तरह से या किसी अन्य, START कमांड प्राप्त करने के बाद, सभी उपकरणों को अपने तर्क को पुनर्स्थापित करना चाहिए और इस तथ्य के लिए तैयार रहना चाहिए कि पता अब नाम दिया जाएगा।