SPI (الواجهة الطرفية التسلسلية) في ESP32 باستخدام Arduino IDE

Spi Alwajht Altrfyt Altslslyt Fy Esp32 Bastkhdam Arduino Ide



تدعم لوحات ESP32 بروتوكولات الاتصال المتعددة. تتضمن هذه البروتوكولات المسلسل USART و I2C (IIC) و SPI. إلى جانب لوحات ESP32 هذه ، هناك أيضًا بروتوكولات اتصال لاسلكية متاحة مثل WiFi و Dual Bluetooth و ESP-Now و LoRa وغيرها الكثير. سنركز اليوم على بروتوكول ESP32 SPI (الواجهة التسلسلية المحيطية).

SPI (الواجهة المحيطية التسلسلية) في ESP32

واجهة SPI أو الواجهة الطرفية التسلسلية هي بروتوكول اتصال قصير المسافة يستخدم في العديد من أجهزة التحكم الدقيقة مثل ESP32. إنه بروتوكول اتصال متزامن يستخدم بشكل أساسي بواسطة المتحكمات الدقيقة للتواصل مع الأجهزة الطرفية الخاصة به ، بحيث يمكننا استخدام هذا البروتوكول لقراءة الأجهزة التي تدعم بروتوكول SPI والتحكم فيها.







يدعم اتصال SPI تكوين الرقيق الرئيسي هناك دائمًا ملف واحد رئيسي - سيد يتحكم في العديد من العبيد. إنها الازدواج الكامل الاتصالات بحيث يمكن تبادل البيانات في وقت واحد من السيد إلى العبد ومن العبد إلى السيد.




اتصال SPI في احتياجات ESP32 أربعة دبابيس مختلفة لنقل واستقبال البيانات إلى الأجهزة. فيما يلي تلك الدبابيس الأربعة:



  1. SCK: يحدد خط الساعة سرعة الإرسال
  2. ميسو: سيد في العبد هو دبوس الإرسال من العبد إلى السيد
  3. دخان: إتقان العبد هو خط نقل البيانات الرئيسية للعبيد
  4. SS: يساعد خط تحديد الرقيق ESP32 على تحديد تابع معين ونقل البيانات أو استقبالها من هذا العبد

ملحوظة: بعض الأجهزة التي هي تابعة فقط ولا يمكن أن تكون بمثابة إتقان ، فإن تسمية الدبوس الخاصة بها مختلفة مثل:





    • ميسو تم استبداله بـ SDO (إخراج البيانات التسلسلية)
    • دخان تم استبداله بـ SDI (إدخال البيانات التسلسلية)

دبابيس SPI في ESP32

لوحة ESP32 تأتي مع ملفات 4 أجهزة طرفية مختلفة لـ SPI مدمجة مع المتحكم الدقيق الخاص بها.

    • SPI0: لاتصالات الذاكرة الداخلية فقط- لا يمكن استخدامها مع أجهزة SPI خارجية
    • SPI1: لاتصالات الذاكرة الداخلية فقط- لا يمكن استخدامها مع أجهزة SPI خارجية
    • SPI2: (HSPI) لها إشارات ناقل مستقلة. يمكن أن تشتق كل حافلة 3 أجهزة الرقيق
    • SPI3: (VSPI) إشارة ناقل مستقلة. يمكن أن تشتق كل حافلة 3 أجهزة الرقيق

تأتي معظم لوحات ESP32 مع دبابيس SPI مُعدة مسبقًا لكل من SPI2 و SPI3. ومع ذلك ، إذا لم يتم تعيينها ، فيمكننا دائمًا تعيين دبابيس SPI في الكود. فيما يلي دبابيس SPI الموجودة في معظم لوحة ESP32 المعينة مسبقًا:



واجهة SPI دخان ميسو SCLK CS
VSPI GPIO 23 GPIO 19 GPIO 18 GPIO 5
HSPI GPIO 13 GPIO 12 GPIO 14 GPIO 15



يمكن أن تختلف دبابيس SPI المذكورة أعلاه حسب نوع اللوحة. سنكتب الآن رمزًا للتحقق من دبابيس ESP32 SPI باستخدام Arduino IDE.

كيفية البحث عن دبابيس SPI الافتراضية لـ ESP32

سيساعد الرمز المكتوب أدناه في العثور على دبابيس SPI الافتراضية في لوحة ESP32. افتح Arduino IDE وقم بتوصيل ESP32 بجهاز الكمبيوتر ، وحدد المنفذ الصحيح وقم بتحميل الكود. ثم انتظر الإخراج. هذا هو! هذا هو مدى بساطة الأمر

رمز للبحث عن دبابيس SPI الافتراضية لـ ESP32

سوف يقوم الرمز الموضح أدناه بطباعة دبابيس ESP32 الافتراضية SPI على الشاشة التسلسلية.

الإعداد باطل ( ) {
المسلسل ( 115200 ) ؛
المسلسل ( 'MOSI GPIO Pin:' ) ؛
المسلسل. println ( دخان ) ؛
المسلسل ( 'MISO GPIO Pin:' ) ؛
المسلسل. println ( ميسو ) ؛
المسلسل ( 'SCK GPIO Pin:' ) ؛
المسلسل. println ( SCK ) ؛
المسلسل ( 'SS GPIO Pin:' ) ؛
المسلسل. println ( SS ) ؛
}
حلقة فارغة ( ) {
}


يبدأ الكود بتعريف معدل الباود ويستمر باستدعاء دبوس GPIO الافتراضي لبروتوكول اتصال ESP32 SPI.

انتاج |

هنا في حالتنا ، عرضت الشاشة التسلسلية الرقم 23 و 19 و 18 و 5 لـ MOSI و MISO و SCK و SS على التوالي.

كيفية استخدام دبابيس SPI المخصصة في ESP32

بفضل ميزات تعدد الإرسال ESP32 ، من الممكن تكوين أي دبوس من لوحة ESP32 مثل UART و I2C و SPI و PWM. يحتاج المرء فقط إلى تعيينها في التعليمات البرمجية. سنقوم الآن بتحديد دبابيس SPI جديدة وطباعتها على الشاشة التسلسلية للتأكيد.

اكتب الكود الوارد أدناه في محرر Arduino IDE.

# تضمين
الإعداد باطل ( ) {
المسلسل ( 115200 ) ؛
المسلسل ( 'رقم التعريف الشخصي الافتراضي لـ MOSI GPIO:' ) ؛
المسلسل. println ( دخان ) ؛
المسلسل ( 'رقم التعريف الشخصي الافتراضي لـ MISO GPIO:' ) ؛
المسلسل. println ( ميسو ) ؛
المسلسل ( 'رقم التعريف الشخصي الافتراضي لـ SCK GPIO:' ) ؛
المسلسل. println ( SCK ) ؛
المسلسل ( 'رقم التعريف الشخصي الافتراضي لـ SS GPIO:' ) ؛
المسلسل. println ( SS ) ؛
#define SCK 25
#define MISO 32
#define MOSI 26
# تعريف CS 33
/ * اسم المكتبة اسم المستشعر ( CS ، MOSI ، MISO ، SCK ) ؛ // استدعاء دبابيس SPI الجديدة * /
المسلسل ( 'MOSI NEW GPIO Pin:' ) ؛
المسلسل. println ( دخان ) ؛
المسلسل ( 'MISO NEW GPIO Pin:' ) ؛
المسلسل. println ( ميسو ) ؛
المسلسل ( 'SCK NEW GPIO Pin:' ) ؛
المسلسل. println ( SCK ) ؛
المسلسل ( 'SS NEW GPIO Pin:' ) ؛
المسلسل. println ( SS ) ؛
}
حلقة فارغة ( ) {
}


هنا في الكود أعلاه ، نقوم بتضمين مكتبة SPI التسلسلية ثم نطبع دبابيس SPI الافتراضية على الشاشة التسلسلية. يمكن للمرء تخطي هذا الجزء من التعليمات البرمجية إذا لم يكن هناك حاجة. بعد ذلك باستخدام التعريف ، نقوم بتعيين دبابيس جديدة لـ SPI وطباعتها واحدة تلو الأخرى على الشاشة التسلسلية.

انتاج |

يطبع الإخراج المعروض على الشاشة التسلسلية جميع دبابيس SPI الجديدة للوحة ESP32.

ESP32 مع أجهزة SPI متعددة

يحتوي ESP32 على حافلتين SPI ، ويمكن لكل ناقل التحكم 3 الأجهزة مما يعني أنه يمكن التحكم في إجمالي 6 أجهزة باستخدام SPI لـ ESP32. للتحكم في المزيد من الأجهزة ، يمكننا استخدام تقنيات تعدد إرسال مختلفة.

أثناء التحكم في العديد من أجهزة الرقيق ، سيعمل ESP32 كقائد رئيسي لكل الخطوط الثلاثة MISO ، سيكون MOSI SCLK هو نفسه بالنسبة لهم ، فقط الاختلاف هو خط إشارة ساعة CS. لإرسال البيانات إلى جهاز تابع لجهاز الرقيق ، يجب ضبط دبوس CS لهذا الجهاز التابع على منخفض.


سيتبع بناء الجملة التالي إذا أردنا ضبط CS على LOW.

الكتابة الرقمية ( CS ، منخفض ) ؛


لنفترض أننا نريد قراءة البيانات من أي جهاز آخر ، لذلك يجب علينا تعيين دبوس CS للجهاز التابع الأول على أنه مرتفع لتعطيله.

الكتابة الرقمية ( CS_1 ، عالي ) ؛ // تعطيل دبوس CS من SLAVE 1
الكتابة الرقمية ( CS_2 ، منخفض ) ؛ // تفعيل CS pin of SLAVE اثنين

استنتاج

الواجهة الطرفية التسلسلية هي بروتوكول اتصال سلكي يستخدمه متحكم ESP32 لتبادل البيانات بين أجهزة تابعة متعددة. يدعم ESP32 SPI ناقلتين مختلفتين للتواصل مع قدرة كل ناقل على التحكم في 3 أجهزة تابعة. بشكل افتراضي ، يأتي ESP32 مع دبابيس SPI ؛ ومع ذلك ، يمكننا أيضًا تحديد واستخدام الدبابيس المخصصة باستخدام الكود.