সুচিপত্র:

MTP Arduino প্রোগ্রামিং উদাহরণ: 5 টি ধাপ
MTP Arduino প্রোগ্রামিং উদাহরণ: 5 টি ধাপ

ভিডিও: MTP Arduino প্রোগ্রামিং উদাহরণ: 5 টি ধাপ

ভিডিও: MTP Arduino প্রোগ্রামিং উদাহরণ: 5 টি ধাপ
ভিডিও: 2020 এর জন্য 30 চূড়ান্ত উইন্ডোজ 10 টিপস এবং কৌশল 2024, জুলাই
Anonim
MTP Arduino প্রোগ্রামিং এর উদাহরণ
MTP Arduino প্রোগ্রামিং এর উদাহরণ

এই নির্দেশনায়, আমরা দেখাব কিভাবে SLG46824/6 Arduino প্রোগ্রামিং স্কেচ ব্যবহার করে একটি ডায়ালগ SLG46824/6 GreenPAK ™ Multiple-Time Programmable (MTP) ডিভাইসটি প্রোগ্রাম করতে হয়।

বেশিরভাগ গ্রিনপ্যাক ডিভাইসগুলি ওয়ান-টাইম প্রোগ্রামযোগ্য (ওটিপি), অর্থাত্ একবার তাদের নন-ভোলাটাইল মেমোরি ব্যাংক (এনভিএম) লেখা হয়ে গেলে, এটি ওভাররাইট করা যাবে না। SLG46824 এবং SLG46826 এর মতো এমটিপি বৈশিষ্ট্যযুক্ত গ্রিনপ্যাকগুলির একটি ভিন্ন ধরণের এনভিএম মেমরি ব্যাংক রয়েছে যা একাধিকবার প্রোগ্রাম করা যায়।

আমরা একটি Arduino স্কেচ লিখেছি যা ব্যবহারকারীকে কয়েকটি সহজ সিরিয়াল মনিটর কমান্ড দিয়ে MTP GreenPAK প্রোগ্রাম করার অনুমতি দেয়। এই নির্দেশে আমরা একটি SLG46826 MTP সহ আমাদের GreenPAK হিসাবে ব্যবহার করি।

আমরা C/C ++ এর উপর ভিত্তি করে একটি ওপেন সোর্স প্ল্যাটফর্ম ব্যবহার করে Arduino Uno এর নমুনা কোড প্রদান করি। ডিজাইনারদের তাদের নির্দিষ্ট প্ল্যাটফর্মের জন্য আরডুইনো কোডে ব্যবহৃত কৌশলগুলি এক্সট্রোপলেট করা উচিত।

I2C সিগন্যাল স্পেসিফিকেশন, I2C অ্যাড্রেসিং এবং মেমরি স্পেস সম্পর্কিত নির্দিষ্ট তথ্যের জন্য, দয়া করে SLG46826 প্রোডাক্ট পেজে প্রদত্ত GreenPAK ইন-সিস্টেম প্রোগ্রামিং গাইড উল্লেখ করুন। এই নির্দেশযোগ্য এই প্রোগ্রামিং গাইডের একটি সহজ বাস্তবায়ন প্রদান করে।

গ্রীনপ্যাক চিপ কীভাবে প্রোগ্রাম করা হয়েছে তা বোঝার জন্য প্রয়োজনীয় পদক্ষেপগুলি নীচে আমরা বর্ণনা করেছি। যাইহোক, যদি আপনি শুধু প্রোগ্রামিং এর ফলাফল পেতে চান, ইতিমধ্যে সম্পন্ন GreenPAK ডিজাইন ফাইল দেখতে GreenPAK সফটওয়্যারটি ডাউনলোড করুন। আপনার কম্পিউটারে গ্রিনপ্যাক ডেভেলপমেন্ট কিট লাগান এবং কাস্টম আইসি তৈরি করতে প্রোগ্রাম হিট করুন।

ধাপ 1: Arduino-GreenPAK সংযোগ

Arduino-GreenPAK সংযোগ
Arduino-GreenPAK সংযোগ
Arduino-GreenPAK সংযোগ
Arduino-GreenPAK সংযোগ

আমাদের SLG46826 GreenPAK এর NVM কে আমাদের Arduino স্কেচের সাথে প্রোগ্রাম করার জন্য, প্রথমে আমাদের চারটি Arduino Uno পিনকে আমাদের GreenPAK এর সাথে সংযুক্ত করতে হবে। আপনি এই পিনগুলিকে সরাসরি গ্রিনপ্যাক সকেট অ্যাডাপ্টারের সাথে বা গ্রিনপ্যাক সোল্ডার ডাউন দিয়ে ব্রেকআউট বোর্ডের সাথে সংযুক্ত করতে পারেন।

অনুগ্রহ করে লক্ষ্য করুন যে বাহ্যিক I2C টান আপ প্রতিরোধক চিত্র 1 এ দেখানো হয়নি দয়া করে একটি 4.7 kΩ পুল আপ প্রতিরোধক উভয় এসসিএল এবং এসডিএ থেকে Arduino এর 3.3 V আউটপুটে সংযুক্ত করুন।

ধাপ 2: একটি GreenPAK ডিজাইন ফাইল থেকে GreenPAK NVM ডেটা রপ্তানি করা

একটি GreenPAK ডিজাইন ফাইল থেকে GreenPAK NVM ডেটা রপ্তানি করা হচ্ছে
একটি GreenPAK ডিজাইন ফাইল থেকে GreenPAK NVM ডেটা রপ্তানি করা হচ্ছে
একটি GreenPAK ডিজাইন ফাইল থেকে GreenPAK NVM ডেটা রপ্তানি করা হচ্ছে
একটি GreenPAK ডিজাইন ফাইল থেকে GreenPAK NVM ডেটা রপ্তানি করা হচ্ছে
একটি GreenPAK ডিজাইন ফাইল থেকে GreenPAK NVM ডেটা রপ্তানি করা হচ্ছে
একটি GreenPAK ডিজাইন ফাইল থেকে GreenPAK NVM ডেটা রপ্তানি করা হচ্ছে

NVM ডেটা কিভাবে এক্সপোর্ট করা যায় তা বোঝানোর জন্য আমরা একটি খুব সহজ GreenPAK ডিজাইন একত্রিত করব। নীচের নকশাটি একটি সাধারণ স্তরের শিফটার যেখানে বাম দিকের নীল পিনগুলি VDD (3.3v) এবং ডানদিকে হলুদ পিনগুলি VDD2 (1.8v) এর সাথে বাঁধা।

এই নকশা থেকে তথ্য রপ্তানি করতে, আপনাকে ফাইল → এক্সপোর্ট → এক্সপোর্ট এনভিএম নির্বাচন করতে হবে, যেমন চিত্র 3 এ দেখানো হয়েছে।

তারপরে আপনাকে ফাইল টাইপ হিসাবে ইন্টেল হেক্স ফাইল (*.hex) নির্বাচন করতে হবে এবং ফাইলটি সংরক্ষণ করতে হবে।

এখন, আপনাকে.hex ফাইলটি একটি টেক্সট এডিটর (যেমন নোটপ্যাড ++) দিয়ে খুলতে হবে। ইন্টেলের HEX ফাইল ফরম্যাট এবং সিনট্যাক্স সম্পর্কে আরও জানতে, এর উইকিপিডিয়া পৃষ্ঠা দেখুন। এই অ্যাপ্লিকেশনের জন্য আমরা শুধুমাত্র ফাইলের ডেটা অংশে আগ্রহী যা চিত্র 5 এ দেখানো হয়েছে।

HEX ফাইলের মধ্যে অবস্থিত NVM কনফিগারেশন ডেটার 256 বাইট হাইলাইট এবং কপি করুন। প্রতিটি লাইন যা আমরা অনুলিপি করছি তা 32 অক্ষর দীর্ঘ, যা 16 বাইটের সাথে মিলে যায়।

চিত্র 6-এ দেখানো Arduino স্কেচের হাইলাইট করা nvmString বিভাগে তথ্যটি আটকান (যদি আপনি একটি টেক্সট এডিটর দিয়ে একটি GreenPAK ফাইল খুলেন, আপনি দেখতে পাবেন যে আমরা প্রকল্পের তথ্য সহজেই অ্যাক্সেসযোগ্য XML ফরম্যাটে সংরক্ষণ করি।)

আপনার GreenPAK ডিজাইনের জন্য EEPROM ডেটা সেট করতে, কম্পোনেন্টস প্যানেল থেকে EEPROM ব্লক সিলেক্ট করুন, এর প্রপার্টিজ প্যানেল খুলুন এবং "ডেটা সেট করুন" এ ক্লিক করুন।

এখন আপনি আমাদের GUI ইন্টারফেস দিয়ে EEPROM- এ প্রতিটি বাইট সম্পাদনা করতে পারেন।

একবার আপনার EEPROM ডেটা সেট হয়ে গেলে, আপনি NVM ডেটা রপ্তানির জন্য পূর্বে বর্ণিত একই পদ্ধতি ব্যবহার করে এটি একটি HEX ফাইলে রপ্তানি করতে পারেন। Arduino স্কেচের eepromString বিভাগে এই 256 বাইট EEPROM ডেটা োকান।

প্রতিটি কাস্টম ডিজাইনের জন্য, প্রকল্প সেটিংসের "নিরাপত্তা" ট্যাবের মধ্যে সুরক্ষা সেটিংস পরীক্ষা করা গুরুত্বপূর্ণ। এই ট্যাবটি ম্যাট্রিক্স কনফিগারেশন রেজিস্টার, NVM এবং EEPROM এর জন্য সুরক্ষা বিট কনফিগার করে। কিছু কনফিগারেশনের অধীনে, NVM সিকোয়েন্স আপলোড করা SLG46824/6 কে তার বর্তমান কনফিগারেশনে লক করতে পারে এবং চিপের MTP কার্যকারিতা অপসারণ করতে পারে।

ধাপ 3: Arduino স্কেচ ব্যবহার করুন

Arduino স্কেচ ব্যবহার করুন
Arduino স্কেচ ব্যবহার করুন

আপনার Arduino এ স্কেচ আপলোড করুন এবং 115200 বড রেট সহ সিরিয়াল মনিটর খুলুন। এখন আপনি বিভিন্ন কমান্ড সম্পাদন করতে স্কেচের মেনু প্রম্পট ব্যবহার করতে পারেন:

● পড়ুন - নির্দিষ্ট স্লেভ অ্যাড্রেস ব্যবহার করে ডিভাইসের NVM ডেটা বা EEPROM ডেটা পড়ে

● মুছে দিন - নির্দিষ্ট স্লেভ ঠিকানা ব্যবহার করে ডিভাইসের NVM ডেটা বা EEPROM ডেটা মুছে দেয়

● লিখুন - মুছে ফেলুন এবং তারপর নির্দিষ্ট স্লেভ ঠিকানা ব্যবহার করে ডিভাইসের NVM ডেটা বা EEPROM ডেটা লিখুন। এই কমান্ডটি nvmString বা eepromString অ্যারেতে সংরক্ষিত ডেটা লিখে।

● পিং - I2C বাসের সাথে সংযুক্ত ডিভাইস স্লেভের ঠিকানাগুলির একটি তালিকা প্রদান করে

এই কমান্ডগুলির ফলাফল সিরিয়াল মনিটর কনসোলে মুদ্রিত হবে।

ধাপ 4: প্রোগ্রামিং টিপস এবং সেরা অভ্যাস

SLG46824/6 সমর্থন করার সময়, আমরা কিছু প্রোগ্রামিং টিপস নথিভুক্ত করেছি যাতে এনভিএম অ্যাড্রেস স্পেসে মুছে ফেলা এবং লেখার সাথে সম্পর্কিত সাধারণ সমস্যাগুলি এড়ানো যায়। নিম্নলিখিত উপ -বিভাগগুলি আরও বিস্তারিতভাবে এই বিষয়টির রূপরেখা দেয়।

1. যথাযথ 16-বাইট এনভিএম পৃষ্ঠা লেখার কাজ:

SLG46824/6 এর NVM- এ ডেটা লেখার সময়, এড়ানোর তিনটি কৌশল রয়েছে:

● পৃষ্ঠা 16 বাইটের কম লেখায়

● পেজ 16 বাইটের বেশি লিখে

● পৃষ্ঠা লিখেছে যে একটি পৃষ্ঠার মধ্যে প্রথম রেজিস্টারে শুরু করবেন না (IE: 0x10, 0x20, ইত্যাদি)

যদি উপরের কোন কৌশল ব্যবহার করা হয়, তাহলে MTP ইন্টারফেস ভুল তথ্য সহ NVM লোড করা এড়াতে I2C লেখা উপেক্ষা করবে। আমরা সঠিক ডেটা ট্রান্সফার যাচাই করার জন্য লেখার পর NVM ঠিকানা স্পেসের একটি I2C রিড করার সুপারিশ করি।

2. ম্যাট্রিক্স কনফিগারেশন রেজিস্টারে NVM ডেটা স্থানান্তর করা

যখন NVM লেখা হয়, ম্যাট্রিক্স কনফিগারেশন রেজিস্টারগুলি স্বয়ংক্রিয়ভাবে নতুন লিখিত NVM ডেটা দিয়ে পুনরায় লোড করা হয় না। PAK VDD সাইক্লিং করে অথবা I2C ব্যবহার করে সফট রিসেট তৈরি করে ম্যানুয়ালি ট্রান্সফার শুরু করতে হবে। 0xC8 ঠিকানায় রেজিস্টার সেট করে, ডিভাইসটি পাওয়ার-অন রিসেট (POR) ক্রম পুনরায় সক্ষম করে এবং NVM থেকে রেজিস্টারে ডেটা পুনরায় লোড করে।

3. একটি NVM মুছে ফেলার পরে I2C ঠিকানা পুনরায় সেট করা:

যখন NVM মুছে ফেলা হয়, I2C স্লেভ অ্যাড্রেস সম্বলিত NVM ঠিকানাটি 0000 এ সেট করা হবে। মুছে ফেলার পরে, চিপ কনফিগারেশন রেজিস্টারের মধ্যে তার বর্তমান স্লেভ ঠিকানা বজায় রাখবে যতক্ষণ না ডিভাইসটি উপরে বর্ণিত হয়েছে। একবার চিপ রিসেট হয়ে গেলে, I2C স্লেভ অ্যাড্রেস অবশ্যই 0xCA ঠিকানায় কনফিগারেশন রেজিস্টারের মধ্যে সেট করতে হবে যখনই GreenPAK পাওয়ার-সাইক্লড বা রিসেট হবে। NVM- এ নতুন I2C স্লেভ অ্যাড্রেস পেজ লেখা না হওয়া পর্যন্ত এটি করতে হবে।

ধাপ 5: ত্রুটি -বিচ্যুতি

ত্রুটি -বিচ্যুতি
ত্রুটি -বিচ্যুতি

"পেজ ইরেজ বাইট" (ঠিকানা: 0xE3) -এ লেখার সময়, SLG46824/6 I2C কমান্ডের "ডেটা" অংশের পরে একটি অ- I2C অনুবর্তী ACK তৈরি করে। I2C মাস্টারের প্রয়োগের উপর নির্ভর করে এই আচরণটিকে NACK হিসাবে ব্যাখ্যা করা যেতে পারে।

এই আচরণের জন্য সামঞ্জস্য করার জন্য, আমরা চিত্র 11 এ দেখানো কোডটি মন্তব্য করে Arduino প্রোগ্রামারকে পরিবর্তন করেছি এই ফাংশনটি NVM এবং EEPROM পৃষ্ঠা মুছে ফেলার জন্য ব্যবহৃত হয়। যেহেতু কোডের এই বিভাগটি ফর লুপে অবস্থিত, তাই "রিটার্ন -1;" লাইনের কারণে MCU অকালে ফাংশন থেকে বেরিয়ে আসে।

একটি NACK উপস্থিতি সত্ত্বেও, NVM এবং EEPROM মুছে ফাংশন সঠিকভাবে চালানো হবে। এই আচরণের বিস্তারিত ব্যাখ্যার জন্য, অনুগ্রহ করে ডায়ালগের ওয়েবসাইটে SLG46824/6 এররটা ডকুমেন্টে (রিভিশন এক্সসি) "NVM এবং EEPROM পেজ ইরেজ বাইটের জন্য নন- I2C কমপ্ল্যান্ট ACK আচরণ" উল্লেখ করুন।

উপসংহার

এই নির্দেশে আমরা গ্রীনপ্যাক আইসিতে কাস্টম এনভিএম এবং ইইপ্রোম স্ট্রিং আপলোড করার জন্য প্রদত্ত আরডুইনো প্রোগ্রামার ব্যবহার করার প্রক্রিয়া বর্ণনা করি। আরডুইনো স্কেচের কোডটি পুঙ্খানুপুঙ্খভাবে মন্তব্য করা হয়েছে, তবে যদি স্কেচ সম্পর্কিত আপনার কোন প্রশ্ন থাকে, দয়া করে আমাদের একজন ফিল্ড অ্যাপ্লিকেশন ইঞ্জিনিয়ারের সাথে যোগাযোগ করুন অথবা আপনার প্রশ্ন আমাদের ফোরামে পোস্ট করুন। এমটিপি প্রোগ্রামিং রেজিস্টার এবং পদ্ধতি সম্পর্কিত আরও গভীর তথ্যের জন্য, দয়া করে ডায়ালগের ইন-সিস্টেম প্রোগ্রামিং গাইড দেখুন।

প্রস্তাবিত: