Höfundur: TorchIoTBootCamp
Tengill: https://zhuanlan.zhihu.com/p/339700391
Frá: Quora
1. Inngangur
Silicon Labs hefur boðið upp á host+NCP lausn fyrir Zigbee gáttarhönnun. Í þessum arkitektúr getur gestgjafinn átt samskipti við NCP í gegnum UART eða SPI tengi. Algengast er að UART er notað þar sem það er miklu einfaldara en SPI.
Silicon Labs hefur einnig útvegað sýnishornsverkefni fyrir gestgjafaforritið, sem er sýnishorniðZ3GatewayHost
. Sýnið keyrir á Unix-líku kerfi. Sumir viðskiptavinir gætu viljað hýsilsýni sem getur keyrt á RTOS, en því miður er ekkert RTOS byggt hýsilsýni í bili. Notendur þurfa að þróa sitt eigið hýsingarforrit byggt á RTOS.
Það er mikilvægt að skilja UART gáttarsamskiptareglur áður en þú þróar sérsniðið hýsingarforrit. Fyrir bæði UART byggt NCP og SPI byggt NCP notar gestgjafinn EZSP samskiptareglur til að hafa samskipti við NCP.EZSPer stutt fyrirEmberZnet Serial Protocol, og það er skilgreint íUG100. Fyrir UART byggt NCP er samskiptareglur fyrir lægra lag innleiddar til að flytja EZSP gögn á áreiðanlegan hátt yfir UART, það erASKAsiðareglur, stytting áÓsamstilltur Serial Host. Fyrir frekari upplýsingar um ASH, vinsamlegast vísa tilUG101ogUG115.
Tengsl EZSP og ASH má sýna með eftirfarandi skýringarmynd:
Hægt er að sýna gagnasnið EZSP og ASH samskiptareglunnar með eftirfarandi skýringarmynd:
Á þessari síðu munum við kynna ferlið við að ramma inn UART gögnin og nokkra lykilramma sem eru oft notaðir í Zigbee gáttinni.
2. Innrömmun
Almennt rammaferli má sýna með eftirfarandi mynd:
Í þessu grafi þýðir gögnin EZSP rammann. Almennt séð eru rammaferli: |Nei|Skref|Tilvísun|
|:-|:-|:-|
|1|Fylltu út EZSP rammann|UG100|
|2|Slembival gagna|Kafli 4.3 í UG101|
|3|Bættu við stjórnbætinu|Chap2 og Chap3 af UG101|
|4|Reiknið út CRC|Hluti 2.3 í UG101|
|5|Bætisfylling|Kafli 4.2 í UG101|
|6|Bæta við endafánanum|kafla 2.4 í UG101|
2.1. Fylltu EZSP rammann
EZSP rammasniðið er sýnt í 3. kafla UG100.
Athugaðu að þetta snið gæti breyst þegar SDK er uppfært. Þegar sniðið breytist munum við gefa því nýtt útgáfunúmer. Nýjasta EZSP útgáfunúmerið er 8 þegar þessi grein er skrifuð (EmberZnet 6.8).
Þar sem EZSP rammasniðið getur verið mismunandi milli mismunandi útgáfur, er skyldubundin krafa um að gestgjafi og NCPSKALvinna með sömu EZSP útgáfu. Annars geta þeir ekki átt samskipti eins og búist var við.
Til að ná því verður fyrsta skipunin milli hýsilsins og NCP að vera útgáfuskipunin. Með öðrum orðum, gestgjafinn verður að sækja EZSP útgáfuna af NCP fyrir önnur samskipti. Ef EZSP útgáfan er öðruvísi en EZSP útgáfan af hýsilhliðinni, verður að stöðva samskiptin.
Óbeina krafan á bak við þetta er að snið útgáfuskipunarinnar geti þaðALDREI BREYTA. Skipunarsnið EZSP útgáfunnar er eins og hér að neðan:
链接:https://zhuanlan.zhihu.com/p/339700391
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注昄凂
2.2. Slembival gagna
Ítarlegri slembivalsferlinu er lýst í kafla 4.3 í UG101. Allur EZSP ramminn verður slembiraðaður. Slembiröðunin er eingöngu-OR EZSP ramma og gervi-handahófskennd röð.
Hér að neðan er reikniritið til að búa til gervi-handahófskennda röðina.
- rand0 = 0×42
- ef biti 0 af randi er 0, randi+1 = randi >> 1
- ef biti 0 af randi er 1, randi+1 = (randi >> 1) ^ 0xB8
2.3. Bættu við Control Byte
Stjórnarbætið er eins bæti gögn og ætti að bæta við höfuð rammans. Snið er sýnt með töflunni hér að neðan:
Alls eru til 6 tegundir af stjórnbætum. Fyrstu þrír eru notaðir fyrir algenga ramma með EZSP gögnum, þar á meðal DATA, ACK og NAK. Síðustu þrjú eru notuð án algengra EZSP gagna, þar á meðal RST, RSTACK og ERROR.
Snið RST, RSTACK og ERROR er lýst í kafla 3.1 til 3.3.
2.4. Reiknaðu CRC
16 bita CRC er reiknað út á bæti frá stjórnbætinu til loka gagnanna. Staðlað CRCCCITT (g(x) = x16 + x12 + x5 + 1) er frumstillt í 0xFFFF. Marktækasta bætið kemur á undan minnst marktæka bæti (stór-endian háttur).
2.5. Byte fylling
Eins og lýst er í kafla 4.2 í UG101 eru nokkur frátekin bætigildi notuð í sérstökum tilgangi. Þessi gildi má finna í eftirfarandi töflu:
Þegar þessi gildi birtast í rammanum verður gerð sérstök meðferð á gögnunum. – Settu escape bæti 0x7D fyrir framan frátekið bæti – Snúðu bit5 af því frátekna bæti
Hér að neðan eru nokkur dæmi um þetta reiknirit:
2.6. Bættu við endafánanum
Lokaskrefið er að bæta endafánanum 0x7E við enda rammans. Eftir það er hægt að senda gögnin í UART tengið.
3. De-raming ferli
Þegar gögn eru móttekin frá UART þurfum við bara að gera öfug skref til að afkóða þau.
4. Heimildir
Pósttími: Feb-08-2022