Ngeunaan Zigbee EZSP UART

Pangarang:TorchIoTBootCamp
Link: https://zhuanlan.zhihu.com/p/339700391
Ti:Quora

1. Bubuka

Silicon Labs parantos nawiskeun solusi host+NCP pikeun desain gateway Zigbee. Dina arsitéktur ieu, host tiasa komunikasi sareng NCP ngalangkungan antarmuka UART atanapi SPI. Anu paling umum, UART dianggo sabab langkung saderhana tibatan SPI.

Silicon Labs ogé parantos nyayogikeun conto proyék pikeun program host, nyaéta contoZ3GatewayHostSampelna dijalankeun dina sistem anu siga Unix. Sababaraha konsumén panginten hoyong sampel host anu tiasa dijalankeun dina RTOS, tapi hanjakalna, teu acan aya sampel host berbasis RTOS kanggo waktos ayeuna. Pangguna kedah ngembangkeun program host sorangan dumasar kana RTOS.

Penting pikeun ngartos protokol gateway UART sateuacan ngembangkeun program host anu disaluyukeun. Pikeun NCP berbasis UART sareng NCP berbasis SPI, host nganggo protokol EZSP pikeun komunikasi sareng NCP.EZSPsinggetan tinaProtokol Séri EmberZnet, sareng éta dihartikeun dinaUG100Pikeun NCP berbasis UART, protokol lapisan handap diimplementasikeun pikeun mawa data EZSP sacara andal ngalangkungan UART, nyaétaABUprotokol, singgetan tinaHost Séri AsinkronKanggo langkung seueur rinci ngeunaan ASH, mangga tingaliUG101jeungUG115.

Hubungan antara EZSP sareng ASH tiasa diilustrasikeun ku diagram ieu:

1

Format data EZSP sareng protokol ASH tiasa diilustrasikeun ku diagram ieu:

2

Dina kaca ieu, urang bakal ngenalkeun prosés ngabingkai data UART sareng sababaraha pigura konci anu sering dianggo dina gerbang Zigbee.

2. Pigura

Prosés pigura sacara umum tiasa diilustrasikeun ku bagan ieu:

3

Dina bagan ieu, data hartina pigura EZSP. Sacara umum, prosés framing nyaéta: |Henteu|Léngkah|Rujukan|

|:-|:-|:-|

|1|Eusian Pigura EZSP|UG100|

|2|Randomisasi Data|Bagian 4.3 tina UG101|

|3|Tambahkeun Byte Kontrol|Bab 2 sareng Bab 3 tina UG101|

|4|Itung CRC|Bagian 2.3 tina UG101|

|5|Pangeusi Byte|Bagian 4.2 tina UG101|

|6|Tambahkeun Bendera Tungtung|Bagian 2.4 tina UG101|

2.1. Eusian Pigura EZSP

Format pigura EZSP digambarkeun dina Bab 3 UG100.

4

Perhatoskeun yén format ieu tiasa robih nalika SDK diropéa. Nalika formatna robih, kami bakal masihan nomer vérsi énggal. Nomer vérsi EZSP panganyarna nyaéta 8 nalika tulisan ieu ditulis (EmberZnet 6.8).

Kusabab format pigura EZSP tiasa bénten-bénten antara vérsi anu béda, aya sarat wajib yén host sareng NCPKUDUtiasa dianggo sareng vérsi EZSP anu sami. Upami henteu, aranjeunna moal tiasa komunikasi sapertos anu dipiharep.

Pikeun ngahontal éta, paréntah munggaran antara host sareng NCP kedah paréntah vérsi. Kalayan kecap sanésna, host kedah kéngingkeun deui vérsi EZSP tina NCP sateuacan komunikasi anu sanés. Upami vérsi EZSP béda sareng vérsi EZSP tina sisi host, komunikasi kedah dihentikeun.

Sarat implisit di balik ieu nyaéta format paréntah vérsi tiasaMOAL ROBAHFormat paréntah vérsi EZSP sapertos di handap ieu:

5

Katerangan ngeunaan widang parameter sareng format réspon vérsi tiasa dipendakan dina Bab 4 UG100. Widang parameter nyaéta vérsi EZSP tina program host. Nalika tulisan ieu ditulis, éta 8.
7
作者:TorchIoTBootCamp
链接:https://zhuanlan.zhihu.com/p/339700391
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

2.2. Pangacakan Data

Prosés randomisasi anu lengkep dijelaskeun dina bagian 4.3 tina UG101. Sakabéh pigura EZSP bakal diacak. Randomisasi nyaéta pikeun éksklusif-ATAWA pigura EZSP sareng runtuyan pseudo-acak.

Di handap ieu algoritma pikeun ngahasilkeun runtuyan pseudo-acak.

  • rand0 = 0×42
  • upami bit 0 tina randi nyaéta 0, randi+1 = randi >> 1
  • upami bit 0 tina randi nyaéta 1, randi+1 = (randi >> 1) ^ 0xB8

2.3. Tambahkeun Byte Kontrol

Byte kontrol nyaéta data hiji byte, sareng kedah ditambahkeun kana sirah pigura. Formatna diilustrasikeun ku tabel di handap ieu:

6

Sacara gembleng, aya 6 rupa byte kontrol. Tilu anu munggaran dianggo pikeun pigura umum anu nganggo data EZSP, kalebet DATA, ACK sareng NAK. Tilu anu terakhir dianggo tanpa data EZSP umum, kalebet RST, RSTACK sareng ERROR.

Format RST, RSTACK sareng ERROR dijelaskeun dina bagian 3.1 dugi ka 3.3.

2.4. Ngitung CRC

CRC 16-bit diitung dumasar kana bait ti bait kontrol dugi ka ahir data. CRCCCITT standar (g(x) = x16 + x12 + x5 + 1) diinisialisasi ka 0xFFFF. bait anu paling signifikan mendahului bait anu paling teu signifikan (modeu big-endian).

2.5. Eusian Byte

Sakumaha anu dijelaskeun dina bagian 4.2 tina UG101, aya sababaraha nilai byte anu disimpen anu dianggo pikeun tujuan khusus. Nilai-nilai ieu tiasa dipendakan dina tabel ieu:

7

Nalika nilai-nilai ieu muncul dina pigura, perlakuan khusus bakal dilakukeun kana data. – Lebetkeun byte escape 0x7D di payuneun byte anu dipesen – Balikkeun bit5 tina byte anu dipesen éta

Di handap ieu aya sababaraha conto algoritma ieu:

8

2.6. Tambahkeun Bendera Tungtung

Léngkah pamungkas nyaéta nambahkeun flag tungtung 0x7E kana tungtung pigura. Saatos éta, data tiasa dikirim ka port UART.

3. Prosés De-framing

Nalika data ditampi tina UART, urang ngan ukur kedah ngalakukeun léngkah sabalikna pikeun ngadekodekeunana.

4. Réferénsi


Waktos posting: Feb-08-2022
Obrolan Online WhatsApp!