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

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

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

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

  • 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 منتقل شود.

در عمل تعداد 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 مورد بررسی قرار خواهند گرفت.

مطالب مرتبط

معرفی و راه‌اندازی ماژول کارت SD با آردوینو آردوینو

معرفی و راه‌اندازی ماژول کارت SD با آردوینو

در این آموزش قصد داریم به معرفی ماژول کارت SD بپردازیم. در ادامه نیز نحوه راه اندازی آن با آردوینو و کتابخانه های مورد نیاز را توضیح خواهیم داد.
2 سال قبل
معرفی و راه‌اندازی انواع ماژول وایرلس با آردوینو آردوینو

معرفی و راه‌اندازی انواع ماژول وایرلس با آردوینو

این مطلب قسمت چهاردهم از آموزش جامع آردوینو (مبتدی و پیشرفته) است. در این قسمت قصد داریم به معرفی ماژول‌های بی‌سیم یا وایرلس بپردازیم. با اضافه کردن ی...
2 سال قبل
معرفی و راه‌اندازی ماژول Ethernet با آردوینو آردوینو

معرفی و راه‌اندازی ماژول Ethernet با آردوینو

در این آموزش به معرفی ماژول Ethernet می پردازیم. در ادامه روش راه اندازی ماژول و ارسال و دریافت اطلاعات با آن را بررسی خواهیم کرد.
2 سال قبل
معرفی و راه‌اندازی ماژول RFID با آردوینو آردوینو

معرفی و راه‌اندازی ماژول RFID با آردوینو

در این آموزش به معرفی ماژول RFID می پردازیم. این ماژول با امواج الکترومغناطیسی کار می کند و معمولا برای ثبت حضور یا به عنوان بلیط استفاده می شود.
2 سال قبل
آموزش جامع راه‌اندازی GPIO رزبری‌پای رزبری پای

آموزش جامع راه‌اندازی GPIO رزبری‌پای

شاید در نگاه اول، عنوان این آموزش ساده و پیش پا افتاده به نظر بیاد. اما بهترین کار برای یادگیری و انجام پروژه در زمینه‌های مختلف، شروع کردن از پایه و...
2 سال قبل
ابزار کاربردی پرینت شده برای کارگاه های خانگی پایگاه دانش

ابزار کاربردی پرینت شده برای کارگاه های خانگی

در این مقاله که در مورد یک مسابقه جهانی هست برای شما عزایزن برترین طرح های انتخاب شده را جمع کردیم تا مدل پرینت سه بعدی را بتوانید رایگان دانلود کنید.
4 هفته قبل
برش مدل‌های سه‌بعدی با گوشی، تبلت یا لپ‌تاپ: معرفی Prusa EasyPrint پایگاه دانش

برش مدل‌های سه‌بعدی با گوشی، تبلت یا لپ‌تاپ: معرفی Prusa EasyPrint

Prusa EasyPrint یک سرویس ابری جدید است که به کاربران امکان می‌دهد مدل‌های سه‌بعدی را مستقیماً از طریق مرورگر وب در گوشی، تبلت یا لپ‌تاپ برش دهند. این سرویس فرآیند چاپ را ساده‌تر و دسترس‌پذیرتر می‌کند.
1 ماه قبل
راهنمای خرید دستگاه CNC در ایران | مقایسه قیمت و ویژگی‌ها 1404 پایگاه دانش

راهنمای خرید دستگاه CNC در ایران | مقایسه قیمت و ویژگی‌ها 1404

بهترین راهنمای خرید دستگاه CNC در ایران با مقایسه قیمت، ویژگی‌ها و برندهای معتبر. نکات ساخت دستگاه CNC خانگی و انتخاب قطعات را اینجا بخوانید!
1 ماه قبل
رطوبت، دشمن پنهان فیلامنت‌: چگونه رطوبت کیفیت چاپ سه‌بعدی را کاهش می‌دهد؟ پایگاه دانش

رطوبت، دشمن پنهان فیلامنت‌: چگونه رطوبت کیفیت چاپ سه‌بعدی را کاهش می‌دهد؟

رطوبت محیط می‌تواند فیلامنت‌های پرینتر سه‌بعدی را تخریب کرده و باعث کاهش کیفیت چاپ شود. در این مقاله راهکارهای شناسایی، جلوگیری و خشک‌کردن فیلامنت را بررسی می‌کنیم.
1 ماه قبل
استپر موتور در دستگاه های cnc پایگاه دانش

استپر موتور در دستگاه های cnc

در این مقاله جامع، صفر تا صد کاربرد استپ‌موتور در ساخت دستگاه‌های CNC را می‌آموزید؛ از اصول عملکرد و انتخاب سایز تا تنظیم درایور، میکرو‌استپ و کاهش لرزش.
2 ماه قبل
برای ثبت نظر وارد حساب خود شوید.
فرر ررر
3 ماه پیش
0
5/ 5

سلام و خسته نباشید با تشکر از مطلب فوق‌العاده‌ای که نوشتین میخواستم بپرسم که درس دوم رو پست نکردین؟ درس اول و سوم هستش فقط

صنعت بازار
3 ماه پیش
سلام
بزودی قسمت های دیگر در وبسایت قرار خواهد گرفت