NOTICE توجه: این یک موضوع قدیمی است که آخرین پست ارسالی آن مربوط به 4331 روز قبل است . لطفا فقط پاسخ ها ، سوالات و درخواست های 100 درصد مرتبط را به آن ارسال کنید و برای درخواست ها و سوالات جدید موضوع جدیدی را ایجاد کنید
نمایش نتایج: از 1 به 11 از 11

موضوع: ارتباط دو Master با یک Slave در مد SPI!?

  1. #1
    مدیر کل انجمن ها morteza_rk آواتار ها
    تاریخ عضویت
    Apr 2009
    نام
    مرتضی رحیمی کردمحله
    نوشته ها
    2,071
    تشکر
    2,376
    تشکر شده 2,899 بار در 1,263 پست

    پیش فرض ارتباط دو Master با یک Slave در مد SPI!?

    سلام

    یه سوالی برام پیش اومده! دو تا Master چطور می تونن در مد SPI با یک Slave ارتباط برقرار کنن؟

    اگه برعکس باشه میشه از طریق پایه ی Chip Select قطعه ی Slave مورد نظر رو انتخاب کرد و دیتا رو بهش متقل کرد ولی اینجا اینطوری نیست ، چون دوتا Slave نداریم.

    فکر می کنم یکی از راه ها استفاده از بافر باشه. بدین صورت که ما Slave رو از طریق دو سری بافر به Masterها وصل می کنیم. حالا هر وقت که خواستیم دیتارو از طریق Master1 منتقل کنیم بافرهای مربوط به اونو روشن می کنیم و بافرهای Master2 رو در حالت خاموش (امپدانس بالا) قرار میدیم و برعکس.

    آیا روش دیگه ای هم هست؟
    .
    اَللّهُمَ صَلّ عَلی مُحَمَّد وَ آلِ مُحَمَّد وَ عَجّل الفَرَجَهُم


    وبلاگ شخصی من

  2. تشکرها از این نوشته :

    KHM

  3. # ADS
    Circuit advertisement
    تاریخ عضویت
    Always
    نام
    Advertising world
    نوشته ها
    Many
     

  4. #2
    کاربر علاقه مند
    تاریخ عضویت
    Apr 2012
    نوشته ها
    32
    تشکر
    0
    تشکر شده 82 بار در 29 پست

    پیش فرض

    سلام
    چه نیازی هست به دوتا مستر ؟
    کار شما شدنیه ولی هیچ منطقی نداره !!!
    در نهایت شما باید 1 مستر داشته باشید تا رو کار نظارت کنه اگه منظور شما 2 تا میکرو و یک قطعه جانبی که بازم میشه 2 تا Slave و یک Master چون جزء اصلی شبکه هستن
    اگه منظورتون رو اشتباه گرفتم لطفا توضیح بدی .

  5. #3
    ناظم سایت KHM آواتار ها
    تاریخ عضویت
    Jul 2010
    نوشته ها
    1,047
    تشکر
    2,895
    تشکر شده 2,131 بار در 905 پست

    پیش فرض

    من در این زمینه تجربه ای ندارم ولی نظرمو میگم..
    احتمالاً اگه تو مسیر هر کدوم از master ها مقاومت 130 تا 150 اهم بداری،کار کنه

  6. #4
    مدیر کل انجمن ها morteza_rk آواتار ها
    تاریخ عضویت
    Apr 2009
    نام
    مرتضی رحیمی کردمحله
    نوشته ها
    2,071
    تشکر
    2,376
    تشکر شده 2,899 بار در 1,263 پست

    پیش فرض

    کار شما شدنیه ولی هیچ منطقی نداره !!!
    در نهایت شما باید 1 مستر داشته باشید تا رو کار نظارت کنه اگه منظور شما 2 تا میکرو و یک قطعه جانبی که بازم میشه 2 تا Slave و یک Master چون جزء اصلی شبکه هستن
    راستش من اصلا سر در نیاوردم که شما چی گفتی؟!

    ما دوتا Master داریم که هیچ ربطی به هم نداریم و یک قطعه دارم که صرفا Slave هست و اون دوتا Master لازمه تا باهاش ارتباط برقرار کنن. حالا چرا این منطقی نیست من نمی دونم!؟

    کهرم جان فکر نمی کنم با مقاومت مشکل حل بشه!
    .
    اَللّهُمَ صَلّ عَلی مُحَمَّد وَ آلِ مُحَمَّد وَ عَجّل الفَرَجَهُم


    وبلاگ شخصی من

  7. #5
    کاربر علاقه مند
    تاریخ عضویت
    Apr 2012
    نوشته ها
    32
    تشکر
    0
    تشکر شده 82 بار در 29 پست

    پیش فرض

    عزیز زمان خوابم گزشته مغز یاری نمی ده !
    ببخشید بد گفتم از اول می گم :
    شما می گی 2 تا مستر دارید
    بعد 1 اسلیو
    الان چی تایین می کنه که کدوم مستر باید وصل باشه ؟
    خوب یکدوم حق دست رسی باید بدن ! پس در نهایت شما 1 مستر داری اگه اشتباه بفرما.

  8. #6
    کاربر فعال
    تاریخ عضویت
    Jul 2009
    نام
    مجید بهرامیان
    نوشته ها
    108
    تشکر
    137
    تشکر شده 99 بار در 47 پست

    پیش فرض

    من فکر می کنم این کار امکان پذیر نیست مگر اینکه هیچوقت master ها هم زمان نخواند که با slave ارتباط برقرار کنند ....(یا حداقل همون پایه ی chip select هر دو مستر به یکی از پایه های مستر دیگه وصل باشه که مثلا اگر یکی از این پایه ها low شده اون یکی از مستره فعلا قصد ارتباط با slave رو نداشته باشه تا این که پایه ی chip select اون یکی مستر high بشه )
    با این فرض میشه برای پایه ی chip select از یه گیت and دو ورودی استفاه کرد که ورودی اون پایه های cs مسترها باشه .

  9. #7
    مدیرکل انجمنها
    تاریخ عضویت
    May 2011
    نام
    احسان صفامنش
    نوشته ها
    1,763
    تشکر
    919
    تشکر شده 2,261 بار در 1,056 پست

    پیش فرض

    شاید دو تا میکرو به صورت مستر عمل کنند ولی در منطق ارتباط همونطور که user گفتن فقط یکی میتونه master باشه و اونیه که سیگنال enable رو کنترل میکنه. به هر حال اگه بافر هم بزارین باز یکی از میکرو ها میگه که بافر کدوم میکرو فعال باشه و اون میشه مستر

  10. #8
    مدیر بخش STM32 sigma-mx آواتار ها
    تاریخ عضویت
    Nov 2009
    نام
    سعید شریفیان
    نوشته ها
    1,421
    تشکر
    804
    تشکر شده 2,520 بار در 978 پست

    پیش فرض

    سلام
    این کار شدنیه ولی به شرط اینکه دو مستر همزمان با هم اکتیو نشن ! در اینصورت سیگنالهای MISO و MOSI و CLK با هم قاطی میشه .. و این یعنی اینکه ما در هر لحظه تنها یک مستر میتونیم داشته باشیم ! این قانون شبکه کردنه . در مورد همه پروتکلها این برقراره .... برای جلوگیری از اختلال باید یک خط سیگنال بین مستر ۱ و مستر ۲ برقرار باشه که همدیگه رو از وضعیت هم خبر دار کنند تا اگه یکی مستر شد دومی دیگه نشه . مثلا صبر کنه تا کار اولی تموم بشه بعد اون مستر بشه ...البته این کار رو با گیت notهم میشه انجام داد . نمی دونم منظورمو رسوندم یا نه ...

  11. #9
    مدیر کل انجمن ها morteza_rk آواتار ها
    تاریخ عضویت
    Apr 2009
    نام
    مرتضی رحیمی کردمحله
    نوشته ها
    2,071
    تشکر
    2,376
    تشکر شده 2,899 بار در 1,263 پست

    پیش فرض

    ممنون از همه ، الان دقیقا متوجه شدم.

    منظور منم همین بود که دوتا Master داریم ولی امکان نداره که اینا در آن واحد هر دو Mater باشن! وقتی یکی Master هست اون یکی باید خاموش باشه نه اینکه حتما Slave بشه.

    پس همون پیشنهادی که دادم برقراره! یعنی استفاده از بافری مثل 74HC244 ، این آی.سی دارای 8تا بافر هست که هر 4تا از بافرها با یک پایه Enable میشن. در حالت Disable هم خروجی بافرها امپدانس بالا هست (مدار باز). کافیه که یکی از مسترها این دوتا پایه رو کنترل کنه.

    User جان اولش منظور شمارو بد متوجه شدم. با تشکر از تمامی دوستان گلـــــــــــم.
    .
    اَللّهُمَ صَلّ عَلی مُحَمَّد وَ آلِ مُحَمَّد وَ عَجّل الفَرَجَهُم


    وبلاگ شخصی من

  12. تشکرها از این نوشته :

    KHM

  13. #10
    مدیرکل انجمنها agape آواتار ها
    تاریخ عضویت
    Feb 2009
    نام
    Zeus
    نوشته ها
    1,235
    تشکر
    139
    تشکر شده 2,209 بار در 846 پست

    پیش فرض

    دایی جان این پرتکل بر خلاف I2C که قابلیت چند مستری رو ساپورت میکنه ، قادر به ساپورت ذاتی نیست و اگر بخواید این کار رو انجام بدید نیاز به پیاده سازی کدی هست که قادر به تشخیص مشغول بودن دوایس رو داشته باشه ولی از کجا میتونیم بفهمیم که دوایسمون الان در حال استفاده است، از طریق پایه CS هر مستر میشه اینو فهمید و اما خلاصه:
    اول تمام پایه ها به صورت input هستن و فرض کنیم مستر یک قصد استفاده از دویس رو داره چک میکنه ببینه پایه CS دوایس 1 هست یا نه اگر یک بود به این منظور هست که دوایس آزاد هستش و بلا فاصله میآد و این پایه از پورت خودش رو خروجی میکنه و البته صفر ، این اتفاق باعث این میشه که دوایس رو در اختیار بگیره ، و وقتی کارش تمام شد دوباره تمام پایه ها رو ورودی میکنه، حالا فرض کنیم که در مدت زمانی که مستر یک داره از دوایس استفاد ه میکنه مستر دو هم قصد استفاده رو داره میآد چک میکنه می بینه ای وای پپایه CS صفر هست پس این نشون میده که دوایس مشغول هست و باید صبر کنه که این پایه یک بشه و بعد بیاد و عملیات در اختیار گیری رو انجام بده .
    در این روش نیاز به هیچ قطعه اضافه نیست و باس ها به هم وصل میشن ، در لحظه بی کاری تمام پایه ها ورودی هستن مگر در حالت استفاده و پایه CS رو با یه مقاومت باید پول آپ کرد.

  14. تشکرها از این نوشته :


  15. #11
    مدیر کل انجمن ها morteza_rk آواتار ها
    تاریخ عضویت
    Apr 2009
    نام
    مرتضی رحیمی کردمحله
    نوشته ها
    2,071
    تشکر
    2,376
    تشکر شده 2,899 بار در 1,263 پست

    پیش فرض

    سلام دائی جان

    لذت بردم واقعا! روش جالبی بود و بخوبی هم متوجه شدم. اما در این قسمت من نمی تونم ازش استفاده کنم. چون از بین دو Master من فقط کنترل یکی رو در اختیار دارم و نمی تونم Master دوم رو کنترل کنم. (آخه میکرو نیست یه آی.سی هست و کلا SPI سخت افزاری داره) .

    ولی در کل با پاسخ شما و سایر دوستان شیر فهم شدم!
    .
    اَللّهُمَ صَلّ عَلی مُحَمَّد وَ آلِ مُحَمَّد وَ عَجّل الفَرَجَهُم


    وبلاگ شخصی من

موضوعات مشابه

  1. modbus slave
    توسط naser134 در انجمن AVR
    پاسخ: 3
    آخرين نوشته: 14-12-2012, 21:56

مجوز های ارسال و ویرایش

  • شما نمیتوانید موضوع جدیدی ارسال کنید
  • شما امکان ارسال پاسخ را ندارید
  • شما نمیتوانید فایل پیوست کنید.
  • شما نمیتوانید پست های خود را ویرایش کنید
  •