جدول المحتويات:

مثال على برمجة MTP Arduino: 5 خطوات
مثال على برمجة MTP Arduino: 5 خطوات

فيديو: مثال على برمجة MTP Arduino: 5 خطوات

فيديو: مثال على برمجة MTP Arduino: 5 خطوات
فيديو: CoDeSys Object Oriented Programming in PLC (OOPS) Part 1 2024, يوليو
Anonim
مثال على برمجة MTP Arduino
مثال على برمجة MTP Arduino

في Instructable ، نعرض كيفية استخدام رسم برمجة SLG46824 / 6 Arduino لبرمجة جهاز Dialog SLG46824 / 6 GreenPAK ™ قابل للبرمجة متعدد الأوقات (MTP).

معظم أجهزة GreenPAK قابلة للبرمجة لمرة واحدة (OTP) ، مما يعني أنه بمجرد كتابة بنك الذاكرة غير المتطاير (NVM) ، لا يمكن الكتابة فوقه. تمتلك GreenPAKs المزودة بميزة MTP ، مثل SLG46824 و SLG46826 ، نوعًا مختلفًا من بنوك ذاكرة NVM التي يمكن برمجتها أكثر من مرة.

لقد كتبنا رسم تخطيطي من Arduino يسمح للمستخدم ببرمجة MTP GreenPAK باستخدام بعض أوامر الشاشة التسلسلية البسيطة. في Instructable ، نستخدم SLG46826 باعتباره GreenPAK الخاص بنا مع MTP.

نحن نقدم نموذج التعليمات البرمجية لـ Arduino Uno باستخدام منصة مفتوحة المصدر تعتمد على C / C ++. يجب على المصممين استقراء التقنيات المستخدمة في كود Arduino لمنصتهم الخاصة.

للحصول على معلومات محددة بخصوص مواصفات إشارة I2C وعنونة I2C ومساحات الذاكرة ، يرجى الرجوع إلى دليل البرمجة داخل النظام GreenPAK المتوفر في صفحة منتج SLG46826. يوفر Instructable هذا تنفيذًا بسيطًا لدليل البرمجة هذا.

فيما يلي وصفنا الخطوات اللازمة لفهم كيفية برمجة شريحة GreenPAK. ومع ذلك ، إذا كنت ترغب فقط في الحصول على نتيجة البرمجة ، فقم بتنزيل برنامج GreenPAK لعرض ملف تصميم GreenPAK المكتمل بالفعل. قم بتوصيل GreenPAK Development Kit بجهاز الكمبيوتر الخاص بك واضغط على البرنامج لإنشاء IC المخصص.

الخطوة 1: اتصالات Arduino-GreenPAK

اتصالات Arduino-GreenPAK
اتصالات Arduino-GreenPAK
اتصالات Arduino-GreenPAK
اتصالات Arduino-GreenPAK

لبرمجة NVM في SLG46826 GreenPAK مع رسم Arduino الخاص بنا ، سنحتاج أولاً إلى توصيل أربعة دبابيس Arduino Uno بـ GreenPAK. يمكنك توصيل هذه المسامير مباشرة بمحول GreenPAK Socket أو بلوحة اندلاع مع GreenPAK ملحومًا لأسفل.

يرجى ملاحظة أن مقاومات السحب الخارجية I2C لا تظهر في الشكل 1. يرجى توصيل المقاوم سحب 4.7 كيلو أوم من كل من SCL و SDA بمخرج Arduino 3.3 فولت.

الخطوة 2: تصدير بيانات GreenPAK NVM من ملف تصميم GreenPAK

تصدير بيانات GreenPAK NVM من ملف تصميم GreenPAK
تصدير بيانات GreenPAK NVM من ملف تصميم GreenPAK
تصدير بيانات GreenPAK NVM من ملف تصميم GreenPAK
تصدير بيانات GreenPAK NVM من ملف تصميم GreenPAK
تصدير بيانات GreenPAK NVM من ملف تصميم GreenPAK
تصدير بيانات GreenPAK NVM من ملف تصميم GreenPAK

سنقوم بتجميع تصميم GreenPAK بسيط للغاية لتوضيح كيفية تصدير بيانات NVM. التصميم أدناه عبارة عن ناقل حركة بسيط حيث يتم ربط المسامير الزرقاء الموجودة على اليسار بـ VDD (3.3 فولت) ، بينما يتم ربط المسامير الصفراء الموجودة على اليمين بـ VDD2 (1.8 فولت).

لتصدير المعلومات من هذا التصميم ، تحتاج إلى تحديد ملف ← تصدير ← تصدير NVM ، كما هو موضح في الشكل 3.

ستحتاج بعد ذلك إلى تحديد ملفات Intel HEX (*.hex) كنوع الملف وحفظ الملف.

الآن ، ستحتاج إلى فتح ملف.hex باستخدام محرر نصوص (مثل Notepad ++). لمعرفة المزيد حول صيغة ملف HEX وتنسيقه من Intel ، تحقق من صفحة Wikipedia الخاصة به. بالنسبة لهذا التطبيق ، نحن مهتمون فقط بجزء البيانات من الملف كما هو موضح في الشكل 5.

قم بتمييز ونسخ 256 بايت من بيانات تكوين NVM الموجودة داخل ملف HEX. يبلغ طول كل سطر نقوم بنسخه 32 حرفًا ، أي ما يعادل 16 بايت.

الصق المعلومات في قسم nvmString المميز في مخطط Arduino كما هو موضح في الشكل 6. إذا كنت تستخدم متحكمًا غير Arduino ، فيمكنك كتابة دالة لتحليل nvmData المحفوظة في ملف GreenPAK. GP6. (إذا فتحت ملف GreenPAK باستخدام محرر نصوص ، فسترى أننا نقوم بتخزين معلومات المشروع بتنسيق XML يسهل الوصول إليه.)

لتعيين بيانات EEPROM لتصميم GreenPAK الخاص بك ، حدد كتلة EEPROM من لوحة المكونات ، وافتح لوحة الخصائص الخاصة بها ، وانقر فوق "تعيين البيانات".

الآن يمكنك تحرير كل بايت في EEPROM بشكل فردي باستخدام واجهة المستخدم الرسومية الخاصة بنا.

بمجرد تعيين بيانات EEPROM ، يمكنك تصديرها إلى ملف HEX باستخدام نفس الطريقة الموضحة مسبقًا لتصدير بيانات NVM. أدخل 256 بايت من بيانات EEPROM في قسم eepromString في مخطط Arduino.

لكل تصميم مخصص ، من المهم التحقق من إعدادات الحماية ضمن علامة التبويب "الأمان" في إعدادات المشروع. تقوم علامة التبويب هذه بتكوين بتات الحماية لسجلات تكوين المصفوفة و NVM و EEPROM. في ظل تكوينات معينة ، يمكن أن يؤدي تحميل تسلسل NVM إلى قفل SLG46824 / 6 على تكوينه الحالي وإزالة وظيفة MTP الخاصة بالشريحة.

الخطوة 3: استخدم Arduino Sketch

استخدم Arduino Sketch
استخدم Arduino Sketch

قم بتحميل المخطط على Arduino وافتح الشاشة التسلسلية بمعدل باود 115200. يمكنك الآن استخدام أوامر MENU الخاصة بالرسم لتنفيذ عدة أوامر:

● القراءة - يقرأ إما بيانات NVM للجهاز أو بيانات EEPROM باستخدام عنوان الرقيق المحدد

● محو - يمسح إما بيانات NVM للجهاز أو بيانات EEPROM باستخدام عنوان الرقيق المحدد

● الكتابة - يمحو ثم يكتب إما بيانات NVM للجهاز أو بيانات EEPROM باستخدام عنوان الرقيق المحدد. يقوم هذا الأمر بكتابة البيانات المحفوظة في مصفوفات nvmString أو eepromString.

● Ping - يعرض قائمة بعناوين الأجهزة الفرعية المتصلة بناقل I2C

ستتم طباعة نتائج هذه الأوامر على وحدة تحكم الشاشة التسلسلية.

الخطوة 4: نصائح البرمجة وأفضل الممارسات

خلال فترة دعم SLG46824 / 6 ، قمنا بتوثيق بعض نصائح البرمجة للمساعدة في تجنب المزالق الشائعة المرتبطة بالمسح والكتابة في مساحة عنوان NVM. توضح الأقسام الفرعية التالية هذا الموضوع بمزيد من التفصيل.

1. تنفيذ عمليات كتابة صفحات NVM بدقة 16 بايت:

عند كتابة البيانات إلى NVM SLG46824 / 6 ، هناك ثلاث تقنيات يجب تجنبها:

● الصفحة يكتب بأقل من 16 بايت

● الصفحة يكتب بأكثر من 16 بايت

● كتابة الصفحة التي لا تبدأ عند التسجيل الأول داخل الصفحة (IE: 0x10 ، 0x20 ، إلخ.)

في حالة استخدام أي من الأساليب المذكورة أعلاه ، ستتجاهل واجهة MTP كتابة I2C لتجنب تحميل NVM بمعلومات غير صحيحة. نوصي بإجراء قراءة I2C لمساحة عنوان NVM بعد الكتابة للتحقق من نقل البيانات بشكل صحيح.

2. نقل بيانات NVM إلى سجلات تكوين المصفوفة

عند كتابة NVM ، لا يتم إعادة تحميل سجلات تكوين المصفوفة تلقائيًا ببيانات NVM المكتوبة حديثًا. يجب بدء النقل يدويًا عن طريق تدوير PAK VDD أو عن طريق إنشاء إعادة ضبط بسيطة باستخدام I2C. من خلال ضبط السجل في العنوان 0xC8 ، يعيد الجهاز تمكين تسلسل إعادة تشغيل الطاقة (POR) ويعيد تحميل بيانات التسجيل من NVM إلى السجلات.

3. إعادة تعيين عنوان I2C بعد مسح NVM:

عندما يتم مسح NVM ، سيتم تعيين عنوان NVM الذي يحتوي على عنوان I2C التابع إلى 0000. بعد المسح ، ستحتفظ الشريحة بعنوانها الفرعي الحالي ضمن سجلات التكوين حتى تتم إعادة تعيين الجهاز كما هو موضح أعلاه. بمجرد إعادة ضبط الشريحة ، يجب تعيين عنوان I2C التابع في العنوان 0xCA ضمن سجلات التكوين في كل مرة يتم فيها إعادة تدوير GreenPAK للطاقة أو إعادة تعيينها. يجب أن يتم ذلك حتى تتم كتابة صفحة عنوان الرقيق I2C الجديدة في NVM.

الخطوة 5: مناقشة خطأ

مناقشة خطأ
مناقشة خطأ

عند الكتابة إلى "Page Erase Byte" (العنوان: 0xE3) ، ينتج SLG46824 / 6 ACK غير متوافق مع I2C بعد جزء "البيانات" من الأمر I2C. يمكن تفسير هذا السلوك على أنه NACK اعتمادًا على تنفيذ سيد I2C.

لاستيعاب هذا السلوك ، قمنا بتعديل مبرمج Arduino عن طريق التعليق على الكود الموضح في الشكل 11. يتحقق هذا القسم من الكود من I2C ACK في نهاية كل أمر I2C في وظيفة eraseChip (). تُستخدم هذه الوظيفة لمسح صفحات NVM و EEPROM. نظرًا لأن هذا القسم من الكود يقع في حلقة For ، فإن "إرجاع -1 ؛" يؤدي الخط إلى إنهاء MCU للوظيفة قبل الأوان.

على الرغم من وجود NACK ، فإن وظائف المسح NVM و EEPROM ستعمل بشكل صحيح. للحصول على شرح مفصل لهذا السلوك ، يرجى الرجوع إلى "المشكلة 2: سلوك ACK غير المتوافق مع I2C لـ NVM و EEPROM Page Erase Byte" في مستند الخطأ SLG46824 / 6 (مراجعة XC) على موقع Dialog على الويب.

استنتاج

في Instructable ، نصف عملية استخدام مبرمج Arduino المقدم لتحميل سلاسل NVM و EEPROM المخصصة إلى GreenPAK IC. تم التعليق بدقة على الكود الموجود في Arduino Sketch ، ولكن إذا كانت لديك أي أسئلة بخصوص الرسم ، فيرجى الاتصال بأحد مهندسي التطبيق الميدانيين أو نشر سؤالك على منتدانا. لمزيد من المعلومات المتعمقة بشأن سجلات وإجراءات برمجة MTP ، يرجى الرجوع إلى دليل البرمجة داخل النظام الخاص بـ Dialog.

موصى به: