هندسة تاك
هندسة تاك

@HandasaTac

16 تغريدة 60 قراءة Aug 15, 2021
لربما كانت أشهر بروتوكولات التواصل بين المايكروكونترولر Microcontrollers وقطع الأنظمة المضمنة Embedded Systems المختلفة هي:
UART
SPI
I2C
جميعها ترسل وتستقبل البيانات بشكل متتالي Serial (أي البت Bit الأول ثم الثاني ثم الثالث وهكذا)
فما هو الفرق بينها ؟
(يتبع)
شخصياً أجد أن أسهلها فهماً وتنفيذاً هو UART وهو إختصار لبروتوكول الإرسال والإستقبال العالمي غير المتزامن.
Universal Asynchronous Reception and Transmission
وهو يدعم الإرسال والإستقبال في نفس الوقت من خلال خطين مختلفين. (يتبع)
كل جهاز يستعمل هذا البروتوكول يمتلك خط إرسال TX وآخر إستقبال RX. خط TX من الجهاز الأول يتصل ب RX للجهاز الثاني المُطبق لنفس البروتوكول، والعكس صحيح. ولهذا البروتوكول نسخة متزامنة Synchronous تُعرف بال USART (يتبع)
في النسخة المتزامنة يوجد هنالك خط إضافي للساعة Clock تمر فيه نبضات Pulses بين الجهازين تساعد في تبادل البيانات دون المعرفة المسبقة لسرعة نقل البيانات بين كل قطعة، بالإضافة لمساعدتها على نقل البيانات بسرعة أعلى بكثير من سرعات النقل بدونها وغيرها من الفوائد. (يتبع)
سرعة إنتقال البيانات ببروتوكول UART تُعرف بالبود ربت BAUD Rate. فمثلاً، إذا كان البود "9600 baud" فمعناه أن البيانات ستنتقل بمعدل أقصى 9600 بت في الثانية. كلما زادت سرعة البيانات، كلما زادت حساسية الإتصال وإحتمالية فشله. (يتبع)
طبعاً يجب على القطعة المُرسلة والمستقبلة أن يعملا بنفس معدل نقل البيانات لتنجنب فساد البيانات المنتقلة. ويعيب هذا البروتوكول بطئه وصعوبة زيادة أعداد العناصر المرسلة والمستقبلة في نفس الشبكة. (يتبع)
ثانياً بروتوكول SPI، إختصارا للواجهة الطرفية التسلسلية Serial Peripheral Interface وهو أيضاً بروتوكول تسلسلي يعمل فيه أحد الأجهزة/القطع كسيد Master والجهاز، أو الأجهزة، الأخرى كعبيد. (يتبع)
ويستخدم بروتوكول SPI أربع منافذ وهي:
1- MOSI – Master Data Output, Slave Data Input
أي منفذ الخرج للسيد والدخل للعبد
2- MISO – master data input, slave data output
أي منفذ الدخل للسيد والخرج للعبد.
(يتبع)
3- SCLK – Clock Signal
أي منفذ الساعة والتي سينتجها ال"سيد" لمزامنة الاتصال مع العبيد.
4- NSS – Slave Enabled Signal
أي إشارة تفعيل العبد/عبيد ويتحكم بها السيد. وتسمى أيضاً Slave Select (SS)
وإن كان هنالك أكثر من قطعة عبد، فكل منها لها إشارة التفعيل الخاصة بها.
(يتبع)
يدعم البروتوكول الارسال والاستقبال في نفس الوقت Full Duplex وهو أسرع من UART و I2C. يعيبه كثرة عدد منافذه ومحدوديته بقطعة سيد واحدة. (يتبع)
وأخيراً البروتوكول I2C ويرمز إختصاراً إلى Inter-Integrated-Circuit (I2C) أو دائرة التكامل الداخلية. يستخدم البروتوكول فقط سلكين للحصول على تبادل معلومات في الإتجاهين في إتصال متزامن. يستخدم هذا البروتوكول "بص Bus" (أي وصلة كهربائية أو سلك) واحد مشترك لربط جميع الأجهزة. (يتبع)
يسمى الخط الأول من خطوط هذا البروتوكول ب SCL إختصارا ل Serial Clock Line أو خط الساعة المتزامن، والثاني SDA إختصاراً ل Serial Data Line أو خط البيانات المتزامن. خط الساعة SCL يتم فيه مزامنة الاتصال بين جميع الاجهزة، بينما تنتقل البيانات فقط على خط الSDA. (يتبع)
يتبع هذا البروتوكول أيضاً أسلوب السيد والعبد، حيث يقوم السيد بإنتاج إشارة الساعة للمزامنة ويبدأ بنقل البيانات. إن رغب السيد بإرسال البيانات للعبيد فإنه يقوم بتوجيه البيانات لعنوان العبد المطلوب أولا قبل نقل محتوى البيانات. (يتبع)
كذلك إذا رغب السيد بإستقبال بيانات من أي من العبيد فعليه أولاً أن يرسل لذلك العبد ليطلب تلك البيانات. لذلك فإن إستخدام مثل هذا البروتوكول يكثر عند التواصل بين المعالجات والحساسات، وليس بين المعالجات وبعضها. (يتبع)
يمتاز ببساطته (مجرد سلكين) مقارنة ب SPI وسماحه بتوصيل أكثر من سيد Master، لكن تكلفة هذه البساطة هي بطئه. (يتبع)
لا يوجد بروتوكول إتصال بين هذه المجموعة يمكن أي يُعد هو الأفضل بينهم، فلكل منها ميزات وعيوب. على المهندس إختيار الأنسب لكل تطبيق. فإن كنت مثلاً تبحث عن سرعة الاتصال فعليك ب SPI، أو الاتصال بعدد كبير من الأجهزة ف I2C، أو شي بسيط وسهل ف UART.

جاري تحميل الاقتراحات...