Teave Zigbee EZSP UART kohta

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

1. Sissejuhatus

Silicon Labs on pakkunud Zigbee lüüsi kujundamiseks host+NCP lahendust.Selles arhitektuuris saab host suhelda NCP-ga UART- või SPI-liidese kaudu.Kõige sagedamini kasutatakse UART-i, kuna see on palju lihtsam kui SPI.

Silicon Labs on pakkunud ka vastuvõtva programmi näidisprojekti, mis on näidisZ3GatewayHost.Näidis töötab Unixi sarnasel süsteemil.Mõned kliendid võivad soovida hosti näidist, mis töötab RTOS-is, kuid kahjuks pole praegu RTOS-põhist hosti näidist.Kasutajad peavad välja töötama oma hostiprogrammi, mis põhineb RTOS-il.

Enne kohandatud hostprogrammi väljatöötamist on oluline mõista UART-lüüsi protokolli.Nii UART-põhise NCP kui ka SPI-põhise NCP puhul kasutab host NCP-ga suhtlemiseks EZSP-protokolli.EZSPon lühendEmberZneti jadaprotokollja see on määratletud keelesUG100.UART-põhise NCP jaoks rakendatakse madalama kihi protokolli, et edastada EZSP andmeid usaldusväärselt üle UART.TUHKprotokoll, lühendAsünkroonne jadahost.Lisateavet ASH kohta leiate aadressiltUG101jaUG115.

EZSP ja ASH vahelist seost saab illustreerida järgmise diagrammiga:

1

EZSP ja ASH-protokolli andmevormingut saab illustreerida järgmise diagrammiga:

2

Sellel lehel tutvustame UART-andmete raamimise protsessi ja mõningaid võtmekaadreid, mida Zigbee lüüsis sageli kasutatakse.

2. Raamimine

Üldist raamimise protsessi saab illustreerida järgmise diagrammiga:

3

Selles diagrammis tähistavad andmed EZSP-kaadrit.Üldiselt on raamimisprotsessid järgmised: |Ei|Samm|Viide|

|:-|:-|:-|

|1|Täitke EZSP raam|UG100|

|2|Andmete randomiseerimine|UG101| jaotis 4.3|

|3|Lisage UG101| juhtbait|Chap2 ja Chap3|

|4|Arvutage CRC|UG101| jaotis 2.3|

|5|Baitide täitmine|UG101| jaotis 4.2|

|6|Lisa lõpulipp|UG101| jaotis 2.4

2.1.Täitke EZSP raam

EZSP kaadrivormingut on illustreeritud UG100 3. peatükis.

4

Pange tähele, et see vorming võib SDK täiendamisel muutuda.Kui vorming muutub, anname sellele uue versiooninumbri.Selle artikli kirjutamise ajal on uusim EZSP versiooninumber 8 (EmberZnet 6.8).

Kuna EZSP kaadrivorming võib erinevates versioonides olla erinev, on kohustuslik nõue, et host ja NCPPEABtöötada sama EZSP versiooniga.Vastasel juhul ei saa nad ootuspäraselt suhelda.

Selle saavutamiseks peab esimene käsk hosti ja NCP vahel olema versioonikäsk.Teisisõnu peab host enne mis tahes muud suhtlust hankima NCP EZSP versiooni.Kui EZSP versioon erineb hostipoole EZSP versioonist, tuleb side katkestada.

Selle taga on kaudne nõue, et versioonikäsu vorming saaks seda tehaEI MUUTU KUNAGI.EZSP versiooni käsuvorming on järgmine:

5

Parameetrivälja selgitused ja versiooni vastuse vorming leiate UG100 4. peatükist.Parameetri väli on hostprogrammi EZSP versioon.Kui see artikkel on kirjutatud, on see 8.
7
Esileht: TorchIoTBootCamp
链接: https://zhuanlan.zhihu.com/p/339700391
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注愘凂

2.2.Andmete randomiseerimine

Üksikasjalikku randomiseerimisprotsessi on kirjeldatud UG101 jaotises 4.3.Kogu EZSP kaader randomiseeritakse.Juhuslikuks jaotamiseks on EZSP kaader ja pseudojuhuslik järjestus.

Allpool on toodud pseudojuhusliku jada genereerimise algoritm.

  • rand0 = 0 × 42
  • kui randi bitt 0 on 0, siis randi+1 = randi >> 1
  • kui randi bitt 0 on 1, siis randi+1 = (randi >> 1) ^ 0xB8

2.3.Lisage juhtbait

Juhtbait on ühebaidine teave ja see tuleks lisada kaadri päisesse.Vorming on illustreeritud alloleva tabeliga:

6

Kokku on 6 tüüpi kontrollbaite.Esimest kolme kasutatakse tavaliste EZSP-andmetega kaadrite jaoks, sealhulgas DATA, ACK ja NAK.Viimaseid kolme kasutatakse ilma tavaliste EZSP andmeteta, sealhulgas RST, RSTACK ja ERROR.

RST, RSTACK ja ERROR vormingut kirjeldatakse jaotistes 3.1 kuni 3.3.

2.4.Arvutage CRC

16-bitine CRC arvutatakse baitidest alates kontrollbaidist kuni andmete lõpuni.Standardne CRCCCITT (g(x) = x16 + x12 + x5 + 1) lähtestatakse väärtusele 0xFFFF.Kõige olulisem bait eelneb kõige vähem olulisele baitile (suure lõpu režiim).

2.5.Baiti täidis

Nagu on kirjeldatud UG101 jaotises 4.2, on mõned reserveeritud baitide väärtused, mida kasutatakse eriotstarbel.Need väärtused leiate järgmisest tabelist:

7

Kui need väärtused kaadrisse ilmuvad, töödeldakse andmeid spetsiaalselt.– Sisesta paobait 0x7D reserveeritud baidi ette – Pööra selle reserveeritud baidi bit5 tagasi

Allpool on mõned näited selle algoritmi kohta:

8

2.6.Lisa lõpulipp

Viimane samm on lõpulipu 0x7E lisamine kaadri lõppu.Pärast seda saab andmed saata UART-porti.

3. De-framing protsess

Kui UART-ist andmed saadakse, peame nende dekodeerimiseks tegema vastupidiseid samme.

4. Viited


Postitusaeg: 08.02.2022
WhatsAppi veebivestlus!