Autor: Torchiotbootcamp
LINK: HTTPS: //zhuanlan.zhihu.com/p/33970091
Vu: Quo
1. Aféierung
Silicon Labs huet eng Host + NCP Léisung fir Zigbee Gateway Design ugebueden. An dëser Architektur, kann den Host mat dem NCP duerch UART oder Spir Interface kommunizéiert. Meeschtens, UART gëtt benotzt wéi et vill méi einfach wéi Spi ass.
Silicon Labs huet och e Probe Projet fir den Hostprogramm zur Verfügung gestallt, wat d'Probe assZ3Gatwayhost
An. De Probe leeft op engem Unix-ähnleche System. E puer Clienten wëllen e Host Probe wëll déi op engem RTOS lafen, awer leider, awer leider ass et kee RTos baséiert Host Probe fir d'Zäit. D'Benotzer mussen hert Haaschtprogramm baséiert op der RTOën entwéckelt.
Et ass wichteg d'UART Paart Protokoll ze verstoen ier en e personaliséierten Host Programm entwéckelt. Fir déi béid UART no der U-Spi baséiert NCP baséiert NCP, d'FoF C7P d'Ezop Procolement fir mat den NCP ze kommen.Ezspass kuerz firEmbberznet Serial Protokoll, an et ass definéiert anUG100An. Fir UART baséiert NCP, eng méi niddereg Schicht Protokoll ass implementéiert Ezspdate Ziplies iwwer UART ze droen, dat ass deÄhshProtokoll, kuerz firAsynchronous Seriher HostAn. Fir méi Detailer iwwer Äschen, kuckt w.e.g.UG101an anUG115.
D'Relatioun tëscht EZSP an Äschen kann duerch den folgenden Diagramm illustréiert ginn:
Den Datenformat vum EZSP an dem Ash Protokoll kann duerch den folgenden Diagramm illustréiert ginn:
Op dëser Säit wäerte mir de Prozess fir d'Uartdaten a verschiddenen Schlësselframe aféieren déi dacks am Zigbe Gateway benotzt ginn.
2. Frame
De General Fraktiounsprozess kann duerch déi folgend Chart illustréiert ginn:
An dësem Kategorand heescht d'Donnéeën vum EQM0. Am Allgemengen, d'Grasméiglechkeet sinn: | Gëtter | Stand | Referenz |
|: - |: - |: - |
| 1 | fëllt den EZSP Fra | UG100 |
| 2 | Daten randomization | Sektioun 4.3 vun der UG101 |
| 3 | Füügt d'Kontroll vum Byte | Kapcco a Chap3 vun der UG101 |
| 4 | Rechent d'CRC | Sektioun 2.3 vun UG101 |
| 5 | byte Stuff | Sektioun 4.2 vun der UG101 |
| 6 | Füügt den End Flagg | Sektioun 2.4 vun der UG101 |
2.1. Fëllt den EZP-Frame
Den EZSP Fahrzeechnung ass a Chap 3 vun UG100 illustréiert.
Opgepasst datt dëst Format ännert wann de SDK Upgrades. Wann d'Format ännert, ginn mir et eng nei Versiounsnummer. Déi lescht EZSP Versiounsnummer ass 8 Wann dësen Artikel geschriwwen ass (Emberznet 6.8).
Wéi den EZSP Frameattraktioun kann anescht tëscht verschiddene Versiounen sinn, gëtt et ob der obligatoresch Fuerderung datt de Host an NCPMussSchafft mat der selwechter EZSP Versioun. Soss kann se net mat eis kommunizéieren.
Fir dat dat éischt Kommando tëscht dem Host an den NCP ze ginn, muss d'Versiounsregkommando sinn. An anere Wierder, mussen den Host net d'EZSP Versioun vum NCP zréck kréien ier all aner Kommunikatioun. Wann d'Ezsp Versioun anescht ass mat der ezsp Versioun vun der Hostsäit, muss d'Kommunikatioun ofgebrach ginn.
Déi implizit Ufuerderung hannert dëst ass datt d'Format vun der Versiouns Kommando kannNi verännerenAn. Den EZSP Versiouns Kommando Format ass wéi hei ënnendrënner:
链接: HTTPS: //zhuanlan.zhihu.com/p/33970091
来源: 知乎
著作权归作者所有. 商业转载请联系作者获得授权, 非商业转载请注明出处.
2.2. Daten zoufälleg
De detailléierte resfërmegen Prozess Prozess gëtt an der Sektioun 4.3 vun der UG101 beschriwwen. De ganze EZSP Fra ass randomiséiert. D'Déi randomisable ass zum exklusiv - oder den EZP-Frame an eng Pseudo-zoufälleg Sequenz.
Drënner ass den Algorithmus vun der Schseudio-zoufälleg Sequenz ze generéieren.
- Rand0 = 0 × 42
- Wann de Bit 0 vum Randi 0 ass, randi + 1 = Randi >> 1
- Wann de Bit 0 vum Randi 1 ass, randi + 1 = (Randi >> 1) ^ 0xb8
2.3. Füügt d'Kontroll Byte
D'Kontrollzyte ass eng ee Byte Daten, a soll op de Kapp vum Frame bäigefüügt ginn. D'Format ass mat der Tabell hei ënnendrënner ginn:
Ganz, et gi 6 Aarte vu Kontroll Bytes. Déi éischt dräi gëtt fir allgemenge Critomer mat Espsdate benotzt, dorënner déi Daten, ack an Niww. Déi lescht dräi gi ouni gemeinsam Ezspdaten benotzt, inklusiv dem Ustrack a Feeler.
D'Format vum RTSTE, Ustrack a Feeler ginn an der Sektioun 3.1 bis 3.3 beschriwwen.
2.4. Berechent d'CRC
E 16-Bit CRC gëtt op Bytes aus der Kontrollkette berechent bis d'Enn vun den Donnéeën. De Standard Crcccitt (g (x) = x16 + x12 + X5 + 1) ass um 0xFFFF initialiséiert. Déi bedeitendst Byte virgesinn déi mannst bedeitend Byte (Big-Endianmodus).
2.5. Byte Stuff
Wéi an der Sektioun 42 op den UG1.01 beschriwwen, ginn et e puer reservéiert Geschécker fir speziell Zweck. Dës Wäerter kënnen am folgenden Dësch fonnt ginn:
Wann dës Wäerter am Frame optrieden, gëtt eng speziell Behandlung vun den Daten gemaach. - Setzt d'Flucht vum Byte 0x7d virun der reservéierter Byte - ëmgedréint d'Bit5 vun deem reseted Byte
Drënner sinn e puer Beispiller vun dësem Algorithmus:
2.6. Füügt den Enn Fändel
De Finale Schrëtt ass den Enn Fändel 0x7e bis zum Schluss vum Frazung ze addéieren. Duerno kann d'Daten ginn op d'Uerarte geschéckt ginn.
3. De-framing Prozess
Wann Donnéeën vun der Sich kritt, brauche mir just d'ëmgedréinlech Schrëtt ze decodéieren.
4. Referenze
Postzäit: Feb-08-2022