Egilea: TorchIoTBootCamp
Esteka: https://zhuanlan.zhihu.com/p/339700391
Nork: Quora
1. Sarrera
Silicon Labs-ek ostalari + NCP irtenbide bat eskaini du Zigbee atebidearen diseinurako. Arkitektura honetan, ostalaria NCPrekin komunikatu daiteke UART edo SPI interfazearen bidez. Gehienetan, UART erabiltzen da SPI baino askoz sinpleagoa baita.
Silicon Labs-ek programa ostalarirako lagin-proiektu bat ere eman du, hau da, laginaZ3GatewayHost
. Lagina Unix antzeko sistema batean exekutatzen da. Baliteke bezero batzuek RTOS batean exekutatu daitekeen ostalari lagin bat nahi izatea, baina, zoritxarrez, ez dago RTOSen oinarritutako ostalari laginrik oraingoz. Erabiltzaileek bere programa ostalari propioa garatu behar dute RTOSen oinarrituta.
Garrantzitsua da UART atebideko protokoloa ulertzea ostalari-programa pertsonalizatu bat garatu aurretik. UART oinarritutako NCP eta SPI oinarritutako NCPrako, ostalariak EZSP protokoloa erabiltzen du NCPrekin komunikatzeko.EZSPlaburra daEmberZnet Serial Protokoloa, eta urtean zehazten daUG100. UART oinarritutako NCPrako, beheko geruza protokolo bat ezartzen da EZSP datuak UART-en bidez fidagarritasunez eramateko, hori daERRUGARRAprotokoloa, laburduraOstalari serie asinkronoa. ASH-ari buruzko xehetasun gehiago lortzeko, kontsultatuUG101etaUG115.
EZSP eta ASH-ren arteko erlazioa diagrama honen bidez ilustra daiteke:
EZSP eta ASH protokoloaren datu-formatua diagrama honen bidez ilustra daiteke:
Orri honetan, Zigbee atebidean maiz erabiltzen diren UART datuen markoaren prozesua eta zenbait fotograma nagusi aurkeztuko ditugu.
2. Koadroa
Koadroaren prozesu orokorra ondoko taulan ilustra daiteke:
Diagrama honetan, datuek EZSP markoa esan nahi dute. Oro har, enkoadraketa-prozesuak hauek dira: |Ez|Pausoa|Erreferentzia|
|:-|:-|:-|
|1|Bete EZSP markoa|UG100|
|2|Datuen aleatorizazioa|UG101eko 4.3 atala|
|3|Gehitu Kontrol Byte|Chap2 eta Chap3 UG101|
|4|Kalkulatu CRC|UG101eko 2.3 atala|
|5|Byte betetzea|UG101eko 4.2 atala|
|6|Gehitu amaierako bandera|UG101eko 2.4 atala|
2.1. Bete EZSP markoa
EZSP fotograma formatua UG100-ko 3. kapituluan azaltzen da.
Kontuz formatu hau alda daitekeela SDK-a berritzen denean. Formatua aldatzen denean, bertsio-zenbaki berri bat emango diogu. EZSPren azken bertsio-zenbakia 8 da artikulu hau idazten denean (EmberZnet 6.8).
EZSP fotograma-formatua bertsio ezberdinen artean desberdina izan daitekeenez, derrigorrezko baldintza bat dago ostalariak eta NCPBEHAREZSP bertsio berarekin lan egin. Bestela, ezin dira espero bezala komunikatu.
Hori lortzeko, ostalariaren eta NCPren arteko lehen komandoak bertsioaren komandoa izan behar du. Beste era batera esanda, ostalariak NCPren EZSP bertsioa berreskuratu behar du beste edozein komunikazio baino lehen. EZSP bertsioa ostalariaren EZSP bertsioarekin ezberdina bada, komunikazioa bertan behera utzi behar da.
Honen atzean dagoen baldintza inplizitua bertsio komandoaren formatuak ahal izatea daEZ ALDATU INOIZ. EZSP bertsioaren komando-formatua behean bezalakoa da:
链接: https://zhuanlan.zhihu.com/p/339700391
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出倂
2.2. Datuen aleatorizazioa
Ausazko banaketa prozesu zehatza UG101eko 4.3 atalean deskribatzen da. EZSP fotograma osoa ausaz banatuko da. Ausazko-edo EZSP fotograma eta sasi-ausazko sekuentzia bat da.
Jarraian, sasi-ausazko sekuentzia sortzeko algoritmoa dago.
- rand0 = 0×42
- randi-ren 0 bit 0 bada, randi+1 = randi >> 1
- randi-ren 0 bit 1 bada, randi+1 = (randi >> 1) ^ 0xB8
2.3. Gehitu Kontrol Byta
Kontrol-byte-a byte bateko datua da, eta markoaren buruari gehitu behar zaio. Formatua beheko taularekin azaltzen da:
Guztira, 6 kontrol-byte mota daude. Lehenengo hirurak EZSP datuak dituzten fotograma arruntetarako erabiltzen dira, DATA, ACK eta NAK barne. Azken hirurak EZSP datu arruntik gabe erabiltzen dira, RST, RSTACK eta ERROR barne.
RST, RSTACK eta ERROR-en formatua 3.1etik 3.3ra bitarteko atalean deskribatzen da.
2.4. Kalkulatu CRC
16 biteko CRC bat kontrol bytetik datuen amaierara arte kalkulatzen da. CRCCCITT estandarra (g(x) = x16 + x12 + x5 + 1) 0xFFFF-ra hasten da. Byte esanguratsuena byte esanguratsuenaren aurretik dago (big-endian modua).
2.5. Byte betetzea
UG101eko 4.2 atalean deskribatzen den bezala, helburu berezietarako erabiltzen diren byte-balio erreserbatuak daude. Balio hauek hurrengo taulan aurki daitezke:
Balio hauek markoan agertzen direnean, tratamendu berezia egingo zaie datuei. – Sartu 0x7D ihes byte erreserbatutako bytearen aurrean – Erreserbatutako byte horren 5 bit-a alderantzikatu
Jarraian algoritmo honen adibide batzuk daude:
2.6. Gehitu Amaiera Bandera
Azken urratsa amaierako bandera 0x7E markoaren amaieran gehitzea da. Horren ondoren, datuak UART atakara bidal daitezke.
3. Desenkoadraketa prozesua
UART-tik datuak jasotzen direnean, alderantzizko urratsak egin behar ditugu deskodetzeko.
4. Erreferentziak
Argitalpenaren ordua: 2022-08-08