حافظه هاي فلش   

SD[1]/MMC[2]

 اﯾﻦ ﻧﻮع ﺣﺎﻓﻈﻪﻫﺎ ﮐﻪ از ﻧﻮع  FLASH ﻣﯽﺑﺎﺷﻨﺪ و ﺑﻪ ﺻﻮرت ﻣﺮﺳﻮم در دﺳﺘﮕﺎهﻫﺎي ﻗﺎﺑﻞ ﺣﻤﻠﯽ ﻣﺎﻧﻨﺪ ‪ MP3 PLAYERﻫﺎ ،COOL DISK ﻫﺎ و ﻣﻮﺑﺎﯾﻞﻫﺎ اﺳﺘﻔﺎده ﻣﯽﺷﻮﻧﺪ.

 از ﺧﺼﻮﺻﯿﺎت ﺑﺎرز آن ﻣﯽﺗﻮان ﺑﻪ ﺳﺮﻋﺖ ﺑﺎﻻ و ﺣﺠﻢ ﺑﺴﯿﺎر ﺑﺎﻻي آن اﺷﺎره ﮐﺮد. اﯾﻦ ﺣﺠﻢ ﺑﺎﻻ ﮐﻪ از ﭼﻨﺪﯾﻦﻣﮕﺎﺑﺎﯾﺖ ﺗﺎ ﭼﻨﺪﯾﻦ ﮔﯿﮕﺎﺑﺎﯾﺖ ﻣﯽﺑﺎﺷﺪ ﺑﻪ ﻫﻤﺎن ﻗﺪر ﮐﻪ ﺑﺮاي ﺗﻮﻟﯿﺪ ﮐﻨﻨﺪﮔﺎن اﯾﻦ دﺳﺘﮕﺎهﻫﺎ وﺳﻮﺳﻪ اﻧﮕﯿﺰ اﺳﺖ ﮐﻪﺑﺮاي ﻣﻬﻨﺪﺳﺎن اﻟﮑﺘﺮوﻧﯿﮏ. ﺷﺎﯾﺪ دﻟﯿﻞﻋﻤﺪه اﯾﻦ ﺗﻮﺟﻪ از ﻃﺮف ﻣﻬﻨﺪﺳﺎن اﻟﮑﺘﺮوﻧﯿﮏ ﻓﻀﺎي زﯾﺎدي ﺑﺎﺷﺪ ﮐﻪ در ﻫﯿﭻ ﻣﺪار ﻣﯿﮑﺮوﮐﻨﺘﺮﻟﺮي ﺑﻪ آندﺳﺘﺮﺳﯽ ﻧﺪارﻧﺪ.

 اﻟﺒﺘﻪ ﻗﻄﻌﺎت ﻣﺨﺘﻠﻔﯽ ﺑﺮاي رﻓﻊ اﯾﻦ ﻧﯿﺎز ﻣﺎﻧﻨﺪ ﺧﺎﻧواده ‪ AT45DBXXXاز ﺷﺮﮐﺖ اﺗﻤﻞ ﺗﻮﻟﯿﺪﺷﺪ ﮐﻪ ﻧﻮﻋﯽ ‪  FLASH ﺑﻮده وﻟﯽ از ﻟﺤﺎظ ﻇﺮﻓﯿﺖ ﻫﺮﮔﺰ ﺑﻪ ﮔﺮد ‪ SDﯾﺎ ‪ MMCﻧﺨﻮاﻫﻨﺪ رﺳﯿﺪ. وﯾﮋﮔﯽ ﺑﺎرز دﯾﮕﺮ اﯾﻦ ﺣﺎﻓﻈﻪ ﻗﺎﺑﻠﯿﺖ ﭘﺸﺘﯿﺒﺎﻧﯽ از اﺳﺘﺎﻧﺪاردﻫﺎي ‪ FATاﺳﺖ ﮐﻪ ﺑﺎ اﯾﻦ وﯾﮋﮔﯽاﻣﮑﺎن دﺳﺘﺮﺳﯽ ﺑﻪ دادهﻫﺎ در ﮐﺎﻣﭙﯿﻮﺗﺮ ﺑﻮﺟﻮد ﻣﯽآﯾﺪ.

‫ ‪

 ﺑﺮرﺳﯽ مموري ﮐﺎرت از دﯾﺪ ﺳﺨﺖ افزاري :

SD و ‪  MMCﺗﻨﻬﺎ از ﻧﻈﺮ ﺳﺮﻋﺖ و ‫ ﺣﺠﻢ ﺑﺎﻓﺮ ﺑﺎ ﻫﻢ ﺗﻔﺎوت دارﻧﺪ وﻟﯽ از ﻧﻈﺮ ﻧﻮع ﻓﻀﺎ و آدرس دﻫﯽﻫﺎ و... ﺑﺎ ﻫﻢ ﻓﺮﻗﯽ ﻧﺪارﻧﺪ. ﭘﺮوﺗﮑﻞ ارﺗﺒﺎﻃﯽ ﻣﻤﻮري ﺑﻪ دو ﺷﮑﻞ ‪ IDE MODEﯾﺎ ارﺗﺒﺎط ﻣﻮازي ﭼﻬﺎرﺑﯿﺘﯽ و ﻧﻮع ‪ SPI MODE ﯾﺎ ارﺗﺒﺎط ﺳﺮﯾﺎل ﺳﻨﮑﺮون ﻣﯽﺑﺎﺷﺪ ﮐﻪ ﻣﺘﺎﺳﻔﺎﻧﻪ ﻣﻄﺎﻟﺐ زﯾﺎدي درﺑﺎره ﻧﻮع اول ﻣﻮﺟﻮد ﻧﯿﺴﺖ اﻣﺎ ﻧﻮع دوم ارﺗﺒﺎط ﻣﺮﺳﻮﻣﯽ در ﻣﯿﮑﺮوﮐﻨﺘﺮﻟﺮﻫﺎﺳﺖ.

‫اﯾﻦ ﭘﺮوﺗﮑﻞ ارﺗﺒﺎﻃﯽ ﺑﻪ ﻃﻮر ﻣﻌﻤﻮل داراي ﺳﻪ ﺧﻂ اﺻﻠﯽ ارﺗﺒﺎﻃﯽ ﻣﯽﺑﺎﺷﺪ ﮐﻪ ﯾﮑﯽ از اﯾﻦ ﺳﻪ ﺧﻂ وﻇﯿﻔﻪ ارﺳﺎل داده، دﯾﮕﺮي درﯾﺎﻓﺖ داده و ﺧﻂ ﺳﻮم ﺣﺎﻣﻞ ﮐﻼك ﻣﯽﺑﺎﺷﺪ.

‫ در اﯾﻦارﺗﺒﺎط ﻃﺮﻓﯿﻦ در دو ﺣﺎﻟﺖ ﻗﺮار ﻣﯽﮔﯿﺮﻧﺪ ﯾﮑﯽ ‪ MASTERﮐﻪ ﺗﻮﻟﯿﺪ ﮐﻨﻨﺪه ﭘﺎﻟﺲ و ﺣﺎﻟﺖ دوم

 SLAVEﮐﻪ ﻫﯿﭽﮕﻮﻧﻪ اﻋﻤﺎﻟﯽ روي ﮐﻼك اﻧﺠﺎم ﻧﻤﯽدﻫﺪ و ﻓﻘﻂ درﯾﺎﻓﺖ ﮐﻨﻨﺪه آن اﺳﺖ.
در اﯾﻦ ارﺗﺒﺎط ﯾﮏ ﺧﻂ ﻧﯿﺰ ﺣﺎﻣﻞ ﺳﯿﮕﻨﺎل ‪ SSﯾﺎ ‪ SLAVE SELECTﻣﯽﺑﺎﺷﺪ ﮐﻪ ﺑﺎ ﻓﻌﺎل ﺷﺪن آن ﺳﯿﺴﺘﻢ درﯾﺎﻓﺖ ﮐﻨﻨﺪه اﯾﻦ ﺳﯿﮕﻨﺎل ﺑﻪ ﻣﺪ ‪ SLAVEﻣﯽرود اﻣﺎ اﯾﻦ ﺧﻂ ﺑﻪ ﺻﻮرت ‪ OPTIONALﯾﺎ اﺧﺘﯿﺎري

‫اﺳﺖ و در اﮐﺜﺮ ﻣﻮارد ﻧﯿﺎزي ﺑﻪ آن ﻧﯿﺴﺖ. در ارﺗﺒﺎط ﺑﺎ ﻣﻤﻮري ﮐﺎرتﻫﺎ اﯾﻦ ﺧﻂ ﺑﻪ ﻧﻮﻋﯽ ﺑﻌﻨﻮان ‪ CSﯾﺎ

CHIP SELECT ﺑﻪ ﮐﺎر ﻣﯽرود.

در ﺷﮑﻞ زﯾﺮ ﯾﮏ ﻧﻤﻮدار ﺳﯿﮕﻨﺎﻟﯽ اﯾﻦ ارﺗﺒﺎط را ﻣﺸﺎﻫﺪه ﻣﯽﮐﻨﯿﺪ:

 

ﻧﮑﺘﻪ ﻣﻬﻢ دﯾﮕﺮ اﯾﻨﮑﻪ در اﯾﻦ ارﺗﺒﺎط ﻣﯽﺗﻮان اﻧﺘﺨﺎب ﮐﺮد ﮐﻪ اﺑﺘﺪا ‪ MSBارﺳﺎل ﺷﻮد ﯾﺎ ‪ LSBﮐﻪ در ﺑﺤﺚﻣﻤﻮري ﮐﺎرت ‪ MSBاﺑﺘﺪا ارﺳﺎل ﻣﯽﺷﻮد.

شکل زیر ساختار درونی MMC را نشان میدهدکه از بلوکهایی جداگانه تشکیل شده است.همه این بلوکها به وسیله یک اسیلاتور داخلی کلاک می خورند.چون MMC دارای اوسیلاتور داخلی با فرکانس مشخص میباشد بنا براین برای انتقال داده توسط خطوط ( CMD دستور) و ( DAT داده) باید فرکانس اسیلاتور داخلی با فرکانس خط( CLK کلاک) که توسط( Host کنترلر) بوجود میاید سنکرون (همزمان) شود.این کار توسط واحد Interface driver انجام میشود. 

 برای بزرگنمایی روی عکس کلیک کنید.

MMc ها به وسیله سه پین )خط داده ( CMD,DAT.CLK کنترل میشوند که هر یک از این خطوط داده کار خاصی را در طول انتقال داده انجام میدهند.

همچنین MMCها دارای چهار رجیستر داخلی هستند که از این رجیستر ها برای شناسایی و یک سری از خصوصیات MMC استفاده میشود.این رجیستر ها عبارنتد از:

OCR  یا(Operation Condition Register) :

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

CID یا (Card Identification) :

این رجیستر , رجیستر شناسایی کارت میباشد.

CSD یا (Card specific):

این رجیستر , رجیستر تعیین داده میباشد.

RCA یا  (Rela Card Address) : 
رجیستر تخصیص آدرس برای انتقال داده ها بین Host و mmc میباشد.

MMC   برای انتقال داده از دو پروتکل پشتبانی می کند یا به عبارت دیگر به دو روش mode می توان داده ها را بین MMC و Host تبادل کرد که عبارتند از:

      1.            Multimedia Mode یا MMC Mode

      2.            Serial Peripheral Interface یا SPI Mode

 برای بزرگنمایی روی عکس کلیک کنید.

 Spi mode of sd mmc
 
MMc Mode :
در این مد برای انتقال داده از کمترین خط داده استفاده شده است که عبارتند از :
CLK  :با هر دوره تناوب از سیگنال ورودی به این پین یک بیت داده بر روی خط DAT یا CMD جا به جا میشود.فرکانس این خط میتواند از صفر تا ماکزیمم فرکانس ممکنهباشد و این فرکانس میتواند در حین انتقال داده تغيیر کند

CMD : این خط یک خط داده دو طرفه است که برای فعال کردن MMC و دستور انتقال داده و پاسخ مورد استفاده قرار میگیرد.این خط به دو روش عمل میکند.

 Open Drain Mode : برای فعال کردن MMC
Push Pull Mode : برای انتقال سریع داده دستور همیشه توسطHost  يا مستر ارسال مي شود اما پاسخ توسط MMC فرستاده میشود.
DAT : این خط یک خط داده دو طرفه است و برای انتقال داده که باید بروی حافظه ذخیره یا از حافظه خوانده شودمورد استفاده قرار میگیرد.
‫ﺗﻐﺬﯾﻪ ﻣﻤﻮري ﺑﯿﻦ  2.7 وﻟﺖ ﺗﺎ  3.6وﻟﺖ ﻣﯽﺑﺎﺷﺪ ﮐﻪ ﺑﺮاي اﻃﻤﯿﻨﺎن از ﺻﺤﺖ ﮐﺎر آن ﺗﻮﺻﯿﻪ ﺷﺪه ﺑﺎ‬ وﻟﺘﺎژ 3.6  وﻟﺖ ﺗﻐﺬﯾﻪ ﺷﻮد و ﺣﺎﻓﻈﻪ ﺑﺴﯿﺎر ﺑﻪ وﻟﺘﺎژ ﮐﺎري ﺧﻮد ﺣﺴﺎس اﺳﺖ و اﻣﮑﺎن آﺳﯿﺐ دﯾﺪن آن‬ ﺑﺪﻟﯿﻞ اﺿﺎﻓﻪ وﻟﺘﺎژ و ﻧﻮﯾﺰ ﺑﺴﯿﺎر زﯾﺎد اﺳﺖ.‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬
ﻓﺮﮐﺎﻧﺲ ﮐﺎري ﺣﺎﻓﻈﻪ در ﻣﺪ ‪ SPI‬ﺗﺎ 50 ﻣﮕﺎﻫﺮﺗﺰ ﺑﻮده و در‬ اﯾﻦ ﭘﺮوژه ﮐﻪ ﺑﺎ ﻣﯿﮑﺮوﮐﻨﺘﺮﻟﺮ ‪ AVR‬اﻧﺠﺎم ﺷﺪه ﻓﺮﮐﺎﻧﺲ ﮐﺎري ﺣﺪاﮐﺜﺮ 16 ﻣﮕﺎﻫﺮﺗﺰ ﻣﯽﺑﺎﺷﺪ.‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬
‫ﻧﮑﺘﻪ: ﺑﺮاي ارﺳﺎل ﻫﺮ داده ﯾﺎ دﺳﺘﻮر ﺑﻪ ﻣﻤﻮري ﺑﺎﯾﺪ اﺑﺘﺪا ‪ CS‬ﻓﻌﺎل ﺷﻮد ﺑﺠﺰ ﻣﻮاردي ﮐﻪ ذﮐﺮ ﺧﻮاﻫﺪ‬ ‫ﺷﺪ.‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬
ﻧﮑﺘﻪ: اﯾﻦ ﻧﻮع ﺣﺎﻓﻈﻪ ﺷﺎﻣﻞ ﭼﻨﺪﯾﻦ ﺳﮑﺘﻮر اﺳﺖ ﮐﻪ ﻫﻤﻪ ﺳﮑﺘﻮرﻫﺎ در ﻫﻤﻪ اﻧﻮاع ﻣﻤﻮري ﮐﺎرت512  ﺑﺎﯾﺖ اﺳﺖ.‬
 
‫ﻧﺤﻮه ارﺗﺒﺎط:‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬
‫1. رﯾﺴﺖ:
 ﺑﺮاي راه اﻧﺪازي ﺣﺎﻓﻈﻪ اﺑﺘﺪا ﺑﺎﯾﺪ از ﻧﻈﺮ ﺳﺨﺖاﻓﺰاري رﯾﺴﺖ ﺷﻮد. ﺑﺮاي اﯾﻨﮑﺎر‬ ﻣﺨﺎﻟﻒ ﻫﻤﻪ دﺳﺘﻮرﻫﺎ ﺑﺎﯾﺪ ‪ CS‬ﻏﯿﺮ ﻓﻌﺎل ﺷﻮد ﺳﭙﺲ ده ﺑﺎر ﻋﺪد ‪ 0XFF‬از ﻃﺮﯾﻖ ‪ SPI‬ﺑﻪ‬ ﻣﻤﻮري ارﺳﺎل ﺷﻮد. ﺑﻼﻓﺎﺻﻠﻪ ﻋﺪد ‪0X40 ‬ ﮐﻪ دﺳﺘﻮر ‪ RESET‬ﻣﯽﺑﺎﺷﺪ ارﺳﺎل و ﭼﻬﺎر ﺑﺎر ﻋﺪد‬ 0X00  ارﺳﺎل ﺷﻮد. در اداﻣﻪ ﻋﺪد 0X95‪ ‬ارﺳﺎل ﺷﻮد و ﺗﺎ زﻣﺎﻧﯿﮑﻪ ﻋﺪد 0X01‪ ‬از ﻃﺮف‬ ﻣﻤﻮري درﯾﺎﻓﺖ ﻧﺸﺪ ﺑﻪ ﻣﻤﻮري ﻋﺪد ‪ 0XFF‬ارﺳﺎل ﺷﻮد.‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬
‫2.مقدار دهي اوليه ‪ :INITIALIZATION MEMORY‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬
ﺑﺮاي ‪ INIT‬ﮐﺮدن ﻣﻤﻮري اﺑﺘﺪا ‪ CS‬را ﻓﻌﺎل‬ ﮐﺮده و ﻋﺪد 0X41‪ ‬را ارﺳﺎل ﻣﯽﮐﻨﯿﻢ و ﺑﻼﻓﺎﺻﻠﻪ ﭼﻬﺎر ﺑﺎر ﺻﻔﺮ را ارﺳﺎل ﮐﺮده و ﺗﺎ زﻣﺎﻧﯿﮑﻪ از‬ ﻃﺮف ﻣﻤﻮري ﻋﺪد 0X00‬ درﯾﺎﻓﺖ ﻧﺸﺪ ﺑﻪ ﻣﻤﻮري ﻋﺪد ‪ 0XFF‬را ارﺳﺎل ﻣﯽﮐﻨﯿﻢ.‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬
‫‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬
‫3. ﺧﻮاﻧﺪن ﯾﮏ ﺳﮑﺘﻮر از ﻣﻤﻮري: ‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬
ﺑﻌﺪ از ﻓﻌﺎل ﺷﺪن ‪ CS‬و ﻋﺪد 0X15‪ ‬را ﺑﻪ آن ارﺳﺎل ﻣﯽﮐﻨﯿﻢ و ﺑﻪ ﺻﻮرت ‪ BIG INDIAN‬دو ﺑﺮاﺑﺮ آدرس ﻣﻮرد ﻧﻈﺮ را ﺑﻪ ﻣﻤﻮري ارﺳﺎل ﮐﺮده و ﯾﮏ‬ ﺑﺎر ﻋﺪد 0X00‪ ‬را ارﺳﺎل ﮐﺮده و ﺗﺎ زﻣﺎﻧﯿﮑﻪ ﻋﺪد ‪  0XFE‬را درﯾﺎﻓﺖ ﻧﮑﺮدﯾﻢ ﺑﻪ ﻣﻤﻮري ﻋﺪد‬ 0XFF‬را ارﺳﺎل ﻣﯽﮐﻨﯿﻢ. در اﯾﻦ ﻟﺤﻈﻪ ﻣﻤﻮري آﻣﺎده ارﺳﺎل دادهﻫﺎي ﻣﻮﺟﻮد در ﺳﮑﺘﻮر ﻣﻮرد‬ ﻧﻈﺮ ﺑﻮده و ﺑﺎ ﻫﺮ ﺑﺎر ارﺳﺎل ‪ 0XFF‬ﯾﮑﯽ از 512 ﺑﺎﯾﺖ را ارﺳﺎل ﻣﯽﮐﻨﺪ.‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬
‫‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬
‫ ‫4. ﻧﻮﺷﺘﻦ در ﯾﮏ ﺳﮑﺘﻮر:
 ﺑﺮاي ﻧﻮﺷﺘﻦ در ﯾﮏ ﺳﮑﺘﻮر اﺑﺘﺪا ﻋﺪد0X58  ارﺳﺎل ﺷﺪه ﺳﭙﺲ دو‬ ‬ ﺑﺮاﺑﺮ آدرس ﺳﮑﺘﻮر ﻣﻮرد ﻧﻈﺮ ارﺳﺎل و ﺳﻪ ﺑﺎر  0XFF و يك بار 0XFE ارسال شده در اين لحظه مي توان 512 بايت داده را ارسال كرد بعد از اين داده ها دو بار 0XFF ارسال مي شود و مي توان CS را غير فعال كرد. البته در اين پروژه تنها خواندن اطلاعات نياز است.‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬

[1] . Secure Digital