هل تساءلت يوماً عن كيفيّة تواصل المتحكّمات والحساسات وغيرها من الأجهزة الإلكترونية بعضها مع بعض؟ وما هي آلية عملها؟
يشبه الاتّصال بين الأجهزة الإلكترونية الاتصال بين البشر؛ إذ يحتاج كلا الجانبين إلى التحدث باللغة نفسها، وتسمّى هذه اللغة في مجال الإلكترونيات ببروتوكولات الاتّصال، ويوجد عدد قليل من بروتوكولات الاتّصال التي نحتاج إلى معرفتها عند بناء معظم مشاريع الإلكترونيات العملية.
سنتعرّف في هذه السلسلة من المقالات على ثلاثةٍ من أكثر البروتوكولات شيوعاً: بروتوكول واجهة الاتّصال التسلسلي (Serial Peripheral Interface – SPI) وبروتوكول الدارة المتكاملة(Inter-Integrated Circuit – I2C)، وبروتوكول الاستقبال والإرسال الشامل غير المتزامن (Universal Asynchronous Receiver/Transmitter (UART) driven communication – UART).
تُعدّ هذه البروتوكولات أبطأ بكثير من بروتوكولUSB والإيثرنت (Ethernet) والبلوتوث (Bluetooth) والواي فاي (Wi-Fi)، لكنها أكثر بساطة وتستخدم موارد أقلّ من الأجهزة والنظام، وتعدّ مثاليّة للاتّصال بين المتحكّمات الدقيقة، والمتحكمات الدقيقة والمستشعرات؛ إذ لا يلزم نقل كميات كبيرة من البيانات عالية السرعة.
الفرق بين الاتصال التسلسلي والمتوازي
تتواصل الأجهزة الإلكترونيّة بعضها مع بعض عن طريق إرسال بتات البيانات (bits) عبر الأسلاك الواصلة بين الأجهزة، (البتّ أصغر وحدة بيانات في الكمبيوتر والاتصالات الرقمية) وهو مثل الحرف في الكلمة ولكن يكون البت ثنائياً إمّا 1 وإمّا 0 فقط. تُنقل البتات من جهاز إلى آخر عن طريق تغييرات سريعة في الجهد، ففي نظام يعمل بجهد 5 فولت، ينقل البت 0 بنبضة قصيرة بجهد 0 فولت، والبت 1 بنبضة قصيرة بجهد 5 فولت.
يمكن نقل بتات البيانات بطريقةٍ متوازية أوتسلسليّة، إذ تُرسَل البتات في الاتصال المتوازي بوقتٍ واحد كلّ منها عبر سلكٍ منفصل. يوضّح الرسم التالي نقل الحرف “C” بوجهٍ متوازٍ بالترميز الثنائي :(01000011)

أمّا في الاتّصال التسلسلي، تُرسَل البتات واحدة تلوَ الأخرى عبر سلكٍ واحد. يوضّح الرسم التالي نقل الحرف “C” بتسلسل بالترميز الثنائي :(01000011)

مقدّمة لبروتوكول الاتصال SPI
يُعدّ SPI بروتوكول اتٰصال شائع يُستخدم في العديد من الأجهزة للتواصل مع المتحكمات، مثل قارئ بطاقة SD وقارئ بطاقة RFID والمرسلات/المستقبلات اللاسلكية بتردد2.4 جيجا هرتز.
يتميّز SPI بنقلهِ للبيانات دون انقطاع، ويمكن إرسال أو استقبال أي عدد من البتات باستمرار، في حين تُرسل البيانات في حزمٍ محدودة بعدد معيّن من البتات في I2C وUART . تحدّد شروط البدء والتوقُّف في بداية ونهاية كلّ حزمة، لذا تنقطع البيانات أثناء النقل.
تكون الأجهزة التي تتواصل عبر SPI في علاقة سيد-تابع (master-slave relationship)، ويكون السيد الجهاز المسيطر (عادةً ما يكون متحكم دقيق)، بينما يأخذ التابع التعليمات من السيد (عادةً ما يكون مستشعر أو جهاز عرض أو شريحة ذاكرة)، ويُعدّ نظام سيد وتابع واحد أبسط تكوين لـ SPI، ولكن يمكن لسيد واحد التحكّم في أكثر من تابع.

خطوط SPI
MOSI (Master Output/Slave Input)– خط للسيد لإرسال البيانات إلى التابع، يكون الإخراج من السيد والإدخال إلى التابع.
MISO (Master Input/Slave Output)– خط للتابع لإرسال البيانات إلى السيد، يكون الإدخال إلى السيد والإخراج من التابع.
الساعة SCLK- خط لإشارة الساعة.
SS/CS (Slave Select/Chip Select) – خط للسيد لتحديد إلى أي تابع يرسل البيانات.

يُستخدم عدد أقل من التوابع عند التطبيق بسبب سعة التحميل للنظام، والتي تقلل من قدرة السيد على التبديل بدقة بين مستويات الجهد.
كيف يعمل SPI؟
الساعة
يعدّ SPI بروتوكول اتّصال متزامن بسبب تشارك الأجهزة إشارة الساعة فيه تُزامن إشارة الساعة إخراج بتات البيانات من السيد مع عمليّة أخذ البتات من التابع، ويُنقل بت واحد من البيانات في كلّ دورة ساعة لذا تُحدّد سرعة نقل البيانات بوساطة تردّد إشارة الساعة، ويبدأ الاتصال بـSPI من قبل السيد الذي يقوم بتكوين وتوليد هذه الإشارة .
يمكن تعديل إشارة الساعة في SPI باستخدام خصائص القطبية والمرحلة الزمنية للساعة؛ إذ تعمل هذه الخصائص معاً لتحديد متى يجب إخراج البتات أو أخذ العينات. تُضبط قطبية الساعة من قبل السيد للسماح بإخراج البتات وأخذ العينات على حافة الارتفاع أو الانخفاض من دورة الساعة، أمّا المرحلة الزمنية تُضبط للإخراج وأخذ العينات على إحدى حافتي الساعة، سواء أكانت ترتفع أو تنخفض.
يوجد أيضاً طرق غير متزامنة لا تستخدم إشارة الساعة، على سبيل المثال في اتصال UART، يُضبط كلا الجانبين على معدل الباود (“baud rate” عدد وحدات الإشارة المرسلة لكلّ وحدة زمنية مطلوبة لتمثيل البتات) الذي يحدد سرعة وتوقيت نقل البيانات.
تحديد التابع (SLAVE SELECT)
يمكن للسيد اختيار التابع الذي يرغب بالاتصال به عن طريق ضبط خط CS/SS الخاص بالتابع على مستوى جهدّ منخفض، وفي حالة الخمول وعدم الإرسال يُضبط على مستوى جهدٍ عالٍ. قد تتوفر عدة مداخل CS/SS على السيد ممّا يتيح توصيل عدة توابع بالتوازي، أمّا إذا كان هناك مدخل CS/SS واحد يمكن توصيل أكثر من تابع بالسيد عن طريق التوصيل المتسلسل (daisy-chaining).
استخدام أكثر من تابع (MULTIPLE SLAVES)
يمكن إعداد SPI للعمل مع سيد وتابع واحد أو مع توابع عدّة يتحكّم بهم سيد واحد، وهناك طريقتان لتوصيل عدة توابع بالسيد، فإذا كان للسيد مداخل عدّة للتوابع يمكن توصيلهم بالتوازي بهذه الطريقة:

وتوصل التوابع على التسلسل في حال وجود مدخل واحد لها بهذه الطريقة:

خطوط MOSI وMISO
يرسل السيد البيانات إلى التابع بتاً تلو الآخر عبر خط MOSI بطريقة تسلسلية، ويستقبل التابع البيانات المرسلة عند مدخلMOSI ، وعادةً ما يبدأ السيد بإرسال البت الأكثر أهميّة أولاً.
يمكن أيضاً للتابع إرسال البيانات مرة أخرى إلى السيد عبر خط MISO بالتسلسل، وعادةً ما يبدأ التابع بإرسال البت الأقل أهمية أولاً.
خطوات نقل البيانات في بروتوكول SPI
- يخرج السيد إشارة الساعة.

- يحوّل السيد مدخل SS/CS إلى حالة جهد منخفضة، ممّا يُفعل التابع.

- يرسل السيد البيانات بتاً تلو الآخر إلى التابع، الذي يقرأ البتات كما استلمها عبر خط MOSI:

- إذا كانت الاستجابة مطلوبة، يعيد التابع البيانات بتاً تلو الآخر إلى السيد، الذي يقرأ البتات كما استلمها عبر خط MISO:

المزايا والعيوب لـ SPI
يوجد بعض المزايا والعيوب لاستخدام SPI، ويجب أن تعرف متى يتعيّن عليك استخدام SPI بدلاً من بروتوكولات الاتصال الأخرى وفقًا لمتطلبات مشروعك:
المزايا
– لا توجد بتات بدء وتوقّف، لذا يمكن تدفّق البيانات باستمرار دون انقطاع.
– لا يوجد نظام توجيه معقّد للتوابع مثل I2C.
– معدّل نقل البيانات أعلى بمقدار الضعف من I2C.
– خطوط MISO وMOSI منفصلة، لذا يمكن إرسال واستقبال البيانات في الوقت نفسه.
العيوب
– يستخدم أربعة أسلاك بينما يستخدم I2C وUART سلكين.
– لا يوجد بت تأكيد على استلام البيانات بنجاح كالموجود في I2C.
– لا يوجد بت للتحقّق من الأخطاء مثل بت التوازن في .UART
– يستخدم سيد واحد فقط.
ترجمة: | سعاد جركس |
مراجعة: | أماني صالح |
تدقيق لغوي: | تيماء العبيد |
تحرير: | نور شريفة |