Tietoja Zigbee EZSP UARTista

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

1. Johdanto

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

Silicon Labs on myös toimittanut malliprojektin isäntäohjelmalle, joka on esimerkkiZ3GatewayHost. Näyte toimii Unix-tyyppisellä järjestelmällä. Jotkut asiakkaat saattavat haluta isäntänäytteen, joka toimii RTOS:lla, mutta valitettavasti RTOS-pohjaista isäntänäytettä ei toistaiseksi ole. Käyttäjien on kehitettävä oma isäntäohjelma, joka perustuu RTOS:iin.

On tärkeää ymmärtää UART-yhdyskäytäväprotokolla ennen mukautetun isäntäohjelman kehittämistä. Sekä UART-pohjaisessa NCP:ssä että SPI-pohjaisessa NCP:ssä isäntä käyttää EZSP-protokollaa viestiäkseen NCP:n kanssa.EZSPon lyhenneEmberZnet Serial Protocol, ja se on määritelty kohdassaUG100. UART-pohjaisessa NCP:ssä alemman kerroksen protokolla on toteutettu kuljettamaan EZSP-tietoja luotettavasti UART:n kautta.TUHKAprotokolla, lyhenneAsynkroninen sarjaisäntä. Lisä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-tietojen kehystysprosessin ja joitain avainkehyksiä, joita käytetään usein Zigbee-yhdyskäytävässä.

2. Kehystys

Yleinen kehystysprosessi voidaan havainnollistaa seuraavalla kaaviolla:

3

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

|:-|:-|:-|

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

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

|3|Lisää UG101|:n ohjaustavu|Chap2 ja Chap3|

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

|5|tavutäyte|UG101:n osio 4.2|

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

2.1. Täytä EZSP-kehys

EZSP-kehysmuoto on kuvattu UG100:n luvussa 3.

4

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

Koska EZSP-kehysmuoto voi olla erilainen eri versioiden välillä, on pakollinen vaatimus, että isäntä ja NCPTÄYTYYtoimivat samalla EZSP-versiolla. Muuten he eivät voi kommunikoida odotetulla tavalla.

Tämän saavuttamiseksi ensimmäisen komennon isännän ja NCP:n välillä on oltava version komento. Toisin sanoen isännän on noudettava NCP:n EZSP-versio ennen muuta viestintää. Jos EZSP-versio eroaa isäntäpuolen EZSP-versiosta, viestintä on keskeytettävä.

Tämän takana oleva implisiittinen vaatimus on, että version komennon muoto voiÄLÄ KOSKAAN MUUTA. EZSP-version komentomuoto on seuraavanlainen:

5

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

2.2. Tietojen satunnaistaminen

Yksityiskohtainen satunnaistusprosessi on kuvattu UG101:n kohdassa 4.3. Koko EZSP-kehys satunnaistetaan. Satunnaistaminen on poissulkeva TAI EZSP-kehys ja näennäissatunnainen sekvenssi.

Alla on algoritmi pseudosatunnaissekvenssin 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 data, ja se tulisi lisätä kehyksen päähän. Muoto on havainnollistettu alla olevalla taulukolla:

6

Kaikkiaan ohjaustavuja on 6 erilaista. Kolmea ensimmäistä käytetään yleisissä kehyksissä, joissa on EZSP-tietoja, mukaan lukien DATA, ACK ja NAK. Kolmea viimeistä käytetään ilman yleistä EZSP-dataa, mukaan lukien RST, RSTACK ja ERROR.

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

2.4. Laske CRC

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

2.5. Tavutäyte

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 näkyvät kehyksessä, tiedoille tehdään erityiskäsittely. – Lisää pakotavu 0x7D varatun tavun eteen – Käännä varatun tavun bitti 5

Alla on esimerkkejä tästä algoritmista:

8

2.6. Lisää loppulippu

Viimeinen vaihe on lisätä loppulippu 0x7E kehyksen loppuun. Sen jälkeen tiedot voidaan lähettää UART-porttiin.

3. Kehyksenpoistoprosessi

Kun tietoja vastaanotetaan UART:lta, meidän on vain suoritettava päinvastaiset vaiheet sen purkamiseksi.

4. Viitteet


Postitusaika: 08.02.2022
WhatsApp Online Chat!