Zigbee EZSP UART-i kohta

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

1. Sissejuhatus

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

Silicon Labs on pakkunud ka hostprogrammi näidisprojekti, mis on näidisZ3GatewayHostNäidis töötab Unixi-laadsel süsteemil. Mõned kliendid võivad soovida host-näidist, mis suudab töötada RTOS-il, kuid kahjuks pole praegu RTOS-põhist host-näidist. Kasutajad peavad arendama oma RTOS-il põhineva host-programmi.

Enne kohandatud hostprogrammi väljatöötamist on oluline mõista UART-lüüsi protokolli. Nii UART-põhise kui ka SPI-põhise NCP puhul kasutab host NCP-ga suhtlemiseks EZSP-protokolli.EZSPon lühend sõnastEmberZneti jadaprotokollja see on defineeritud punktisUG100UART-põhise NCP puhul on EZSP-andmete usaldusväärseks edastamiseks UART-i kaudu rakendatud madalama kihi protokolli.TUHKprotokoll, lühend sõnastAsünkroonne jadaportLisateavet ASH-i 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 raamimisprotsessi saab illustreerida järgmise diagrammiga:

3

Selles diagrammis tähendab andmestik EZSP kaadrit. Üldiselt on kaadrite loomise protsessid järgmised: |Ei|Samm|Viide|

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

|1|Täida EZSP raam|UG100|

|2|Andmete randomiseerimine|UG101 jagu 4.3|

|3|Lisa UG101 juhtbait|2. ja 3. peatükk|

|4|Arvuta CRC|UG101 punkt 2.3|

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

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

2.1. Täitke EZSP raam

EZSP kaadrivormingut on illustreeritud UG100 3. peatükis.

4

Pöörake tähelepanu, et see vorming võib SDK uuendamisel muutuda. Kui vorming muutub, anname sellele uue versiooninumbri. Selle artikli kirjutamise ajal on EZSP uusim versiooninumber 8 (EmberZnet 6.8).

Kuna EZSP kaadrivorming võib eri versioonides erineda, on kohustuslik nõue, et host ja NCPPEABtöötavad 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, host peab enne mis tahes muud suhtlust hankima NCP EZSP versiooni. Kui EZSP versioon erineb hosti poole EZSP versioonist, tuleb suhtlus katkestada.

Selle taga peituv kaudne nõue on, et versioonikäsu vorming oleksÄRA KUNAGI MUUDAEZSP versiooni käsu vorming on järgmine:

5

Parameetrivälja selgitused ja versioonivastuse vormingu leiate UG100 4. peatükist. Parameetriväli tähistab hostprogrammi EZSP versiooni. Selle artikli kirjutamise ajal on see 8.
7
Esileht: TorchIoTBootCamp
链接: https://zhuanlan.zhihu.com/p/339700391
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注愘凂

2.2. Andmete randomiseerimine

Üksikasjalik randomiseerimisprotsessi on kirjeldatud UG101 jaotises 4.3. Kogu EZSP kaader randomiseeritakse. Randomiseerimine toimub EZSP kaadri ja pseudojuhusliku jada välistava VÕI-tehte abil.

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 andmebait ja see tuleks lisada kaadri päisesse. Formaati illustreerib allolev tabel:

6

Kokku on 6 tüüpi juhtbaite. Esimesi kolme kasutatakse ühiste kaadrite jaoks EZSP-andmetega, sealhulgas DATA, ACK ja NAK. Viimast kolme kasutatakse ilma ühiste EZSP-andmeteta, sealhulgas RST, RSTACK ja ERROR.

RST, RSTACK ja ERROR vormingut on kirjeldatud punktides 3.1 kuni 3.3.

2.4. Arvutage CRC

16-bitine CRC arvutatakse baitide põhjal alates juhtbaidist kuni andmete lõpuni. Standardne CRCCCITT (g(x) = x16 + x12 + x5 + 1) initsialiseeritakse väärtusele 0xFFFF. Kõige olulisem bait eelneb kõige vähem olulisele baidile (big-endian režiim).

2.5. Baitide täitmine

Nagu UG101 jaotises 4.2 kirjeldatud, on mõned spetsiaalsetel eesmärkidel kasutatavad reserveeritud baitiväärtused. Need väärtused leiate järgmisest tabelist:

7

Kui need väärtused kaadris ilmuvad, tehakse andmetega eritöötlus. – Lisage reserveeritud baidi ette paobait 0x7D – Pöörake selle reserveeritud baidi 5. bitt ümber

Allpool on toodud mõned näited sellest algoritmist:

8

2.6. Lisa lõpplipp

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

3. Raamist väljaarvamise protsess

Kui UART-ist andmed vastu võetakse, peame nende dekodeerimiseks tegema vaid vastupidised sammud.

4. Viited


Postituse aeg: 08.02.2022
WhatsAppi veebivestlus!