آموزش

پروتکل SPI چیست؟

در ارتباط بین دستگاه های الکترونیکی، درست همانند ارتباط بین انسان ها لازم است که دو طرف زبان یکدیگر را متوجه شوند. در الکترونیک این زبان مشترک بین دستگاه ها پروتکل نامیده می شود. در واقع پروتکل ها، قراردادهایی هستند که بین دو دستگاه در مورد نوع انتقال دیتا وجود دارند. از جمله سرعت انتقال، تعداد خطوط انتقال و …

یکی از انواع این پروتکل ها، پروتکل SPI است که برای ارتباط بین دو یا چند دستگاه استفاده می شود. در این نوع ارتباط یک دستگاه به عنوان Master و دستگاه های دیگر به عنوان Slave شناخته می شوند.

دستگاه های Master که عموما یک میکروکنترلر هستند وظیفه کنترل ارتباط و دیتای منتقل شده را دارد در حالی که Slave ها که معمولا انواع سنسورها، نمایشگرها و آیسی های حافظه هستند از Master دستور می گیرند.

در پروتکل SPI چهار خط انتقال بین Master و هر یک از Slave ها وجود دارند که هر یک وظیفه خاصی را بر عهده دارند. از آنجایی که این ارتباط به صورت سنکرون است یکی از این چهار خط ارتباطی مربوط به سیگنال کلاک (SCLK) است. MOSI، MISOو SS سه خط دیگر انتقال در این نوع ارتباط اند.

Serial Clock )SCLK)

این سیگنال برای سنکرون کردن (هم زمان سازی) دیتای خروجی از Master با دیتای نمونه برداری شده در Slave به کار می رود. در هر سیکل کلاک یک بیت دیتا منتقل می شود بنابراین سرعت انتقال دیتا با فرکانس سیگنال کلاک مشخص می شود.

Master Input Slave Output)MISO)

این سیگنال و سیگنال بعدی که توضیح خواهیم داد مربوط به خطوط انتقال دیتا است که با توجه به نام آن مشخص می شود ارسال دیتا از Master به Slave انجام می شود یا برعکس آن. سیگنال MISO انتفال دیتا را در حالتی انجام می دهد که دستگاه Master ورودی(گیرنده دیتا) و دستگاه Slave خروجی (فرستنده دیتا) باشد. این انتقال معمولا از بیت کم ارزش دیتا(LSB)شروع شده و به ترتیب بیت به بیت منتقل میشوند.

Master Output Slave Input)MOSI)

در این حالت Master به صورت خروجی( فرستنده دیتا) و دستگاه Slave ورودی (گیرنده دیتا) می باشد. انتقال دیتا ها در این خط، معمولا از بیت پر ارزش دیتا(MSB)شروع می شود.

Slave Select )SS)

دستگاه Master با این سیگنال می تواند مشخص کند که کدام یک از دستگاه های Slave شروع به تبادل دیتا با آن کنند. این کار از طریق صفر کردن خروجی مربوط به خط SS انجام می شود. در حالتی که انتقال دیتا صورت نمی گیرد(Idle)  این سیگنال در سطح ولتاژ High (یک منطقی) قرار دارد.

همانطور که گفتیم، در پروتکل SPI می توان چندین دستگاه را به هم متصل نمود که یکی به عنوان Master و بقیه به عنوان Slave در نظر گرفته می شوند. دو راه برای اتصال Slave  به Master ها وجود دارد. اگر دستگاه Master دارای چند خروجی برای سیگنال SS باشد مانند شکل زیر می توان دستگاه های Slave را به صورت موازی به Master متصل کرد.

اگر Master  فقط یک خروجی برای سیگنال SS داشته باشد، می توان Slave ها را به صورت زنجیر وار به یکدیگر متصل کرد.

مزایا و معایب پروتکل SPI

از مزایای پروتکل SPI می توان به موارد زیر اشاره کرد:

  • بیت start و stop وجود ندارد، پس دیتا می تواند بدون وقفه منتقل شود.
  • سیستم آدرس دهی پیچیده ای مانند پروتکل I2C ندارد.
  • سرعت انتقال دیتای بالا در مقایسه با I2C
  • وجود دو خط انتقال MISO و MOSI که امکان انتقال دیتا در دو جهت به صورت همزمان و جداگانه وجود دارد.

اما معایب این پروتکل:

  • اشغال کردن ۴ خط انتقال (بر خلاف I2C و UART که فقط ۲ خط برای انتقال نیاز دارند)
  • فرستنده پاسخی از گیرنده در مورد ارسال موفق دیتا دریافت نمی کند.
  • راهی برای تشخیص خطا در دیتای ارسال شده وجود ندارد. (مانند بیت Parity در پروتکل UART)
  • فقط یک دستگاه می تواند Master قرار بگیرد.

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *