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. Kebiasaannya, UART digunakan kerana ia jauh lebih mudah daripada SPI.

Silicon Labs juga telah menyediakan projek sampel untuk program hos, iaitu sampelZ3GatewayHostSampel ini 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 gerbang UART sebelum membangunkan program hos tersuai. Bagi kedua-dua NCP berasaskan UART dan NCP berasaskan SPI, hos menggunakan protokol EZSP untuk berkomunikasi dengan NCP.EZSPsingkatan untukProtokol Siri EmberZnet, dan ia ditakrifkan dalamUG100Bagi NCP berasaskan UART, protokol lapisan bawah dilaksanakan untuk membawa data EZSP dengan andal melalui UART, iaituABUprotokol, singkatan untukHos Siri Tak SegerakUntuk maklumat lanjut tentang ASH, sila rujukUG101danUG115.

Hubungan antara EZSP dan ASH boleh digambarkan melalui rajah berikut:

1

Format data EZSP dan protokol ASH boleh digambarkan melalui gambar rajah berikut:

2

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

2. Pembingkaian

Proses pembingkaian umum boleh digambarkan oleh carta berikut:

3

Dalam carta ini, data bermaksud bingkai EZSP. Secara amnya, proses pembingkaian adalah: |Tiada|Langkah|Rujukan|

|:-|:-|:-|

|1|Isi Kerangka EZSP|UG100|

|2|Pengacakan Data|Seksyen 4.3 UG101|

|3|Tambah Bait Kawalan|Bab 2 dan Bab 3 UG101|

|4|Kira CRC|Seksyen 2.3 UG101|

|5|Pengisian Bait|Seksyen 4.2 UG101|

|6|Tambah Bendera Tamat|Seksyen 2.4 UG101|

2.1. Isi Kerangka EZSP

Format bingkai EZSP digambarkan dalam Bab 3 UG100.

4

Sila ambil perhatian bahawa format ini mungkin berubah apabila SDK dinaik taraf. Apabila format berubah, kami akan memberikannya nombor versi baharu. Nombor versi EZSP terkini ialah 8 semasa 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 mencapai matlamat tersebut, 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 pihak hos, komunikasi mesti dihentikan.

Keperluan tersirat di sebalik ini ialah format arahan versi bolehTIDAK PERNAH BERUBAHFormat arahan versi EZSP adalah seperti di bawah:

5

Penjelasan tentang 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 ialah 8.
7
作者:TorchIoTBootCamp
链接:https://zhuanlan.zhihu.com/p/339700391
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

2.2. Pengacakan Data

Proses pengacakan terperinci diterangkan dalam bahagian 4.3 UG101. Keseluruhan bingkai EZSP akan dirakam. Pengacakan adalah untuk mengecualikan-ATAU bingkai EZSP dan jujukan pseudo-rawak.

Berikut ialah algoritma untuk menjana jujukan pseudo-rawak.

  • rand0 = 0×42
  • jika bit 0 bagi randi ialah 0, randi+1 = randi >> 1
  • jika bit 0 bagi 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. Formatnya 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 dari bait kawalan hingga akhir data. CRCCCITT standard (g(x) = x16 + x12 + x5 + 1) diinisialisasikan kepada 0xFFFF. Bait paling bererti mendahului bait paling tidak bererti (mod big-endian).

2.5. Pengisian Bait

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

7

Apabila nilai-nilai ini muncul dalam bingkai, satu layanan khas akan dilakukan pada data tersebut. – Masukkan bait escape 0x7D di hadapan bait yang dikhaskan – Songsangkan bit5 bagi bait yang dikhaskan tersebut

Berikut adalah beberapa contoh algoritma ini:

8

2.6. Tambah Bendera Tamat

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

3. Proses Penyahbingkaian

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

4. Rujukan


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