O Zigbee ezsp uart

Autor: TorchiotbootCamp
Link: https: //zhuanlan.zhihu.com/p/339700391
Od : kvora

1. Uvod

Silicon Labs ponudio je domaćin+NCP rješenje za dizajn ZigBee Gateway. U ovoj arhitekturi domaćin može komunicirati s NCP -om putem UART ili SPI sučelja. Najčešće se UART koristi jer je mnogo jednostavniji od SPI.

Silicijski laboratoriji također su pružili uzorak projekta za program domaćina, koji je uzorakZ3gatewayhost. Uzorak radi na UNIX sustavu. Neki kupci možda žele uzorak domaćina koji se može pokrenuti na RTOS -u, ali nažalost, zasad ne postoji uzorak domaćina koji se temelji na RTOS -u. Korisnici moraju razviti vlastiti program domaćina na temelju RTOS -a.

Važno je razumjeti protokol UART Gateway prije razvoja prilagođenog programa domaćina. I za NCP temeljen na NCP -u i SPI, domaćin koristi EZSP protokol za komunikaciju s NCP -om.Ezspje kratko zaSerijski protokol Emberznet, i definirano je uUG100. Za NCP temeljen na UART -u implementira se protokol nižeg sloja za preuzimanje podataka EZSP -a preko UART -a, to jePEPEOprotokol, kratak zaAsinhroni serijski domaćin. Za više detalja o Ash -u, obratite seUG101iUG115.

Odnos između EZSP -a i pepela može se ilustrirati sljedećim dijagramom:

1

Format podataka EZSP -a i protokola pepela može se prikazati sljedećim dijagramom:

2

Na ovoj ćemo stranici uvesti postupak uokvirivanja podataka UART i neke ključne okvire koji se često koriste u Zigbee Gatewayu.

2. Okvir

Opći postupak okvira može se ilustrirati sljedećim grafikonom:

3

U ovom grafikonu, podaci znači EZSP okvir. Općenito, procesi uokvirivanja su: | ne | Korak | referenca |

|:-|:-|:-|

| 1 | Napunite EZSP okvir | UG100 |

| 2 | Randomizacija podataka | Odjeljak 4.3 od UG101 |

| 3 | Dodajte kontrolni bajt | chap2 i chap3 od UG101 |

| 4 | Izračunajte CRC | Odjeljak 2.3 od UG101 |

| 5 | BYTE nadjev | Odjeljak 4.2 od UG101 |

| 6 | Dodajte krajnju zastavu | Odjeljak 2.4 od UG101 |

2.1. Ispunite EZSP okvir

Format okvira EZSP prikazan je u poglavlju 3 UG100.

4

Obratite pažnju na to da se ovaj format može promijeniti kada SDK nadogradi. Kad se format promijeni, dat ćemo mu novi broj verzije. Najnoviji broj verzije EZSP -a je 8 kada je napisan ovaj članak (Emberznet 6.8).

Kako se format okvira EZSP -a može razlikovati između različitih verzija, postoji obavezan zahtjev da domaćin i NCPMoraRadite s istom EZSP verzijom. Inače, ne mogu komunicirati kao očekivano.

Da bi se to postiglo, prva naredba između domaćina i NCP -a mora biti naredba verzije. Drugim riječima, domaćin mora prelaziti EZSP verziju NCP -a prije bilo koje druge komunikacije. Ako je verzija EZSP -a različita s EZSP verzijom host strane, komunikacija mora biti prekinuta.

Implicitni zahtjev za tim je da format naredbe verzije možeNikad se ne mijenjati. Format naredbe EZSP verzije je kao u nastavku:

5

Objašnjenja polja parametara i format odgovora verzije mogu se naći u poglavlju 4 UG100. Polje parametra je EZSP verzija programa hosta. Kad je ovaj članak napisan, to je 8.
7
作者 : Torchiotbootcamp
链接 : https: //zhuanlan.zhihu.com/p/339700391
来源 : 知乎
著作权归作者所有。商业转载请联系作者获得授权 , 非商业转载请注明出处。

2.2. Randomizacija podataka

Detaljni postupak randomizacije opisan je u odjeljku 4.3 od UG101. Čitav EZSP okvir bit će randomiziran. Randomizacija je ekskluzivno-ili EZSP okvir i pseudo-slučajni niz.

Ispod je algoritam generiranja pseudo slučajnog slijeda.

  • rand0 = 0 × 42
  • Ako je bit 0 od Randija 0, Randi+1 = Randi >> 1
  • Ako je bit 0 od Randija 1, Randi+1 = (Randi >> 1) ^ 0xb8

2.3. Dodajte kontrolni bajt

Kontrolni bajt je podaci o bajtu i treba ga dodati u glavu okvira. Format je prikazan s tablicom u nastavku:

6

Potpuno, postoji 6 vrsta kontrolnih bajtova. Prva tri koriste se za uobičajene okvire s podacima EZSP -a, uključujući podatke, ACK i NAK. Posljednja tri koriste se bez uobičajenih podataka EZSP -a, uključujući RST, RSTACK i GREŠKU.

Format prvog, prvog i pogreške opisan je u odjeljku 3.1 do 3.3.

2.4. Izračunajte CRC

16-bitni CRC izračunava se na bajtovima iz kontrolnog bajta do kraja podataka. Standardni crcccitt (g (x) = x16 + x12 + x5 + 1) inicijalizira se na 0xffff. Najznačajniji bajt prethodi najmanje značajan bajt (Big-Endian Mode).

2.5. Bajt nadjev

Kao što je opisano u odjeljku 4.2 UG101, postoje neke rezervirane vrijednosti bajta koje se koriste u posebnu svrhu. Te se vrijednosti mogu naći u sljedećoj tablici:

7

Kad se ove vrijednosti pojave u okviru, na podacima će se obaviti poseban tretman. - Umetnite bajt za bijeg 0x7d ispred rezerviranog bajta - preokrenite Bit5 tog rezerviranog bajta

Ispod je nekoliko primjera ovog algoritma:

8

2.6. Dodajte krajnju zastavu

Posljednji korak je dodati krajnju zastavu 0x7e na kraj okvira. Nakon toga, podaci se mogu poslati u UART priključak.

3. Proces de-framiranja

Kad se podaci primi od UART -a, samo trebamo napraviti obrnute korake da bismo ga dekodirali.

4. Reference


Post Vrijeme: veljača-08-2022
WhatsApp internetski chat!