آموزش الکترونیک

ارتباط SPI چیست؟ نحوه کار ارتباط سریال SPI

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

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

I2C و UART نسبت به پروتکل هایی مانند USB ، اترنت ، بلوتوث و WiFi بسیار کندتر هستند ، اما بسیار ساده تر هستند و از منابع سخت افزاری و سیستم کمتری استفاده می کنند. SPI ، I2C و UART برای برقراری ارتباط بین میکروکنترلرها با میکروکنترلرها و سنسورها که نیازی به انتقال داده های پر سرعت نیستند مناسب هستند.

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

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

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

بیت داده ها می توانند به صورت موازی یا سریال منتقل شوند. در ارتباط موازی ، بیت های داده همزمان و هر کدام از طریق یک سیم جداگانه ارسال می شوند. نمودار زیر انتقال موازی حرف “C” را به صورت باینری (01000011) نشان می دهد:

ارتباط موازی
ارتباط موازی

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

ارتباط سریال
ارتباط سریال

مقدمه ای بر ارتباط SPI

SPI یک پروتکل ارتباطی رایج است که توسط دستگاه های مختلف مورد استفاده قرار می گیرد. به عنوان مثال ، ماژول های کارت SD ، ماژول های کارت خوان RFID و فرستنده / گیرنده های بی سیم 2.4 گیگاهرتز همه از SPI برای برقراری ارتباط با میکروکنترلرها استفاده می کنند.

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

دستگاههایی که از طریق SPI ارتباط برقرار می کنند در رابطه Master و Slave هستند. Master دستگاه کنترل است (معمولاً میکروکنترلر) ، در حالی که slave (معمولاً حسگر ، نمایشگر یا تراشه حافظه) دستورات اصلی را می گیرد. ساده ترین پیکربندی SPI یک سیستم واحد مستقل ، یک Slave است ، اما یک Master می تواند بیش از یک Slave را کنترل کند.

مقدمه ای بر ارتباط SPI

MOSI – Master Output / Slave Input : خط ارسال Master برای ارسال داده به Slave است.

MISO – Master Input / Slave Output : خطی برای ارسال داده به Master است.

SCLK – Clock : خط سیگنال ساعت

SS / CS – Slave Select / Chip Select :  خط اصلی برای انتخاب Master جهت ارسال داده به Slave مورد نظر

اگر در مورد این مطلب سوالی دارید در قسمت نظرات بپرسید

مشخصات ارتباط سریال SPI

* در عمل ، تعداد Slave با ظرفیت خازنی سیستم محدود می شود ، که این باعث کاهش توانایی Master در تغییر دقیق سطح ولتاژ می شود.

همچنین مقاله ارتباط I2C و UART را بخوانید.

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

در اینجا به طور کامل با نحوه کار ارتباط سریال SPI آشنا میشویم.

سیگنال ساعت

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

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

SLAVE SELECT

Master با تنظیم خط slave’s CS / SS در سطح ولتاژ پایین می تواند با هر Slaveی که می خواهد مبادله کند انتخاب کند. در حالت غیر فعال و غیر منتقل کننده ، خط Slave Select در سطح ولتاژ بالا نگه داشته می شود. چندین پین CS / SS ممکن است در Master موجود باشد ، که به شما امکان می دهد چندین Slave به صورت موازی سیم کشی شوند. اگر فقط یک پایه CS / SS وجود داشته باشد ، می توان چندین Slave را با زنجیر کردن به Master وصل کرد.

Slave چندگانه

SPI می تواند برای کار با یک Master واحد و یک Slave تنظیم شود و می تواند با چندین Slave کنترل شده توسط یک Master واحد تنظیم شود. برای اتصال چند Slave به Master دو روش وجود دارد. اگر Master دارای چندین پایه Slave Select باشد ، می توان Slave ها را به صورت موازی سیم کشی کرد:

ایجاد ارتباط SPI با چند Slave

 

در آرایش استاندارد SPI ، دستگاه اصلی می تواند با فعال کردن دستگاه مورد نظر ، یعنی با تنظیم خط Slave Select از دستگاه متناظر ، داده ها را برای دستگاه های منفرد که خطوط داده مشترک را به اشتراک می گذارند ، بنویسد یا از آنها درخواست کند. باید مواظب بود که چندین Slave به طور همزمان فعال نشود ، زیرا داده های برگشتی به Master با اختلاف بین خطوط MISO خراب می شود. برخی از برنامه ها نیازی به بازگشت داده به Master ندارند. اگر Master بخواهد داده های یکسانی را برای چند Slave ارسال کند ، در چنین مواردی می توان همزمان به چندین Slave رسیدگی کرد.

ارتباط سریال با چند Slave Select

در تنظیمات multiple-slave-select ، هر Slave به یک خط Slave Select خاص از Master نیاز دارد. اگر کارفرما پین ورودی / خروجی کافی برای تعداد Slave مورد نیاز را نداشته باشد ، می توان با استفاده از یک رمزگشا / مالتی پلکسر تعداد پین های مورد نظر را فراهم کرد.

رسیور / چندگانه ساز.

اگر فقط یک پین Slave Select در دسترس باشد ، Slave ها می توانند به این شکل زنجیر شوند:

آموزش ارتباط SPI با یک پین SS

در این پیکربندی ، داده ها از یک دستگاه به دستگاه دیگر منتقل می شوند. دستگاه Slave نهایی می تواند داده ها را به برنامه اصلی برگرداند.

ارتباط SPI با یک SS

در این پیکربندی، همه Slave ها از یک خط مشترک Slave Select استفاده می کنند. داده ها از Master به Slave اول منتقل می شوند و سپس از Slave اول به کاربر دوم و غیره منتقل می شوند. داده ها تا آخرین Slave از مجموعه به پایین خط می کشند ، و سپس می تواند از خط MISO خود برای ارسال داده به دستگاه اصلی استفاده کند.

MOSI و MISO

Master از طریق خط MOSI ذره ذره داده ها را به Slave ارسال می کند. Slave داده های ارسالی از Master را در پین MOSI دریافت می کند. داده های ارسالی از Master به Slave معمولاً ابتدا با مهمترین بیت ارسال می شود.

Slave همچنین می تواند داده ها را از طریق خط MISO به صورت پی در پی به Master ارسال کند. داده های ارسال شده از Slave به Master معمولاً ابتدا با کمترین مقدار بیت ارسال می شود.

مراحل انتقال داده با SPI

1. Master سیگنال ساعت را می دهد:

مراحل انتقال داده با SPI

2. Master پین SS / CS را به حالت ولتاژ پایین سوئیچ می کند که Slave را فعال می کند:

نحوه کار ارتباط سریال SPI

3. Master داده ها را یک بیت برای بنده در امتداد خط MOSI ارسال می کند. Slave هنگام دریافت بیت ها را می خواند:

ارسال اطلاعات از Master به Slave

4. در صورت نیاز به پاسخ ، Slave داده را بطور همزمان یک بیت به Master در امتداد خط MISO برمی گرداند. Master بیت ها را هنگام دریافت می خواند:

نحوه ارسال اطلاعات Slave به Master

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

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

مزایا :

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

معایب :

  • از چهار سیم استفاده می کند (I2C و UART از دو سیم استفاده می کند)
  • تأییدییه ای مبنی بر اینکه داده ها با موفقیت دریافت شده است وجود ندارد (I2C این را دارد)
  • هیچ شکلی برای بررسی خطا مانند بیت برابری در UART وجود ندارد.
  • مجاز است فقط یک Master داشته باشد.
4.1 (18 نفر)

برای دریافت مطالب جدید کانال تلگرام یا پیج اینستاگرام ما را دنبال کنید.

محمد رحیمی

محمد رحیمی هستم. سعی میکنم در آیرنکس مطالب مفید قرار بدهم. سوالات مربوط به این مطلب را در قسمت نظرات همین مطلب اعلام کنید. سعی میکنم در اسرع وقت به نظرات شما پاسخ بدهم.

6 نظر

  1. سلام وقت بخیر یه lcd با یه میکرو sd که هر دو با spi راه اندازی میشوند دارم که وقتی پایه miso آنها به آرداینو وصل میشود برنامه در برد آرداینو هنگ میکند علت چیست و راه کار برطرف کردن آن چیست؟(هم موازیشون کردم هم سری)نکته اینجاست که برنامه هنوز اجرا نشده هنگ میکنه

    1. سلام عزیز
      یک تصویر از مدارتون در انجمن ارسال کنید

  2. این برای چه جاهای کارای دارد من تازه آشنا شدم اصل کارایی داره برای چه نوع داده ای وبه کجا ارسال میشه یه توضیح مختصری اگر میشه بهم بدین کنجکاو شدم ممنون میشم

    1. سلام عزیز، برای ارتباط بین میکروکنترلر ها یا ماژول ها استفاده میشه و کلا کاربرد زیادی داره

    1. سلام عزیز
      کافیه کلمه spi رو در سایت سرچ کنید موارد زیادی در این رابطه منتشر شده
      اگر به آموزش دقیق نیاز دارید میتونید دوره آردوینو یا دوره AVR سایت ما رو مشاهده کنید این ارتباط رو پیاده سازی میکنیم و آموزش میدیم

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

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