حول Zigbee EZSP UART

المؤلف: TorchIoTBootCamp
الرابط: https://zhuanlan.zhihu.com/p/339700391
من: Quora

1. المقدمة

قدمت مختبرات سيليكون حلاً يجمع بين المضيف وبروتوكول NCP لتصميم بوابة زيجبي. في هذه البنية، يمكن للمضيف التواصل مع NCP عبر واجهة UART أو SPI. يُستخدم UART عادةً لأنه أبسط بكثير من SPI.

كما قدمت Silicon Labs أيضًا مشروعًا نموذجيًا للبرنامج المضيف، وهو المشروع النموذجيZ3GatewayHostتعمل العينة على نظام شبيه بنظام يونكس. قد يرغب بعض العملاء في الحصول على عينة مضيفة تعمل على نظام تشغيل في الوقت الحقيقي (RTOS)، ولكن للأسف، لا تتوفر حاليًا عينة مضيفة تعتمد على نظام تشغيل في الوقت الحقيقي. يحتاج المستخدمون إلى تطوير برنامج مضيف خاص بهم يعتمد على نظام تشغيل في الوقت الحقيقي.

من المهم فهم بروتوكول بوابة UART قبل تطوير برنامج مضيف مُخصّص. في كلٍّ من NCP المستند إلى UART وNCP المستند إلى SPI، يستخدم المضيف بروتوكول EZSP للتواصل مع NCP.إي زد إس بيهو اختصار لـبروتوكول EmberZnet التسلسلي، ويتم تعريفه فييو جي 100بالنسبة لـ NCP المستند إلى UART، يتم تنفيذ بروتوكول الطبقة السفلية لحمل بيانات EZSP بشكل موثوق عبر UART، وهذا هورمادبروتوكول، اختصار لـالمضيف التسلسلي غير المتزامن. لمزيد من التفاصيل حول ASH، يرجى الرجوع إلىيو جي 101ويو جي 115.

يمكن توضيح العلاقة بين EZSP وASH من خلال الرسم التخطيطي التالي:

1

يمكن توضيح تنسيق البيانات لبروتوكول EZSP وASH من خلال الرسم التخطيطي التالي:

2

في هذه الصفحة، سنقدم عملية تأطير بيانات UART وبعض الإطارات الرئيسية المستخدمة بشكل متكرر في بوابة Zigbee.

2. التأطير

يمكن توضيح عملية التأطير العامة من خلال الرسم البياني التالي:

3

في هذا الرسم البياني، تعني البيانات إطار EZSP. بشكل عام، عمليات التأطير هي: |لا|خطوة|مرجع|

|:-|:-|:-|

|1|املأ إطار EZSP|UG100|

|2|توزيع البيانات عشوائيًا|القسم 4.3 من UG101|

|3|إضافة بايت التحكم|الفصل 2 والفصل 3 من UG101|

|4|احسب CRC|القسم 2.3 من UG101|

|5|حشو البايتات|القسم 4.2 من UG101|

|6|إضافة علامة النهاية|القسم 2.4 من UG101|

2.1. املأ إطار EZSP

تم توضيح تنسيق إطار EZSP في الفصل 3 من UG100.

4

يُرجى الانتباه إلى أن هذا التنسيق قد يتغير عند ترقية مجموعة أدوات التطوير البرمجية (SDK). عند تغيير التنسيق، سنمنحه رقم إصدار جديد. أحدث رقم إصدار لـ EZSP هو 8 عند كتابة هذه المقالة (EmberZnet 6.8).

نظرًا لأن تنسيق إطار EZSP قد يختلف بين الإصدارات المختلفة، فهناك متطلب إلزامي بأن يكون المضيف وNCPيجبالعمل مع نفس إصدار EZSP. وإلا، فلن يتمكنوا من التواصل كما هو متوقع.

لتحقيق ذلك، يجب أن يكون الأمر الأول بين المضيف ونقطة التحكم في الشبكة (NCP) هو أمر الإصدار. بمعنى آخر، يجب على المضيف استرداد إصدار EZSP من نقطة التحكم في الشبكة (NCP) قبل أي اتصال آخر. إذا كان إصدار EZSP مختلفًا عن إصدار EZSP من جانب المضيف، فيجب إلغاء الاتصال.

المتطلب الضمني وراء هذا هو أن تنسيق أمر الإصدار يمكنلا تتغير أبدًاتنسيق أمر إصدار EZSP هو كما يلي:

5

يمكن الاطلاع على شرح حقل المعلمة وتنسيق استجابة الإصدار في الفصل الرابع من UG100. حقل المعلمة هو إصدار EZSP للبرنامج المضيف. عند كتابة هذه المقالة، كان رقمه 8.
7
الموقع: TorchIoTBootCamp
الرابط:https://zhuanlan.zhihu.com/p/339700391
来源:知乎
لا داعي للقلق بشأن هذه المشكلة.

2.2. عشوائية البيانات

تم وصف عملية التوزيع العشوائي بالتفصيل في القسم 4.3 من UG101. سيتم توزيع إطار EZSP بأكمله عشوائيًا. التوزيع العشوائي هو توزيع عشوائي حصري (أو) لإطار EZSP وتسلسل شبه عشوائي.

فيما يلي خوارزمية إنشاء التسلسل العشوائي الزائف.

  • rand0 = 0×42
  • إذا كان البت 0 من randi يساوي 0، فإن randi+1 = randi >> 1
  • إذا كان البت 0 من randi يساوي 1، فإن randi+1 = (randi >> 1) ^ 0xB8

2.3. إضافة بايت التحكم

بايت التحكم هو بايت بيانات واحد، ويجب إضافته إلى رأس الإطار. يوضح الجدول أدناه هذا التنسيق:

6

هناك ستة أنواع من بايتات التحكم. تُستخدم الأنواع الثلاثة الأولى للإطارات الشائعة مع بيانات EZSP، بما في ذلك DATA وACK وNAK. أما الأنواع الثلاثة الأخيرة، فتُستخدم بدون بيانات EZSP الشائعة، بما في ذلك RST وRSTACK وERROR.

تم وصف تنسيق RST وRSTACK وERROR في القسم 3.1 إلى 3.3.

2.4. احسب CRC

يتم حساب CRC بطول 16 بت على البايتات من بايت التحكم حتى نهاية البيانات. يتم تهيئة CRCCCITT القياسي (g(x) = x16 + x12 + x5 + 1) إلى 0xFFFF. يسبق البايت الأكثر أهمية البايت الأقل أهمية (وضع الطرف الكبير).

2.5. حشو البايتات

كما هو موضح في القسم 4.2 من UG101، هناك بعض قيم البايتات المحجوزة المستخدمة لأغراض خاصة. يمكن الاطلاع على هذه القيم في الجدول التالي:

7

عندما تظهر هذه القيم في الإطار، سيتم إجراء معاملة خاصة للبيانات. - أدخل بايت الهروب 0x7D أمام البايت المحجوز - عكس البت 5 من هذا البايت المحجوز

وفيما يلي بعض الأمثلة لهذه الخوارزمية:

8

2.6. إضافة علامة النهاية

الخطوة الأخيرة هي إضافة علامة النهاية 0x7E إلى نهاية الإطار. بعد ذلك، يُمكن إرسال البيانات إلى منفذ UART.

3. عملية إزالة الإطار

عندما يتم استلام البيانات من UART، نحتاج فقط إلى القيام بالخطوات العكسية لفك تشفيرها.

4. المراجع


وقت النشر: ٨ فبراير ٢٠٢٢
الدردشة عبر الواتس اب!