Par Zigbee EZSP UART

Autors: TorchIoTBootCamp
Saite: https://zhuanlan.zhihu.com/p/339700391
No: Quora

1. Ievads

Silicon Labs ir piedāvājis host+NCP risinājumu Zigbee vārtejas projektēšanai. Šajā arhitektūrā resursdators var sazināties ar NCP, izmantojot UART vai SPI interfeisu. Visbiežāk tiek izmantots UART, jo tas ir daudz vienkāršāks nekā SPI.

Silicon Labs ir arī nodrošinājis paraugprojektu uzņēmējai programmai, kas ir paraugsZ3GatewayHost. Paraugs darbojas Unix līdzīgā sistēmā. Daži klienti var vēlēties resursdatora paraugu, kas var darboties ar RTOS, taču diemžēl pagaidām nav uz RTOS balstīta resursdatora parauga. Lietotājiem ir jāizstrādā sava resursdatora programma, kuras pamatā ir RTOS.

Pirms pielāgotas resursdatora programmas izstrādes ir svarīgi saprast UART vārtejas protokolu. Gan UART balstītam NCP, gan SPI balstītam NCP resursdators izmanto EZSP protokolu, lai sazinātos ar NCP.EZSPir saīsinājumsEmberZnet sērijas protokols, un tas ir definētsUG100. Uz UART balstītam NCP ir ieviests zemāka slāņa protokols, lai droši pārsūtītu EZSP datus, izmantojot UART.PELNIprotokols, saīsinājumsAsinhronais seriālais resursdators. Lai iegūtu sīkāku informāciju par ASH, lūdzu, skatietUG101unUG115.

Sakarību starp EZSP un ASH var ilustrēt ar šādu diagrammu:

1

EZSP un ASH protokola datu formātu var ilustrēt ar šādu diagrammu:

2

Šajā lapā mēs iepazīstināsim ar UART datu kadrēšanas procesu un dažiem galvenajiem kadriem, kas bieži tiek izmantoti Zigbee vārtejā.

2. Ierāmēšana

Vispārējo kadrēšanas procesu var ilustrēt ar šādu diagrammu:

3

Šajā diagrammā dati nozīmē EZSP rāmi. Kopumā kadrēšanas procesi ir šādi: |Nē|Solis|Atsauce|

|:-|:-|:-|

|1|Aizpildiet EZSP rāmi|UG100|

|2|Datu randomizācija|UG101|. 4.3. sadaļa

|3|Pievienojiet UG101| kontroles baitu|Chap2 un Chap3|

|4|Aprēķiniet CRC|UG101| 2.3. sadaļa

|5|Baitu pildījums|UG101 4.2. sadaļa|

|6|Pievienojiet beigu karogu|UG101| 2.4. sadaļa

2.1. Aizpildiet EZSP rāmi

EZSP rāmja formāts ir ilustrēts UG100 3. nodaļā.

4

Ņemiet vērā, ka, veicot SDK jaunināšanu, šis formāts var mainīties. Kad formāts mainīsies, mēs tam piešķirsim jaunu versijas numuru. Jaunākais EZSP versijas numurs ir 8, kad tiek rakstīts šis raksts (EmberZnet 6.8).

Tā kā EZSP kadra formāts dažādās versijās var atšķirties, ir obligāta prasība, ka resursdatoram un NCPOBLIGĀTIstrādāt ar to pašu EZSP versiju. Pretējā gadījumā viņi nevar sazināties, kā paredzēts.

Lai to panāktu, pirmajai komandai starp resursdatoru un NCP ir jābūt versijas komandai. Citiem vārdiem sakot, resursdatoram ir jāizgūst NCP EZSP versija pirms jebkādas citas saziņas. Ja EZSP versija atšķiras no resursdatora puses EZSP versijas, komunikācija ir jāpārtrauc.

Netiešā prasība ir tāda, ka versijas komandas formāts varNEKAD MAINĪTIES. EZSP versijas komandas formāts ir šāds:

5

Parametra lauka skaidrojumus un versijas atbildes formātu var atrast UG100 4. nodaļā. Parametra lauks ir resursdatora programmas EZSP versija. Kad šis raksts ir uzrakstīts, tas ir 8.
7
Piemēram: TorchIoTBootCamp
链接: https://zhuanlan.zhihu.com/p/339700391
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注愘凂

2.2. Datu nejaušināšana

Detalizēts randomizācijas process ir aprakstīts UG101 4.3. sadaļā. Viss EZSP kadrs tiks nejaušināts. Randomizācija ir paredzēta ekskluzīvai VAI EZSP kadram un pseidogadījuma secībai.

Zemāk ir pseidogadījuma secības ģenerēšanas algoritms.

  • rand0 = 0 × 42
  • ja randi bits 0 ir 0, randi+1 = randi >> 1
  • ja randi 0. bits ir 1, randi+1 = (randi >> 1) ^ 0xB8

2.3. Pievienojiet vadības baitu

Vadības baits ir viena baita dati, un tas jāpievieno kadra augšdaļā. Formāts ir ilustrēts ar tabulu zemāk:

6

Kopumā ir 6 veidu kontroles baiti. Pirmie trīs tiek izmantoti parastajiem kadriem ar EZSP datiem, tostarp DATA, ACK un NAK. Pēdējie trīs tiek izmantoti bez parastiem EZSP datiem, tostarp RST, RSTACK un ERROR.

RST, RSTACK un ERROR formāts ir aprakstīts sadaļā 3.1.–3.3.

2.4. Aprēķiniet CRC

16 bitu CRC tiek aprēķināts baitos no kontroles baita līdz datu beigām. Standarta CRCCCITT (g(x) = x16 + x12 + x5 + 1) tiek inicializēts uz 0xFFFF. Nozīmīgākais baits ir pirms vismazāk nozīmīgā baita (lielā gala režīms).

2.5. Baitu pildījums

Kā aprakstīts UG101 4.2. sadaļā, ir dažas rezervētas baitu vērtības, kas tiek izmantotas īpašiem nolūkiem. Šīs vērtības var atrast šajā tabulā:

7

Kad šīs vērtības parādās rāmī, dati tiks īpaši apstrādāti. – Ievietojiet atkāpšanās baitu 0x7D rezervētā baita priekšā – Apgrieziet šī rezervētā baita bitu 5

Tālāk ir sniegti daži šī algoritma piemēri:

8

2.6. Pievienojiet beigu karogu

Pēdējais solis ir pievienot beigu karogu 0x7E kadra beigām. Pēc tam datus var nosūtīt uz UART portu.

3. De-kadrēšanas process

Kad dati tiek saņemti no UART, mums vienkārši jāveic apgrieztās darbības, lai tos atšifrētu.

4. Atsauces


Publicēšanas laiks: 08.02.2022
WhatsApp tiešsaistes tērzēšana!