چون ما برای ارتباط مموری کارت با AVR از رابط SPI استفاده میکنیم نمیتونیم که دوتا مموری رو باهم راه بندازیم.
ولی اگه تغذیه ی مموری ها با میکرو کنترل بشه فکر کنم بشه که اول یکی رو راه اندازی کرد و وقتی وارد مد SPI شد میکرو مموری دوم رو روشن کنه و اونو هم راه اندازی کنه.
یه راه دیگه هم اینه که مموری دوم رو به یه باس SPI دیگه که به صورت نرم افزاری درست کردید وصل کنید.تو این حالت اصلا مموری ها باهم تداخل ندارند.
در کل کار جالبی نیست چون برای کنترل هر دوشون نیاز به رم بیشتری دارید. سرعت میکرو برای کار با یکیشون هم کافی نیست حالا چه برسه که دوتا بشند.
به راحتی میشه این کار را انجام داد.از اونجایی که هر mmc دارای یک پایه CS(Chip Select) است،با یک spi میکرو و استفاده از چند پایه به عنوان پایه SS میتوان این کار را کرد.دوستانی که اعتقاد دارند این کار را نمیشه کرد یک بار دیگه فصل رابط spi میکرو را بخوانند تا متوجه شوند که با یک masterمیتوان چند slave را کنترل کرد.
اما روش کار این گونه است که:
پایه SI ,SO,CLK همه mmc ها را به پایه MOSI,MISO,SCK میکرو متصل کنید و پایه CS هر mmc را به یکی از پایه های میکرو متصل کنید.با هر با صفر کردن یکی از پایه های میکرو،پایه CS یکی از mmc ها صفر شده و آن mmc در حالت انتخاب قرار میگیرد و قابل خواندن و نوشتن خواهد بود.
به راحتی میشه این کار را انجام داد.از اونجایی که هر mmc دارای یک پایه CS(Chip Select) است،با یک spi میکرو و استفاده از چند پایه به عنوان پایه SS میتوان این کار را کرد.دوستانی که اعتقاد دارند این کار را نمیشه کرد یک بار دیگه فصل رابط spi میکرو را بخوانند تا متوجه شوند که با یک masterمیتوان چند slave را کنترل کرد.
دوستانی هم که اعتقاد دارند میشه یه نگاهی به انتخاب مد SPI در MMC ها بندازند تا متوجه بشند مشکلش کجاست. :agree:
اگه شما خوب فصل رابط SPI رو خونده باشید حتما باید متوجه شده باشید که وقتی که master پایه ی SS هر کدوم از Slave ها رو LOW کنه .اون slave انتخاب میشه.خوب مشکل وقتی پیدا میشه که ما میخوایم وارد مد SPI کارت بشیم و اونو ریست کنیم.تو این شرایط باید SS رو HIGH کرد و ارتباط رو آغاز کرد. چون تو این شرایط هر دو کارت میخواهند که ریجستر r1 خودشونو به master بفرستند ,تداخل به وجود میاد و نمیشه تشخیص داد که کدوم کارت فعال شده.برای حل این مشکل من پیشنهاد کردم که تغذیه ی کارت دوم رو با میکرو کنترل کنیم. وقتی که کارت دوم خاموشه ,ما ارتباط رو با کارت اول انجام میدیم و وقتی که کارت اول Init شد کارت دوم رو روشن میکنیم و اون رو هم Init میکنیم. بعد از این میشه با هردو کارت مثل یه slave معمولی برخورد کرد.یعنی SS پایین به معنای انتخاب اونهاست.
میخوای حافظه ی ثابت چقدر حجم داشته باشه؟
اگه حجم کم میخوای (حدود چند مگ ) بهتره از فلش های SPI استفاده کنی.هم ساده تره و هم حجم برد کم میشه.
یه نمونه از این حافظه ها AT45DB16D هست.
دیدگاه