Zigbee EZSP UART hakkında

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

1. Giriş

Silicon Labs, Zigbee ağ geçidi tasarımı için bir host+NCP çözümü sunmaktadır. Bu mimaride, host, UART veya SPI arayüzü üzerinden NCP ile iletişim kurabilir. Genellikle UART kullanılır çünkü SPI'ye göre çok daha basittir.

Silicon Labs ayrıca ev sahibi program için örnek bir proje de sağlamıştır; bu proje örnektir.Z3GatewayHostBu örnek, Unix benzeri bir sistemde çalışır. Bazı müşteriler, gerçek zamanlı işletim sistemi (RTOS) üzerinde çalışabilen bir ana bilgisayar örneği isteyebilir, ancak maalesef şu an için RTOS tabanlı bir ana bilgisayar örneği mevcut değildir. Kullanıcıların kendi RTOS tabanlı ana bilgisayar programlarını geliştirmeleri gerekmektedir.

Özelleştirilmiş bir ana bilgisayar programı geliştirmeden önce UART ağ geçidi 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.EZSPkısaltmasıdırEmberZnet Seri Protokolüve bu, şu şekilde tanımlanmıştır:UG100UART tabanlı NCP için, EZSP verilerini UART üzerinden güvenilir bir şekilde taşımak üzere alt katman protokolü uygulanır, işte bu da şudur:KÜLprotokol, kısaltmasıAsenkron Seri SunucuASH hakkında daha fazla bilgi için lütfen şu adrese bakın:UG101VeUG115.

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

1

EZSP ve ASH protokollerinin veri formatı aşağıdaki şemada gösterilebilir:

2

Bu sayfada, UART verilerinin çerçevelenmesi sürecini ve Zigbee ağ geçitlerinde sıkça kullanılan bazı temel çerçeveleri tanıtacağız.

2. Çerçeveleme

Genel çerçeveleme süreci aşağıdaki şema ile gösterilebilir:

3

Bu grafikteki veriler EZSP çerçevesini ifade etmektedir. Genel olarak çerçeveleme süreçleri şöyledir: |No|Adım|Referans|

|:-|:-|:-|

|1|EZSP Çerçevesini Doldurun|UG100|

|2|Veri Rastgeleleştirme|UG101 Bölüm 4.3|

|3|Kontrol Baytını Ekle|UG101'in 2. ve 3. Bölümleri|

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

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

|6|Bitiş Bayrağını Ekleyin|UG101 Bölüm 2.4|

2.1. EZSP Çerçevesini Doldurun

EZSP çerçeve formatı, UG100'ün 3. Bölümünde gösterilmiştir.

4

SDK güncellemeleri yapıldığında bu formatın değişebileceğini lütfen unutmayın. Format değiştiğinde, ona yeni bir sürüm numarası vereceğiz. Bu makale yazıldığı sırada en son EZSP sürüm numarası 8'dir (EmberZnet 6.8).

EZSP çerçeve formatı farklı sürümler arasında farklılık gösterebileceğinden, ana bilgisayar ve NCP'nin aynı çerçeve formatını kullanması zorunludur.MUTLAKAynı EZSP sürümüyle çalışmaları gerekir. Aksi takdirde, beklendiği gibi iletişim kuramazlar.

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

Bunun ardındaki örtük gereklilik, sürüm komutunun biçiminin şu şekilde olmasıdır:ASLA DEĞİŞMEEZSP sürüm komutunun formatı aşağıdaki gibidir:

5

Parametre alanı ve sürüm yanıtının biçimine ilişkin açıklamalar UG100'ün 4. Bölümünde bulunabilir. Parametre alanı, ana programın EZSP sürümüdür. Bu makale yazıldığı sırada sürüm 8'dir.
7
Kaynak: TorchIoTBootCamp
https://zhuanlan.zhihu.com/p/339700391
Yani şarkı sözleri: Bir örnek
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

2.2. Veri Rastgeleleştirme

Ayrıntılı rastgeleleştirme süreci UG101'in 4.3 bölümünde açıklanmıştır. Tüm EZSP çerçevesi rastgeleleştirilecektir. Rastgeleleştirme, EZSP çerçevesi ile sözde rastgele bir dizinin özel VEYA işlemine tabi tutulmasıdır.

Aşağıda sözde rastgele dizi oluşturma algoritması verilmiştir.

  • rand0 = 0×42
  • Eğer randi'nin 0. biti 0 ise, randi+1 = randi >> 1
  • Eğer randi'nin 0. biti 1 ise, randi+1 = (randi >> 1) ^ 0xB8

2.3. Kontrol Baytını Ekleyin

Kontrol baytı tek baytlık bir veridir ve çerçevenin başına eklenmelidir. Biçimi aşağıdaki tabloda gösterilmiştir:

6

Toplamda 6 çeşit kontrol baytı vardır. İlk üçü, DATA, ACK ve NAK dahil olmak üzere EZSP verisi içeren ortak çerçeveler için kullanılır. Son üçü ise RST, RSTACK ve ERROR dahil olmak üzere ortak EZSP verisi içermeyen çerçeveler için kullanılır.

RST, RSTACK ve ERROR'ın formatı 3.1 ila 3.3. bölümlerde açıklanmıştır.

2.4. CRC'yi hesaplayın

Kontrol baytından verinin sonuna kadar olan baytlar üzerinde 16 bitlik bir CRC hesaplanır. Standart CRCCCITT (g(x) = x16 + x12 + x5 + 1) 0xFFFF olarak başlatılır. En önemli bayt, en az önemli bayttan önce gelir (büyük endian modu).

2.5. Bayt Doldurma

UG101'in 4.2 bölümünde açıklandığı gibi, özel amaçlar 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 işlem uygulanacaktır. – Ayrılmış baytın önüne 0x7D kaçış baytını ekleyin – Ayrılmış baytın 5. bitini tersine çevirin

Aşağıda bu algoritmanın bazı örnekleri verilmiştir:

8

2.6. Bitiş Bayrağını Ekleyin

Son adım, çerçevenin sonuna 0x7E bitiş bayrağını eklemektir. Bundan sonra veriler UART portuna gönderilebilir.

3. Çerçeveden Çıkarma Süreci

UART'tan veri alındığında, onu çözmek için ters adımları uygulamamız yeterlidir.

4. Kaynaklar


Yayın tarihi: 08 Şubat 2022
WhatsApp Çevrimiçi Sohbet!