اطلاعیه

Collapse
No announcement yet.

ارتباط spi تمام 2 طرفه (سخت افزاری )

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

    ارتباط spi تمام 2 طرفه (سخت افزاری )

    سلام
    فایلی که اپلود کردم شبیه سازی پروتیوس و
    2 فایل بیسکام برای ارتباط بین 2 میکرو هست از این ارتباط به صورت یک طرقه جواب گرفتم ولی در ارتباط تمام 2 طرفه میکرو در حالت اغمای وقفه ای باقی میمونه
    کسی میتونه کمکم کنه ؟

    http://bargiri.persiangig.com/.XPxq6eJSM4/spi%20-intrupt.rar
    [move][img width=133 height=100]http://bargiri.persiangig.com/aks/0.306310001356499787_taknaz_ir.gif[/img][/move]

    #2
    پاسخ : ارتباط spi تمام 2 طرفه (سخت افزاری )

    سلام
    عزیز جان اشتباه بستی که!!
    شما باید در میکرویی که به عنوان slave هستش پایه های MISO و MOSI رو برعکس کنی.
    روش کارشم سادست.
    شما در میکرو master پایه cs رو صفر می کنی بعد یه کد میفرستی و بعد عدد مورد نظرت اونور به محض گرفتن این کد عدد بعدی رو نمایش بده
    اگه متوجه نشدی بگو کاملترش کنم

    دیدگاه


      #3
      پاسخ : ارتباط spi تمام 2 طرفه (سخت افزاری )

      والا اصلا متوجه نشدم جای پایه ها رو عوض کردم ولی جواب نداد
      میشه توی فایل ها تصحیح کنید ؟
      [move][img width=133 height=100]http://bargiri.persiangig.com/aks/0.306310001356499787_taknaz_ir.gif[/img][/move]

      دیدگاه


        #4
        پاسخ : ارتباط spi تمام 2 طرفه (سخت افزاری )

        با سلام

        اولا پایه ها را درست بستید SPI مثل Uart نیست که بصورت ضربدری بسته شود
        دوما در SPI همانطور که خودتان در پیکر بندی نیز استفاده کردید ماستر (مستر) فرمانروای باس است وکنترل دست ماستر می باشد و اسلیو فقط به فرمانهای صادر شده از ماستر جواب میدهد اگر بخواهید داده ای را از اسلیو بخوانید بایستی ماستر از اسلیو بخواهد و باس را در اختیار آن قرار دهد ویا پیکر بندی ماستر اسیلیو عوض شود که من پیشنهاد نمیکنم البته در شرایطی میتوان با صفر کردن پایه cs ماستر , ماستر را به مد اسلیو برد که نمیدانم بیسکام پشتیبانی میکند ویانه ولی ساده ترین راه همان درخواست داده توسط ماستر می باشد

        دیدگاه


          #5
          پاسخ : ارتباط spi تمام 2 طرفه (سخت افزاری )

          :cry:
          اخه این چه توع پروتکلی هست !!
          خوب اگه ارتباط 1 طرفه هست چرا 3 تاسیم
          اگه دو طرفه هست جرا اینقدر سخت
          توی ماژول های مثل rfm 12ارسال و دریافت چگونست ؟
          [move][img width=133 height=100]http://bargiri.persiangig.com/aks/0.306310001356499787_taknaz_ir.gif[/img][/move]

          دیدگاه


            #6
            پاسخ : ارتباط spi تمام 2 طرفه (سخت افزاری )

            سلام
            با عرض پوزش یه اشتباه کوچیک پیش اومد من با MMC اشتباه گرفتم که گفنم ضربدری وصل کن.این دوستمون درست گفتن .
            اما بطور کلی:
            MOSIیعنی خروجی مستر و ورودی اسلیو
            MISO یعنی خروجی اسلیو و ورودی مستر
            این پرتوکل طوری طراحی شده که مستر هر وقت بخواید اطلاعاتش رو از اسلیو بخونه
            خب حالا میشه با کنترل پایه cs مستر میکروی مستر رو هم کنترل کرد.

            در مورد قسمت اخر صحبت هم باید بگم من با بیسکام کار نکردم نمیتونم زیاد نظر بدم ولی ربطی به زبان یا کامپایلر نداره شما با تغیرر رجیستر های spi میتونی مود رو از مستر بi اسلیو تغییر بدی هیچی ربطی نداره که اولش چی بوده.

            دیدگاه


              #7
              پاسخ : ارتباط spi تمام 2 طرفه (سخت افزاری )

              مگه تو mmc ضربدری بسته میشه؟؟؟

              دیدگاه


                #8
                پاسخ : ارتباط spi تمام 2 طرفه (سخت افزاری )

                نوشته اصلی توسط حامد رحیمی
                :cry:
                اخه این چه توع پروتکلی هست !!
                خوب اگه ارتباط 1 طرفه هست چرا 3 تاسیم
                اگه دو طرفه هست جرا اینقدر سخت
                توی ماژول های مثل rfm 12ارسال و دریافت چگونست ؟
                با سلام

                دوست من حتی در USB هم که دارای پروتکل ارتباطی پر سرعت و امنی است ماستر (کامپیوتر ) است که مدیریت باس را در دست دارد و اسلیو خود بخود قادر به تماس با ماستر نیست اگر میخواهید ارتباط دوطرفه تنها با دو دستگاه داشته باشید و هر دو قادر به ارسال داده در هر زمان باشد از ارتباط UART , USART با وقفه استفاده کن

                دیدگاه


                  #9
                  پاسخ : ارتباط spi تمام 2 طرفه (سخت افزاری )

                  ولی اگه میخواهید راجع به SPI بیشتر بدانید پیشنهاد میکنم فیلم های آقای کی نژاد را ببینید و یا به آدر ذیرس بروید
                  http://www.eca.ir/forum2/index.php?topic=11166.0

                  دیدگاه


                    #10
                    پاسخ : ارتباط spi تمام 2 طرفه (سخت افزاری )

                    جهت توضیحات بیشتر :

                    SPI یک پروتکل ارتباطی سریال full duplex یا تمام دوطرفه است.

                    یعنی زمانی که اطلاعاتی از مستر به اسلیو منتقل میشود(از طریق خط MOSI ) همزمان اطلاعات از اسلیو به مستر منتقل میشود(بوسیله ی خط MISO )

                    ولی در این پروتکل ارتباطی مستر مدیریت باس را دراختیار دارد . و هرزمان که مستر اراده کند این ارتباط دوطرفه شروع میشود، پس اسلیو به خودیه خود نمیتواند شروع به تبادل اطلاعات کند. و برای فرستادن اطلاعات بایستی این اطلاعات را در جایی ذخیره کند(رجیستر) و با شروع تبادل اطلاعات توسط مستر و ایجاد یک ارتباط دوطرفه اطلاعات را به مستر بدهد.

                    یک سری تعاریف:
                    ارتباط تمام دوطرفه یا full duplex :
                    زمانی از این اصطلاح استفاده میکنیم که یک دیوایس در لینک موجود بتواند همزمانی که دیتا ارسال میکند بتواند دیتا دریافت کند.

                    ارتباط نیمه دوطرفه یا half duplex :
                    دیوایس در لینک موجود در یک زمان خاص یا فقط دریافت کننده باشد یا فقط ارسال کننده.

                    در رابطه با SPI :
                    در این پروتکل به غیر از MOSI و MISO دو خط دیگر به نامهای SCK و CS (یا ss که عمدتا در لاجیک منفی هستند( صفر - set ) ) وجود دارند.
                    کنترل هردوی این خطها در دست مستر است.
                    گفته شد که زمانی که مستر اراده کند ارتباط شروع میشود.
                    برای اینکار کافیه مستر خط CS را صفر کند . با اینکار اسلیو میفهمه که ارتباط شروع شده. حالا مستر با هر کلاک که روی پین SCK میزند از طریق MOSI یک بیت به اسلیو میفرستد و همچنین همزمان اسلیو با هر کلاک روی SCK از طریق MISO یک بیت به مستر میفرستد.
                    برای اتمام تبادل اطلاعات کافی است مستر پین CS را یک کند و باس را به حالت IDLE یا بیکار در بیاورد.
                    راه اندازی ماژول nrf24l01p برای codevision (ارتباط بیسیم بین دو میکرو) : http://www.eca.ir/forum2/index.php?topic=78587.0
                    کوچ کردن از کدویژن به http://www.eca.ir/forum2/index.php?topic=81025.0 : AtmelStudio
                    نحوه نوشتن اصولی یک لایبرری و درایور نرم افزاری( بصورت ساده) : http://www.eca.ir/forum2/index.php?topic=81071
                    http://www.eca.ir/forum2/index.php?topic=82130.0 سفارش راه انداز ماژول های مختلف توسط اعضای انجمن
                    انشالله به زودی تاپیک ها به روز رسانی خواهد شد،

                    دیدگاه


                      #11
                      پاسخ : ارتباط spi تمام 2 طرفه (سخت افزاری )

                      نوشته اصلی توسط RubeuS

                      یعنی زمانی که اطلاعاتی از مستر به اسلیو منتقل میشود(از طریق خط MOSI ) همزمان اطلاعات از اسلیو به مستر منتقل میشود(بوسیله ی خط MISO )

                      این اطلاعات هر دو یک کاراکتر هستند ؟
                      یعنی اطلاعاتی که از اسلیو به مستر میاد ؟
                      با اطلاعاطی که از مستر به اسلیو میره یکیه؟(یه چیزی برای تشخیص خطاست ؟)
                      یا هر اطلاعاتی میتونه باشه ؟
                      ولی فکر کنم باید هم اندازه با تعداد کاراکتر ها ارسالی باشه جون به ازای هر بیت ارسال هر بیت دریافت داریم !
                      [move][img width=133 height=100]http://bargiri.persiangig.com/aks/0.306310001356499787_taknaz_ir.gif[/img][/move]

                      دیدگاه


                        #12
                        پاسخ : ارتباط spi تمام 2 طرفه (سخت افزاری )

                        نوشته اصلی توسط حمید نجفی
                        سلام
                        بچه ها این تاپیک رو باز کردم تا یه بحث اساسی در مورد این پرتکل عذاب آور داشته باشیم.


                        دلم خنک شد
                        [move][img width=133 height=100]http://bargiri.persiangig.com/aks/0.306310001356499787_taknaz_ir.gif[/img][/move]

                        دیدگاه


                          #13
                          پاسخ : ارتباط spi تمام 2 طرفه (سخت افزاری )

                          یه سوال عجیب تر
                          فکر کنید یه ماژول مثلا rfm12به میکرو وصل شده !!
                          2 تا سوال بزرگ پیش میاد ؟
                          وقتی rfm12 داره دیتا دریافت میکنه باید بفرسته به میکرو در حالی که هیچ قدرتی در ارسال نداره ( استدلال بنده در این باره : باید همیشه خط رو توسط مستر فعال در حال کار نگه داشت )

                          دیتای دریافتی مستر رو رو چی مشخص میکنه ؟
                          ریجیستر های اسلیو ؟
                          شاید مستر 1 بایت اطلاعات برای فرستادن به اسلیو داره ولی اسلیو 10 بایت اطلاعات برای مستر داره این موقع قظیه چیه ؟
                          [move][img width=133 height=100]http://bargiri.persiangig.com/aks/0.306310001356499787_taknaz_ir.gif[/img][/move]

                          دیدگاه


                            #14
                            پاسخ : ارتباط spi تمام 2 طرفه (سخت افزاری )

                            نوشته اصلی توسط حامد رحیمی
                            این اطلاعات هر دو یک کاراکتر هستند ؟
                            یعنی اطلاعاتی که از اسلیو به مستر میاد ؟
                            با اطلاعاطی که از مستر به اسلیو میره یکیه؟(یه چیزی برای تشخیص خطاست ؟)
                            یا هر اطلاعاتی میتونه باشه ؟
                            ولی فکر کنم باید هم اندازه با تعداد کاراکتر ها ارسالی باشه جون به ازای هر بیت ارسال هر بیت دریافت داریم !
                            با سلام

                            شما داده خود را در ریجستر اسلیو ذخیره میکنید به محض برقراری ارتباط مستر با اسلیو هم زمان با ارسال بیت به بیت داده از طرف مستر داده اسلیو نیز منتقل میشود

                            دیدگاه


                              #15
                              پاسخ : ارتباط spi تمام 2 طرفه (سخت افزاری )

                              من برای ارتباط شبکه ای بین چند میکرو قبلا از rs485 استفاده می کردم و یک میکرو master بود و بقیه slave
                              با توجه به اینکه سرعت زیاد خوب نیست می خوام پرتکل رو عوض کنم به نظر spi خوب باشه نه؟
                              البته این رو در نظر داشته باشید که slave ها و master روی یک مدار چاپی نیستند و با همدیگر حدود 10 سانتیمتر فاصله دارند ، آیا این در ارتباط spi مشکلی ایجاد نمی کنه ؟

                              دیدگاه

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