Про Zigbee ezsp uart

Автор: torchiotbootcamp
Посилання: https: //zhuanlan.zhihu.com/p/339700391
Від: Quora

1. Вступ

Silicon Labs запропонував рішення HOST+NCP для дизайну шлюзу Zigbee. У цій архітектурі хост може спілкуватися з NCP через інтерфейс UART або SPI. Найчастіше UART використовується, оскільки він набагато простіший, ніж SPI.

Silicon Labs також надав зразок проекту для хоста, яка є зразкомZ3gatewayhost. Зразок працює на системі, що нагадує Unix. Деякі клієнти можуть захотіти проби хоста, який може працювати на RTOS, але, на жаль, поки що не існує зразка хоста на основі RTOS. Користувачі повинні розробити власну хост -програму на основі RTOS.

Важливо зрозуміти протокол шлюзу Uart перед розробкою індивідуальної програми хоста. Як для NCP на основі UART, так і на SPI NCP, хост використовує протокол EZSP для спілкування з NCP.Ezspкороткий дляСерійний протокол Emberznet, і це визначено вUG100. Для NCP на основі UART здійснюється протокол нижчого рівня для надійного перевозування даних EZSP над UART, цеПопілпротокол, короткий дляАсинхронний серійний господар. Детальніше про Еш, будь ласка, зверніться доUG101іUG115.

Співвідношення між EZSP та золом можна проілюструвати наступною схемою:

1

Формат даних EZSP та протоколу золи можна проілюструвати наступною схемою:

2

На цій сторінці ми представимо процес обрамлення даних UART та деякі ключові кадри, які часто використовуються в Zigbee Gateway.

2. Кадрування

Загальний процес кадру може бути проілюстрований наступною діаграмою:

3

У цій діаграмі дані означають кадр 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.

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 = (Randi >> 1) ^ 0xB8

2.3. Додайте байт управління

Байт управління - це єдиний байт даних, і його слід додати до головки кадру. Формат проілюстрований таблицею нижче:

6

Повністю існує 6 видів байт контролю. Перші три використовуються для загальних кадрів з даними EZSP, включаючи дані, ACK та NAK. Останні три використовуються без загальних даних EZSP, включаючи RST, RSTACK та помилку.

Формат RST, RSTACK та помилки описані в розділі 3.1 до 3.3.

2.4. Обчисліть CRC

16-бітний CRC обчислюється на байтах з байта управління до кінця даних. Стандартний CRCCCITT (g (x) = x16 + x12 + x5 + 1) ініціалізується до 0xffff. Найважливіший байт передує найменш вагомим байтом (Big-Endian Mode).

2,5. Байт -начинка

Як описано в розділі 4.2 UG101, є деякі зарезервовані значення байтів, які використовуються для спеціальної мети. Ці значення можна знайти в наступній таблиці:

7

Коли ці значення з’являться в кадрі, до даних буде зроблено спеціальне лікування. - Вставте втечу байт 0x7d перед зарезервованим байтом - зворотно біт5 цього зарезервованого байта

Нижче наведено кілька прикладів цього алгоритму:

8

2.6. Додайте кінцевий прапор

Заключний крок - додати кінцевий прапор 0x7e до кінця кадру. Після цього дані можуть бути надіслані до порту UART.

3. Процес дефрамування

Коли дані отримують від UART, нам просто потрібно зробити зворотні кроки, щоб розшифрувати їх.

4. Посилання


Час посади: лютий-08-2022
WhatsApp Online Chat!