O Zigbee EzSP UART

Autor: Torchiotbootcamp
Link: https: //zhuanlan.zhihu.com/p/339700391
Od: Quora

1. Uvod

Silicijumske laboratorije ponudilo je host + NCP rješenje za zigbee Gateway dizajn. U ovoj arhitekturi domaćin može komunicirati s NCP putem UART ili SPI sučelja. Najčešće se koristi uart jer je mnogo jednostavniji od SPI-ja.

Silicijumske laboratorije također je pružio uzorak projekta za program domaćina, koji je uzorakZ3gatewayhost. Uzorak radi na sistemu sličnog UNIX-u. Neki kupci možda žele domaćin uzorka koji može pokrenuti na RTO-u, ali nažalost, za sada nema uzorka domaćina RTOS-a. Korisnici trebaju razviti vlastiti program domaćina na osnovu RTO-a.

Važno je razumjeti protokol UART Gateway prije razvoja prilagođenog host programa. Za NCP i NCP zasnovan na UART-u, domaćin koristi EZSP protokol za komunikaciju s NCP-om.EZSPje kratak zaEmberzNet serijski protokol, a definiran je uUG100. Za NCP sa sjedištem u UART-u implementira se donji sloj protokol koji će pouzdano nositi EZSP podatke preko UART-a, to je toPepeoProtokol, kratak zaAsinhroni serijski domaćin. Za više detalja o pepelu, molimo pogledajteUG101iUG115.

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 stranici uvest ćemo proces uokvirivanja UART podataka i nekih ključnih okvira koji se često koriste u Zigbee Gatewayu.

2. Okvir

Opći okvirni proces može se prikazati sljedećim grafikonom:

3

Na ovom grafikonu, podaci označavaju EZSP okvir. Općenito, procesi okvira su: | ne | korak | referenca |

|: - |: - |: |: - |

| 1 | Popunite 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 | Bajtni punjenje | odjeljak 4.2 od UG101 |

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

2.1. Ispunite EZSP okvir

Format EZSP okvira ilustriran je u CAP 3 od ugljenog00.

4

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

Kako formator EZSP-a može biti različit između različitih verzija, postoji obavezan zahtjev koji domaćin i NCPMoraRadite s istim 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 povući EZSP verziju NCP-a prije bilo koje druge komunikacije. Ako je verzija EZSP-a različita sa EZSP verzijom bočne strane domaćina, komunikacija mora biti prekinuta.

Implicitni zahtjev iza toga je da format naredbe verzije možeNikada se ne mijenjajte. EZSP verzija naredbenog formata je kao u nastavku:

5

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

2.2. Randomizacija podataka

Detaljan postupak randomizacije opisan je u odjeljku 4.3 UG101. Cijeli EZSP okvir će biti nasumičan. Randomizacija je ekskluzivno - ili EZSP okvir i pseudo-slučajni niz.

Ispod je algoritam generiranja pseudo-slučajnog sekvence.

  • Rand0 = 0 × 42
  • Ako je bit 0 Randi 0, Randi + 1 = Randi >> 1
  • Ako je Bit 0 Randi 1, Randi + 1 = (Randi >> 1) ^ 0xb8

2.3. Dodajte kontrolni bajt

Kontrolni bajt je jedan bajt podaci i treba ga dodati na glavu okvira. Format je ilustriran u tabeli ispod:

6

Potpuno postoje 6 vrsta kontrolnih bajtova. Prva tri koriste se za zajedničke okvire sa EZSP podacima, uključujući podatke, ACK i NAK. Posljednja tri se koriste bez uobičajenih EZSP podataka, uključujući RST, RSTACK i GREŠKA.

Format RST, RSTACK i GREŠKA opisano je u odjeljku 3.1 na 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čajnom bajtu (Big-Endan mod).

2.5. Bajt punjenje

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

7

Kada se te vrijednosti pojave u okviru, na podatke će se izvršiti poseban tretman. - Umetnite Escape Byte 0x7D ispred rezervisanog bajta - preokrenite bit5 tog rezerviranog bajta

Ispod su neki primjeri ovog algoritma:

8

2.6. Dodajte krajnju zastavu

Završni korak je dodavanje krajnje zastave 0x7e na kraj okvira. Nakon toga, podaci se mogu poslati na UART port.

3. Proces za uokvirivanje

Kada se podaci primite iz UART-a, samo trebamo obaviti preokrenuti korake za njegovo dekodiranje.

4. REFERENCE


Vrijeme pošte: Feb-08-2022
Whatsapp Online chat!