واجهة 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" هو بروتوكول نقل بيانات متزامن لربط جهاز رئيسي مع الأجهزة الطرفية (التابعة). غالبًا ما يكون المعلم متحكمًا دقيقًا. يتم الاتصال بين الأجهزة عبر أربعة أسلاك ، ولهذا السبب يشار إلى SPI أحيانًا باسم "واجهة بأربعة أسلاك". هذه الإطارات هي:

MOSI (Master Out Slave In) - خط نقل البيانات من السيد إلى الأجهزة التابعة ؛

MISO (Master In Slave Out) - خط نقل من العبد إلى السيد ؛

SCLK (الساعة التسلسلية) - نبضات ساعة المزامنة التي تم إنشاؤها بواسطة السيد ؛

SS (Slave Select) - خط اختيار الجهاز التابع ؛ عندما يكون على السطر "0" ، "يفهم" العبد أنه يتم الوصول إليه.

هناك أربعة أوضاع لنقل البيانات (SPI_MODE0 ، SPI_MODE1 ، SPI_MODE2 ، SPI_MODE3) ، بسبب الجمع بين قطبية نبض الساعة (نعمل على المستوى العالي أو المنخفض) ، قطبية الساعة ، CPOL ، ومرحلة نبضات الساعة (التزامن) على الحافة الصاعدة أو الهابطة لنبض الساعة) ، طور الساعة ، CPHA.

يوضح الشكل خيارين لتوصيل الأجهزة باستخدام بروتوكول SPI: مستقل ومتعاقب. عند الاتصال بشكل مستقل بحافلة SPI ، يتواصل السيد مع كل تابع على حدة. مع الشلال - يتم تشغيل الأجهزة التابعة بالتناوب ، في سلسلة.

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

الخطوة 2

في Arduino ، توجد حافلات SPI على منافذ محددة. كل لوحة لها تخصيص رقم التعريف الشخصي الخاص بها. للراحة ، يتم تكرار المسامير ووضعها على موصل ICSP منفصل (البرمجة التسلسلية داخل الدائرة). يرجى ملاحظة أنه لا يوجد دبوس تحديد تابع على موصل ICSP - SS ، منذ ذلك الحين من المفترض أنه سيتم استخدام Arduino كسيد على الشبكة. ولكن إذا لزم الأمر ، يمكنك تعيين أي دبوس رقمي من Arduino كـ SS.

يوضح الشكل التخصيص القياسي للمسامير في حافلات SPI لـ Arduino UNO و Nano.

تنفيذ SPI في Arduino
تنفيذ SPI في Arduino

الخطوه 3

تمت كتابة مكتبة خاصة لـ Arduino تنفذ بروتوكول SPI. إنه متصل على النحو التالي: في بداية البرنامج ، أضف #include SPI.h

لبدء العمل مع بروتوكول SPI ، تحتاج إلى ضبط الإعدادات ثم تهيئة البروتوكول باستخدام إجراء SPI.beginTransaction (). يمكنك القيام بذلك من خلال تعليمات واحدة: SPI.beginTransaction (SPISettings (14000000 ، MSBFIRST ، SPI_MODE0)).

هذا يعني أننا نقوم بتهيئة بروتوكول SPI بتردد 14 ميجاهرتز ، يبدأ نقل البيانات ، بدءًا من MSB (البت الأكثر أهمية) ، في الوضع "0".

بعد التهيئة ، نختار الجهاز التابع عن طريق وضع دبوس SS المقابل في الحالة المنخفضة.

ثم نقوم بنقل البيانات إلى الجهاز التابع باستخدام الأمر SPI.transfer ().

بعد الإرسال ، نعيد SS إلى الحالة HIGH.

ينتهي العمل مع البروتوكول بالأمر SPI.endTransaction (). من المستحسن تقليل وقت تنفيذ النقل بين تعليمات SPI.beginTransaction () و SPI.endTransaction () بحيث لا يكون هناك تداخل إذا حاول جهاز آخر تهيئة نقل البيانات باستخدام إعدادات مختلفة.

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

الخطوة 4

لننظر في التطبيق العملي لواجهة SPI. سنضيء مصابيح LED من خلال التحكم في سجل التحول 8 بت عبر ناقل SPI. دعنا نربط سجل التحول 74HC595 بـ Arduino. نقوم بالاتصال بكل من المخرجات الثمانية عبر LED (من خلال المقاوم المحدد). يظهر الرسم البياني في الشكل.

توصيل سجل التحويل 74HC595 بأردوينو
توصيل سجل التحويل 74HC595 بأردوينو

الخطوة الخامسة

دعونا نكتب مثل هذا الرسم التخطيطي.

أولاً ، لنقم بتوصيل مكتبة SPI وتهيئة واجهة SPI. دعنا نعرّف الدبوس 8 على أنه دبوس التحديد التابع. دعنا نمسح سجل الإزاحة عن طريق إرسال القيمة "0" إليه. نقوم بتهيئة المنفذ التسلسلي.

لإضاءة مؤشر LED محدد باستخدام سجل التحول ، تحتاج إلى تطبيق رقم 8 بت على مدخلاته. على سبيل المثال ، لكي يضيء المصباح الأول ، نقوم بتغذية الرقم الثنائي 00000001 ، والثاني - 00000010 ، وللصمام الثالث - 00000100 ، إلخ تشكل هذه الأرقام الثنائية بالتدوين العشري التسلسل التالي: 1 ، 2 ، 4 ، 8 ، 16 ، 32 ، 64 ، 128 وهي قوى لاثنين من 0 إلى 7.

وفقًا لذلك ، في الحلقة () من خلال عدد مصابيح LED ، نعيد الحساب من 0 إلى 7. ترفع الدالة pow (القاعدة ، الدرجة) 2 إلى قوة عداد الدورة. لا تعمل الميكروكونترولر بدقة كبيرة مع أرقام من النوع "double" ، لذلك لتحويل النتيجة إلى عدد صحيح ، نستخدم الدالة round (). وننقل الرقم الناتج إلى سجل المناوبة. من أجل الوضوح ، تعرض شاشة المنفذ التسلسلي القيم التي تم الحصول عليها أثناء هذه العملية: يمر المرء من خلال الأرقام - تضيء مصابيح LED في موجة.

رسم تخطيطي للتحكم في سجل التحول عبر ناقل SPI
رسم تخطيطي للتحكم في سجل التحول عبر ناقل SPI

الخطوة 6

تضيء مصابيح LED بدورها ، ونلاحظ "موجة" من الأضواء متنقلة. يتم التحكم في مصابيح LED باستخدام سجل التحول ، الذي قمنا بتوصيله عبر واجهة SPI. نتيجة لذلك ، يتم استخدام 3 دبابيس Arduino فقط لتشغيل 8 مصابيح LED.

لقد درسنا أبسط مثال لكيفية عمل Arduino مع ناقل SPI. سننظر في اتصال سجلات التحول بمزيد من التفصيل في مقال منفصل.

موصى به: