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

ارتباط 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 در تغییر دقیق سطح ولتاژ می شود.

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 رسیدگی کرد.

مطلب پیشنهادی:  فرایند آزمایش EMC و الزامات مربوط به انطباق EMC

ارتباط سریال با چند 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 داشته باشد.

میخواهید برنامه نویسی STM32 را یاد بگیرید؟

دوره آموزش STM32

میخواهید الکترونیک را یاد بگیرید؟

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

میخواهید آردوینو را به صورت پروژه محور یاد بگیرید؟ برای مشاهده توضیحات روی دوره مورد نظر کلیک کنید

محمد رحیمی

محمد رحیمی

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

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

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