Rreth Zigbee EZSP UART

Autori: TorchIoTBootCamp
Link:https://zhuanlan.zhihu.com/p/339700391
Nga: Quora

1. Hyrje

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

Silicon Labs ka ofruar gjithashtu një projekt shembull për programin pritës, i cili është shembulliZ3GatewayHostMostra funksionon në një sistem të ngjashëm me Unix. Disa klientë mund të dëshirojnë një mostër pritëse që mund të funksionojë në një RTOS, por për fat të keq, për momentin nuk ka një mostër pritëse të bazuar në RTOS. Përdoruesit duhet të zhvillojnë programin e tyre pritës bazuar në RTOS.

Është e rëndësishme të kuptoni protokollin e portës UART përpara se të zhvilloni një program pritës të personalizuar. Si për NCP-në e bazuar në UART ashtu edhe për NCP-në e bazuar në SPI, hosti përdor protokollin EZSP për të komunikuar me NCP-në.EZSPështë shkurtim përProtokolli Serial EmberZnet, dhe është përcaktuar nëUG100Për NCP të bazuar në UART, zbatohet një protokoll i shtresës së ulët për të transportuar të dhënat EZSP në mënyrë të besueshme përmes UART, që ështëHIRprotokoll, shkurtim përHosti Serial AsinkronPër më shumë detaje rreth ASH, ju lutemi referojuniUG101dheUG115.

Marrëdhënia midis EZSP dhe ASH mund të ilustrohet nga diagrami i mëposhtëm:

1

Formati i të dhënave të protokollit EZSP dhe ASH mund të ilustrohet nga diagrami i mëposhtëm:

2

Në këtë faqe, do të prezantojmë procesin e kuadrimit të të dhënave UART dhe disa kornizave kyçe që përdoren shpesh në portën Zigbee.

2. Kornizë

Procesi i përgjithshëm i ndërtimit të kornizës mund të ilustrohet nga diagrami i mëposhtëm:

3

Në këtë grafik, të dhënat nënkuptojnë kornizën EZSP. Në përgjithësi, proceset e kornizës janë: |No|Hapi|Referenca|

|:-|:-|:-|

|1|Mbushni Kornizën EZSP|UG100|

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

|3|Shtoni Kontrollin e Bajtit|Kapitulli 2 dhe Kapitulli 3 të UG101|

|4|Llogaritni CRC-në|Seksioni 2.3 i UG101|

|5|Mbushje me Bajte|Seksioni 4.2 i UG101|

|6|Shto Flamurin e Fundit|Seksioni 2.4 i UG101|

2.1. Mbushni kornizën EZSP

Formati i kornizës EZSP ilustrohet në Kapitullin 3 të UG100.

4

Kushtojini vëmendje se ky format mund të ndryshojë kur SDK të përditësohet. Kur formati të ndryshojë, ne do t'i japim një numër të ri versioni. Numri i versionit më të fundit të 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 NCPDUHETpunojnë me të njëjtin version EZSP. Përndryshe, ato nuk mund të komunikojnë siç pritet.

Për ta arritur këtë, komanda e parë midis hostit dhe NCP-së duhet të jetë komanda version. Me fjalë të tjera, hosti duhet të rikuperojë versionin EZSP të NCP-së para çdo komunikimi tjetër. Nëse versioni EZSP është i ndryshëm nga versioni EZSP i anës së hostit, komunikimi duhet të ndërpritet.

Kërkesa implicite pas kësaj është që formati i komandës version mund tëMOS NDRYSHO KURRËFormati i komandës së versionit EZSP është si më poshtë:

5

Shpjegimet e fushës së parametrave dhe formatit të përgjigjes së versionit mund të gjenden në Kapitullin 4 të UG100. Fusha e parametrave është versioni EZSP i programit pritës. Kur shkruhet ky artikull, është 8.
7
Për shembull: 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. I gjithë kuadri EZSP do të randomizohet. Randomizimi bëhet për të përjashtuar ose për të përjashtuar kuadrin EZSP dhe një sekuencë pseudo-randomizuese.

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

  • rand0 = 0×42
  • nëse biti 0 i randi-t është 0, randi+1 = randi >> 1
  • nëse biti 0 i randi-t është 1, randi+1 = (randi >> 1) ^ 0xB8

2.3. Shtoni bajtin e kontrollit

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

6

Gjithsej, ekzistojnë 6 lloje bajtesh kontrolli. Tre të parët përdoren për kornizat e zakonshme me të dhëna EZSP, duke përfshirë DATA, ACK dhe NAK. Tre të fundit përdoren pa të dhëna të zakonshme EZSP, duke përfshirë RST, RSTACK dhe ERROR.

Formati i RST, RSTACK dhe ERROR përshkruhet në seksionet 3.1 deri në 3.3.

2.4. Llogaritni CRC-në

Një CRC 16-bitësh llogaritet në bajt nga bajti i kontrollit deri në fund të të dhënave. CRCCCITT standard (g(x) = x16 + x12 + x5 + 1) inicializohet në 0xFFFF. Bajti më i rëndësishëm i paraprin bajtit më pak të rëndësishëm (modaliteti big-endian).

2.5. Mbushja e bajteve

Siç përshkruhet në seksionin 4.2 të UG101, ekzistojnë disa vlera të rezervuara të bajteve që përdoren për qëllime të veçanta. Këto vlera mund të gjenden në tabelën e mëposhtme:

7

Kur këto vlera shfaqen në kornizë, të dhënave do t'u bëhet një trajtim i veçantë. – Vendosni bajtin e escape 0x7D përpara bajtit të rezervuar – Ktheni bitin 5 të atij bajt të rezervuar

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

8

2.6. Shtoni Flamurin e Fundit

Hapi i fundit është shtimi i flamurit end 0x7E në fund të frame-it. Pas kësaj, të dhënat mund të dërgohen në portin UART.

3. Procesi i çkornizimit

Kur të dhënat merren nga UART, na duhet vetëm të bëjmë hapat e kundërt për t'i deshifruar ato.

4. Referencat


Koha e postimit: 08 shkurt 2022
Bisedë Online në WhatsApp!