Rreth Zigbee ezsp UART

Autori : Torchiotbootcamp
Lidhja : Https: //zhuanlan.zhihu.com/p/339700391
Nga : Quora

1. Hyrje

Silicon Labs ka ofruar një zgjidhje host+NCP për ZigBee Gateway Design. Në këtë arkitekturë, hosti mund të komunikojë me NCP përmes ndërfaqes UART ose SPI. Më së shpeshti, UART përdoret pasi është shumë më e thjeshtë se SPI.

Silicon Labs ka siguruar gjithashtu një projekt mostër për programin pritës, i cili është mostraZ3gatewayhost. Mostra shkon në një sistem të ngjashëm me Unix. Disa klientë mund të duan një mostër pritëse e cila mund të funksionojë në një RTOS, por për fat të keq, nuk ka asnjë mostër hosti të bazuar në RTOS për momentin. Përdoruesit duhet të zhvillojnë programin e tyre pritës bazuar në RTOS.

Shtë e rëndësishme të kuptoni protokollin UART Gateway përpara se të zhvilloni një program të personalizuar të hostit. Për NCP me bazë në UART dhe NCP të bazuar në SPI, nikoqiri përdor protokollin EZSP për të komunikuar me NCP.EZSPështë e shkurtër përProtokoll serial imberznet, dhe përcaktohet nëUG100. Për NCP të bazuar në UART, një protokoll me shtresa më të ulët është zbatuar për të kryer të dhëna EZSP me siguri mbi UART, kjo ështëFërshëllimëprotokoll, i shkurtër përMikpritës serial asinkron. Për më shumë detaje rreth Ash, ju lutemi referojuniUG101dheUG115.

Lidhja midis EZSP dhe ASH -së mund të ilustrohet me diagramin e mëposhtëm:

1

Formati i të dhënave të EZSP dhe protokollit të ASH -së mund të ilustrohet me diagramin e mëposhtëm:

2

Në këtë faqe, ne do të prezantojmë procesin e inkuadrimit të të dhënave UART dhe disa kornizave kryesore të cilat shpesh përdoren në Zigbee Gateway.

2. kornizë

Procesi i përgjithshëm i kornizës mund të ilustrohet me grafikun e mëposhtëm:

3

Në këtë tabelë, të dhënat nënkuptojnë kornizën EZSP. Në përgjithësi, proceset e inkuadrimit janë: | jo | Hapi | Referenca |

|:-|:-|:-|

| 1 | Plotësoni kornizën EZSP | UG100 |

| 2 | Randomizimi i të dhënave | Seksioni 4.3 i UG101 |

| 3 | Shtoni Byte të Kontrollit | Kapela2 dhe Kapitulli i UG101 |

| 4 | Llogaritni CRC | Seksioni 2.3 i UG101 |

| 5 | mbushje byte | Seksioni 4.2 i UG101 |

| 6 | Shtoni flamurin fundor | Seksioni 2.4 i UG101 |

2.1. Plotësoni kornizën EZSP

Formati i kornizës EZSP është ilustruar në kapelën 3 të UG100.

4

Kushtojini vëmendje që ky format mund të ndryshojë kur SDK të azhurnohet. Kur formati të ndryshojë, ne do t'i japim asaj një numër të ri të versionit. Numri i fundit i versionit EZSP është 8 kur është shkruar ky artikull (Emberznet 6.8).

Meqenëse formati i kornizës EZSP mund të jetë i ndryshëm midis versioneve të ndryshme, ekziston një kërkesë e detyrueshme që hosti dhe NCPDuhetPunoni me të njëjtin version EZSP. Përndryshe, ata nuk mund të komunikojnë siç pritej.

Për ta arritur këtë, komanda e parë midis hostit dhe NCP duhet të jetë komanda e versionit. Me fjalë të tjera, hosti duhet të marrë versionin EZSP të NCP para çdo komunikimi tjetër. Nëse versioni EZSP është i ndryshëm me versionin EZSP të anës së pritësit, komunikimi duhet të abortohet.

Kërkesa e nënkuptuar që qëndron pas kësaj është që formati i komandës së versionit mundetKurrë nuk ndryshoj. Formati i komandës së versionit EZSP është si më poshtë:

5

Shpjegimet e fushës së parametrave dhe formati i përgjigjes së versionit mund të gjenden në kapelën 4 të UG100. Fusha e parametrave është versioni EZSP i programit pritës. Kur të shkruhet ky artikull, është 8.
7
: Torchiotbootcamp
: Https: //zhuanlan.zhihu.com/p/339700391
: 知乎
著作权归作者所有。商业转载请联系作者获得授权 , 非商业转载请注明出处。

2.2. Randomizimi i të dhënave

Procesi i detajuar i randomizimit përshkruhet në Seksionin 4.3 të UG101. E gjithë korniza EZSP do të rastizohet. Randomizimi është ekskluzivi-ose korniza EZSP dhe një sekuencë pseudo-e rastësishme.

Më poshtë është algoritmi i gjenerimit të sekuencës pseudo-të rastit.

  • rand0 = 0 × 42
  • Nëse bit 0 e randi është 0, randi+1 = randi >> 1
  • Nëse bit 0 i randi është 1, randi+1 = (randi >> 1) ^ 0xb8

2.3. Shtoni bajtin e kontrollit

Bajti i kontrollit është një të dhënë me një bajt, dhe duhet të shtohet në kokën e kornizës. Formati është ilustruar me tabelën më poshtë:

6

Krejtësisht, ka 6 lloje të bajtëve të kontrollit. Tre të parat përdoren për korniza të zakonshme me të dhëna EZSP, përfshirë të dhënat, ACK dhe NAK. Tre të fundit përdoren pa të dhëna të zakonshme të EZSP, përfshirë RST, RSTACK dhe ERROR.

Formati i parë, i parë dhe gabimi përshkruhen në Seksionin 3.1 deri 3.3.

2.4. Llogaritni CRC

Një CRC 16-bit llogaritet në bajtë nga bajti i kontrollit deri në fund të të dhënave. CRCCCCITT standarde (g (x) = x16 + x12 + x5 + 1) inicializohet në 0xffff. Byte më domethënëse i paraprin bajtit më pak domethënës (modaliteti i madh-endian).

2.5. Mbushje e bajtit

Siç përshkruhet në Seksionin 4.2 të UG101, ekzistojnë disa vlera të rezervuara të bajtit të përdorura për qëllime të veçanta. Këto vlera mund të gjenden në tabelën vijuese:

7

Kur këto vlera shfaqen në kornizë, do të bëhet një trajtim i veçantë për të dhënat. - Vendosni bajtanin e arratisjes 0x7D përpara byte të rezervuar - kthejeni bit5 të asaj bajt të rezervuar

Më poshtë janë disa shembuj të këtij algoritmi:

8

2.6. Shtoni flamurin fundor

Hapi i fundit është të shtoni flamurin fundor 0x7e në fund të kornizës. Pas kësaj, të dhënat mund të dërgohen në portin UART.

3. Procesi i depërtimit

Kur të dhënat merren nga UART, ne vetëm duhet të bëjmë hapat e kundërt për ta deshifruar atë.

4. Referencat


Koha e postimit: Shkurt-08-2022
Whatsapp chat online!