O Zigbee ezsp uart

Avtor: Tolikootcamp
Povezava : https: //zhuanlan.zhihu.com/p/339700391
Od: Quora

1. uvod

Silicon Labs je ponudil rešitev Host+NCP za Zigbee Gateway Design. V tej arhitekturi lahko gostitelj komunicira z NCP prek vmesnika UART ali SPI. Najpogosteje se uporablja UART, saj je veliko preprostejši od SPI.

Silicon Labs je zagotovil tudi vzorčni projekt za gostiteljski program, ki je vzorecZ3GatewayHost. Vzorec deluje na sistemu, podoben Unixu. Nekatere stranke si morda želijo vzorca gostitelja, ki se lahko izvaja na RTO, a na žalost zaenkrat ni vzorca gostitelja, ki temelji na RTOS. Uporabniki morajo razviti svoj gostiteljski program na podlagi RTO.

Pomembno je razumeti protokol UART Gateway, preden razvijete prilagojen program gostitelja. Za NCP, ki temelji na UART, in NCP na osnovi SPI, gostitelj uporablja protokol EZSP za komunikacijo z NCP.Ezspje kratek zaEmberznet serijski protokolin je opredeljen vUG100. Za NCP, ki temelji na UART, se izvaja protokol nižje plasti za zanesljivo prenos podatkov EZSP nad UART, to jePepelprotokol, kratek zaAsinhroni serijski gostitelj. Za več podrobnosti o ASH, glejteUG101inUG115.

Razmerje med EZSP in Ashom lahko ponazorimo z naslednjim diagramom:

1

Oblika podatkov EZSP in protokola ASH lahko ponazorimo z naslednjim diagramom:

2

Na tej strani bomo predstavili postopek kadriranja podatkov UART in nekaterih ključnih okvirjev, ki se pogosto uporabljajo v Zigbee Gatewayu.

2. Uokvirjanje

Splošni postopek oblikovanja lahko ponazorimo z naslednjim grafikonom:

3

V tem grafikonu podatki pomenijo okvir EZSP. Na splošno so procesi kadriranja: | ne | korak | referenca |

|:-|:-|:-|

| 1 | Napolnite okvir EZSP | UG100 |

| 2 | Randomizacija podatkov | Oddelek 4.3 UG101 |

| 3 | Dodajte kontrolni bajt | CHAP2 in CHAP3 UG101 |

| 4 | Izračunajte CRC | Oddelek 2.3 UG101 |

| 5 | Nadev bajtov | Oddelek 4.2 UG101 |

| 6 | Dodajte končno zastavo | Oddelek 2.4 UG101 |

2.1. Izpolnite okvir EZSP

Format okvirja EZSP je prikazan v poglavju 3 UG100.

4

Bodite pozorni, da se lahko ta oblika spremeni, ko SDK nadgradi. Ko se oblika spremeni, mu bomo dali novo številko različice. Najnovejša številka različice EZSP je 8, ko je ta članek napisan (Emberznet 6.8).

Ker se lahko oblika okvirja EZSP razlikuje med različnimi različicami, obstaja obvezna zahteva, da gostitelj in NCPMoraDelajte z isto različico EZSP. V nasprotnem primeru ne morejo komunicirati, kot je bilo pričakovano.

Da bi to dosegli, mora biti prvi ukaz med gostiteljem in NCP ukaz različice. Z drugimi besedami, gostitelj mora pred katero koli drugo komunikacijo pridobiti različico EZSP NCP. Če se različica EZSP razlikuje z različico EZSP na strani gostitelja, je treba komunikacijo prekiniti.

Implicitna zahteva za to je, da lahko oblika ukaza različiceNikoli ne spreminjajte. Oblika ukaza različice EZSP je podobna spodaj:

5

Pojasnila polja parametrov in obliko odziva različice najdete v poglavju 4 UG100. Polje parametra je različica EZSP programa gostitelja. Ko je ta članek napisan, je 8.
7
作者 : TOCKOITBOOTCAMP
链接 : https: //zhuanlan.zhihu.com/p/339700391
来源 : 知乎
著作权归作者所有。商业转载请联系作者获得授权 , 非商业转载请注明出处。

2.2. Randomizacija podatkov

Podroben postopek randomizacije je opisan v oddelku 4.3 UG101. Celoten okvir EZSP bo randomiziran. Randomizacija je izključno-ali v okviru EZSP in psevdo naključnega zaporedja.

Spodaj je algoritem ustvarjanja psevdo-random zaporedja.

  • Rand0 = 0 × 42
  • Če je bit 0 Randi 0, Randi+1 = Randi >> 1
  • Če je bit 0 od Randija 1, Randi+1 = (Randi >> 1) ^ 0xB8

2.3. Dodajte kontrolni bajt

Krmilni bajt je en bajtni podatki in ga je treba dodati v glavo okvirja. Oblika je prikazana s spodnjo tabelo:

6

Popolnoma obstaja 6 vrst kontrolnih bajtov. Prvi trije se uporabljajo za skupne okvirje s podatki EZSP, vključno s podatki, ACK in NAK. Zadnji trije se uporabljajo brez skupnih podatkov EZSP, vključno z RST, RStack in napakami.

Oblika RST, RStack in napake so opisana v oddelku 3.1 do 3.3.

2.4. Izračunajte CRC

16-bitni CRC se izračuna na bajtih iz kontrolnega bajta do konca podatkov. Standardni crcccitt (g (x) = x16 + x12 + x5 + 1) se inicializira na 0xffff. Najpomembnejši bajt je pred najmanj pomembnim bajtom (veliko-endijski način).

2.5. Nadev bajtov

Kot je opisano v oddelku 4.2 UG101, obstaja nekaj rezerviranih vrednosti bajtov, ki se uporabljajo za posebne namene. Te vrednosti najdete v naslednji tabeli:

7

Ko se te vrednosti pojavijo v okvirju, bo podatkom opravljeno posebno zdravljenje. - Pred rezerviranim bajtom vstavite bajt Escape 0x7D - obrnite bit5 tega rezerviranega bajta

Spodaj je nekaj primerov tega algoritma:

8

2.6. Dodaj končno zastavo

Končni korak je dodajanje končne zastave 0x7e na konec okvirja. Po tem lahko podatke pošljete v vrata UART.

3. Proces deframiranja

Ko se podatki prejmejo od UART, moramo samo narediti obratne korake, da jih dekodiramo.

4. Reference


Čas objave: februar-08-2022
Whatsapp spletni klepet!