STM, STM32, آموزش, معرفی, مقاله

آموزش میکروکنترلر STM32F4 قسمت 14 : سیستم فایل FatFs بر روی کارت SD

آموزش میکروکنترلر STM32F4
در قسمت سیزدهم آموزش میکروکنترلر STM32F4 به مبحث مهم و کاربردی تایمر ها و سرویس وقفه پرداختیم. در این قسمت از آموزش میکروکنترلر STM32F4  به مبحث سیستمِ فایلِ FatFs بر روی کارت SD می‌پردازیم. با سیسوگ همراه باشید.  

سیستم فایل FatFs بر روی کارت SD

سیستم فایل، یعنی روشی که برای ذخیره فایل‌ها روی وسایل ذخیره ساز استفاده می‌شود. از مشهورترین و قدیمی‌ترین این سیستم‌ها، Fat می‌باشد. با استفاده از این سیستم فایل می‌توان فایل‌هایی که روی حافظه ذخیره کردید در دستگاه های دیگر، مانند رایانه شخصی، که از این سیستم فایل پشتیبانی می‌کنند، مشاهده کرد و تغییر داد. معروف‌ترین سیستم فایل ارائه شده برای سیستم‌های میکروکنترلری و تعبیه شده، توسط فردی به نام Chan نوشته شده است (elm-chan.org). این سیستم فایل، سیستم فایل FAT و exFAT برای سیستم‌های تعبیه شده می‌باشد. رایگان و متن باز است و بر اساس C نوشته شده است. در واقع  پشته‌ای نرم‌افزاری است که بین کاربر و سخت‌افزار قرار می‌گیرد تا کاربر از درگیر شدن با سخت‌افزار رها شود.   سیستم فایل FatFs بر روی کارت SD     رابط های این نرم افزار عبارتند از:
  • دسترسی به فایل
    • f_open – بازکردن یا ساختن یک فایل
    • f_close – بستن یک فایل باز
    • f_read – خواندن یک فایل
    • f_write – نوشتن داده
    • f_lseek – حرکت دادن اشاره گر خواندن/نوشتن، گسترش اندازه
    • f_truncate – بریدن اندازه
    • f_sync – تخلیه داده نگهداری شده (cache)
    • f_forward – پیش فرست داده به جریان
    • f_expand – اختصاص یک بلوک هم مرز به فایل
    • f_gets – خواندن یک رشته
    • f_putc – نوشتن یک کاراکتر
    • f_puts – نوشتن یک رشته
    • f_printf – نوشتن یک رشته قالب بندی شده
    • f_tell – گرفتن اشاره گر خواندن/نوشتن کنونی
    • f_eof – آزمودن پایان-فایل
    • f_size – گرفتن اندازه
    • f_error – آزمون یک خطا
 
  • دسترسی پوشه
    • f_opendir – باز کردن پوشه
    • f_closedir – بستن یک پوشه باز
    • f_readdir – خواندن یک پوشه
    • f_findfirST – باز کردن یک پوشه و خواندن اولین موردی که تطیبق می‌کند
    • f_findnext – خواندن مورد بعدی که تطبیق می‌کند
 
  • مدیرت فایل/پوشه
    • f_STat – بررسی وجود فایل یا زیرپوشه
    • f_unlink – حذف یک فایل یا زیرپوشه
    • f_rename – تغییر نام یا جابجا کردن یک فایل یا زیرپوشه
    • f_chmod – تغییر صفات یک فایل یا زیرپوشه
    • f_utime – تغییر مهر زمانی یک فایل یا زیرپوشه
    • f_mkdir – ساختن یک زیرپوشه
    • f_chdir – تغییر پوشه جاری
    • f_chdrive – تغییر درایو جاری
    • f_getcwd – بازیابی درایو یا پوشه جاری
 
  • مدیریت حجم
    • f_mount – ثبت یا حذف ناحیه کاری در حجم
    • f_mkfs – ساختن یک حجم FAT روی درایو منطقی
    • f_fdisk – ساختن درایو منطقی روی درایو فیزیکی
    • f_getfree – گرفتن اندازه کلی و اندازه آزاد روی حجم
    • f_getlabel – گرفتن برچسب حجم
    • f_setlabel – گذاشتن برچسب حجم

رابط کنترل وسیله

این دستورات جز FatFs محسوب نمی‌شود و درباره کار با دستگاه هستند. این دستورات برای دستگاه های مختلف پیاده سازی شده‌اند. همان طور که در شکل دیده می‌شود FatFs با رابطی به آن‌ها دسترسی دارد.   رابط FatFs  
  • disk_STatus – گرفتن وضعیت دستگاه
  • disk_initialize – آغازسازی دستگاه
  • disk_read – خواندن برش (ها)
  • disk_write – نوشتن برش (ها)
  • disk_ioctl – کنترل تابع‌های مرتبط با دستگاه
  • get_fattime – گرفتن زمان جاری
قبل از استفاده از هر فایلی باید ابتدا یک ناحیه کاری (شی سیستم فایل) در درایو منطقی با دستور f_mount  ثبت شود. غیر از f_mkfs و f_fdisk  سایر تابع‌ها بعد از این فرایند آماده کار می‌شوند. عملیات باز کردن تابع باید قبل از جداکردن حافظه یا خاموش کردن دستگاه بسته شود وگرنه فایل خراب خواهد شد. برای باز کردن چند فایل با هم باید به ترتیب زیر عمل کرد. اما باز کردن چندگانه یک فایل با پرچم‌های نوشتن متفاوت ممنوع است. FatFs از باز کردن چندگانه یک فایل حمایت نمی‌کند مگر اینکه در حالت فقط خواندنی باشند. اگر یک فایل چندباره باز شود، تغییر نام یا پاک کردن آن مجاز نیست. تخطی از این دستورها ممکن است به خرابی فایل منجر شود. می توان از گزینه قفل کردن فایل _FS_LOCK استفاده کرد. با یک کردن این گزینه همه حالت های گفته شده بالا که منجر به خطا می‌شوند متوقف می‌شود و با پیغام FR_LOCKED پاسخ داده می‌شود. اگر تعداد فایل های باز از مقدار _FS_LOCK بیشتر باشد هر دستور جدیدی برای باز کردن یا ایجاد فایل جدید با پیام FR_TOO_MANY_OPEN_FILES رد می‌شود.

تعدادی از تابع های پشته FatFs

تابع f_open

یک file object درست می‌کند که برای دسترسی به فایل به کار می رود     که fp اشاره‌گر به فایل و path مسیر به رشته تهی-پایان است که اسم فایل را نشان می دهد. پرچم حالت می‌تواند یکی از مقدارهای جدول زیر باشد.   تابع f_open در پشته   مقدار خروجی این تابع نیز یکی از تعریف های زیر است:     در زیر دو مثال دیده می‌شود:     و این مثال:    

تابع f_write

برای نوشتن داده‌ها روی فایل به کار می‌رود.    

تابع f_lseek

هر بار که تابع با دستور f_open باز می‌شود یا تابع جدیدی ساخته می‌شود اشاره گر نوشتن/خواندن در ساختمان فایل که با میدان fptr نشان داده می‌شود مقدار صفر را دارد و عملیات خواندن/نوشتن از خانه بعد یعنی 1 شروع می‌شود. بنابراین اگر قصد داریم فایلی را به تدریج یا چند مرحله پر کنیم باید خودمان اشاره‌گر را به نقطه مورد نظر تنطیم کنیم. برای این کار می توان از تابع f_lseek استفاده کرد. این تابع اشاره‌گر را در نقطه مورد نظر در فایل برای نوشتن یا خواندن تنظیم می‌کند. برای افزایش طول فایل نیز می‌توان از آن استفاده کرد. ساختار آن به شکل زیر است.     fp اشاره‌گر به فایل است و ofs مقدار دویدگی (آفست) را از ابتدای فایل نشان می‌دهد. مقدار دویدگی یک آدرس مستعار است که می‌تواند واژه دوتایی (32 بیتی) یا چهارتایی (64 بیتی) باشد. اگر فایلی حاوی عبارت hello باشد برای اینکه داده‌ای به انتهای آن اضافه کنیم باید اشاره‌گر را به عدد 5 تنظیم کنیم که با دستور نوشتن بعدی از خانه 6ام به بعد، نوشتن انجام شود. برای گرفتن مقدار این عدد در فایل ها می‌توان از تابع f_size استفاده کرد.

تابع f_readdir

این تابع محتویات یک پوشه را نشان می‌دهد. با هر بار فراخوانی آن اشاره‌گر ساختمان فایل بعدی درون پوشه باز می‌گردد. وقتی به انتهای فهرست فایل‌ها رسید، یک اشاره‌گر تهی بدون خطا باز می‌گرداند و دوباره به فایل اول می رود.     برنامه نمونه:    

مسیر فایل

مسیر فایل در FatFs همانند داس/ویندوز می‌باشد.     نام مورد استفاده قالب 8.3 دارد (sfn) برای استفاده از نام‌های بلند باید _USE_LFN را تنظیم کرد. زیرپوشه‌ها را باید با / یا \ جدا کرد. جدا کننده‌ها ی جفت در نظر گرفته نمی‌شوند. درایو منظقی با یک عدد و یک دو نقطه نشان داده می‌شود برای مثال 2: درایو شماره 2 است. وقتی شماره درایو حذف شود درایو پیش فرض (درایو صفر یا درایو جاری)  در نظر گرفته می‌شود. کاراکترهای \0 و \x1f به عنوان پایان مسیر در نظر گرفته می‌شوند. در حالت LFN ، فاصله‌ها در نظر گرفته می‌شود ولی در حالت عادی، پایان مسیر در نظر گرفته می‌شود. برای مثال مسیر “test path” در حالت عادی “test” در نظر گرفته می‌شود. فاصله‌های انتهای خط و نقطه‌ها در نظر گرفته نمی‌شوند (در هر دو حالت)، در حالت پیش فرض (_FS_RPATH == 0), مفهوم درایو جاری وجود ندارد. همه اشیا در حجم همواره با مسیر کامل از پوشه ریشه توصیف می‌شوند. پوشه های «.» و«..» مجاز نیستند. جدا کننده های ابتدای مسیر در نظر گرفته نمی‌شوند. درایو پیش فرض نیز درایو صفر در نظر گرفته می‌شود. وقتی مسیرهای نسبی فعال شود (_FS_RPATH >= 1), مسیر بیان شده، از پوشه ریشه ادامه پیدا می‌کند، اگر یک جدا کننده اول مسیر موجود باشد وگرنه از پوشه جاری درایو که با f_chdir گذاشته شده است ادامه می‌یابد. نام‌های دارای نقطه هم برای مسیرها مجاز هستند. درایو پیش فرض درایو جاری است که توسط f_chdrive تعیین می‌شود.   مسیر فایل در FatFs   وقتی گزینه _STR_VOLUME_ID مشخص شده باشد می‌توان از رشته‌های از پیش تعیین شده به جای عددها برای شماره درایوها استفاده کرد مثلا “sd:file1.txt”, “ram:swapfile.dat”  

مدیریت حجم

سیستمِ فایل، برای هر کدام از درایوهای منطقی (درایو ها می توانند به شکل فیزیکی متفاوت باشند) به file system object نیاز دارد که با دستور f_mount به FatFs اضافه یا حذف (unregister) می‌شود. این دستور سکتور بوت را می‌خواند و بررسی می‌کند که سکتور Fat با سکتور صفر SFD، پارتیشن ها در قالب FDISK باشد. اگر گزینه مولتی پارتیشن  ( MULTI_PARTITION == 1 )  فعال باشد هر درایو منطقی به یک بخش روی درایو فیزیکی محدود است که در جدول مدیریت پارتیشن ها مشخص شده است. این جدول باید توسط کاربر مشخص شود تا ارتباط بین درایوهای منطقی و پارتیشن ها مشخص شود. برای مثال یک نمونه از این جدول در زیر دیده می‌شود:     در شکل زیر دو حالت دیده می‌شود. شکل سمت راست حالت چندبخشی را نشان می‌دهد. دو درایو فیزیکی صفر و یک موجودند که درایو صفر به سه بخش تقسیم شده است و در مجموع 4 درایو منطقی داریم.   مدیریت حجم در STM32F4   نکات
  • درایو فیزیکی که بیش از یک بخش دارد نباید جداشدنی باشد.
  • تغییر حافظه ها وقتی که یک عملیات سیستمی در حال انجام است مجاز نیست.
  • تنها چهار بخش ابتدایی می توان تعریف کرد. بخش های گسترش یافته نیز مجاز نیستند.
  • ویندوز اجازه چند حجم روی ذخیره ساز های جداشدنی نمی دهد. تنها اولین بخش شناخته خواهد شد.
در شکل زیر این پشته دیده می‌شود.   پشته در STM32F4   اگر سخت‌افزار جانبی پروتکل spi و یا i2c را پشتیبانی کند این کتابخانه به تنهایی کافی است ولی برای کار کردن با برخی از سخت‌افزارهای دیگر نیاز به تابع های میانی است. نمونه این دو در شکل چپ و راست به ترتیب دیده می‌شود.   پشته در STM32F4     در جدول زیر تابع‌های مورد نیاز بنا به کاربردهای خاص دیده می‌شود.   مدیریت حجم در STM32F4   برخی ویژگی‌های این سیستم فایل عبارتند از:
  • تا 10 حجم دیسک قابل استفاده است
  • اندازه حجم دیسک برابر 2 ترابایت با برش های 512بایتی
  • اندازه فایل تا 4 گیگابایت در fat و بی نهایت در exFat
  • اندازه برش ها می تواند 512،1024، 2048 و 4096 باشد.
  بسته به اینکه از کدام ماژول‌های این کتابخانه استفاده کنید می‌توانید با تعریف‌هایی آن‌ها را انتخاب کنید.   مدیریت حجم در STM32F4   همه کدهای FAT نیاز به تابع واسط برای دسترسی به سخت افزار دارند بسته به اینکه از پروتکل spi استفاده شود یا sdio به باس تک بیته یا باس 4 بیته نیاز است. دست کم به سه تابع نیاز دارید. یکی که کارت و کنترلر را آغازسازی کند یکی که یک بلوک را (که معمولا 512 بایت است) به داخل ram بخواند و یکی که یک بلوک را از ram به داخل کارت بنویسد.   در قسمت پانزدهم آموزش میکروکنترلر STM32F4 به مبحث کار کردن با کارت SD در کتابخانه HAL خواهیم پرداخت. با سیسوگ همراه باشید.  

انتشار مطالب با ذکر نام و آدرس وب سایت سیسوگ، بلامانع است.

شما نیز میتوانید یکی از نویسندگان سیسوگ باشید.   همکاری با سیسوگ

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

38 دیدگاه در “آموزش میکروکنترلر STM32F4 قسمت 14 : سیستم فایل FatFs بر روی کارت SD

  1. سانیار گفت:

    سلام وقت بخیر.
    من درایور ال سی دی ft810 تهیه کردم و میخوام با میکروکنترلر stm32f103c8t6 چند عکس نمایش بدم. درایورم از کارت اس دی پشتیبانی میکنه اما کتابخانه خوبی ندارم. میخواستم بدونم برای استفاده از کارت اس دی و نمایش عکسهای ذخیره شده در اون از طریق درایور، باید دقیقا چیکار کنم؟
    ممنونم از راهنمایی شما

    1. زئوس Zeus زئوس Zeus گفت:

      سلام دوست عزیز
      ای کاش سوالتون رو واضح تر پرسیده بودید- چیزی که من فهمیدم اینه که میخواید یه عکس رو از روی حافظه بخونید و روی نمایشگر نمایش بدید.
      برای این کار اول باید دقت کنید که کنترلر تصویر شما چه فرمت هایی رو برای نمایش پشتیبانی میکنه – فکر میکنم این کنترلر شما فایل های jpeg رو پشتیبانی بکنه – البته دقیقش رو باید توی دیتاشیتش ببینید
      کاری که باید بکنید اینه که محتویات فایل رو اونطور که توی دیتاشیت توضیح داده شده برای کنترلر ارسال کنید.

      1. سانیار گفت:

        ممنون از پاسخ شما. ببینید ما میخوایم مستقیم از حافظه درایور عکس رو فراخوانی کنیم و دیگه حافظه میکروکنترلر رو درگیر نکنیم. چطور میتونیم مستقیما به حافظه درایور دسترسی داشته باشیم؟ 1مگابایت حافظه داره.
        کاری که ما میتونیم انجام بدیم این هست که عکس رو تبدیل به کد هگز کنیم و از میکرو منتقل کنیم. اینطوری وقتی سایز عکس رو بالا می‌بریم برای ال‌سی‌دی 7 اینچ، ارور حافظه میگیریم. اما اگر بتونیم مستقیما عکس رو به درایور بدیم، دیگه فقط کافیه که فراخوانی بشه درست میگم؟ هیچ کدی پیدا نکردیم که اینکار رو انجام بده. الان میتونیم عکسی رو که دیفالت روی درایور بوده و لوگوی ftdi هست رو نمایش بدیم، اما نمیتونیم عکس جدیدی بهش منتقل کنیم. صرفا میتونیم عکسهای با سایز و حجم کوچیک رو نمایش بدیم که مطلوب ما نیست.

        1. زئوس Zeus زئوس Zeus گفت:

          خواهش میکنم
          متوجه شدم منظورتون چیه – خوب اول باید بگم اون حافظه ۱ مگ داخلی کنترلر تصویر از نوع رم هست و برای شما در دسترس نخواهد بود چون در واقع ram پردازشی خود چیپ هست و وقتی چیت بخواد تصاویر رو نمایش بده اول توی این رم رندر میشه! برای همین برای کاربر در دسترس نیست – مقدار اون رم مهمه چون ماکزیمم ابعاد تصویری که چیپ میتونه پشتیبانی کنه بسته به اون رم داره.
          خوب حالا از این قضیه که بگذریم شما یه تصویر ۸۰۰ در ۴۸۰ پیکسل رنگی دارید که میخواید روی نمایشگر نمایش بدید درست میگم !! اگر کیفیت تصویر شما ۱۶ بیت باشه – حجم خام عکس میشه حدود 760 کیلو بایت که اصلا منطقی نیست بخواید روی میکرو ذخیره اش کنید اما اگر شما همین تصویر رو تبدیل به jpeg کنید احتمالا حجمش به زیر ۱۰۰ کیلو میرسه و منطقی میشه این کار! البته نمیدونم از چه میکرویی با چه حافظه ای دارید استفاده میکنید.
          من الان دیتاشیت ft810 رو بررسی کردم و خوشبختانه از کدک jpge پشتیبانی میکنه و از این بابت جای نگرانی نیست.

          1. سانیار گفت:

            خیلی ممنون از توضیح واضح و کاملتون. دقیقا مشک ما همین بود که عکسها 768 کیلوبایت میشن حدودا و مشکل حافظه داریم. اینطور که متوجه شدم منظور شما این هست که بیایم عکس رو با همون فرمت JPEG به پروژه اضافه کنیم و با دستوری که در کتابخانه ش وجود داره صرفا لود کنیم؟
            البته این دستور رو باید خودمون بنویسیم احتمالا. چون کد کتابخانه کاملی ازش موجود نیست و اکثر کدها برای اردوینو نوشته شده و ارور دارن..

          2. زئوس Zeus زئوس Zeus گفت:

            خواهش میکنم دوست عزیز
            بله درست متوجه شدید – من قبلا همین مشکل رو داشتم ولی از آیسی ft810 استفاده نمیکردم که بتونم با فرمت jpeg ذخیره کنم و برای همین اومده بودم عکس رو با فرمت lz فشرده میکردم روی حافظه میکرو و موقع پخش از حالت فشرده خارجش میکردم. ولی با توجه به این که چیپ ft از فرمت های jpg پشتیبانی میکنه برای شما بهترین کار همین راههه

  2. فرهاد گفت:

    سلام
    مهندس ممنون از آموزش خوب تون
    مهندس این آموزش ادامه هم داره؟

    1. زئوس Zeus زئوس Zeus گفت:

      سلام دوست عزیز فعلا برنامه ای برای ادامه این آموزش نداریم و در حال تدوین آموزش های دیگری هستیم

  3. حمید گفت:

    درود به استاد گرامی
    ممنون از اموزش های خوبتون
    آیا کار با ماژول کارت خوان فقط با stm32 سری 4 امکان پذیره؟ من سری 1 گرفتم حجم مموری رو میتونم بخونم اما نمیتونم فایل بسازم و داخلش بنویسم. اگه راهنمایی بفرمایید ممنون میشم

    1. زئوس Zeus زئوس Zeus گفت:

      حتی میشه با سری های avr کار کرد و منحصر به میکروی خاصی نیست
      احتمالا که الان در نظرم هست اینه شاید کتابخانه به شکل readonly در دسترس شما باشه – این مورد رو بررسی کنید.

  4. علی خورسندی گفت:

    سلام ممنون از سایت خوبتون.
    در sdio فایل ایجاد میشه ولی داخلش رایت نمیشه.
    از این دوروش هم استفاده کردم.با فرکانسهای مختلف ولی مشکل حل نشد لطفا راهنمایی بفرمایید باتشکر.
    if(f_printf(&MyFile,”Test \r\n”)==FR_OK)
    و
    if(f_write(&MyFile, wtext, sizeof(wtext)-1, (void *)&byteswritten)== FR_OK)

    1. زئوس Zeus زئوس Zeus گفت:

      حتما در اتمام نوشتن باید فایل رو ببنیدید اگر این کار رو انجام ندیدن نوشتن انجام نمیشه یعنی بافر روی میکرو با سکتور های mmc سینک نمیشه
      آیا این کار رو انجام میدید ؟

  5. سلام روز همگی بخیر. ببخشید من پست اموزشی رو با عنوان مبدل دیجیتال به آنالوگ توی لیست آموزش میکروکنترلر stm32 ندیدم, بخاطر همین اینجا سوالمو میپرسم.
    دوستان من با استفاده از ESP32 محصول شرکت espressif , فایل صوتی با فرمت mp3 رو از طریق یلوتوث دریافت یا از روی microSD خوندم! و از طریق رابط I2S به مبدل دیجیتال به آنالوگ pcm5102 فرستادم و خروجی خوبی دریافت کردم. ولی متاسفانه دیروز حواسم به ولتاژ منبع تغذیه نبود و ماژول pcm5102 سوخت متاسفانه. الان رفتم میبینم قیمتش آنچنان رفته بالا ک حقیقتا توان خرید این ماژول رو ندارم.
    الان میخواستم ببینم از میکروکنترلرهای stm32 میشه بجای این ماژول استفاده کنم؟ و اینکه اگر امکان پذیر هس چطور باید انجامش بدم؟
    لطفا دوستانی که تجربه ای دارن, کمکم کنن.
    ممنون

    1. زئوس Zeus زئوس Zeus گفت:

      سلام
      چرا از dac داخلی خود esp32 استفاده نمیکنید ؟ کیفیت خوبی هم داره
      https://docs.espressif.com/projects/esp-idf/en/latest/esp32/api-reference/peripherals/dac.html

      1. عصر بخیر… مبدل دیجیتال به آنالوگ داخلی esp32, هشت بیتی هستش. کیفیت مطلوب و خوبی نداره.
        شما با رابط i2s میکروکنترلرstm32 کار کردین؟

        1. زئوس Zeus زئوس Zeus گفت:

          ۸ بیت که به نظر کیفیت معقولی هست
          ولی به با i2s کار کردیم و به خوبی هم کار میکنه مشکل شما الان کجاست
          البته stm32 هم dac داخلی فکر کنم ده بیتی یا ۱۲ بیتی هم داره.

          1. علی خورسندی گفت:

            سلام بعد از f _mount در f_open متوقف میشه .مشکل چی میتونه باشه .اس دی 8 گیگ هست و fat 32 فرمت ۲۰۴۸

          2. زئوس Zeus زئوس Zeus گفت:

            سلام احتمالا نمیتونه با کارت حافظه ارتباط برقرار کنه
            در حالت دستور mount فقط متغییر ها رو مقدار دهی میکنه و سعی نمیکنه که با دیسک ارتباط برقرار کنه !
            برای این کار که توی همون mount دیسک رو هم چک کنه – یه پارامتر ورودی میگیره که این کار رو میکنه – اون متغییر رو ست کنید و به تابع پاس بدید

  6. mohammad گفت:

    سلام
    خسته نباشید
    اگه بخوایم “یک” فایل با حجم بیشتر از 4 گیگابایت داشته باشیم، از فرمت fat32 نمیشه استفاده کرد، باید از exfat استفاده کرد
    ولی من نمونه کدی پیدا نکردم که توش روی sd card و با این فرمت، فایلی ساخته باشن…
    در واقع همه جا اومدن از متغیرای FIL استفاده کردن که f_sizeش یه عدد 32 بیتیه (همون 4 گیگ)
    به جز این مجموعه دستورات، دستورای دیگه نیست برای فرمت exfat؟

    1. زئوس Zeus زئوس Zeus گفت:

      سلام دوست عزیز
      خوب مورد شما یه مورد خاصه :)‌تا حالا برای خودم پیش نیامده که چنین حجمی رو لازم داشته باشم
      ولی شما میتونید از کتابخانه ELM-CHAN استفاده کنید طبق گفت های خودش این کتابخونه قادره فایل سیستم exFAT رو پشتیبانی کنه و دقیقا اشاره کرده که میتونید فایل های حجیم بزرگتر از ۴G بسازید – لینک زیر رو مطالعه کنید
      http://elm-chan.org/docs/exfat_e.html

  7. محمد گفت:

    سلام به گروه سیسوگ.
    انصافا یکی از چند تا سایت انگشت شمار، با محتویات راه گشاست که میشناسم. خدا قوت.

    برای انتقال حجم زیاد داده 32 بیتی و با سرعت بالا به sdcard، لازمه انتقال توسط DMA و بصورت SDIO انجام بشه. ممنون میشم در ادامه آموزش ، به نحوه پیکر بندی صحیح cube برای DMA هم مطالبی اختصاص بدید و به تغییرات لازم و نکات مهم در پیکربندی و کد نویسی اشاره کنید. سعی خودم و منابع اینترنت بی نتیجه بود.

    باز هم ممنون

    1. زئوس Zeus زئوس Zeus گفت:

      سلام دوست عزیز
      خواهش میکنم نظر لطف شماست :))
      سعی میکنیم در لیست کاهامون قرار بدیم راه اندازی DMA رو
      البته لازمه اشاره کنم چون fat یه فرایند نرم افزاری است به شکل کامل نمیشه از قابلیت dma برای بالابردن سرعت استفاده کرد ولی خوب راه هایی هم هست که بشه به این مهم دست پیدا کرد.

  8. مرتضی خوشحال MORTEZA گفت:

    سلام.
    بسیار عالی.
    ببخشید قسمت 15 رو هرچه گشتم پیدا نکردم.
    اصلا این سری از آموزش قسمت 15 داره؟

    1. سلام ممنون از نظر لطفتون دوست عزیز… قسمت 15 این مجموعه هنوز منتشر نشده

  9. Alirezaakhavanqome علیرضا گفت:

    سلام اقا لطفا سری اموزش بعدی بزارید شدیدا بهش احتیاج داریم اینو واقعا خواهش میکنم

    1. زئوس Zeus زئوس Zeus گفت:

      اجازه بدید – در حال بررسی هستیم ؛

  10. سعید گفت:

    سلام من تقریبا تمام مقالات سیسوگ را مطاله می کنم و عالین اما این مقاه خیلی خلاصه بود ای کاش کمی توضیحات بیشتری در مورد این موضوع می نوشتید یا حداقل یک مقدمه در مورد فایها اولش می نوشتید اما منتظر ادامه این مقاله بخصوص در مورد فایل نویسی و راه اندازی SD کارت هستیم باتشکر

    1. زئوس Zeus زئوس Zeus گفت:

      سلام ؛ خوب گاهی پیش میآد که مطالب نیاز به توضیح بیشتر داشته باشند ؛ سعی میکنیم اونا رو کامل کنیم.

  11. محسن عبدالهی گفت:

    با سلام
    ممنونم از آموزش بسیار خوبتون
    بنده با RTOS نتونستم SDIO رو راه اندازی کنم.
    یعنی mount می کنه ولی وقتی درون تست بخوایم یه فایل رو باز کنیم خیلی طول میکشه بعدش خطای دیسک میده
    ممنونم ازتون که مشکل رو شناسایی کنید

    1. زئوس Zeus زئوس Zeus گفت:

      خوب یعنی بدون سیستم عامل درست کار میکنه ؟
      ببینید سیستم عامل در واقع نمی تونه دخالتی توی کار کردن یا نکردن SDIO داشته باشه ؛ مگر این که روی کتابخونه خودتون Mutex یا semaphore رو فعال کرده باشید و درست مدیریتش نکرده باشید در اون صورت هم نباید خطای دیسک رو داشته باشید.
      بعد این که سورس رو شما نوشتید ما که نمیتونیم متوجه بشیم مشکل از کجاست – چرا که سورس شما رو ندیدیم 😐

  12. محمد گفت:

    مدتیست با سیسوگ آشنا شدم سایت از نظر محتوا بسیار عالیست دمتون گرم
    بیصبرانه منتظر قسمت 15 هستیم . مرسی

    1. ممنون از لطف شما دوست عزیز

    2. Alirezaakhavanqome علبرضا گفت:

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

      1. سلام ممنون از لطف شما دوست عزیز

  13. SARA گفت:

    سلام ممنون از سایت خوبتون.
    قسمت 15 کی بر روی سایت قرار میگیره؟ من شدیدا بهش نیاز دارم

    1. سلام دوست عزیز
      تا روز چهارشنبه مطمئنا منتشر میشه. ممنون از شکیبایی شما

      1. Sara گفت:

        ممنون از پاسختون
        میخواستم درخواست کنم اگر امکانش هست توضیحاتی هم در مورد ساخت پوشه و زیر پوشه در sd card و خواندن آنها توسط میکرو هم داده بشه

        1. زئوس Zeus زئوس Zeus گفت:

          سلام – خوب کار با پوشه خیلی ساده است مثل فایل ؛ به توابع مربوطه نگاه بندازید ؛ و البته توصیه میکنم که به سایت خود چان سر بزنید و مستندات اونجا رو مطالعه کنید
          اگر سوال خاصی دارید مطرح کنید تا حد توان سعی میکنیم که جوابگو باشیم