- I2C संचार प्रोटोकॉल क्या है?
- I2C संचार कैसे काम करता है?
- I2C संचार का उपयोग कहां करें?
- MSP430 में I2C: AD5171 डिजिटल पोटेंशियोमीटर को नियंत्रित करता है
MSP430 एम्बेडेड उपकरणों के लिए टेक्सास इंस्ट्रूमेंट्स द्वारा प्रदान किया गया एक शक्तिशाली मंच है, इसकी बहुमुखी प्रकृति ने इसे कई अनुप्रयोगों में तरीके खोजने के लिए बनाया है और चरण अभी भी चल रहा है। यदि आप हमारे MSP430 ट्यूटोरियल्स का अनुसरण कर रहे हैं, तो आपने देखा होगा कि हमने पहले से ही बहुत ही बेसिक्स से शुरू होने वाले इस माइक्रोकंट्रोलर पर ट्यूटोरियल की एक विस्तृत श्रृंखला को कवर किया है। अब से, हमने बुनियादी बातों को कवर कर लिया है जिससे हम संचार पोर्टल की तरह अधिक दिलचस्प सामानों में शामिल हो सकते हैं।
एम्बेडेड अनुप्रयोगों की विशाल प्रणाली में, कोई भी माइक्रोकंट्रोलर सभी गतिविधियों को खुद से नहीं कर सकता है। किसी समय में सूचना साझा करने के लिए अन्य उपकरणों से संवाद करना पड़ता है, इन सूचनाओं को साझा करने के लिए कई अलग-अलग प्रकार के संचार प्रोटोकॉल हैं, लेकिन सबसे अधिक उपयोग किए जाने वाले USART, IIC, SPI और CAN हैं । प्रत्येक संचार प्रोटोकॉल का अपना लाभ और नुकसान है। आइए अभी के लिए I2C भाग पर ध्यान केंद्रित करें जो कि हम इस ट्यूटोरियल में सीखने जा रहे हैं।
I2C संचार प्रोटोकॉल क्या है?
IIC शब्द " इंटर इंटीग्रेटेड सर्किट " के लिए है। इसे सामान्य रूप से I2C के रूप में निरूपित किया जाता है या I C या कुछ स्थानों पर 2-वायर इंटरफ़ेस प्रोटोकॉल (TWI) के रूप में भी स्क्वेर किया जाता है, लेकिन यह सभी का अर्थ समान है। I2C एक तुल्यकालिक संचार प्रोटोकॉल अर्थ है, दोनों डिवाइस जो सूचना साझा कर रहे हैं, उन्हें एक सामान्य घड़ी संकेत साझा करना होगा। इसमें जानकारी साझा करने के लिए केवल दो तार हैं जिनमें से एक का उपयोग मुर्गा सिग्नल के लिए किया जाता है और दूसरे का उपयोग डेटा भेजने और प्राप्त करने के लिए किया जाता है।
I2C संचार कैसे काम करता है?
I2C संचार पहली बार फिलिप्स द्वारा पेश किया गया था। जैसा कि पहले कहा गया है कि इसमें दो तार हैं, ये दो तार दो उपकरणों में जुड़े होंगे। यहाँ एक उपकरण को मास्टर और दूसरे उपकरण को दास कहा जाता है । संचार दो मास्टर और एक दास के बीच हमेशा होना चाहिए । I2C संचार का लाभ यह है कि एक से अधिक दास एक मास्टर से जुड़े हो सकते हैं।
संपूर्ण संचार इन दो तारों के माध्यम से होता है, सीरियल क्लॉक (एससीएल) और सीरियल डेटा (एसडीए)।
सीरियल क्लॉक (SCL): मास्टर द्वारा उत्पन्न घड़ी संकेत को दास के साथ साझा करता है
सीरियल डेटा (एसडीए): मास्टर और गुलाम के बीच और बाहर डेटा भेजता है।
किसी भी समय केवल मास्टर संचार शुरू करने में सक्षम होंगे। चूंकि बस में एक से अधिक दास हैं, इसलिए स्वामी को एक अलग पते का उपयोग करके प्रत्येक दास का उल्लेख करना होगा। जब केवल उस विशेष पते वाले दास को संबोधित किया जाता है, तो वह सूचना के साथ वापस आ जाएगा, जबकि बाकी लोग छोड़ देंगे। इस तरह हम एक ही बस का उपयोग कई उपकरणों के साथ संवाद करने के लिए कर सकते हैं।
I2C की वोल्टेज स्तरों पूर्वनिर्धारित नहीं कर रहे हैं । I2C संचार लचीला है, इसका मतलब है कि डिवाइस जो 5v वोल्ट द्वारा संचालित है, I2C के लिए 5v का उपयोग कर सकता है और 3.3v डिवाइस I2C संचार के लिए 3v का उपयोग कर सकता है। लेकिन क्या होगा अगर दो डिवाइस जो विभिन्न वोल्टेज पर चल रहे हैं, उन्हें I2C का उपयोग करके संवाद करने की आवश्यकता है? एक 5V I2C बस 3.3 डिवाइस के साथ नहीं जोड़ा जा सकता । इस मामले में दो I2C बसों के बीच वोल्टेज के स्तर से मेल खाने के लिए वोल्टेज शिफ्टर्स का उपयोग किया जाता है।
कुछ शर्तों के सेट होते हैं जो लेनदेन को फ्रेम करते हैं। ट्रांसमिशन की शुरूआत एसडीए के गिरते हुए किनारे से शुरू होती है, जिसे नीचे दिए गए आरेख में 'स्टार्ट' स्थिति के रूप में परिभाषित किया गया है, जहां मास्टर एसडीए को कम करते हुए एससीएल को छोड़ देता है।
जैसा कि नीचे दिए गए चित्र में दिखाया गया है, एसडीए का गिरता किनारा START स्थिति के लिए हार्डवेयर ट्रिगर है। इसके बाद एक ही बस में सभी उपकरण श्रवण मोड में चले जाते हैं।
उसी तरीके से, एसडीए के बढ़ते किनारे संचरण को रोकते हैं जो ऊपर आरेख में 'STOP' स्थिति के रूप में दिखाया गया है, जहां मास्टर SCL को छोड़ देता है और उच्च जाने के लिए SDA भी जारी करता है। इसलिए एसडीए की बढ़ती बढ़त ट्रांसमिशन को रोक देती है।
आर / डब्ल्यू बिट निम्नलिखित बाइट्स के संचरण की दिशा को इंगित करता है, अगर यह उच्च का मतलब है कि दास संचारित होगा और यदि यह कम है तो इसका मतलब है कि मास्टर संचारित होगा।
प्रत्येक घड़ी चक्र पर प्रत्येक बिट को प्रेषित किया जाता है, इसलिए एक बाइट प्रसारित करने के लिए 8 घड़ी चक्र लगते हैं। प्रत्येक बाइट के बाद या तो भेजा या प्राप्त किया, नौवें घड़ी चक्र ACK / NACK के लिए आयोजित किया जाता है (स्वीकार / स्वीकार नहीं)। यह एसीके बिट स्थिति के आधार पर दास या मास्टर द्वारा उत्पन्न होता है। ACK बिट के लिए, SDA को 9 वें क्लॉक चक्र पर मास्टर या दास द्वारा कम पर सेट किया जाता है। तो यह कम है क्योंकि इसे ACK अन्यथा NACK माना जाता है।
I2C संचार का उपयोग कहां करें?
I2C संचार का उपयोग केवल कम दूरी के संचार के लिए किया जाता है । यह निश्चित रूप से एक हद तक विश्वसनीय है क्योंकि इसमें स्मार्ट बनाने के लिए एक सिंक्रनाइज़ घड़ी पल्स है। यह प्रोटोकॉल मुख्य रूप से सेंसर या अन्य उपकरणों के साथ संचार करने के लिए उपयोग किया जाता है, जिसे किसी मास्टर को जानकारी भेजनी होती है। यह बहुत आसान है जब एक माइक्रोकंट्रोलर को केवल अन्य तारों का उपयोग करके कई अन्य गुलाम मॉड्यूल के साथ संवाद करना पड़ता है। यदि आप एक लंबी दूरी के संचार की तलाश कर रहे हैं, तो आपको RS232 की कोशिश करनी चाहिए और यदि आप अधिक विश्वसनीय संचार की तलाश कर रहे हैं, तो आपको SPI प्रोटोकॉल का प्रयास करना चाहिए।
MSP430 में I2C: AD5171 डिजिटल पोटेंशियोमीटर को नियंत्रित करता है
हमारे MSP430 को प्रोग्राम करने के लिए Energia IDE सबसे आसान सॉफ्टवेयर में से एक है। यह Arduino IDE के समान है। आप यहां Energia IDE का उपयोग करके MSP430 के साथ आरंभ करने के बारे में अधिक जान सकते हैं।
तो, Energia IDE में I2C का उपयोग करने के लिए हमें बस wire.h हेडर फाइल को शामिल करना होगा। पिन घोषणा (एसडीए और एससीएल) वायर लाइब्रेरी के अंदर है , इसलिए हमें सेटअप फ़ंक्शन में घोषणा करने की आवश्यकता नहीं है ।
नमूना उदाहरण IDE के उदाहरण मेनू में पाए जा सकते हैं। एक उदाहरण नीचे बताया गया है:
यह उदाहरण दिखाता है कि एनालॉग डिवाइस AD5171 डिजिटल पोटेंशियोमीटर को कैसे नियंत्रित किया जाए जो I2C सिंक्रोनस सीरियल प्रोटोकॉल के माध्यम से संचार करता है। MSP की I2C वायर लाइब्रेरी का उपयोग करके, डिजिटल पॉट प्रतिरोध के 64 स्तरों के माध्यम से एक एलईडी को लुप्त कर देगा।
सबसे पहले, हम i2c संचार यानी वायर लाइब्रेरी के लिए जिम्मेदार लाइब्रेरी को शामिल करेंगे
#शामिल
में सेटअप समारोह, हम द्वारा तार पुस्तकालय आरंभ हो जाएगा .begin () समारोह।
शून्य सेटअप () { वायर.begin (); }
फिर पोटेंशियोमीटर के मूल्यों को स्टोर करने के लिए एक वैरिएबल वैली को इनिशियलाइज़ करें
बाइट वैल = 0;
में पाश समारोह, हम करेंगे I2C दास डिवाइस के लिए प्रसारण शुरू डिवाइस पते जो आईसी के डेटापत्रक में दी गई है निर्दिष्ट करने के द्वारा (इस मामले डिजिटल पोटेंशियोमीटर आईसी में)।
शून्य लूप () { वायर.beginTransmission (44); // डिवाइस पर संचारित करें # 44 (0x2c)
इसके बाद, कतार बाइट्स यानी डेटा जिसे आप लिखने () फ़ंक्शन के साथ ट्रांसमिशन के लिए आईसी को भेजना चाहते हैं ।
वायर.राइट (बाइट (0x00)); // निर्देश बाइट वायर भेजता है। राइट (वैल); // पोटेंशियोमीटर वैल्यू बाइट भेजता है
फिर एंडट्रांसमीशन () पर कॉल करके उन्हें ट्रांसमिट करें ।
वायर.endTransmission (); // स्टॉप ट्रांसमिटिंग वैल ++; // वेतन वृद्धि अगर (वैल == 64) {// अगर 64 वें स्थान (अधिकतम) वैल = 0 पर पहुंच गई ; // सबसे कम मूल्य से शुरू करें } देरी (500); }