Auteur: TorchiotBootcamp
Link: HTTPS: //zhuanlan.zhihu.com/p/339700391
Fan: Quora
1. Ynlieding
Silicon Labs hat in host + NCP-oplossing oanbean foar Zigbee Gateway Design. Yn dizze arsjitektuer kin de host kinne kommunisearje mei de NCP fia UART as SPI-ynterface. Meast faak wurdt Uart brûkt, om't it folle ienfâldiger is dan SPI.
Silicon Labs hat ek in foarbyldprojekt levere foar it hostprogramma, dat is it stekproefZ3gatewayhost
. De stekproef rint op in unix-achtige systeem. Guon klanten kinne in host foarbylden dy't kinne rinne, mar spitigernôch is, mar spitigernôch is d'r gjin RTOS basearre Host-stekproef foar de tiid. Brûkers moatte har eigen hostprogramma ûntwikkelje op basis fan Rtos.
It is wichtich om it Uart Gateway-protokol te begripen foardat jo in oanpast host-programma ûntwikkelje. Foar sawol Uart basearre NCP as SPI-basearre NCP, brûkt de host it EZSP-protokol om te kommunisearjen mei de NCP.Ezspis koart foarEmberznet serial protokol, en it wurdt definieare ynUG100. Foar UART-basearre NCP, wurdt in legere laachprotokol ymplementearre om EZSP-gegevens betrouber te dragen oer UART, dat is deEskProtokol, koart foarAsynchrone seriële host. Foar mear details oer Ash, ferwize asjebleaft neiUG101enUg115.
De relaasje tusken EZSP en Ash kinne wurde yllustrearre troch it folgjende diagram:
It gegevensformaat fan 'e EZSP en de Ash-protokol kin wurde yllustrearre troch it folgjende diagram:
Op dizze pagina sille wy it proses yntrodusearje fan it framjen fan 'e UART-gegevens en wat kaaiframes dy't faak brûkt wurde yn ZIGBEE-GATE.
2. Frame
It Algemiene Framing-proses kin wurde yllustrearre troch de folgjende diagram:
Yn dizze diagram betsjuttet de gegevens it EZSP-frame. Yn 't algemien binne de framingprosessen: | gjin | stap | referinsje |
|: - |: - |: - |
| 1 | Folje it EZSP-frame | UG100 |
| 2 | Gegevens RACOMISCATION | Seksje 4.3 fan UG101 |
| 3 | Foegje de kontrôle byte | Chap2 en Chap3 of UG101 |
| 4 | Berekkenje de CRC | Seksje 2.3 fan UG101 |
| 5 | Byte stuffing | Seksje 4.2 fan UG101 |
| 6 | Foegje de einflagge tafoegje | Seksje 2.4 fan UG101 |
2.1. Folje it ezsp-frame
It EZSP-frame-formaat wurdt yllustrearre yn haadfor 3 fan UG100.
Jou oandacht dat dit formaat kin feroarje as de SDK-upgrades is. As de formaat wizigingen, sille wy it in nij ferzje nûmer jaan. It lêste EZSP-ferzjenûmer is 8 as dit artikel is skreaun (Emberznet 6.8).
Wylst it EZSP-frame-formaat oars kin wêze tusken ferskate ferzjes, is d'r in ferplichte eask dat de gasthear en NCPMOATTEwurkje mei deselde ezsp-ferzje. Oars kinne se net kommunisearje as ferwachte.
Om dat te berikken, it earste kommando tusken de host en de NCP moat it ferzje-kommando wêze. Mei oare wurden, de host moat de EZSP-ferzje fan 'e NCP opnij leverje foar elke oare kommunikaasje. As de EZSP-ferzje oars is mei de EZSP-ferzje fan 'e hostkant moat de kommunikaasje wurde ôfbrutsen.
De ymplisyt fereaske hjirtroch is dat it formaat fan 'e ferzje kommando kinNea feroarje. It kommandorformaat EZSP-ferzje is as hjirûnder:
链接: https: //zhuanlan.zhihu.com/p/339700391
来源: 知乎
著作权归作者所有. 商业转载请联系作者获得授权, 非商业转载请注明出处.
2.2. Gegevens retomisaasje
It detaillearre randomisaasjeproses wurdt beskreaun yn paragraaf 4.3 fan UG101. It heule ezsp-frame sil randomisearre wurde. De randomisaasje is om eksklusyf - as it ezsp-frame en in pseudo-willekeurige sekwinsje.
Hjirûnder is it algoritme fan it generearjen fan 'e pseudo-willekeurige sekwinsje.
- RAND0 = 0 × 42
- As Bit 0 of Randi 0 is, is Randi + 1 = Randi >> 1
- As Bit 0 of Randi 1 is, is Randi + 1 = (Randi >> 1) ^ 0xb8
2.3. Foegje de kontrôle byte ta
De kontrôlebyte is in ien byte gegevens, en moat wurde tafoege oan 'e holle fan it frame. It formaat wurdt yllustrearre mei de tabel hjirûnder:
Hielendal, d'r binne 6 soarten kontrôle bytes. De earste trije wurde brûkt foar algemiene frames mei ezsp-gegevens, ynklusyf gegevens, akk en nak. De lêste trije wurde brûkt sûnder mienskiplike EZSP-gegevens, ynklusyf RST, Rstack en flater.
It formaat fan 'e RST, Rstack en flater wurde beskreaun yn paragraaf 3.1 oant 3.3.
2.4. Berekkenje de CRC
In 16-bit CRC wurdt berekkene op bytes fan 'e kontrôle byte oant it ein fan' e gegevens. De standert CRCCCITT (G (X) = X16 + X12 + X5 + 1) wurdt inisjalisearre nei 0xFFFF. De meast wichtige byte foarôfgiet de minste wichtige byte (Big-Endian Mode).
2.5. Byte stuffing
Lykas beskreaun yn paragraaf 4.2 fan UG101 binne d'r wat reservearre byte-wearden brûkt foar spesjaal doel. Dizze wearden kinne fûn wurde yn 'e folgjende tabel:
As dizze wearden ferskine yn it frame, sil in spesjale behanneling dien wurde oan 'e gegevens. - Foegje de ûntsnapping byte 0x7D foar it reservearre byte yn - Reverse de Bit5 fan dat reservearre byte
Hjirûnder binne wat foarbylden fan dizze algoritme:
2.6. Foegje de einflagge ta
De definitive stap is om de einflagge 0x7e ta te foegjen oan it ein fan it frame. Hjirnei kinne de gegevens nei de UART-poarte stjoerd wurde.
3. De-framing proses
As gegevens wurde ûntfongen fan 'e Uart, hoege wy gewoan de omkearde stappen te dwaan om it te ûntsiferjen.
4. REMERENCES
Posttiid: FEB-08-2022