فهرست مطالب:

مثال برنامه نویسی MTP Arduino: 5 مرحله
مثال برنامه نویسی MTP Arduino: 5 مرحله

تصویری: مثال برنامه نویسی MTP Arduino: 5 مرحله

تصویری: مثال برنامه نویسی MTP Arduino: 5 مرحله
تصویری: شروع به کار زامارین اندروید و یک مثال 2024, جولای
Anonim
مثال برنامه نویسی MTP Arduino
مثال برنامه نویسی MTP Arduino

در این دستورالعمل ، ما نحوه استفاده از طرح برنامه نویسی SLG46824/6 Arduino را برای برنامه ریزی یک دستگاه Dialog SLG46824/6 GreenPAK ™ Multiple Time Programmable (MTP) نشان می دهیم.

اکثر دستگاههای GreenPAK یکبار برنامه پذیر (OTP) هستند ، به این معنی که وقتی بانک حافظه غیرفرار (NVM) آنها نوشته شود ، نمی توان آن را رونویسی کرد. GreenPAK هایی با ویژگی MTP ، مانند SLG46824 و SLG46826 ، دارای نوع متفاوتی از بانک حافظه NVM هستند که می توان بیش از یک بار برنامه ریزی کرد.

ما یک طرح آردوینو نوشته ایم که به کاربر اجازه می دهد MTP GreenPAK را با چند دستور مانیتور سریال ساده برنامه ریزی کند. در این دستورالعمل از SLG46826 به عنوان GreenPAK خود با MTP استفاده می کنیم.

ما کد نمونه ای را برای Arduino Uno با استفاده از یک پلت فرم منبع باز بر اساس C/C ++ ارائه می دهیم. طراحان باید تکنیک های مورد استفاده در کد آردوینو را برای پلتفرم خاص خود برون یابی کنند.

برای اطلاعات خاص در مورد مشخصات سیگنال I2C ، آدرس دهی I2C و فضای حافظه ، لطفاً به راهنمای برنامه نویسی درون سیستم GreenPAK که در صفحه محصول SLG46826 ارائه شده است ، مراجعه کنید. این دستورالعمل پیاده سازی ساده ای از این راهنمای برنامه نویسی را ارائه می دهد.

در زیر مراحل مورد نیاز برای درک نحوه برنامه ریزی تراشه GreenPAK را شرح دادیم. با این حال ، اگر فقط می خواهید نتیجه برنامه نویسی را دریافت کنید ، نرم افزار GreenPAK را بارگیری کنید تا فایل طراحی GreenPAK را که قبلاً تکمیل شده است مشاهده کنید. کیت توسعه GreenPAK را به رایانه خود وصل کرده و برای ایجاد IC سفارشی ، برنامه را فشار دهید.

مرحله 1: اتصالات Arduino-GreenPAK

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

برای برنامه ریزی NVM SLG46826 GreenPAK با طرح آردوینو ، ابتدا باید چهار پین Arduino Uno را به GreenPAK خود متصل کنیم. می توانید این پین ها را مستقیماً به آداپتور سوکت GreenPAK یا به یک تخته شکست با GreenPAK وصل کنید.

لطفاً توجه داشته باشید که مقاومت های کشش I2C خارجی در شکل 1 نشان داده نشده است. لطفاً یک مقاومت کششی 4.7 کیلووات از SCL و SDA را به خروجی 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.3v) و در حالی که پین های زرد در سمت راست به VDD2 (1.8v) گره خورده است.

برای خروج اطلاعات از این طرح ، باید File → Export → Export NVM را انتخاب کنید ، همانطور که در شکل 3 نشان داده شده است.

سپس باید Intel HEX Files (*.hex) را به عنوان نوع فایل انتخاب کرده و فایل را ذخیره کنید.

اکنون ، باید فایل.hex را با ویرایشگر متن (مانند Notepad ++) باز کنید. برای کسب اطلاعات بیشتر در مورد قالب و نحو فایل HEX اینتل ، صفحه ویکی پدیا آن را بررسی کنید. برای این برنامه ما فقط به بخش داده های پرونده علاقه مند هستیم که در شکل 5 نشان داده شده است.

256 بایت داده های پیکربندی NVM را که در فایل HEX قرار دارد برجسته و کپی کنید. هر سطری که ما در حال کپی کردن هستیم 32 نویسه دارد که برابر با 16 بایت است.

اطلاعات را در قسمت برجسته nvmString در طرح آردوینو همانطور که در شکل 6 نشان داده شده است بچسبانید. اگر از میکروکنترلر غیر آردوینو استفاده می کنید ، می توانید یک تابع برای تجزیه nvmData ذخیره شده در فایل GreenPAK. GP6 بنویسید. (اگر یک فایل GreenPAK را با ویرایشگر متن باز کنید ، می بینید که ما اطلاعات پروژه را در قالب XML با سهولت دسترسی ذخیره می کنیم.)

برای تنظیم داده های EEPROM برای طرح GreenPAK خود ، بلوک EEPROM را از پنل اجزا انتخاب کنید ، پنل ویژگی های آن را باز کرده و روی "تنظیم داده" کلیک کنید.

اکنون می توانید هر بایت را در EEPROM به صورت جداگانه با رابط کاربری گرافیکی ما ویرایش کنید.

وقتی داده های EEPROM شما تنظیم شد ، می توانید آنها را با استفاده از همان روشی که قبلاً برای صادر کردن داده های NVM توضیح داده شده ، به یک فایل HEX صادر کنید. این 256 بایت داده EEPROM را در قسمت eepromString در طرح آردوینو وارد کنید.

برای هر طراحی سفارشی ، مهم است که تنظیمات حفاظت را در برگه "امنیت" تنظیمات پروژه بررسی کنید. این برگه بیت های حفاظتی را برای ثبت های پیکربندی ماتریس ، NVM و EEPROM پیکربندی می کند. در پیکربندی های خاص ، بارگذاری دنباله NVM می تواند SLG46824/6 را به پیکربندی فعلی خود قفل کرده و عملکرد MTP تراشه را حذف کند.

مرحله 3: از Arduino Sketch استفاده کنید

از Arduino Sketch استفاده کنید
از Arduino Sketch استفاده کنید

طرح را در آردوینو خود بارگذاری کرده و مانیتور سریال را با نرخ باتری 115200 باز کنید. اکنون می توانید از دستورات MENU طرح برای انجام چندین دستور استفاده کنید:

● خواندن - داده های NVM دستگاه یا داده های EEPROM را با استفاده از آدرس برده مشخص شده می خواند

rase Erase - داده های NVM یا EEPROM دستگاه را با استفاده از آدرس برده مشخص شده پاک می کند

● نوشتن - داده های NVM دستگاه یا داده های EEPROM را با استفاده از آدرس برده مشخص شده پاک می کند و سپس می نویسد. این دستور داده های ذخیره شده در آرایه های nvmString یا eepromString را می نویسد.

ing Ping - لیستی از آدرس های برده دستگاه که به گذرگاه I2C متصل هستند را برمی گرداند

نتایج این دستورات روی کنسول سریال مانیتور چاپ می شود.

مرحله 4: نکات برنامه نویسی و بهترین شیوه ها

در طول پشتیبانی از SLG46824/6 ، ما چند نکته برنامه نویسی را برای جلوگیری از مشکلات رایج مرتبط با پاک کردن و نوشتن در آدرس آدرس NVM مستند کرده ایم. زیر بخشهای زیر این موضوع را با جزئیات بیشتری بیان می کند.

1. اجرای دقیق صفحه NVM 16 بایت:

هنگام نوشتن داده ها در NVM SLG46824/6 ، از سه تکنیک اجتناب کنید:

● Page با کمتر از 16 بایت می نویسد

● Page با بیش از 16 بایت می نویسد

● صفحه می نویسد که در اولین ثبت در یک صفحه شروع نمی شود (IE: 0x10 ، 0x20 و غیره)

در صورت استفاده از هر یک از تکنیک های فوق ، رابط MTP نوشتن I2C را نادیده می گیرد تا از بارگذاری NVM با اطلاعات نادرست جلوگیری شود. توصیه می کنیم پس از نوشتن ، برای تأیید انتقال صحیح داده ها ، خواندن I2C از فضای آدرس NVM را انجام دهید.

2. انتقال داده های NVM به ثبت کننده های پیکربندی ماتریس

وقتی NVM نوشته می شود ، ثبت های پیکربندی ماتریس به طور خودکار با داده های NVM نوشته شده مجدداً بارگیری نمی شوند. انتقال باید به صورت دستی با دوچرخه سواری PAK VDD یا با ایجاد تنظیم مجدد نرم با استفاده از I2C آغاز شود. با تنظیم ثبات در آدرس 0xC8 ، دستگاه توالی Power-On Reset (POR) را دوباره فعال می کند و داده های ثبت شده را از NVM در رجیسترها بارگذاری می کند.

3. بازنشانی آدرس I2C پس از پاک کردن NVM:

هنگامی که NVM پاک می شود ، آدرس NVM حاوی آدرس برده I2C روی 0000 تنظیم می شود. پس از پاک شدن ، تراشه آدرس برده فعلی خود را در رجیسترهای پیکربندی حفظ می کند تا زمانی که دستگاه همانطور که در بالا توضیح داده شد ریست شود. هنگامی که تراشه تنظیم مجدد شد ، آدرس برده I2C باید در آدرس 0xCA در رجیسترهای پیکربندی هر بار که GreenPAK تغذیه می شود یا تنظیم مجدد می شود تنظیم شود. این کار باید انجام شود تا صفحه آدرس برده I2C جدید در NVM نوشته شود.

مرحله 5: بحث Errata

بحث Errata
بحث Errata

SLG46824/6 هنگام نوشتن به "Page Evert Byte" (آدرس: 0xE3) ، پس از بخش "Data" فرمان I2C ، ACK سازگار با I2C تولید می کند. بسته به اجرای استاد I2C ، این رفتار ممکن است به عنوان NACK تفسیر شود.

برای تطبیق با این رفتار ، برنامه نویس آردوینو را با اظهارنظر در مورد کد نشان داده شده در شکل 11 تغییر دادیم. این بخش از کد ، یک ACK I2C را در پایان هر فرمان I2C در تابع eraseChip () بررسی می کند. این تابع برای پاک کردن صفحات NVM و EEPROM استفاده می شود. از آنجا که این بخش از کد در یک حلقه For قرار دارد ، "return -1؛" خط باعث می شود که MCU زودتر از عملکرد خارج شود.

علیرغم وجود NACK ، عملکردهای NVM و EEPROM به درستی اجرا می شوند. برای توضیح دقیق این رفتار ، لطفاً "شماره 2: رفتار ACK سازگار با I2C برای NVM و ETEROM Page Eye Byte" در سند خطای SLG46824/6 (Revision XC) در وب سایت Dialog مراجعه کنید.

نتیجه

در این دستورالعمل ما روند استفاده از برنامه نویس Arduino ارائه شده برای بارگذاری رشته های سفارشی NVM و EEPROM در IC GreenPAK را شرح می دهیم. کد موجود در طرح آردوینو کاملاً توضیح داده شده است ، اما اگر سوالی در مورد طرح دارید ، لطفاً با یکی از مهندسان برنامه کاربردی زمینه ما تماس بگیرید یا س yourال خود را در انجمن ما ارسال کنید. برای کسب اطلاعات بیشتر در مورد ثبت و رویه های برنامه نویسی MTP ، لطفاً به راهنمای برنامه نویسی درون سیستم Dialog مراجعه کنید.

توصیه شده: