ارتباط 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 را کنترل کند.
MOSI – Master Output / Slave Input : خط ارسال Master برای ارسال داده به Slave است.
MISO – Master Input / Slave Output : خطی برای ارسال داده به Master است.
SCLK – Clock : خط سیگنال ساعت
SS / CS – Slave Select / Chip Select : خط اصلی برای انتخاب Master جهت ارسال داده به Slave مورد نظر
* در عمل ، تعداد 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 Select از دستگاه متناظر ، داده ها را برای دستگاه های منفرد که خطوط داده مشترک را به اشتراک می گذارند ، بنویسد یا از آنها درخواست کند. باید مواظب بود که چندین Slave به طور همزمان فعال نشود ، زیرا داده های برگشتی به Master با اختلاف بین خطوط MISO خراب می شود. برخی از برنامه ها نیازی به بازگشت داده به Master ندارند. اگر Master بخواهد داده های یکسانی را برای چند Slave ارسال کند ، در چنین مواردی می توان همزمان به چندین Slave رسیدگی کرد.
در تنظیمات multiple-slave-select ، هر Slave به یک خط Slave Select خاص از Master نیاز دارد. اگر کارفرما پین ورودی / خروجی کافی برای تعداد Slave مورد نیاز را نداشته باشد ، می توان با استفاده از یک رمزگشا / مالتی پلکسر تعداد پین های مورد نظر را فراهم کرد.
رسیور / چندگانه ساز.
اگر فقط یک پین Slave Select در دسترس باشد ، Slave ها می توانند به این شکل زنجیر شوند:
در این پیکربندی ، داده ها از یک دستگاه به دستگاه دیگر منتقل می شوند. دستگاه Slave نهایی می تواند داده ها را به برنامه اصلی برگرداند.
در این پیکربندی، همه 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 سیگنال ساعت را می دهد:
2. Master پین SS / CS را به حالت ولتاژ پایین سوئیچ می کند که Slave را فعال می کند:
3. Master داده ها را یک بیت برای بنده در امتداد خط MOSI ارسال می کند. Slave هنگام دریافت بیت ها را می خواند:
4. در صورت نیاز به پاسخ ، Slave داده را بطور همزمان یک بیت به Master در امتداد خط MISO برمی گرداند. Master بیت ها را هنگام دریافت می خواند:
مزایا و معایب SPI
استفاده از SPI مزایا و معایبی دارد و اگر بین پروتکل های ارتباطی مختلفی انتخاب شد ، باید بدانید که با توجه به نیازهای پروژه خود ، چه زمانی از SPI استفاده کنید.
مزایا :
- بدون بیت شروع و توقف ، بنابراین می توان داده ها را بدون وقفه به طور مداوم پخش کرد.
- هیچ سیستم پیچیده ای مثل I2C برای آدرس دهی Slave وجود ندارد.
- سرعت انتقال داده بالاتر از I2C (تقریباً دو برابر سریعتر)
- خطوط MISO و MOSI را جدا کنید ، بنابراین داده ها می توانند همزمان ارسال و دریافت شوند.
معایب :
- از چهار سیم استفاده می کند (I2C و UART از دو سیم استفاده می کند)
- تأییدییه ای مبنی بر اینکه داده ها با موفقیت دریافت شده است وجود ندارد (I2C این را دارد)
- هیچ شکلی برای بررسی خطا مانند بیت برابری در UART وجود ندارد.
- مجاز است فقط یک Master داشته باشد.