O Zigbee EZSP UART

Autor: TorchIoTBootCamp
Odkaz: https://zhuanlan.zhihu.com/p/339700391
Od: Quora

1. Úvod

Spoločnosť Silicon Labs ponúkla riešenie host+NCP pre návrh brány Zigbee. V tejto architektúre môže hostiteľ komunikovať s NCP cez rozhranie UART alebo SPI. Najčastejšie sa používa UART, pretože je oveľa jednoduchší ako SPI.

Silicon Labs tiež poskytlo vzorový projekt pre hostiteľský program, ktorý je vzoromZ3GatewayHost. Ukážka beží na systéme podobnom Unixu. Niektorí zákazníci môžu chcieť vzorku hostiteľa, ktorý môže bežať na RTOS, ale žiaľ, zatiaľ neexistuje žiadna vzorka hostiteľa založená na RTOS. Používatelia si musia vytvoriť svoj vlastný hostiteľský program založený na RTOS.

Pred vývojom prispôsobeného hostiteľského programu je dôležité porozumieť protokolu brány UART. Pre NCP založené na UART aj NCP založené na SPI hostiteľ používa na komunikáciu s NCP protokol EZSP.EZSPje skratka preSériový protokol EmberZneta je definovaný vUG100. Pre NCP na báze UART je implementovaný protokol nižšej vrstvy, ktorý spoľahlivo prenáša údaje EZSP cez UART, to jeASHprotokol, skratka preAsynchrónny sériový hostiteľ. Viac podrobností o ASH nájdete naUG101aUG115.

Vzťah medzi EZSP a ASH možno ilustrovať na nasledujúcom diagrame:

1

Formát údajov protokolu EZSP a ASH možno znázorniť na nasledujúcom diagrame:

2

Na tejto stránke predstavíme proces rámcovania dát UART a niektoré kľúčové snímky, ktoré sa často používajú v bráne Zigbee.

2. Rámovanie

Všeobecný proces rámcovania možno ilustrovať na nasledujúcej tabuľke:

3

V tomto grafe údaje znamenajú rámec EZSP. Vo všeobecnosti sú procesy rámcovania: |No|Step|Reference|

|:-|:-|:-|

|1|Vyplňte rám EZSP|UG100|

|2|Randomizácia údajov|Oddiel 4.3 UG101|

|3|Pridať riadiaci bajt|Kapitola 2 a Kap.3 z UG101|

|4|Vypočítajte CRC|Oddiel 2.3 UG101|

|5|Plnenie bajtov|Oddiel 4.2 UG101|

|6|Pridať koncový príznak|Oddiel 2.4 UG101|

2.1. Vyplňte rám EZSP

Formát rámca EZSP je znázornený v kapitole 3 UG100.

4

Upozorňujeme, že tento formát sa môže pri inovácii súpravy SDK zmeniť. Keď sa formát zmení, pridelíme mu nové číslo verzie. Najnovšie číslo verzie EZSP je 8, keď je tento článok napísaný (EmberZnet 6.8).

Keďže formát rámca EZSP sa môže medzi rôznymi verziami líšiť, existuje povinná požiadavka, aby hostiteľ a NCPMUSÍTEpracovať s rovnakou verziou EZSP. Inak nemôžu komunikovať podľa očakávania.

Aby ste to dosiahli, prvým príkazom medzi hostiteľom a NCP musí byť príkaz version. Inými slovami, hostiteľ musí pred akoukoľvek inou komunikáciou získať verziu EZSP NCP. Ak sa verzia EZSP líši od verzie EZSP na hostiteľskej strane, komunikácia sa musí prerušiť.

Implicitnou požiadavkou za tým je, že formát príkazu version môžeNIKDY NEMEŇTE. Formát príkazu verzie EZSP je nasledujúci:

5

Vysvetlenia poľa parametra a formátu odpovede na verziu možno nájsť v kapitole 4 UG100. Pole parametra predstavuje verziu EZSP hostiteľského programu. Keď je tento článok napísaný, je 8.
7
作者:TorchIoTBootCamp
链接:https://zhuanlan.zhihu.com/p/339700391
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明凂

2.2. Randomizácia údajov

Podrobný proces randomizácie je opísaný v časti 4.3 UG101. Celý rám EZSP bude náhodne vybraný. Randomizácia je exkluzívne ALEBO rámec EZSP a pseudonáhodná sekvencia.

Nižšie je uvedený algoritmus generovania pseudonáhodnej sekvencie.

  • rand0 = 0 × 42
  • ak je bit 0 randi 0, randi+1 = randi >> 1
  • ak je bit 0 randi 1, randi+1 = (randi >> 1) ^ 0xB8

2.3. Pridajte riadiaci bajt

Riadiaci bajt sú jednobajtové údaje a mali by sa pridať do hlavy rámca. Formát je znázornený v tabuľke nižšie:

6

Celkovo existuje 6 druhov riadiacich bajtov. Prvé tri sa používajú pre bežné rámce s údajmi EZSP vrátane DATA, ACK a NAK. Posledné tri sa používajú bez bežných údajov EZSP, vrátane RST, RSTACK a ERROR.

Formát RST, RSTACK a ERROR je popísaný v časti 3.1 až 3.3.

2.4. Vypočítajte CRC

16-bitový CRC sa počíta na bajty od riadiaceho bajtu až po koniec dát. Štandardné CRCCCITT (g(x) = x16 + x12 + x5 + 1) sa inicializuje na 0xFFFF. Najvýznamnejší bajt predchádza najmenej významnému bajtu (režim big-endian).

2.5. Byte Plnenie

Ako je popísané v časti 4.2 UG101, existuje niekoľko rezervovaných bajtových hodnôt používaných na špeciálne účely. Tieto hodnoty nájdete v nasledujúcej tabuľke:

7

Keď sa tieto hodnoty objavia v rámci, s údajmi sa bude zaobchádzať špeciálne. – Vložte únikový bajt 0x7D pred rezervovaný bajt – Obráťte bit 5 tohto rezervovaného bajtu

Nižšie sú uvedené niektoré príklady tohto algoritmu:

8

2.6. Pridajte koncový príznak

Posledným krokom je pridanie koncového príznaku 0x7E na koniec rámca. Potom môžu byť údaje odoslané na port UART.

3. Proces odrámovania

Keď sú údaje prijaté z UART, musíme ich dekódovať iba v opačnom poradí.

4. Referencie


Čas odoslania: feb-08-2022
WhatsApp online chat!