اطلاعیه

Collapse
No announcement yet.

ارتباط spi بین چند میکرو و ادوات دیگر

Collapse
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    ارتباط spi بین چند میکرو و ادوات دیگر

    سلام دوستان گلم
    من یک مقاله ای راجب ارتباط spi با کدویژن پیدا کردم.خیلی زیبا و مختصر یکی از دوستان گذاشته بود:

    http://www.eca.ir/forum2/index.php?action=dlattach;topic=8658.0;attach=5851


    ولی من نفهمیدم چطور توی یک باس spi میتونم چندتا دستگاه رو کنترل کنم.
    فرض کنین یک مستر داریم و دوتا میکرو atmega8 هم به باس ما وصل اند.
    چطور یکیشونو انتخاب کنم و اطلاعات رو بفرستم ؟
    یا یک ic ساعت و mmc دارم با یک میکرو توی باس spi ، چطوری اینارو انتخاب کنم ؟

    با تشکر از دوستانی که همیشه کمک میکنن :redface: :read:

    #2
    پاسخ : ارتباط spi بین چند میکرو و ادوات دیگر

    سلام
    در پروتکل spi یه پین داریم به اسم cs یا انتخاب کننده slave.
    شما با استفاده از این پین هست که می تونید به slave مورد نظر فرمان بدین.
    چرا ناراحتی پاتریک!
    + امروز ی بچه دیدم سرچهارراه گل میفروخت
    - از دیدنش ناراحت شدی؟
    + نه
    پس چی ناراحتت کرده
    + اینکه دیدن اینجور بچه ها انقدر واسم عادی شده که دیگه ناراحتم نمیکنه
    ------------------------------------------------------------------------------------------------------
    تاحالا فکر کردی بیسواد کیه؟- بی سواد یعنی کسی که نمیتونه ذهنیاتش رو عملی کنه!
    ------------------------------------------------------------------------------------------------------
    محصولات

    دیدگاه


      #3
      پاسخ : پاسخ : ارتباط spi بین چند میکرو و ادوات دیگر

      نوشته اصلی توسط سوران آراسته
      سلام
      در پروتکل spi یه پین داریم به اسم cs یا انتخاب کننده slave.
      شما با استفاده از این پین هست که می تونید به slave مورد نظر فرمان بدین.
      سلام سوران جان
      در این حد رو که میدونم :smile:
      ولی چطوری خوب؟همه میگن و همه جا نوشته که این پایه هست میشه انتخاب کرد ولی یک مثال نزدن.... :sad:
      میشه یک مثال بزنی؟با کدویژن.مثلا دو یا سه تا دیوایس داری میخوای انتخاب کنی.
      مرسی

      دیدگاه


        #4
        پاسخ : ارتباط spi بین چند میکرو و ادوات دیگر

        خیلی خب پس تا اینجا حله
        ما یه شیفت رجیستر داریم به شماره 74595، این شیفت رجیستر پروتکل ارتباطیش همین spi که مد نظر ماست. الان من می خوام 4 تا از این تراشه رو با یه میکرو راه اندازی کنم. خب پایه sck و mosi بین هر چهار ای سی مشترک میشه و چهار پایه دیگه به عنوان انتخاب کننده slave از میکرو رو انتخاب می کنیم و به پایه فعال ساز تراشه متصل می کنیم.
        حالا با استفاده از این چهار تا پایه و با توجه به اینکه این پین در 74595 با چه سطحی یا لبه ای فعال میشن میایم در لحظه مورد نظر و با استفاده از این چهار پایه slave مورد نظر رو انتخاب می کنیم.
        امیدوارم تونسته باشم مفهوم رو برسونم.
        بازم سوالی بود در خدمتم.
        موفق باشید
        چرا ناراحتی پاتریک!
        + امروز ی بچه دیدم سرچهارراه گل میفروخت
        - از دیدنش ناراحت شدی؟
        + نه
        پس چی ناراحتت کرده
        + اینکه دیدن اینجور بچه ها انقدر واسم عادی شده که دیگه ناراحتم نمیکنه
        ------------------------------------------------------------------------------------------------------
        تاحالا فکر کردی بیسواد کیه؟- بی سواد یعنی کسی که نمیتونه ذهنیاتش رو عملی کنه!
        ------------------------------------------------------------------------------------------------------
        محصولات

        دیدگاه


          #5
          پاسخ : ارتباط spi بین چند میکرو و ادوات دیگر

          فکر کنم اسم اون پایه SS هستش! Select Sleve
          همه پایه های SCK و MOSI و MISO مال همه اجزای جانبی یا دیگر میکرو ها رو به هم وصل میکنید ولی SS رو نمیشه. وقتی می خوایین به یک جز جانبی اطلاعات بدی کافیه که اون پایه SS رو low کنی. یعنی با لاو کردن پایه مربوطه می تونی به اون جز جانبی می تونی بفهمونی که داری باهاش حرف میزنی و اینجوری اطلاعات به اون جزئی که می خوای می تونی بفرستی.

          دیدگاه


            #6
            پاسخ : پاسخ : ارتباط spi بین چند میکرو و ادوات دیگر

            نوشته اصلی توسط سوران آراسته
            خیلی خب پس تا اینجا حله
            ما یه شیفت رجیستر داریم به شماره 74595، این شیفت رجیستر پروتکل ارتباطیش همین spi که مد نظر ماست. الان من می خوام 4 تا از این تراشه رو با یه میکرو راه اندازی کنم. خب پایه sck و mosi بین هر چهار ای سی مشترک میشه و چهار پایه دیگه به عنوان انتخاب کننده slave از میکرو رو انتخاب می کنیم و به پایه فعال ساز تراشه متصل می کنیم.
            حالا با استفاده از این چهار تا پایه و با توجه به اینکه این پین در 74595 با چه سطحی یا لبه ای فعال میشن میایم در لحظه مورد نظر و با استفاده از این چهار پایه slave مورد نظر رو انتخاب می کنیم.
            امیدوارم تونسته باشم مفهوم رو برسونم.
            بازم سوالی بود در خدمتم.
            موفق باشید
            سوران جان من با 74595 تابلو روان 24*40 درست کردم با atmega8 و mmc :biggrin: ولی اصلا spi نداشتا ... فقط mmc رو با spi راه انداخنم 74595 رو هم سریال میفرستم لچ میکردم....یا من اشتباه میکنم؟ :redface:

            دیدگاه


              #7
              پاسخ : ارتباط spi بین چند میکرو و ادوات دیگر

              نوشته اصلی توسط rozeh
              فکر کنم اسم اون پایه SS هستش! Select Sleve
              همه پایه های SCK و MOSI و MISO مال همه اجزای جانبی یا دیگر میکرو ها رو به هم وصل میکنید ولی SS رو نمیشه. وقتی می خوایین به یک جز جانبی اطلاعات بدی کافیه که اون پایه SS رو low کنی. یعنی با لاو کردن پایه مربوطه می تونی به اون جز جانبی می تونی بفهمونی که داری باهاش حرف میزنی و اینجوری اطلاعات به اون جزئی که می خوای می تونی بفرستی.
              سلام rozeh جان.ممنونم :applause:
              دوست من به همین راحتی ؟ :smile:
              1-بورد spi چقدره ؟ تا 1 مترو جواب میده؟ یا 50 سانت باشه بهتره؟
              2-بعد من توی تابع spi فقط باید کد هگز بفرستم؟ یا char[] هم میتونم بفرستم؟
              من واسه یک جایی به دوتا rs485 نیاز دارم.میخوام دوتا atmega8 رو با spi به هم وصل کنم . و اطلاعات دریافتی از روی یکی از این rs485 هارو از یک طرف بگیرم پردازش کنم ، بدم به atmega دیگه و اون اطلاعات رو به شبکه بفرسته ....
              واسه همین میخوام اطلاعاتمو توی یک رشته مثلا با تول 512 بیت رو (char[512]) با spi بدم به اونی که به شبکه rs485 ام وصله...
              با تشکر از لطف شما دوستان عزیز

              دیدگاه


                #8
                پاسخ : ارتباط spi بین چند میکرو و ادوات دیگر

                نوشته اصلی توسط کیوان قاسمی
                سلام rozeh جان.ممنونم :applause:
                دوست من به همین راحتی ؟ :smile:
                1-بورد spi چقدره ؟ تا 1 مترو جواب میده؟ یا 50 سانت باشه بهتره؟
                2-بعد من توی تابع spi فقط باید کد هگز بفرستم؟ یا char[] هم میتونم بفرستم؟
                من واسه یک جایی به دوتا rs485 نیاز دارم.میخوام دوتا atmega8 رو با spi به هم وصل کنم . و اطلاعات دریافتی از روی یکی از این rs485 هارو از یک طرف بگیرم پردازش کنم ، بدم به atmega دیگه و اون اطلاعات رو به شبکه بفرسته ....
                واسه همین میخوام اطلاعاتمو توی یک رشته مثلا با تول 512 بیت رو (char[512]) با spi بدم به اونی که به شبکه rs485 ام وصله...
                با تشکر از لطف شما دوستان عزیز
                بله،
                اگه به تصویر زیر نگاه کنی متوجه میشی واسه هر جز جانبی یه SS جداگانه داره ولی بقیه پایه ها واسه همه مشترکه.



                البته یه مد دیگه هم داره که می تونی واسه اطلاعات بیشتر به این صفحه مراجعه کنی:

                http://en.wikipedia.org/wiki/Serial_..._Interface_Bus

                ببین هر پروتکلی که ساخته شده واسه یه کاری هستش حدودا. سرعت ها متفاوته و تاثیرات نویز هم متفاوته و بردشون هم متفاوته. این SPI فکر کنم واسه حافظه های جانبی بوده.
                1- توی پروتوکل ها فکر میکنم هر چقدر فاصله ها کمتر باشه کار بهتر انجام میشه. فکر کنم توی این فاصله هم کار کنه. البته این پروتکل ظاهرا واسه ی تو برد هستش. یعنی ممکنه نتونی واسه این مسافت استفاده کنید. واسه همچین مسافتی فکر کنم باید از RS232 استفاده کنی. مثلا پروتکل I2C فکر نکنم بیشتر از 1 متر بتونه باشه.
                2- مراجعه کنید به مثال های از قبل ساخته شده برای استفاده از این کد.
                والله من تا حالا از هیچ کدوم از پروتکل های ارتباطی استفاده نکردم. اینایی هم که گفتم چیزهایی بود که شنیده بودم. گفتم براتون بگم تا کمکتون کنه. اگه جایی هم اشتباه کردم امیدوارم دوستان بهتون بگن.

                دیدگاه


                  #9
                  پاسخ : ارتباط spi بین چند میکرو و ادوات دیگر

                  آخه من دوتا rs485 نیاز دارم واسه همین میخواستم دوتا میکرو با یک پورتکلی وصل کنم یکی دیتارو از یک شبکه دیگه ای بگیرهو پردازش کنه بعد خروجی بده یه یک شبکه دیگه....
                  فک میکردم با spi میشه... :sad:

                  به هر جال چیز جدید یاد گرفتم ممنون
                  اگه کسی پیشنهادی داره راهنماییم کنه لطفا :sad:

                  دیدگاه


                    #10
                    پاسخ : ارتباط spi بین چند میکرو و ادوات دیگر

                    می خوای با همون I2C انجام بده!

                    دیدگاه


                      #11
                      پاسخ : ارتباط spi بین چند میکرو و ادوات دیگر

                      اگه داده ات ثابت هستش حتی نیاز به پروتکل هم نیست.

                      دیدگاه


                        #12
                        پاسخ : ارتباط spi بین چند میکرو و ادوات دیگر

                        نوشته اصلی توسط rozeh
                        می خوای با همون I2C انجام بده!
                        rozeh جان الان فهمیدم که میتونم داده هام رو کاراکتر کاراکتر چون توی فایل هدر spi اینو نوشته :

                        unsigned char spi(unsigned char data);

                        باید درون یک حلقه کاراکتر درون یک رشتمو به میکرو دیگم ارسال کنم.دقیقا برای کار با mcc دبه صورت سکتور به سکتور همیکارو میکنیم :nice:

                        حالا واسه میکروی گیرنده باید چطور برنامه بنویسم ؟ الان مستر به اون فرمان برده شدن میده ... من با spi توی حلقه دارم کاراکترامو میفرستم ... چطور از اون ور ذخیره کنم ؟ یعنی حالت رسیور چطور میشه؟ :read: :redface:
                        =====================
                        پاورقی :
                        راجب i2c این رو پیدا کردم :
                        http://www.eca.ir/forum2/index.php?t...0932#msg450932
                        که آقای حسام الدین خیلی کامل توضیح دادن.
                        ولی نمیدونم چطور ازش استفاده کنم. :sad: مثلا دوتا میکرو بهم وصل میکنیم آدرساشون چی میشه؟ مثالی هست واسم بزاری؟عملی باشه.

                        دیدگاه


                          #13
                          پاسخ : ارتباط spi بین چند میکرو و ادوات دیگر

                          واسه spi اینو پیدا کردم :
                          http://www.eca.ir/forum2/index.php?topic=14486.0

                          از ss هم استفاده نکرده واسه انتخاب slave....
                          مگه قرار نشد اول slave رو انتخاب کنیم بعد داده بفرستیم... :sad:
                          ولی چیزی نفهمیدم .میخوام مثل سریال وقفه داشته باشم که slave بره به حالت رسیو ...

                          دیدگاه


                            #14
                            پاسخ : ارتباط spi بین چند میکرو و ادوات دیگر

                            کیوان جان من همون 74595 رو با spi راه اندازی کردم!!!
                            اون پایه هم بله تو میکرو نوشته ss و همون cs هستش. اما پایه ss در ارتباط به صورت سخت افزاری خودش تغییر وضیعیت میده. مثلا موقع اتصال دوتا میکرو به هم.
                            بقیه مطالب هم می سپارم دست rozeh عزیز.
                            موفق باشید
                            چرا ناراحتی پاتریک!
                            + امروز ی بچه دیدم سرچهارراه گل میفروخت
                            - از دیدنش ناراحت شدی؟
                            + نه
                            پس چی ناراحتت کرده
                            + اینکه دیدن اینجور بچه ها انقدر واسم عادی شده که دیگه ناراحتم نمیکنه
                            ------------------------------------------------------------------------------------------------------
                            تاحالا فکر کردی بیسواد کیه؟- بی سواد یعنی کسی که نمیتونه ذهنیاتش رو عملی کنه!
                            ------------------------------------------------------------------------------------------------------
                            محصولات

                            دیدگاه


                              #15
                              پاسخ : ارتباط spi بین چند میکرو و ادوات دیگر

                              نوشته اصلی توسط کیوان قاسمی
                              واسه spi اینو پیدا کردم :
                              http://www.eca.ir/forum2/index.php?topic=14486.0

                              از ss هم استفاده نکرده واسه انتخاب slave....
                              مگه قرار نشد اول slave رو انتخاب کنیم بعد داده بفرستیم... :sad:
                              ولی چیزی نفهمیدم .میخوام مثل سریال وقفه داشته باشم که slave بره به حالت رسیو ...
                              خب فکر کنم برای دریافت داده بهتره از وقفه خارجی استفاده کنی. فکر کنم میکرو مگا همشون بیشتر از 3 تا پایه واسه وقفه خارجی ندارن. پس فکر کنم اگه خود SPI یه سلکت اسو داشته باشه میشه 4تا رو با هم وصل کرد. اگه هم نداره بیشتر از 3 تا فکر نکنم بشه. واسه خواندن هم فکر کنم می تونی توی رویه وقفه(روتین سرویس وقفه) برنامه خوندن رو قرار بدی و مثلا توی یه آرایه قرار بدی.
                              Ok?

                              دیدگاه

                              لطفا صبر کنید...
                              X