آموزش راه اندازی کارت SD توسط EasyMCU

آموزش راه اندازی کارت SD توسط EasyMCU

آموزش راه اندازی کارت SD توسط EasyMCU: اگر پروژه ای دارید که در ارتباط با صوت، ویدئو، گرافیک، ثبت اطلاعات (Data logging) و غیره … می باشد، متوجه خواهید شد که استفاده از یک حافظه جانبی امری ضروری است. اکثر میکروکنترلرها محدودیت های زیادی در ایجاد حافظه داخلی دارند.

اگر فعالیت شما در هر یک از زمینه های لاگ کردن اطلاعات، گرافیک و یا صوت می باشد، به حافظه ذخیره سازی مگابایتی، حداقل در حدود 32MB احتیاج پیدا خواهید کرد. برای رسیدن به چنین حافظه ای قصد استفاده از حافظه هایی مشابه حافظه های مورد استفاده در دوربین و mp3 player را داریم (Flash Card)! که به کارت SD یا microSD  معروف هستند. این حافظه ها شامل فضاهای گیگابایتی هستند که سایز فیزکی آنها از یک سکه کوچک تر هست. همینطور به وفور در هر فروشگاه الکترونیکی موجود و دردسترس هستند. بنابراین به راحتی حجم مورد نیاز خود را می توانید تامین کنید. اکثر کامپیوتر ها دارای SD/microSD reader هستند، بنابراین می توانید اطلاعاتی را که از GPS یا هر ماژول دیگری لاگ گرفته اید به کامپیوتر انتقال دهید و در برنامه گرافیکی اطلاعات را بررسی کنید.


دقت کنید!

در زمانی که در حال تعامل با کارت SD هستید به نکات زیر توجه کنید.

اول اینکه تغذیه مورد نیاز 3.3V تمیز می باشد و از آنجایی که جریان مورد نیاز این کارت ها بسته به نوع می تواند قابل توجه باشد ، حتما از یک تغذیه ی 3.3V مناسب استفاده کنید.

مورد دوم اینکه برای ارتباط با کارت باید از منطق 3.3V استفاده کنید. کارت های جدید با لبه تریگ می شوند و به این مفهوم است که نیاز به موج مربعی بسیار تمیز دارند. اجزایی از جمله تقسیم مقاومتی و سیم های بلند اثر بسیار بدی در سرعت انتقال اطلاعات دارند، بنابراین تا جای ممکن مسیر سیم ها را کوتاه در نظر بگیرید و از تقسیم مقاومتی برای خطوط لاجیک اجتناب کنید. پیشنهاد جایگزین، استفاده از level shifter هایی مانند چیپ های HEF4050 ، 74LVX245، 74AHC125 می باشد.

مورد سوم، برای ارتباط با کارت SD دو راه وجود دارد، مود SPI و مود SDIO . مود SDIO سریع تر است اما پیچیدگی بیشتری دارد و تا جایی که می توان گفت احتیاج به اطلاعاتی دارد که فاش نشده است. به همین دلیل با مود SDIO هرگز درگیر نمی شویم. در عوض هر کارت SD  یک مود SPI با سرعت کمتر دارد که برای هر میکروکنترلری استفاده از این مود ساده است. مود SPI تنها نیاز به 4 پایه ( در ادامه با جزئیات بیشتر بررسی شان می کنیم ) دارد بنابراین مانند اجزائی که اینترفیس موازی دارند و احتیاج به پایه های زیاد دارند نیست.

کارت های SD به دو فرم معروف – micro SD و SD ارائه می شوند. اینترفیس، کدها، ساختارها و غیره … همگی مشابه هستند. تنها تفاوت در سایز فیزیکی آن هاست. Micro SD از نظر سایز فیزیکی بسیار بسیار کوچکتر است.

مورد چهارم، کارت های SD ” خام ” هستند. آنها فقط سکتورهایی در چیپ فلش هستند، ساختار ویژه ای وجود ندارد که شما را مجبور به استفاده کند. به این مفهوم که شما می توانید کارت SD را فرمت کنید تا یک فایل سیستم لینوکس ، FAT (DOC) فایل سیستم یا یک فایل سیستم Mac باشد. همینطور می تونید کلا از فایل سیستمی استفاده نکنید! گرچه 99% کامپیوترها، دوربین ها، MP3 Player ها، GPS لاگرها، و غیره … نیاز به فایل سیستم FAT16 یا FAT32 دارند.

 

فرمت کردن …

کارت SD به صورت “خام” قابل استفاده است. فرمت کردن کارت به یک نوع فایل سیستم خیلی راحت است. برای استفاده از کتابخانه ی SD ، کارت باید با فرمت FAT16 یا FAT32 فرمت شود.

دقت کنید، اگر از کارت هایی در حد مگابایت استفاده می کنید، احتمالا با FAT12 فرمت شده اند که این فرمت در کتابخانه SD مورد بحث قابل استفاده نیست. برای استفاده از کتابخانه مجبور هستید فرمت را تغییر دهید. در واقع فرمت کردن کارت در ابتدای استفاده ایده خوبی است، حتی کارتی که تازه تهیه شده. دقت کنید که فرمت کردن کارت اطلاعات موجود روی آن را حذف می کند، پس قبل از فرمت کردن اطلاعات مورد نیاز را بردارید.

 

پیشنهاد می کنیم برای فرمت کردن کارت های SD از ابزار فرمت کردن رسمی SD Card استفاده کنید، چرا که مشکلات ناشی از فرمت بد را حل می کند.

برای دانلود روی اینجا کلیک کنید.

آموزش راه اندازی کارت SD توسط EasyMCU

 

اتصالات و سیم بندی

 

 

کتابخانه ی SD

کتابخانه ای به نام SD برای آردوینو توسط (William G) نوشته شد، این کتابخانه برای  EasyMCU پورت شده و همینطور قدری بهینه سازی روی آن صورت گرفته که باعث کارایی بهتر کتابخانه در پلتفرم EasyMCU شده است.

این کتابخانه همراه نرم افزار EasyMCU دانلودی وجود دارد و نیازی به دانلود ندارد. کافیست در تب Core II تیک مربوط به SD را فعال کنید و فایل های پروژه را Generate ( تولید ) کنید.

 

اگر برای ایجاد اولیه پروژه مشکل دارید قسمت شروع کار با Easy MCU را ببینید.

 

 

کلاس SD

 

پیکربندی کتابخانه SD و کارت SD

متود اول ، به صورت پیشفرض پایه ی P22 را به عنوان ChipSelect انتخاب می کند و از واحد SPI 1 استفاده می کند. جهت تغییر پایه ی Cs و واحد SPI از متود دوم می توان استفاده کرد. دقت شود که باید از واحد SPI سخت افزاری استفاده شود.

 

وجود/عدم وجود دایرکتوری یا فایل خاص در کارت SD

 

ایجاد دایرکتوری جدید (تکی/تو در تو) در کارت SD

 

باز کردن یک فایل در کارت SD

نام فایل می تواند با استفاده از “اسلش” / شامل دایرکتوری باشد. در قسمت mode می توان FILE_READ و FILE_WRITE به صورت اختیاری استفاده کرد که به ترتیب فایل را به صورت فقط خواندنی و خواندنی و نوشتی باز می کند.

 

حذف یک فایل از کارت SD

نام فایل می تواند شامل دایرکتوری باشد. با استفاده از اسلش ” / ”

 

حذف دایرکتوری از درون کارت SD

دایرکتوری باید خالی باشد!

 

کلاس File

 

چک کردن اطلاعات موجود درون فایل جهت خواندن

 

بستن فایل و اطمینان از ذخیره ی اطلاعات در کارت SD

 

اطمینان از ذخیره اطلاعات نوشته شده فایل در کارت SD

 

دریافت مکان کنونی درون فایل

اشاره گری که قرار است بایت بعدی را در فایل بنویسد و یا بخواند.

 

نوشتن مقادیر در فایل (فایل از قبل باید باز شده باشد)

 

پوییدن مکان جدید در فایل

pos مقداری بین 0 تا سایز فایل

 

گرفتن سایز فایل

 

خواندن یک بایت از فایل

 

نوشتن اطلاعات درون فایل

 

فایل کنونی دایرکتوری است یا خیر

دایرکتوری ها (فولدرها) یک نوع خاص از فایل ها هستند.

 

گزارش فایل یا فولدر بعدی در دایرکتوری

 

برگشت به اولین فایل در دایرکتوری

 

بعد از آشنایی کلی با متودهای کتابخانه SD ، برای درک کاملتر کافیست کاربرد آنها در مثال های آماده را پیگیری کنید. مثال های بیشتر به زودی در Github در دسترس خواهد بود.

جهت مشاهده مثال های بیشتر اینجا کلیک کنید.

 

لطفا هرگونه سوال و … راجع به این مطلب را در انجمن ایزی.ام.سی.یو مطرح نمایید.

 

مثال نمونه 1: