Panulis:TorchIoTBootCamp
Link: https://zhuanlan.zhihu.com/p/339700391
Ti: Quora
1. Bubuka
Silicon Labs parantos nawiskeun solusi host + NCP pikeun desain gerbang Zigbee. Dina arsitektur ieu, host tiasa komunikasi sareng NCP ngaliwatan antarmuka UART atanapi SPI. Ilaharna, UART dianggo sabab langkung saderhana tibatan SPI.
Silicon Labs ogé parantos nyayogikeun conto proyék pikeun program host, anu mangrupikeun contoZ3GatewayHost
. Sampel dijalankeun dina sistem sapertos Unix. Sababaraha konsumén panginten hoyong conto host anu tiasa dijalankeun dina RTOS, tapi hanjakalna, teu aya conto host dumasar RTOS pikeun ayeuna. Pamaké kedah ngembangkeun program host sorangan dumasar kana RTOS.
Penting pikeun ngartos protokol gateway UART sateuacan ngembangkeun program host khusus. Pikeun duanana NCP dumasar UART jeung NCP dumasar SPI, host ngagunakeun protokol EZSP pikeun komunikasi sareng NCP.EZSPnyaeta pondok pikeunProtokol Serial EmberZnet, sarta eta dihartikeun dinaUG100. Pikeun NCP dumasar UART, protokol lapisan handap dilaksanakeun pikeun mawa data EZSP reliably leuwih UART, étalebuprotokol, pondok pikeunHost Serial Asynchronous. Pikeun langkung rinci ngeunaan ASH, mangga tingalUG101jeungUG115.
Hubungan antara EZSP sareng ASH tiasa digambarkeun ku diagram ieu:
Format data EZSP sareng protokol ASH tiasa digambarkeun ku diagram ieu:
Dina kaca ieu, urang bakal ngawanohkeun prosés framing data UART jeung sababaraha pigura konci nu remen dipake dina Zigbee gateway.
2. Rarangkén
Prosés pigura umum bisa digambarkeun ku bagan ieu:
Dina bagan ieu, data hartina pigura EZSP. Sacara umum, prosés framing nyaéta: |Henteu|Lengkah|Referensi|
|:-|:-|:-|
|1|Eusian Frame EZSP|UG100|
|2|Acak Data|Bagian 4.3 tina UG101|
|3|Tambahkeun Control Byte|Chap2 jeung Chap3 of UG101|
|4|Itung CRC|Bagian 2.3 tina UG101|
|5|Byte Stuffing|Bagian 4.2 tina UG101|
|6|Tambahkeun Bandéra Tungtung|Bagian 2.4 tina UG101|
2.1. Eusian pigura EZSP
Format pigura EZSP digambarkeun dina Bab 3 UG100.
Perhatoskeun yén format ieu tiasa robih nalika ningkatkeun SDK. Nalika formatna robih, kami bakal masihan nomer versi énggal. Nomer versi EZSP panganyarna nyaéta 8 nalika tulisan ieu ditulis (EmberZnet 6.8).
Kusabab format pigura EZSP bisa jadi béda antara versi béda, aya sarat wajib yén host na NCPKUDUdianggo sareng versi EZSP sami. Upami teu kitu, aranjeunna moal bisa komunikasi sakumaha ekspektasi.
Pikeun ngahontal éta, paréntah pangheulana antara host sareng NCP kedah janten paréntah versi. Dina basa sejen, host kudu retrive versi EZSP tina NCP saméméh sagala komunikasi lianna. Lamun versi EZSP mah béda jeung versi EZSP sisi host, komunikasi kudu aborted.
Sarat implisit di tukangeun ieu nyaéta yén format paréntah versi tiasaMOAL NGAROBAH. Format paréntah versi EZSP sapertos kieu:
链接:https://zhuanlan.zhihu.com/p/339700391
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
2.2. Randomization Data
Prosés randomization lengkep dijelaskeun dina bagian 4.3 UG101. Sakabeh pigura EZSP bakal randomized. randomization nyaeta ekslusif-OR pigura EZSP sarta runtuyan pseudo-acak.
Di handap ieu algoritma keur ngahasilkeun runtuyan pseudo-acak.
- rand0 = 0×42
- lamun bit 0 tina randi nyaeta 0, randi+1 = randi >> 1
- lamun bit 0 tina randi nyaéta 1, randi + 1 = (randi >> 1) ^ 0xB8
2.3. Tambahkeun Control Byte
Bait kontrol mangrupakeun data hiji bait, sarta kudu ditambahkeun kana sirah pigura. Formatna digambarkeun ku tabél ieu di handap:
Sakabehna, aya 6 rupa bait kontrol. Tilu kahiji dipaké pikeun pigura umum kalawan data EZSP, kaasup DATA, ACK na NAK. Tilu panungtungan dipaké tanpa data EZSP umum, kaasup RST, RSTACK na ERROR.
Format RST, RSTACK sareng ERROR dijelaskeun dina bagian 3.1 ka 3.3.
2.4. Ngitung CRC
CRC 16-bit diitung dina bait ti bait kontrol dugi ka ahir data. Standar CRCCCITT (g(x) = x16 + x12 + x5 + 1) diinisialisasi jadi 0xFFFF. Byte paling signifikan miheulaan byte paling signifikan (mode badag-endian).
2.5. Isian bait
Sakumaha anu dijelaskeun dina bagian 4.2 UG101, aya sababaraha nilai bait anu ditangtayungan anu dianggo pikeun tujuan khusus. Nilai-nilai ieu tiasa dipendakan dina tabel ieu:
Nalika nilai-nilai ieu muncul dina pigura, perlakuan khusus bakal dilakukeun pikeun data. - Selapkeun bait kabur 0x7D di hareup bait anu dicadangkeun - Balikkeun bit5 tina bait anu dicadangkeun
Di handap ieu sababaraha conto algoritma ieu:
2.6. Tambahkeun Bandéra Tungtung
Léngkah ahir nyaéta nambahkeun bandéra tungtung 0x7E ka tungtung pigura. Sanggeus éta, data bisa dikirim ka port UART.
3. De-framing Prosés
Nalika data ditampi tina UART, urang ngan ukur kedah ngalakukeun léngkah-léngkah ngabalikeun pikeun ngadekodekeunana.
4. Rujukan
waktos pos: Feb-08-2022