Iwwer Zigbee EZSP UART

Auteur: TorchIoTBootCamp
Link: https://zhuanlan.zhihu.com/p/339700391
Vun: Quora

1. Aféierung

Silicon Labs huet eng Host+NCP-Léisung fir den Zigbee-Gateway-Design ugebueden. An dëser Architektur kann den Host mam NCP iwwer eng UART- oder SPI-Interface kommunizéieren. Am heefegsten gëtt UART benotzt, well en vill méi einfach ass wéi SPI.

Silicon Labs huet och e Beispillprojet fir den Hostprogramm geliwwert, deen de Beispillprojet ass.Z3GatewayHostDe Beispill leeft op engem Unix-ähnleche System. Verschidde Clienten wëllen eventuell e Host-Beispill, deen op engem RTOS leeft, awer leider gëtt et de Moment kee RTOS-baséierten Host-Beispill. D'Benotzer mussen hiert eegent Hostprogramm baséiert op RTOS entwéckelen.

Et ass wichteg, de UART-Gateway-Protokoll ze verstoen, ier een e personaliséiert Hostprogramm entwéckelt. Souwuel fir UART-baséiert NCP wéi och fir SPI-baséiert NCP benotzt den Host den EZSP-Protokoll fir mam NCP ze kommunizéieren.EZSPass kuerz firEmberZnet Seriellt Protokoll, an et ass definéiert anUG100Fir UART-baséiert NCP gëtt e Protokoll op der ënneschter Schicht implementéiert fir EZSP-Donnéeën zouverlässeg iwwer UART ze transportéieren, dat ass denÄSCHProtokoll, Ofkierzung firAsynchrone serielle HostFir méi Detailer iwwer ASH, kuckt w.e.g. opUG101anUG115.

D'Relatioun tëscht EZSP an ASH kann duerch folgend Diagramm illustréiert ginn:

1

Den Datenformat vum EZSP an dem ASH-Protokoll kann duerch folgend Diagramm illustréiert ginn:

2

Op dëser Säit stelle mir de Prozess vum Framing vun den UART-Donnéeën an e puer Schlësselframes vir, déi dacks am Zigbee Gateway benotzt ginn.

2. Kaderung

De generelle Prozess vun der Erstellung vu Frames kann duerch déi folgend Tabelle illustréiert ginn:

3

An dëser Grafik bedeiten d'Donnéeën den EZSP-Frame. Am Allgemengen sinn d'Framing-Prozesser: |Nee|Schrëtt|Referenz|

|:-|:-|:-|

|1|Den EZSP-Frame ausfëllen|UG100|

|2|Datenrandomiséierung|Sektioun 4.3 vun UG101|

|3|Füügt de Kontrollbyte derbäi|Kapitel 2 an 3 vun UG101|

|4|Berechent d'CRC|Sektioun 2.3 vun UG101|

|5|Byte-Stuffing|Sektioun 4.2 vun UG101|

|6|Den Endflag derbäisetzen|Sektioun 2.4 vun UG101|

2.1. Fëllt den EZSP-Frame aus

Den EZSP-Frameformat gëtt am Kapitel 3 vum UG100 illustréiert.

4

Passt op, datt dëse Format sech änneren kann, wann den SDK aktualiséiert gëtt. Wann de Format ännert, gi mir him eng nei Versiounsnummer. Déi lescht EZSP Versiounsnummer ass 8, wéi dësen Artikel geschriwwe gouf (EmberZnet 6.8).

Well den EZSP-Frameformat tëscht de verschiddene Versioune ënnerscheede kann, gëtt et eng obligatoresch Viraussetzung, datt den Host an den NCP...MUSSmat der selwechter EZSP Versioun schaffen. Soss kënne se net wéi erwaart kommunizéieren.

Fir dat z'erreechen, muss den éischte Kommando tëscht dem Host an dem NCP de Versiounskommando sinn. An anere Wierder, den Host muss d'EZSP Versioun vum NCP ofruffen, ier all aner Kommunikatioun stattfënnt. Wann d'EZSP Versioun anescht ass wéi d'EZSP Versioun vun der Host Säit, muss d'Kommunikatioun ofgebrach ginn.

Déi implizit Viraussetzung dofir ass, datt de Format vum Versiounskommando ka...NI ÄNNERENDe Format vun der EZSP Versiounskommando ass wéi hei ënnendrënner:

5

D'Erklärunge vum Parameterfeld an dem Format vun der Versiounsäntwert fannt Dir am Kapitel 4 vum UG100. De Parameterfeld ass d'EZSP-Versioun vum Hostprogramm. Zum Zäitpunkt vun dësem Artikel ass et Versioun 8.
7
Beschreiwung: TorchIoTBootCamp
链接: https://zhuanlan.zhihu.com/p/339700391
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请泤昄凂

2.2. Datenrandomiséierung

De detailléierte Randomiséierungsprozess gëtt an der Sektioun 4.3 vum UG101 beschriwwen. De ganze EZSP-Frame gëtt randomiséiert. D'Randomiséierung ass fir den EZSP-Frame an eng pseudo-zoufälleg Sequenz exklusiv ODER ze benotzen.

Hei ënnendrënner ass den Algorithmus fir d'Generéierung vun der pseudo-zoufälleger Sequenz.

  • rand0 = 0×42
  • wann Bit 0 vu Randi 0 ass, dann ass Randi+1 = Randi >> 1
  • wann Bit 0 vu Randi 1 ass, dann ass Randi+1 = (Randi >> 1) ^ 0xB8

2.3. De Kontrollbyte derbäisetzen

De Kontrollbyte ass eng Dategréisst vun engem Byte a soll un den Ufank vum Frame bäigefüügt ginn. De Format gëtt an der Tabell hei ënnendrënner illustréiert:

6

Am Ganzen ginn et 6 Zorte vu Kontrollbytes. Déi éischt dräi gi fir gemeinsam Frames mat EZSP-Daten benotzt, dorënner DATA, ACK an NAK. Déi lescht dräi gi ouni gemeinsam EZSP-Daten benotzt, dorënner RST, RSTACK an ERROR.

De Format vun RST, RSTACK an ERROR gëtt an de Sektiounen 3.1 bis 3.3 beschriwwen.

2.4. Berechent d'CRC

E 16-Bit CRC gëtt op Basis vu Bytes vum Kontrollbyte bis zum Enn vun den Daten berechent. De Standard CRCCCITT (g(x) = x16 + x12 + x5 + 1) gëtt op 0xFFFF initialiséiert. De bedeitendsten Byte kënnt virum mannst bedeitende Byte (Big-Endian Modus).

2.5. Byte-Füllung

Wéi an der Sektioun 4.2 vum UG101 beschriwwen, ginn et e puer reservéiert Bytewäerter, déi fir speziell Zwecker benotzt ginn. Dës Wäerter kënnen an der folgender Tabelle fonnt ginn:

7

Wann dës Wäerter am Frame erscheinen, gëtt eng speziell Behandlung mat den Donnéeën duerchgefouert. – Setzt den Escape-Byte 0x7D virum reservéierte Byte an – Dréit de Bit5 vun deem reservéierte Byte ëm.

Hei sinn e puer Beispiller vun dësem Algorithmus:

8

2.6. Den Endflag derbäisetzen

De leschte Schrëtt ass den Endflag 0x7E um Enn vum Frame bäizefügen. Duerno kënnen d'Donnéeën un den UART-Port geschéckt ginn.

3. Deframing-Prozess

Wann d'Donnéeë vum UART empfaange ginn, musse mir just déi ëmgedréinte Schrëtt maachen, fir se ze decodéieren.

4. Referenzen


Zäitpunkt vun der Verëffentlechung: 08. Februar 2022
WhatsApp Online Chat!