Tietoja Zigbee Ezsp UART: sta

Kirjoittaja : TorchiotBootcamp
Linkki : https: //zhuanlan.zhihu.com/p/339700391
: Quora

1. Johdanto

Silicon Labs on tarjonnut isäntä+NCP -ratkaisun Zigbee Gateway Design -sovellukseen. Tässä arkkitehtuurissa isäntä voi kommunikoida NCP: n kanssa UART- tai SPI -rajapinnan kautta. UART: ta käytetään yleisimmin, koska se on paljon yksinkertaisempi kuin SPI.

Silicon Labs on myös tarjonnut näyteprojektin isäntäohjelmalle, joka on näyteZ3GatewayHost. Näyte toimii UNIX-kaltaisessa järjestelmässä. Jotkut asiakkaat saattavat haluta isäntänäytteen, joka voi toimia RTO: lla, mutta valitettavasti ei ole RTOS -pohjaista isäntänäytettä toistaiseksi. Käyttäjien on kehitettävä oma isäntäohjelma RTOS: n perusteella.

On tärkeää ymmärtää UART Gateway -protokolla ennen räätälöityn isäntäohjelman kehittämistä. Sekä UART -pohjaiselle NCP- että SPI -pohjaiselle NCP: lle isäntä käyttää EZSP -protokollaa kommunikoidakseen NCP: n kanssa.EZSPon lyhytEmberznet -sarjaprotokollaja se on määriteltyUG100. UART -pohjaiselle NCP: lle otetaan huomioon alempi kerrosprotokolla EZSP -tietojen kuljettamiseksi luotettavasti UART: n yli, eli se onTUHKAprotokolla, lyhyt jstkAsynkroninen sarjaisäntä. Lisätietoja Ashista katsoUG101jaUG115.

EZSP: n ja tuhkan välistä suhdetta voidaan havainnollistaa seuraavalla kaaviolla:

1

EZSP: n ja tuhkaprotokollan datamuoto voidaan havainnollistaa seuraavalla kaaviolla:

2

Tällä sivulla esittelemme UART -datan ja joitain avainkehyksiä, joita käytetään usein Zigbee Gateway -yhtiössä.

2. kehys

Seuraava kaavio voidaan havainnollistaa yleistä kehysprosessia:

3

Tässä kaaviossa tiedot tarkoittavat EZSP -kehystä. Yleensä kehystysprosessit ovat: | ei | Vaihe | Viite |

|:-|:-|:-|

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

| 2 | Tiedot satunnaistaminen | UG101: n kohta 4.3 |

| 3 | Lisää ohjaustavu | UG101: n CHAP2 ja CHAP3 |

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

| 5 | Tavun täyte | UG101: n kohta 4.2 |

| 6 | Lisää päätylippu | UG101: n kohta 2.4 |

2.1. Täytä EZSP -kehys

EZSP -kehysmuoto on esitetty UG100: n luvussa 3.

4

Kiinnitä huomiota, että tämä muoto voi muuttua, kun SDK -päivitykset. Kun muoto muuttuu, annamme sille uuden versionumeron. Viimeisin EZSP -versionumero on 8, kun tämä artikkeli on kirjoitettu (Emberznet 6.8).

Koska EZSP -kehysmuoto voi olla erilainen eri versioiden välillä, on pakollinen vaatimus, että isäntä ja NCPPakottaaTyöskentele saman EZSP -version kanssa. Muuten he eivät voi kommunikoida kuten odotettiin.

Tämän saavuttamiseksi ensimmäisen isännän ja NCP: n välisen komennon on oltava version komento. Toisin sanoen isännän on palautettava NCP: n EZSP -versio ennen mitään muuta viestintää. Jos EZSP -versio on erilainen isäntäpuolen EZSP -version kanssa, viestintä on keskeytettävä.

Tämän taustalla oleva implisiittinen vaatimus on, että version komennon muoto voiÄlä koskaan muutu. EZSP -version komentomuoto on kuin alla:

5

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

2.2. Tietojen satunnaistaminen

Yksityiskohtainen satunnaistamisprosessi on kuvattu UG101: n osassa 4.3. Koko EZSP -kehys satunnaistetaan. Satunnaistaminen on EZSP-kehyksen yksinoikeus tai pseudo-satunnainen sekvenssi.

Alla on algoritmi pseudo-satunnaisen sekvenssin tuottamiseksi.

  • 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

Täysin hallintatavuja on 6. Kolme ensimmäistä käytetään yleisiin kehyksiin, joissa on EZSP -tieto, mukaan lukien tiedot, ACK ja NAK. Kolme viimeistä käytetään ilman yleisiä EZSP -tietoja, mukaan lukien RST, Rstack ja virhe.

RST: n, RSTACK: n ja virheen muoto on kuvattu osassa 3.1 - 3.3.

2.4. Laske CRC

16-bittinen CRC lasketaan tavuilla ohjaustavusta tietojen loppuun saakka. Vakio crcccitt (g (x) = x16 + x12 + x5 + 1) alustetaan arvoon 0xffff. Merkittävin tavu edeltää vähiten merkittävää tavua (iso-endian-moodi).

2.5. Tavun täyte

Kuten UG101: n kohdassa 4.2 on kuvattu, erityiskäyttöön käytettyjä varattuja tavuarvoja on. Nämä arvot löytyvät seuraavasta taulukosta:

7

Kun nämä arvot näkyvät kehyksessä, datalle tehdään erityinen käsittely. - Aseta poistumistavu 0x7d varatun tavun eteen - Käännä varattu tavu BIT5

Alla on joitain esimerkkejä tästä algoritmista:

8

2.6. Lisää päätylippu

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

3.

Kun tiedot vastaanotetaan UART: lta, meidän on vain suoritettava käänteiset vaiheet sen purkamiseksi.

4. viitteet


Viestin aika: helmikuu 08-2022
Whatsapp online -chat!