Zigbee EZSP UART-ի մասին

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

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

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

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

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

EZSP-ի և ASH-ի միջև կապը կարելի է ցույց տալ հետևյալ գծապատկերով.

1

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

2

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

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

Շրջանակի ընդհանուր գործընթացը կարելի է ցույց տալ հետևյալ գծապատկերով.

3

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

|:-|:-|:-|

|1|Լրացրեք EZSP Frame|UG100|

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

|3|Ավելացնել Control Byte|Գլուխ2 և Գլուխ3 UG101|

|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-ի միջև առաջին հրամանը պետք է լինի տարբերակի հրամանը:Այլ կերպ ասած, հյուրընկալողը պետք է առբերի NCP-ի EZSP տարբերակը ցանկացած այլ հաղորդակցությունից առաջ:Եթե ​​EZSP տարբերակը տարբերվում է հյուրընկալող կողմի EZSP տարբերակից, կապը պետք է ընդհատվի:

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

5

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

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

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

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

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

2.3.Ավելացնել Control Byte

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

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 առցանց զրույց!