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ü sundu. Bu mimaride, ana bilgisayar NCP ile UART veya SPI arayüzü aracılığıyla iletişim kurabilir. En yaygın olarak, 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 örnektirZ3GatewayAna Bilgisayarı
. Örnek, Unix benzeri bir sistemde çalışır. Bazı müşteriler RTOS'ta çalışabilen bir ana bilgisayar örneği isteyebilir, ancak ne yazık ki şu an için RTOS tabanlı bir ana bilgisayar örneği yoktur. Kullanıcıların RTOS tabanlı kendi ana bilgisayar programlarını geliştirmeleri gerekir.
Ö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 ş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:
EZSP ve ASH protokolünün veri formatı aşağıdaki diyagramla gösterilebilir:
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 tablo ile gösterilebilir:
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|Kontrol Baytını Ekle|UG101'in 2. ve 3. Bölümleri|
|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.
SDK güncellendiğinde bu formatın değişebileceğine dikkat edin. Format değiştiğinde, ona 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 version komutu olmalıdır. Başka bir deyişle, ana bilgisayar herhangi bir diğer iletişimden ö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 versiyon komut formatı aşağıdaki gibidir:
https://zhuanlan.zhihu.com/p/339700391
Yani şarkı sözleri: Bir örnek
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
2.2. Veri Rastgeleleştirme
Ayrıntılı randomizasyon süreci UG101'in 4.3 bölümünde açıklanmıştır. Tüm EZSP çerçevesi randomize edilecektir. Randomizasyon, EZSP çerçevesini ve bir sözde-rastgele diziyi münhasıran VEYA'ya 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ı Ekle
Kontrol baytı bir baytlık veridir ve çerçevenin başına eklenmelidir. Biçim aşağıdaki tabloda gösterilmiştir:
Toplamda 6 çeşit kontrol baytı vardır. İlk üçü DATA, ACK ve NAK dahil olmak üzere EZSP verisi olan ortak çerçeveler için kullanılır. Son üçü RST, RSTACK ve ERROR dahil olmak üzere ortak EZSP verisi olmadan 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 ü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 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 vardır. Bu değerler aşağıdaki tabloda bulunabilir:
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 ters çevirin
Aşağıda bu algoritmanın bazı örnekleri yer almaktadır:
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-Şub-2022