O Zigbee EZSP UART

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

1. Uvod

Silicon Labs je ponudio host+NCP rješenje za dizajn Zigbee pristupnika. U ovoj arhitekturi, glavno računalo može komunicirati s NCP-om putem UART ili SPI sučelja. Najčešće se koristi UART jer je mnogo jednostavniji od SPI.

Silicon Labs također je osigurao ogledni projekt za glavni program, koji je uzorakZ3GatewayHost. Uzorak radi na sustavu sličnom Unixu. Neki korisnici možda žele uzorak glavnog računala koji može raditi na RTOS-u, ali nažalost, trenutno ne postoji uzorak glavnog računala temeljen na RTOS-u. Korisnici trebaju razviti vlastiti host program temeljen na RTOS-u.

Važno je razumjeti UART gateway protokol prije razvijanja prilagođenog glavnog programa. I za NCP temeljen na UART-u i NCP temeljen na SPI-u, glavno računalo koristi EZSP protokol za komunikaciju s NCP-om.EZSPje skraćenica zaEmberZnet serijski protokol, a definirana je uUG100. Za NCP temeljen na UART-u implementiran je protokol nižeg sloja za pouzdan prijenos EZSP podataka preko UART-a, to jePEPEOprotokol, skraćenica zaAsinkroni serijski host. Za više detalja o ASH-u, pogledajteUG101iUG115.

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

1

Format podataka EZSP i ASH protokola može se ilustrirati sljedećim dijagramom:

2

Na ovoj stranici predstavit ćemo proces uokvirivanja UART podataka i neke ključne okvire koji se često koriste u Zigbee pristupniku.

2. Uokvirivanje

Opći postupak uokvirivanja može se ilustrirati sljedećom tablicom:

3

U ovom grafikonu podaci označavaju EZSP okvir. Općenito, procesi okvira su: |No|Step|Reference|

|:-|:-|:-|

|1|Napunite EZSP okvir|UG100|

|2|Randomizacija podataka|Odjeljak 4.3 UG101|

|3|Dodajte kontrolni bajt|Chap2 i Chap3 od UG101|

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

|5|Byte Stuffing|Odjeljak 4.2 UG101|

|6|Dodajte zastavu kraja|Odjeljak 2.4 UG101|

2.1. Napunite EZSP okvir

EZSP format okvira ilustriran je u poglavlju 3 UG100.

4

Imajte na umu da se ovaj format može promijeniti kada se SDK nadogradi. Kada se format promijeni, dat ćemo mu novi broj verzije. Zadnji broj verzije EZSP-a je 8 kada je ovaj članak napisan (EmberZnet 6.8).

Budući da se format EZSP okvira može razlikovati između različitih verzija, postoji obavezni zahtjev da host i NCPMORAraditi s istom verzijom EZSP. U suprotnom, ne mogu komunicirati na očekivani način.

Da bi se to postiglo, prva naredba između glavnog računala i NCP-a mora biti naredba verzije. Drugim riječima, glavno računalo mora dohvatiti EZSP verziju NCP-a prije bilo koje druge komunikacije. Ako se EZSP verzija razlikuje od EZSP verzije strane domaćina, komunikacija se mora prekinuti.

Implicitni zahtjev iza ovoga je da format naredbe verzija možeNIKADA SE NE MIJENJAJ. Format naredbe verzije EZSP je sljedeći:

5

Objašnjenja polja parametara i formata odgovora na verziju mogu se pronaći u Poglavlju 4 UG100. Polje parametra je EZSP verzija glavnog programa. Kada je ovaj članak napisan, 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 bit će randomiziran. Randomizacija je isključivo ILI EZSP okvira i pseudoslučajnog niza.

Ispod je algoritam generiranja pseudoslučajnog niza.

  • rand0 = 0×42
  • ako je bit 0 od randi 0, randi+1 = randi >> 1
  • ako je bit 0 od randi 1, randi+1 = (randi >> 1) ^ 0xB8

2.3. Dodajte kontrolni bajt

Kontrolni bajt je jednobajtni podatak i treba ga dodati u glavu okvira. Format je ilustriran donjom tablicom:

6

Ukupno postoji 6 vrsta kontrolnih bajtova. Prva tri se koriste za zajedničke okvire s EZSP podacima, uključujući DATA, ACK i NAK. Posljednja tri se koriste bez uobičajenih EZSP podataka, uključujući RST, RSTACK i ERROR.

Format RST, RSTACK i ERROR opisan je u odjeljcima 3.1 do 3.3.

2.4. Izračunajte CRC

16-bitni CRC izračunava se na bajtovima od kontrolnog bajta do kraja podataka. Standardni CRCCCITT (g(x) = x16 + x12 + x5 + 1) inicijaliziran je na 0xFFFF. Najznačajniji bajt prethodi najmanje značajnom bajtu (big-endian način).

2.5. Bajt punjenje

Kao što je opisano u odjeljku 4.2 UG101, postoje neke rezervirane vrijednosti bajtova koje se koriste za posebne svrhe. Ove vrijednosti mogu se pronaći u sljedećoj tablici:

7

Kada se te vrijednosti pojave u okviru, podaci će se posebno tretirati. – Umetnite izlazni bajt 0x7D ispred rezerviranog bajta – Obrnite bit5 tog rezerviranog bajta

Ispod je nekoliko primjera ovog algoritma:

8

2.6. Dodajte zastavu za kraj

Posljednji korak je dodavanje oznake kraja 0x7E na kraj okvira. Nakon toga, podaci se mogu poslati na UART priključak.

3. Proces deframinga

Kada se podaci prime od UART-a, samo trebamo napraviti obrnute korake da ih dekodiramo.

4. Literatura


Vrijeme objave: 8. veljače 2022
WhatsApp Online Chat!