Oor zigbee ezsp uart

Skrywer : Torchiotbootcamp
Skakel : https: //zhuanlan.zhihu.com/p/339700391
Van : Quora

1. Inleiding

Silicon Labs het 'n gasheer+NCP -oplossing vir Zigbee Gateway -ontwerp aangebied. In hierdie argitektuur kan die gasheer met die NCP kommunikeer via UART of SPI -koppelvlak. Uart word meestal gebruik omdat dit baie eenvoudiger is as SPI.

Silicon Labs het ook 'n voorbeeldprojek vir die gasheerprogram aangebied, wat die steekproef isZ3gatewayhost. Die monster werk op 'n Unix-agtige stelsel. Sommige kliënte wil dalk 'n gasheermonster hê wat op 'n RTOS kan werk, maar ongelukkig is daar voorlopig geen RTOS -gasheermonster nie. Gebruikers moet hul eie gasheerprogram ontwikkel op grond van RTO's.

Dit is belangrik om die UART Gateway -protokol te verstaan ​​voordat u 'n pasgemaakte gasheerprogram ontwikkel. Vir beide UART -gebaseerde NCP- en SPI -gebaseerde NCP gebruik die gasheer die EZSP -protokol om met die NCP te kommunikeer.EZSPis kort virEmberznet seriële protokol, en dit word gedefinieer inUG100. Vir UART -gebaseerde NCP word 'n laer laagprotokol geïmplementeer om EZSP -data betroubaar oor UART te dra, dit is dieAsprotokol, kort virAsynchrone seriële gasheer. Raadpleeg asseblief na meer inligting oor AshUG101enUG115.

Die verband tussen EZSP en ASH kan deur die volgende diagram geïllustreer word:

1

Die dataformaat van die EZSP en die ASH -protokol kan deur die volgende diagram geïllustreer word:

2

Op hierdie bladsy stel ons die proses om die UART -data en 'n paar sleutelrame op te stel wat gereeld in Zigbee Gateway gebruik word.

2. raamwerk

Die algemene raamproses kan deur die volgende grafiek geïllustreer word:

3

In hierdie grafiek beteken die data die EZSP -raam. Oor die algemeen is die raamwerkprosesse: | geen | Stap | Verwysing |

|:-|:-|:-|

| 1 | Vul die EZSP -raam | UG100 |

| 2 | Data -randomisering | Afdeling 4.3 van UG101 |

| 3 | Voeg die kontrole byte by | hfst2 en hfst3 van UG101 |

| 4 | Bereken die CRC | Afdeling 2.3 van UG101 |

| 5 | Byte -vulsel | Afdeling 4.2 van UG101 |

| 6 | Voeg die eindvlag by | Afdeling 2.4 van UG101 |

2.1. Vul die EZSP -raam

Die EZSP -raamformaat word in hfst 3 van UG100 geïllustreer.

4

Let daarop dat hierdie formaat kan verander wanneer die SDK opgradeer. As die formaat verander, gee ons dit 'n nuwe weergawe nommer. Die nuutste EZSP -weergawe nommer is 8 wanneer hierdie artikel geskryf is (Emberznet 6.8).

Aangesien die EZSP -raamformaat tussen verskillende weergawes verskil, is daar 'n verpligte vereiste dat die gasheer en NCPMufWerk met dieselfde EZSP -weergawe. Andersins kan hulle nie soos verwag word kommunikeer nie.

Om dit te bereik, moet die eerste opdrag tussen die gasheer en die NCP die weergawe -opdrag wees. Met ander woorde, die gasheer moet die EZSP -weergawe van die NCP voor enige ander kommunikasie herleef. As die EZSP -weergawe anders is met die EZSP -weergawe van die gasheerkant, moet die kommunikasie gestaak word.

Die implisiete vereiste hieragter is dat die formaat van die weergawe -opdragMoet nooit verander nie. Die EZSP -weergawe -opdragformaat is soos hieronder:

5

Die verduidelikings van die parameterveld en die formaat van die weergawe -reaksie kan in Hoofstuk 4 van UG100 gevind word. Die parameterveld is die EZSP -weergawe van die gasheerprogram. As hierdie artikel geskryf is, is dit 8.
7
作者 : Torchiotbootcamp
链接 : https: //zhuanlan.zhihu.com/p/339700391
来源 : 知乎
著作权归作者所有。商业转载请联系作者获得授权 , 非商业转载请注明出处。

2.2. Randomisering van data

Die gedetailleerde randomiseringsproses word in Afdeling 4.3 van UG101 beskryf. Die hele EZSP -raam sal gerandomiseer word. Die randomisering is om die EZSP-raam en 'n pseudo-ewekansige volgorde te eksklusief of te eksklusief.

Hieronder is die algoritme om die pseudo-ewekansige volgorde te genereer.

  • RAND0 = 0 × 42
  • As bit 0 van Randi 0 is, Randi+1 = Randi >> 1
  • As bit 0 van Randi 1 is, Randi+1 = (Randi >> 1) ^ 0xb8

2.3. Voeg die kontrole byte by

Die kontrole -byte is 'n een -byte -data en moet by die kop van die raam gevoeg word. Die formaat word met die onderstaande tabel geïllustreer:

6

Daar is heeltemal 6 soorte beheergrepe. Die eerste drie word gebruik vir gewone rame met EZSP -data, insluitend data, ACK en NAK. Die laaste drie word sonder algemene EZSP -data gebruik, insluitend RST, RStack en Fout.

Die formaat van die RST, RStack en Fout word in Afdeling 3.1 tot 3.3 beskryf.

2.4. Bereken die CRC

'N 16-bis CRC word bereken op grepe vanaf die kontrole-byte tot aan die einde van die data. Die standaard crcccitt (g (x) = x16 + x12 + x5 + 1) word geïnitialiseer tot 0xffff. Die belangrikste byte is voorafgegaan met die minste betekenisvolle byte (groot-endiaanse modus).

2.5. Byte vulsel

Soos beskryf in Afdeling 4.2 van UG101, is daar 'n paar gereserveerde byte -waardes wat vir spesiale doeleindes gebruik word. Hierdie waardes kan in die volgende tabel gevind word:

7

As hierdie waardes in die raam verskyn, sal 'n spesiale behandeling aan die data gedoen word. - Steek die ontsnapping byte 0x7d voor die gereserveerde byte - keer die bit5 van die voorbehoude byte om

Hieronder is 'n paar voorbeelde van hierdie algoritme:

8

2.6. Voeg die eindvlag by

Die laaste stap is om die eindvlag 0x7e aan die einde van die raam te voeg. Daarna kan die data na die UART -poort gestuur word.

3. De-raamwerkproses

As data van die UART ontvang word, moet ons net die omgekeerde stappe doen om dit te dekodeer.

4. Verwysings


Postyd: Februarie 08-2022
Whatsapp aanlyn chat!