Tietoja Zigbee EZSP UART -väylästä

Tekijä:TorchIoTBootCamp
Linkki: https://zhuanlan.zhihu.com/p/339700391
Lähettäjä:Quora

1. Johdanto

Silicon Labs on tarjonnut Zigbee-yhdyskäytäväsuunnitteluun isäntä+NCP-ratkaisun. Tässä arkkitehtuurissa isäntä voi kommunikoida NCP:n kanssa UART- tai SPI-liitännän kautta. Yleisimmin käytetään UARTia, koska se on paljon yksinkertaisempi kuin SPI.

Silicon Labs on myös toimittanut isäntäohjelmalle esimerkkiprojektin, joka on esimerkkiZ3GatewayHostNäyteohjelma toimii Unixin kaltaisessa järjestelmässä. Jotkut asiakkaat saattavat haluta isäntäohjelman, joka toimii RTOS:ssa, mutta valitettavasti tällä hetkellä ei ole olemassa RTOS-pohjaista isäntäohjelmaa. Käyttäjien on kehitettävä oma RTOS:iin perustuva isäntäohjelmansa.

On tärkeää ymmärtää UART-yhdyskäytäväprotokolla ennen mukautetun isäntäohjelman kehittämistä. Sekä UART- että SPI-pohjaisissa NCP-järjestelmissä isäntä käyttää EZSP-protokollaa kommunikoidakseen NCP:n kanssa.EZSPon lyhenne sanoistaEmberZnet-sarjaprotokolla, ja se on määritelty kohdassaUG100UART-pohjaisessa NCP:ssä on toteutettu alemman kerroksen protokolla EZSP-datan luotettavaan siirtämiseen UARTin kautta.TUHKAprotokolla, lyhenne sanoistaAsynkroninen sarjaporttiLisätietoja ASH:sta on osoitteessaUG101jaUG115.

EZSP:n ja ASH:n välinen suhde voidaan havainnollistaa seuraavalla kaaviolla:

1

EZSP:n ja ASH-protokollan tietomuoto voidaan havainnollistaa seuraavalla kaaviolla:

2

Tällä sivulla esittelemme UART-datan kehystysprosessin ja joitakin Zigbee-yhdyskäytävässä usein käytettyjä avainkehyksiä.

2. Kehystys

Yleinen kehystysprosessi voidaan havainnollistaa seuraavalla kaaviolla:

3

Tässä kaaviossa data tarkoittaa EZSP-kehystä. Yleisesti ottaen kehystysprosessit ovat: |Ei|Vaihe|Viite|

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

|1|Täytä EZSP-kehys|UG100|

|2|Datan satunnaistaminen|UG101:n osio 4.3|

|3|Lisää ohjaustavu|UG101:n luvut 2 ja 3|

|4|Laske CRC|UG101:n osio 2.3|

|5|Tavujen täyttäminen|UG101:n osio 4.2|

|6|Lisää lopetuslippu|UG101:n osio 2.4|

2.1. Täytä EZSP-kehys

EZSP-kehysmuoto on esitetty UG100:n luvussa 3.

4

Huomaa, että tämä muoto voi muuttua SDK:n päivityksen yhteydessä. Kun muoto muuttuu, annamme sille uuden versionumeron. Uusin EZSP-versionumero on 8 tämän artikkelin kirjoitushetkellä (EmberZnet 6.8).

Koska EZSP-kehysmuoto voi olla erilainen eri versioiden välillä, on pakollinen vaatimus, että isäntä ja NCPPAKKOtoimivat saman EZSP-version kanssa. Muuten ne eivät voi kommunikoida odotetulla tavalla.

Tämän saavuttamiseksi ensimmäisen isännän ja NCP:n välisen komennon on oltava versiokomento. Toisin sanoen isännän on haettava NCP:n EZSP-versio ennen muuta tiedonsiirtoa. Jos EZSP-versio eroaa isäntäpuolen EZSP-versiosta, tiedonsiirto on keskeytettävä.

Tämän taustalla oleva implisiittinen vaatimus on, että versiokomennon muoto voiÄLÄ KOSKAAN MUUTAEZSP-version komennon muoto on alla oleva:

5

Parametrikentän selitykset ja versiovastauksen muoto löytyvät UG100:n luvusta 4. Parametrikenttä on isäntäohjelman EZSP-versio. Tämän artikkelin kirjoitushetkellä se on 8.
7
Esittäjä: TorchIoTBootCamp
链接: https://zhuanlan.zhihu.com/p/339700391
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注愘凂

2.2. Datan satunnaistaminen

Yksityiskohtainen satunnaistamisprosessi on kuvattu UG101:n osiossa 4.3. Koko EZSP-kehys satunnaistetaan. Satunnaistamisessa käytetään EZSP-kehyksen ja näennäissatunnaisen sekvenssin poissulkevaa TAI-operaatiota.

Alla on algoritmi pseudo-satunnaisen sekvenssin luomiseksi.

  • rand0 = 0 × 42
  • jos randin bitti 0 on 0, randi+1 = randi >> 1
  • Jos randin bitti 0 on 1, randi+1 = (randi >> 1) ^ 0xB8

2.3. Lisää ohjaustavu

Ohjaustavu on yhden tavun mittainen data, ja se tulee lisätä kehyksen alkuun. Muoto on havainnollistettu alla olevassa taulukossa:

6

Ohjaustavuja on yhteensä kuusi. Kolmea ensimmäistä käytetään yhteisille kehyksille, joissa on EZSP-dataa, mukaan lukien DATA, ACK ja NAK. Kolmea viimeistä käytetään ilman yhteistä EZSP-dataa, mukaan lukien RST, RSTACK ja ERROR.

RST-, RSTACK- ja ERROR-virheiden muoto on kuvattu kohdissa 3.1–3.3.

2.4. Laske CRC

16-bittinen CRC lasketaan tavuille ohjaustavusta datan loppuun. Standardi CRCCCITT (g(x) = x16 + x12 + x5 + 1) alustetaan arvoon 0xFFFF. Merkittävin tavu edeltää vähiten merkitsevää tavua (big-endian-tila).

2.5. Tavujen täyttäminen

Kuten UG101:n osiossa 4.2 on kuvattu, joitakin varattuja tavuarvoja käytetään erityistarkoituksiin. Nämä arvot löytyvät seuraavasta taulukosta:

7

Kun nämä arvot esiintyvät kehyksessä, dataa käsitellään erikoistapauksessa. – Lisää pakotavu 0x7D varatun tavun eteen. – Käännä varatun tavun bitti 5 päinvastaiseksi.

Alla on joitakin esimerkkejä tästä algoritmista:

8

2.6. Lisää lopetuslippu

Viimeinen vaihe on lisätä kehyksen loppuun lopetuslippu 0x7E. Tämän jälkeen data voidaan lähettää UART-porttiin.

3. Kehysten purkamisprosessi

Kun UART-transistorista vastaanotetaan dataa, sen dekoodaus tapahtuu päinvastaisessa järjestyksessä.

4. Viitteet


Julkaisun aika: 8. helmikuuta 2022
WhatsApp-keskustelu verkossa!