I2C बस प्रोटोकॉल ट्यूटोरियल, अनुप्रयोगों के साथ इंटरफेस

समस्याओं को खत्म करने के लिए हमारे साधन का प्रयास करें





आजकल प्रोटोकॉल एक आवश्यक भूमिका निभाते हैं एम्बेडेड सिस्टम डिजाइन । प्रोटोकॉल पर जाए बिना, यदि आप माइक्रोकंट्रोलर की परिधीय सुविधाओं का विस्तार करना चाहते हैं, तो जटिलता और बिजली की खपत बढ़ जाएगी। विभिन्न प्रकार के बस प्रोटोकॉल उपलब्ध हैं जैसे USART, SPI, CAN, I2C बस प्रोटोकॉल , आदि, जो दो प्रणालियों के बीच डेटा को स्थानांतरित करने के लिए उपयोग किया जाता है।

I2C प्रोटोकॉल

I2C बस क्या है?




दो या दो से अधिक उपकरणों के बीच सूचना प्रसारित करने और प्राप्त करने के लिए एक संचार पथ की आवश्यकता होती है जिसे बस सिस्टम कहा जाता है। एक I2C बस एक द्विदिश दो-वायर्ड सीरियल बस है जिसका उपयोग एकीकृत सर्किट के बीच डेटा परिवहन के लिए किया जाता है। I2C 'इंटर इंटीग्रेटेड सर्किट' के लिए है। यह पहली बार फिलिप्स सेमीकंडक्टर्स द्वारा 1982 में शुरू किया गया था। I2C बस में तीन डेटा ट्रांसफर गति जैसे मानक, तेज-मोड और हाई-स्पीड-मोड शामिल हैं। I2C बस 7-बिट और 10-बिट एड्रेस स्पेस डिवाइस का समर्थन करती है और इसका संचालन कम वोल्टेज के साथ भिन्न होता है।

I2c बस प्रोटोकॉल

I2c बस प्रोटोकॉल



I2C सिग्नल लाइन्स

I2C सिग्नल लाइन्स

I2C सिग्नल लाइन्स

I2C एक सीरियल बस प्रोटोकॉल है जिसमें SCL और SDL लाइनों जैसे दो सिग्नल लाइनों का उपयोग किया जाता है जो उपकरणों के साथ संचार करने के लिए उपयोग किया जाता है। SCL एक a सीरियल क्लॉक लाइन ’के लिए है और यह सिग्नल हमेशा stands मास्टर डिवाइस’ द्वारा संचालित होता है। SDL data सीरियल डेटा लाइन ’के लिए है, और यह संकेत मास्टर या I2C बाह्य उपकरणों द्वारा संचालित है। ये दोनों SCL और SDL लाइन ओपन-ड्रेन स्थिति में हैं जब I2C परिधीय के बीच कोई हस्तांतरण नहीं होता है।

ओपन-ड्रेन आउटपुट


ओपन-ड्रेन है FET ट्रांजिस्टर के लिए अवधारणा जिसमें ट्रांजिस्टर का ड्रेन टर्मिनल ओपन स्टेट है। मास्टर डिवाइस के एसडीएल और एससीएल पिन खुले राज्य में ट्रांजिस्टर के साथ डिज़ाइन किए गए हैं, इसलिए डेटा ट्रांसफर केवल तभी संभव है जब ये ट्रांजिस्टर आयोजित किए जाते हैं। इसलिए, इन लाइनों या नाली टर्मिनलों को चालन मोड के लिए वीसीसी से पूरी तरह से पुल-अप प्रतिरोधों से जोड़ा जाता है।

I2C के इंटरफेस

अनेक दास उपकरणों को माइक्रोकंट्रोलर के लिए हस्तक्षेप किया जाता है उनके बीच सूचना स्थानांतरित करने के लिए I2C स्तर शिफ्टर आईसी के माध्यम से I2C बस की मदद से। I2C प्रोटोकॉल का उपयोग अधिकतम 128 उपकरणों को जोड़ने के लिए किया गया है जो सभी मास्टर इकाई के SCL और SDL लाइनों के साथ-साथ दास उपकरणों के साथ संचार करने के लिए जुड़े हुए हैं। यह मल्टीमास्टर संचार का समर्थन करता है, जिसका अर्थ है कि बाहरी उपकरणों को संचार करने के लिए दो स्वामी का उपयोग किया जाता है।

I2C डेटा ट्रांसफर दरें

I2C प्रोटोकॉल तीन मोड्स को संचालित करता है जैसे: फास्ट मोड, हाई-स्पीड मोड और स्टैण्डर्ड मोड जिसमें स्टैंडर्ड मोड डेटा स्पीड 0Hz से 100Hz तक होती है, और फास्ट मोड डेटा 0Hz के साथ 400 KHz स्पीड और 10 के साथ हाई स्पीड मोड ट्रांसफर कर सकता है। KHz से 100KHz तक। प्रत्येक हस्तांतरण के लिए 9-बिट डेटा भेजा जाता है, जिसमें 8-बिट्स को ट्रांसमीटर MSB द्वारा LSB में भेजा जाता है, और 9 बिट बिट रिसीवर द्वारा भेजा गया एक पावती बिट होता है।

I2C डेटा ट्रांसफर दरें

I2C डेटा ट्रांसफर दरें

I2C संचार

I2C बस प्रोटोकॉल का उपयोग आमतौर पर मास्टर और दास संचार में किया जाता है, जिसमें मास्टर को 'माइक्रोकंट्रोलर' कहा जाता है, और दास को एम्बेडेड सिस्टम में ADC, EEPROM, DAC और इसी तरह के अन्य उपकरणों के रूप में कहा जाता है। गुलाम उपकरणों की संख्या I2C बस की मदद से मास्टर डिवाइस से जुड़ी हुई है, जिसमें प्रत्येक दास को संवाद करने के लिए एक अनूठा पता होता है। गुलाम के लिए मास्टर डिवाइस को बताने के लिए निम्न चरणों का उपयोग किया जाता है:

चरण 1: सबसे पहले, मास्टर डिवाइस सभी दास उपकरणों को सूचित करने के लिए एक प्रारंभिक स्थिति जारी करता है ताकि वे सीरियल डेटा लाइन पर सुनें।

चरण 2: मास्टर डिवाइस लक्ष्य दास डिवाइस का पता भेजता है, जिसकी तुलना सभी दास उपकरणों के पते से की जाती है, जो SCL और SDL लाइनों से जुड़ा होता है। यदि कोई भी पता मेल खाता है, तो उस डिवाइस का चयन किया जाता है, और शेष सभी डिवाइस SCL और SDL लाइनों से डिस्कनेक्ट हो जाते हैं।

चरण 3: मास्टर से प्राप्त मिलान वाले पते के साथ दास डिवाइस, मास्टर को एक पावती के साथ जवाब देता है इसके बाद डेटा बस में दोनों मास्टर और दास उपकरणों के बीच संचार स्थापित किया जाता है।

चरण 4: मास्टर और गुलाम दोनों संचार प्राप्त करने या लिखने के आधार पर डेटा प्राप्त करते हैं और संचारित करते हैं।

चरण 5: फिर, मास्टर रिसीवर को 8-बिट डेटा प्रेषित कर सकता है जो 1-बिट पावती के साथ उत्तर देता है।

I2C ट्यूटोरियल

घड़ी की नब्ज के संबंध में चरणबद्ध तरीके से सूचना चरण को प्रसारित करना और प्राप्त करना I2C प्रोटोकॉल कहलाता है। यह एक इंटर-सिस्टम और शॉर्ट-डिस्टेंस प्रोटोकॉल है, जिसका अर्थ है, इसका उपयोग सर्किट बोर्ड के भीतर मास्टर और स्लेव डिवाइस को संचार करने के लिए किया जाता है।

I2C प्रोटोकॉल मूल बातें

सामान्य तौर पर, I2C बस प्रणाली में दो तार होते हैं जो इनपुट और आउटपुट परिधीय सुविधाओं जैसे कि ADC, EEROM और RTC, और का विस्तार करने के लिए आसानी से उपयोग किए जाते हैं, और अन्य बुनियादी घटक एक ऐसी प्रणाली बनाना जिसकी जटिलता बहुत कम हो।

उदाहरण: चूंकि 8051 माइक्रोकंट्रोलर के पास कोई इनबिल्ट एडीसी नहीं है - इसलिए, यदि हम किसी भी एनालॉग सेंसर को 8051 माइक्रोकंट्रोलर को इंटरफ़ेस करना चाहते हैं - तो हमें एडीसी उपकरणों का उपयोग करना होगा जैसे कि ADC0804-1 चैनल ADC, ADC0808 - 8 चैनल एडीसी, आदि इन एडीसी का उपयोग करके। हम एनालॉग सेंसर को माइक्रोकंट्रोलर को इंटरफेस कर सकते हैं।

किसी भी माइक्रोकंट्रोलर या प्रोसेसर की I / O विशेषताओं का विस्तार करने के लिए प्रोटोकॉल का उपयोग किए बिना, हम 8255 ICit 8-पिन डिवाइस पर जा सकते हैं। 8051 माइक्रोकंट्रोलर एक 40-पिन माइक्रोकंट्रोलर है 8255 आईसी का उपयोग करके, हम प्रत्येक पोर्ट में 8-पिन के साथ 3-I / O पोर्ट का विस्तार कर सकते हैं। परिधीय सर्किटरी के विस्तार के लिए आरटीसी, एडीसी, ईईप्रॉम, टाइमर, आदि जैसे सभी उपकरणों का उपयोग करके - जटिलता, लागत, बिजली की खपत और उत्पाद का आकार भी बढ़ाया जाता है।

इस समस्या को दूर करने के लिए, हार्डवेयर की जटिलता और बिजली की खपत को कम करने के लिए प्रोटोकॉल अवधारणा चित्र में आती है। हम इस I2C प्रोटोकॉल का उपयोग करके 128 डिवाइस तक I / 0 बाह्य उपकरणों, ADCs, T / C और मेमोरी डिवाइस जैसी अधिक सुविधाओं का विस्तार कर सकते हैं।
I2C प्रोटोकॉल में प्रयुक्त शब्दावली

ट्रांसमीटर: वह उपकरण जो बस को डेटा भेजता है उसे ट्रांसमीटर कहा जाता है।

रिसीवर: बस से डेटा प्राप्त करने वाले उपकरण को रिसीवर कहा जाता है।

गुरुजी: वह उपकरण जो घड़ी के संकेतों को उत्पन्न करने और हस्तांतरण को समाप्त करने के लिए स्थानान्तरण शुरू करता है, एक मास्टर कहलाता है।

दास: गुरु द्वारा संबोधित उपकरण को दास कहा जाता है।

मल्टीमास्टर: संदेश को भ्रष्ट किए बिना एक ही समय में एक से अधिक मास्टर बस को नियंत्रित करने का प्रयास कर सकते हैं, जिसे मल्टीमास्टर कहा जाता है।

मध्यस्थता: यह सुनिश्चित करने की प्रक्रिया, कि यदि एक से अधिक मास्टर एक साथ बस को नियंत्रित करने की कोशिश करते हैं - केवल एक को ऐसा करने की अनुमति है, तो जीतने वाला संदेश दूषित नहीं होता है।

तादात्म्य: दो या दो से अधिक उपकरणों के घड़ी एकल को सिंक्रनाइज़ करने की प्रक्रिया को सिंक्रोनाइज़ेशन कहा जाता है।

I2C बेसिक कमांड अनुक्रम

  1. बिट कंडीशन शुरू करें
  2. बंद करो हालत
  3. आभार शर्त
  4. ऑपरेशन लिखने के लिए मास्टर
  5. ऑपरेशन स्लेव टू मास्टर

बिट स्थिति को शुरू और बंद करो

जब मास्टर (माइक्रोकंट्रोलर) एक गुलाम डिवाइस (उदाहरण के लिए एडीसी) से बात करना चाहता है, तो यह I2C बस पर एक स्टार्ट कंडीशन जारी करके संचार शुरू करता है, और फिर एक स्टॉप कंडीशन जारी करता है। I2C प्रारंभ और स्टॉप तर्क स्तर चित्र में दिखाए गए हैं।

I2C प्रारंभ स्थिति SDA लाइन के उच्च से निम्न संक्रमण के रूप में परिभाषित करती है जबकि SCL लाइन उच्च होती है। एएन I2C स्टॉप की स्थिति तब होती है जब एससीएल लाइन उच्च होने पर एसडीए लाइन कम से उच्च पर टॉगल करती है।

I2C मास्टर हमेशा S और P की स्थिति उत्पन्न करता है। एक बार जब I2C मास्टर एक START स्थिति शुरू करता है, तो I2c बस को व्यस्त अवस्था में माना जाता है।

बिट स्थिति को शुरू और बंद करो

बिट स्थिति को शुरू और बंद करो

प्रोग्रामिंग:

स्टार्ट कंडिशनिंग:

sbit SDA = P1 ^ 7 // माइक्रोकंट्रोलर // के एसडीए और एससीएल पिंस को इनिशियलाइज़ करें।
sbit SCL = P1 ^ 6
शून्य विलंब (अहस्ताक्षरित int)
शून्य मुख्य ()
{{
एसडीए = 1 // डेटा का प्रसंस्करण //
SCL = 1 // घड़ी उच्च है //
देरी ()
एसडीए = 0 // डेटा भेजा गया //
देरी ()
SCL = 0 // घड़ी संकेत कम है //
}
शून्य विलंब (इंट पी)
{{
अहस्ताक्षरित, बी
के लिए = a = 0a<255a++) //delay function//
के लिए (बी = 0 बी}

रोक स्थिति:

शून्य मुख्य ()
{{
एसडीए = 0 // डेटा प्रोसेसिंग बंद करो //
SCL = 1 // घड़ी उच्च है //
देरी ()
एसडीए = 1 // बंद //
देरी ()
SCL = 0 // घड़ी संकेत कम है //
}
शून्य विलंब (इंट पी)
{{
अहस्ताक्षरित, बी
के लिए = a = 0a<255a++) //delay function//
के लिए (बी = 0 बी}

पावती (ACK) और कोई पावती (NCK) शर्त

I2C बस में प्रेषित प्रत्येक बाइट को रिसीवर से एक अभिस्वीकृत स्थिति के बाद लिया जाता है, जिसका अर्थ है, मास्टर द्वारा SCL को 8-बिट के संचरण को पूरा करने के लिए कम खींचने के बाद, SDA को रिसीवर द्वारा मास्टर तक कम खींचा जाएगा। यदि, रिसीवर के संचरण को नहीं खींचता है, तो, SDA लाइन LOW को NCK स्थिति माना जाता है।

पावती (ACK)

पावती (ACK)

प्रोग्रामिंग

स्वीकृति
शून्य मुख्य ()
{{
एसडीए = 0 // एसडीए लाइन कम हो जाती है //
SCL = 1 // घड़ी उच्च से निम्न // है
देरी (100)
SCL = 0
}
कोई आभार:
शून्य मुख्य ()
{{
एसडीए = 1 // एसडीए लाइन उच्च // जाती है
SCL = 1 // घड़ी उच्च से निम्न // है
देरी (100)
SCL = 0
}

मास्टर टू स्लेव राइट्स ऑपरेशन

I2C प्रोटोकॉल पैकेट या बाइट्स के रूप में डेटा स्थानांतरित करता है। प्रत्येक बाइट एक पावती बिट द्वारा पीछा किया जाता है।

डेटा ट्रांसफर प्रारूप

डेटा ट्रांसफर प्रारूप

डेटा ट्रांसफर प्रारूप

शुरू: मुख्य रूप से, आरंभिक स्थिति उत्पन्न करने वाले मास्टर द्वारा शुरू किया गया डेटा ट्रांसफर अनुक्रम।

7-बिट पता: उसके बाद मास्टर एक एकल 16-बिट पते के बजाय दो 8-बिट स्वरूपों में दास का पता भेजता है।

आर / डब्ल्यू: यदि रीड एंड राइट थोड़ा अधिक है, तो राइट ऑपरेशन किया जाता है।

ALAS: यदि लेखन ऑपरेशन दास डिवाइस में किया जाता है, तो रिसीवर 1-बिट एसीके को माइक्रोकंट्रोलर को भेजता है।

रुकें: स्लेव डिवाइस में राइटिंग ऑपरेशन पूरा होने के बाद, माइक्रोकंट्रोलर स्लेव डिवाइस को स्टॉप कंडीशन भेजता है।

प्रोग्रामिंग

ऑपरेशन लिखो

voidwrite (अहस्ताक्षरित चार डी)
{{
Unsign char k, j = 0x80
के लिए (k = 0k)<8k++)
{{
एसडीए = (डी एंड जे)
जे = जे >> १
SCL = 1
देरी (4)
SCL = 0
}
एसडीए = 1
SCL = 1
देरी (2)
c = एसडीए
देरी (2)
SCL = 0
}

मास्टर टू स्लेव रीड ऑपरेशन

डेटा को बिट या बाइट्स के रूप में दास डिवाइस से वापस पढ़ा जाता है - सबसे महत्वपूर्ण बिट पहले पढ़ें और सबसे कम महत्वपूर्ण बिट पिछले पढ़ें।

डेटा पढ़ें प्रारूप

डेटा प्रारूप पढ़ें

डेटा प्रारूप पढ़ें

शुरू: मुख्य रूप से, डेटा ट्रांसफर अनुक्रम मास्टर द्वारा शुरू की स्थिति उत्पन्न करता है।

7-बिट पता: उसके बाद मास्टर एक एकल 16-बिट पते के बजाय दो 8-बिट स्वरूपों में दास का पता भेजता है।

आर / डब्ल्यू: यदि रीड और राइट थोड़ा कम है, तो रीड ऑपरेशन किया जाता है।

ALAS: यदि लेखन ऑपरेशन दास डिवाइस में किया जाता है, तो रिसीवर 1-बिट एसीके को माइक्रोकंट्रोलर को भेजता है।

रुकें: स्लेव डिवाइस में राइटिंग ऑपरेशन पूरा होने के बाद, माइक्रोकंट्रोलर स्लेव डिवाइस को स्टॉप कंडीशन भेजता है।

प्रोग्रामिंग

शून्य रीड ()
{{
Unsigned char j, z = 0x00, q = 0x80
एसडीए = 1
for (j = 0j<8j++)
{{
SCL = 1
देरी (100)
झंडा = एसडीए
अगर (झंडा == 1)
q)
क्ष = क्ष >> १
देरी (100)
SCL = 0

8051 माइक्रोकंट्रोलर के लिए इंटरफैसिंग एडीसी का व्यावहारिक उदाहरण

ADC एक उपकरण है जिसका उपयोग एनालॉग डेटा को डिजिटल और डिजिटल के एनालॉग के रूप में परिवर्तित करने के लिए किया जाता है। 8051 माइक्रोकंट्रोलर में एक इनबिल्ट एडीसी नहीं है, इसलिए हमें I2C प्रोटोकॉल के माध्यम से बाहरी रूप से जोड़ना होगा। PCF8591 I2C आधारित है डिजिटल के अनुरूप और डिजिटल एनालॉग कनवर्टर करने के लिए। यह डिवाइस 2.5 से 6v वोल्टेज के साथ अधिकतम 4-एनालॉग इनपुट चैनलों का समर्थन कर सकता है।

एनालॉग आउटपुट

एनालॉग आउटपुट, वोल्टेज के रूप में आते हैं। उदाहरण के लिए, 5v एनालॉग सेंसर 0.01v से 5v के आउटपुट लॉजिक देता है।
5v का अधिकतम डिजिटल मूल्य = 256 है।
अधिकतम वोल्टेज मान के अनुसार 2.5v का मान = 123 है।

एनालॉग आउटपुट का सूत्र है:

डिजिटल आउटपुट का सूत्र:

8051 माइक्रोकंट्रोलर के लिए एडीसी की जगह

8051 माइक्रोकंट्रोलर के लिए एडीसी की जगह

उपरोक्त आंकड़ा एडीसी डिवाइस से I51 प्रोटोकॉल का उपयोग करके डेटा ट्रांसफर को 8051 माइक्रोकंट्रोलर को दिखाता है। SCL और SDA के ADC पिन उनके बीच संचार स्थापित करने के लिए माइक्रोकंट्रोलर के 1.7 और 1.6 पिन से जुड़े होते हैं। जब सेंसर ADC को एनालॉग वैल्यू देता है, तो यह डिजिटल में परिवर्तित हो जाता है और I2C प्रोटोकॉल के माध्यम से डेटा को माइक्रोकंट्रोलर में ट्रांसफर कर देता है।

यह उपयुक्त कार्यक्रमों के साथ I2C बस प्रोटोकॉल ट्यूटोरियल के बारे में है। हम आशा करते हैं कि दी गई सामग्री आपको I2C संचार का उपयोग करते हुए माइक्रोकंट्रोलर के साथ कई उपकरणों को इंटरफेस करने की व्यावहारिक अवधारणा देती है। अगर आपको इस प्रोटोकॉल की प्रक्रिया में कोई संदेह है, तो आप नीचे टिप्पणी करके हम तक पहुँच सकते हैं।