رابط SPI و Arduino

فهرست مطالب:

رابط SPI و Arduino
رابط SPI و Arduino

تصویری: رابط SPI و Arduino

تصویری: رابط SPI و Arduino
تصویری: Видеоуроки по Arduino. Интерфейсы SPI (8-я серия, ч1) 2024, ممکن است
Anonim

ما رابط SPI را مطالعه کرده و یک شیفت رجیستر را به Arduino متصل می کنیم ، که با استفاده از این پروتکل برای کنترل LED ها به آن دسترسی خواهیم داشت.

رابط SPI
رابط SPI

ضروری

  • - آردوینو ؛
  • - ثبت نام تغییر 74HC595 ؛
  • - 8 LED
  • - 8 مقاومت 220 اهم.

دستورالعمل ها

مرحله 1

SPI - Serial Peripheral Interface یا "Serial Peripheral Interface" یک پروتکل انتقال داده همزمان برای رابط دستگاه اصلی با دستگاه های جانبی (slave) است. استاد اغلب میکروکنترلر است. ارتباط بین دستگاه ها از طریق چهار سیم انجام می شود ، به همین دلیل است که گاهی اوقات از SPI به عنوان "رابط چهار سیم" یاد می شود. این لاستیک ها عبارتند از:

MOSI (Master Out Slave In) - خط انتقال داده از master به دستگاه های برده.

MISO (Master In Slave Out) - خط انتقال از برده به استاد ؛

SCLK (سریال) - پالس های ساعت همگام سازی تولید شده توسط استاد ؛

SS (انتخاب برده) - خط انتخاب دستگاه برده ؛ وقتی بر روی خط "0" باشد ، برده "می فهمد" که به آن دسترسی پیدا می شود.

چهار حالت انتقال داده وجود دارد: در لبه بالا و پایین رفتن نبض ساعت) ، Clock Phase ، CPHA.

شکل دو گزینه برای اتصال دستگاهها با استفاده از پروتکل SPI را نشان می دهد: مستقل و آبشار. هنگامی که مستقل به باس SPI متصل می شود ، استاد با هر برده به طور جداگانه ارتباط برقرار می کند. با یک آبشار - دستگاه های برده به طور متناوب و در یک آبشار فعال می شوند.

انواع اتصالات SPI
انواع اتصالات SPI

گام 2

در آردوینو ، اتوبوس های SPI روی پورت های خاصی قرار دارند. هر تخته اختصاص پین خود را دارد. برای راحتی ، پین ها کپی شده و روی یک اتصال جداگانه ICSP (در مدار برنامه مدار) قرار می گیرند. لطفا توجه داشته باشید که هیچ پین انتخاب برده ای در اتصال دهنده ICSP - SS وجود ندارد فرض بر این است که از Arduino به عنوان اصلی در شبکه استفاده می شود. اما در صورت لزوم می توانید هر پین دیجیتالی آردوینو را به عنوان SS اختصاص دهید.

در شکل ، انتساب استاندارد پین ها به باس های SPI برای Arduino UNO و Nano نشان داده شده است.

پیاده سازی SPI در آردوینو
پیاده سازی SPI در آردوینو

مرحله 3

یک کتابخانه ویژه برای آردوینو نوشته شده است که پروتکل SPI را پیاده سازی می کند. به این شکل متصل شده است: در ابتدای برنامه ، # SPI.h را اضافه کنید

برای شروع کار با پروتکل SPI ، باید تنظیمات را تنظیم کنید و سپس با استفاده از روش () SPI.beginTransaction پروتکل را اولیه کنید. این کار را می توانید با یک دستورالعمل انجام دهید: SPI.beginTransaction (SPISettings (14000000، MSBFIRST، SPI_MODE0)).

این بدان معنی است که ما پروتکل SPI را با فرکانس 14 مگاهرتز مقداردهی اولیه می کنیم ، انتقال داده با شروع از MSB (مهمترین بیت) در حالت "0" آغاز می شود.

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

سپس با دستور SPI.transfer () داده ها را به دستگاه برده منتقل می کنیم.

پس از انتقال ، SS را به حالت HIGH برمی گردانیم.

کار با پروتکل با دستور SPI.endTransaction () پایان می یابد. مطلوب است که زمان اجرای انتقال بین دستورالعمل های SPI.beginTransaction () و SPI.endTransaction () به حداقل برسد تا اگر دستگاه دیگری سعی می کند انتقال داده را با استفاده از تنظیمات مختلف آغاز کند ، همپوشانی نداشته باشد.

انتقال SPI
انتقال SPI

مرحله 4

بیایید کاربرد عملی رابط SPI را در نظر بگیریم. ما با کنترل رجیستر شیفت 8 بیتی از طریق گذرگاه SPI LED ها را روشن خواهیم کرد. بیایید ثبت شیفت 74HC595 را به آردوینو وصل کنیم. ما از طریق یک LED (از طریق یک مقاومت محدود کننده) به هر یک از 8 خروجی متصل می شویم. نمودار در شکل نشان داده شده است.

اتصال ثبت نام شیفت 74HC595 به آردوینو
اتصال ثبت نام شیفت 74HC595 به آردوینو

مرحله 5

بیایید چنین طرحی را بنویسیم.

ابتدا بیایید کتابخانه SPI را متصل کنیم و رابط SPI را مقداردهی اولیه کنیم. بیایید پایه 8 را به عنوان پایه انتخاب برده تعریف کنیم. بیایید با ارسال مقدار "0" به آن ، ثبت شیفت را پاک کنیم. ما پورت سریال را مقدار دهی اولیه می کنیم.

برای روشن کردن یک LED خاص با استفاده از یک رجیستر شیفت ، باید یک عدد 8 بیتی به ورودی آن اعمال کنید. به عنوان مثال ، برای اینکه LED اول روشن شود ، شماره باینری 00000001 را تغذیه می کنیم ، برای دومی - 00000010 ، برای سومین - 00000100 و غیره این اعداد باینری در علامت اعشاری توالی زیر را تشکیل می دهند: 1 ، 2 ، 4 ، 8 ، 16 ، 32 ، 64 ، 128 و قدرت های دو از 0 تا 7 هستند.

بر این اساس ، در حلقه () با توجه به تعداد LED ها ، ما 0 تا 7 را دوباره محاسبه می کنیم. عملکرد pow (پایه ، درجه) 2 را به قدرت شمارنده چرخه می رساند. میکروکنترلرها با اعداد از نوع "دو برابر" خیلی دقیق کار نمی کنند ، بنابراین برای تبدیل نتیجه به یک عدد صحیح ، از تابع round () استفاده می کنیم. و عدد بدست آمده را به رجیستر شیفت منتقل می کنیم. برای شفافیت ، مانیتور پورت سریال مقادیری را که طی این عملیات بدست می آیند نمایش می دهد: یکی از میان رقم ها عبور می کند - LED ها به صورت موجی روشن می شوند.

طرحی برای کنترل رجیستر شیفت از طریق گذرگاه SPI
طرحی برای کنترل رجیستر شیفت از طریق گذرگاه SPI

مرحله 6

LED ها به نوبه خود روشن می شوند و ما "موجی" از چراغ ها را مشاهده می کنیم. LED ها با استفاده از یک رجیستر شیفت کنترل می شوند ، که ما از طریق رابط SPI به آن متصل می شویم. در نتیجه فقط 3 پایه آردوینو برای راه اندازی 8 LED استفاده می شود.

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

توصیه شده: