SPI یکی از پرکاربردترین پروتکل هایی است که در انواع پردازنده ها و میکروکنترولرها به کار می رود؛
بنابراین برای مبتدیان و متخصصان این حوزه واجب است که بدانند SPI چیست و چگونه کار می کند.
در این مقاله تعریف SPI، سیگنال های ارتباطی، نحوه عملکرد و انتقال داده در آن و همچنین کاربرد، مزایا و معایب این پروتکل پر استفاده مطرح می شود.
با ما همراه باشید تا بدانید SPI چیست و چه ویژگی هایی دارد.
1# SPI چیست؟
در جواب به سوال SPI چیست بهتر است بگوییم که
SPI مخفف عبارت Serial Peripheral Interface یک رابط برای برقراری ارتباطات سنکرون سریال است و
بیشتر برای ارتباطات از راه دور کاربرد دارد.
این رابط در اواسط دهه 1980 توسط موتورولا توسعه یافته و به یک استاندارد تبدیل شده است.
دستگاه های SPI از معماری master-slave (به معنای ارباب و برده) استفاده می کنند و
ارتباط در آن ها، به شکل دوطرفه برقرار می شود.
دستگاه master (ارباب) چهارچوب را برای خواندن و نوشتن ایجاد می کند.
این رابط به کمک خطوط Slave select که دستگاه برده را مشخص می کند،
چندین دستگاه slave را می تواند پشتیبانی کند.
SPI ممکن است به طور دقیق به عنوان یک ارتباط سریال سنکرون توصیف شود؛
اما با پروتکل Synchronous Serial Interface (SSI) که یک پروتکل ارتباط سنکرون چهارسیم می باشد، متفاوت است.
پروتکل SSI فقط یک کانال ارتباطی ساده را فراهم می کند؛
در حالی که SPI یک ارتباط بین master و چند slave است.
2# منظور از سیگنال های ارتباطی در SPI چیست؟
گذرگاه SPI با 4 سیگنال عمل می کند:
- SCLK (Serial Clock): کلاک سریال است که
یکی از سیگنال های خروجی دستگاه master به آن اختصاص داده می شود. - (Master Out Slave In) MOSI: سیگنال خروجی داده از دستگاه master است.
MOSI در یک دستگاه master به MOSI در یک دستگاه slave متصل می شود. - MISO (Master In Slave Out): سیگنال خروجی داده از دستگاه slave است.
MISO در یک دستگاه master به MISO در یک دستگاه slave متصل می شود. - (Slave Select) SS: سیگنال خروجی از دستگاه master است.
Slave Select عملکرد مشابه تراشه را دارد و برای مفهوم آدرس دهی استفاده می شود.
از نام سیگنال های فوق می توان برای برچسب زدن پایه های اصلی و همچنین خطوط سیگنال بین آن ها به روشی بدون ابهام استفاده کرد.
3# نحوه عملکرد SPI
برای این که بفهمیم SPI چیست و چگونه می توانیم از آن استفاده کنیم، باید با نحوه عملکرد آن آشنا شویم.
گذرگاه SPI می تواند با یک دستگاه master و با یک یا چند دستگاه slave کار کند.
اگر از یک دستگاه slave تنها استفاده شود، پین “SS” در صورت مجاز بودن slave، در منطق پایین ثابت می شود.
در حالتی که چند دستگاه slave وجود داشته باشند،
برای هر دستگاه slave یک سیگنال SS مستقل از دستگاه master موردنیاز است.
4# انتقال داده در SPI
بعد از کسب اطلاعات کافی در مورد این که SPI چیست و عملکرد آن چگونه است،
باید با نحوه انتقال داده در این پروتکل آشنا شویم.
برای شروع ارتباط، پس از تنظیم کلاک master، میکروکنترلر slave با خط انتخاب در سطح منطقی 0 را بر می گزیند.
در صورت نیاز به یک دوره انتظار، master قبل از صدور چرخه های کلاک باید حداقل آن مدت زمان را منتظر بماند.
در طی هر چرخه کلاک SPI، انتقال داده به صورت دوطرفه رخ می دهد.
master یک بیت روی خط MOSI می فرستد و slave آن را می خواند.
همچنین slave یک بیت را روی خط MISO می فرستد و master آن را می خواند.
حتی در حالاتی که انتقال یک طرفه داشته باشیم، این روند همچنان حفظ می شود.
پین انتقالی معمولاً شامل دو رجیستر به اندازه کلمه (16 بیت) است،
یکی در دستگاه master و دیگری در دستگاه slave.
داده ها معمولاً با مهم ترین بیت خارج می شوند.
عمل انتقال ممکن است برای چند دوره کلاک ادامه پیدا کند.
پس از اتمام، دستگاه master مسئول متوقف کردن سیگنال کلاک است و
به طور معمول slave را از حالت انتخاب خارج می کند.
طول داده های انتقالی اکثرا به اندازه 8 بیت است.
با این حال، انتقال با اندازه های دیگر نیز اتفاق می افتد؛
به عنوان مثال کلمات شانزده بیتی برای کنترل کننده های صفحه لمسی یا کدهای صوتی، مانند کلمات دوازده بیتی برای بسیاری از مبدل های دیجیتال به آنالوگ یا آنالوگ به دیجیتال.
در این حالات ممکن است چندین دستگاه SPI به هم زنجیر شوند.
هر slave ای که در گذرگاه با استفاده از خط انتخاب تراشه فعال نشده باشد،
باید کلاک ورودی و سیگنال های MOSI را نادیده بگیرد.
5# کاربرد SPI چیست؟
SPI نقش مهمی در سیستم های جاسازی شده (embedded systems) دارد.
این مورد برای اکثر پردازنده های سیستم روی تراشه، هم با پردازنده هایی مانند ARM ،MIPS یا PowerPC و
هم با میکروکنترلرهای دیگر مانند AVR ،PIC و MSP430 صدق می کند.
این تراشه ها معمولاً شامل کنترل کننده های SPI هستند که
می توانند در حالت master (ارباب) یا slave (برده) اجرا شوند.
کنترل کننده های AVR در سیستم با استفاده از رابط SPI قابل برنامه ریزی هستند.
در طراحی های مبتنی بر تراشه یا FPGA گاهی اوقات از SPI برای برقراری ارتباط بین اجزای داخلی استفاده می شود.
قابلیت ارتباط دوطرفه کامل، SPI را برای برنامه های اصلی یک master و یک slave بسیار ساده و کارآمد می کند.
برخی از دستگاه ها از حالت دوطرفه کامل برای اجرای یک جریان داده کارآمد و سریع برای
برنامه هایی مانند صدای دیجیتال، پردازش سیگنال دیجیتال یا کانال های ارتباط از راه دور استفاده می کنند؛
اما اکثر تراشه ها اغلب از پروتکل های درخواست/پاسخ نیمه دوطرفه استفاده می کنند.
SPI برای مکالمه با انواع وسایل جانبی مانند موارد زیر استفاده می شود:
- حسگرها: دما، فشار، ADC، صفحه نمایش لمسی، کنترل کننده های بازی ویدیویی
- دستگاه های کنترل: کدک های صوتی، پتانسیومترهای دیجیتال، DAC
- لنزهای دوربین: پایه لنز Canon EF
- ارتباطات: اترنت، USB ،USART ،CAN ،IEEE 802.15.4 ،IEEE 802.11، بازی های ویدیویی دستی
- حافظه: فلش و EEPROM
- ساعت های واقعی
- LCD، حتی گاهی اوقات برای مدیریت داده های تصویر
- هر کارت MMC یا SD (ازجمله نوع SDIO [10])
برای سیستم های با کارایی بالا، FPGA ها گاهی اوقات از SPI برای رابط در حسگرها و یا برای حافظه فلش استفاده می کنند.
6# مزایای SPI چیست؟
- ارتباط دوطرفه کامل در نسخه پیش فرض این پروتکل امکان پذیر است.
- درایورهای push-pull یکپارچگی سیگنال و سرعت بالا را فراهم می کنند.
- توان عملیاتی بالا، محدود به حداکثر سرعت کلاک نیست و سرعت بالقوه بالا را امکان پذیر می کند.
- پروتکل برای بیت های منتقل شده انعطاف پذیری کامل دارد (محدود به کلمات 8 بیتی نیست).
- رابط سخت افزاری بسیار ساده هستند.
- معمولاً نیاز به برق کمتر است.
- slave ها همگی از کلاک master استفاده می کنند و نیازی به اسیلاتور های دقیق ندارند.
- slave ها نیازی به آدرس منحصر به فرد ندارند.
- گیرنده نیازی نیست.
- فقط از چهارپایه در IC ها و یا سیم در دیتاشیت یا اتصالات استفاده می کند که بسیار کمتر از رابط های موازی است.
- حداکثر یک سیگنال گذرگاه منحصر به فرد در هر دستگاه (انتخاب تراشه) وجود دارد؛ همه باقی سیگنال ها به اشتراک گذاشته می شوند.
- سیگنال ها یک جهته هستند و امکان جداسازی آسان را فراهم می کنند.
- پیاده سازی نرم افزاری آن ساده است.
7# معایب SPI چیست؟
- امکان آدرس دهی داخل باند وجود ندارد. سیگنال های انتخاب تراشه خارج از باند موردنیاز است.
- قابلیت انعطاف پذیری در صورت نیاز به چندین slave با استفاده از حالت های مختلف SPI به شدت کاهش می یابد. هنگامی که master مرتباً به حالت اولیه دیگری نیاز دارد، دسترسی کند می شود.
- عدم توانایی کنترل جریان سخت افزاری توسط slave (اما master می تواند لبه کلاک بعدی را به تأخیر اندازد تا سرعت انتقال را کاهش دهد).
- امکان تولید تائید سخت افزار توسط slave وجود ندارد (master می تواند به جایی منتقل کند و آن را نشناسد).
- معمولاً فقط از یک دستگاه مستر پشتیبانی می کند (بستگی به پیاده سازی سخت افزار دستگاه دارد).
- هیچ پروتکل بررسی خطایی تعریف نشده است.
- بدون استاندارد رسمی، تأیید مطابقت امکان پذیر نیست.
- فقط مسافت های کوتاه را کنترل می کند (با استفاده از فرستنده و گیرنده می توان فاصله آن را افزایش داد).
- بسیاری از تغییرات موجود، یافتن ابزارهای توسعه مانند آداپتورهای میزبان را که از این تغییرات پشتیبانی می کنند، دشوار می کند.
- SPI از افزودن پویای گره ها پشتیبانی نمی کند.
- وقفه ها باید با سیگنال های خارج از باند اجرا شوند.
- برخی از انواع آن ها، نیمه دوطرفه هستند.
- به پین های زیادی نیاز دارد.
نظرتون درباره این مقاله چیه؟
ما رو راهنمایی کنید تا اون رو کامل تر کنیم و نواقصش رو رفع کنیم.
توی بخش دیدگاه ها منتظر پیشنهادهای فوق العاده شما هستیم.
سلام
خانم رحمانیان بسیار عالی توضیح دادین.
سپاسگذارم
سلام خدمت شما جناب نعیمی بزرگوار
خرسند هستیم که این مطلب برای شما مفبد واقع شد.
از همراهی شما با تیم نماتک سپاسگزار هستیم.
موفق و موید باشید.