Zigbee EZSP UART haqida

Muallif: TorchIoTBootCamp
Havola: https://zhuanlan.zhihu.com/p/339700391
Kimdan: Quora

1. Kirish

Silicon Labs Zigbee shlyuzi dizayni uchun xost+NCP yechimini taklif qildi. Ushbu arxitekturada xost UART yoki SPI interfeysi orqali NCP bilan bog'lanishi mumkin. Ko'pincha, UART ishlatiladi, chunki u SPIga qaraganda ancha sodda.

Silicon Labs, shuningdek, namuna bo'lgan xost dasturi uchun namunaviy loyihani taqdim etdiZ3GatewayHost. Namuna Unix-ga o'xshash tizimda ishlaydi. Ba'zi mijozlar RTOS-da ishlashi mumkin bo'lgan xost namunasini xohlashlari mumkin, ammo afsuski, hozircha RTOS-ga asoslangan xost namunasi yo'q. Foydalanuvchilar RTOS asosida o'zlarining xost dasturini ishlab chiqishlari kerak.

Moslashtirilgan xost dasturini ishlab chiqishdan oldin UART shlyuzi protokolini tushunish muhimdir. UART-ga asoslangan NCP va SPI-ga asoslangan NCP uchun xost NCP bilan bog'lanish uchun EZSP protokolidan foydalanadi.EZSPuchun qisqaEmberZnet seriyali protokoli, va u bilan belgilanadiUG100. UART asosidagi NCP uchun EZSP ma'lumotlarini UART orqali ishonchli tashish uchun pastki qatlam protokoli amalga oshiriladi.ASHprotokol, qisqartmasiAsinxron seriyali xost. ASH haqida batafsil ma'lumot olish uchun qarangUG101vaUG115.

EZSP va ASH o'rtasidagi munosabatni quyidagi diagramma orqali ko'rsatish mumkin:

1

EZSP va ASH protokolining ma'lumotlar formatini quyidagi diagrammada tasvirlash mumkin:

2

Ushbu sahifada biz UART ma'lumotlarini ramkalash jarayoni va Zigbee shlyuzida tez-tez ishlatiladigan ba'zi asosiy ramkalar bilan tanishamiz.

2. Ramkalash

Umumiy ramka yaratish jarayonini quyidagi diagrammada tasvirlash mumkin:

3

Ushbu diagrammada ma'lumotlar EZSP ramkasini anglatadi. Umuman olganda, ramkalash jarayonlari: |No|Step|Reference|

|:-|:-|:-|

|1|EZSP ramkasini to'ldiring|UG100|

|2|Ma'lumotlarni tasodifiylashtirish|UG101 ning 4.3-bo'limi|

|3|Boshqaruv baytini qo'shing|UG101-ning 2-bobi va 3-bobi

|4|CHKni hisoblang|UG101 ning 2.3-bo'limi|

|5|Bayt to'ldirish|UG101 ning 4.2-bo'limi|

|6|Yakuniy bayroqni qo'shing|UG101ning 2.4-bo'limi|

2.1. EZSP ramkasini to'ldiring

EZSP ramka formati UG100 ning 3-bobida tasvirlangan.

4

SDK yangilanganda ushbu format o'zgarishi mumkinligiga e'tibor bering. Format o'zgarganda, biz unga yangi versiya raqamini beramiz. Ushbu maqola yozilganda so'nggi EZSP versiya raqami 8 ni tashkil qiladi (EmberZnet 6.8).

EZSP ramka formati turli versiyalarda farq qilishi mumkinligi sababli, xost va NCP uchun majburiy talab mavjud.SHARTbir xil EZSP versiyasi bilan ishlash. Aks holda ular kutilganidek muloqot qila olmaydi.

Bunga erishish uchun xost va NCP o'rtasidagi birinchi buyruq versiya buyrug'i bo'lishi kerak. Boshqacha qilib aytganda, xost boshqa har qanday aloqadan oldin NCP ning EZSP versiyasini olishi kerak. Agar EZSP versiyasi host tomonining EZSP versiyasidan farq qilsa, aloqa uzilishi kerak.

Buning orqasida yashirin talab shundaki, versiya buyrug'ining formati mumkinHECH QACHON O‘ZGARMANG. EZSP versiyasi buyruq formati quyidagi kabi:

5

Parametrlar maydonining tushuntirishlari va versiya javobining formatini UG100 ning 4-bobida topish mumkin. Parametr maydoni xost dasturining EZSP versiyasidir. Ushbu maqola yozilganda, bu 8.
7
Masalan: TorchIoTBootCamp
mín:https://zhuanlan.zhihu.com/p/339700391
mímí: iiči
lēngīngīngīngīngīngīngīngīngīngīngīngīngīngīngīngīngīngīngīngīngīngči

2.2. Ma'lumotlarni tasodifiylashtirish

Batafsil randomizatsiya jarayoni UG101 ning 4.3-bo'limida tasvirlangan. Butun EZSP ramkasi tasodifiy bo'ladi. Randomizatsiya eksklyuziv - YOKI EZSP ramkasi va psevdo-tasodifiy ketma-ketlikdir.

Quyida psevdo-tasodifiy ketma-ketlikni yaratish algoritmi keltirilgan.

  • rand0 = 0×42
  • agar randi ning 0 biti 0 bo'lsa, randi+1 = randi >> 1
  • agar randining 0 biti 1 bo'lsa, randi+1 = (randi >> 1) ^ 0xB8

2.3. Boshqarish baytini qo'shing

Boshqaruv bayti bir baytli ma'lumot bo'lib, ramka boshiga qo'shilishi kerak. Format quyidagi jadvalda tasvirlangan:

6

Hammasi bo'lib 6 turdagi nazorat baytlari mavjud. Birinchi uchtasi DATA, ACK va NAK kabi EZSP ma'lumotlariga ega umumiy ramkalar uchun ishlatiladi. Oxirgi uchtasi RST, RSTACK va ERROR kabi umumiy EZSP ma'lumotlarisiz ishlatiladi.

RST, RSTACK va ERROR formatlari 3.1 dan 3.3 gacha bo'limlarda tasvirlangan.

2.4. CRC ni hisoblang

16-bitli CRC boshqaruv baytidan ma'lumotlarning oxirigacha baytlar bo'yicha hisoblanadi. Standart CRCCCITT (g(x) = x16 + x12 + x5 + 1) 0xFFFF ga ishga tushirilgan. Eng muhim bayt eng kam ahamiyatli baytdan oldin keladi (katta-endian rejimi).

2.5. Bayt to'ldirish

UG101 ning 4.2-bo'limida ta'riflanganidek, maxsus maqsadlarda foydalaniladigan ba'zi zahiralangan bayt qiymatlari mavjud. Ushbu qiymatlarni quyidagi jadvalda topish mumkin:

7

Ushbu qiymatlar ramkada paydo bo'lganda, ma'lumotlarga maxsus ishlov beriladi. – Zaxiralangan bayt oldiga 0x7D chiqish baytini kiriting – Zaxiralangan baytning 5 bitini teskari o‘zgartiring

Quyida ushbu algoritmga misollar keltirilgan:

8

2.6. Yakuniy bayroqni qo'shing

Oxirgi qadam freymning oxiriga 0x7E tugatish bayrog'ini qo'shishdir. Shundan so'ng ma'lumotlar UART portiga yuborilishi mumkin.

3. De-framing jarayoni

UART dan ma'lumotlar olinganda, biz uni dekodlash uchun teskari amallarni bajarishimiz kerak.

4. Adabiyotlar


Yuborilgan vaqt: 2022 yil 08-fevral
WhatsApp onlayn chat!