Egilea: TorchIoTBootCamp
Esteka: https://zhuanlan.zhihu.com/p/339700391
Quora-tik:
1. Sarrera
Silicon Labs-ek host+NCP irtenbide bat eskaini du Zigbee atebideen diseinurako. Arkitektura honetan, host-ak NCP-arekin komunikatu daiteke UART edo SPI interfazearen bidez. Ohikoena UART da, SPI baino askoz sinpleagoa baita.
Silicon Labsek ostalari programarako lagin proiektu bat ere eman du, hau da, laginaZ3GatewayHost
. Lagina Unix antzeko sistema batean exekutatzen da. Bezero batzuek RTOS batean exekutatu daitekeen ostalari lagin bat nahi izan dezakete, baina zoritxarrez, oraingoz ez dago RTOS oinarritutako ostalari laginik. Erabiltzaileek RTOSean oinarritutako beren ostalari programa garatu behar dute.
Garrantzitsua da UART atebide protokoloa ulertzea ostalari programa pertsonalizatu bat garatu aurretik. Bai UART oinarritutako NCP bai SPI oinarritutako NCP-rentzat, ostalariak EZSP protokoloa erabiltzen du NCP-rekin komunikatzeko.EZSPlaburdura daEmberZnet Serieko Protokoloa, eta definituta dagoUG100UART oinarritutako NCPrako, beheko geruzako protokolo bat ezartzen da EZSP datuak UART bidez fidagarritasunez eramateko, hau daERRAUTSAprotokoloa, laburduraSerieko ostalari asinkronoaASHri buruzko xehetasun gehiago lortzeko, jo hona:UG101etaUG115.
EZSP eta ASH arteko erlazioa diagrama honen bidez ilustra daiteke:
EZSP eta ASH protokoloaren datu-formatua diagrama honen bidez ilustra daiteke:
Orrialde honetan, UART datuak enkoadratzeko prozesua eta Zigbee atebidean maiz erabiltzen diren gako-fotograma batzuk aurkeztuko ditugu.
2. Markoa jartzea
Marko-prozesu orokorra honako taula honen bidez ilustra daiteke:
Grafiko honetan, datuek EZSP markoa adierazten dute. Oro har, markotze-prozesuak hauek dira: |Ez|Urrats|Erreferentzia|
|:-|:-|:-|
|1|EZSP markoa bete|UG100|
|2|Datuen ausazko aukeraketa|UG101eko 4.3 atala|
|3|Gehitu UG101-en Kontrol Bytea|2. eta 3. kapituluak|
|4|Kalkulatu CRC|UG101-en 2.3 atala|
|5|Byte-betetzea|UG101-en 4.2 atala|
|6|Amaierako bandera gehitu|UG101-en 2.4 atala|
2.1. Bete EZSP markoa
EZSP markoaren formatua UG100-ren 3. kapituluan azaltzen da.
Kontuan izan formatu hau alda daitekeela SDK eguneratzen denean. Formatua aldatzen denean, bertsio zenbaki berri bat emango diogu. EZSPren azken bertsio zenbakia 8 da artikulu hau idazten den unean (EmberZnet 6.8).
EZSP markoaren formatua bertsio desberdinen artean desberdina izan daitekeenez, derrigorrezkoa da ostalariak eta NCPkBEHARREZKOAEZSP bertsio berarekin lan egin. Bestela, ezin dute espero bezala komunikatu.
Horretarako, hostaren eta NCPren arteko lehen komandoa bertsio komandoa izan behar da. Beste era batera esanda, hostak NCPren EZSP bertsioa berreskuratu behar du beste edozein komunikazio egin aurretik. EZSP bertsioa hostaren aldeko EZSP bertsioarekin desberdina bada, komunikazioa eten egin behar da.
Honen atzean dagoen eskakizun inplizitua da bertsio-komandoaren formatua ahal izateaINOIZ EZ ALDATUEZSP bertsioaren komandoaren formatua honako hau da:
链接: https://zhuanlan.zhihu.com/p/339700391
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出倂
2.2. Datuen ausazko aukeraketa
Ausazkotze prozesu zehatza UG101-en 4.3 atalean deskribatzen da. EZSP marko osoa ausazkoa izango da. Ausazkotzea EZSP markoaren eta pseudo-ausazko sekuentzia baten arteko EDO esklusiboa erabiliz egiten da.
Jarraian, ausazko sekuentzia bat sortzeko algoritmoa azaltzen da.
- rand0 = 0×42
- randi-ren 0 bita 0 bada, randi+1 = randi >> 1
- randi-ren 0 bita 1 bada, randi+1 = (randi >> 1) ^ 0xB8
2.3. Gehitu kontrol bytea
Kontrol-bytea byte bateko datua da, eta markoaren goiburuan gehitu behar da. Formatua beheko taulan azaltzen da:
Guztira, 6 kontrol-byte mota daude. Lehenengo hirurak EZSP datuak dituzten ohiko markoetarako erabiltzen dira, besteak beste, DATA, ACK eta NAK. Azken hirurak EZSP datu arruntik gabe erabiltzen dira, besteak beste, RST, RSTACK eta ERROR.
RST, RSTACK eta ERRORren formatua 3.1etik 3.3ra bitarteko ataletan deskribatzen da.
2.4. Kalkulatu CRC
16 biteko CRC bat kontrol-bytetik datuen amaierara arteko byteetan kalkulatzen da. CRCCCITT estandarra (g(x) = x16 + x12 + x5 + 1) 0xFFFF-ra hasieratzen da. Byte esanguratsuena byte gutxien esanguratsuaren aurretik doa (big-endian modua).
2.5. Byte-betetzea
UG101-en 4.2 atalean azaltzen den bezala, helburu berezietarako erabiltzen diren byte-balio erreserbatu batzuk daude. Balio hauek taula honetan aurki daitezke:
Balio hauek markoan agertzen direnean, tratamendu berezi bat egingo zaie datuei. – Txertatu 0x7D ihes bytea erreserbatutako bytearen aurrean – Alderantzikatu erreserbatutako byte horren 5. bit-a
Jarraian algoritmo honen adibide batzuk daude:
2.6. Gehitu amaierako bandera
Azken urratsa 0x7E amaiera-bandera gehitzea da markoaren amaieran. Horren ondoren, datuak UART atakara bidali daitezke.
3. Desenkoadratzeko prozesua
UARTetik datuak jasotzen ditugunean, alderantzizko urratsak egin besterik ez ditugu egin behar deskodetzeko.
4. Erreferentziak
Argitaratze data: 2022ko otsailaren 8a