حول زيجبي EZSP UART

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

1 المقدمة

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

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

من المهم فهم بروتوكول بوابة UART قبل تطوير برنامج مضيف مخصص.بالنسبة لكل من NCP المستند إلى UART وNCP المستند إلى SPI، يستخدم المضيف بروتوكول EZSP للتواصل مع NCP.EZSPهو اختصار لالبروتوكول التسلسلي EmberZnet، ويتم تعريفه فيUG100.بالنسبة لـ NCP القائم على UART، يتم تطبيق بروتوكول الطبقة السفلية لنقل بيانات EZSP بشكل موثوق عبر UART، وهذا هورمادبروتوكول، اختصار لالمضيف التسلسلي غير المتزامن.لمزيد من التفاصيل حول ASH، يرجى الرجوع إلىUG101وUG115.

يمكن توضيح العلاقة بين 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

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

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

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

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

  • راند0 = 0×42
  • إذا كانت البتة 0 من راندي هي 0، فإن راندي+1 = راندي >> 1
  • إذا كانت البتة 0 من راندي هي 1، فإن راندي+1 = (راندي >> 1) ^ 0xB8

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

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

6

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

تم توضيح تنسيق RST وRSTACK والخطأ في القسم 3.1 إلى 3.3.

2.4.احسب اتفاقية حقوق الطفل

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

2.5.حشو البايت

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

7

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

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

8

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

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

3. عملية إلغاء التأطير

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

4. المراجع


وقت النشر: 08 فبراير 2022
دردشة واتس اب اون لاين!