با avr میشه به صورت spi از مموری استاده کرد.تو این حالت دیگه نیازی به درگیری با دستورات آدرس دهی یا خوندن و نوشتن متوالی نیست.مهمترین دستورات تو این حالت این ها هستند:
cmd0 =برای ریست کردن کارت.( go to idle state)
cmd1 =برای پیکر بندی کارت
cmd16 =برای تعیین طول هر بلوک
cmd17= خوندن یه بلوک از کارت
cmd24 =نوشتن یک بلوک روی کارت
cmd59 =غیر فعال کردن crc در کارت
بقیه دستورات برای کاربرد های بیشتر هستند اما برای شروع همینا کافی اند.
می شه یه مثال کوتاه برای این کد ها بذارین مثلا روی lcd حجم mmcرا نشون بده با بیسک
می شه یه مثال کوتاه برای این کد ها بذارین مثلا روی lcd حجم mmcرا نشون بده با بیسک
برای خوندن حجم کارت باید رجستر CSD رو بخونید و قسمت C_Size رو در K 512 ضرب کنید.این کار برای کارت های SD -SD HC و MMC کمی تفاوت داره که با مراجعه به دیتاشیتش میشه تفاوت ها رو پیدا کرد. :agree:
من زیاد از بیسیک سر در نمیارم و بیشتر با سی کار میکنم.بهتون پیشنهاد میکنم اگه میخواید زیاد با این چیز ها در گیر نشید از AVR-DOS استفاده کنید.
نوشته اصلی توسط milad_arm
یه کم در مورد cmd17= خوندن یه بلوک از کارت
cmd24 =نوشتن یک بلوک روی کارت توضیح بدین از دیتا شیت سر در نیاوردم یه کم(کد ها)
برای نوشتن روی کارت اول باید کد این عمل (با رعایت قالب کد) بفرستید.بعد یه متغییر 32 بیتی رو برای کارت میفرستید که توی این متغییر آدرس سکتور مورد نظر هست.بعد از اون نوبت crc هست که به جاش عدد 0x95 رو بفرستید.
بعد از این ها باید data token برای نوشتن رو بفرستید که مقدارش 0xFE هست.بعد از این کد ها کارت آماده ی دریافت 512 بایت میشه( با فرض این که اندازه ی هر بلوک 512 باشه).در این جا با یه حلقه تعداد بایت ها ی مورد نیاز رو می فرستیم.
بعد از ارسال دیتا چند بایت 0xFF میفرستیم تا مطمئن بشیم کار کارت تموم شده و ریجستر r1 رو میخونیم.اگه اروری داخلش نبود یعنی کار کامل شده.
خوندن از کارت هم شبیه به نوشتن هست.
دیدگاه