8051 माइक्रोकंट्रोलर के साथ I2C-EEPROM को कैसे इंटरफ़ेस करें

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





I2C या IIC संक्षिप्त नाम एक अंतर है एकीकृत परिपथ और इसे I वर्ग सी कहा जाता है। I2C एक सीरियल कंप्यूटर बस है , जिसका आविष्कार NXP सेमीकंडक्टर्स ने किया था, पहले इसे फिलिप्स सेमीकंडक्टर्स के रूप में नामित किया गया था। I2C बस का उपयोग निम्न गति परिधीय एकीकृत सर्किट को संलग्न करने के लिए किया जाता है माइक्रोकंट्रोलर और प्रोसेसर । वर्ष 2006 में, I2C प्रोटोकॉल को लागू करने के लिए कोई लाइसेंस शुल्क आवश्यक नहीं है। लेकिन IX गुलाम का पता NXP अर्धचालक द्वारा निर्धारित करने के लिए शुल्क आवश्यक है।

टेक्सास इंस्ट्रूमेंट्स, सीमेंस एजी, एनईसी, मोटोरोला, इंटेरसिल और एसटिमोइलेक्ट्रॉनिक्स जैसे कुछ प्रतियोगियों ने 1990 के दशक के मध्य में बाजार में अच्छी तरह से अनुकूल आईओसी उत्पादों की घोषणा की है। वर्ष 1995 में, SMBus को Intel द्वारा परिभाषित किया गया है, यह I thatC का एक उपसमूह है जो बताता है कि प्रोटोकॉल अधिक सख्त हैं। SMBus का मुख्य उद्देश्य अंतर और मजबूती का समर्थन करना है। इसलिए, वर्तमान I ,C प्रणालियों में SMBus के नियम और नीतियां शामिल हैं, कभी-कभी यह न्यूनतम पुनर्संरचना के साथ I2C और SMBus दोनों का समर्थन करता है।




I2C बस

I2C बस

इंटरफ़ेस I2C बस-ईपॉम 8051 माइक्रोकंट्रोलर के साथ

I2C बस क्या है

I2c बस दो द्विदिश खुले-ड्रेन लाइनों जैसे SDA (सीरियल डेटा लाइन) और SCl (सीरियल क्लॉक लाइन) का उपयोग करती है और इन्हें प्रतिरोधों के साथ खींचा जाता है। I2C बस एक मास्टर डिवाइस को गुलाम डिवाइस के साथ संचार शुरू करने की अनुमति देता है। इन दो उपकरणों के बीच डेटा का परस्पर संबंध है। उपयोग किए जाने वाले विशिष्ट वोल्टेज + 3.3V या + 5V हैं, हालांकि अतिरिक्त वोल्टेज वाले सिस्टम की अनुमति है।



I2C इंटरफ़ेस

I2C इंटरफ़ेस

EEPROM

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

8051 स्लिकर बोर्ड

8051 स्लीकर बोर्ड विशेष रूप से के क्षेत्र में तकनीकी छात्रों की मदद करने के लिए डिज़ाइन किया गया है अंतः स्थापित प्रणालियाँ । इस किट को इस तरह से डिज़ाइन किया गया है कि इसकी सभी विशेषताएं 8051 माइक्रोकंट्रोलर संभवतः छात्रों द्वारा उपयोग किया जाएगा। यह स्ट्राइकर बोर्ड आईएसपी (इन सिस्टम प्रोग्रामिंग) का समर्थन करता है जो सीरियल पोर्ट के माध्यम से किया जाता है। यह किट और एनएक्सपी से 8051 की गति 8- बिट माइक्रोकंट्रोलर के आसपास के कई डिजाइनों के डिबगिंग की प्रगति को सुचारू बनाने के लिए प्रस्तावित है।

इंटरफैसिंग I2C - EEPROM

निम्न आंकड़ा 8051 माइक्रोकंट्रोलर के साथ I2C-EEPROM को नियंत्रित करता है। यहाँ, I2C एक मास्टर-स्लेव प्रोटोकॉल है, जिसमें क्लॉक पल्स के साथ डेटा भी शामिल है। आमतौर पर, मास्टर डिवाइस ने क्लॉक लाइन, एससीएल को स्विच किया। यह लाइन डेटा टाइमिंग का आदेश देती है जो I2C बस पर स्थानांतरित हो जाती है। जब तक कि घड़ी संचालित नहीं होती है, कोई डेटा स्थानांतरित नहीं किया जाएगा। सभी दास एक ही घड़ी, एससीएल द्वारा नियंत्रित होते हैं।


इंटरफैसिंग I2C - EEPROM

इंटरफैसिंग I2C - EEPROM

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

इंटरफ़ेस I2C बस-ईपॉम 8051 माइक्रोकंट्रोलर के साथ

यदि आप 8051 स्ट्राइकर बोर्ड में I2C बस का उपयोग करके पढ़ना और लिखना EEPROM को पढ़ना चाहते हैं। I2 बस-ईपॉम से इंटरसेपिंग 8051 माइक्रोकंट्रोलर बहुत सरल है । इस इंटरफेस का संचालन डेटा और एड्रेस बस के बाद WRITE जैसे सिग्नल भेजना है। इस ऑपरेशन में, डेटा को स्टोर करने के लिए EEPROM का उपयोग किया जाता है। 8051 किट में, IEPROM लाइनों के दो नंबर I2C समर्थित ड्राइवरों द्वारा विनियमित हैं। SCL और SDA I2C आधारित धारावाहिक EEPROM IC से जुड़े हैं।

इंटरफ़ेस I2C बस-ईपॉम 8051 माइक्रोकंट्रोलर के साथ

इंटरफ़ेस I2C बस-ईपॉम 8051 माइक्रोकंट्रोलर के साथ

एसडीए और एससीएल I2C लाइनों का उपयोग करके, EEPROM के पढ़ने और लिखने का संचालन 8051 स्लिकर किट में किया जाता है

I2C का इंटरफेस इतना सरल है और हर एक डेटा में EEPROM पढ़ें / लिखें। देरी कंपाइलर पर निर्भर करती है कि जैसे ही आप विलंब में बदलाव करते हैं, वैसे ही यह छोरों को बढ़ाता है।

I2C Interfacing के लिए स्रोत कोड

#शामिल
#शामिल
#शामिल

# डेफिन ACK १
#define NO_ACK 0

अहस्ताक्षरित चार मैं
अहस्ताक्षरित चार EData [5]
अहस्ताक्षरित चार डेटा
शून्य InitSerial (शून्य)
शून्य देरी (अहस्ताक्षरित int)
शून्य WriteI2C (अहस्ताक्षरित चार)
शून्य प्रारंभ (शून्य)
शून्य रोक (शून्य)
शून्य ReadBYTE (अहस्ताक्षरित int)
शून्य लिखो (अहस्ताक्षरित int)
अहस्ताक्षरित चार्ट ReadI2C (बिट)

SCL = P2 ^ 0 // SCL पिन (घड़ी) से कनेक्ट करें
एसडीए = पी 2 ^ 1 ^ एसडीए पिन (डेटा) से कनेक्ट करें

// ——————————————————
// मुख्य कार्यक्रम
// ——————————————————
शून्य मुख्य (शून्य)
{{
InitSerial () // प्रारंभिक सीरियल पोर्ट
putchar (0x0C) // स्पष्ट हाइपर टर्मिनल
देरी (5)
WriteBYTE (0x0000)
WriteI2C (I A ’) // डेटा यहाँ लिखें
WriteI2C (’B’)
WriteI2C (’C’)
WriteI2C (I डी ’)
WriteI2C (’E’)
WriteI2C (’F’)
रुकें()
देरी (10)

ReadBYTE (0x0000)
EData [0] = ReadI2C (NO_ACK)
EData [1] = ReadI2C (NO_ACK)
EData [2] = ReadI2C (NO_ACK)
EData [3] = ReadI2C (NO_ACK)
EData [4] = ReadI2C (NO_ACK)
EData [5] = ReadI2C (NO_ACK)

for (i = 0i)<6i++)
{{
प्रिंटफ ('मान =% c n', ईडाटा [i]) // प्रदर्शन डेटा * /
देरी (100)
}

जबकि (1)
}

// ——————————————————
// सीरियल पोर्ट को इनिशियलाइज़ करें
// ——————————————————
शून्य InitSerial (शून्य)
{{
SCON = 0x52 // सेटअप सीरियल पोर्ट कंट्रोल
TMOD = 0x20 // हार्डवेयर (9600 BAUD @ 11.0592MHZ)
TH1 = 0xFD // TH1
TR1 = 1 // टाइमर 1 ऑन
}

// —————————————–
// प्रारंभ I2C
// —————————————–
शून्य प्रारंभ (शून्य)
{{
एसडीए = 1
SCL = 1
_बटन _ () _ nop_ ()
एसडीए = ०
_बटन _ () _ nop_ ()
SCL = 0
_बटन _ () _ nop_ ()
}

// —————————————–
// I2C को रोकें
// —————————————–
शून्य रोक (शून्य)
{{
एसडीए = ०
_बटन _ () _ nop_ ()
SCL = 1
_बटन _ () _ nop_ ()
एसडीए = 1
}

// —————————————–
// I2C लिखें
// —————————————–
शून्य WriteI2C (अहस्ताक्षरित चार डेटा)
{{

for (i = 0i)<8i++)
{{
एसडीए = (डेटा और 0x80)? 1: 0
एससीएल = 1 एससीएल = 0
डेटा<<=1
}

SCL = 1
_बटन _ () _ nop_ ()
SCL = 0

}

// —————————————–
// I2C पढ़ें
// —————————————–
अहस्ताक्षरित चार्ट ReadI2C (बिट ACK_Bit)
{{

शुरू()
WriteI2C (0xA1)

एसडीए = 1
for (i = 0i)<8i++)

SCL = 1
डेटा<<= 1
तारीख = (तारीख)

अगर (ACK_Bit == 1)
एसडीए = 0 // एसीके भेजें
अन्य
एसडीए = 1 // कोई एसीके भेजें

_बटन _ () _ nop_ ()
SCL = 1
_बटन _ () _ nop_ ()
SCL = 0
रुकें()
डेटा वापस करें
}

// —————————————–
// 1 बाइट फॉर्म I2C पढ़ें
// —————————————–
शून्य ReadBYTE (अहस्ताक्षरित int Addr)
{{
शुरू()
WriteI2C (0xA0)
WriteI2C ((अहस्ताक्षरित चार) (Addr >> 8) और 0xFF)
WriteI2C ((अहस्ताक्षरित चार) Addr और 0xFF)
}

// —————————————–
// I2C को 1 बाइट लिखें
// —————————————–
शून्य लिखो (अहस्ताक्षरित int Addr)
{{
शुरू()
WriteI2C (0xA0)
WriteI2C ((अहस्ताक्षरित चार) (Addr >> 8) और 0xFF) // उच्च पता भेजें
WriteI2C ((अहस्ताक्षरित चार) Addr & 0xFF) // पता कम भेजें
}

// ——————————————————
// देरी mS फ़ंक्शन
// ——————————————————
शून्य देरी (अहस्ताक्षरित इंट काउंट)
{+ mSec देरी 11.0592 मेगाहर्ट्ज
अहस्ताक्षरित int i // Keil v7.5a
जबकि (गणना)
{{
i = 115
जबकि (i> 0) i-
गिनती
}
}

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