Zigbee EZSP UART haqqında

Müəllif:TorchIoTBootCamp
Link:https://zhuanlan.zhihu.com/p/339700391
Kimdən: Quora

1. Giriş

Silicon Labs Zigbee gateway dizaynı üçün host+NCP həllini təklif etdi. Bu arxitekturada ev sahibi UART və ya SPI interfeysi vasitəsilə NCP ilə əlaqə saxlaya bilər. Ən çox SPI-dən daha sadə olduğu üçün UART istifadə olunur.

Silicon Labs həmçinin nümunə olan ev sahibi proqramı üçün nümunə bir layihə təqdim etdiZ3GatewayHost. Nümunə Unix-ə bənzər sistemdə işləyir. Bəzi müştərilər RTOS-da işləyə bilən host nümunəsi istəyə bilər, lakin təəssüf ki, hazırda RTOS əsaslı host nümunəsi yoxdur. İstifadəçilər RTOS əsasında öz host proqramını inkişaf etdirməlidirlər.

Fərdiləşdirilmiş host proqramını inkişaf etdirməzdən əvvəl UART şlüz protokolunu başa düşmək vacibdir. Həm UART əsaslı NCP, həm də SPI əsaslı NCP üçün ev sahibi NCP ilə əlaqə saxlamaq üçün EZSP protokolundan istifadə edir.EZSPüçün qısadırEmberZnet Serial Protokolu, və o, müəyyən edilmişdirUG100. UART əsaslı NCP üçün EZSP məlumatlarını UART üzərindən etibarlı şəkildə daşımaq üçün aşağı səviyyə protokolu həyata keçirilir, yəniASHprotokol, qısacaAsinxron Serial Host. ASH haqqında ətraflı məlumat üçün müraciət edinUG101UG115.

EZSP və ASH arasındakı əlaqə aşağıdakı diaqramla göstərilə bilər:

1

EZSP və ASH protokolunun məlumat formatı aşağıdakı diaqramla təsvir edilə bilər:

2

Bu səhifədə biz UART məlumatlarının çərçivəyə salınması prosesini və Zigbee gateway-də 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:

3

Bu diaqramda verilənlər EZSP çərçivəsi deməkdir. Ü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üfiləşdirilməsi|UG101-in 4.3-cü bölməsi|

|3|UG101-in Nəzarət Baytını|Fəsil 2 və Fəsil 3-ü əlavə edin|

|4|CRC-ni hesablayın|UG101-in 2.3-cü bölməsi|

|5|Bayt doldurulması|UG101-in 4.2-ci bölməsi|

|6|Son Bayraq əlavə et|UG101-in 2.4-cü Bölməsi|

2.1. EZSP çərçivəsini doldurun

EZSP çərçivə formatı UG100-ün 3-cü Fəsilində təsvir edilmişdir.

4

SDK təkmilləşdirildikdə 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ığında ə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 bildiyinə görə, host və NCP arasında məcburi bir tələb var.MÜTLƏQeyni EZSP versiyası ilə işləyin. Əks halda, gözlənildiyi kimi ünsiyyət qura bilməzlər.

Buna nail olmaq üçün host və NCP arasındakı ilk əmr versiya əmri olmalıdır. Başqa sözlə, host hər hansı digər ünsiyyətdən əvvəl NCP-nin EZSP versiyasını bərpa etməlidir. EZSP versiyası host tərəfinin EZSP versiyası ilə fərqlidirsə, rabitə dayandırılmalıdır.

Bunun arxasında gizli tələb odur ki, versiya əmrinin formatı ola bilərHEÇ VAXT DƏYİŞMƏYİN. EZSP versiyası əmr formatı aşağıdakı kimidir:

5

Parametr sahəsinin izahatları və versiya cavabının formatı UG100-ün 4-cü Fəsilində tapıla bilər. Parametr sahəsi host proqramının EZSP versiyasıdır. Bu məqalə yazılanda 8-dir.
7
Məsələn: TorchIoTBootCamp
链接:https://zhuanlan.zhihu.com/p/339700391
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出

2.2. Data Randomization

Ətraflı təsadüfiləşdirmə prosesi UG101-in 4.3-cü bölməsində təsvir edilmişdir. Bütün EZSP çərçivəsi təsadüfi olacaq. Təsadüfi seçim eksklüzivdir - YA EZSP çərçivəsi və psevdo-təsadüfi ardıcıllıq.

Aşağıda psevdo-təsadüfi ardıcıllığın yaradılması alqoritmi verilmişdir.

  • rand0 = 0×42
  • randinin 0 biti 0 olarsa, randi+1 = randi >> 1
  • randinin 0 biti 1 olarsa, randi+1 = (randi >> 1) ^ 0xB8

2.3. Nəzarət Baytını əlavə edin

Nəzarət baytı bir baytlıq məlumatdır və çərçivənin başına əlavə edilməlidir. Format aşağıdakı cədvəllə təsvir edilmişdir:

6

Ümumilikdə 6 növ nəzarət baytı var. İlk üçü DATA, ACK və NAK daxil olmaqla EZSP məlumatları ilə ümumi çərçivələr üçün istifadə olunur. Son üçü 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 nəzarət baytından verilənlərin sonuna qədər baytlarda hesablanır. Standart CRCCCITT (g(x) = x16 + x12 + x5 + 1) 0xFFFF olaraq işə salınıb. Ən əhəmiyyətli bayt ən az əhəmiyyətli baytdan (böyük endian rejimi) əvvəldir.

2.5. Bayt Doldurma

UG101-in 4.2-ci bölməsində təsvir olunduğu kimi, xüsusi məqsədlər üçün istifadə edilən bəzi ehtiyat bayt dəyərləri var. Bu dəyərləri aşağıdakı cədvəldə tapmaq olar:

7

Bu dəyərlər çərçivədə göründükdə, məlumatlara xüsusi müalicə ediləcək. – Escape baytını 0x7D ehtiyat baytın qarşısına daxil edin – Həmin ehtiyat baytın bit5-ini tərsinə çevirin

Aşağıda bu alqoritmin bəzi nümunələri verilmişdir:

8

2.6. Son Bayraq əlavə edin

Son addım çərçivənin sonuna 0x7E son bayrağı ə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, biz sadəcə onu deşifrə etmək üçün əks addımları yerinə yetirməliyik.

4. İstinadlar


Göndərmə vaxtı: 08 fevral 2022-ci il
WhatsApp Onlayn Söhbət!