Zigbee EZSP UART-ի մասին

Հեղինակ՝ TorchIoTBootCamp
Հղում: https://zhuanlan.zhihu.com/p/339700391
Ուղարկող՝ Quora

1. Ներածություն

Silicon Labs-ը Zigbee դարպասների նախագծման համար առաջարկել է host+NCP լուծում: Այս ճարտարապետության դեպքում host-ը կարող է կապ հաստատել NCP-ի հետ UART կամ SPI ինտերֆեյսի միջոցով: Ամենից հաճախ օգտագործվում է UART-ը, քանի որ այն շատ ավելի պարզ է, քան SPI-ն:

Silicon Labs-ը նաև տրամադրել է հյուրընկալող ծրագրի նմուշային նախագիծ, որը նմուշայինն էZ3GatewayHostՆմուշը աշխատում է Unix-անման համակարգում: Որոշ հաճախորդներ կարող են ցանկանալ հոսթի նմուշ, որը կարող է աշխատել RTOS-ի վրա, բայց, ցավոք, առայժմ RTOS-ի վրա հիմնված հոսթի նմուշ չկա: Օգտատերերը պետք է մշակեն իրենց սեփական հոսթի ծրագիրը՝ հիմնված RTOS-ի վրա:

Կարևոր է հասկանալ UART դարպասի արձանագրությունը՝ նախքան անհատականացված հոսթինգային ծրագիր մշակելը: Ինչպես UART-ի վրա հիմնված NCP-ի, այնպես էլ SPI-ի վրա հիմնված NCP-ի դեպքում հոսթինգն օգտագործում է EZSP արձանագրությունը՝ NCP-ի հետ կապվելու համար:EZSPկրճատ էEmberZnet սերիական արձանագրություն, և այն սահմանվում էUG100UART-ի վրա հիմնված NCP-ի համար ներդրվում է ստորին մակարդակի արձանագրություն՝ EZSP տվյալները UART-ի միջոցով հուսալիորեն փոխանցելու համար, այսինքն՝Մոխիրարձանագրություն, կրճատ՝Ասինխրոն սերիական հոսթASH-ի մասին լրացուցիչ տեղեկությունների համար, խնդրում ենք դիմելUG101ևUG115.

EZSP-ի և ASH-ի միջև կապը կարելի է պատկերել հետևյալ դիագրամով։

1

EZSP-ի և ASH արձանագրության տվյալների ձևաչափը կարելի է պատկերել հետևյալ դիագրամով.

2

Այս էջում մենք կներկայացնենք UART տվյալների շրջանակման գործընթացը և որոշ բանալի շրջանակներ, որոնք հաճախ օգտագործվում են Zigbee դարպասում։

2. Շրջանակում

Ընդհանուր առմամբ, շրջանակի կառուցման գործընթացը կարելի է պատկերել հետևյալ դիագրամով.

3

Այս գրաֆիկում տվյալները նշանակում են EZSP շրջանակը։ Ընդհանուր առմամբ, շրջանակման գործընթացները հետևյալն են՝ |Ոչ|Քայլ|Հղում|

|:-|:-|:-|

|1|Լրացրեք EZSP շրջանակը|UG100|

|2|Տվյալների պատահականացում|UG101-ի 4.3 բաժին|

|3|Ավելացրեք UG101-ի Control Byte|Գլուխ 2-ը և գլուխ 3-ը|

|4|Հաշվարկեք CRC-ն|UG101-ի 2.3 բաժին|

|5|Բայթերի լցոնում|UG101-ի 4.2 բաժին|

|6|Ավելացնել Վերջնական դրոշը|UG101-ի 2.4 բաժինը|

2.1. Լրացրեք EZSP շրջանակը

EZSP կադրի ձևաչափը պատկերազարդված է UG100-ի 3-րդ գլխում։

4

Ուշադրություն դարձրեք, որ այս ձևաչափը կարող է փոխվել SDK-ի թարմացման ժամանակ։ Երբ ձևաչափը փոխվի, մենք այն կտանք նոր տարբերակի համար։ EZSP-ի վերջին տարբերակի համարը 8-ն է, երբ գրվել է այս հոդվածը (EmberZnet 6.8):

Քանի որ EZSP շրջանակի ձևաչափը կարող է տարբեր լինել տարբեր տարբերակների միջև, պարտադիր պահանջ է, որ հոսթը և NCP-նՊԱՐՏԱԴԻՐաշխատում են նույն EZSP տարբերակի հետ։ Հակառակ դեպքում նրանք չեն կարող հաղորդակցվել սպասվածի պես։

Դրան հասնելու համար հոսթի և NCP-ի միջև առաջին հրամանը պետք է լինի version հրամանը։ Այլ կերպ ասած, հոսթը պետք է վերականգնի NCP-ի EZSP տարբերակը՝ նախքան որևէ այլ հաղորդակցություն։ Եթե EZSP տարբերակը տարբերվում է հոսթի կողմի EZSP տարբերակից, հաղորդակցությունը պետք է դադարեցվի։

Սրա հետևում ընկած անուղղակի պահանջն այն է, որ version հրամանի ձևաչափը կարող էԵՐԲԵՔ ՄԻ ՓՈԽԵՔEZSP տարբերակի հրամանի ձևաչափը հետևյալն է՝

5

Պարամետրերի դաշտի և տարբերակի պատասխանի ձևաչափի բացատրությունները կարելի է գտնել UG100-ի 4-րդ գլխում: Պարամետրերի դաշտը հոսթ ծրագրի EZSP տարբերակն է: Այս հոդվածը գրելու պահին այն 8 է:
7
Օրինակ՝ TorchIoTBootCamp
链接: https://zhuanlan.zhihu.com/p/339700391
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出

2.2. Տվյալների պատահականացում

Պատահականացման մանրամասն գործընթացը նկարագրված է UG101-ի 4.3 բաժնում: Ամբողջ EZSP շրջանակը պատահականացված կլինի: Պատահականացումը կատարվում է EZSP շրջանակը և կեղծ-պատահական հաջորդականությունը բացառելու կամ բացառելու համար:

Ստորև ներկայացված է կեղծ-պատահական հաջորդականություն ստեղծելու ալգորիթմը։

  • rand0 = 0×42
  • եթե randi-ի 0 բիթը 0 է, randi+1 = randi >> 1
  • եթե randi-ի 0 բիթը 1 է, randi+1 = (randi >> 1) ^ 0xB8

2.3. Ավելացրեք կառավարման բայթը

Կառավարման բայթը մեկ բայթանոց տվյալ է և պետք է ավելացվի շրջանակի գլխին: Ձևաչափը պատկերված է ստորև բերված աղյուսակում.

6

Ընդհանուր առմամբ, կան 6 տեսակի կառավարման բայթեր։ Առաջին երեքը օգտագործվում են EZSP տվյալներով տարածված կադրերի համար, ներառյալ DATA, ACK և NAK։ Վերջին երեքը օգտագործվում են առանց ընդհանուր EZSP տվյալների, ներառյալ RST, RSTACK և ERROR։

RST-ի, RSTACK-ի և ERROR-ի ձևաչափերը նկարագրված են 3.1-ից 3.3 բաժիններում։

2.4. Հաշվարկել CRC-ն

16-բիթանոց CRC-ն հաշվարկվում է բայթերի վրա՝ սկսած վերահսկիչ բայթից մինչև տվյալների վերջը։ CRCCCITT ստանդարտը (g(x) = x16 + x12 + x5 + 1) նախնականացվում է որպես 0xFFFF։ Ամենանշանակալի բայթը նախորդում է ամենաքիչ նշանակալի բայթին (big-endian ռեժիմ)։

2.5. Բայթերի լցոնում

Ինչպես նկարագրված է UG101-ի 4.2 բաժնում, կան որոշ պահուստավորված բայթային արժեքներ, որոնք օգտագործվում են հատուկ նպատակներով: Այս արժեքները կարելի է գտնել հետևյալ աղյուսակում.

7

Երբ այս արժեքները հայտնվում են շրջանակում, տվյալներին հատուկ մոտեցում կցուցաբերվի։ – Տեղադրեք 0x7D փախուստի բայթը պահուստավորված բայթի առջև – Հակադարձեք այդ պահուստավորված բայթի 5-րդ բիթը։

Ստորև բերված են այս ալգորիթմի մի քանի օրինակներ.

8

2.6. Ավելացրեք ավարտի դրոշը

Վերջին քայլը կադրի վերջում 0x7E վերջնական դրոշը ավելացնելն է։ Դրանից հետո տվյալները կարող են ուղարկվել UART միացքին։

3. Շրջանակի վերացման գործընթաց

Երբ տվյալները ստացվում են UART-ից, մենք պարզապես պետք է կատարենք հակառակ քայլերը՝ դրանք վերծանելու համար։

4. Հղումներ


Հրապարակման ժամանակը. Փետրվար-08-2022
WhatsApp-ի առցանց զրուցարան!