Müəllif: TorchIoTBootCamp
Link: https://zhuanlan.zhihu.com/p/339700391
Quora-dan
1. Giriş
Silicon Labs, Zigbee şlüz dizaynı üçün host+NCP həlli təklif etmişdir. Bu arxitekturada host, NCP ilə UART və ya SPI interfeysi vasitəsilə əlaqə qura bilər. Ən çox UART istifadə olunur, çünki SPI-dən daha sadədir.
Silicon Labs həmçinin ana proqram üçün nümunə layihə təqdim etmişdir ki, bu da nümunədirZ3GatewayHostNümunə Unix kimi bir sistemdə işləyir. Bəzi müştərilər RTOS-da işləyə bilən bir host nümunəsi istəyə bilərlər, lakin təəssüf ki, hazırda RTOS əsaslı host nümunəsi yoxdur. İstifadəçilər RTOS-a əsaslanan öz host proqramlarını hazırlamalıdırlar.
Xüsusi hazırlanmış host proqramı hazırlamazdan əvvəl UART şlüz protokolunu başa düşmək vacibdir. Həm UART əsaslı NCP, həm də SPI əsaslı NCP üçün host, NCP ilə əlaqə qurmaq üçün EZSP protokolundan istifadə edir.EZSPüçün qısadırEmberZnet Seriya Protokoluvə bu, ilə müəyyən edilirUG100UART əsaslı NCP üçün, EZSP məlumatlarını UART üzərindən etibarlı şəkildə ötürmək üçün aşağı səviyyəli protokol tətbiq olunur, yəniKÜLprotokol, qısaltmasıAsinxron Serial HostASH haqqında daha ətraflı məlumat üçün zəhmət olmasa, baxın.UG101vəUG115.
EZSP və ASH arasındakı əlaqə aşağıdakı diaqramla göstərilə bilər:
EZSP və ASH protokolunun məlumat formatı aşağıdakı diaqramla göstərilə bilər:
Bu səhifədə, UART məlumatlarının çərçivəyə salınması prosesini və Zigbee şlüzündə tez-tez istifadə olunan bəzi əsas çərçivələri təqdim edəcəyik.
2. Çərçivələmə
Ümumi çərçivələmə prosesi aşağıdakı diaqramla göstərilə bilər:
Bu cədvəldə məlumatlar EZSP çərçivəsini nəzərdə tutur. Ümumiyyətlə, çərçivələmə prosesləri bunlardır: |No|Addım|İstinad|
|:-|:-|:-|
|1|EZSP Çərçivəsini Doldurun|UG100|
|2|Məlumatların Təsadüfi Tənzimlənməsi|UG101-in 4.3-cü Bölməsi|
|3|UG101-in 2-ci və 3-cü fəsillərini əlavə edin|İdarəetmə Baytını əlavə edin|
|4|UG101-in 2.3-cü bölməsini CRC-ni hesablayın|
|5|Bayt Doldurma|UG101-in 4.2-ci bölməsi|
|6|Son Bayrağı Əlavə Edin|UG101-in 2.4-cü Bölməsi|
2.1. EZSP Çərçivəsini doldurun
EZSP çərçivə formatı UG100-ün 3-cü fəslində təsvir edilmişdir.
SDK yeniləndikdə bu formatın dəyişə biləcəyinə diqqət yetirin. Format dəyişdikdə, ona yeni versiya nömrəsi verəcəyik. Bu məqalə yazıldığı zaman ən son EZSP versiya nömrəsi 8-dir (EmberZnet 6.8).
EZSP çərçivə formatı müxtəlif versiyalar arasında fərqli ola bildiyindən, host və NCP-nin məcburi tələbi varMÜTLƏQeyni EZSP versiyası ilə işləyirlər. Əks halda, gözlənildiyi kimi əlaqə qura bilməyəcəklər.
Buna nail olmaq üçün host və NCP arasında ilk əmr versiya əmri olmalıdır. Başqa sözlə, host hər hansı digər rabitədən əvvəl NCP-nin EZSP versiyasını yenidən sınaqdan keçirməlidir. Əgər EZSP versiyası host tərəfinin EZSP versiyasından fərqlidirsə, rabitə dayandırılmalıdır.
Bunun arxasındakı gizli tələb, versiya əmrinin formatının ola bilməsidirHEÇ VAXT DƏYİŞMƏYİNEZSP versiya əmr formatı aşağıdakı kimidir:
链接:https://zhuanlan.zhihu.com/p/339700391
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出
2.2. Məlumatların təsadüfi seçimi
Ətraflı təsadüfi seçim prosesi UG101-in 4.3-cü bölməsində təsvir edilmişdir. Bütün EZSP çərçivəsi təsadüfi seçimə salınacaq. Təsadüfi seçim EZSP çərçivəsini və yalançı təsadüfi ardıcıllığı istisna etmək üçündür.
Aşağıda yalançı təsadüfi ardıcıllığın yaradılması alqoritmi verilmişdir.
- rand0 = 0×42
- əgər randinin 0 biti 0-dırsa, randi+1 = randi >> 1
- Əgər randinin 0 biti 1-dirsə, randi+1 = (randi >> 1) ^ 0xB8
2.3. İdarəetmə Baytını əlavə edin
İdarəetmə baytı bir baytlıq məlumatdır və çərçivənin başına əlavə edilməlidir. Format aşağıdakı cədvəldə göstərilmişdir:
Ümumilikdə 6 növ idarəetmə baytı mövcuddur. İlk üçü DATA, ACK və NAK daxil olmaqla EZSP məlumatları olan ümumi çərçivələr üçün istifadə olunur. Son üçü isə RST, RSTACK və ERROR daxil olmaqla ümumi EZSP məlumatları olmadan istifadə olunur.
RST, RSTACK və ERROR formatı 3.1-3.3 bölmələrində təsvir edilmişdir.
2.4. CRC-ni hesablayın
16 bitlik CRC, idarəetmə baytından məlumatların sonuna qədər olan baytlara hesablanır. Standart CRCCCITT (g(x) = x16 + x12 + x5 + 1) 0xFFFF olaraq başlanğıc vəziyyətinə gətirilir. Ən əhəmiyyətli bayt ən kiçik baytdan əvvəl gəlir (böyük-endian rejimi).
2.5. Bayt Doldurma
UG101-in 4.2-ci bölməsində təsvir edildiyi kimi, xüsusi məqsədlər üçün istifadə edilən bəzi ehtiyat bayt dəyərləri mövcuddur. Bu dəyərlərə aşağıdakı cədvəldə baxa bilərsiniz:
Bu dəyərlər çərçivədə göründükdə, məlumatlara xüsusi bir yanaşma tətbiq olunacaq. – 0x7D escape baytını rezerv edilmiş baytın qarşısına daxil edin – Rezerv edilmiş baytın bit5-ini tərsinə çevirin
Aşağıda bu alqoritmin bəzi nümunələri verilmişdir:
2.6. Son Bayraq əlavə edin
Son addım, çərçivənin sonuna 0x7E son bayrağını əlavə etməkdir. Bundan sonra məlumatlar UART portuna göndərilə bilər.
3. Çərçivənin çıxarılması prosesi
UART-dan məlumat alındıqda, onu deşifrə etmək üçün sadəcə tərs addımlar atmalıyıq.
4. İstinadlar
Yayımlanma vaxtı: 08 Fevral 2022








