درباره Zigbee EZSP UART

نویسنده: TorchIoTBootCamp
لینک:https://zhuanlan.zhihu.com/p/339700391
از:Quora

1. مقدمه

Silicon Labs راه حل میزبان+NCP را برای طراحی دروازه Zigbee ارائه کرده است. در این معماری، میزبان می تواند از طریق رابط UART یا SPI با NCP ارتباط برقرار کند. معمولاً از UART استفاده می شود زیرا بسیار ساده تر از SPI است.

آزمایشگاه سیلیکون نیز یک پروژه نمونه برای برنامه میزبان ارائه کرده است که نمونه آن استZ3GatewayHost. نمونه بر روی یک سیستم یونیکس مانند اجرا می شود. ممکن است برخی از مشتریان نمونه میزبانی را بخواهند که بتواند روی 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|Byte Stuffing|بخش 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 و یک دنباله شبه تصادفی است.

در زیر الگوریتم تولید توالی شبه تصادفی آورده شده است.

  • rand0 = 0×42
  • اگر بیت 0 رندی 0 باشد، randi+1 = randi >> 1
  • اگر بیت 0 از رندی 1 باشد، randi+1 = (رندی >> 1) ^ 0xB8

2.3. بایت کنترل را اضافه کنید

بایت کنترل یک داده یک بایتی است و باید به سر فریم اضافه شود. فرمت با جدول زیر نشان داده شده است:

6

در مجموع، 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. مراجع


زمان ارسال: فوریه-08-2022
چت آنلاین واتس اپ!