Müəllif: Torchiotbootcamp
Link: https: //zhuanlan.zhihu.com/p/339700391
Kimdən: Quora
1. Giriş
Silicon Labs ZigBee Gateway dizaynı üçün bir ev sahibi + NCP həll təklif etdi. Bu memarlıqda ev sahibi NCP ilə UART və ya SPI interfeysi vasitəsilə əlaqə qura bilər. Ən çox, UART SPI-dən daha sadə olduğu üçün istifadə olunur.
Silikon Labs da nümunə olan ev sahibi proqramı üçün nümunə layihəsi də təqdim etdiZ3gatewayhost
. Nümunə Unix kimi bir sistemdə işləyir. Bəzi müştərilər bir RTO-da işləyə biləcək bir ev nümunəsi istəyə bilər, amma təəssüf ki, vaxt üçün RTO əsaslı ev nümunəsi yoxdur. İstifadəçilər RTOS əsasında öz ev sahibi proqramlarını inkişaf etdirməlidirlər.
Xüsusi bir aparıcı proqramı hazırlamadan əvvəl UART Gateway Protokolunu başa düşmək vacibdir. Həm UART əsaslı NCP və SPI əsaslı NCP üçün, Host, NCP ilə ünsiyyət qurmaq üçün EZSP protokolundan istifadə edir.EzspüçündürEmberznet serial protokolu, və bu müəyyən edilirUG100. UART əsaslı NCP üçün, EZSP məlumatlarını UART-dan etibarlı şəkildə aparmaq üçün daha aşağı qat protokolu həyata keçirilir, bu da budurKülProtokol, qısaAsinxron serial host. Ash haqqında daha çox məlumat üçün baxın, baxınUG101vəUG115.
EZSP və kül arasındakı münasibət aşağıdakı diaqram tərəfindən göstərilə bilər:
Ezsp və Ash Protokolunun məlumat formatı aşağıdakı diaqram tərəfindən göstərilə bilər:
Bu səhifədə, ZigBee Gateway-də tez-tez istifadə olunan bəzi əsas çərçivələr və bəzi əsas çərçivələr sürmə prosesini təqdim edəcəyik.
2. Çərçivə
Ümumi çərçivə prosesi aşağıdakı cədvəllə göstərilə bilər:
Bu cədvəldə məlumatlar EZSP çərçivəsi deməkdir. Ümumiyyətlə, çərçivə prosesləri bunlardır: | Xeyr | Addım | Arayış |
|: - |: - |: |: - |
| 1 | EZSP çərçivəsini doldurun | UG100 |
| 2 | Məlumatların randomizasiyası | UG101-in Bölməsi 4.3 |
| 3 | Nəzarət baytı əlavə edin | UG101-in Chap2 və Chap3 |
| 4 | CRC hesablayın | UG101-in Bölməsi 2.3 |
| 5 | bayt doldurma | UG101-in 4.2-ci hissəsi |
| 6 | Son bayrağı əlavə et | UG101-in Bölməsi 2.4 |
2.1. Ezsp çərçivəsini doldurun
EZSP çərçivə formatı UG100-in 3-cü hissəsində təsvir edilmişdir.
SDK yeniləmələri zamanı bu formatın dəyişə biləcəyinə diqqət yetirin. Format dəyişdikdə, yeni bir versiya nömrəsi verəcəyik. Ən son EZSP versiyası nömrəsi bu məqalə yazıldıqda 8-dir (EmberzNet 6.8).
EZSP çərçivə formatı fərqli versiyalar arasında fərqli ola bilər, ev sahibi və NCP-nin məcburi tələbi varAlmalıEyni EZSP versiyası ilə işləyin. Əks təqdirdə, gözlənilən kimi ünsiyyət qura bilmirlər.
Buna nail olmaq üçün ev sahibi və NCP arasındakı ilk əmr versiyası əmri olmalıdır. Başqa sözlə, ev sahibi digər rabitə qarşısında NCP-nin EZSP versiyasını geri almalıdır. EZSP versiyası, aparıcı tərəfin EZSP versiyası ilə fərqlidirsə, rabitə ləğv edilməlidir.
Bunun arxasında gizli tələb, versiya əmrinin formatının ola bilməsidirHeç vaxt dəyişməyin. EZSP versiyası əmr formatı aşağıdakı kimidir:
链接: https: //zhuanlan.zhihu.com/p/339700391
来源: 知乎
著作权归作者所著作权归作者所. 商业转载请联系作者获得授权, 非商业转载请注明出处.
2.2. Məlumat randomizasiyası
Ətraflı randomizasiya prosesi UG101-in 4.3-cü hissəsində təsvir edilmişdir. Bütün Ezsp çərçivəsi təsadüfi olacaq. Təsadüfi eksklüziv və ya EZSP çərçivəsi və yalançı təsadüfi ardıcıllıqla.
Aşağıda yalançı təsadüfi ardıcıllıqla yaradan alqoritm var.
- rand0 = 0 × 42
- Bit 0-nin 0-ni 0, randi + 1 = randi >> 1
- Bit 0-nin 0-ni 1, randi + 1 = (randi >> 1) ^ 0xb8
2.3. Nəzarət bayt əlavə edin
Nəzarət Bayte bir bayt məlumatıdır və çərçivənin başına əlavə olunmalıdır. Format aşağıdakı cədvəllə təsvir edilmişdir:
Ümumilikdə 6 növ nəzarət bayt var. İlk üçü, Ack və Nak da daxil olmaqla, EZSP məlumatları ilə ümumi çərçivələr üçün istifadə olunur. Son üçü, RST, RSTACK və səhv daxil olmaqla, ümumi EZSP məlumatları olmadan istifadə olunur.
RST, RSTACK və səhvin formatı 3,1-dən 3.3-cü ilə bölmədə təsvir edilmişdir.
2.4. CRC hesablayın
16 bitlik CRC, məlumatların sonuna qədər idarəetmə baytdan baytlarda hesablanır. Standard Crcccitt (G (X) = X16 + X12 + X10 + 1) 0xFFFF-ə başlanılır. Ən əhəmiyyətli bayt, ən az əhəmiyyətli bayt (böyük-enli rejimi).
2.5. Bayt doldurma
UG101-in 4.2-ci hissəsində təsvir olunduğu kimi, xüsusi məqsəd üçün istifadə olunan bəzi byte dəyərləri var. Bu dəyərləri aşağıdakı cədvəldə tapa bilərsiniz:
Bu dəyərlər çərçivədə görünəndə məlumatlara xüsusi bir müalicə aparılacaqdır. - Qorunan baytın qarşısında 0x7d qaçışını daxil edin - byte'nin Bit5-ni tərsinə çevirin
Aşağıda bu alqoritmin bəzi nümunələri:
2.6. Son bayrağı əlavə edin
Son addım, çərçivənin sonuna qədər son bayrağı 0x7e əlavə etməkdir. Bundan sonra məlumatlar UART portuna göndərilə bilər.
3. Zəriflik prosesi
Məlumatlar UART-dan alındıqda, onu deşifr etmək üçün tərs addımlar etməliyik.
4. İstinadlar
Saat: Fevral-08-2022