كانت الطابعات وأجهزة الماوس والمودم سابقاً تتّصل بكابلاتٍ سميكة ذات موصلاتٍ ضخمة ومعقّدة تُثَبَّت في جهاز الحاسوب؛ إذ كانت غالباً تَستخدِم واجهات UARTs للاتّصال بالحاسوب، ولا تُعَدّ واجهات UARTs شيئاً من الماضي على الرَّغم من استبدال تلك الكابلات والوصلات القديمة تقريباً بالكامل بمنافذ USP ، فإنَّ أجهزة UART تُستخدم في عديدٍ من مشاريع الإلكترونيّات لربط وحدات تحديد المواقع العالميّة (GPS) ووحدات البلوتوث وقارئات البطاقات RFID بجهاز Raspberry Pi أو Arduino أو أيّ متحكّم آخر.

تُعَدّ كلمة UART اختصاراً لـ (Universal Asynchronous Receiver/Transmitter) أي المستقبِل/الناقل غير المتزامن الشامل، وهو ليس بروتوكول اتّصال مثل SPI وI2C، ولكنه يُمثّل دارةً ماديّة ضمن وحدة تحكُّم صغري أو دارة متكاملة مستقلّة، والغرض الرئيسي منهُ إرسال واستقبال البيانات التسلسليّة، ومن أهم ميزاته أنّه يستخدم سلكَين فقط لنقل البيانات بين الأجهزة، كما أنّ مبادئه سهلة الفهم.
مقدّمة إلى بروتوكول اتّصال UART:
يتّصل جهازا UART، أحدهما مُرسِل والآخر مُستقبِل، مباشرة بواجهة UART ، ويحوّل الجهاز المُرسِل البيانات التفرعيّة المُرسلَة من جهاز تحكّم كوحدةِ معالجةٍ مركزيّة إلى بياناتٍ تسلسليّة، وينقلها تسلسليّاً إلى الجهاز المُستقبِل الذي يُحوّل البيانات التسلسليّة مرةً أخرى إلى بياناتٍ تفرعيّة للجهاز المستقبِل، ونحتاج سِلكَين فقط لنقل البيانات بين جهازَي UART؛ إذ تُرسل البيانات من الطرف Tx للمرسِل إلى الطرف Rx للمستقبِل.

تُرسِل أجهزة UART البيانات إرسالاً غير متزامنٍ مما يعني عدم وجود نبضة توقيتٍ لمزامنة خرج البِتّات من الجهاز المُرسِل مع عيّنة وحدات البِتّ من الجهاز المُستقبِل، وبدلاً من ذلك يضيف المُرسِل وحدات بِتّ تعرّف نقطة بداية وتوقف حزمة البيانات المُرسلة، وبالتالي يميّز الجهاز المُستقبِل متى يبدأ في قراءة وحدات البت؛ إذ يبدأ في قراءة وحدات البت الواردة بتردّداتٍ معيّنة عندما يميّز بت البداية، وتُعرف هذه التردّدات بمعدل الباود (baud rate)، وهو مقياسٌ لسرعةِ نقل البيانات يُعبَّر عنه بواحدة البت في الثانية (bps)، ويجب أن يعمل كلا الجهازَين (المُرسِل والمُستقبِل) بمعدل الباود نفسه تقريباً؛ إذ لا تزيد نسبة الاختلاف بينهما عن 10٪ تقريباً قبل أن تبتعد البتات كثيراً، كما يجب ضبط كلا الجهازَين لإرسالِ واستقبالِ بنية حزمة البيانات نفسها.

كيف تعمل أجهزة UART
يستقبل الجهاز المُرسِل البيانات من ناقل بيانات، والذي يُستخدم لإرسال البيانات إلى أجهزة UART بوساطة جهازٍ آخر كوحدة معالجة مركزيّة CPU أو ذاكرة أو وحدة تحكُّم دقيقة، إذ تكون البيانات المنقولة من ناقل البيانات إلى الجهاز المُرسِل بيانات تفرعيّة، وينشئ الجهاز المُرسِل حزمة البيانات من خلال إضافة بتّ بداية وبتّ تكافؤ وبتّ إيقاف بعد استقباله البيانات التفرعيّة من ناقل البيانات، ويجري بعدها إخراج حزمة البيانات تسلسلياً للبِتّات واحداً تلو الآخر عبر الطرف Tx، ويَقرأ الجهاز المستقبل حزمة البيانات شيئاً فشيئاً عبر الطرف Rx، ثمَّ يُحوّلها مرة أخرى إلى بياناتٍ تفرعيّة ويُزيل بِتّات البداية والتكافؤ والإيقاف، ويَنقُلها أخيراً على التفرّع إلى ناقل البيانات في الطرف المستقبِل:

تُنَظّم بيانات UART المُرسلة ضمن حزم، وتحتوي كلّ حزمة على بتّ بداية واحد و5 إلى 9 بتات بيانات (حسب نوع جهاز UART المُستخدم) وبتّ تكافؤ اختياري وبتّ توقّف أو اثنين.

بتّ البداية:
يبقى خطّ إرسال بيانات UART عادةً عند مستوى جهد عالٍ في حالة عدم إرسال البيانات، وتبدأ عملية نقل البيانات عندما ينقل الجهاز المرسل خطّ الإرسال من مستوى الجهد العالي إلى مستوى منخفض لمدة دورة ساعة واحدة، وعندما يستشعر الجهاز المستقبل انتقال الجهد من المستوى العالي إلى المستوى المنخفض يبدأ في قراءة البتّات في إطار البيانات بتردّد معدّل الباود.
إطار البيانات:
يحتوي إطار البيانات على البيانات الفعليّة المنقولة، ويمكن أن يصل طوله إلى 5-8 بتّ في حال استخدام بتّ تكافؤ، أمّا في حالة عدم استخدام بِتّ التكافؤ يمكن أن يصل طوله إلى 9 بتّ، ويُرسل البتّ الأقل أهمية أولاً في معظم حالات إرسال البيانات.
بت التكافؤ:
يَصف مصطلح “التكافؤ” الزوجيّة أو الفرديّة لعددٍ ما، وبتّ التكافؤ هو وسيلة للجهاز المُستقبِل لكشف تغيّر أي بيانات أثناء النقل؛ إذ يمكن أن تتغير البتّات بسبب الإشعاع الكهرومغناطيسي أو عدم تطابق مُعدّلات الباود أو نقل البيانات على مسافات بعيدة، ويَحسب الجهاز المُستقبِل العدد الإجمالي للبتّات ذات القيمة 1 بعد قراءته لإطار البيانات ويَتحقّق ما إذا كانت القيمة الإجماليّة عددًا زوجياً أم فردياً، فإذا كان بتّ التكافؤ صفراً (تكافؤ زوجي) يجب أن يكون إجمالي البتّات ذات القيمة 1 في إطار البيانات عدداً زوجياً، أمّا إذا كان بت التكافؤ هو 1 (تكافؤ فردي) فيجب أن يكون إجمالي البتّات ذات القيمة 1 في إطار البيانات عدداً فردياً، وعندما يتطابق بتّ التكافؤ مع البيانات يعرف جهاز الـ UART أنّ النقل خالٍ من الأخطاء، ويَكتشف أنّ البتّات في إطار البيانات قد تغيّرت في حال كان بتّ التكافؤ صفراً والعدد الإجمالي فردي أو في حال كان بتّ التكافؤ هو 1 والعدد الإجمالي زوجي.
بتّات التوقُّف:
ينقل الجهاز المُرسِل خطّ نقل البيانات من مستوى جهدٍ منخفض إلى مستوى جهدٍ عالٍ لمدةٍ لا تقلّ عن بتَّيْن، وذلك للإشارة إلى نهاية حزمة البيانات.
مراحل نقل UART:
- يستقبل جهاز UART المُرسِل البيانات المتوازية من ناقل البيانات.

- يُضيف جهاز UART المُرسِل بتات البداية والتكافؤ والتوقُّف إلى إطار البيانات.

- يرسل الجهاز المرسل الحزمة بأكملها تسلسلياً إلى الجهاز المُستقبِل، والذي يأخذ عيّنات من خطّ البيانات وفقاً لمعدل الباود المحدّد مسبقاً.

- يلغي الجهاز المُستقبِل بتات البداية والتكافؤ والإيقاف من إطار البيانات.

- يُحوّل الجهاز المُستقبِل البيانات التسلسليّة إلى بيانات تفرعيّة مرةً أخرى وينقلها إلى ناقل البيانات عبر الطرف المُستقبِل.

مميّزات وعيوب UARTs:
لا يوجد بروتوكول اتصالٍ مثالي ولكن أجهزة UART تعمل بأداءٍ جيّد جداً، وهذه بعض الإيجابيات والسلبيات لمساعدتك في تحديد ما إذا كان الجهاز يتناسب مع احتياجات مشروعك أم لا:
المميّزات:
– يَستخدم سلكين فقط.
– لا يحتاج إلى نبضة ساعة.
– يستخدم بتّ تكافؤ لفحص الأخطاء.
– يُمكن تغيير شكل حزمة البيانات طالما أنّ كلا الجانبين مجهّزان لذلك.
– طريقة مُوثّقة ومُستخدَمَة على نطاقٍ واسع.
العيوب:
– حجم إطار البيانات محدود بحدٍّ أقصى يعادل 9 بتّ.
– لا يدعم أنظمة الإحكام المتعدّدة أو الرقيقة المتعدّدة.
– يجب ألّا تزيد نسبة الاختلاف بين معدلات باود لأجهزة UART عن 10%.
ترجمة: | رانيا دالاتي |
مراجعة: | يارا قاضون |
تدقيق لغوي: | تيماء العبيد |
تحرير: | نور شريفة |