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 ana bilgisayar + NCP çözümü sunmuştur. Bu mimaride, ana bilgisayar NCP ile UART veya SPI arayüzü aracılığıyla iletişim kurabilir. Genellikle, SPI'dan çok daha basit olduğu için UART kullanılır.

Silicon Labs ayrıca ana program için örnek bir proje de sağladı; bu da örnektirZ3GatewayHostÖrnek, Unix benzeri bir sistemde çalışır. Bazı müşteriler RTOS'ta çalışabilen bir ana bilgisayar örneği isteyebilir, ancak maalesef şu anda RTOS tabanlı bir ana bilgisayar örneği bulunmamaktadır. Kullanıcıların RTOS tabanlı kendi 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'de, ana bilgisayar NCP ile iletişim kurmak için EZSP protokolünü kullanır.EZSPkısaltmasıdırEmberZnet Seri Protokolüve şu şekilde tanımlanmıştır:UG100UART tabanlı NCP için, EZSP verilerini UART üzerinden güvenilir bir şekilde taşımak için daha düşük bir katman protokolü uygulanır, bu daKÜLprotokol, kısaltmasıAsenkron Seri Ana BilgisayarASH hakkında daha fazla bilgi için lütfen şuraya bakın:UG101VeUG115.

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

1

EZSP ve ASH protokolünün veri formatı aşağıdaki diyagramla gösterilebilir:

2

Bu sayfada, UART verilerinin çerçevelenmesi sürecini ve Zigbee ağ geçidinde sıklıkla kullanılan bazı anahtar çerçeveleri tanıtacağız.

2. Çerçeveleme

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

3

Bu grafikte veriler, EZSP çerçevesini ifade eder. Genel olarak çerçeveleme süreçleri şunlardır: |Hayır|Adım|Referans|

|:-|:-|:-|

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

|2|Veri Rastgeleleştirmesi|UG101'in 4.3. Bölümü|

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

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

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

|6|Bitiş Bayrağını Ekle|UG101'in 2.4. Bölümü|

2.1. EZSP Çerçevesini Doldurun

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

4

SDK güncellendiğinde bu formatın değişebileceğini lütfen unutmayın. Format 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'di (EmberZnet 6.8).

EZSP çerçeve biçimi farklı sürümler arasında farklılık gösterebileceğinden, ana bilgisayar ve NCP'nin zorunlu bir gereksinimi vardır.MUTLAKAynı EZSP sürümüyle çalışırlar. 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çimininASLA DEĞİŞMEEZSP versiyonu komut formatı aşağıdaki gibidir:

5

Parametre alanı ve sürüm yanıtının formatına 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ığında, sürüm 8'dir.
7
Kaynak: TorchIoTBootCamp
https://zhuanlan.zhihu.com/p/339700391
Yani şarkı sözleri: Bir örnek:
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

2.2. Veri Rastgeleleştirmesi

Ayrıntılı rastgeleleştirme süreci UG101'in 4.3. bölümünde açıklanmıştır. EZSP çerçevesinin tamamı rastgeleleştirilecektir. Rastgeleleştirme, EZSP çerçevesini ve sözde rastgele bir diziyi özel VEYA işlemine tabi tutmaktır.

Aşağıda sözde rastgele dizinin oluşturulma algoritması gösterilmektedir.

  • 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ı, bir baytlık bir veridir ve çerçevenin başına eklenmelidir. Biçimi aşağıdaki tabloda gösterilmiştir:

6

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

RST, RSTACK ve ERROR formatları 3.1 ile 3.3 bölümlerinde açıklanmıştır.

2.4. CRC'yi hesaplayın

Kontrol baytından veri sonuna kadar olan baytlar üzerinden 16 bitlik bir CRC hesaplanır. Standart CRCCCITT (g(x) = x16 + x12 + x5 + 1), 0xFFFF olarak başlatılır. En önemli bayt, en önemsiz bayttan önce gelir (büyük uçlu mod).

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 mevcuttur. 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 – Bu ayrılmış baytın bit5'ini tersine çevirin

Aşağıda bu algoritmanın bazı örnekleri yer almaktadır:

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 sadece adımların tersini yapmamız gerekiyor.

4. Referanslar


Gönderi zamanı: 08 Şubat 2022
WhatsApp Online Sohbet!