Zigbee EZSP UART haqida

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

1. Kirish

Silicon Labs Zigbee shlyuzini loyihalash uchun xost+NCP yechimini taklif qildi. Ushbu arxitekturada xost NCP bilan UART yoki SPI interfeysi orqali aloqa o'rnatishi mumkin. Ko'pincha UART SPIga qaraganda ancha sodda bo'lgani uchun ishlatiladi.

Silicon Labs shuningdek, xost dastur uchun namunaviy loyihani taqdim etdi, bu namunadirZ3GatewayHostNamuna Unixga o'xshash tizimda ishlaydi. Ba'zi mijozlar RTOSda ishlaydigan xost namunasini xohlashlari mumkin, ammo afsuski, hozircha RTOS asosidagi xost namunasi yo'q. Foydalanuvchilar RTOS asosida o'zlarining xost dasturlarini ishlab chiqishlari kerak.

Shaxsiylashtirilgan xost dasturini ishlab chiqishdan oldin UART shlyuz protokolini tushunish muhimdir. UART asosidagi NCP va SPI asosidagi NCP uchun xost NCP bilan aloqa qilish uchun EZSP protokolidan foydalanadi.EZSPuchun qisqaEmberZnet ketma-ket protokoli, va u da belgilanganUG100UART asosidagi NCP uchun EZSP ma'lumotlarini UART orqali ishonchli tarzda uzatish uchun pastki qatlam protokoli amalga oshiriladi, ya'niKULprotokol, qisqartmasiAsinxron ketma-ket xostASH haqida qo'shimcha ma'lumot olish uchun, iltimos, qarang.UG101vaUG115.

EZSP va ASH o'rtasidagi bog'liqlikni quyidagi diagrammada ko'rsatish mumkin:

1

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

2

Ushbu sahifada biz UART ma'lumotlarini ramkalash jarayoni va Zigbee shlyuzida tez-tez ishlatiladigan ba'zi kalit kadrlar bilan tanishtiramiz.

2. Ramkalash

Umumiy ramkalash jarayonini quyidagi diagramma bilan ko'rsatish mumkin:

3

Ushbu jadvalda ma'lumotlar EZSP freymini anglatadi. Umuman olganda, freymlash jarayonlari: |No|Bosqich|Malumotnoma|

|:-|:-|:-|

|1|EZSP ramkasini to'ldiring|UG100|

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

|3|UG101 ning 2 va 3-boblarini qo'shish|

|4|UG101 ning 2.3-bo'limiga muvofiq CRCni hisoblang|

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

|6|Tugatish bayrog'ini qo'shish|UG101 ning 2.4-bo'limi|

2.1. EZSP ramkasini to'ldiring

EZSP ramka formati UG100 ning 3-bobida ko'rsatilgan.

4

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

EZSP freym formati turli versiyalar orasida farq qilishi mumkinligi sababli, xost va NCP uchun majburiy talab mavjudSHARTbir xil EZSP versiyasi bilan ishlaydi. Aks holda, ular kutilganidek aloqa 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 qayta sinab ko'rishi kerak. Agar EZSP versiyasi xost tomonining EZSP versiyasidan farq qilsa, aloqa to'xtatilishi kerak.

Buning ortidagi yashirin talab shundaki, versiya buyrug'ining formati mumkinHECH QACHON O'ZGARMAYDIEZSP versiyasi buyruq formati quyidagicha:

5

Parametr maydonining tushuntirishlari va versiya javobi formatini UG100 ning 4-bobida topish mumkin. Parametr maydoni xost dasturining EZSP versiyasidir. Ushbu maqola yozilganda, u 8 ga teng.
7
Masalan: TorchIoTBootCamp
mín:https://zhuanlan.zhihu.com/p/339700391
mímí: iínì
língíngíngíngíngíngíngíngíngíngíngíngíngíngíngíngíngíngíngíngíngíngíngíngíní

2.2. Ma'lumotlarni tasodifiylashtirish

Batafsil tasodifiylashtirish jarayoni UG101 ning 4.3-bo'limida tasvirlangan. Butun EZSP kadri tasodifiylashtiriladi. Tasodifiylashtirish EZSP kadrini va soxta tasodifiy ketma-ketlikni istisno qilish uchun amalga oshiriladi.

Quyida soxta tasodifiy ketma-ketlikni yaratish algoritmi keltirilgan.

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

2.3. Boshqaruv baytini qo'shing

Boshqaruv bayti bir baytli ma'lumotlar bo'lib, kadr boshiga qo'shilishi kerak. Format quyidagi jadvalda ko'rsatilgan:

6

Jami 6 turdagi boshqaruv baytlari mavjud. Dastlabki uchtasi DATA, ACK va NAK kabi EZSP ma'lumotlariga ega umumiy freymlar uchun ishlatiladi. Oxirgi uchtasi RST, RSTACK va ERROR kabi umumiy EZSP ma'lumotlarisiz ishlatiladi.

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

2.4. CRC ni hisoblang

16-bitli CRC boshqaruv baytidan ma'lumotlar oxirigacha bo'lgan baytlar bo'yicha hisoblanadi. Standart CRCCCITT (g(x) = x16 + x12 + x5 + 1) 0xFFFF ga o'rnatiladi. Eng muhim bayt eng kichik baytdan oldin keladi (katta endian rejimi).

2.5. Baytlarni to'ldirish

UG101 ning 4.2-bo'limida tasvirlanganidek, maxsus maqsadlar uchun ishlatiladigan ba'zi zahiralangan bayt qiymatlari mavjud. Ushbu qiymatlarni quyidagi jadvalda topish mumkin:

7

Ushbu qiymatlar kadrda paydo bo'lganda, ma'lumotlarga maxsus ishlov beriladi. – 0x7D escape baytini rezervlangan baytning oldiga joylashtiring – Rezervlangan baytning 5-bitini teskari yo'naltiring

Quyida ushbu algoritmning ba'zi misollari keltirilgan:

8

2.6. Tugash bayrog'ini qo'shing

Yakuniy qadam - kadr oxiriga 0x7E tugatish bayrog'ini qo'shish. Shundan so'ng, ma'lumotlar UART portiga yuborilishi mumkin.

3. Ramkani olib tashlash jarayoni

UARTdan ma'lumotlar qabul qilinganda, uni dekodlash uchun teskari amallarni bajarishimiz kerak.

4. Adabiyotlar


Joylashtirilgan vaqt: 2022-yil 8-fevral
WhatsApp onlayn chati!