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:
Format podataka EZSP -a i protokola pepela može se prikazati sljedećim dijagramom:
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:
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.
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:
链接 : 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:
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:
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:
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