Zigbee Ezsp Uart Hakkında

Yazar : TorchiotbootCamp
Bağlantı : https: //zhuanlan.zhihu.com/p/339700391
: Quora

1. Giriş

Silikon Labs, Zigbee Gateway Design için bir ana bilgisayar+NCP çözümü sundu. Bu mimaride, ana bilgisayar UART veya SPI arayüzü aracılığıyla NCP ile iletişim kurabilir. En yaygın olarak, UART, SPI'dan çok daha basit olduğu için kullanılır.

Silikon Labs ayrıca örnek olan ev sahibi program için örnek bir proje sağladı.Z3gatewayhost. Örnek Unix benzeri bir sistem üzerinde çalışır. Bazı müşteriler bir RTOS üzerinde çalışabilen bir ana bilgisayar örneği isteyebilir, ancak maalesef şu an için RTOS tabanlı ana bilgisayar örneği yoktur. Kullanıcıların RTO'lara dayalı kendi ana bilgisayar programlarını geliştirmeleri gerekir.

Özelleştirilmiş bir ana bilgisayar programı geliştirmeden önce UART Gateway protokolünü anlamak önemlidir. Hem UART tabanlı NCP hem de SPI tabanlı NCP için ana bilgisayar, NCP ile iletişim kurmak için EZSP protokolünü kullanır.EZSPiçin kısaEmberznet seri protokolüve içinde tanımlanmıştırUG100. UART tabanlı NCP için, EZSP verilerini güvenilir bir şekilde UART üzerinden taşımak için daha düşük katman protokolü uygulanır, buKÜLprotokol, kısaAsenkron seri ana bilgisayar. Ash hakkında daha fazla bilgi için lütfenUG101VeUG115.

EZSP ve Ash arasındaki ilişki aşağıdaki şema ile gösterilebilir:

1

EZSP ve Kül Protokolünün veri formatı aşağıdaki şema ile gösterilebilir:

2

Bu sayfada, Zigbee Gateway'de sıklıkla kullanılan UART verilerini ve bazı temel çerçeveleri çerçeveleme sürecini sunacağız.

2. Çerçevelik

Genel çerçeveleme işlemi aşağıdaki grafikle gösterilebilir:

3

Bu grafikte veriler EZSP çerçevesi anlamına gelir. Genel olarak, çerçeveleme işlemleri şunlardır: | Hayır | Adım | Referans |

|:-|:-|:-|

| 1 | EZSP çerçevesini doldurun | UG100 |

| 2 | Veri Randomizasyonu | UG101 Bölüm 4.3 |

| 3 | UG101'in kontrol baytını ekleyin | Chap2 ve Chap3 |

| 4 | CRC'yi hesaplayın | UG101'in Bölüm 2.3 |

| 5 | Bayt Dolma | UG101 Bölüm 4.2 |

| 6 | Uç bayrağını ekle | UG101'in Bölüm 2.4'ü |

2.1. EZSP çerçevesini doldurun

EZSP çerçeve biçimi UG100'ün 3. bölümünde gösterilmiştir.

4

SDK yükseltmesiyle bu formatın değişebileceğine dikkat edin. Biçim değiştiğinde, yeni bir sürüm numarası vereceğiz. Bu makale yazıldığında en son EZSP sürüm numarası 8'dir (Emberznet 6.8).

EZSP çerçeve biçimi farklı sürümler arasında farklı olabileceğinden, ana bilgisayar ve NCP'nin zorunlu bir gereksinim vardır.MUTLAKAynı EZSP sürümüyle çalışın. Aksi takdirde, beklendiği gibi iletişim kuramazlar.

Bunu başarmak için, ana bilgisayar ve NCP arasındaki ilk komut sürüm komutu olmalıdır. Başka bir deyişle, ana bilgisayar diğer herhangi bir iletişimden önce NCP'nin EZSP sürümünü almalıdır. EZSP sürümü ana bilgisayar tarafının EZSP sürümü ile farklıysa, iletişim iptal edilmelidir.

Bunun arkasındaki örtük gereksinim, sürüm komutunun biçimininAsla Değişir. EZSP sürüm komut formatı aşağıdaki gibidir:

5

Parametre alanının açıklamaları ve sürüm yanıtının formatı UG100'ün 4. bölümünde bulunabilir. Parametre alanı, ana bilgisayar programının EZSP sürümüdür. Bu makale yazıldığında 8'dir.
7
: : TorchiotbootCamp
链接 : https: //zhuanlan.zhihu.com/p/339700391
: : 知乎
著作权归作者所有。商业转载请联系作者获得授权 , 非商业转载请注明出处。

2.2. Veri rastgeleleştirilmesi

Ayrıntılı randomizasyon işlemi UG101'in 4.3.3.3'te açıklanmaktadır. Tüm EZSP çerçevesi randomize edilecektir. Randomizasyon, özel veya EZSP çerçevesi ve sahte rastgele bir dizi içindir.

Aşağıda sahte rastgele dizinin üretilmesinin algoritması verilmiştir.

  • Rand0 = 0 × 42
  • Randi'nin 0 biti 0 ise, Randi+1 = Randi >> 1
  • Randi'nin 0 biti 1 ise, randi+1 = (randi >> 1) ^ 0xb8

2.3. Kontrol baytını ekle

Kontrol baytı bir bayt verisidir ve çerçevenin kafasına eklenmelidir. Biçim aşağıdaki tablo ile gösterilmiştir:

6

Tamamen, 6 çeşit kontrol baytı vardır. İlk üçü, Veri, ACK ve NAK dahil olmak üzere EZSP verileri olan ortak çerçeveler için kullanılır. Son üçü, RST, RSTack ve hata dahil olmak üzere ortak EZSP verileri olmadan kullanılır.

RST, RSTack ve hatanın biçimi Bölüm 3.1 ila 3.3'te açıklanmaktadır.

2.4. CRC'yi hesapla

16 bit CRC, verilerin sonuna kadar kontrol baytından bayt üzerinde hesaplanır. Standart CRCCCITT (G (x) = x16 + x12 + x5 + 1) 0xffff olarak başlatılır. En önemli bayt, en az önemli bayttan (Big-intian mod) önder.

2.5. Bayt doldurma

UG101'in Bölüm 4.2'de açıklandığı gibi, özel amaç için kullanılan bazı ayrılmış bayt değerleri vardır. Bu değerler aşağıdaki tabloda bulunabilir:

7

Bu değerler çerçevede göründüğünde, verilere özel bir tedavi yapılacaktır. - Kaçış baytını 0x7d'yi ayrılmış baytın önüne yerleştirin - Ayrılmış baytın bit5'ini tersine çevirin

Bu algoritmanın bazı örnekleri aşağıdadır:

8

2.6. Son bayrağı ekle

Son adım, 0x7e uç bayrağını çerçevenin sonuna eklemektir. Bundan sonra veriler UART bağlantı noktasına gönderilebilir.

3. Çizeleme işlemi

UART'dan veriler alındığında, kod çözmek için ters adımları yapmamız gerekir.

4. Referanslar


Gönderi: Şub-08-2022
WhatsApp Çevrimiçi Sohbet!