الجمعة، 16 يناير 2015

شرح بروتوكول SPI

SPI

هو بروتوكول من نوع Full Duplex اي يرسل ويستلم بنفس الوقت وتم تطويره من قبل شركة موتوريلا Motorola يختلف عن بروتوكول I2C في طريقة التعرف على الطرفيات المراد التخاطب معها حيث لايقوم بارسال عنوان بل يوجد ناقل خاص Select Chip يقوم بتفعيل الطرفية المراد التخاطب معها عندما يكون 0 منطقي  تفعل الطرفية وعندما يكون 1 منطقي يلغي تفعيل الطرفية هو اكثر البروتوكلات استعمالا في المتحكمات حيث تناسب سرعته ونقل بيانات كبيرة  يمكن ربط من 8 الى 12 جهاز بواسطة هذا البروتوكول على خط نقل واحد  يتشابه في مسالة الطول الاعظمي للناقل مع بروتوكول I2C  فكلاهما يمتلك طول خط نقل قصير مناسب لتطبيقات الداراة المطبوعة تصل سرعة النقل به الى حد 10mb لايملك الية للتعرف على ان البيانات وصلت كاملة او لا ولايملك الية للتعرف على ان الاجهزة الطرفية موجودة او تم ازالتها يمكن بناؤ هذا البروتوكول من الكيان الصلب وكذلك بصورة برمجية 

التركيب الداخلي لSPI

يوجد جهاز قائد Master   يتصل مع جهاز او عدة اجهزة خوادم Slave وتركيب الSPI عبارة عن مسجل ازاحة من من توالي الى توازي بطول 8 بت ويعتمد على اربعة خطوط للتخاطب مع الوحدات المحيطية 
 MOSI Master Out Slave In يكون هذا القطب خرج عندما يكون الجهاز Master  ويكون هذا القطب دخل عندما يكون الجهاز Slave
 MISO Master In Slave Out يكون هذا القطب دخل عندما يكون الجهاز Master  ويكون هذا القطب خرج عندما يكون الجهاز Slave
Serial Clock-Synchronization قطب التزامن والمسؤل عن توليده الMaster 
Slave Select قطب يخرج من الجهاز السيد Master ليحدد اي من الخوادم Slaves يتم التواصل معه اي هو قطب تفعيل يكون مفغل عندما يكون 0 منطقي ويحتاج كل جهاز خادم Slave الى خط تفعيل لذا عدد نواقل SPI تعتمد على عددالاجهزة المتصلة  
ان المسجلات الداخلية لكل من السيد Master والخادم Slave مرتبطة مع بعضها عن طريق الطرفين MISO و MOSI ويشكلان حلقة مغلقة حيث ينزاح بت من السيد وينزاح بت من الخادم في نفس النبضة الزمنية والصورة ستوضح العملية التي يندفع فيها بت ال الخرج ليحل محله بت جرت عليه عملية زحف بسبب دخول بت اخر من الدخل 

عند اكتمال عملية ارسال 8 بتات سنحصل على بايت جديد تم استلامه سواء من قبل السيد او الخادم فالعملية تجري باتجاهين وعندها يتم حفظ البايت المستلم وتبديله ببايت ليتم تزحيفه وارساله نلاحظ ان البنية لهذا البروتوكول جدا سهلة 

 انماط توصيل SPI

1-Daisy Chain SPI Configuration
في هذا النمط يتم ربط كل الاطراف MISO و MOSI  وSCLK مع بعضها لبعض لكل الخوادم Slaves ولكن تبقى اطراف التفعيل التي يبلغ عددها بعدد الخوادم Slaves تتوزع على كل الخوادم لتفعل اي واحد منهم حسب رغبة البروتوكول بالتخاطب مع الطرفيات ويلاحظ هنا انه في بنية SPI يكون هناك ناقل تفعيل واحد يمكن التعامل معه بالكيان الصلب اما عند ربط اكثر من خادم وظهور اكثر من ناقل تفعيل يجب التعامل معه برمجيا وضبط التفعيل
 

2-Independent Slave SPI Configuration
في هذا النمط يتم ربط مسجلات الخوادم مع بعضها بصورة متوالية اي يحصل ان نتخاطب ثلاث مسجلات خوادم ومسجل قائد حيث يتم ربط خرج الخادم الاول الى دخل الخادم الثاني وخرج الخادم الثاني الى دخل الخادم الثالث وخرج الخادم الثالث الى مسجل القائد وبالنتيجية نحصل على حلقة متوالية تحتوي 4 مسجلات ازاحة لذا عندما يرسل القائد 3 بايتات يتم دفعها بالتسلسل ليصبح اول بايت تم ارساله داخل الخادم الثالث وثاني بايت تم ارساله داخل مسجل الخادم الثاني واخر بايت تم ارساله داخل مسجل الخادم الاول عند هذا الربط يجب تفعيل كل الخوادم في نفس اللحظة الزمنية لذا عدد النواقل بين القائد والخوادم فقط اربعة وناقل التفعيل يوزع نفسه على الخوادم ويكون مفعلا دائما
 

الانماط الزمنية لSPI

توجد اربعة انماط زمنية لتعامل المتحكمات مع هذا البروتوكول ويجب تحديد واختيار نمط معين عن طريق مسجل خاص داخل المتحكم ويتم اختيار النمط برمجيا من قبل المتحكم وحسب توافق الطرفيات اي يجب قراءة ورقة البيانات للطرفية التي سوف يتم ربطها وبموجب ذلك يحدد نمط التوقيت من قبل المتحكم ويختلف في هذه الانماط الاربعة القطبية والطور لموجة الزمن وفي كل الانماط الاربعة يتم قراءة البيانات عند حافة زمنية صاعدة مثلا ويتم تغيرها عن الحافة الهابطة التي بعدها او بالعكس وهنا صورة توضح الانماط الاربعة 

الخط الاحمر يمثل الحافات الزمنية التي تجري فيها عملية القراءة والخط الاسود يمثل الحافات الزمنية التي تجري فيها عملية تغير البيانات المسالة سهلة جدا مجرد معرفة نمط الطرفية من ورقة البيانات وضبط المتحكم على نمط هذه الطرفية عن طريق مسجل تحكم خاص بهذا البروتوكول يتم معرفته من قراءة ورقة بيانات المتحكم 

يقصد بCPHA طور موجة الزمن والخط الاحمريمثل الوقت الذي تجري عنده قراءة البيانات والازرق خط الذي يمثل الوقت الذي تجري عنده عملية التزحيف

تطبيقات الSPI

توجد الكثير من الطرفيات التي تدعم التواصل بهذا البروتوكول وتوجد بعض الطرفيات التي تحتاج سرعة لاتستطيع التواصل ب I2C وانما يجب استخدام SPI للتواصل معها ومن اشهر الطرفيات التي تستخدم هذا البروتوكول بطاقات الذاكرة MMC
وكذلك كل من Serial EEPROM,LCD,Sensors,ADC,DAC,RTC,CAN Controller,RAM 

7 التعليقات:

  1. أزال المؤلف هذا التعليق.

    ردحذف
  2. شكرا على هذا الشرح

    ردحذف
  3. اخوانى مهندسى منتديات iraq embedded systems ارجو طلب ولكنة صعب شوية لاكن ميصعبش على عباقرة المنتدى وخاصة انتم شارحين الموضوع

    لدى مكون MC145170 واريد برمجتهما بما يتناسب مع مهامهما

    تتم برمجة هذا المركب باستخدام النمط "SPI” والخطوط "clock” و "data” و "enable” القادمة من الميكروكنترولور

    1- اريد شرح برمجة spi
    2- كيف تنشيط الخطين "clock” و "data” ووضع الخط "enable” في الحالة 0 أو 1
    3- وهل هذا المركب لة شيفرة علشان يشتغل
    4- وياريت حد يفهمنى ويشرحلى العملية دى بالداتا شيت ان وجد وكيف ابرمجها على المشروع خاصتى
    وطلب اخر كيفية نشيط الخطين "clock” و "data” وخاصة وضع الخط "enable” في الحالة 0 أو 1
    وشكرا

    ردحذف
  4. thanks from morocco

    ردحذف
  5. شكرا جزيل الشكر

    لدى ميكروكنترولر 16f876 واريد برمجتهما بما يتناسب مع مهامهما مع المحولة الرقمية MAX6675 والتي بدورها مربوطة مع حساس الحرارة المزدوج الحرارية THERMOCOUPLE type K
    تتم برمجة هذا المركب باستخدام النمط "SPI” والخطوط "clock” و "data” و "enable” القادمة من الميكروكنترولور

    1- اريد شرح برمجة spi
    2- كيف تنشيط الخطين "clock” و "data” ووضع الخط "enable” في الحالة 0 أو 1
    3- هذا المركب يبرمج عن طريق الميكرو سي PROTUES) uc )
    وطلب اخر كيفية نشيط الخطين "clock” و "data” وخاصة وضع الخط "enable” في الحالة 0 أو 1
    وشكرا

    ردحذف