جمعه ۰۴ خرداد ۱۳۹۷
سلام مهمان گرامی !
ورود
ثبت نام

آمار سایت

افراد آنلاین : 3 نفر
اعضای آنلاین : 0 نفر
بازدید امروز : 329 بازدید
بازدید دیروز : 442 بازدید
بازدید این هفته : 2730 بازدید
بازدید هفته قبل : 3178 بازدید
امروز : جمعه ۰۴ خرداد ۱۳۹۷



Google



یادش بخیر چندین سال پیش یکی از پروژه های مهم و البته مشکلی که هر برنامه نویس الکترونیک با اون درگیر بود ضبط صدا بود.کاربردهای زیادی میشه واسه ضبط صدا پیدا کرد مثلا سخنگو کردن وسایل! ، حرف شنو کردن وسایل! ، کاربردهای استراق اسمع و ...

البته اون زمان به دلیل محدودیت های زیادی که در ضبط صدا وجود داشت بیشتر چنین ایده هایی به ذهن میرسید یعنی مدت زمان ضبط صدا و کیفیت ضبط صدا اونقدر کم بود که کاربردهایی مثل mp3 player و mp4 player کمتر به ذهن میرسید

درواقع برای ضبط صدا گزینه های کمتری دراختیار داشتید که معروفترین حالت استفاده از آیسی ضبط صدا سری ISD بود که نسل اول اون میتونست تا 8 ثانیه صدا رو با کیفیت مناسب ذخیره کنه! البته در سری های بعدی این مدت زمان ضبط بیشتر شد و نیازی که موازی کردن آی سی ها رو (برای افزایش زمان ضبط) حذف کرد.

کم کم استفاده از MMC مرسوم تر شد اون وقت ها خود مموری ها هم ظرفیت های چند گیگابایتی امروزی رو نداشتند اما بازهم بسیار بسیار ظرفیت بیشتری از ISD داشتند.

ظرفیت حافظه بیشتر ، ابتکارات جدیدتری رو به ذهن ماها آورد و دیگه از سخنگو کردن اهم متر و روشن کردن کولر با دستور (روشن شو!) رو بیخیال شدیم و آرزومون شد ساختن wav player و mp3 player و بعدها mp4 player

خوشبختاننه مموری کارت ها و SD کارتها قابلیت ارتباط با SPI رو داشتن برای همین میشد مستقیما مموری رو با میکروهای PIC و AVR به راحتی راه اندازی کرد البته به شرط داشتن یک کتابخانه خوب .

مموری کارت ها از چند سری مختلف تشکیل شده اند نسل اول MMC دارای ظرفیت های مگا بایتی بودند اما SD کارت ها که سرعت بیشتری هم از MMC داشتند امکان ظرفیت 2G رو میسر کردند اما نیاز امروزی به 2G هم کفایت نمیکرد و برای همین SDHC و SDXC هم در ادامه ظرفیت های بسیار بالاتری وارد بازار شدند.

برای اطلاعات بیشتر در مورد انواع مموری کارت ها اینجا کلیک کنید.

سورس ها و کتابخانه های خوبی هم برای ارتباط با مموری کارتها برای کامپایلرهای محبوب کدویژن و بسکام و... اومدبه این صورت استفاده از مموری کارت در پروژه های الکترونیکی مرسوم تر شد تا درنهایت ماژول های چند هزار تومنی که بدون کدنویسی خاصی امکان ارتباط با مموری رو برای شما به ساده ترین شکل ممکن فراهم میکنه وارد بازار شدند.

مموری کارت ها در بسته بندی های مختلفی هم وارد بازار شدند که در تصاویر زیر ترتیب پایه ها و شکل ظاهری اونا رو مشاهده میکنید:

میکرو اس دی کارت و ام ام سی کارت micro sd card mmc card
میکرو SD کارت
میکرو اس دی کارت و ام ام سی کارت micro sd card mmc card
ترتیب پایه های SD و MMC
میکرو اس دی کارت و ام ام سی کارت micro sd card mmc card

ارتباط با مموری کارت

شما کافیست مموری کارت رو به پورت SPI میکرو متصل کنید و اونو Initiate کنید سپس مموری کارت آماده دریافت فرامین شماست متونید در اون بنویسید ، بخونید ، اطلاعات رو پاک کنید و ....

شما کافیست مموری کارت رو به پورت SPI میکرو متصل کنید و اونو Initiate کنید سپس مموری کارت آماده دریافت فرامین شماست متونید در اون بنویسید ، بخونید ، اطلاعات رو پاک کنید و ....

در ادامه سورس برنامه نمونه ای برای دانلود گذاشته شده که میکرو موردنظر شما رو راه اندازی میکنه و برحسب انتخاب شما محتویات اونو به شما نمایش میده و میتونید از ممووری بخونید و بنویسید.

اما پس از راه اندازی اولیه MMC/SD/SDHC شما به به روش مختلف میتونید با مموری کارت ارتباط داشته باشید روش اول : روش سطح پایین و دومین روش : روش سطح بالا

ارتباط سطح پایین

به اسمش نگاه نکنید این نوع ارتباط ، یک ارتباط کامل با کلیه اختیارات موجود هست البته برای این نوع ارتباط بایستی از ساختار ارسال و دریافت کامندهای مموری (فریم بندی آنها) اطلاعات خوبی داشته باشین. (به طور مثال پاسخ های R1 یا R3 )

R1 R3 response mmc command response

دقت کنید که در این حالت شما سکتور به سکتور میتونید در مموری کارت بنویسید و به دلیل ایتکه دیتایی که شما ارسال خواهید کرد از ساختار FAT پیروی نمکنه ، جدول FAT از بین رفته و برای استفاده مجدد از FAT (برای مثال اتصال آن به کامپیوتر) بایستی مجددا مموری رو FORMAT کنید. این شیوه ارسال برای ارتباط به حداکثر سرعت ممکن مناسب هست به طور مثال برای پخش یک فایل wav با بیت ریت بالا به چنین ارتباطی نیاز خواهید داشت.در پستهای بعدی برنامه ای این چنینی را قرار خواهم داد.

spi mmc sd sdhc card

ارتباط سطح بالا

همانطور که میدونید موقعی که مموری رو به سیستم کامپیوتر خود متصل میکنیدمیتونید در اون فایلهایی رو ذخیره کنید این فایلها از ساختار مشخصی پیروی میکنند و اگر این ساختار FAT رو دستکاری کنید و تغییر بدید برای شناسایی مجدد مموری کارت توسط کامپیوتر ، باییستی اونو فرمت کنید.

قسمتی که فضای موجود در مموری ، توسط FAT اشغال میشه واسه همینه که همیشه ظرفیتی آزادی که برای مموری فرمت شده مشاهد میکنید اندکی کمتر از ظرفیت نامی اون هست. امروزه بیشتر FAT32 مرسوم شده میتونید برای اطلاعات بیشتر در مورد اون میتونید گوگل کنید: FAT32 vs FAT16 vs NTFS

FAT16 vs FAT32 vs NTFS

کتابخانه فعلی کدویژن نیز از SD کارتهای SDHC پشتیبانی میکنه:

sdhc card codevision افزوده شدن SDHC در کتابخانه جدید کدویژن
افزوده شدن SDHC در کتابخانه جدید کدویژن

اما ما در اینجا از کتابخونه های مشابهی که سبکتر از کتابخانه کدویژن هستند استفاده خواهیم کرد که با نوع SDHC و SD ver2 هم کارکنه.

یکی از این کتابخونه ها سایت زاپنی chan هستش که تقریبا کامله و توضیحات کاملی رو هم میتونید از سایتش elm-chan.org بدست بیارین واسه همین من درمورد اون توضیح نمیدم و میخوام از سورس دیگه ای که از برنامه نویس فعال هندی مون هست رو بهتون معرفی کنم که ایشون هم توضیحات خوبی در سایتشوون قرار دادن: dharmanitech.com

اگه شما هم از اونایی هستید که ارتباط با MMC رو انجام دادین اما سورس برنامه تون نمیتونه SDHC ها رو Initiate کنه میتونید از این کتابخونه استفاده کنید.

برنامه برای winAVR نوشته شده بود من با تغییرات کوچیکی اونو به کدویژن تبدیل کردم.

این پروژه صرفا برای راه اندازی و تست مموری کارت هست دلیل استفاده از این کتابخونه ، راحتی استفاده از اون هست در این پروژه شما میتونید مموری کارت رو به روش سطح پایین و یا سطح بالا (توسط FAT) راه اندازی کنید.

از ارتباط UART برای کنترل پروژه استفاده شده لذا شما میتونید مثلا با کیلید 5 محتویات داخلی مموری رو مشاهده کنید و با کلید 6 و وارد کردن نام فایل متیونید اون فایل رو باز کرده و محتویات فایل رو ببینید و....

کافیه شما پایه های RXD و TXD میکرو رو به PC متصل کنید و خیلی راحت فرامین لازم رو با پورت سریال ارسال و دریافت کنید در عکس زیر مشاهده میکنید که با نرم افزار Hercule با پورت سریال ارتباط برقرار کرده ایم. مقدار باود رو 19200 قرار بدید.

hyper terminal hercules sd sdhc mmc card driver راه اندازی مموری کارت و کنترل با هایپرترمینال
ارسال فرامین به مموری کارت با هایپرترمینال Hercules

این نرم افزار امکانات جالبی داره علاوه بر ارتباط سریال ، شما میتوید تست های مربوط به ارتباط TCP رو هم انجام بدید.

شماتیک این پروژه رو هم با فایل Eagle قرار داده ایم البته شمایتک خاصی این پروژه لازم نداره فقط کافیه پایه های مموری رو بدین به SPI میکرو و پایه های سریال میکرو رو هم بدین به پورت سریال کامپیوتر و یک LED رو هم میتونید PORTD.3 متصل کنید تا در صورتی که پورت سریال رو وصل نکردین از طرق فلش زدن اون از Initiate کامل مموری کارت مطمئن بشید. میتونید به جای زنر از تقسیم مقاومتی بین ارتباط میکرو با MMC استفاده کنید و یا اگه از میکروهای سری L و یا سری A استفاده میکنید تغذیه میکرو رو با مموری یکی کنید و با هم 3.3 ولت بدید.

این پروژه به راحتی میتونه با میکرو ATMEGA8 هم راه اندازی بشه که در نمونه کد زیر ما از میکرو MEGA16 استفاده کرده ایم.

تا یادم نرفته اینو هم بگم که بایستی مموری کارت شما به صورت FAT32 فرمت شده باشه تا توسط این کتابخونه به درستی کار کنه سایز کلاستر رو هم خود سورس برنامه تشخیص میده شما میتویند مثلا روی 1024 بایت فرمت کنید.

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

این پروژه رو به طور کامل تست کردم و میتونید با خیال راحت از اون استفاده کنید و اگه سوالی داشتید در قسمت نظرات همین بخش مطرح کنید.

شماتیک کامل پروژه
شماتیک کامل پروژه

برای دانلود سورس کامل پروژه در کامپایلر کدویژن + شماتیک مدار چاپی در Eagle از لینک زیر استفاده کنید.

اگه این مطلب برای شما مفید بوده برای حمایت از ما در قسمت زیر ، روی علامت G+ کلیک کنید و به جای کپی این پست در سایت و وبلاگ خود ، آدرس سایت Pcenter.ir را قرار دهید.

اگر این مطلب برای شما مفید بوده برروی کلید G+1 کلیک کنید !

دانلود فایل های پروژه :

خرید پروژه
کلیه فایل های ضمیمه این پروزه به صورت رایگان قرار داده شده است.
اگر این مطلب برای شما مفید بوده میتوانید با درج لینک سایت ما در سایت یا وبلاگ خود ویا معرفی سایت ما به دوستان خود و یا با روش های پیشنهادی ما از پی سنتر حمایت کنید.
راهنمای پروژه
رمز فایل
www.pcenter.ir
نوشته شده در پنجشنبه ۰۱ بهمن ۱۳۹۴ | ۱۴:۰۷   توسط Admin   بازدید : 6427
نظر شما :
نام :
ایمیل :
(ایمیل نمایش داده نمیشود)
پیام شما :
شکلک ها :
:) :( ;) :D ;)) :X :? :P :* =(( :O @};- :B /:) :S
:Pa :*q :Ow :Be :Sr :?x

کد امنیتی :
برای تعویض عکس کلیک کنید


RSS Feed Site map