Apie Zigbee EZSP UART

Autorius: „TorchIoTBootCamp“.
Nuoroda: https://zhuanlan.zhihu.com/p/339700391
Iš: Quora

1. Įvadas

„Silicon Labs“ pasiūlė „host+NCP“ sprendimą „Zigbee“ šliuzo projektavimui.Šioje architektūroje pagrindinis kompiuteris gali susisiekti su NCP per UART arba SPI sąsają.Dažniausiai naudojamas UART, nes jis daug paprastesnis nei SPI.

„Silicon Labs“ taip pat pateikė pavyzdinį priimančiosios programos projektą, kuris yra pavyzdysZ3GatewayHost.Pavyzdys veikia Unix tipo sistemoje.Kai kurie klientai gali norėti pagrindinio kompiuterio pavyzdžio, kuris gali veikti naudojant RTOS, bet, deja, šiuo metu nėra RTOS pagrįsto pagrindinio kompiuterio pavyzdžio.Vartotojai turi sukurti savo pagrindinę programą, pagrįstą RTOS.

Prieš kuriant pritaikytą pagrindinio kompiuterio programą, svarbu suprasti UART šliuzo protokolą.Tiek UART, tiek SPI pagrįstų NCP atveju pagrindinis kompiuteris naudoja EZSP protokolą, kad galėtų susisiekti su NCP.EZSPyra trumpinysEmberZnet serijinis protokolas, ir jis apibrėžtasUG100.UART pagrįstam NCP yra įdiegtas žemesnio sluoksnio protokolas, kad EZSP duomenys būtų patikimai perkeliami per UART.UOSĖSprotokolas, trumpinysAsinchroninis nuoseklusis kompiuteris.Norėdami gauti daugiau informacijos apie ASH, žrUG101irUG115.

Ryšys tarp EZSP ir ASH gali būti parodytas tokia diagrama:

1

EZSP ir ASH protokolo duomenų formatą galima iliustruoti tokia diagrama:

2

Šiame puslapyje pristatysime UART duomenų įrėminimo procesą ir kai kuriuos pagrindinius kadrus, kurie dažnai naudojami „Zigbee“ šliuze.

2. Įrėminimas

Bendrą kadravimo procesą galima iliustruoti tokia diagrama:

3

Šioje diagramoje duomenys reiškia EZSP kadrą.Apskritai kadravimo procesai yra: |Ne|Žingsnis|Nuoroda|

|:-|:-|:-|

|1|Užpildykite EZSP rėmelį|UG100|

|2|Duomenų atsitiktinis nustatymas|UG101| 4.3 skirsnis

|3|Pridėkite UG101| valdymo baitą|Chap2 ir Chap3|

|4|Apskaičiuokite CRC|UG101| 2.3 skirsnį

|5|baitų užpildymas|UG101| 4.2 skirsnis

|6|Pridėti pabaigos vėliavėlę|UG101| 2.4 skirsnį

2.1.Užpildykite EZSP rėmelį

EZSP rėmelio formatas iliustruotas UG100 3 skyriuje.

4

Atkreipkite dėmesį, kad šis formatas gali pasikeisti atnaujinant SDK.Pasikeitus formatui suteiksime jam naują versijos numerį.Naujausias EZSP versijos numeris yra 8, kai rašomas šis straipsnis (EmberZnet 6.8).

Kadangi EZSP kadro formatas įvairiose versijose gali skirtis, yra privalomas reikalavimas, kad pagrindinis kompiuteris ir NCPPRIVALOdirbti su ta pačia EZSP versija.Priešingu atveju jie negalės bendrauti taip, kaip tikėtasi.

Norint tai pasiekti, pirmoji komanda tarp pagrindinio kompiuterio ir NCP turi būti versijos komanda.Kitaip tariant, pagrindinis kompiuteris turi gauti NCP EZSP versiją prieš bet kokį kitą ryšį.Jei EZSP versija skiriasi nuo pagrindinio kompiuterio EZSP versijos, ryšys turi būti nutrauktas.

Netiesioginis reikalavimas yra tas, kad versijos komandos formatas galiNIEKADA NESIKEIČIA.EZSP versijos komandos formatas yra toks:

5

Parametrų lauko paaiškinimus ir versijos atsakymo formatą rasite UG100 4 skyriuje.Parametrų laukas yra pagrindinės programos EZSP versija.Kai šis straipsnis parašytas, tai 8.
7
Pavyzdys: „TorchIoTBootCamp“.
链接: https://zhuanlan.zhihu.com/p/339700391
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注愘凂

2.2.Duomenų randomizavimas

Išsamus atsitiktinių imčių procesas aprašytas UG101 4.3 skyriuje.Visas EZSP kadras bus atsitiktinai parinktas.Atsitiktinis pasirinkimas yra išskirtinis-ARBA EZSP kadras ir pseudoatsitiktinė seka.

Žemiau pateikiamas pseudoatsitiktinės sekos generavimo algoritmas.

  • rand0 = 0×42
  • jei randi bitas 0 yra 0, randi+1 = randi >> 1
  • jei randi 0 bitas yra 1, randi+1 = (randi >> 1) ^ 0xB8

2.3.Pridėkite valdymo baitą

Valdymo baitas yra vieno baito duomenys ir turėtų būti įtrauktas į kadro viršų.Formatas iliustruotas toliau pateikta lentele:

6

Iš viso yra 6 valdymo baitų tipai.Pirmieji trys naudojami bendriems kadrams su EZSP duomenimis, įskaitant DATA, ACK ir NAK.Paskutiniai trys naudojami be bendrų EZSP duomenų, įskaitant RST, RSTACK ir ERROR.

RST, RSTACK ir ERROR formatas aprašytas 3.1–3.3 skyriuose.

2.4.Apskaičiuokite CRC

16 bitų CRC skaičiuojamas baitais nuo valdymo baito iki duomenų pabaigos.Standartinis CRCCCITT (g(x) = x16 + x12 + x5 + 1) inicijuojamas į 0xFFFF.Reikšmingiausias baitas yra prieš mažiausiai reikšmingą baitą (big-endian režimas).

2.5.Baitų įdaras

Kaip aprašyta UG101 4.2 skyriuje, yra tam tikros rezervuotų baitų reikšmės, naudojamos specialiam tikslui.Šias vertes galite rasti šioje lentelėje:

7

Kai šios reikšmės atsiras kadre, duomenys bus specialiai apdoroti.– Įterpkite pabėgimo baitą 0x7D prieš rezervuotą baitą – Apverskite rezervuoto baito 5 bitą

Žemiau pateikiami keli šio algoritmo pavyzdžiai:

8

2.6.Pridėkite pabaigos vėliavą

Paskutinis veiksmas yra kadro pabaigoje pridėti pabaigos vėliavėlę 0x7E.Po to duomenys gali būti siunčiami į UART prievadą.

3. De-kadravimo procesas

Kai gaunami duomenys iš UART, mums tereikia atlikti atvirkštinius veiksmus, kad juos iškoduotume.

4. Literatūra


Paskelbimo laikas: 2022-08-08
„WhatsApp“ internetinis pokalbis!