المؤلف : Torchiotbootcamp
الرابط : https: //zhuanlan.zhihu.com/p/339700391
من : Quora
1. مقدمة
عرضت Silicon Labs حل مضيف+NCP لتصميم بوابة Zigbee. في هذه الهندسة المعمارية ، يمكن للمضيف التواصل مع NCP من خلال واجهة UART أو SPI. الأكثر شيوعًا ، يتم استخدام UART لأنه أبسط بكثير من SPI.
كما قدمت Silicon Labs مشروع عينة للبرنامج المضيف ، وهو العينةZ3GateWayhost
. تعمل العينة على نظام يشبه UNIX. قد يرغب بعض العملاء في عينة مضيفة يمكن أن تعمل على RTOs ، ولكن لسوء الحظ ، لا توجد عينة مضيف قائمة على RTOS في الوقت الحالي. يحتاج المستخدمون إلى تطوير برنامج المضيف الخاص بهم على أساس RTOs.
من المهم فهم بروتوكول بوابة UART قبل تطوير برنامج مضيف مخصص. لكل من NCP القائم على NCP و SPI ، يستخدم المضيف بروتوكول EZSP للتواصل مع NCP.EZSPقصير لبروتوكول Emberznet التسلسلي، ويتم تعريفه فيUG100. بالنسبة إلى NCP المستند إلى UART ، يتم تنفيذ بروتوكول طبقة أقل لنقل بيانات EZSP بشكل موثوق على UART ، وهذا هورمادبروتوكول ، قصير لالمضيف التسلسلي غير المتزامن. لمزيد من التفاصيل حول الرماد ، يرجى الرجوع إلىUG101وUG115.
يمكن توضيح العلاقة بين EZSP والرماد من خلال الرسم البياني التالي:
يمكن توضيح تنسيق بيانات EZSP وبروتوكول الرماد من خلال الرسم البياني التالي:
في هذه الصفحة ، سنقدم عملية تأطير بيانات UART وبعض الإطارات الرئيسية التي يتم استخدامها بشكل متكرر في بوابة Zigbee.
2. الإطار
يمكن توضيح عملية الإطار العامة بواسطة الرسم البياني التالي:
في هذا المخطط ، تعني البيانات إطار EZSP. بشكل عام ، عمليات الإطار هي: | لا | خطوة | مرجع |
|:-|:-|:-|
| 1 | ملء إطار EZSP | UG100 |
| 2 | التوزيع العشوائي للبيانات | القسم 4.3 من UG101 |
| 3 | أضف البايت السيطرة | Chap2 و Chap3 of UG101 |
| 4 | حساب CRC | القسم 2.3 من UG101 |
| 5 | حشو بايت | القسم 4.2 من UG101 |
| 6 | أضف العلم النهائي | القسم 2.4 من UG101 |
2.1. املأ إطار EZSP
تم توضيح تنسيق إطار EZSP في الفصل 3 من UG100.
انتبه إلى أن هذا التنسيق قد يتغير عند ترقيات SDK. عندما يتغير التنسيق ، سنعطيه رقم إصدار جديد. أحدث رقم إصدار EZSP هو 8 عند كتابة هذه المقالة (Emberznet 6.8).
نظرًا لأن تنسيق إطار EZSP قد يكون مختلفًا بين الإصدارات المختلفة ، فهناك شرط إلزامي بأن المضيف و NCPيجبالعمل مع نفس إصدار EZSP. خلاف ذلك ، لا يمكنهم التواصل كما هو متوقع.
لتحقيق ذلك ، يجب أن يكون الأمر الأول بين المضيف و NCP هو أمر الإصدار. وبعبارة أخرى ، يجب على المضيف إعادة محاكمة إصدار EZSP من NCP قبل أي اتصال آخر. إذا كان إصدار EZSP مختلفًا مع إصدار EZSP من جانب المضيف ، فيجب إحباط الاتصال.
الشرط الضمني وراء ذلك هو أن تنسيق أمر الإصدار يمكنهلا تتغير أبدًا. يشبه تنسيق أمر إصدار EZSP أدناه:
: https: //zhuanlan.zhihu.com/p/339700391
: : 知乎
著作权归作者所有。商业转载请联系作者获得授权 , 非商业转载请注明出处。
2.2. التوزيع العشوائي للبيانات
تم وصف عملية التوزيع العشوائية التفصيلية في القسم 4.3 من UG101. سيتم اختيارهم عشوائي إطار EZSP بأكمله. التوزيع العشوائي هو الحصري أو إطار EZSP وتسلسل عشوائي زائف.
فيما يلي خوارزمية توليد تسلسل العشبية الزائفة.
- RAND0 = 0 × 42
- إذا كان بت 0 من راندي هو 0 ، راندي+1 = راندي >> 1
- إذا كان بت 0 من Randi 1 ، Randi+1 = (Randi >> 1) ^ 0xb8
2.3. أضف بايت التحكم
بايت التحكم هو بيانات بايت واحدة ، ويجب إضافتها إلى رأس الإطار. تم توضيح التنسيق مع الجدول أدناه:
تماما ، هناك 6 أنواع من بايت السيطرة. يتم استخدام الثلاثة الأولى للإطارات الشائعة مع بيانات EZSP ، بما في ذلك البيانات و ACK و NAK. يتم استخدام الثلاثة الأخيرة بدون بيانات EZSP المشتركة ، بما في ذلك RST و RSTACK والخطأ.
تم وصف تنسيق RST و RSTACK والخطأ في القسم 3.1 إلى 3.3.
2.4. حساب CRC
يتم حساب CRC 16 بت على بايت من بايت التحكم حتى نهاية البيانات. تتم تهيئة CRCCCCITT القياسية (G (x) = x16 + x12 + x5 + 1) إلى 0xFFFF. أهم بايت يسبق البايت الأقل أهمية (الوضع الكبير).
2.5. حشو بايت
كما هو موضح في القسم 4.2 من UG101 ، هناك بعض قيم البايت المخصصة المستخدمة لغرض خاص. يمكن العثور على هذه القيم في الجدول التالي:
عندما تظهر هذه القيم في الإطار ، سيتم إجراء علاج خاص للبيانات. - أدخل بايت الهروب 0x7D أمام البايت المحجوز - عكس Bit5 من تلك البايت المحجوزة
فيما يلي بعض الأمثلة على هذه الخوارزمية:
2.6. أضف العلم النهائي
الخطوة الأخيرة هي إضافة علامة النهاية 0x7e إلى نهاية الإطار. بعد ذلك ، يمكن إرسال البيانات إلى منفذ UART.
3. عملية إلغاء التآكل
عند استلام البيانات من UART ، نحتاج فقط إلى القيام بالخطوات العكسية لفك تشفيرها.
4. المراجع
وقت النشر: فبراير -08-2022