O Zigbee EZSP UART

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

1. Úvod

Společnost Silicon Labs nabídla řešení host+NCP pro návrh brány Zigbee.V této architektuře může hostitel komunikovat s NCP prostřednictvím rozhraní UART nebo SPI.Nejčastěji se používá UART, protože je mnohem jednodušší než SPI.

Silicon Labs také poskytla ukázkový projekt pro hostitelský program, který je ukázkouZ3GatewayHost.Ukázka běží na systému podobnému Unixu.Někteří zákazníci mohou chtít vzorek hostitele, který může běžet na RTOS, ale bohužel v současné době neexistuje žádný vzorek hostitele založený na RTOS.Uživatelé si musí vyvinout vlastní hostitelský program založený na RTOS.

Před vývojem přizpůsobeného hostitelského programu je důležité porozumět protokolu brány UART.Pro NCP založené na UART i NCP založené na SPI hostitel používá ke komunikaci s NCP protokol EZSP.EZSPje zkratka proSériový protokol EmberZnet, a je definován vUG100.Pro NCP na bázi UART je implementován protokol nižší vrstvy, který spolehlivě přenáší data EZSP přes UART, to jePOPELprotokol, zkratkaAsynchronní sériový hostitel.Další podrobnosti o ASH naleznete naUG101aUG115.

Vztah mezi EZSP a ASH lze ilustrovat následujícím diagramem:

1

Formát dat protokolu EZSP a ASH lze znázornit následujícím diagramem:

2

Na této stránce představíme proces rámování dat UART a některé klíčové snímky, které se často používají v bráně Zigbee.

2. Rámování

Obecný proces rámování lze ilustrovat na následujícím grafu:

3

V tomto grafu data znamenají rámec EZSP.Obecně jsou rámcové procesy: |No|Step|Reference|

|:-|:-|:-|

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

|2|Randomizace dat|Oddíl 4.3 UG101|

|3|Přidat řídicí bajt|Kapitola 2 a Kapitola 3 z UG101|

|4|Vypočítejte CRC|Oddíl 2.3 UG101|

|5|Vyplňování bajtů|Oddíl 4.2 UG101|

|6|Přidat koncový příznak|Oddíl 2.4 UG101|

2.1.Vyplňte rám EZSP

Formát rámce EZSP je znázorněn v kapitole 3 UG100.

4

Pozor, tento formát se může při upgradu SDK změnit.Když se formát změní, přidělíme mu nové číslo verze.Poslední číslo verze EZSP je 8, když je tento článek napsán (EmberZnet 6.8).

Vzhledem k tomu, že formát rámce EZSP se může v různých verzích lišit, existuje povinný požadavek, aby hostitel a NCPMUSÍpracovat se stejnou verzí EZSP.Jinak nemohou komunikovat podle očekávání.

Aby toho bylo dosaženo, musí být prvním příkazem mezi hostitelem a NCP příkaz version.Jinými slovy, hostitel musí před jakoukoli další komunikací načíst verzi EZSP NCP.Pokud se verze EZSP liší od verze EZSP na hostitelské straně, musí být komunikace přerušena.

Implicitním požadavkem za tím je, že formát příkazu version můžeSE NIKDY NEZMĚNÍ.Formát příkazu verze EZSP je následující:

5

Vysvětlení pole parametru a formát odpovědi na verzi lze nalézt v kapitole 4 UG100.Pole parametru je verze EZSP hostitelského programu.Když je napsán tento článek, je 8.
7
作者:TorchIoTBootCamp
链接:https://zhuanlan.zhihu.com/p/339700391
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转转请注明凂

2.2.Randomizace dat

Podrobný proces randomizace je popsán v sekci 4.3 UG101.Celý snímek EZSP bude randomizován.Randomizace je exkluzivní NEBO rámec EZSP a pseudonáhodná sekvence.

Níže je uveden algoritmus generování pseudonáhodné sekvence.

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

2.3.Přidejte řídicí bajt

Řídicí bajt je jednobajtová data a měla by být přidána do hlavy rámce.Formát je znázorněn v tabulce níže:

6

Celkem existuje 6 druhů řídicích bajtů.První tři se používají pro běžné rámce s daty EZSP, včetně DATA, ACK a NAK.Poslední tři se používají bez běžných dat EZSP, včetně RST, RSTACK a ERROR.

Formát RST, RSTACK a ERROR je popsán v části 3.1 až 3.3.

2.4.Vypočítejte CRC

16bitové CRC se vypočítává na bytech od řídicího bajtu až do konce dat.Standardní CRCCCITT (g(x) = x16 + x12 + x5 + 1) je inicializováno na 0xFFFF.Nejvýznamnější bajt předchází nejméně významný bajt (režim big-endian).

2.5.Byte Náplň

Jak je popsáno v části 4.2 UG101, existují některé rezervované hodnoty bajtů používané pro speciální účely.Tyto hodnoty najdete v následující tabulce:

7

Když se tyto hodnoty objeví v rámci, bude s daty provedeno speciální ošetření.– Vložte únikový bajt 0x7D před rezervovaný bajt – Otočte bit 5 tohoto rezervovaného bajtu

Níže jsou uvedeny některé příklady tohoto algoritmu:

8

2.6.Přidejte koncový příznak

Posledním krokem je přidání koncového příznaku 0x7E na konec rámce.Poté mohou být data odeslána na port UART.

3. Proces de-framing

Když jsou data přijímána z UART, musíme je dekódovat pouze obrácenými kroky.

4. Reference


Čas odeslání: Únor-08-2022
WhatsApp online chat!