Apie zigbee ezsp uart

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

1. Įvadas

„Silicon Labs“ pasiūlė „Zigbee Gateway“ dizaino pagrindinį+NCP sprendimą. Šioje architektūroje pagrindinis kompiuteris gali bendrauti su NCP per UART arba SPI sąsają. Dažniausiai UART naudojamas kaip daug paprastesnis nei SPI.

„Silicon Labs“ taip pat pateikė pagrindinio programos, kuri yra pavyzdysZ3gatewayHost. Mėginys veikia „Unix“ tipo sistemoje. Kai kurie klientai gali norėti pagrindinio kompiuterio pavyzdžio, kuris galėtų paleisti RTO, tačiau, deja, kol kas nėra RTO pagrįsto pagrindinio kompiuterio pavyzdžio. Vartotojai turi kurti savo pagrindinę programą, pagrįstą RTO.

Prieš kuriant pritaikytą pagrindinio kompiuterio programą, svarbu suprasti UART šliuzo protokolą. Tiek UART pagrįstai NCP, tiek SPI pagrįstai NCP, pagrindinis kompiuteris naudoja EZSP protokolą, kad susisiektų su NCP.EZSPyra trumpas„Emberznet“ serijos protokolas, ir jis apibrėžtasUG100. UART pagrįstai NCP įgyvendinamas mažesnio sluoksnio protokolas, kad būtų galima patikimai perduoti EZSP duomenis per UART, tai yraPelenasProtokolas, trumpasAsinchroninis serijinis kompiuteris. Norėdami gauti daugiau informacijos apie Ash, skaitykiteUG101irUG115.

Ryšį tarp EZSP ir pelenų gali būti parodytas ši schema:

1

EZSP duomenų formatą ir ASH protokolą galima iliustruoti šioje diagramoje:

2

Šiame puslapyje pateiksime UART duomenų įrėminimo procesą ir keletą pagrindinių rėmų, kurie dažnai naudojami „Zigbee“ šliuze.

2. Rėmelis

Bendrąjį kadrų procesą galima iliustruoti šioje diagramoje:

3

Šioje diagramoje duomenys reiškia EZSP rėmelį. Apskritai, kadravimo procesai yra šie: | Ne | Žingsnis | Nuoroda |

|:-|:-|:-|

| 1 | Užpildykite EZSP rėmą | UG100 |

| 2 | Duomenų atsitiktinumas | UG101 4.3 skirsnis |

| 3 | Pridėkite valdymo baitą | UG101 CHAP ir 3 3 skyrius |

| 4 | Apskaičiuokite CRC | UG101 2.3 skyrius |

| 5 | baitų įdaras | UG101 4.2 skirsnis |

| 6 | Pridėkite galinę vėliavą | UG101 2.4 skyrius |

2.1. Užpildykite EZSP rėmą

EZSP rėmo formatas iliustruotas UG100 3 skyriuje.

4

Atkreipkite dėmesį, kad šis formatas gali pasikeisti, kai SDK atnaujina. Kai formatas pasikeis, mes jam suteiksime naują versijos numerį. Naujausias EZSP versijos numeris yra 8, kai šis straipsnis parašytas („Emberznet 6.8“).

Kadangi EZSP rėmo formatas gali skirtis tarp skirtingų versijų, yra privalomas reikalavimas, kad pagrindinis kompiuteris ir NCPPrivaloDirbkite su ta pačia EZSP versija. Priešingu atveju jie negali bendrauti taip, kaip tikimasi.

Norėdami tai pasiekti, pirmoji komanda tarp pagrindinio kompiuterio ir NCP turi būti versijos komanda. Kitaip tariant, pagrindinis kompiuteris turi atgauti NCP EZSP versiją prieš bet kokį kitą ryšį. Jei EZSP versija skiriasi su pagrindinės pagrindinės pusės EZSP versija, komunikacija turi būti nutraukta.

Netiesioginis reikalavimas yra tas, kad versijos komandos formatas galiNiekada nesikeiskite. EZSP versijos komandos formatas yra toks, kaip žemiau:

5

Parametrų lauko paaiškinimus ir versijos atsakymo formatą galima rasti UG100 4 skyriuje. Parametrų laukas yra pagrindinės programos EZSP versija. Kai šis straipsnis parašytas, jis yra 8.
7
作者 : „TorchiotBootCamp“
: : Https: //zhuanlan.zhihu.com/p/339700391
来源 : 知乎
著作权归作者所有。商业转载请联系作者获得授权 , 非商业转载请注明出处。

2.2. Duomenų atsitiktinumas

Išsamus atsitiktinių imčių procesas aprašytas UG101 4.3 skyriuje. Visas EZSP rėmelis bus atsitiktine tvarka. Atsitiktinis yra išskirtinis arba EZSP rėmelis ir pseudo-atsitiktinės seka.

Žemiau yra pseudo-atsitiktinės sekos generavimo algoritmas.

  • Rand0 = 0 × 42
  • Jei 0 bitų randi yra 0, randi+1 = randi >> 1
  • Jei 0 bitų randi yra 1, randi+1 = (randi >> 1) ^ 0xb8

2.3. Pridėkite valdymo baitą

Valdymo baitas yra vieno baito duomenys ir turėtų būti pridedami prie rėmo galvos. Formatas iliustruotas žemiau esančioje lentelėje:

6

Iš viso yra 6 rūšių kontrolės baitai. Pirmieji trys yra naudojami įprasti rėmai su EZSP duomenimis, įskaitant duomenis, ACK ir NAK. Paskutiniai trys yra naudojami be įprastų EZSP duomenų, įskaitant RST, RSTACK ir klaidas.

RST, RSTACK ir klaidų formatas aprašytas 3.1–3.3 skyriuje.

2.4. Apskaičiuokite CRC

16 bitų CRC apskaičiuojamas baituose nuo kontrolinio baito iki duomenų pabaigos. Standartinis CRCCCCITT (G (x) = x16 + x12 + x5 + 1) yra inicijuotas iki 0xFFFF. Svarbiausias baitas yra mažiausiai svarbus baitas (didžiojo galūnės režimas).

2.5. Baitų įdaras

Kaip aprašyta UG101 4.2 skyriuje, yra keletas rezervuotų baitų verčių, naudojamų specialiems tikslams. Šias vertes galima rasti šioje lentelėje:

7

Kai šios vertės pasirodys rėmelyje, duomenims bus atliktas specialus gydymas. - Įdėkite „Escape Byte 0x7D“ priešais rezervuotą baitą - pakeiskite to rezervuoto baito bit5

Žemiau yra keletas šio algoritmo pavyzdžių:

8

2.6. Pridėkite pabaigos vėliavą

Paskutinis žingsnis yra pridėti galinę vėliavą 0x7e prie rėmo galo. Po to duomenis galima išsiųsti į UART prievadą.

3. Registravimo procesas

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

4. Nuorodos


Pašto laikas: 2012-08-08
„WhatsApp“ internetinis pokalbis!