در بخشهای قبلی مفاهیم مورد نیاز برای استفاده از کارت حافظه SD بیان گردید. در این قسمت نحوه راه اندازی و استفاده از آن در میکروکنترلرهای stm32 بیان شده است.
فهرست مطالب
سخت افزار مورد نیاز
میکروکنترلر دارای پورت SDMMC
پروگرمر
RAM reader
نرم افزار مورد نیاز
STM32CubeMX
IAR
نحوه اتصال
در زیر ترتیب پایه های حافظه Micro SD نشان داده شده است.
تنظیمات پروژه در نرم افزار STM32CubeMX
برای تنظیم پورت SDMMC به قسمت SDMMC1 بروید. سپس از قمست Mode گزینه SD 4bits Wide bus را انتخاب کنید. در این پروژه از مد 4 بیتی است. در صورتیکه از مد 1 بیتی استفاده میکنید گزینه SD 1 bit را انتخاب نمایید. در شکل 6 چگونگی تنظیم واحد SDMMC نشان داده شده است.
تنظیمات FATFS
جهت فعال نمودن کتابخانه FATFS ابتدا از قسمت Middleware بر روی گزینه FATFS (شکل 7) کلیک کنید. سپس در قسمت Mode گزینه SD Card (شکل 8) را انتخاب نمایید. در شکل زیر نحوه تنظیم سایر پارامترهای مربوطه نشان داده شده است.
سپس به سربرگ Platform Settings بروید. در این بخش تنظیمات مرتبط با پایه GPIO که برای تشخیص حضور کارت حافظه انجام میشود. همانطور که در شکل نشان داده شده است پایه PC13 برای این منظور در نظر گرفته شده است. لذا در سربرگ Platform Setting قسمت Found Solution بر روی پایه PC13 تنظیم شده است.
در نهایت به سر برگ Project Manager بروید. در قسمتهای Project Name و Project Location به ترتیب نام و مسیر ذخیره برنامه را تعیین کنید. در قسمت Toolchain/ IDE گزینه EWARM را انتخاب نمایید. در نهایت روی گزینه Generate Code کلیک کنید تا کد اولیه برنامه تولید شود.
توسعه نرم افزار
بعد از تولید ایجاد پروژه نوبت به گسترش نرم افزار میرسد. در این نرم افزار ابتدا سخت افزار و درایور FATFS تنظیم میشوند. برای استفاده از کارت حافظه باید ابتدا mount شود. با mount کردن کارت حافظه کلیه فایلها و دایرکتوریهای کارت حافظه در اختیار نرم افزار قرار میگیرد. برای این منظور از تابع f_mount استفاده میشود.
در این مثال آموزشی ابتدا با استفاده از تابع f_open یک فایل به نام example.txt باز میشود. لازم به ذکر است که در صورتیکه فایل مورد نظر در حافظه وجود داشته باشد فایل باز میشود، در غیر اینصورت فایل جدیدی ایجاد میگردد. سپس با استفاده از تابع f_write رشته Hello World در آن نوشته میشود. در نهایت با فراخوانی تابع f_close فایل مورد نظر بسته شده است. این روال دقیقا مشابه کار با فایل در سایر محیطهای دیگر نظیر C++ است. در کد زیر تابع main نشان داده شده است.
لطفا سرس کدی که نوشتین هم بذارین نوع صدا کردن تابع و پیکربندیش مهمه. توضیح که کفایت نمیکنه