Pri zigbee ezsp uart

Aŭtoro : Torchiotbootcamp
Ligilo : https: //zhuanlan.zhihu.com/p/339700391
De : Quora

1. Enkonduko

Silicon Labs ofertis gastiganton+NCP -solvon por Zigbee Gateway Design. 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ŭ provizis ekzemplan projekton por la gastiganta programo, kiu estas la specimenoZ3gatewayhost. La specimeno funkcias per UNIX-simila sistemo. Iuj klientoj eble volas gastigan specimenon, kiu povas funkcii sur RTOS, sed bedaŭrinde, ne ekzistas RTOS -bazita gastiga specimeno por la momento. Uzantoj bezonas disvolvi sian propran gastigan programon surbaze de RTOS.

Gravas kompreni la protokolon UART Gateway antaŭ ol disvolvi personecigitan gastigan programon. Por ambaŭ 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 UART -bazita NCP, pli malalta tavolo -protokolo estas efektivigita por porti EZSP -datumojn fidinde super UART, tio estas laCindroprotokolo, mallonga porAsinkrona seria gastiganto. Por pliaj detaloj pri Cindro, bonvolu raportiUG101KajUG115.

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

1

La datumformato de la EZSP kaj la cindra protokolo povas esti ilustrita per la sekva diagramo:

2

En ĉi tiu paĝo, ni enkondukos la procezon de enkadrigado de la UART -datumoj kaj iuj ŝlosilaj kadroj, kiuj estas ofte uzataj en Zigbee Gateway.

2. Kadro

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

3

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

|:-|:-|:-|

| 1 | Plenigu la EZSP -kadron | UG100 |

| 2 | Datuma Randomigo | Sekcio 4.3 de UG101 |

| 3 | Aldoni la kontrolon bajte | Chap2 kaj Chap3 de UG101 |

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

| 5 | Byte -plenigaĵo | Sekcio 4.2 de UG101 |

| 6 | Aldoni la Finan Flagon | Sekcio 2.4 de UG101 |

2.1. Plenigu la EZSP -kadron

La EZSP -kadra formato estas ilustrita en Ĉap 3 de UG100.

4

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

Ĉar la EZSP -kadro -formato povas esti malsama inter malsamaj versioj, ekzistas deviga postulo, ke la gastiganto kaj NCPDevasLaboru 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 retiri la EZSP -version de la NCP antaŭ iu alia komunikado. Se la EZSP -versio diferencas kun la EZSP -versio de la gastiganta flanko, la komunikado devas esti abortita.

La implicita postulo malantaŭ ĉi tio estas, ke la formato de la versio -komando povasNeniam Ŝanĝu. La formato de komando de EZSP estas kiel sube:

5

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

2.2. Datumoj Randomigo

La detala hazarda procezo estas priskribita en Sekcio 4.3 de UG101. La tuta EZSP -kadro estos hazarda. La hazardo estas ekskluziva-aŭ 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 kontrolo -bajto estas unu bajta datumoj, kaj devas esti aldonita al la kapo de la kadro. La formato estas ilustrita per la suba tabelo:

6

Entute estas 6 specoj de kontrolaj bajtoj. La unuaj tri estas uzataj por komunaj kadroj kun EZSP -datumoj, inkluzive de datumoj, ACK kaj NAK. La lastaj tri estas uzataj sen oftaj EZSP -datumoj, inkluzive de RST, RSTACK kaj ERROR.

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

2.4. Kalkulu la CRC

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

2.5. Byte -kompletigo

Kiel priskribite en Sekcio 4.2 de UG101, estas iuj rezervitaj bajtaj valoroj uzataj por speciala celo. Ĉi tiuj valoroj troveblas en la sekva tabelo:

7

Kiam ĉi tiuj valoroj aperas en la kadro, speciala traktado estos farita al la datumoj. - Enmetu la eskapan bajton 0x7d antaŭ la rezervita bajto - inversigu la biton5 de tiu rezervita bajto

Sube estas kelkaj ekzemploj de ĉi tiu algoritmo:

8

2.6. Aldonu la Finan Flagon

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

3. De-enkadriga procezo

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

4. Referencoj


Afiŝotempo: Feb-08-2022
WhatsApp Interreta Babilejo!