Mengenai Zigbee EZSP UART

Pengarang:TorchIoTBootCamp
Pautan:https://zhuanlan.zhihu.com/p/339700391
Daripada:Quora

1. Pengenalan

Silicon Labs telah menawarkan penyelesaian hos+NCP untuk reka bentuk gerbang Zigbee. Dalam seni bina ini, hos boleh berkomunikasi dengan NCP melalui antara muka UART atau SPI. Selalunya, UART digunakan kerana ia lebih mudah daripada SPI.

Silicon Labs juga telah menyediakan contoh projek untuk program hos, iaitu sampelZ3GatewayHost. Sampel dijalankan pada sistem seperti Unix. Sesetengah pelanggan mungkin mahukan sampel hos yang boleh dijalankan pada RTOS, tetapi malangnya, tiada sampel hos berasaskan RTOS buat masa ini. Pengguna perlu membangunkan program hos mereka sendiri berdasarkan RTOS.

Adalah penting untuk memahami protokol get laluan UART sebelum membangunkan program hos tersuai. Untuk NCP berasaskan UART dan NCP berasaskan SPI, hos menggunakan protokol EZSP untuk berkomunikasi dengan NCP.EZSPadalah singkatan untukProtokol Bersiri EmberZnet, dan ia ditakrifkan dalamUG100. Untuk NCP berasaskan UART, protokol lapisan bawah dilaksanakan untuk membawa data EZSP dengan pasti melalui UART, itulahABUprotokol, singkatan dariHos Bersiri Asynchronous. Untuk butiran lanjut tentang ASH, sila rujukUG101danUG115.

Hubungan antara EZSP dan ASH boleh digambarkan melalui rajah berikut:

1

Format data EZSP dan protokol ASH boleh digambarkan dengan rajah berikut:

2

Dalam halaman ini, kami akan memperkenalkan proses pembingkaian data UART dan beberapa bingkai utama yang sering digunakan dalam gerbang Zigbee.

2. Bingkai

Proses rangka umum boleh digambarkan oleh carta berikut:

3

Dalam carta ini, data bermaksud bingkai EZSP. Secara umum, proses pembingkaian ialah: |Tidak|Langkah|Rujukan|

|:-|:-|:-|

|1|Isi Bingkai EZSP|UG100|

|2|Randomisasi Data|Bahagian 4.3 UG101|

|3|Tambah Bait Kawalan|Bab2 dan Bab3 UG101|

|4|Kira CRC|Bahagian 2.3 UG101|

|5|Byte Stuffing|Bahagian 4.2 UG101|

|6|Tambah Bendera Tamat|Bahagian 2.4 UG101|

2.1. Isi Bingkai EZSP

Format bingkai EZSP digambarkan dalam Bab 3 UG100.

4

Beri perhatian bahawa format ini mungkin berubah apabila SDK ditingkatkan. Apabila format berubah, kami akan memberikan nombor versi baharu. Nombor versi EZSP terkini ialah 8 apabila artikel ini ditulis (EmberZnet 6.8).

Oleh kerana format bingkai EZSP mungkin berbeza antara versi yang berbeza, terdapat keperluan mandatori bahawa hos dan NCPMESTIberfungsi dengan versi EZSP yang sama. Jika tidak, mereka tidak dapat berkomunikasi seperti yang dijangkakan.

Untuk mencapainya, arahan pertama antara hos dan NCP mestilah arahan versi. Dalam erti kata lain, hos mesti mendapatkan semula versi EZSP NCP sebelum sebarang komunikasi lain. Jika versi EZSP berbeza dengan versi EZSP bahagian hos, komunikasi mesti dihentikan.

Keperluan tersirat di sebalik ini ialah format arahan versi bolehJANGAN PERNAH BERUBAH. Format arahan versi EZSP adalah seperti di bawah:

5

Penjelasan medan parameter dan format respons versi boleh didapati dalam Bab 4 UG100. Medan parameter ialah versi EZSP bagi program hos. Apabila artikel ini ditulis, ia adalah 8.
7
作者:TorchIoTBootCamp
链接:https://zhuanlan.zhihu.com/p/339700391
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

2.2. Rawak Data

Proses rawak terperinci diterangkan dalam bahagian 4.3 UG101. Keseluruhan bingkai EZSP akan secara rawak. Rawak adalah untuk eksklusif-ATAU bingkai EZSP dan urutan pseudo-rawak.

Di bawah ialah algoritma untuk menghasilkan jujukan pseudo-rawak.

  • rand0 = 0×42
  • jika bit 0 randi ialah 0, randi+1 = randi >> 1
  • jika bit 0 randi ialah 1, randi+1 = (randi >> 1) ^ 0xB8

2.3. Tambah Bait Kawalan

Bait kawalan ialah data satu bait, dan harus ditambah pada kepala bingkai. Format digambarkan dengan jadual di bawah:

6

Secara keseluruhannya, terdapat 6 jenis bait kawalan. Tiga yang pertama digunakan untuk bingkai biasa dengan data EZSP, termasuk DATA, ACK dan NAK. Tiga yang terakhir digunakan tanpa data EZSP biasa, termasuk RST, RSTACK dan ERROR.

Format RST, RSTACK dan ERROR diterangkan dalam bahagian 3.1 hingga 3.3.

2.4. Kira CRC

CRC 16-bit dikira pada bait daripada bait kawalan sehingga akhir data. CRCCCITT standard (g(x) = x16 + x12 + x5 + 1) dimulakan kepada 0xFFFF. Bait paling ketara mendahului bait paling kecil (mod big-endian).

2.5. Pengisian Byte

Seperti yang diterangkan dalam bahagian 4.2 UG101, terdapat beberapa nilai bait terpelihara yang digunakan untuk tujuan khas. Nilai ini boleh didapati dalam jadual berikut:

7

Apabila nilai ini muncul dalam bingkai, rawatan khas akan dilakukan kepada data. – Masukkan escape byte 0x7D di hadapan reserved byte – Balikkan bit5 reserved byte itu

Berikut adalah beberapa contoh algoritma ini:

8

2.6. Tambah Bendera Tamat

Langkah terakhir ialah menambah bendera akhir 0x7E ke hujung bingkai. Selepas itu, data boleh dihantar ke port UART.

3. Proses nyahframing

Apabila data diterima daripada UART, kita hanya perlu melakukan langkah terbalik untuk menyahkodnya.

4. Rujukan


Masa siaran: Feb-08-2022
Sembang Dalam Talian WhatsApp !