|
الکترونیک ورایانه
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
درباره وبلاگ
![]() منوی اصلی
نویسندگان
مجتبی نظام هاشمی
آرشیو مطالب
جستوجوگر گوگل
آمار بازدید کنندگان پیوندها
برق والکترونيک مقالات الکترونیک ایران مدار آموزش الکترونیک پروژه های الکترونیک مرجع مدارات الکترونیک آموزش انواع مدارچاپی مهندسی برق الکترونیک دانشگاه شوشتر . . . . . . . . . . . |
ارتباط سریال SPI
ارتباط سریال SPI ( ( Serial Peripheral interface
این پروتکل برای ارسال سنکرون با سرعت بالا استفاده میشود. این شیوه ارتباط دارای مزایای زیر است: 1. ارسال داده به صورت سنکرون توسط سه سیم 2. عملکرد در حالتهای Slave , Master 3. هفت سرعت قابل برنامهريزي 4. ايجاد وقفه در پايان ارسال 5. بيدارشدن از مد IDEL 6. امكان 2 برابر شدن نرخ ارسال اما ویژگی بارز و مورد توجه این پرتکل در این است که اکثر لوازم که به صورت سریال به تبادل داده می پردازند آن را پشتیبانی می کنند به عنوان مثال کارت های حافظه MMC (کارت های حافظه متداول برای تلفن همراه) به راحتی توسط این پرتکل ارتباطی توسط میکرو درایو می شوند و حجم وسیع حافظه را در اختیار طراح می گذارند
البته بعد از اتمام معرفی میکرو کنترلر های AVR به معرفی این گونه حافظه ها می پردازیم این واحد توسط ثبات ها SPCR و SPSR کنترل می شود
بخش های این واحد را می توانید در تصویر زیر مشاهده نماید
زماني كه سيستم Master پایه ( Slave Select ) SS را زمين كند سيكل ارتباطي آغاز ميشود .در اين حالت كلاک پالس مورد نياز توسط سيستم Master بر روي پايه SCK قرار میگیرد ودادهها از طریق پایه MOSI از سيستم اصلي به سيستم كاربر و از طريق پايه MISO از سیستم کاربر به سیستم اصلی شیفت مییابد. در پایان هر فریم با یک شدن پایه SS دو سيستم سنكرون ميشوند.
SPI برای ارسال یک یافر 8 بیتی و برای دریافت 2 یافر 8 بیتی دارد. در حالت Slave واحد كنترل SPI سیگنال ورودی از پایه SCK را نمونه برداري ميكند لذا براي اطمينان از نمونهبرداري صحيح فركانس SPI نباید بیشتر از 4/1 فرکانس کریستال باشد. در میکرو کنترلر های AVR تنظیمات این این ارتباط توسط ثبات SPCR انجام می شود
به منظور بکار گیری میکرو در این مد با ید به شیوه زیر عمل کنیم 1) ابتدا برای میکرو مشخص می کنیم که در چه وضعیتی به تبادل اطلاعات می پردازد آیا به صورت میکرو مرکزی (Master ) دیگر میکرو ها را کنترل می کند یا به صورت پیرو (Slave ) با میکرو مر کزی در ارتباط است برای این منظور از بیت MSTR در ثبات SPCR استفاده می کنیم با يك شدن اين بيت SPI به صورت Master انتخاب ميشود در غير اين صورت Slave تنظیم میشود دقت داشته باشید اگر این بیت یک وپایه SS به صورت ورودي تعريف شده باشد يا صفر شدن پایهSS بین بیت پاک میشود و بیت SPIE در ثبات SPSR فعال میگردد لذا برای برگشت به مد Master بايد اين بيت را يك كرد . 2) سپس تعیین میکنیم داده موجود در بافر SPDR به ترتیب از پر ارزش ترین بیت( MSB) شروع به انتقال کند یا از کم ارزش ترین بیت LSB) )
برای این منظور ازا بیت DORD در ثبات SPCRاستفاده می کنیم با یک شدن این بیت ابتدا LSB ارسال ميشود و با صفر شدن آن ابتدا MSB ارسال می گردد 3) در صورتی که در مد Master کار می کنیم فرکانس کلاک پالس پایه SCK را که به منظور تبادل داده به واحد های پیرو ارسال می گردد را به کمک بیت های SPR0 و SPR1 در ثبات SPCR تعیین می کنیم در این میان در صورتی که بیت SPI2X در ثبات SPSR یک باشد این فرکانس دو برابر می شود لذا فکانس پایه SCK مطابق جدول زیر تعیین می گردد:
فرکانس پایه SCK د در مد عمل کرد Slave تأثیر ندارند. 4) برای میکرو مشخص می کنیم داده هایی که مابین واحد اصلی و واحد پیرو در حال تبادل است در لبه بالا رونده کلاک SCK نمونه برداری شود یا در لبه پایین رونده برای این منظور از بیت CPHA استفاده می کنیم در صورت یک بودن در لبه بالا رونده و در صورت صفر بودن در لبه پایین رونده نمونه برداری صورت می گیرد همچنین تعیین می کنیم پایه سزن در هنگام استراحت در حالت یک باشد یا صفر برای این منظور از بیت CPOL استفاده می کنیم با یک شدن این بیت درحالت استراحت پایه SCK يك ودر غير اين صورت صفر ميشود . تر کیب این دو بیت (CPHAو CPOL ) چهار مد ارسال داده را به وجود می آورد CPOL and CPHA Functionality
در تصاویر زیر می توانید نحوه کلاک خوردن پایه SCK در هر کدام ازاین چهار مد تبادل داده و سنکرون کردن لحظات نمونه بردادری از پایه MISO / MOSI را که توسط میکرو صورت میگیرد را مشاهد نمایید
) وقفه مربوط به ارسال داده را فعال کنیم برای این منظور بیت SPIE در ثبات SPCR را فعال می کنیم هنگامی که ارسال داده تکمیل می شود بیت SPLF در ثبات SPSR یک می شود و در صورتی که بیت های I ( در ثبات وضعیت ) و بیت SPIE در ثبات SPCR فعال باشند وقفه روي ميدهد و میکرو برای اجرا دستورات به زیر روال وقفه می رود 6) در آخر برای فعال سازی این واحد بیت SPE در ثبات SPCR را فعال ميکنیم تا ارتباط و تبادل داده برقرار شود در هنگام استفاده از واحد SPI در مورد پایه( Slave Select ) SS باید نکات زیر را مد نظر داشت: کارکرد پایه SSدر مد Slave : در این حالت SS به صورت ورودي تعريف شده زماني كه صفر شود SPI فعال میگردد پایه MISD بايد به صورت خروجي تعريف شود ( توسط برنامه نويس ) دو پایه دیگر نیز به صورت ورودیاند زمانی که SS يك شود SPI بازنشانی شده و غیرفعال میگردد. کارکرد در مد Master در اين مد ورودي با خروجي بودن SS توسط برنامه نویس تعیین میشود. اگر خروجی تعریف شود درعملکرد SPI تأثيري ندارد اما اگر ورودي تعريف شود براي اطمينان از عملكرد صحيح باید به صورت فعال ( يك) نگه داشته شود. هنگام استفاده از واحد SPI برای آنکه از امکان اتصال کوتاه شدن باس جلوگیری به عمل آید سيستم SPI به صورت زیر عمل میکند : 1. بیت MSTR در ثبات SPCR صفر میشود و سیستم به صورت Slave درميآيد و پايههاي SCK , MOSI ورودی میگردند. 2. پرچم SPIF واقع در ثبات SPSR یک میگردد و در صورتیکه وقفه SPI و بيت I از ثبات وضعیت فعلاً فعال شده باشند سرویس وقفه اجرا میشود. بنابراین زمانی که در مد Master از وقفها رسال SPL استفاده میگردد احتمال صفر شدن SS وجوددارد لذا در زير روال وقفه اين پايه چك ميشود تا همراه با يك باشد. همچنین خطای دیگری که هنگام استفاده از این واحد ممکن است روی دهد باز نویسی داده های ارسالی در ثبات بافر SPDR پیش از اتمام ارسال داده های قبلی از این ثبات است دراین صورت بیت WCOL در ثبات SPSR به عنوان پرچم بروز خطا یک می شود اگر اين بيت فعال باشد با خواندن ثبات SPSR بیت های SPIF , WCOL پاك ميشوند سپس دسترسي به داده صورت ميگيرد. گردآورنده: مجتبی نظام هاشمی
/ نوشته شده توسط مجتبی در و ساعت |
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||