آشنایی با پروتکل های ارتباطی: درس اول(پروتکل SPI)

پنج شنبه, 17 تیر 1395 11:31
این مورد را ارزیابی کنید
(42 رای‌ها)

زمانی که یک میکروکنترلر را به یک سنسور، نمایشگر و ماژول های مختلف وصل می کنید، آیا تا به حال فکر کردید که این قطعات چگونه با یکدیگر صحبت می کنند؟ دقیقا چه چیزی به یکدیگر می گویند؟ حرف های یکدیگر را چگونه متوجه می شوند؟

 

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

Serial Peripheral Interface (SPI)

Inter-Integrated Circuit (I2C)

Universal Asynchronous Receiver/Transmitter (UART)

 

در ابتدا مبانی ارتباط الکترونیکی بررسی می گردد و در ادامه پروتکل SPI به طور دقیق توضیح داده خواهد شد. در درس دوم پروتکل UART و در درس سوم نیز پروتکل I2C  مورد بررسی قرار خواهد گرفت.

سرعت پروتکل های ارتباطی SPI، I2C و UART به مراتب از پروتکل های دیگری مانند USB، ethernet، Bluetooth و WiFi کمتر است، ولی کار با آنها ساده تر و به سخت افزارها و منابع سیستمی کمتری احتیاج دارند. SPI، I2C و UART برای ارتباط بین میکروکنترلرها و  ماژول ها و سنسورهای دیگر که نیاز به انتقال اطلاعات با سرعت بالایی نیست مناسب هستند.

 

ارتباط سریال در مقابل موازی:

قطعات الکترونیکی از طریق ارسال بیت ها به واسطه سیم هایی که بین شان وجود دارد، با یکدیگر صحبت می کنند. هر بیت در واقع یک حرف از یک کلمه است، اما با 26 حرف زبان انگلیسی متفاوت است. بیت فقط می تواند مقدار 0 و یا 1 را اختیار کند و از طریق تغییرات سریعی که در سطح ولتاژ به وجود می آید، از یک قطعه به قطعه ای دیگر منتقل می شوند. برای سیستمی که با منبع 5 ولت کار می کند، بیت صفر از طریق ایجاد یک پالس کوتاه صفر ولت و بیت 1 از طریق ایجاد پالس کوتاه 5 ولت ایجاد می شود.

بیت ها می توانند به صورت سریال و یا موازی بین قطعات منتقل شوند. در حالت موازی تمامی بیت های مربوط به یک داده به صورت یک جا از طریق سیم ها منتقل می شود. شکل زیر نحوه انتقال موازی حرف ‘C’ به صورت باینری(01000011) نشان می دهد.

 

در ارتباط سریال بیت ها یکی یکی و از طریق یک سیم منتقل می شوند. شکل زیر نحوه انتقال سریال حرف ‘C’ را به صورت باینری(01000011) نشان می دهد.

 

 

معرفی پروتکل ارتباطی SPI:

SPI یک پروتکل ارتباطی بوده که توسط بسیاری از ماژول ها استفاده می شود. ماژول SD کارت، ماژول RFID card reader و وایرلس 2.4 گیگاهرتزی گیرنده/فرستنده نمونه هایی از این موارد هستند.

ایتدایی ترین تعریف از SPI انتقال داده ها بدون وقفه می باشد. هر تعداد از بیت ها می توانند به طور پیوسته فرستاده و یا دریافت شوند. در ازتباط I2C و UART داده ها به صورت بسته هایی که به بیت های مشخصی محدود شده، فرستاده می شوند. شرایط شروع و توقف، ابتدا و انتهای بسته ها را مشخص می کند، لذا در طول انتقال داده ها وقفه هایی وجود دارد.

ارتباط قطعات از طریق SPI بر اساس رابطه master – slave (استاد و برده) می باشد. master قطعه کنترل کننده(معمولا میکروکنترلر) و slave(معمولا یک سنسور، نمایشگر یا تراشه حافظه) دستورات را از master دریافت می کند. در ساده ترین روش ارتباط SPI یک master و یک slave وجود دارد، در حالی که این امکان هم هست که یک master چند slave  را کنترل کند.

 

 

MOSI (Master Output/Slave Input)  =   خطی برای ارسال داده ها از master به slave

 MISO (Master Input/Slave Output) =   خطی برای ارسال داده ها از slave به master

SCLK (Clock) =   خطی مربوط به سیگنال کلاک

SS/CS (Slave Select/Chip Select) =   خطی برای master برای اینکه انتخاب کند داده به کدام slave منتقل شود.

 

تعداد سیم ها 4
حداکثر سرعت  حداکثر تا 10مگابیت بر ثانیه
همزمان یا ناهمزمان همزمان
سریال یا موازی سریال
حداکثر تعداد master 1
حداکثر تعداد slave به صورت تئوری نامحدود

 

در عمل تعداد slaveها با توجه به میزان ظرفیت بارهایی که به سیستم متصل هستند، محدود می شود. چون باعث کاهش دقت master در سوئیچ کردن بین سطح های ولتاژ خواهد شد.

SPI چگونه کار می کند:

کلاک ساعت:

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

پروتکل های ارتباطی که از سیگنال کلاک استفاده می کنند، همزمان(synchronous) خوانده می شوند که ارتباط SPI نیز از این نوع می باشد. پروتکل های ارتباطی دیگر که از سیگنال کلاک استفاده نمی کنند، ناهمزمان(asynchronous) خوانده می شوند. برای مثال در ارتباط UART هر دو سمت رابطه از یک نرخ انتقال اطلاعات(baudrate) یکسان برای انتقال داده ها استفاده می کنند.

سیگنال کلاک در ارتباط SPI توسط تنظیمات clock polarity و clock phase در دسترس است. از این دستورات برای تعیین اینکه بیت ها از نوع خروجی و یا نمونه ی داده می باشند، استفاده می شوند. Master از دستور clock polarity برای تعیین اینکه بیت ها در لبه بالا رونده و یا پایین رونده به صورت خروجی و  داده نمونه باشد، استفاده می کند. از دستور clock phase جهت تعیین اینکه داده خروجی و  نمونه در لبه بالارونده و یا پایین رونده اول و یا دوم، بدون توجه به سطح آنها، اتفاق بیافتند، استفاده می شود.

انتخاب slave:

Master از طریق قرار دادن خط انتخاب مربوط به slave (CS/SS) در حالت LOW، می تواند انتخاب کند که با کدام slave می خواهد ارتباط برقرار کند. و اگر این خط در حالت HIGH قرار داشته باشد، هیچ گونه انتقال اطلاعاتی صورت نخواهد گرفت. در صورت وجود چند پین CS/SS  تمامی slave ها به صورت موازی به master متصل خواهند شد و در صورتی که فقط یک پین CS/SS  وجود داشته باشد، اتصال از طریق یک سیم و به صورت شاخه ای خواهد بود.

وجود چند slave:

همان طور که گفته شد در پروتکل SPI امکان برقراری ارتباط یک master با یک  slave و یا یک master با چند slave وجود دارد. دو راه برای اتصال چند slave به یک master وجود دارد، در صورتی وجود چندین پین انتخاب slave ، اتصالات مطابق شکل زیر است:

 

 

و در صورتی که فقط یک پین برای انتخاب slave وجود داشته باشد، اتصالات شاخه ای به صورت زیر خواهد بود:

 

 

MOSI  و  MISO :

داده ها به صورت بیت به بیت و سریال از طریق پین MOSI از master به slave فرستاده می شوند. Slave نیز این داده ها را از طریق پین MOSI دریافت می کند. در این حالت معمولا بیت های با ارزش(MSB) زودتر فرستاده می شوند.

Slave نیز داده های خود را از طریق پین MISO به master می فرستد. در این حالت معمولا بیت های کم ارزش(LSB) زودتر فرستاده می شوند.

مراحل انتقال داده از طریق پروتکل SPI:

1 – master سیگنال کلاک را ارسال می کند.

 

2 – master جهت فعال کردن slave پین SS/CS را در حالت LOW قرار می دهد.

3 – master داده ها را به صورت بیت به بیت از طریق پین MOSI ارسال کرده و slave نیز آن را از طریق همین پین دریافت می کند.

4-  در صورتی که به اطلاعات slave احتیاج باشد، داده ها به صورت بیت به بیت از طریق پین MISO به master فرستاده خواهند شد:

مزایا و معایب SPI :

با توجه به مزایا و معایب این پروتکل و مقایسه با پروتکل های دیگر شما می توانید انتخاب درست را در پروژه های خود داشته باشید:

مزایا:

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

 

معایب:

  • استفاده از چهار سیم(در صورتی که I2C و UART از دو سیم استفاده می کنند)
  • هیچ علامتی مبنی بر دریافت صحیح داده وجود ندارد(I2C این امکان را دارد)
  • هیچ گونه روش تشخیص خطا ندارد مانند پریتی در UART
  • فقط امکان استفاده از یک master وجود دارد.

 

امیدواریم که این مقاله اطلاعات خوبی در اختیار شما قرار داده باشد. در مقالات بعدی پروتکل های UART و SPI مورد بررسی قرار خواهند گرفت.


 

ترجمه شده توسط صنعت بازار | منبع: سایت circuitbasics

خواندن 41226 دفعه

کاربرانی که در این گفتگو شرکت کرده اند

نظرات (40)

  1. محمود

با سلام و عرض سپاس فراوان بابت مطالب مفید سایتتان

 
  1. حمید اسماعیلی

سلام،
من پروژه ای دارم که میبایست چندین میکروکنترلر مختلف( مثلا رسبریپای، آردینو و...) رو به هم متصل کنم. این میکرو کنترلرها یکسری داده از چندین سنسور میگرن و این داده ها باید در یک دیتابیس ذخیره بشه. کسی میتونه کمکم کنه؟ حق الزحمه محفوظ هست

 
  1. کامیاب    حمید اسماعیلی

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

 
  1. پشتیبانی    حمید اسماعیلی

سلام حمید عزیز
توضیح کامل پروژه شما در این مبحث نمی گنجد و متاسفانه انجام پروژه در حال حاضر در خارج از حوزه کاری شرکت می باشد.
موفق باشید

 
  1. دهباشی

بدون استفاده از AVR و آردوینو
اگه مستقیم بخوام مثلا از یک ماژول میکروفن استفاده کنم
پایه های میکروفن رو به کجای اسلایو بزنم؟
پایه های بلندگو رو به کجای مستر بزنم؟
چه طور تعیین کنم کدوم همیشه مستر باشه؟
ایا فقط با یک جامپر شدنی هست یا پیچیده تره؟
ک...

بدون استفاده از AVR و آردوینو
اگه مستقیم بخوام مثلا از یک ماژول میکروفن استفاده کنم
پایه های میکروفن رو به کجای اسلایو بزنم؟
پایه های بلندگو رو به کجای مستر بزنم؟
چه طور تعیین کنم کدوم همیشه مستر باشه؟
ایا فقط با یک جامپر شدنی هست یا پیچیده تره؟
کلا چه طور یک واکی تاکی فقط با سر هم بندی درست کنم

ادامه مطلب
 
  1. سروش    دهباشی

داداش میکروفن و بلندگو ورودی و خروجیشون آنلوگ ، در حالی که مستر و اسلیو دیجیتال، شما یا باید با میکرو و ماژول های گیرنده فرستنده دیجیتال کار کنی
یا خروجی سیگنالمیکروفن رو بدی به یه فرستنده رادیویی و بعد از طرف دیگه یه گیرنده رادیویی داشته باشی که...

داداش میکروفن و بلندگو ورودی و خروجیشون آنلوگ ، در حالی که مستر و اسلیو دیجیتال، شما یا باید با میکرو و ماژول های گیرنده فرستنده دیجیتال کار کنی
یا خروجی سیگنالمیکروفن رو بدی به یه فرستنده رادیویی و بعد از طرف دیگه یه گیرنده رادیویی داشته باشی که خروجیش رو بدی به یه آمپلی فایر و بعد بلندگو

ادامه مطلب
 
  1. پشتیبانی    دهباشی

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

 
  1. علی

خیلی خوب ترجمه شد. سپاس

 
  1. vahid mazloomi

ببخشید میخواستم امتیاز ۵/۵ بدم، اشتباها ۱/۵ رو دادم.
اصلاح میکنم.

 
  1. vahid mazloomi

با سلام و عرض ادب،
ممنون از ارسال این مطلب.
خیلی خوب و عالی توضیح دادید.
ولی در بخشی که نوشته اید در صورت داشتن بک پین cs در Master.
در این نقشه ای که داده اید امکان انتخاب دو slave هست ولی شما سه slave کشیده اید.
البته شاید من اشتباه میکنم.

 
  1. پشتیبان    vahid mazloomi

سلام وحید عزیز
خواهش میکنم
در این حالت محدود به دو slave نیست و تعداد بیشتر هم به همین صورت میتوان وصل کرد. مهم این هست که MISO هر slave به MOSI در slave بعدی وصل شده و ابتدا و انتهای این مسیر نیز به Master وصل شود.

 
  1. شهاب‌الدین

خوب بود آقای عزیز و محترم.

 
  1. پشتیبان    شهاب‌الدین

سلام دوست عزیز
خیلی ممنونم
ما رو با نظرات و پیشنهاداتتون همراهی کنید

 
  1. Ali

سپاس فرااااااواااااان

 
  1. پشتیبان    Ali

سلام دوست عزیز
ممنون از حسن نظرتون

 
  1. غزل

بسیار عالی بود خدا خیرسرراهتون قرار بده

 
  1. آرش

درود به شرفت
واقعا عالی و ساده و قابل فهم توضیح داده بودید

 
هیچ نظری در اینجا وجود ندارد
بارگذاری بیشتر ...

نظر خود را اضافه کنید.

ارسال نظر بعنوان یک مهمان
پیوست ها (0 / 3)
مکان خود را به اشتراک بگذارید

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

ما را دنبال کنید:

Copyright © 2017-2018 | Sanatbazar.com