Pri Zigbee EZSP UART

Aŭtoro: TorchIoTBootCamp
Ligo: https://zhuanlan.zhihu.com/p/339700391
De: Quora

1. Enkonduko

Silicon Labs ofertis gastigantan + NCP-solvon por Zigbee-enirejo-dezajno. En ĉi tiu arkitekturo, la gastiganto povas komuniki kun la NCP per UART aŭ SPI-interfaco. Plej ofte, UART estas uzata ĉar ĝi estas multe pli simpla ol SPI.

Silicon Labs ankaŭ disponigis specimenan projekton por la gastiga programo, kiu estas la specimenoZ3GatewayHost. La specimeno funkcias per Unikso-simila sistemo. Iuj klientoj eble deziras gastigantan specimenon, kiu povas funkcii per RTOS, sed bedaŭrinde, nuntempe ne ekzistas gastiganta specimeno bazita en RTOS. Uzantoj devas evoluigi sian propran gastigan programon bazitan sur RTOS.

Gravas kompreni la protokolon de la enirejo de UART antaŭ ol disvolvi personigitan gastigan programon. Por kaj UART bazita NCP kaj SPI bazita NCP, la gastiganto uzas la EZSP-protokolon por komuniki kun la NCP.EZSPestas mallonga porEmberZnet Seria Protokolo, kaj ĝi estas difinita enUG100. Por NCP bazita en UART, pli malalta tavola protokolo estas efektivigita por porti EZSP-datumojn fidinde tra UART, tio estas laCIndroprotokolo, mallongigo porNesinkrona Seria Gastiganto. Por pliaj detaloj pri ASH, bonvolu raporti alUG101kajUG115.

La rilato inter EZSP kaj ASH povas esti ilustrita per la sekva diagramo:

1

La datenformato de la EZSP kaj la ASH-protokolo povas esti ilustritaj per la sekva diagramo:

2

En ĉi tiu paĝo, ni enkondukos la procezon enkadrigi la UART-datumojn kaj kelkajn ŝlosilajn kadrojn, kiuj estas ofte uzataj en Zigbee-enirejo.

2. Enkadrigo

La ĝenerala enkadriga procezo povas esti ilustrita per la sekva diagramo:

3

En ĉi tiu diagramo, la datumoj signifas la EZSP-kadron. Ĝenerale, la kadraj procezoj estas: |Ne|Paŝo|Referenco|

|:-|:-|:-|

|1|Plenigu la Kadron EZSP|UG100|

|2|Hazardigo de datumoj|Sekcio 4.3 de UG101|

|3|Aldonu la Kontrolbajton|Chap2 kaj Chap3 de UG101|

|4|Kalkuli la CRC|Sekcio 2.3 de UG101|

|5|Byte Stuffing|Sekcio 4.2 de UG101|

|6|Aldonu la Finflagon|Sekcion 2.4 de UG101|

2.1. Plenigu la EZSP-Kadron

La kadroformato EZSP estas ilustrita en Ĉapitro 3 de UG100.

4

Atentu, ke ĉi tiu formato povas ŝanĝiĝi kiam la SDK ĝisdatiĝas. Kiam la formato ŝanĝiĝos, ni donos al ĝi novan version-numeron. La plej nova versio de EZSP estas 8 kiam ĉi tiu artikolo estas skribita (EmberZnet 6.8).

Ĉar la kadroformato EZSP povas esti malsama inter malsamaj versioj, ekzistas deviga postulo ke la gastiganto kaj NCPDEVASlabori kun la sama EZSP-versio. Alie, ili ne povas komuniki kiel atendite.

Por atingi tion, la unua komando inter la gastiganto kaj la NCP devas esti la versio-komando. Alivorte, la gastiganto devas retrovi la EZSP-version de la NCP antaŭ iu alia komunikado. Se la EZSP-versio estas malsama kun la EZSP-versio de la gastiga flanko, la komunikado devas esti ĉesigita.

La implica postulo malantaŭ ĉi tio estas, ke la formato de la versio-komando povasNENIAM ŜANĜI. La komandformato de EZSP-versio estas kiel sube:

5

La klarigoj pri la parametra kampo kaj la formato de la versio-respondo troviĝas en Ĉapitro 4 de UG100. La parametra kampo estas la EZSP-versio de la gastiga programo. Kiam ĉi tiu artikolo estas skribita, ĝi estas 8.
7
作者:TorchIoTBootCamp
链接: https://zhuanlan.zhihu.com/p/339700391
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明倂倂

2.2. Randomigo de datumoj

La detala hazardiga procezo estas priskribita en sekcio 4.3 de UG101. La tuta EZSP-kadro estos hazarda. La hazardigo estas al ekskluziva-OR la ​​EZSP-kadro kaj pseŭdo-hazarda sekvenco.

Malsupre estas la algoritmo de generado de la pseŭdo-hazarda sekvenco.

  • rand0 = 0×42
  • se bito 0 de randi estas 0, randi+1 = randi >> 1
  • se bito 0 de randi estas 1, randi+1 = (randi >> 1) ^ 0xB8

2.3. Aldonu la Kontrolan Bajton

La kontrolbajto estas unu bajta datumo, kaj devus esti aldonita al la kapo de la kadro. La formato estas ilustrita per la tabelo malsupre:

6

Entute, ekzistas 6 specoj de kontrolbajtoj. La unuaj tri estas uzataj por oftaj kadroj kun EZSP-datenoj, inkluzive de DATENO, ACK kaj NAK. La lastaj tri estas uzataj sen komunaj datumoj de EZSP, inkluzive de RST, RSTACK kaj ERARO.

La formato de la RST, RSTACK kaj ERARO estas priskribitaj en sekcioj 3.1 ĝis 3.3.

2.4. Kalkulu la CRC

16-bita CRC estas kalkulita sur bajtoj de la kontrolbajto ĝis la fino de la datenoj. La norma CRCCCITT (g(x) = x16 + x12 + x5 + 1) estas pravigita al 0xFFFF. La plej signifa bajto antaŭas la malplej signifan bajton (big-endian reĝimo).

2.5. Bajta Farĉo

Kiel priskribite en sekcio 4.2 de UG101, estas kelkaj rezervitaj bajtaj valoroj uzataj por speciala celo. Ĉi tiuj valoroj troviĝas en la sekva tabelo:

7

Kiam ĉi tiuj valoroj aperas en la kadro, speciala traktado estos farita al la datumoj. – Enigu la eskapan bajton 0x7D antaŭ la rezervita bajto – Inversigu la biton 5 de tiu rezervita bajto

Malsupre estas kelkaj ekzemploj de ĉi tiu algoritmo:

8

2.6. Aldonu la Finflagon

La fina paŝo estas aldoni la finflagon 0x7E al la fino de la kadro. Post tio, la datumoj povas esti senditaj al la UART-haveno.

3. De-framing Procezo

Kiam datumoj estas ricevitaj de la UART, ni nur bezonas fari la inversajn paŝojn por malkodi ĝin.

4. Referencoj


Afiŝtempo: Feb-08-2022
Enreta Babilejo de WhatsApp!