Über Zigbee EZSP UART

Autor: Torchiotbootcamp
Link: https: //zhuanlan.zhihu.com/p/339700391
Aus: Quora

1. Einführung

Silicon Labs hat eine Host+NCP -Lösung für das Zigbee -Gateway -Design angeboten. In dieser Architektur kann der Host über die UART- oder SPI -Schnittstelle mit dem NCP kommunizieren. Am häufigsten wird UART verwendet, da es viel einfacher ist als SPI.

Silicon Labs hat auch ein Beispielprojekt für das Host -Programm zur Verfügung gestellt, bei dem es sich um die Probe handeltZ3gatewayHost. Die Probe läuft auf einem Unix-ähnlichen System. Einige Kunden möchten möglicherweise ein Host -Beispiel, das auf einem RTOS ausgeführt werden kann, aber leider gibt es vorerst keine RTOS -basierte Host -Probe. Benutzer müssen ein eigenes Host -Programm basierend auf RTOs entwickeln.

Es ist wichtig, das UART -Gateway -Protokoll zu verstehen, bevor ein maßgeschneidertes Host -Programm entwickelt wird. Sowohl für UART -basierte NCP- als auch für SPI -basierte NCP verwendet der Host das EZSP -Protokoll, um mit dem NCP zu kommunizieren.EZSPist kurz fürEmberznet Serienprotokollund es ist definiert inUG100. Für UART -basierte NCP wird ein Protokoll mit niedrigerer Schicht implementiert, um EZSP -Daten zuverlässig über UART zu tragen, das ist dieASCHEProtokoll, kurz fürAsynchroner serieller Wirt. Weitere Informationen zu Ash finden Sie unterUG101UndUG115.

Die Beziehung zwischen EZSP und Asche kann durch das folgende Diagramm veranschaulicht werden:

1

Das Datenformat des EZSP und des Ash -Protokolls kann durch das folgende Diagramm veranschaulicht werden:

2

Auf dieser Seite werden wir den Prozess der Rahmung der UART -Daten und einige wichtige Rahmen einführen, die häufig im Zigbee -Gateway verwendet werden.

2. Rahmen

Der allgemeine Rahmenprozess kann durch das folgende Diagramm veranschaulicht werden:

3

In diesem Diagramm bedeuten die Daten den EZSP -Frame. Im Allgemeinen sind die Framing -Prozesse: | Nein | Schritt | Referenz |

|:-|:-|:-|

| 1 | Füllen Sie den EZSP -Rahmen | UG100 |

| 2 | Daten Randomisierung | Abschnitt 4.3 von UG101 |

| 3 | das Kontroll -Byte | Chap2 und Chap3 von UG101 | hinzufügen |

| 4 | Berechnen Sie den CRC | Abschnitt 2.3 von UG101 |

| 5 | Byte -Füllung | Abschnitt 4.2 von UG101 |

| 6 | Das Endflag | Abschnitt 2.4 von UG101 |

2.1. Füllen Sie den EZSP -Rahmen

Das EZSP -Frame -Format ist in Kapitel 3 von UG100 dargestellt.

4

Achten Sie darauf, dass sich dieses Format ändern kann, wenn sich die SDK -Aktualisierung aktualisiert. Wenn sich das Format ändert, geben wir ihm eine neue Versionsnummer. Die neueste EZSP -Versionsnummer ist 8, wenn dieser Artikel geschrieben wird (Emberznet 6.8).

Da das EZSP -Frame -Format zwischen verschiedenen Versionen unterschiedlich sein kann, besteht eine obligatorische Anforderung, dass der Host und der NCPMUSSArbeiten Sie mit derselben EZSP -Version. Ansonsten können sie nicht wie erwartet kommunizieren.

Um dies zu erreichen, muss der erste Befehl zwischen dem Host und dem NCP der Versionsbefehl sein. Mit anderen Worten, der Host muss die EZSP -Version des NCP vor einer anderen Kommunikation zurückziehen. Wenn die EZSP -Version mit der EZSP -Version der Host -Seite unterschiedlich ist, muss die Kommunikation abgebrochen werden.

Die implizite Anforderung dahinter ist, dass das Format des Versionsbefehls kannSich niemals ändern. Das Befehlsformat der EZSP -Version ist wie unten:

5

Die Erklärungen des Parameterfelds und des Formats der Versionsantwort finden Sie in Kap. 4 von UG100. Das Parameterfeld ist die EZSP -Version des Host -Programms. Wenn dieser Artikel geschrieben ist, ist es 8.
7
作者 Torchiotbootcamp
链接 : https: //zhuanlan.zhihu.com/p/339700391
来源 : 知乎
著作权归作者所有。商业转载请联系作者获得授权 , 非商业转载请注明出处。 非商业转载请注明出处。

2.2. Daten -Randomisierung

Der detaillierte Randomisierungsprozess ist in Abschnitt 4.3 von UG101 beschrieben. Der gesamte EZSP -Frame wird randomisiert. Die Randomisierung besteht darin, den EZSP-Frame und eine Pseudo-Random-Sequenz auszuschließen.

Unten ist der Algorithmus zur Erzeugung der Pseudo-Random-Sequenz.

  • Rand0 = 0 × 42
  • Wenn Bit 0 von Randi 0 ist, Randi+1 = Randi >> 1
  • Wenn Bit 0 von Randi 1 ist, Randi+1 = (Randi >> 1) ^ 0xb8

2.3. Fügen Sie das Kontrollbyte hinzu

Das Steuerungsbyte ist eine ein Byte -Daten und sollte dem Kopf des Rahmens hinzugefügt werden. Das Format wird mit der folgenden Tabelle dargestellt:

6

Insgesamt gibt es 6 Arten von Kontrollbytes. Die ersten drei werden für gemeinsame Rahmen mit EZSP -Daten verwendet, einschließlich Daten, ACK und NAK. Die letzten drei werden ohne gemeinsame EZSP -Daten verwendet, einschließlich RST, RSTACK und FEHLER.

Das Format von RST, RStack und Irrtum ist in Abschnitt 3.1 bis 3.3 beschrieben.

2.4. Berechnen Sie den CRC

Ein 16-Bit-CRC wird auf Bytes aus dem Kontrollbyte bis zum Ende der Daten berechnet. Der Standard -CRCCCitt (g (x) = x16 + x12 + x5 + 1) wird auf 0xffff initialisiert. Das bedeutendste Byte geht dem am wenigsten bedeutenden Byte (Big-Endian-Modus) voraus.

2.5. Byte -Füllung

Wie in Abschnitt 4.2 von UG101 beschrieben, werden einige reservierte Byte -Werte für besondere Zwecke verwendet. Diese Werte finden Sie in der folgenden Tabelle:

7

Wenn diese Werte im Rahmen erscheinen, wird die Daten eine Sonderbehandlung durchgeführt. - Fügen Sie das Escape -Byte 0x7d vor dem reservierten Byte ein - Bit5 dieses reservierten Byte kehren Sie um

Im Folgenden finden Sie einige Beispiele für diesen Algorithmus:

8

2.6. Fügen Sie die Endflagge hinzu

Der letzte Schritt besteht darin, das Endflag 0x7e zum Ende des Rahmens hinzuzufügen. Danach können die Daten an den UART -Port gesendet werden.

3.. Deframierungsprozess

Wenn Daten vom UART empfangen werden, müssen wir nur die umgekehrten Schritte ausführen, um sie zu entschlüsseln.

4. Referenzen


Postzeit: Februar 08-2022
WhatsApp Online -Chat!