Babagan Zigbee EZSP UART

Pengarang: TorchIoTBootCamp
Pranala: https://zhuanlan.zhihu.com/p/339700391
Saka: Quora

1. Pambuka

Silicon Labs wis nawakake solusi host + NCP kanggo desain gerbang Zigbee. Ing arsitektur iki, host bisa komunikasi karo NCP liwat antarmuka UART utawa SPI. Paling umum, UART digunakake amarga luwih gampang tinimbang SPI.

Silicon Labs uga nyedhiyakake proyek sampel kanggo program inang, yaiku sampelZ3GatewayHost. Sampel mlaku ing sistem kaya Unix. Sawetara pelanggan bisa uga pengin sampel inang sing bisa mbukak ing RTOS, nanging sayangé, ora ana conto inang adhedhasar RTOS saiki. Pangguna kudu ngembangake program host dhewe adhedhasar RTOS.

Penting kanggo ngerti protokol gateway UART sadurunge ngembangake program host sing disesuaikan. Kanggo NCP adhedhasar UART lan NCP adhedhasar SPI, host nggunakake protokol EZSP kanggo komunikasi karo NCP.EZSPiku singkatan kanggoProtokol Serial EmberZnet, lan ditetepake ingUG100. Kanggo NCP berbasis UART, protokol lapisan ngisor dileksanakake kanggo nggawa data EZSP kanthi andal liwat UART, yaikuABUprotokol, singkatan sakaHost Serial Asynchronous. Kanggo rincian liyane babagan ASH, wacaUG101lanUG115.

Hubungane antarane EZSP lan ASH bisa digambarake kanthi diagram ing ngisor iki:

1

Format data EZSP lan protokol ASH bisa digambarake kanthi diagram ing ngisor iki:

2

Ing kaca iki, kita bakal ngenalake proses framing data UART lan sawetara pigura kunci sing asring digunakake ing gateway Zigbee.

2. Rangka

Proses pigura umum bisa digambarake kanthi grafik ing ngisor iki:

3

Ing bagan iki, data tegese pigura EZSP. Umumé, proses framing yaiku: |Ora|Langkah|Referensi|

|:-|:-|:-|

|1|Isi Frame EZSP|UG100|

|2|Acak Data|Bagian 4.3 saka UG101|

|3|Tambah Kontrol Byte|Bab2 lan Bab3 saka UG101|

|4|Etung CRC|Bagian 2.3 saka UG101|

|5|Byte Stuffing|Bagian 4.2 saka UG101|

|6|Tambah Bendera Pungkasan|Bagian 2.4 saka UG101|

2.1. Isi Frame EZSP

Format pigura EZSP digambarake ing Bab 3 saka UG100.

4

Elinga yen format iki bisa diganti nalika SDK nganyarke. Nalika format diganti, kita bakal menehi nomer versi anyar. Nomer versi EZSP paling anyar yaiku 8 nalika artikel iki ditulis (EmberZnet 6.8).

Amarga format pigura EZSP bisa uga beda ing antarane versi sing beda-beda, ana syarat wajib yen host lan NCPWAJIBbisa karo versi EZSP padha. Yen ora, dheweke ora bisa komunikasi kaya sing dikarepake.

Kanggo entuk sing, printah pisanan antarane host lan NCP kudu printah versi. Ing tembung liyane, host kudu njupuk versi EZSP saka NCP sadurunge komunikasi liyane. Yen versi EZSP beda karo versi EZSP saka sisih inang, komunikasi kudu dibatalake.

Syarat implisit ing mburi iki yaiku format printah versi bisaORA ONO. Format printah versi EZSP kaya ing ngisor iki:

5

Panjelasan babagan kolom parameter lan format respon versi bisa ditemokake ing Bab 4 saka UG100. Kolom parameter yaiku versi EZSP saka program host. Nalika artikel iki ditulis, iku 8.
7
Sumber:TorchIoTBootCamp
链接:https://zhuanlan.zhihu.com/p/339700391
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

2.2. Randomisasi Data

Proses randomization rinci diterangake ing bagean 4.3 saka UG101. Kabeh pigura EZSP bakal acak. Randomization kanggo eksklusif-UTAWA pigura EZSP lan urutan pseudo-acak.

Ing ngisor iki algoritma ngasilake urutan pseudo-random.

  • rand0 = 0×42
  • yen bit 0 saka randi iku 0, randi+1 = randi >> 1
  • yen bit 0 saka randi iku 1, randi+1 = (randi >> 1) ^ 0xB8

2.3. Tambah Kontrol Byte

Byte kontrol minangka data bait siji, lan kudu ditambahake ing sirah pigura. Format kasebut digambarake karo tabel ing ngisor iki:

6

Sakabèhé, ana 6 jinis kontrol byte. Telu pisanan digunakake kanggo pigura umum karo data EZSP, kalebu DATA, ACK lan NAK. Telu pungkasan digunakake tanpa data EZSP umum, kalebu RST, RSTACK lan ERROR.

Format RST, RSTACK lan ERROR diterangake ing bagean 3.1 nganti 3.3.

2.4. Ngitung CRC

CRC 16-bit diwilang ing bita saka bait kontrol nganti pungkasan data. CRCCCITT standar (g(x) = x16 + x12 + x5 + 1) diinisialisasi dadi 0xFFFF. Byte paling pinunjul ndhisiki byte paling signifikan (mode big-endian).

2.5. Isian Byte

Kaya sing diterangake ing bagean 4.2 saka UG101, ana sawetara nilai bait sing dilindhungi sing digunakake kanggo tujuan khusus. Nilai kasebut bisa ditemokake ing tabel ing ngisor iki:

7

Nalika nilai kasebut katon ing pigura, perawatan khusus bakal ditindakake kanggo data kasebut. – Lebokake bait uwal 0x7D ing ngarepe bait sing dicawisake – Walik bit5 saka bait sing dicadhangake

Ing ngisor iki sawetara conto algoritma iki:

8

2.6. Tambah Flag End

Langkah pungkasan yaiku nambahake flag pungkasan 0x7E menyang mburi pigura. Sawisé iku, data bisa dikirim menyang port UART.

3. Proses De-framing

Nalika data ditampa saka UART, kita mung kudu nindakake langkah mbalikke kanggo decode.

4. Referensi


Wektu kirim: Feb-08-2022
Obrolan Online WhatsApp!