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

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

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

ان المسجلات الداخلية لكل من السيد 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
أزال المؤلف هذا التعليق.
ردحذفشكرا على هذا الشرح
ردحذفالله يجزيك الخير
ردحذفاخوانى مهندسى منتديات iraq embedded systems ارجو طلب ولكنة صعب شوية لاكن ميصعبش على عباقرة المنتدى وخاصة انتم شارحين الموضوع
ردحذفلدى مكون MC145170 واريد برمجتهما بما يتناسب مع مهامهما
تتم برمجة هذا المركب باستخدام النمط "SPI” والخطوط "clock” و "data” و "enable” القادمة من الميكروكنترولور
1- اريد شرح برمجة spi
2- كيف تنشيط الخطين "clock” و "data” ووضع الخط "enable” في الحالة 0 أو 1
3- وهل هذا المركب لة شيفرة علشان يشتغل
4- وياريت حد يفهمنى ويشرحلى العملية دى بالداتا شيت ان وجد وكيف ابرمجها على المشروع خاصتى
وطلب اخر كيفية نشيط الخطين "clock” و "data” وخاصة وضع الخط "enable” في الحالة 0 أو 1
وشكرا
thanks from morocco
ردحذفشكرا
ردحذفشكرا جزيل الشكر
ردحذفلدى ميكروكنترولر 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
وشكرا