O Zigbee EZSP UART

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

1. Úvod

Společnost Silicon Labs nabízí řešení host+NCP pro návrh Zigbee brány. 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.

Společnost Silicon Labs také poskytla ukázkový projekt pro hostitelský program, kterým je ukázkaZ3GatewayHostUkázka běží na unixovém systému. Někteří zákazníci mohou chtít ukázku hostitelského systému, která může běžet na RTOS, ale bohužel prozatím neexistuje žádná ukázka hostitelského systému založená na RTOS. Uživatelé si musí vyvinout vlastní hostitelský program založený na RTOS.

Před vývojem vlastního hostitelského programu je důležité porozumět protokolu UART Gateway. Jak pro NCP založené na UART, tak pro NCP založené na SPI používá hostitel ke komunikaci s NCP protokol EZSP.EZSPje zkratka proSériový protokol EmberZneta je definován vUG100Pro NCP založené na UART je implementován protokol nižší vrstvy pro spolehlivý přenos dat EZSP přes UART, což je...POPELprotokol, zkratka proAsynchronní sériový hostitelVíce informací o ASH naleznete vUG101aUG115.

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

1

Datový formát protokolů EZSP a ASH lze znázornit na následujícím diagramu:

2

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

2. Rámování

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

3

V tomto grafu data označují rámec EZSP. Obecně platí, že procesy rámování jsou: |Žádný|Krok|Referenční|

|:-|:-|:-|

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

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

|3|Přidejte řídicí bajt|kapitolu 2 a kapitolu 3 z UG101|

|4|Výpočet CRC|Oddíl 2.3 dokumentu UG101|

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

|6|Přidání koncového příznaku|Oddíl 2.4 dokumentu UG101|

2.1. Vyplňte rám EZSP

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

4

Upozorňujeme, že tento formát se může při aktualizaci SDK změnit. Po změně formátu mu přidělíme nové číslo verze. Nejnovější číslo verze EZSP je v době psaní tohoto článku 8 (EmberZnet 6.8).

Protože se formát rámce EZSP může v různých verzích lišit, je povinné, aby hostitel a NCPMOŠTfungují 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 verze. Jinými slovy, hostitel musí před jakoukoli další komunikací načíst verzi EZSP NCP. Pokud se verze EZSP liší od verze EZSP na straně hostitele, musí být komunikace přerušena.

Implicitním požadavkem, který za tím stojí, je, že formát příkazu version můžeNIKDY SE NEZMĚŇFormát příkazu verze EZSP je následující:

5

Vysvětlení pole parametru a formátu odpovědi s verzí naleznete v kapitole 4 dokumentu UG100. Pole parametru představuje verzi hostitelského programu EZSP. V době psaní tohoto článku je to 8.
7
作者:TorchIoTBootCamp
链接:https://zhuanlan.zhihu.com/p/339700391
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转转请注明凂

2.2. Randomizace dat

Podrobný proces randomizace je popsán v části 4.3 dokumentu UG101. Celý rámec EZSP bude randomizován. Randomizace se provádí operací exkluzivní NEBO mezi rámcem EZSP a pseudonáhodnou sekvencí.

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

  • rand0 = 0×42
  • Pokud je bit 0 v randi 0, randi+1 = randi >> 1
  • Pokud je bit 0 funkce randi roven 1, randi+1 = (randi >> 1) ^ 0xB8

2.3. Přidání řídicího bajtu

Řídicí bajt jsou jednobajtová data a měl by být přidán na záhlaví 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 kapitolách 3.1 až 3.3.

2.4. Výpočet CRC

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

2.5. Vyplňování bajtů

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

7

Když se tyto hodnoty objeví v rámci, bude s daty provedeno speciální zpracování. – Vložení escape bajtu 0x7D před rezervovaný bajt – Obrácení bitu 5 rezervovaného bajtu

Níže uvádíme několik příkladů tohoto algoritmu:

8

2.6. Přidání koncového příznaku

Posledním krokem je přidání koncového příznaku 0x7E na konec rámce. Poté lze data odeslat na port UART.

3. Proces deframingu

Když jsou data přijata z UARTu, stačí provést obrácené kroky k jejich dekódování.

4. Odkazy


Čas zveřejnění: 8. února 2022
Online chat na WhatsAppu!