Tungkol sa Zigbee EZSP UART

May-akda:TorchIoTBootCamp
Link:https://zhuanlan.zhihu.com/p/339700391
Mula sa: Quora

1. Panimula

Nag-alok ang Silicon Labs ng host+NCP solution para sa disenyo ng Zigbee gateway.Sa ganitong arkitektura, maaaring makipag-ugnayan ang host sa NCP sa pamamagitan ng interface ng UART o SPI.Kadalasan, ginagamit ang UART dahil mas simple ito kaysa sa SPI.

Nagbigay din ang Silicon Labs ng sample na proyekto para sa host program, na siyang sampleZ3GatewayHost.Ang sample ay tumatakbo sa isang Unix-like system.Maaaring gusto ng ilang customer ang isang host sample na maaaring tumakbo sa isang RTOS, ngunit sa kasamaang-palad, walang RTOS based host sample sa ngayon.Ang mga gumagamit ay kailangang bumuo ng kanilang sariling host program batay sa RTOS.

Mahalagang maunawaan ang UART gateway protocol bago bumuo ng customized na host program.Para sa parehong UART based NCP at SPI based NCP, ginagamit ng host ang EZSP protocol para makipag-ugnayan sa NCP.EZSPay maikli para saEmberZnet Serial Protocol, at ito ay tinukoy saUG100.Para sa NCP na nakabatay sa UART, ipinapatupad ang isang mas mababang layer na protocol upang mapagkakatiwalaan ang data ng EZSP sa UART, iyon angABOprotocol, maikli para saAsynchronous na Serial Host.Para sa higit pang mga detalye tungkol sa ASH, mangyaring sumangguni saUG101atUG115.

Ang kaugnayan sa pagitan ng EZSP at ASH ay maaaring ilarawan ng sumusunod na diagram:

1

Ang format ng data ng EZSP at ang ASH protocol ay maaaring ilarawan ng sumusunod na diagram:

2

Sa page na ito, ipapakilala namin ang proseso ng pag-frame ng data ng UART at ilang key frame na kadalasang ginagamit sa Zigbee gateway.

2. Pag-frame

Ang pangkalahatang proseso ng pag-frame ay maaaring ilarawan ng sumusunod na tsart:

3

Sa chart na ito, ang data ay nangangahulugan ng EZSP frame.Sa pangkalahatan, ang mga proseso ng pag-frame ay: |Hindi|Hakbang|Sanggunian|

|:-|:-|:-|

|1|Punan ang EZSP Frame|UG100|

|2|Data Randomization|Seksyon 4.3 ng UG101|

|3|Idagdag ang Control Byte|Chap2 at Chap3 ng UG101|

|4|Kalkulahin ang CRC|Seksyon 2.3 ng UG101|

|5|Byte Stuffing|Seksyon 4.2 ng UG101|

|6|Idagdag ang End Flag|Seksyon 2.4 ng UG101|

2.1.Punan ang EZSP Frame

Ang EZSP frame format ay inilalarawan sa Chap 3 ng UG100.

4

Bigyang-pansin na maaaring magbago ang format na ito kapag nag-upgrade ang SDK.Kapag nagbago ang format, bibigyan namin ito ng bagong numero ng bersyon.Ang pinakabagong numero ng bersyon ng EZSP ay 8 kapag isinulat ang artikulong ito (EmberZnet 6.8).

Dahil maaaring magkaiba ang format ng EZSP frame sa pagitan ng iba't ibang bersyon, mayroong ipinag-uutos na kinakailangan na ang host at NCPDAPATgumana sa parehong bersyon ng EZSP.Kung hindi, hindi sila makakapag-usap gaya ng inaasahan.

Upang makamit iyon, ang unang utos sa pagitan ng host at ng NCP ay dapat na ang utos ng bersyon.Sa madaling salita, dapat kunin ng host ang EZSP na bersyon ng NCP bago ang anumang iba pang komunikasyon.Kung ang bersyon ng EZSP ay naiiba sa bersyon ng EZSP ng panig ng host, dapat na ihinto ang komunikasyon.

Ang implicit na kinakailangan sa likod nito ay ang format ng version command ay maaariHINDI NAGBABAGO.Ang format ng command na bersyon ng EZSP ay tulad sa ibaba:

5

Ang mga paliwanag ng field ng parameter at ang format ng tugon ng bersyon ay makikita sa Chap 4 ng UG100.Ang field ng parameter ay ang bersyon ng EZSP ng host program.Kapag naisulat ang artikulong ito, ito ay 8.
7
作者:TorchIoTBootCamp
链接:https://zhuanlan.zhihu.com/p/339700391
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

2.2.Randomization ng Data

Ang detalyadong proseso ng randomization ay inilarawan sa seksyon 4.3 ng UG101.Ang buong frame ng EZSP ay magiging randomized.Ang randomization ay sa eksklusibo-O ​​ang EZSP frame at isang pseudo-random na pagkakasunud-sunod.

Nasa ibaba ang algorithm ng pagbuo ng pseudo-random na sequence.

  • rand0 = 0×42
  • kung ang bit 0 ng randi ay 0, randi+1 = randi >> 1
  • kung ang bit 0 ng randi ay 1, randi+1 = (randi >> 1) ^ 0xB8

2.3.Idagdag ang Control Byte

Ang control byte ay isang one byte na data, at dapat idagdag sa head ng frame.Ang format ay inilalarawan sa talahanayan sa ibaba:

6

Sa kabuuan, mayroong 6 na uri ng control byte.Ang unang tatlo ay ginagamit para sa mga karaniwang frame na may EZSP data, kabilang ang DATA, ACK at NAK.Ang huling tatlo ay ginagamit nang walang karaniwang data ng EZSP, kabilang ang RST, RSTACK at ERROR.

Ang format ng RST, RSTACK at ERROR ay inilarawan sa seksyon 3.1 hanggang 3.3.

2.4.Kalkulahin ang CRC

Ang isang 16-bit na CRC ay kinakalkula sa mga byte mula sa control byte hanggang sa katapusan ng data.Ang karaniwang CRCCCITT (g(x) = x16 + x12 + x5 + 1) ay sinisimulan sa 0xFFFF.Ang pinaka makabuluhang byte ay nauuna sa hindi bababa sa makabuluhang byte (big-endian mode).

2.5.Byte Stuffing

Gaya ng inilarawan sa seksyon 4.2 ng UG101, mayroong ilang nakareserbang byte na halaga na ginagamit para sa espesyal na layunin.Ang mga halagang ito ay matatagpuan sa sumusunod na talahanayan:

7

Kapag lumitaw ang mga halagang ito sa frame, isang espesyal na paggamot ang gagawin sa data.– Ipasok ang escape byte 0x7D sa harap ng nakareserbang byte – Baligtarin ang bit5 ng nakareserbang byte na iyon

Nasa ibaba ang ilang halimbawa ng algorithm na ito:

8

2.6.Idagdag ang End Flag

Ang huling hakbang ay idagdag ang end flag na 0x7E sa dulo ng frame.Pagkatapos nito, ang data ay maaaring ipadala sa UART port.

3. De-framing na Proseso

Kapag natanggap ang data mula sa UART, kailangan lang nating gawin ang mga reverse na hakbang para ma-decode ito.

4. Mga Sanggunian


Oras ng post: Peb-08-2022
WhatsApp Online Chat!