विषयसूची:

एमटीपी अरुडिनो प्रोग्रामिंग उदाहरण: 5 कदम
एमटीपी अरुडिनो प्रोग्रामिंग उदाहरण: 5 कदम

वीडियो: एमटीपी अरुडिनो प्रोग्रामिंग उदाहरण: 5 कदम

वीडियो: एमटीपी अरुडिनो प्रोग्रामिंग उदाहरण: 5 कदम
वीडियो: अरुडिनो मास्टरक्लास | 90 मिनट में पूर्ण प्रोग्रामिंग कार्यशाला! 2024, जुलाई
Anonim
एमटीपी अरुडिनो प्रोग्रामिंग उदाहरण
एमटीपी अरुडिनो प्रोग्रामिंग उदाहरण

इस निर्देश में, हम दिखाते हैं कि डायलॉग SLG46824/6 GreenPAK™ मल्टीपल-टाइम प्रोग्रामेबल (MTP) डिवाइस को प्रोग्राम करने के लिए SLG46824/6 Arduino प्रोग्रामिंग स्केच का उपयोग कैसे करें।

अधिकांश ग्रीनपैक डिवाइस वन-टाइम प्रोग्रामेबल (ओटीपी) हैं, जिसका अर्थ है कि एक बार उनका नॉन-वोलेटाइल मेमोरी बैंक (एनवीएम) लिखा जाने के बाद, इसे ओवरराइट नहीं किया जा सकता है। एसएलजी४६८२४ और एसएलजी४६८२६ जैसे एमटीपी फीचर वाले ग्रीनपैक में एक अलग प्रकार का एनवीएम मेमोरी बैंक होता है जिसे एक से अधिक बार प्रोग्राम किया जा सकता है।

हमने एक Arduino स्केच लिखा है जो उपयोगकर्ता को कुछ साधारण सीरियल मॉनिटर कमांड के साथ MTP GreenPAK प्रोग्राम करने की अनुमति देता है। इस निर्देशयोग्य में हम MTP के साथ अपने GreenPAK के रूप में SLG46826 का उपयोग करते हैं।

हम C/C++ पर आधारित एक ओपन-सोर्स प्लेटफॉर्म का उपयोग करके Arduino Uno के लिए नमूना कोड प्रदान करते हैं। डिजाइनरों को अपने विशिष्ट प्लेटफॉर्म के लिए Arduino कोड में उपयोग की जाने वाली तकनीकों को एक्सट्रपलेशन करना चाहिए।

I2C सिग्नल विनिर्देशों, I2C एड्रेसिंग और मेमोरी स्पेस के बारे में विशिष्ट जानकारी के लिए, कृपया SLG46826 उत्पाद पृष्ठ पर प्रदान की गई ग्रीनपैक इन-सिस्टम प्रोग्रामिंग गाइड देखें। यह निर्देशयोग्य इस प्रोग्रामिंग गाइड का एक सरल कार्यान्वयन प्रदान करता है।

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

चरण 1: Arduino-GreenPAK कनेक्शन

Arduino-GreenPAK कनेक्शन
Arduino-GreenPAK कनेक्शन
Arduino-GreenPAK कनेक्शन
Arduino-GreenPAK कनेक्शन

हमारे Arduino स्केच के साथ हमारे SLG46826 GreenPAK के NVM को प्रोग्राम करने के लिए, हमें सबसे पहले चार Arduino Uno पिन को अपने GreenPAK से कनेक्ट करना होगा। आप इन पिनों को सीधे ग्रीनपैक सॉकेट एडेप्टर से या ग्रीनपाक सोल्डर डाउन वाले ब्रेकआउट बोर्ड से जोड़ सकते हैं।

कृपया ध्यान दें कि बाहरी I2C पुल अप रेसिस्टर्स चित्र 1 में नहीं दिखाए गए हैं। कृपया SCL और SDA दोनों से 4.7 kΩ पुल अप रेसिस्टर को Arduino के 3.3 V आउटपुट से कनेक्ट करें।

चरण 2: ग्रीनपैक एनवीएम डेटा को ग्रीनपाक डिज़ाइन फ़ाइल से निर्यात करना

ग्रीनपैक डिजाइन फ़ाइल से ग्रीनपैक एनवीएम डेटा निर्यात करना
ग्रीनपैक डिजाइन फ़ाइल से ग्रीनपैक एनवीएम डेटा निर्यात करना
ग्रीनपैक डिजाइन फ़ाइल से ग्रीनपाक एनवीएम डेटा निर्यात करना
ग्रीनपैक डिजाइन फ़ाइल से ग्रीनपाक एनवीएम डेटा निर्यात करना
ग्रीनपैक डिजाइन फ़ाइल से ग्रीनपैक एनवीएम डेटा निर्यात करना
ग्रीनपैक डिजाइन फ़ाइल से ग्रीनपैक एनवीएम डेटा निर्यात करना

NVM डेटा को कैसे निर्यात किया जाए, यह स्पष्ट करने के लिए हम एक बहुत ही सरल ग्रीनपैक डिज़ाइन को एक साथ रखेंगे। नीचे दिया गया डिज़ाइन एक साधारण स्तर का शिफ्टर है जहाँ बाईं ओर की नीली पिन VDD (3.3v) से बंधी होती है, जबकि दाईं ओर की पीली पिन VDD2 (1.8v) से बंधी होती है।

इस डिज़ाइन से जानकारी निर्यात करने के लिए, आपको फ़ाइल → निर्यात → निर्यात NVM का चयन करना होगा, जैसा कि चित्र 3 में दिखाया गया है।

फिर आपको फ़ाइल प्रकार के रूप में Intel HEX Files (*.hex) का चयन करना होगा और फ़ाइल को सहेजना होगा।

अब, आपको.hex फ़ाइल को टेक्स्ट एडिटर (जैसे Notepad++) के साथ खोलना होगा। Intel के HEX फ़ाइल स्वरूप और सिंटैक्स के बारे में अधिक जानने के लिए, इसके विकिपीडिया पृष्ठ को देखें। इस एप्लिकेशन के लिए हम केवल फ़ाइल के डेटा भाग में रुचि रखते हैं जैसा कि चित्र 5 में दिखाया गया है।

HEX फ़ाइल में स्थित NVM कॉन्फ़िगरेशन डेटा के 256 बाइट्स को हाइलाइट और कॉपी करें। प्रत्येक पंक्ति जिसे हम कॉपी कर रहे हैं वह 32 वर्ण लंबी है, जो 16 बाइट्स से मेल खाती है।

चित्र 6 में दिखाए गए अनुसार Arduino स्केच के हाइलाइट किए गए nvmString अनुभाग में जानकारी पेस्ट करें। यदि आप एक गैर-Arduino माइक्रोकंट्रोलर का उपयोग कर रहे हैं, तो आप GreenPAK. GP6 फ़ाइल में सहेजे गए nvmData को पार्स करने के लिए एक फ़ंक्शन लिख सकते हैं। (यदि आप टेक्स्ट एडिटर के साथ ग्रीनपैक फ़ाइल खोलते हैं, तो आप देखेंगे कि हम प्रोजेक्ट जानकारी को आसानी से सुलभ एक्सएमएल प्रारूप में संग्रहीत करते हैं।)

अपने ग्रीनपैक डिज़ाइन के लिए EEPROM डेटा सेट करने के लिए, घटक पैनल से EEPROM ब्लॉक चुनें, इसके गुण पैनल खोलें, और "डेटा सेट करें" पर क्लिक करें।

अब आप EEPROM में प्रत्येक बाइट को हमारे GUI इंटरफ़ेस के साथ व्यक्तिगत रूप से संपादित कर सकते हैं।

एक बार आपका EEPROM डेटा सेट हो जाने के बाद, आप NVM डेटा को निर्यात करने के लिए पहले वर्णित उसी विधि का उपयोग करके इसे एक HEX फ़ाइल में निर्यात कर सकते हैं। EEPROM डेटा के इन 256 बाइट्स को Arduino स्केच के eepromString सेक्शन में डालें।

प्रत्येक कस्टम डिज़ाइन के लिए, प्रोजेक्ट सेटिंग्स के "सुरक्षा" टैब के भीतर सुरक्षा सेटिंग्स की जाँच करना महत्वपूर्ण है। यह टैब मैट्रिक्स कॉन्फ़िगरेशन रजिस्टर, NVM और EEPROM के लिए सुरक्षा बिट्स को कॉन्फ़िगर करता है। कुछ कॉन्फ़िगरेशन के तहत, NVM अनुक्रम को अपलोड करने से SLG46824/6 इसके वर्तमान कॉन्फ़िगरेशन में लॉक हो सकता है और चिप की MTP कार्यक्षमता को हटा सकता है।

चरण 3: Arduino Sketch का उपयोग करें

Arduino स्केच का उपयोग करें
Arduino स्केच का उपयोग करें

अपने Arduino पर स्केच अपलोड करें और सीरियल मॉनिटर को 115200 बॉड रेट के साथ खोलें। अब आप कई कमांड करने के लिए स्केच के MENU प्रॉम्प्ट का उपयोग कर सकते हैं:

पढ़ें - निर्दिष्ट दास पते का उपयोग करके या तो डिवाइस के NVM डेटा या EEPROM डेटा को पढ़ता है

मिटाएँ - निर्दिष्ट दास पते का उपयोग करके डिवाइस के NVM डेटा या EEPROM डेटा को मिटा देता है

लिखें - मिटाएं और फिर निर्दिष्ट स्लेव पते का उपयोग करके डिवाइस का NVM डेटा या EEPROM डेटा लिखें। यह कमांड nvmString या eepromString सरणियों में सहेजे गए डेटा को लिखता है।

पिंग - डिवाइस दास पतों की एक सूची देता है जो I2C बस से जुड़े होते हैं

इन आदेशों के परिणाम सीरियल मॉनिटर कंसोल पर मुद्रित किए जाएंगे।

चरण 4: प्रोग्रामिंग युक्तियाँ और सर्वोत्तम अभ्यास

SLG46824/6 का समर्थन करने के दौरान, हमने NVM एड्रेस स्पेस को मिटाने और लिखने से जुड़े सामान्य नुकसान से बचने में मदद करने के लिए कुछ प्रोग्रामिंग युक्तियों का दस्तावेजीकरण किया है। निम्नलिखित उपखंड इस विषय को अधिक विस्तार से रेखांकित करते हैं।

1. सटीक 16-बाइट NVM पृष्ठ निष्पादित करना लिखता है:

SLG46824/6 के NVM में डेटा लिखते समय, बचने के लिए तीन तकनीकें हैं:

पेज 16 बाइट्स से कम लिखता है

● पेज 16 से अधिक बाइट्स के साथ लिखता है

पेज लिखता है कि एक पेज के भीतर पहले रजिस्टर पर शुरू न करें (आईई: 0x10, 0x20, आदि)

यदि उपरोक्त में से किसी भी तकनीक का उपयोग किया जाता है, तो गलत जानकारी के साथ NVM लोड करने से बचने के लिए MTP इंटरफ़ेस I2C लेखन की अवहेलना करेगा। हम सही डेटा ट्रांसफर को सत्यापित करने के लिए लिखने के बाद NVM एड्रेस स्पेस का I2C रीड करने की सलाह देते हैं।

2. NVM डेटा को मैट्रिक्स कॉन्फ़िगरेशन रजिस्टर में स्थानांतरित करना

जब NVM लिखा जाता है, तो मैट्रिक्स कॉन्फ़िगरेशन रजिस्टर स्वचालित रूप से नए लिखित NVM डेटा के साथ पुनः लोड नहीं होते हैं। स्थानांतरण को मैन्युअल रूप से PAK VDD साइकिल चलाकर या I2C का उपयोग करके एक सॉफ्ट रीसेट उत्पन्न करके शुरू किया जाना चाहिए। पता 0xC8 में रजिस्टर सेट करके, डिवाइस पावर-ऑन रीसेट (पीओआर) अनुक्रम को फिर से सक्षम करता है और एनवीएम से रजिस्टर डेटा को रजिस्टरों में पुनः लोड करता है।

3. NVM मिटाने के बाद I2C पता रीसेट करना:

जब NVM मिटा दिया जाता है, तो I2C स्लेव एड्रेस वाला NVM पता 0000 पर सेट हो जाएगा। मिटाने के बाद, चिप कॉन्फ़िगरेशन रजिस्टरों के भीतर अपने वर्तमान स्लेव पते को तब तक बनाए रखेगा जब तक कि डिवाइस को ऊपर वर्णित अनुसार रीसेट नहीं किया जाता है। एक बार चिप रीसेट हो जाने के बाद, I2C स्लेव एड्रेस को हर बार ग्रीनपैक के पावर-साइकिल या रीसेट होने पर कॉन्फ़िगरेशन रजिस्टरों के भीतर 0xCA पते में सेट किया जाना चाहिए। यह तब तक किया जाना चाहिए जब तक कि NVM में नया I2C स्लेव एड्रेस पेज नहीं लिखा गया हो।

चरण 5: इरेटा चर्चा

इरेटा चर्चा
इरेटा चर्चा

"पेज इरेज़ बाइट" (पता: 0xE3) पर लिखते समय, SLG46824/6 I2C कमांड के "डेटा" भाग के बाद एक गैर-I2C अनुरूप ACK उत्पन्न करता है। I2C मास्टर के कार्यान्वयन के आधार पर इस व्यवहार की व्याख्या NACK के रूप में की जा सकती है।

इस व्यवहार के लिए समायोजित करने के लिए, हमने चित्र 11 में दिखाए गए कोड पर टिप्पणी करके Arduino प्रोग्रामर को संशोधित किया। कोड का यह खंड इरेज़शिप () फ़ंक्शन में प्रत्येक I2C कमांड के अंत में I2C ACK के लिए जाँच करता है। इस फ़ंक्शन का उपयोग NVM और EEPROM पृष्ठों को मिटाने के लिए किया जाता है। चूंकि कोड का यह खंड फॉर लूप में स्थित है, इसलिए "रिटर्न -1;" लाइन एमसीयू को समय से पहले फ़ंक्शन से बाहर निकलने का कारण बनती है।

NACK की उपस्थिति के बावजूद, NVM और EEPROM इरेज़ फ़ंक्शन ठीक से निष्पादित होंगे। इस व्यवहार की विस्तृत व्याख्या के लिए, कृपया डायलॉग की वेबसाइट पर SLG46824/6 इरेटा दस्तावेज़ (संशोधन XC) में "समस्या 2: NVM और EEPROM पृष्ठ मिटा बाइट के लिए गैर-I2C अनुपालन एसीके व्यवहार" का संदर्भ लें।

निष्कर्ष

इस निर्देश में हम कस्टम NVM और EEPROM स्ट्रिंग्स को GreenPAK IC पर अपलोड करने के लिए प्रदान किए गए Arduino प्रोग्रामर का उपयोग करने की प्रक्रिया का वर्णन करते हैं। Arduino Sketch में कोड पर पूरी तरह से टिप्पणी की गई है, लेकिन यदि आपके पास स्केच के संबंध में कोई प्रश्न हैं, तो कृपया हमारे किसी फील्ड एप्लिकेशन इंजीनियर से संपर्क करें या अपना प्रश्न हमारे फोरम पर पोस्ट करें। एमटीपी प्रोग्रामिंग रजिस्टरों और प्रक्रियाओं के बारे में अधिक गहन जानकारी के लिए, कृपया डायलॉग की इन-सिस्टम प्रोग्रामिंग गाइड देखें।

सिफारिश की: